From ed92ebffa644134e7db3db34aff4b444c0b284f7 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期二, 22 九月 2020 16:37:36 +0800
Subject: [PATCH] 优化代码

---
 service-fee/src/main/java/com/java110/fee/bmo/importFee/impl/FeeSharingBMOImpl.java |   85 ++++++++++++++++++++++++++++++++++--------
 1 files changed, 69 insertions(+), 16 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
index 08f0762..7303e7f 100644
--- 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
@@ -11,11 +11,7 @@
 import com.java110.fee.bmo.importFee.IFeeSharingBMO;
 import com.java110.intf.IImportFeeDetailInnerServiceSMO;
 import com.java110.intf.community.IRoomInnerServiceSMO;
-import com.java110.intf.fee.IFeeAttrInnerServiceSMO;
-import com.java110.intf.fee.IFeeConfigInnerServiceSMO;
-import com.java110.intf.fee.IFeeFormulaInnerServiceSMO;
-import com.java110.intf.fee.IFeeInnerServiceSMO;
-import com.java110.intf.fee.IImportFeeInnerServiceSMO;
+import com.java110.intf.fee.*;
 import com.java110.po.fee.FeeAttrPo;
 import com.java110.po.fee.PayFeeConfigPo;
 import com.java110.po.fee.PayFeePo;
@@ -33,7 +29,9 @@
 import javax.script.ScriptEngineManager;
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 @Service("feeSharingBMOImpl")
 public class FeeSharingBMOImpl implements IFeeSharingBMO {
@@ -117,10 +115,10 @@
         String formulaValue = deakFormula(feeFormulaDtos.get(0));
 
         //鍏憡璐圭敤鍒版埧灞�
-        sharingFeeToRoom(formulaValue, feeFormulaDtos.get(0).getPrice(), roomDtos, reqJson, feeConfigDto);
+        sharingFeeToRoom(formulaValue, Double.parseDouble(feeFormulaDtos.get(0).getPrice()), roomDtos, reqJson, feeConfigDto);
 
 
-        return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "淇濆瓨澶辫触");
+        return ResultVo.success();
     }
 
     /**
@@ -137,8 +135,10 @@
         List<FeeAttrPo> feeAttrPos = new ArrayList<>();
         List<ImportFeeDetailPo> importFeeDetailPos = new ArrayList<>();
         String importFeeId = GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId);
+        Map<String, Integer> floorRooms = new HashMap();
+        Map<String, Integer> unitRooms = new HashMap();
         for (RoomDto roomDto : roomDtos) {
-            doSharingFeeToRoom(formulaValue, price, roomDto, reqJson, payFeePos, feeConfigDto, feeAttrPos, importFeeId, importFeeDetailPos);
+            doSharingFeeToRoom(formulaValue, price, roomDto, reqJson, payFeePos, feeConfigDto, feeAttrPos, importFeeId, importFeeDetailPos, floorRooms, unitRooms);
         }
 
         feeInnerServiceSMOImpl.saveFee(payFeePos);
@@ -160,7 +160,7 @@
             scopeName = roomDtos.get(0).getFloorNum() + "鏍�" + roomDtos.get(0).getUnitNum() + "鍗曞厓";
         }
         importFeePo.setRemark("鎬讳娇鐢ㄩ噺锛�" + reqJson.getString("totalDegrees")
-                + ",鍏紡锛�" + formulaValue + ",鍏憡鑼冨洿锛�" + scopeName);
+                + ";鍏紡锛�" + formulaValue + ";鍏憡鑼冨洿锛�" + scopeName);
         importFeeInnerServiceSMOImpl.saveImportFee(importFeePo);
 
         importFeeDetailInnerServiceSMOImpl.saveImportFeeDetails(importFeeDetailPos);
@@ -183,13 +183,40 @@
     private void doSharingFeeToRoom(String formulaValue, double price, RoomDto roomDto, JSONObject reqJson,
                                     List<PayFeePo> payFeePos, FeeConfigDto feeConfigDto,
                                     List<FeeAttrPo> feeAttrPos, String importFeeId,
-                                    List<ImportFeeDetailPo> importFeeDetailPos) {
+                                    List<ImportFeeDetailPo> importFeeDetailPos,
+                                    Map<String, Integer> floorRooms,
+                                    Map<String, Integer> unitRooms) {
+
+        if (!floorRooms.containsKey(roomDto.getFloorId())) {
+            RoomDto tmpRoomDto = new RoomDto();
+            tmpRoomDto.setCommunityId(roomDto.getCommunityId());
+            tmpRoomDto.setFloorId(roomDto.getFloorId());
+            tmpRoomDto.setState(RoomDto.STATE_SELL);
+            int roomCount = roomInnerServiceSMOImpl.queryRoomsCount(tmpRoomDto);
+            floorRooms.put(roomDto.getFloorId(), roomCount);
+        }
+
+        if (!unitRooms.containsKey(roomDto.getUnitId())) {
+            RoomDto tmpRoomDto = new RoomDto();
+            tmpRoomDto.setCommunityId(roomDto.getCommunityId());
+            tmpRoomDto.setUnitId(roomDto.getUnitId());
+            tmpRoomDto.setState(RoomDto.STATE_SELL);
+            int roomCount = roomInnerServiceSMOImpl.queryRoomsCount(tmpRoomDto);
+            unitRooms.put(roomDto.getUnitId(), roomCount);
+        }
+
+        long floorRoomCount = floorRooms.get(roomDto.getFloorId());
+        long unitRoomCount = unitRooms.get(roomDto.getUnitId());
+
         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("X", roomDto.getFeeCoefficient())
+                .replace("L", floorRoomCount + "")
+                .replace("D", unitRoomCount + "");
+
 
         ScriptEngineManager manager = new ScriptEngineManager();
         ScriptEngine engine = manager.getEngineByName("JavaScript");
@@ -211,7 +238,7 @@
         payFeePo.setState(FeeDto.STATE_DOING);
         payFeePo.setCommunityId(reqJson.getString("communityId"));
         payFeePo.setConfigId(feeConfigDto.getConfigId());
-        payFeePo.setPayerObjId(reqJson.getString("objId"));
+        payFeePo.setPayerObjId(roomDto.getRoomId());
         payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM);
         payFeePo.setUserId(reqJson.getString("userId"));
         payFeePo.setIncomeObjId(reqJson.getString("storeId"));
@@ -223,6 +250,7 @@
 
         payFeePos.add(payFeePo);
 
+        // 瀵煎叆璐圭敤鍚嶇О
         FeeAttrPo feeAttrPo = new FeeAttrPo();
         feeAttrPo.setCommunityId(reqJson.getString("communityId"));
         feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
@@ -231,15 +259,42 @@
         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_SHARE_DEGREES);
-        feeAttrPo.setValue(reqJson.getString("value"));
+        feeAttrPo.setValue(value);
         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_TOTAL_DEGREES);
+        feeAttrPo.setValue(reqJson.getString("totalDegrees"));
+        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() + "鍗曞厓闈㈢Н>")
+                .replace("R", roomDto.getBuiltUpArea() + "<" + roomDto.getRoomNum() + "瀹ら潰绉�>")
+                .replace("X", roomDto.getFeeCoefficient() + "<" + roomDto.getRoomNum() + "瀹ょ畻璐圭郴鏁�>");
+
+        formulaValueRemark += (" * " + price + "<鍗曚环>");
+        // 鍏憡鍏紡
+        feeAttrPo = new FeeAttrPo();
+        feeAttrPo.setCommunityId(reqJson.getString("communityId"));
+        feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+        feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_SHARE_FORMULA);
+        feeAttrPo.setValue(formulaValueRemark);
+        feeAttrPo.setFeeId(payFeePo.getFeeId());
+        feeAttrPos.add(feeAttrPo);
+
         ImportFeeDetailPo importFeeDetailPo = new ImportFeeDetailPo();
-        importFeeDetailPo.setAmount(value);
+        importFeeDetailPo.setAmount(amount + "");
         importFeeDetailPo.setCommunityId(reqJson.getString("communityId"));
         importFeeDetailPo.setEndTime(reqJson.getString("endTime"));
         importFeeDetailPo.setFeeId(payFeePo.getFeeId());
@@ -254,8 +309,6 @@
         importFeeDetailPo.setImportFeeId(importFeeId);
         importFeeDetailPo.setRemark("鍏憡鐢ㄩ噺锛�" + value);
         importFeeDetailPos.add(importFeeDetailPo);
-
-
     }
 
     private String deakFormula(FeeFormulaDto feeFormulaDto) {

--
Gitblit v1.8.0