From 3d85fd7de42ead48fd50a99ee3d5d29bbd403b3c Mon Sep 17 00:00:00 2001
From: 92895 <928953915>
Date: 星期一, 23 十一月 2020 10:48:04 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 service-fee/src/main/java/com/java110/fee/bmo/meterWater/impl/QueryPreMeterWaterImpl.java |  195 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 194 insertions(+), 1 deletions(-)

diff --git a/service-fee/src/main/java/com/java110/fee/bmo/meterWater/impl/QueryPreMeterWaterImpl.java b/service-fee/src/main/java/com/java110/fee/bmo/meterWater/impl/QueryPreMeterWaterImpl.java
index fc6c5c0..f2ceae9 100644
--- a/service-fee/src/main/java/com/java110/fee/bmo/meterWater/impl/QueryPreMeterWaterImpl.java
+++ b/service-fee/src/main/java/com/java110/fee/bmo/meterWater/impl/QueryPreMeterWaterImpl.java
@@ -1,8 +1,25 @@
 package com.java110.fee.bmo.meterWater.impl;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.RoomDto;
+import com.java110.dto.fee.FeeConfigDto;
+import com.java110.dto.fee.FeeDto;
+import com.java110.dto.meterWater.ImportExportMeterWaterDto;
 import com.java110.dto.meterWater.MeterWaterDto;
+import com.java110.dto.parking.ParkingSpaceDto;
 import com.java110.fee.bmo.meterWater.IQueryPreMeterWater;
+import com.java110.intf.community.IParkingSpaceInnerServiceSMO;
+import com.java110.intf.community.IRoomInnerServiceSMO;
+import com.java110.intf.fee.IFeeInnerServiceSMO;
 import com.java110.intf.fee.IMeterWaterInnerServiceSMO;
+import com.java110.po.fee.PayFeePo;
+import com.java110.po.meterWater.MeterWaterPo;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.StringUtil;
 import com.java110.vo.ResultVo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -10,6 +27,7 @@
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -23,12 +41,187 @@
     @Autowired
     private IMeterWaterInnerServiceSMO meterWaterInnerServiceSMOImpl;
 
+    @Autowired
+    private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
+
+    @Autowired
+    private IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl;
+
+    @Autowired
+    private IFeeInnerServiceSMO feeInnerServiceSMOImpl;
+
 
     @Override
-    public ResponseEntity<String> query(MeterWaterDto meterWaterDto) {
+    public ResponseEntity<String> query(MeterWaterDto meterWaterDto, String roomNum) {
+
+        if (!freshFeeDtoParam(meterWaterDto, roomNum)) {
+            return ResultVo.createResponseEntity(1, 0, new JSONArray());
+        }
 
         List<MeterWaterDto> meterWaterDtos = meterWaterInnerServiceSMOImpl.queryMeterWaters(meterWaterDto);
         int total = meterWaterDtos == null ? 0 : meterWaterDtos.size();
         return ResultVo.createResponseEntity(1, total, meterWaterDtos);
     }
+
+    @Override
+    public ResponseEntity<String> queryExportRoomAndMeterWater(String communityId, String meterType) {
+        RoomDto roomDto = new RoomDto();
+        roomDto.setCommunityId(communityId);
+        List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto);
+        MeterWaterDto meterWaterDto = null;
+        List<ImportExportMeterWaterDto> importExportMeterWaterDtos = new ArrayList<>();
+        ImportExportMeterWaterDto importExportMeterWaterDto = null;
+        for (RoomDto tmpRoomDto : roomDtos) {
+            meterWaterDto = new MeterWaterDto();
+            meterWaterDto.setMeterType(meterType);
+            meterWaterDto.setObjType(FeeDto.PAYER_OBJ_TYPE_ROOM);
+            List<MeterWaterDto> meterWaterDtos = meterWaterInnerServiceSMOImpl.queryMeterWaters(meterWaterDto);
+            importExportMeterWaterDto = BeanConvertUtil.covertBean(tmpRoomDto, ImportExportMeterWaterDto.class);
+            String preDegree = meterWaterDtos == null ? "0" : meterWaterDtos.get(0).getCurDegrees();
+            String preReadTime = meterWaterDtos == null ? DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)
+                    : meterWaterDtos.get(0).getCurReadingTime();
+
+            importExportMeterWaterDto.setPreDegrees(preDegree);
+            importExportMeterWaterDto.setPreReadingTime(preReadTime);
+            importExportMeterWaterDtos.add(importExportMeterWaterDto);
+        }
+        return ResultVo.createResponseEntity(1, importExportMeterWaterDtos.size(), importExportMeterWaterDtos);
+    }
+
+    @Override
+    public ResponseEntity<String> importMeterWater(JSONObject reqJson) {
+        String communityId = reqJson.getString("communityId");
+        String storeId = reqJson.getString("storeId");
+        String configId = reqJson.getString("configId");
+        String userId = reqJson.getString("userId");
+        String feeTypeCd = reqJson.getString("feeTypeCd");
+        JSONArray importMeteWaterFees = reqJson.getJSONArray("importMeteWaterFees");
+        JSONObject meteWaterJson = null;
+        ImportExportMeterWaterDto importExportMeterWaterDto = null;
+
+        List<PayFeePo> fees = new ArrayList<>();
+        List<MeterWaterPo> meterWaterPos = new ArrayList<>();
+        for (int meteWaterIndex = 0; meteWaterIndex < importMeteWaterFees.size(); meteWaterIndex++) {
+            meteWaterJson = importMeteWaterFees.getJSONObject(meteWaterIndex);
+
+            importExportMeterWaterDto = BeanConvertUtil.covertBean(meteWaterJson, ImportExportMeterWaterDto.class);
+
+            dealImportExportMeterWater(importExportMeterWaterDto,
+                    communityId,
+                    storeId,
+                    configId,
+                    userId,
+                    feeTypeCd,
+                    fees,
+                    meterWaterPos
+            );
+        }
+
+        if (fees.size() < 1 || meterWaterPos.size() < 1) {
+            return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "鎵归噺鎶勮〃澶辫触");
+        }
+
+        feeInnerServiceSMOImpl.saveFee(fees);
+
+        meterWaterInnerServiceSMOImpl.saveMeterWaters(meterWaterPos);
+        return ResultVo.success();
+    }
+
+    private void dealImportExportMeterWater(ImportExportMeterWaterDto importExportMeterWaterDto, String communityId,
+                                            String storeId, String configId, String userId, String feeTypeCd,
+                                            List<PayFeePo> fees, List<MeterWaterPo> meterWaterPos) {
+
+        RoomDto roomDto = new RoomDto();
+        roomDto.setCommunityId(communityId);
+        roomDto.setFloorNum(importExportMeterWaterDto.getFloorNum());
+        roomDto.setUnitNum(importExportMeterWaterDto.getUnitNum());
+        roomDto.setRoomNum(importExportMeterWaterDto.getRoomNum());
+        List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto);
+
+        Assert.listOnlyOne(roomDtos, "鎴垮眿鏈壘鍒版垨鎵惧埌澶氭潯" + importExportMeterWaterDto.getFloorNum() + "-" + importExportMeterWaterDto.getUnitNum() + "-" + importExportMeterWaterDto.getRoomNum());
+
+        if (FeeConfigDto.FEE_TYPE_CD_WATER.equals(feeTypeCd)) {
+            importExportMeterWaterDto.setMeterType("1010");
+        } else {
+            importExportMeterWaterDto.setMeterType("2020");
+        }
+
+        PayFeePo payFeePo = new PayFeePo();
+        payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId));
+        payFeePo.setIncomeObjId(storeId);
+        payFeePo.setAmount("-1");
+        payFeePo.setStartTime(importExportMeterWaterDto.getPreReadingTime());
+        payFeePo.setEndTime(importExportMeterWaterDto.getPreReadingTime());
+        payFeePo.setPayerObjId(roomDtos.get(0).getRoomId());
+        //payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM);
+        payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM);
+        payFeePo.setFeeFlag(FeeDto.FEE_FLAG_ONCE);
+        payFeePo.setState(FeeDto.STATE_DOING);
+        payFeePo.setUserId(userId);
+        payFeePo.setFeeTypeCd(feeTypeCd);
+        payFeePo.setConfigId(configId);
+        payFeePo.setCommunityId(communityId);
+        fees.add(payFeePo);
+
+        MeterWaterPo meterWaterPo = new MeterWaterPo();
+        meterWaterPo.setCommunityId(communityId);
+        meterWaterPo.setCurDegrees(importExportMeterWaterDto.getCurDegrees());
+        meterWaterPo.setCurReadingTime(importExportMeterWaterDto.getCurReadingTime());
+        meterWaterPo.setFeeId(payFeePo.getFeeId());
+        meterWaterPo.setMeterType(importExportMeterWaterDto.getMeterType());
+        meterWaterPo.setObjId(roomDtos.get(0).getRoomId());
+        meterWaterPo.setObjName(importExportMeterWaterDto.getFloorNum() + "鏍�" + importExportMeterWaterDto.getUnitNum() + "鍗曞厓" + importExportMeterWaterDto.getRoomNum() + "瀹�");
+        meterWaterPo.setObjType(MeterWaterDto.OBJ_TYPE_ROOM);
+        meterWaterPo.setPreDegrees(importExportMeterWaterDto.getPreDegrees());
+        meterWaterPo.setPreReadingTime(importExportMeterWaterDto.getPreReadingTime());
+        meterWaterPo.setWaterId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_waterId));
+        meterWaterPo.setRemark(importExportMeterWaterDto.getRemark());
+        meterWaterPos.add(meterWaterPo);
+    }
+
+    private boolean freshFeeDtoParam(MeterWaterDto meterWaterDto, String roomNum) {
+
+        if (StringUtil.isEmpty(roomNum)) {
+            return true;
+        }
+
+        if (!roomNum.contains("-")) {
+            return false;
+        }
+        if (MeterWaterDto.METER_TYPE_ROOM.equals(meterWaterDto.getObjType())) {
+            String[] nums = roomNum.split("-");
+            if (nums.length != 3) {
+                return false;
+            }
+            RoomDto roomDto = new RoomDto();
+            roomDto.setFloorNum(nums[0]);
+            roomDto.setUnitNum(nums[1]);
+            roomDto.setRoomNum(nums[2]);
+            roomDto.setCommunityId(meterWaterDto.getCommunityId());
+            List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto);
+
+            if (roomDtos == null || roomDtos.size() < 1) {
+                return false;
+            }
+            meterWaterDto.setObjId(roomDtos.get(0).getRoomId());
+
+        } else {
+            String[] nums = roomNum.split("-");
+            if (nums.length != 2) {
+                return false;
+            }
+            ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
+            parkingSpaceDto.setAreaNum(nums[0]);
+            parkingSpaceDto.setNum(nums[1]);
+            parkingSpaceDto.setCommunityId(meterWaterDto.getCommunityId());
+            List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
+
+            if (parkingSpaceDtos == null || parkingSpaceDtos.size() < 1) {
+                return false;
+            }
+            meterWaterDto.setObjId(parkingSpaceDtos.get(0).getPsId());
+        }
+
+        return true;
+    }
 }

--
Gitblit v1.8.0