| | |
| | | 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; |
| | |
| | | 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 { |
| | |
| | | sharingFeeToRoom(formulaValue, Double.parseDouble(feeFormulaDtos.get(0).getPrice()), roomDtos, reqJson, feeConfigDto); |
| | | |
| | | |
| | | return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "保存失败"); |
| | | return ResultVo.success(); |
| | | } |
| | | |
| | | /** |
| | |
| | | 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"); |
| | |
| | | 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")); |
| | |
| | | |
| | | payFeePos.add(payFeePo); |
| | | |
| | | // 导入费用名称 |
| | | FeeAttrPo feeAttrPo = new FeeAttrPo(); |
| | | feeAttrPo.setCommunityId(reqJson.getString("communityId")); |
| | | feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); |
| | |
| | | feeAttrPo.setFeeId(payFeePo.getFeeId()); |
| | | feeAttrPos.add(feeAttrPo); |
| | | |
| | | // 公摊用量 |
| | | feeAttrPo = new FeeAttrPo(); |
| | | feeAttrPo.setCommunityId(reqJson.getString("communityId")); |
| | | feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); |
| | |
| | | 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()); |
| | |
| | | importFeeDetailPo.setImportFeeId(importFeeId); |
| | | importFeeDetailPo.setRemark("公摊用量:" + value); |
| | | importFeeDetailPos.add(importFeeDetailPo); |
| | | |
| | | |
| | | } |
| | | |
| | | private String deakFormula(FeeFormulaDto feeFormulaDto) { |