java110 hace 5 años
padre
commit
c1f450f09a

+ 34 - 3
service-fee/src/main/java/com/java110/fee/bmo/importFee/impl/FeeSharingBMOImpl.java

@@ -29,7 +29,9 @@ import javax.script.ScriptEngine;
 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 {
@@ -133,8 +135,10 @@ public class FeeSharingBMOImpl implements IFeeSharingBMO {
         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);
@@ -179,13 +183,40 @@ public class FeeSharingBMOImpl implements IFeeSharingBMO {
     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");