From 2d079ac843ebcb335f2ef7d6952f9700a16fddde Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期三, 05 五月 2021 14:11:00 +0800
Subject: [PATCH] 游湖阿底阿妈

---
 service-fee/src/main/java/com/java110/fee/bmo/importFee/impl/FeeSharingBMOImpl.java |  107 ++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 89 insertions(+), 18 deletions(-)

diff --git a/service-fee/src/main/java/com/java110/fee/bmo/importFee/impl/FeeSharingBMOImpl.java b/service-fee/src/main/java/com/java110/fee/bmo/importFee/impl/FeeSharingBMOImpl.java
old mode 100644
new mode 100755
index f2bb4fd..d5f86dc
--- a/service-fee/src/main/java/com/java110/fee/bmo/importFee/impl/FeeSharingBMOImpl.java
+++ b/service-fee/src/main/java/com/java110/fee/bmo/importFee/impl/FeeSharingBMOImpl.java
@@ -9,10 +9,12 @@
 import com.java110.dto.fee.FeeConfigDto;
 import com.java110.dto.fee.FeeDto;
 import com.java110.dto.feeFormula.FeeFormulaDto;
+import com.java110.dto.owner.OwnerDto;
 import com.java110.fee.bmo.importFee.IFeeSharingBMO;
 import com.java110.intf.community.ICommunityInnerServiceSMO;
 import com.java110.intf.community.IRoomInnerServiceSMO;
 import com.java110.intf.fee.*;
+import com.java110.intf.user.IOwnerInnerServiceSMO;
 import com.java110.po.fee.FeeAttrPo;
 import com.java110.po.fee.PayFeeConfigPo;
 import com.java110.po.fee.PayFeePo;
@@ -21,6 +23,7 @@
 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.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
@@ -63,6 +66,9 @@
     @Autowired
     private ICommunityInnerServiceSMO communityInnerServiceSMOImpl;
 
+    @Autowired
+    private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
+
     /**
      * 娣诲姞灏忓尯淇℃伅
      *
@@ -81,14 +87,19 @@
 
         String scope = reqJson.getString("scope");
         RoomDto roomDto = new RoomDto();
+        String[] states = null;
         if (reqJson.containsKey("roomState") && reqJson.getString("roomState").split(",").length > 0) {
-            String[] states = reqJson.getString("roomState").split(",");
+            states = reqJson.getString("roomState").split(",");
             roomDto.setStates(states);
         } else {
             roomDto.setStates(new String[]{RoomDto.STATE_SELL, RoomDto.STATE_SHOP_SELL}); // 宸茬粡鍏ヤ綇
         }
         if (reqJson.containsKey("roomType")) {
             roomDto.setRoomType(reqJson.getString("roomType"));
+        }
+        if (reqJson.containsKey("feeLayer") && !"鍏ㄩ儴".equals(reqJson.getString("feeLayer"))) {
+            String[] layers = reqJson.getString("feeLayer").split("#");
+            roomDto.setLayers(layers);
         }
         List<RoomDto> roomDtos = null;
         if ("1001".equals(scope)) {//灏忓尯
@@ -105,7 +116,26 @@
         }
 
         if (roomDtos == null || roomDtos.size() < 1) {
-            throw new IllegalArgumentException("鏈壘鍒扮浉搴旀埧灞嬪叕鎽婅垂鐢�");
+            throw new IllegalArgumentException("鏈壘鍒扮浉搴旀埧灞�");
+        }
+
+        //鎴垮眿鍒峰叆涓氫富淇℃伅
+        List<String> roomIds = new ArrayList<>();
+        for (RoomDto tmpRoomDto : roomDtos) {
+            roomIds.add(tmpRoomDto.getRoomId());
+        }
+        OwnerDto ownerDto = new OwnerDto();
+        ownerDto.setCommunityId(roomDtos.get(0).getCommunityId());
+        ownerDto.setRoomIds(roomIds.toArray(new String[roomIds.size()]));
+        List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwnersByRoom(ownerDto);
+        for (RoomDto tmpRoomDto : roomDtos) {
+            for (OwnerDto tmpOwnerDto : ownerDtos) {
+                if (tmpRoomDto.getRoomId().equals(tmpOwnerDto.getRoomId())) {
+                    tmpRoomDto.setOwnerId(tmpOwnerDto.getOwnerId());
+                    tmpRoomDto.setOwnerName(tmpOwnerDto.getName());
+                    tmpRoomDto.setLink(tmpOwnerDto.getLink());
+                }
+            }
         }
 
         FeeConfigDto feeConfigDto = new FeeConfigDto();
@@ -133,7 +163,7 @@
         String formulaValue = deakFormula(feeFormulaDtos.get(0));
 
         //鍏憡璐圭敤鍒版埧灞�
-        sharingFeeToRoom(formulaValue, Double.parseDouble(feeFormulaDtos.get(0).getPrice()), roomDtos, reqJson, feeConfigDto, communityDtos.get(0));
+        sharingFeeToRoom(formulaValue, Double.parseDouble(feeFormulaDtos.get(0).getPrice()), roomDtos, reqJson, feeConfigDto, communityDtos.get(0),states);
 
 
         return ResultVo.success();
@@ -146,7 +176,7 @@
      * @param roomDtos
      */
     private void sharingFeeToRoom(String formulaValue, double price, List<RoomDto> roomDtos,
-                                  JSONObject reqJson, FeeConfigDto feeConfigDto, CommunityDto communityDto) {
+                                  JSONObject reqJson, FeeConfigDto feeConfigDto, CommunityDto communityDto,String[] states) {
 
 
         List<PayFeePo> payFeePos = new ArrayList<>();
@@ -157,7 +187,7 @@
         Map<String, Integer> unitRooms = new HashMap();
         for (RoomDto roomDto : roomDtos) {
             doSharingFeeToRoom(formulaValue, price, roomDto, reqJson, payFeePos, feeConfigDto, feeAttrPos,
-                    importFeeId, importFeeDetailPos, floorRooms, unitRooms, communityDto);
+                    importFeeId, importFeeDetailPos, floorRooms, unitRooms, communityDto,states);
         }
 
         feeInnerServiceSMOImpl.saveFee(payFeePos);
@@ -205,22 +235,23 @@
                                     List<ImportFeeDetailPo> importFeeDetailPos,
                                     Map<String, Integer> floorRooms,
                                     Map<String, Integer> unitRooms,
-                                    CommunityDto communityDto) {
+                                    CommunityDto communityDto,
+                                    String[] states) {
 
         if (!floorRooms.containsKey(roomDto.getFloorId())) {
             RoomDto tmpRoomDto = new RoomDto();
-            tmpRoomDto.setCommunityId(roomDto.getCommunityId());
+            tmpRoomDto.setCommunityId(communityDto.getCommunityId());
             tmpRoomDto.setFloorId(roomDto.getFloorId());
-            tmpRoomDto.setState(RoomDto.STATE_SELL);
+            tmpRoomDto.setStates(states);
             int roomCount = roomInnerServiceSMOImpl.queryRoomsCount(tmpRoomDto);
             floorRooms.put(roomDto.getFloorId(), roomCount);
         }
 
         if (!unitRooms.containsKey(roomDto.getUnitId())) {
             RoomDto tmpRoomDto = new RoomDto();
-            tmpRoomDto.setCommunityId(roomDto.getCommunityId());
+            tmpRoomDto.setCommunityId(communityDto.getCommunityId());
             tmpRoomDto.setUnitId(roomDto.getUnitId());
-            tmpRoomDto.setState(RoomDto.STATE_SELL);
+            tmpRoomDto.setStates(states);
             int roomCount = roomInnerServiceSMOImpl.queryRoomsCount(tmpRoomDto);
             unitRooms.put(roomDto.getUnitId(), roomCount);
         }
@@ -230,14 +261,14 @@
 
 
         String orgFormulaValue = formulaValue;
-        formulaValue = formulaValue.replace("T", reqJson.getString("totalDegrees"))
-                .replace("F", roomDto.getFloorArea())
-                .replace("U", roomDto.getUnitArea())
-                .replace("R", roomDto.getBuiltUpArea())
-                .replace("X", roomDto.getFeeCoefficient())
-                .replace("L", floorRoomCount + "")
-                .replace("D", unitRoomCount + "")
-                .replace("C", communityDto.getCommunityArea());
+        formulaValue = formulaValue.replaceAll("T", reqJson.getString("totalDegrees"))
+                .replaceAll("F", roomDto.getFloorArea())
+                .replaceAll("U", roomDto.getUnitArea())
+                .replaceAll("R", roomDto.getBuiltUpArea())
+                .replaceAll("X", roomDto.getFeeCoefficient())
+                .replaceAll("L", floorRoomCount + "")
+                .replaceAll("D", unitRoomCount + "")
+                .replaceAll("C", communityDto.getCommunityArea());
 
 
         ScriptEngineManager manager = new ScriptEngineManager();
@@ -250,6 +281,7 @@
             BigDecimal priceObj = new BigDecimal(price);
             priceObj = valueObj.multiply(priceObj).setScale(2, BigDecimal.ROUND_HALF_EVEN);
             amount = priceObj.doubleValue();
+            value = valueObj.setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue() + "";
         } catch (Exception e) {
             throw new IllegalArgumentException("鍏紡璁$畻寮傚父锛屽叕寮忎负銆�" + orgFormulaValue + "銆�,璁$畻 銆�" + formulaValue + "銆戝紓甯�");
         }
@@ -299,6 +331,41 @@
         feeAttrPo.setFeeId(payFeePo.getFeeId());
         feeAttrPos.add(feeAttrPo);
 
+
+        feeAttrPo = new FeeAttrPo();
+        feeAttrPo.setCommunityId(reqJson.getString("communityId"));
+        feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+        feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME);
+        feeAttrPo.setValue(reqJson.getString("endTime"));
+        feeAttrPo.setFeeId(payFeePo.getFeeId());
+        feeAttrPos.add(feeAttrPo);
+
+        if (!StringUtil.isEmpty(roomDto.getOwnerId())) {
+            feeAttrPo = new FeeAttrPo();
+            feeAttrPo.setCommunityId(reqJson.getString("communityId"));
+            feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+            feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_ID);
+            feeAttrPo.setValue(roomDto.getOwnerId());
+            feeAttrPo.setFeeId(payFeePo.getFeeId());
+            feeAttrPos.add(feeAttrPo);
+
+            feeAttrPo = new FeeAttrPo();
+            feeAttrPo.setCommunityId(reqJson.getString("communityId"));
+            feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+            feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_NAME);
+            feeAttrPo.setValue(roomDto.getOwnerName());
+            feeAttrPo.setFeeId(payFeePo.getFeeId());
+            feeAttrPos.add(feeAttrPo);
+
+            feeAttrPo = new FeeAttrPo();
+            feeAttrPo.setCommunityId(reqJson.getString("communityId"));
+            feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+            feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_LINK);
+            feeAttrPo.setValue(roomDto.getLink());
+            feeAttrPo.setFeeId(payFeePo.getFeeId());
+            feeAttrPos.add(feeAttrPo);
+        }
+
         String formulaValueRemark = orgFormulaValue.replace("T", reqJson.getString("totalDegrees") + "<鎬荤敤閲�>")
                 .replace("F", roomDto.getFloorArea() + "<" + roomDto.getFloorNum() + "鏍嬮潰绉�>")
                 .replace("U", roomDto.getUnitArea() + "<" + roomDto.getUnitNum() + "鍗曞厓闈㈢Н>")
@@ -331,6 +398,10 @@
         importFeeDetailPo.setState("1000");
         importFeeDetailPo.setImportFeeId(importFeeId);
         importFeeDetailPo.setRemark("鍏憡鐢ㄩ噺锛�" + value);
+        importFeeDetailPo.setObjType(FeeDto.PAYER_OBJ_TYPE_ROOM);
+        importFeeDetailPo.setObjId(roomDto.getRoomId());
+        importFeeDetailPo.setObjName(RoomDto.ROOM_TYPE_ROOM.equals(roomDto.getRoomType()) ? roomDto.getFloorNum() + "-" + roomDto.getUnitNum() + "-" + roomDto.getRoomNum() :
+                roomDto.getFloorNum() + "-" + roomDto.getRoomNum());
         importFeeDetailPos.add(importFeeDetailPo);
     }
 

--
Gitblit v1.8.0