old mode 100644
new mode 100755
| | |
| | | package com.java110.fee.smo.impl; |
| | | |
| | | |
| | | import com.java110.core.base.smo.BaseServiceSMO; |
| | | import com.java110.dto.PageDto; |
| | | import com.java110.dto.applyRoomDiscount.ApplyRoomDiscountDto; |
| | |
| | | import com.java110.dto.fee.FeeDto; |
| | | import com.java110.dto.feeDiscount.ComputeDiscountDto; |
| | | import com.java110.dto.feeDiscount.FeeDiscountDto; |
| | | import com.java110.dto.feeDiscountSpec.FeeDiscountSpecDto; |
| | | import com.java110.dto.feeDiscount.FeeDiscountSpecDto; |
| | | import com.java110.dto.payFeeConfigDiscount.PayFeeConfigDiscountDto; |
| | | import com.java110.fee.dao.IFeeDiscountServiceDao; |
| | | import com.java110.fee.discount.IComputeDiscount; |
| | |
| | | */ |
| | | public List<ComputeDiscountDto> computeDiscount(@RequestBody FeeDetailDto feeDetailDto) { |
| | | SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | Calendar c = Calendar.getInstance(); |
| | | List<ComputeDiscountDto> computeDiscountDtos = new ArrayList<>(); |
| | | FeeDto feeDto = new FeeDto(); |
| | | feeDto.setFeeId(feeDetailDto.getFeeId()); |
| | |
| | | payFeeConfigDiscountDto.setRow(feeDetailDto.getRow()); |
| | | payFeeConfigDiscountDto.setPage(feeDetailDto.getPage()); |
| | | payFeeConfigDiscountDto.setCommunityId(feeDetailDto.getCommunityId()); |
| | | payFeeConfigDiscountDto.setStatusCd("0"); |
| | | Date currentTime = new Date(); |
| | | payFeeConfigDiscountDto.setCurrentTime(currentTime); |
| | | //根据费用查询折扣 |
| | | List<PayFeeConfigDiscountDto> payFeeConfigDiscountDtos = |
| | | payFeeConfigDiscountInnerServiceSMOImpl.queryPayFeeConfigDiscounts(payFeeConfigDiscountDto); |
| | | if (payFeeConfigDiscountDtos == null || payFeeConfigDiscountDtos.size() < 1) { |
| | | computeApplyRoomDiscount(feeDetailDto, simpleDateFormat, c, computeDiscountDtos); |
| | | //取出开关映射的值 |
| | | String value = MappingCache.getValue(DOMAIN_COMMON, DISCOUNT_MODE); |
| | | List<ComputeDiscountDto> computeDiscountDtoList = new ArrayList<>(); |
| | | for (ComputeDiscountDto computeDiscountDto : computeDiscountDtos) { |
| | | computeDiscountDto.setValue(value); |
| | | computeDiscountDtoList.add(computeDiscountDto); |
| | | } |
| | | return computeDiscountDtos; |
| | | } |
| | | c.setTime(feeDetailDto.getStartTime()); |
| | | double mon = Double.parseDouble(feeDetailDto.getCycles()); |
| | | c.add(Calendar.MONTH, (int) mon); |
| | | //获取缴费结束时间 |
| | | Date finishTime = c.getTime(); |
| | | for (PayFeeConfigDiscountDto tmpPayFeeConfigDiscountDto : payFeeConfigDiscountDtos) { |
| | | doCompute(tmpPayFeeConfigDiscountDto, Double.parseDouble(feeDetailDto.getCycles()), computeDiscountDtos, feeDetailDto.getFeeId()); |
| | | //获取缴费最大截止时间 |
| | | Date payMaxEndTime = tmpPayFeeConfigDiscountDto.getPayMaxEndTime(); |
| | | if (payMaxEndTime == null) { |
| | | doCompute(tmpPayFeeConfigDiscountDto, Double.parseDouble(feeDetailDto.getCycles()), computeDiscountDtos, feeDetailDto.getFeeId()); |
| | | } else if (payMaxEndTime.getTime() >= finishTime.getTime()) { |
| | | doCompute(tmpPayFeeConfigDiscountDto, Double.parseDouble(feeDetailDto.getCycles()), computeDiscountDtos, feeDetailDto.getFeeId()); |
| | | } else { |
| | | continue; |
| | | } |
| | | } |
| | | if (!StringUtil.isEmpty(feeDetailDto.getPayerObjType()) && feeDetailDto.getPayerObjType().equals("3333")) { |
| | | computeApplyRoomDiscount(feeDetailDto, simpleDateFormat, c, computeDiscountDtos); |
| | | //取出开关映射的值 |
| | | String value = MappingCache.getValue(DOMAIN_COMMON, DISCOUNT_MODE); |
| | | List<ComputeDiscountDto> computeDiscountDtoList = new ArrayList<>(); |
| | | for (ComputeDiscountDto computeDiscountDto : computeDiscountDtos) { |
| | | computeDiscountDto.setValue(value); |
| | | computeDiscountDtoList.add(computeDiscountDto); |
| | | } |
| | | return computeDiscountDtoList; |
| | | } |
| | | |
| | | private void computeApplyRoomDiscount(@RequestBody FeeDetailDto feeDetailDto, SimpleDateFormat simpleDateFormat, Calendar c, List<ComputeDiscountDto> computeDiscountDtos) { |
| | | if (!StringUtil.isEmpty(feeDetailDto.getPayerObjType()) && FeeDto.PAYER_OBJ_TYPE_ROOM.equals(feeDetailDto.getPayerObjType())) { |
| | | //根据房屋ID,去折扣申请表查询是否有折扣 |
| | | ApplyRoomDiscountDto applyRoomDiscountDto = new ApplyRoomDiscountDto(); |
| | | //审核已通过 |
| | |
| | | //开始时间 |
| | | applyRoomDiscountDto.setStartTime(simpleDateFormat.format(feeDetailDto.getStartTime())); |
| | | //结束时间 |
| | | Calendar c = Calendar.getInstance(); |
| | | c.setTime(feeDetailDto.getStartTime()); |
| | | double month = Double.parseDouble(feeDetailDto.getCycles()); |
| | | c.add(Calendar.MONTH, (int) month); |
| | | c.add(Calendar.DAY_OF_MONTH, -5);//这里根据设置时间荣誉5天 |
| | | Date endTime = c.getTime(); |
| | | applyRoomDiscountDto.setEndTime(simpleDateFormat.format(endTime)); |
| | | //查询折扣申请表 |
| | | List<ApplyRoomDiscountDto> applyRoomDiscountDtos = applyRoomDiscountInnerServiceSMOImpl.queryApplyRoomDiscounts(applyRoomDiscountDto); |
| | | //判断查询的折扣申请表是否有数据 |
| | | if (applyRoomDiscountDtos.size() > 0) { |
| | | if (applyRoomDiscountDtos != null && applyRoomDiscountDtos.size() > 0) { |
| | | //获取优惠id |
| | | String discountId = applyRoomDiscountDtos.get(0).getDiscountId(); |
| | | PayFeeConfigDiscountDto payFeeConfigDiscount = new PayFeeConfigDiscountDto(); |
| | |
| | | doCompute(payFeeConfigDiscount, Double.parseDouble(feeDetailDto.getCycles()), computeDiscountDtos, feeDetailDto.getFeeId()); |
| | | } |
| | | } |
| | | //取出开关映射的值 |
| | | String value = MappingCache.getValue(DOMAIN_COMMON, DISCOUNT_MODE); |
| | | List<ComputeDiscountDto> computeDiscountDtoList = new ArrayList<>(); |
| | | for (ComputeDiscountDto computeDiscountDto : computeDiscountDtos) { |
| | | computeDiscountDto.setValue(value); |
| | | computeDiscountDtoList.add(computeDiscountDto); |
| | | } |
| | | return computeDiscountDtoList; |
| | | } |
| | | |
| | | private void doCompute(PayFeeConfigDiscountDto tmpPayFeeConfigDiscountDto, double cycles, List<ComputeDiscountDto> computeDiscountDtos, String feeId) { |