| | |
| | | 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 { |
| | |
| | | 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); |
| | |
| | | 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"); |