| | |
| | | |
| | | private void dealFeePs(ParkingSpaceDto tmpParkingSpaceDto, FeeDto feeDto) { |
| | | // 轮数 * 周期 * 30 + 开始时间 = 目标 到期时间 |
| | | Map<String, Object> targetEndDateAndOweMonth = getTargetEndDateAndOweMonth(feeDto); |
| | | Map<String, Object> targetEndDateAndOweMonth = computeFeeSMOImpl.getTargetEndDateAndOweMonth(feeDto); |
| | | Date targetEndDate = (Date) targetEndDateAndOweMonth.get("targetEndDate"); |
| | | double oweMonth = (double) targetEndDateAndOweMonth.get("oweMonth"); |
| | | if (!tmpParkingSpaceDto.getPsId().equals(feeDto.getPayerObjId())) { |
| | |
| | | } |
| | | |
| | | private void dealFeeRoom(RoomDto tmpRoomDto, FeeDto feeDto) { |
| | | Map<String, Object> targetEndDateAndOweMonth = getTargetEndDateAndOweMonth(feeDto); |
| | | Map<String, Object> targetEndDateAndOweMonth = computeFeeSMOImpl.getTargetEndDateAndOweMonth(feeDto); |
| | | Date targetEndDate = (Date) targetEndDateAndOweMonth.get("targetEndDate"); |
| | | double oweMonth = (double) targetEndDateAndOweMonth.get("oweMonth"); |
| | | if (!tmpRoomDto.getRoomId().equals(feeDto.getPayerObjId())) { |
| | |
| | | } |
| | | |
| | | |
| | | private Map getTargetEndDateAndOweMonth(FeeDto feeDto) { |
| | | Date targetEndDate = null; |
| | | double oweMonth = 0.0; |
| | | |
| | | Map<String, Object> targetEndDateAndOweMonth = new HashMap<>(); |
| | | |
| | | if (FeeDto.STATE_FINISH.equals(feeDto.getState())) { |
| | | targetEndDate = feeDto.getEndTime(); |
| | | targetEndDateAndOweMonth.put("oweMonth", oweMonth); |
| | | targetEndDateAndOweMonth.put("targetEndDate", targetEndDate); |
| | | return targetEndDateAndOweMonth; |
| | | } |
| | | if (FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())) { |
| | | if (feeDto.getDeadlineTime() != null) { |
| | | targetEndDate = feeDto.getDeadlineTime(); |
| | | } else if (!StringUtil.isEmpty(feeDto.getCurDegrees())) { |
| | | targetEndDate = feeDto.getCurReadingTime(); |
| | | } else if (feeDto.getImportFeeEndTime() == null) { |
| | | targetEndDate = feeDto.getConfigEndTime(); |
| | | } else { |
| | | targetEndDate = feeDto.getImportFeeEndTime(); |
| | | } |
| | | //判断当前费用是不是导入费用 |
| | | oweMonth = 1.0; |
| | | |
| | | } else { |
| | | //当前时间 |
| | | Date billEndTime = DateUtil.getCurrentDate(); |
| | | //开始时间 |
| | | Date startDate = feeDto.getStartTime(); |
| | | //到期时间 |
| | | Date endDate = feeDto.getEndTime(); |
| | | if (FeeDto.PAYER_OBJ_TYPE_CAR.equals(feeDto.getPayerObjType())) { |
| | | OwnerCarDto ownerCarDto = new OwnerCarDto(); |
| | | ownerCarDto.setCommunityId(feeDto.getCommunityId()); |
| | | ownerCarDto.setCarId(feeDto.getPayerObjId()); |
| | | List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto); |
| | | |
| | | if (ownerCarDtos == null || ownerCarDtos.size() != 1) { |
| | | targetEndDateAndOweMonth.put("oweMonth", 0); |
| | | targetEndDateAndOweMonth.put("targetEndDate", ""); |
| | | return targetEndDateAndOweMonth; |
| | | } |
| | | |
| | | targetEndDate = ownerCarDtos.get(0).getEndTime(); |
| | | //说明没有欠费 |
| | | if (endDate.getTime() >= targetEndDate.getTime()) { |
| | | // 目标到期时间 - 到期时间 = 欠费月份 |
| | | oweMonth = 0; |
| | | targetEndDateAndOweMonth.put("oweMonth", oweMonth); |
| | | targetEndDateAndOweMonth.put("targetEndDate", targetEndDate); |
| | | return targetEndDateAndOweMonth; |
| | | } |
| | | } |
| | | |
| | | //缴费周期 |
| | | long paymentCycle = Long.parseLong(feeDto.getPaymentCycle()); |
| | | // 当前时间 - 开始时间 = 月份 |
| | | double mulMonth = 0.0; |
| | | mulMonth = DateUtil.dayCompare(startDate, billEndTime); |
| | | |
| | | // 月份/ 周期 = 轮数(向上取整) |
| | | double round = 0.0; |
| | | if ("1200".equals(feeDto.getPaymentCd())) { // 预付费 |
| | | round = Math.floor(mulMonth / paymentCycle) + 1; |
| | | } else { //后付费 |
| | | round = Math.floor(mulMonth / paymentCycle); |
| | | } |
| | | // 轮数 * 周期 * 30 + 开始时间 = 目标 到期时间 |
| | | targetEndDate = getTargetEndTime(round * paymentCycle, startDate); |
| | | //费用 快结束了 |
| | | if (feeDto.getConfigEndTime().getTime() < targetEndDate.getTime()) { |
| | | targetEndDate = feeDto.getConfigEndTime(); |
| | | } |
| | | //说明没有欠费 |
| | | if (endDate.getTime() < targetEndDate.getTime()) { |
| | | // 目标到期时间 - 到期时间 = 欠费月份 |
| | | oweMonth = DateUtil.dayCompare(endDate, targetEndDate); |
| | | } |
| | | |
| | | if (feeDto.getEndTime().getTime() > targetEndDate.getTime()) { |
| | | targetEndDate = feeDto.getEndTime(); |
| | | } |
| | | } |
| | | |
| | | targetEndDateAndOweMonth.put("oweMonth", oweMonth); |
| | | targetEndDateAndOweMonth.put("targetEndDate", targetEndDate); |
| | | return targetEndDateAndOweMonth; |
| | | } |
| | | |
| | | private Date getTargetEndTime(double v, Date startDate) { |
| | | Calendar endDate = Calendar.getInstance(); |