| | |
| | | import com.java110.report.dao.IReportCommunityServiceDao; |
| | | import com.java110.report.dao.IReportFeeMonthStatisticsServiceDao; |
| | | import com.java110.report.dao.IReportFeeServiceDao; |
| | | import com.java110.utils.util.*; |
| | | import com.java110.utils.util.Assert; |
| | | import com.java110.utils.util.BeanConvertUtil; |
| | | import com.java110.utils.util.DateUtil; |
| | | import com.java110.utils.util.ListUtil; |
| | | import com.java110.utils.util.StringUtil; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @ClassName GeneratorFeeMonthStatisticsInnerServiceSMOImpl |
| | |
| | | && receivedAmount == 0) { |
| | | return; |
| | | } |
| | | double receivableAmount = getReceivableAmountByCar(tmpReportFeeDto, null, tmpReportCarDto); //应收 |
| | | |
| | | dealBeforeUploadCarFee(tmpReportFeeDto, tmpReportCarDto); |
| | | double oweAmount = getOweAmount(tmpReportFeeDto, receivableAmount, receivedAmount); //欠费 |
| | | FeeDto feeDto = BeanConvertUtil.covertBean(tmpReportFeeDto, FeeDto.class); |
| | | OwnerCarDto ownerCarDto = BeanConvertUtil.covertBean(tmpReportCarDto, OwnerCarDto.class); |
| | | Map<String, Object> targetEndDateAndOweMonth = computeFeeSMOImpl.getTargetEndDateAndOweMonth(feeDto, ownerCarDto); |
| | | |
| | | Date targetEndDate = (Date) targetEndDateAndOweMonth.get("targetEndDate"); |
| | | tmpReportFeeDto.setDeadlineTime(targetEndDate); |
| | | double oweAmount = getOweAmountByCar(tmpReportFeeDto, null, tmpReportCarDto); //应收 |
| | | |
| | | dealBeforeUploadCarFee(tmpReportFeeDto, tmpReportCarDto); |
| | | double receivableAmount = getReceivableAmount(tmpReportFeeDto,receivedAmount); //欠费 |
| | | |
| | | |
| | | ReportFeeMonthStatisticsPo reportFeeMonthStatisticsPo = new ReportFeeMonthStatisticsPo(); |
| | | reportFeeMonthStatisticsPo.setDeadlineTime(DateUtil.getFormatTimeString(targetEndDate, DateUtil.DATE_FORMATE_STRING_A)); |
| | |
| | | reportFeeMonthStatisticsPo.setObjId(tmpReportCarDto.getCarId()); |
| | | reportFeeMonthStatisticsPo.setObjType(FeeDto.PAYER_OBJ_TYPE_CAR); |
| | | reportFeeMonthStatisticsPo.setFeeName(tmpReportFeeDto.getFeeName()); |
| | | reportFeeMonthStatisticsPo.setObjName(tmpReportCarDto.getCarNum() + "(" + tmpReportCarDto.getAreaNum() + "停车场" + tmpReportCarDto.getNum() + "车位"); |
| | | reportFeeMonthStatisticsPo.setObjName(tmpReportCarDto.getCarNum() + "(" + tmpReportCarDto.getAreaNum() + "停车场" + tmpReportCarDto.getNum() + "车位)"); |
| | | reportFeeMonthStatisticsPo.setUpdateTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); |
| | | reportFeeMonthStatisticsServiceDaoImpl.saveReportFeeMonthStatisticsInfo(BeanConvertUtil.beanCovertMap(reportFeeMonthStatisticsPo)); |
| | | } |
| | |
| | | reportFeeMonthStatisticsServiceDaoImpl.getReportFeeMonthStatisticsInfo(BeanConvertUtil.beanCovertMap(reportFeeMonthStatisticsDto)), |
| | | ReportFeeMonthStatisticsDto.class); |
| | | //上个月有数据 不处理 |
| | | if (statistics != null && statistics.size() > 1) { |
| | | if (statistics != null && statistics.size() > 0) { |
| | | return; |
| | | } |
| | | |
| | | if (tmpReportFeeDto.getDeadlineTime().getTime() < curMonthDate.getTime().getTime()) { |
| | | curMonthDate.setTime(tmpReportFeeDto.getDeadlineTime()); |
| | | } |
| | | |
| | | double receivableAmount = 0.0; |
| | | if (FeeDto.FEE_FLAG_ONCE.equals(tmpReportFeeDto.getFeeFlag())) { |
| | | receivableAmount = tmpReportFeeDto.getFeePrice(); |
| | |
| | | reportFeeMonthStatisticsPo.setObjId(tmpReportCarDto.getCarId()); |
| | | reportFeeMonthStatisticsPo.setObjType(FeeDto.PAYER_OBJ_TYPE_CAR); |
| | | reportFeeMonthStatisticsPo.setFeeName(tmpReportFeeDto.getFeeName()); |
| | | reportFeeMonthStatisticsPo.setObjName(tmpReportCarDto.getCarNum() + "(" + tmpReportCarDto.getAreaNum() + "停车场" + tmpReportCarDto.getNum() + "车位"); |
| | | reportFeeMonthStatisticsPo.setObjName(tmpReportCarDto.getCarNum() + "(" + tmpReportCarDto.getAreaNum() + "停车场" + tmpReportCarDto.getNum() + "车位)"); |
| | | reportFeeMonthStatisticsPo.setUpdateTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); |
| | | reportFeeMonthStatisticsServiceDaoImpl.saveReportFeeMonthStatisticsInfo(BeanConvertUtil.beanCovertMap(reportFeeMonthStatisticsPo)); |
| | | |
| | |
| | | && receivedAmount == 0) { |
| | | return; |
| | | } |
| | | double receivableAmount = getReceivableAmount(tmpReportFeeDto, reportRoomDto, null); //应收 |
| | | |
| | | //解决上线时 之前欠费没有刷入导致费用金额对不上问题处理 |
| | | dealBeforeUploadRoomFee(reportRoomDto, tmpReportFeeDto, receivableAmount); |
| | | |
| | | double oweAmount = getOweAmount(tmpReportFeeDto, receivableAmount, receivedAmount); //欠费 |
| | | FeeDto feeDto = BeanConvertUtil.covertBean(tmpReportFeeDto, FeeDto.class); |
| | | Map<String, Object> targetEndDateAndOweMonth = computeFeeSMOImpl.getTargetEndDateAndOweMonth(feeDto, null); |
| | | |
| | | Date targetEndDate = (Date) targetEndDateAndOweMonth.get("targetEndDate"); |
| | | tmpReportFeeDto.setDeadlineTime(targetEndDate); |
| | | double oweAmount = getOweAmount(tmpReportFeeDto, reportRoomDto, null); //欠费 |
| | | |
| | | double receivableAmount = getReceivableAmount(tmpReportFeeDto, receivedAmount); //应收 |
| | | //解决上线时 之前欠费没有刷入导致费用金额对不上问题处理 |
| | | dealBeforeUploadRoomFee(reportRoomDto, tmpReportFeeDto, receivableAmount); |
| | | |
| | | |
| | | |
| | | ReportFeeMonthStatisticsPo reportFeeMonthStatisticsPo = new ReportFeeMonthStatisticsPo(); |
| | | reportFeeMonthStatisticsPo.setDeadlineTime(DateUtil.getFormatTimeString(targetEndDate, DateUtil.DATE_FORMATE_STRING_A)); |
| | |
| | | return; |
| | | } |
| | | |
| | | if (tmpReportFeeDto.getDeadlineTime().getTime() < curMonthDate.getTime().getTime()) { |
| | | curMonthDate.setTime(tmpReportFeeDto.getDeadlineTime()); |
| | | } |
| | | |
| | | ReportFeeMonthStatisticsDto reportFeeMonthStatisticsDto = new ReportFeeMonthStatisticsDto(); |
| | | reportFeeMonthStatisticsDto.setCommunityId(reportRoomDto.getCommunityId()); |
| | | reportFeeMonthStatisticsDto.setConfigId(tmpReportFeeDto.getConfigId()); |
| | |
| | | reportFeeMonthStatisticsServiceDaoImpl.getReportFeeMonthStatisticsInfo(BeanConvertUtil.beanCovertMap(reportFeeMonthStatisticsDto)), |
| | | ReportFeeMonthStatisticsDto.class); |
| | | //上个月有数据 不处理 |
| | | if (statistics != null && statistics.size() > 1) { |
| | | if (statistics != null && statistics.size() > 0) { |
| | | return; |
| | | } |
| | | |
| | |
| | | * 当月欠费 |
| | | * |
| | | * @param tmpReportFeeDto |
| | | * @param receivableAmount |
| | | * @param receivedAmount |
| | | * @return |
| | | */ |
| | | private double getOweAmount(ReportFeeDto tmpReportFeeDto, double receivableAmount, double receivedAmount) { |
| | | private double getReceivableAmount(ReportFeeDto tmpReportFeeDto, double receivedAmount) { |
| | | |
| | | |
| | | return receivableAmount; |
| | | //一次性费用 除以月份 平均 |
| | | if (FeeDto.FEE_FLAG_ONCE.equals(tmpReportFeeDto.getFeeFlag())) { |
| | | return computeOnceFee(tmpReportFeeDto); |
| | | } |
| | | return tmpReportFeeDto.getFeePrice(); |
| | | |
| | | } |
| | | |
| | |
| | | * @param tmpReportFeeDto |
| | | * @return |
| | | */ |
| | | private double getReceivableAmountByCar(ReportFeeDto tmpReportFeeDto, ReportRoomDto reportRoomDto, ReportCarDto reportCarDto) { |
| | | private double getOweAmountByCar(ReportFeeDto tmpReportFeeDto, ReportRoomDto reportRoomDto, ReportCarDto reportCarDto) { |
| | | |
| | | double feePrice = computeFeeSMOImpl.getReportFeePrice(tmpReportFeeDto, reportRoomDto, reportCarDto); |
| | | tmpReportFeeDto.setFeePrice(feePrice); |
| | |
| | | } |
| | | |
| | | if (FeeDto.FEE_FLAG_ONCE.equals(tmpReportFeeDto.getFeeFlag())) { |
| | | return feePrice; |
| | | return computeOnceFee(tmpReportFeeDto); |
| | | } |
| | | OwnerCarDto ownerCarDto = new OwnerCarDto(); |
| | | ownerCarDto.setCommunityId(tmpReportFeeDto.getCommunityId()); |
| | |
| | | return 0.0; |
| | | } |
| | | |
| | | private double computeOnceFee(ReportFeeDto tmpReportFeeDto) { |
| | | Date nowTime = DateUtil.getCurrentDate(); |
| | | if (tmpReportFeeDto.getEndTime().getTime() > nowTime.getTime() |
| | | || tmpReportFeeDto.getDeadlineTime().getTime() < nowTime.getTime()) { |
| | | return 0.0; |
| | | } |
| | | double month = computeFeeSMOImpl.dayCompare(tmpReportFeeDto.getDeadlineTime(), tmpReportFeeDto.getEndTime()); |
| | | month = Math.ceil(month); |
| | | |
| | | BigDecimal feePriceDec = new BigDecimal(tmpReportFeeDto.getFeePrice()); |
| | | double money = feePriceDec.divide(new BigDecimal(month)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | return money; |
| | | } |
| | | |
| | | /** |
| | | * 获取当月应收 |
| | | * |
| | | * @param tmpReportFeeDto |
| | | * @return |
| | | */ |
| | | private double getReceivableAmount(ReportFeeDto tmpReportFeeDto, ReportRoomDto reportRoomDto, ReportCarDto reportCarDto) { |
| | | private double getOweAmount(ReportFeeDto tmpReportFeeDto, ReportRoomDto reportRoomDto, ReportCarDto reportCarDto) { |
| | | |
| | | double feePrice = computeFeeSMOImpl.getReportFeePrice(tmpReportFeeDto, reportRoomDto, reportCarDto); |
| | | tmpReportFeeDto.setFeePrice(feePrice); |
| | |
| | | } |
| | | |
| | | if (FeeDto.FEE_FLAG_ONCE.equals(tmpReportFeeDto.getFeeFlag())) { |
| | | return feePrice; |
| | | return computeOnceFee(tmpReportFeeDto); |
| | | } |
| | | |
| | | //1.0 费用到期时间和费用结束时间 都不在当月 |