| | |
| | | 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 = dayCompare(endDate, targetEndDate); |
| | | } |
| | | targetEndDateAndOweMonth.put("oweMonth", oweMonth); |
| | | targetEndDateAndOweMonth.put("targetEndDate", targetEndDate); |
| | | return targetEndDateAndOweMonth; |
| | | } |
| | | //缴费周期 |
| | | long paymentCycle = Long.parseLong(feeDto.getPaymentCycle()); |
| | | // 当前时间 - 开始时间 = 月份 |
| | |
| | | round = Math.floor(mulMonth / paymentCycle); |
| | | } |
| | | // 轮数 * 周期 * 30 + 开始时间 = 目标 到期时间 |
| | | targetEndDate = getTargetEndTime(round * paymentCycle * 30, startDate); |
| | | targetEndDate = getTargetEndTime(round * paymentCycle, startDate); |
| | | //费用 快结束了 |
| | | if (feeDto.getConfigEndTime().getTime() < targetEndDate.getTime()) { |
| | | targetEndDate = feeDto.getConfigEndTime(); |
| | |
| | | if (endDate.getTime() < targetEndDate.getTime()) { |
| | | // 目标到期时间 - 到期时间 = 欠费月份 |
| | | oweMonth = dayCompare(endDate, targetEndDate); |
| | | } |
| | | |
| | | if (feeDto.getEndTime().getTime() > targetEndDate.getTime()) { |
| | | targetEndDate = feeDto.getEndTime(); |
| | | } |
| | | } |
| | | |
| | |
| | | private Date getTargetEndTime(double v, Date startDate) { |
| | | Calendar endDate = Calendar.getInstance(); |
| | | endDate.setTime(startDate); |
| | | endDate.add(Calendar.DATE, (int) v); |
| | | endDate.add(Calendar.MONTH, (int) v); |
| | | return endDate.getTime(); |
| | | } |
| | | |
| | |
| | | */ |
| | | private void getParkingSpaceInfo(BillOweFeeDto billOweFeeDto, FeeDto feeDto) { |
| | | |
| | | ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto(); |
| | | parkingSpaceDto.setPsId(feeDto.getPayerObjId()); |
| | | parkingSpaceDto.setCommunityId(feeDto.getCommunityId()); |
| | | List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto); |
| | | if (parkingSpaceDtos == null || parkingSpaceDtos.size() < 1) { |
| | | //车位可能被删除了 |
| | | billOweFeeDto.setOwnerId("1"); |
| | | billOweFeeDto.setOwnerName("未知"); |
| | | billOweFeeDto.setOwnerTel("19999999999"); |
| | | billOweFeeDto.setPayerObjName("未知"); |
| | | return; |
| | | } |
| | | |
| | | billOweFeeDto.setPayerObjName(parkingSpaceDtos.get(0).getAreaNum() + "停车场" + parkingSpaceDtos.get(0).getNum() + "车位"); |
| | | |
| | | |
| | | OwnerCarDto ownerCarDto = new OwnerCarDto(); |
| | | ownerCarDto.setWithOwner(true); |
| | | ownerCarDto.setPsId(parkingSpaceDtos.get(0).getPsId()); |
| | | ownerCarDto.setCarId(feeDto.getPayerObjId()); |
| | | ownerCarDto.setCommunityId(feeDto.getCommunityId()); |
| | | |
| | | List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto); |
| | |
| | | return; |
| | | } |
| | | |
| | | billOweFeeDto.setPayerObjName(ownerCarDtos.get(0).getCarNum()); |
| | | billOweFeeDto.setOwnerId(ownerCarDtos.get(0).getOwnerId()); |
| | | billOweFeeDto.setOwnerName(ownerCarDtos.get(0).getOwnerName()); |
| | | billOweFeeDto.setOwnerTel(ownerCarDtos.get(0).getLink()); |
| | |
| | | * @param feeDto |
| | | */ |
| | | private void computeFeePriceByParkingSpace(FeeDto feeDto) { |
| | | |
| | | OwnerCarDto ownerCarDto = new OwnerCarDto(); |
| | | ownerCarDto.setCommunityId(feeDto.getCommunityId()); |
| | | ownerCarDto.setCarId(feeDto.getPayerObjId()); |
| | | List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto); |
| | | if (ownerCarDtos == null || ownerCarDtos.size() < 1) { //数据有问题 |
| | | return; |
| | | } |
| | | |
| | | ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto(); |
| | | parkingSpaceDto.setCommunityId(feeDto.getCommunityId()); |
| | | parkingSpaceDto.setPsId(feeDto.getPayerObjId()); |
| | | parkingSpaceDto.setPsId(ownerCarDtos.get(0).getPsId()); |
| | | List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto); |
| | | |
| | | if (parkingSpaceDtos == null || parkingSpaceDtos.size() < 1) { //数据有问题 |
| | |
| | | from.setTime(fromDate); |
| | | Calendar to = Calendar.getInstance(); |
| | | to.setTime(toDate); |
| | | int result = to.get(Calendar.MONTH) - from.get(Calendar.MONTH); |
| | | int month = (to.get(Calendar.YEAR) - from.get(Calendar.YEAR)) * 12; |
| | | |
| | | long t1 = from.getTimeInMillis(); |
| | | result = result + month; |
| | | Calendar newFrom = Calendar.getInstance(); |
| | | newFrom.setTime(fromDate); |
| | | newFrom.add(Calendar.MONTH, result); |
| | | |
| | | long t1 = newFrom.getTimeInMillis(); |
| | | long t2 = to.getTimeInMillis(); |
| | | long days = (t2 - t1) / (24 * 60 * 60 * 1000); |
| | | |
| | | BigDecimal tmpDays = new BigDecimal(days); |
| | | BigDecimal monthDay = new BigDecimal(30); |
| | | |
| | | return tmpDays.divide(monthDay, 2, RoundingMode.HALF_UP).doubleValue(); |
| | | return tmpDays.divide(monthDay, 2, RoundingMode.HALF_UP).doubleValue() + result; |
| | | } |
| | | |
| | | |