| | |
| | | import com.java110.dto.fee.FeeDiscountRuleDto; |
| | | import com.java110.dto.fee.FeeDiscountSpecDto; |
| | | import com.java110.dto.payFee.PayFeeConfigDiscountDto; |
| | | import com.java110.dto.work.WorkCopyDto; |
| | | import com.java110.fee.dao.IFeeDiscountServiceDao; |
| | | import com.java110.fee.discount.IComputeDiscount; |
| | | import com.java110.intf.fee.*; |
| | |
| | | //房屋id |
| | | applyRoomDiscountDto.setRoomId(feeDetailDto.getPayerObjId()); |
| | | //开始时间 |
| | | applyRoomDiscountDto.setStartTime(simpleDateFormat.format(feeDetailDto.getStartTime())); |
| | | // applyRoomDiscountDto.setStartTime(simpleDateFormat.format(feeDetailDto.getStartTime())); |
| | | //结束时间 |
| | | c.setTime(feeDetailDto.getStartTime()); |
| | | c.add(Calendar.DAY_OF_MONTH, 2);//开始时间,添加1,2天的冗余,只要比5小即可 |
| | | applyRoomDiscountDto.setStartTime(simpleDateFormat.format(c.getTime()));//重新设置开始时间 |
| | | // c.add(Calendar.DAY_OF_MONTH, 2);//开始时间,添加1,2天的冗余,只要比5小即可 |
| | | // applyRoomDiscountDto.setStartTime(simpleDateFormat.format(c.getTime()));//重新设置开始时间 |
| | | double month = Double.parseDouble(feeDetailDto.getCycles()); |
| | | if(month == 105){ |
| | | month = 2; |
| | | } |
| | | // if(month == 105){ |
| | | // return; |
| | | // } |
| | | c.add(Calendar.MONTH, (int) month); |
| | | c.add(Calendar.DAY_OF_MONTH, -5);//这里根据设置时间荣誉5天 |
| | | // c.add(Calendar.DAY_OF_MONTH, -5);//这里根据设置时间荣誉5天 |
| | | Date endTime = c.getTime(); |
| | | applyRoomDiscountDto.setEndTime(simpleDateFormat.format(endTime)); |
| | | // applyRoomDiscountDto.setEndTime(simpleDateFormat.format(endTime)); |
| | | applyRoomDiscountDto.setFeeId(feeDetailDto.getFeeId()); |
| | | //查询折扣申请表 |
| | | List<ApplyRoomDiscountDto> applyRoomDiscountDtos = applyRoomDiscountInnerServiceSMOImpl.queryApplyRoomDiscounts(applyRoomDiscountDto); |
| | | |
| | | |
| | | |
| | | //判断查询的折扣申请表是否有数据 |
| | | if (applyRoomDiscountDtos != null && applyRoomDiscountDtos.size() > 0) { |
| | | //获取优惠id |
| | |
| | | PayFeeConfigDiscountDto payFeeConfigDiscount = new PayFeeConfigDiscountDto(); |
| | | payFeeConfigDiscount.setCommunityId(applyRoomDiscountDtos.get(0).getCommunityId()); |
| | | payFeeConfigDiscount.setDiscountId(discountId); |
| | | doCompute(payFeeConfigDiscount, Double.parseDouble(feeDetailDto.getCycles()), computeDiscountDtos, feeDetailDto.getFeeId()); |
| | | if(applyRoomDiscountDtos.get(0).getStartTime() == null){ |
| | | payFeeConfigDiscount.setStartTime(feeDetailDto.getStartTime()); |
| | | }else if(DateUtil.getDateFromStringB(applyRoomDiscountDtos.get(0).getStartTime()).before(feeDetailDto.getStartTime())){ |
| | | payFeeConfigDiscount.setStartTime(feeDetailDto.getStartTime()); |
| | | }else{ |
| | | payFeeConfigDiscount.setStartTime(DateUtil.getDateFromStringB(applyRoomDiscountDtos.get(0).getStartTime())); |
| | | } |
| | | if(applyRoomDiscountDtos.get(0).getEndTime() == null){ |
| | | payFeeConfigDiscount.setEndTime(endTime); |
| | | }else if(DateUtil.getDateFromStringB(applyRoomDiscountDtos.get(0).getEndTime()).after(feeDetailDto.getEndTime())){ |
| | | payFeeConfigDiscount.setEndTime(feeDetailDto.getEndTime()); |
| | | }else{ |
| | | payFeeConfigDiscount.setEndTime(DateUtil.getDateFromStringB(applyRoomDiscountDtos.get(0).getEndTime())); |
| | | } |
| | | double cycle = |
| | | DateUtil.dayCompare( |
| | | payFeeConfigDiscount.getStartTime(), |
| | | payFeeConfigDiscount.getEndTime() |
| | | ); |
| | | doComputeB(payFeeConfigDiscount, cycle, computeDiscountDtos, feeDetailDto.getFeeId()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | private void doComputeB(PayFeeConfigDiscountDto tmpPayFeeConfigDiscountDto, double cycles, List<ComputeDiscountDto> computeDiscountDtos, String feeId) { |
| | | FeeDiscountDto feeDiscountDto = new FeeDiscountDto(); |
| | | feeDiscountDto.setCommunityId(tmpPayFeeConfigDiscountDto.getCommunityId()); |
| | | feeDiscountDto.setDiscountId(tmpPayFeeConfigDiscountDto.getDiscountId()); |
| | | List<FeeDiscountDto> feeDiscountDtos = queryFeeDiscounts(feeDiscountDto); |
| | | if (feeDiscountDtos == null || feeDiscountDtos.size() < 1) { |
| | | return; |
| | | } |
| | | |
| | | for (FeeDiscountDto tmpFeeDiscountDto : feeDiscountDtos) { |
| | | tmpFeeDiscountDto.setFeeId(feeId); |
| | | tmpFeeDiscountDto.setCycles(cycles); |
| | | } |
| | | IComputeDiscount computeDiscount = (IComputeDiscount) ApplicationContextFactory.getBean(feeDiscountDtos.get(0).getBeanImpl()); |
| | | ComputeDiscountDto computeDiscountDto = computeDiscount.compute(feeDiscountDtos.get(0)); |
| | | if (computeDiscountDto == null) { |
| | | return; |
| | | } |
| | | computeDiscountDtos.add(computeDiscountDto); |
| | | } |
| | | |
| | | private void doCompute(PayFeeConfigDiscountDto tmpPayFeeConfigDiscountDto, double cycles, List<ComputeDiscountDto> computeDiscountDtos, String feeId) { |
| | | FeeDiscountDto feeDiscountDto = new FeeDiscountDto(); |
| | | feeDiscountDto.setCommunityId(tmpPayFeeConfigDiscountDto.getCommunityId()); |