| | |
| | | import com.java110.intf.community.IRoomInnerServiceSMO; |
| | | import com.java110.intf.fee.IFeeConfigInnerServiceSMO; |
| | | import com.java110.intf.fee.IFeeInnerServiceSMO; |
| | | import com.java110.intf.user.IOwnerInnerServiceSMO; |
| | | import com.java110.utils.util.DateUtil; |
| | | import com.java110.vo.ResultVo; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | @Autowired |
| | | private IRoomInnerServiceSMO roomInnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl; |
| | | |
| | | |
| | | @Override |
| | | public ResponseEntity<String> query(FeeDto feeDto) { |
| | |
| | | |
| | | |
| | | return ResultVo.createResponseEntity(tmpFeeDtos); |
| | | } |
| | | |
| | | @Override |
| | | public ResponseEntity<String> queryAllOwneFee(FeeDto feeDto) { |
| | | ResponseEntity<String> responseEntity = null; |
| | | if (FeeConfigDto.BILL_TYPE_EVERY.equals(feeDto.getBillType())) { |
| | | responseEntity = computeEveryOweFee(feeDto); |
| | | } else { |
| | | responseEntity = computeBillOweFee(feeDto); |
| | | } |
| | | return responseEntity; |
| | | } |
| | | |
| | | /** |
| | | * 账单费用 |
| | | * |
| | | * @param feeDto |
| | | * @return |
| | | */ |
| | | private ResponseEntity<String> computeBillOweFee(FeeDto feeDto) { |
| | | int count = feeInnerServiceSMOImpl.computeBillOweFeeCount(feeDto); |
| | | List<FeeDto> feeDtos = null; |
| | | if (count > 0) { |
| | | feeDtos = feeInnerServiceSMOImpl.computeBillOweFee(feeDto); |
| | | } else { |
| | | feeDtos = new ArrayList<>(); |
| | | } |
| | | return ResultVo.createResponseEntity((int) Math.ceil((double) count / (double) feeDto.getRow()), count, feeDtos); |
| | | } |
| | | |
| | | /** |
| | | * 实时费用 |
| | | * |
| | | * @param feeDto |
| | | * @return |
| | | */ |
| | | private ResponseEntity<String> computeEveryOweFee(FeeDto feeDto) { |
| | | |
| | | int count = feeInnerServiceSMOImpl.computeEveryOweFeeCount(feeDto); |
| | | List<FeeDto> feeDtos = null; |
| | | if (count > 0) { |
| | | feeDtos = feeInnerServiceSMOImpl.computeEveryOweFee(feeDto); |
| | | computeFeePrices(feeDtos); |
| | | |
| | | } else { |
| | | feeDtos = new ArrayList<>(); |
| | | } |
| | | return ResultVo.createResponseEntity((int) Math.ceil((double) count / (double) feeDto.getRow()), count, feeDtos); |
| | | } |
| | | |
| | | private void computeFeePrices(List<FeeDto> feeDtos) { |
| | | |
| | | List<FeeDto> roomFees = new ArrayList<>(); |
| | | List<FeeDto> psFees = new ArrayList<>(); |
| | | List<String> roomIds = new ArrayList<>(); |
| | | List<String> psIds = new ArrayList<>(); |
| | | |
| | | for (FeeDto fee : feeDtos) { |
| | | if ("3333".equals(fee.getPayerObjType())) { //房屋相关 |
| | | roomFees.add(fee); |
| | | roomIds.add(fee.getPayerObjId()); |
| | | } else if ("6666".equals(fee.getPayerObjType())) {//车位相关 |
| | | psFees.add(fee); |
| | | psIds.add(fee.getPayerObjId()); |
| | | } |
| | | } |
| | | |
| | | if (roomFees.size() > 0) { |
| | | computeRoomFee(roomFees, roomIds); |
| | | } |
| | | |
| | | if (roomFees.size() > 0) { |
| | | computePsFee(psFees, psIds); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 计算停车费 |
| | | * |
| | | * @param psFees |
| | | */ |
| | | private void computePsFee(List<FeeDto> psFees, List<String> psIds) { |
| | | } |
| | | |
| | | /** |
| | | * 计算房屋费 |
| | | * |
| | | * @param roomFees |
| | | */ |
| | | private void computeRoomFee(List<FeeDto> roomFees, List<String> roomIds) { |
| | | RoomDto roomDto = new RoomDto(); |
| | | roomDto.setCommunityId(roomFees.get(0).getCommunityId()); |
| | | roomDto.setRoomIds(roomIds.toArray(new String[roomIds.size()])); |
| | | List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto); |
| | | |
| | | if (roomDtos == null || roomDtos.size() < 1) { //数据有问题 |
| | | return; |
| | | } |
| | | |
| | | for (RoomDto tmpRoomDto : roomDtos) { |
| | | for (FeeDto feeDto : roomFees) { |
| | | dealFeeRoom(tmpRoomDto, feeDto); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | private void dealFeeRoom(RoomDto tmpRoomDto, FeeDto feeDto) { |
| | | |
| | | if (!tmpRoomDto.getRoomId().equals(feeDto.getPayerObjId())) { |
| | | return; |
| | | } |
| | | feeDto.setRoomName(tmpRoomDto.getFloorNum() + "栋" + tmpRoomDto.getUnitNum() + "单元" + tmpRoomDto.getRoomNum() + "室"); |
| | | |
| | | String computingFormula = feeDto.getComputingFormula(); |
| | | double feePrice = 0.00; |
| | | if ("1001".equals(computingFormula)) { //面积*单价+附加费 |
| | | BigDecimal squarePrice = new BigDecimal(Double.parseDouble(feeDto.getSquarePrice())); |
| | | BigDecimal builtUpArea = new BigDecimal(Double.parseDouble(tmpRoomDto.getBuiltUpArea())); |
| | | BigDecimal additionalAmount = new BigDecimal(Double.parseDouble(feeDto.getAdditionalAmount())); |
| | | feePrice = squarePrice.multiply(builtUpArea).add(additionalAmount).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | } else if ("2002".equals(computingFormula)) { // 固定费用 |
| | | BigDecimal additionalAmount = new BigDecimal(Double.parseDouble(feeDto.getAdditionalAmount())); |
| | | feePrice = additionalAmount.setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | } else if ("4004".equals(computingFormula)) { |
| | | feePrice = Double.parseDouble(feeDto.getAmount()); |
| | | } else { |
| | | feePrice = 0.00; |
| | | } |
| | | feeDto.setFeePrice(feePrice); |
| | | |
| | | } |
| | | |
| | | /** |
| | |
| | | feePrice = 0.00; |
| | | } |
| | | |
| | | |
| | | feeDto.setFeePrice(feePrice); |
| | | } |
| | | |