| | |
| | | import com.java110.core.factory.GenerateCodeFactory; |
| | | import com.java110.core.log.LoggerFactory; |
| | | import com.java110.core.smo.IComputeFeeSMO; |
| | | import com.java110.dto.RoomDto; |
| | | import com.java110.dto.room.RoomDto; |
| | | import com.java110.dto.fee.FeeConfigDto; |
| | | import com.java110.dto.fee.FeeDto; |
| | | import com.java110.dto.owner.OwnerCarDto; |
| | |
| | | import com.java110.dto.report.ReportFeeDetailDto; |
| | | import com.java110.dto.report.ReportFeeDto; |
| | | import com.java110.dto.report.ReportRoomDto; |
| | | import com.java110.dto.reportFeeMonthStatistics.ReportFeeMonthStatisticsDto; |
| | | import com.java110.dto.reportFee.ReportFeeMonthStatisticsDto; |
| | | import com.java110.intf.community.IFloorInnerServiceSMO; |
| | | import com.java110.intf.community.IRoomInnerServiceSMO; |
| | | import com.java110.intf.community.IUnitInnerServiceSMO; |
| | | import com.java110.intf.report.IGeneratorFeeMonthStatisticsInnerServiceSMO; |
| | | import com.java110.intf.report.IReportFeeMonthStatisticsInnerServiceSMO; |
| | | import com.java110.intf.user.IOwnerCarInnerServiceSMO; |
| | | import com.java110.po.reportFeeMonthStatistics.ReportFeeMonthStatisticsPo; |
| | | import com.java110.po.reportFee.ReportFeeMonthStatisticsPo; |
| | | import com.java110.report.dao.IReportCommunityServiceDao; |
| | | import com.java110.report.dao.IReportFeeMonthStatisticsServiceDao; |
| | | import com.java110.report.dao.IReportFeeServiceDao; |
| | | import com.java110.utils.constant.FeeConfigConstant; |
| | | import com.java110.utils.util.*; |
| | | import org.slf4j.Logger; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | private IReportFeeMonthStatisticsServiceDao reportFeeMonthStatisticsServiceDaoImpl; |
| | | |
| | | @Autowired |
| | | private IReportFeeMonthStatisticsInnerServiceSMO reportFeeMonthStatisticsInnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IReportCommunityServiceDao reportCommunityServiceDaoImpl; |
| | | |
| | | @Autowired |
| | |
| | | @Autowired |
| | | private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IRoomInnerServiceSMO roomInnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IUnitInnerServiceSMO unitInnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IFloorInnerServiceSMO floorInnerServiceSMOImpl; |
| | | |
| | | @Override |
| | | public int generatorData(@RequestBody ReportFeeMonthStatisticsPo reportFeeMonthStatisticsPo) { |
| | | |
| | |
| | | } |
| | | |
| | | @Async |
| | | private void doGeneratorData(ReportFeeMonthStatisticsPo reportFeeMonthStatisticsPo) { |
| | | public void doGeneratorData(ReportFeeMonthStatisticsPo reportFeeMonthStatisticsPo) { |
| | | String communityId = reportFeeMonthStatisticsPo.getCommunityId(); |
| | | |
| | | Assert.hasLength(communityId, "未包含小区信息"); |
| | |
| | | |
| | | ReportCarDto reportCarDto = new ReportCarDto(); |
| | | reportCarDto.setCommunityId(reportFeeMonthStatisticsPo.getCommunityId()); |
| | | reportCarDto.setLeaseTypes(new String[]{OwnerCarDto.LEASE_TYPE_INNER, |
| | | OwnerCarDto.LEASE_TYPE_STORE, |
| | | OwnerCarDto.LEASE_TYPE_NO_MONEY, |
| | | OwnerCarDto.LEASE_TYPE_RESERVE}); |
| | | int count = reportCommunityServiceDaoImpl.getCarCount(reportCarDto); |
| | | |
| | | |
| | |
| | | reportFeeMonthStatisticsPo.setCurReceivedAmount(getReceivedAmount(tmpReportFeeDto, 1) + ""); |
| | | reportFeeMonthStatisticsPo.setHisOweReceivedAmount(getReceivedAmount(tmpReportFeeDto, 2) + ""); |
| | | reportFeeMonthStatisticsPo.setPreReceivedAmount(getReceivedAmount(tmpReportFeeDto, 3) + ""); |
| | | if (!StringUtil.isEmpty(statistic.getObjType()) && statistic.getObjType().equals("3333")) { //房屋 |
| | | reportFeeMonthStatisticsPo.setObjNameNum(statistic.getFloorNum() + "-" + statistic.getUnitNum() + "-" + statistic.getRoomNum()); |
| | | } |
| | | reportFeeMonthStatisticsServiceDaoImpl.updateReportFeeMonthStatisticsInfo(BeanConvertUtil.beanCovertMap(reportFeeMonthStatisticsPo)); |
| | | } else { |
| | | reportFeeMonthStatisticsPo.setOweAmount(oweAmount + ""); |
| | |
| | | reportFeeMonthStatisticsPo.setObjType(FeeDto.PAYER_OBJ_TYPE_CAR); |
| | | reportFeeMonthStatisticsPo.setFeeName(tmpReportFeeDto.getFeeName()); |
| | | reportFeeMonthStatisticsPo.setObjName(tmpReportCarDto.getCarNum() + "(" + tmpReportCarDto.getAreaNum() + "停车场" + tmpReportCarDto.getNum() + "车位)"); |
| | | reportFeeMonthStatisticsPo.setObjNameNum(tmpReportCarDto.getAreaNum() + "-" + tmpReportCarDto.getNum() + "-" + tmpReportCarDto.getCarNum()); |
| | | reportFeeMonthStatisticsPo.setUpdateTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); |
| | | reportFeeMonthStatisticsPo.setHisOweAmount(getHisOweAmount(tmpReportFeeDto) + ""); |
| | | reportFeeMonthStatisticsPo.setCurReceivableAmount(getCurFeeReceivableAmount(tmpReportFeeDto) + ""); |
| | |
| | | |
| | | Calendar calender = Calendar.getInstance(); |
| | | calender.setTime(endTime); |
| | | int year = calender.get(Calendar.YEAR); |
| | | int month = calender.get(Calendar.MONTH); |
| | | |
| | | ReportFeeMonthStatisticsPo tmpReportFeeMonthStatisticsPo = new ReportFeeMonthStatisticsPo(); |
| | | tmpReportFeeMonthStatisticsPo.setFeeId(tmpReportFeeDto.getFeeId()); |
| | | tmpReportFeeMonthStatisticsPo.setCurMaxTime(DateUtil.getFormatTimeString(endTime, DateUtil.DATE_FORMATE_STRING_A)); |
| | | tmpReportFeeMonthStatisticsPo.setOweAmount("0"); |
| | | reportFeeMonthStatisticsServiceDaoImpl.updateReportFeeMonthStatisticsOwe(BeanConvertUtil.beanCovertMap(tmpReportFeeMonthStatisticsPo)); |
| | | } |
| | | |
| | | /** |
| | | * 解决上线前 欠费数据 |
| | | * |
| | | * @param tmpReportCarDto |
| | | * @param tmpReportFeeDto |
| | | */ |
| | | private void dealBeforeUploadCarFee(ReportFeeDto tmpReportFeeDto, ReportCarDto tmpReportCarDto) { |
| | | |
| | | |
| | | Calendar preMonthDate = Calendar.getInstance(); |
| | | preMonthDate.set(Calendar.DAY_OF_MONTH, 1); |
| | | preMonthDate.add(Calendar.DAY_OF_MONTH, -1); |
| | | |
| | | //当月一日 |
| | | Calendar curMonthDate = Calendar.getInstance(); |
| | | curMonthDate.set(Calendar.DAY_OF_MONTH, 1); |
| | | curMonthDate.set(Calendar.HOUR_OF_DAY, 0); |
| | | curMonthDate.set(Calendar.MINUTE, 0); |
| | | curMonthDate.set(Calendar.SECOND, 0); |
| | | if (tmpReportFeeDto.getEndTime().getTime() > curMonthDate.getTime().getTime()) { //说明没有欠费 |
| | | return; |
| | | } |
| | | |
| | | ReportFeeMonthStatisticsDto reportFeeMonthStatisticsDto = new ReportFeeMonthStatisticsDto(); |
| | | reportFeeMonthStatisticsDto.setCommunityId(tmpReportCarDto.getCommunityId()); |
| | | reportFeeMonthStatisticsDto.setConfigId(tmpReportFeeDto.getConfigId()); |
| | | reportFeeMonthStatisticsDto.setObjId(tmpReportFeeDto.getPayerObjId()); |
| | | reportFeeMonthStatisticsDto.setFeeId(tmpReportFeeDto.getFeeId()); |
| | | reportFeeMonthStatisticsDto.setObjType(tmpReportFeeDto.getPayerObjType()); |
| | | reportFeeMonthStatisticsDto.setFeeYear(preMonthDate.get(Calendar.YEAR) + ""); |
| | | reportFeeMonthStatisticsDto.setFeeMonth((preMonthDate.get(Calendar.MONTH) + 1) + ""); |
| | | List<ReportFeeMonthStatisticsDto> statistics = BeanConvertUtil.covertBeanList( |
| | | reportFeeMonthStatisticsServiceDaoImpl.getReportFeeMonthStatisticsInfo(BeanConvertUtil.beanCovertMap(reportFeeMonthStatisticsDto)), |
| | | ReportFeeMonthStatisticsDto.class); |
| | | //上个月有数据 不处理 |
| | | 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(); |
| | | } else { |
| | | double month = computeFeeSMOImpl.dayCompare(tmpReportFeeDto.getEndTime(), curMonthDate.getTime()); |
| | | BigDecimal curDegree = new BigDecimal(month); |
| | | receivableAmount = curDegree.multiply(new BigDecimal(tmpReportFeeDto.getFeePrice())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | } |
| | | |
| | | |
| | | ReportFeeMonthStatisticsPo reportFeeMonthStatisticsPo = new ReportFeeMonthStatisticsPo(); |
| | | reportFeeMonthStatisticsPo.setDeadlineTime(DateUtil.getFormatTimeString(curMonthDate.getTime(), DateUtil.DATE_FORMATE_STRING_A)); |
| | | |
| | | reportFeeMonthStatisticsPo.setOweAmount(receivableAmount + ""); |
| | | reportFeeMonthStatisticsPo.setReceivedAmount("0"); |
| | | reportFeeMonthStatisticsPo.setReceivableAmount(receivableAmount + ""); |
| | | reportFeeMonthStatisticsPo.setStatisticsId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_statisticsId)); |
| | | reportFeeMonthStatisticsPo.setCommunityId(tmpReportFeeDto.getCommunityId()); |
| | | reportFeeMonthStatisticsPo.setConfigId(tmpReportFeeDto.getConfigId()); |
| | | reportFeeMonthStatisticsPo.setFeeCreateTime(DateUtil.getFormatTimeString(tmpReportFeeDto.getEndTime(), DateUtil.DATE_FORMATE_STRING_A)); |
| | | reportFeeMonthStatisticsPo.setFeeId(tmpReportFeeDto.getFeeId()); |
| | | reportFeeMonthStatisticsPo.setFeeMonth((preMonthDate.get(Calendar.MONTH) + 1) + ""); |
| | | reportFeeMonthStatisticsPo.setFeeYear(preMonthDate.get(Calendar.YEAR) + ""); |
| | | reportFeeMonthStatisticsPo.setCurMaxTime(DateUtil.getFormatTimeString(DateUtil.getFirstDate(), 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.setUpdateTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); |
| | | reportFeeMonthStatisticsServiceDaoImpl.saveReportFeeMonthStatisticsInfo(BeanConvertUtil.beanCovertMap(reportFeeMonthStatisticsPo)); |
| | | |
| | | |
| | | } |
| | | |
| | | /** |
| | |
| | | reportFeeMonthStatisticsDto.setObjId(tmpReportFeeDto.getPayerObjId()); |
| | | reportFeeMonthStatisticsDto.setFeeId(tmpReportFeeDto.getFeeId()); //这里不能注释,因为一个费用多次创建时会存在覆盖 存在bug问题 |
| | | reportFeeMonthStatisticsDto.setObjType(tmpReportFeeDto.getPayerObjType()); |
| | | |
| | | reportFeeMonthStatisticsDto.setFeeYear(DateUtil.getYear() + ""); |
| | | reportFeeMonthStatisticsDto.setFeeMonth(DateUtil.getMonth() + ""); |
| | | List<ReportFeeMonthStatisticsDto> statistics = BeanConvertUtil.covertBeanList( |
| | | reportFeeMonthStatisticsServiceDaoImpl.getReportFeeMonthStatisticsInfo(BeanConvertUtil.beanCovertMap(reportFeeMonthStatisticsDto)), |
| | | ReportFeeMonthStatisticsDto.class); |
| | | //List<ReportFeeMonthStatisticsDto> statistics = reportFeeMonthStatisticsInnerServiceSMOImpl.queryReportFeeMonthStatisticss(reportFeeMonthStatisticsDto); |
| | | |
| | | |
| | | //double receivedAmount = getReceivedAmount(tmpReportFeeDto); //实收 |
| | |
| | | Date targetEndDate = (Date) targetEndDateAndOweMonth.get("targetEndDate"); |
| | | tmpReportFeeDto.setDeadlineTime(targetEndDate); |
| | | double oweAmount = getOweAmount(tmpReportFeeDto, reportRoomDto, null); //欠费 |
| | | |
| | | //double receivableAmount = getReceivableAmount(tmpReportFeeDto, receivedAmount); //应收 |
| | | //解决上线时 之前欠费没有刷入导致费用金额对不上问题处理 |
| | | //dealBeforeUploadRoomFee(reportRoomDto, tmpReportFeeDto); |
| | | |
| | | double feePrice = computeFeeSMOImpl.getReportFeePrice(tmpReportFeeDto, reportRoomDto, null); |
| | | tmpReportFeeDto.setFeePrice(feePrice); |
| | | |
| | |
| | | if (!ListUtil.isNull(statistics)) { |
| | | ReportFeeMonthStatisticsDto statistic = statistics.get(0); |
| | | reportFeeMonthStatisticsPo.setStatisticsId(statistic.getStatisticsId()); |
| | | //reportFeeMonthStatisticsPo.setReceivableAmount(receivableAmount + ""); |
| | | //reportFeeMonthStatisticsPo.setReceivedAmount("0"); |
| | | |
| | | reportFeeMonthStatisticsPo.setOweAmount(oweAmount + ""); |
| | | reportFeeMonthStatisticsPo.setFeeId(tmpReportFeeDto.getFeeId()); |
| | | reportFeeMonthStatisticsPo.setUpdateTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); |
| | | reportFeeMonthStatisticsPo.setFeeName(StringUtil.isEmpty(tmpReportFeeDto.getImportFeeName()) ? tmpReportFeeDto.getFeeName() : tmpReportFeeDto.getImportFeeName()); |
| | | // 缴费了就得刷 |
| | | reportFeeMonthStatisticsPo.setHisOweAmount(getHisOweAmount(tmpReportFeeDto) + ""); |
| | | reportFeeMonthStatisticsPo.setHisOweAmount(MoneyUtil.computePriceScale(getHisOweAmount(tmpReportFeeDto), |
| | | tmpReportFeeDto.getScale(), |
| | | Integer.parseInt(tmpReportFeeDto.getDecimalPlace())) + ""); |
| | | //有可能是月内创建的费用 比如电费水费 |
| | | reportFeeMonthStatisticsPo.setCurReceivableAmount(getCurFeeReceivableAmount(tmpReportFeeDto) + ""); |
| | | reportFeeMonthStatisticsPo.setCurReceivedAmount(getReceivedAmount(tmpReportFeeDto, 1) + ""); |
| | | reportFeeMonthStatisticsPo.setHisOweReceivedAmount(getReceivedAmount(tmpReportFeeDto, 2) + ""); |
| | | reportFeeMonthStatisticsPo.setPreReceivedAmount(getReceivedAmount(tmpReportFeeDto, 3) + ""); |
| | | reportFeeMonthStatisticsPo.setCurReceivableAmount( |
| | | MoneyUtil.computePriceScale(getCurFeeReceivableAmount(tmpReportFeeDto), |
| | | tmpReportFeeDto.getScale(), |
| | | Integer.parseInt(tmpReportFeeDto.getDecimalPlace())) + ""); |
| | | reportFeeMonthStatisticsPo.setCurReceivedAmount( |
| | | MoneyUtil.computePriceScale(getReceivedAmount(tmpReportFeeDto, 1), |
| | | tmpReportFeeDto.getScale(), |
| | | Integer.parseInt(tmpReportFeeDto.getDecimalPlace())) + ""); |
| | | reportFeeMonthStatisticsPo.setHisOweReceivedAmount( |
| | | MoneyUtil.computePriceScale(getReceivedAmount(tmpReportFeeDto, 2), |
| | | tmpReportFeeDto.getScale(), |
| | | Integer.parseInt(tmpReportFeeDto.getDecimalPlace())) + ""); |
| | | reportFeeMonthStatisticsPo.setPreReceivedAmount(MoneyUtil.computePriceScale(getReceivedAmount(tmpReportFeeDto, 3), |
| | | tmpReportFeeDto.getScale(), |
| | | Integer.parseInt(tmpReportFeeDto.getDecimalPlace())) + ""); |
| | | reportFeeMonthStatisticsServiceDaoImpl.updateReportFeeMonthStatisticsInfo(BeanConvertUtil.beanCovertMap(reportFeeMonthStatisticsPo)); |
| | | } else { |
| | | |
| | | reportFeeMonthStatisticsPo.setOweAmount(oweAmount + ""); |
| | | reportFeeMonthStatisticsPo.setReceivedAmount("0"); |
| | | reportFeeMonthStatisticsPo.setReceivableAmount("0"); |
| | |
| | | reportFeeMonthStatisticsPo.setFeeName(StringUtil.isEmpty(tmpReportFeeDto.getImportFeeName()) ? tmpReportFeeDto.getFeeName() : tmpReportFeeDto.getImportFeeName()); |
| | | if (RoomDto.ROOM_TYPE_ROOM.equals(reportRoomDto.getRoomType())) { |
| | | reportFeeMonthStatisticsPo.setObjName(reportRoomDto.getFloorNum() + "栋" + reportRoomDto.getUnitNum() + "单元" + reportRoomDto.getRoomNum() + "室"); |
| | | reportFeeMonthStatisticsPo.setObjNameNum(reportRoomDto.getFloorNum() + "-" + reportRoomDto.getUnitNum() + "-" + reportRoomDto.getRoomNum()); |
| | | } else { |
| | | reportFeeMonthStatisticsPo.setObjName(reportRoomDto.getFloorNum() + "栋" + reportRoomDto.getRoomNum() + "室"); |
| | | reportFeeMonthStatisticsPo.setObjNameNum(reportRoomDto.getFloorNum() + "-" + reportRoomDto.getRoomNum()); |
| | | } |
| | | //计算历史欠费 |
| | | reportFeeMonthStatisticsPo.setHisOweAmount(getHisOweAmount(tmpReportFeeDto) + ""); |
| | |
| | | reportFeeMonthStatisticsPo.setHisOweReceivedAmount(getReceivedAmount(tmpReportFeeDto, 2) + ""); |
| | | reportFeeMonthStatisticsPo.setPreReceivedAmount(getReceivedAmount(tmpReportFeeDto, 3) + ""); |
| | | reportFeeMonthStatisticsPo.setUpdateTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); |
| | | reportFeeMonthStatisticsServiceDaoImpl.saveReportFeeMonthStatisticsInfo(BeanConvertUtil.beanCovertMap(reportFeeMonthStatisticsPo)); |
| | | //处理水电费,水电费根据开始时间要在相应月补充数据 |
| | | dealMeteWater(reportFeeMonthStatisticsPo, tmpReportFeeDto); |
| | | //如果是 水费 电费 煤气费 |
| | | if (!FeeConfigDto.FEE_TYPE_CD_METER.equals(tmpReportFeeDto.getFeeTypeCd()) |
| | | && !FeeConfigDto.FEE_TYPE_CD_WATER.equals(tmpReportFeeDto.getFeeTypeCd()) |
| | | && !FeeConfigDto.FEE_TYPE_CD_GAS.equals(tmpReportFeeDto.getFeeTypeCd()) |
| | | ) { |
| | | reportFeeMonthStatisticsServiceDaoImpl.saveReportFeeMonthStatisticsInfo(BeanConvertUtil.beanCovertMap(reportFeeMonthStatisticsPo)); |
| | | } else { |
| | | //处理水电费,水电费根据开始时间要在相应月补充数据 |
| | | dealMeteWater(reportFeeMonthStatisticsPo, tmpReportFeeDto); |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | //根据费用开始时间 计算月份 |
| | | Date endTime = tmpReportFeeDto.getEndTime(); |
| | | //去除 0 因为表里的月份是没有零 |
| | | String curMonth = Integer.parseInt(DateUtil.getFormatTimeString(endTime, "MM"))+""; |
| | | String curMonth = Integer.parseInt(DateUtil.getFormatTimeString(endTime, "MM")) + ""; |
| | | String curYear = DateUtil.getFormatTimeString(endTime, "YYYY"); |
| | | //查询是否存在 数据 |
| | | ReportFeeMonthStatisticsDto reportFeeMonthStatisticsDto = new ReportFeeMonthStatisticsDto(); |
| | | reportFeeMonthStatisticsDto.setCommunityId(tmpReportFeeDto.getCommunityId()); |
| | | reportFeeMonthStatisticsDto.setConfigId(tmpReportFeeDto.getConfigId()); |
| | | reportFeeMonthStatisticsDto.setObjId(tmpReportFeeDto.getPayerObjId()); |
| | | //reportFeeMonthStatisticsDto.setFeeId(tmpReportFeeDto.getFeeId()); |
| | | reportFeeMonthStatisticsDto.setFeeId(tmpReportFeeDto.getFeeId()); |
| | | reportFeeMonthStatisticsDto.setObjType(tmpReportFeeDto.getPayerObjType()); |
| | | reportFeeMonthStatisticsDto.setFeeYear(curYear); |
| | | reportFeeMonthStatisticsDto.setFeeMonth(curMonth); |
| | |
| | | if (allDays == 0) { // 防止除数为0 |
| | | return 0; |
| | | } |
| | | BigDecimal moneyPreDay = feePriceDec.divide(new BigDecimal(allDays), 2, BigDecimal.ROUND_HALF_EVEN); |
| | | BigDecimal moneyPreDay = feePriceDec.divide(new BigDecimal(allDays), FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_EVEN); |
| | | if (tmpReportFeeDto.getDeadlineTime().getTime() > nextDate.getTime()) { |
| | | int day = DateUtil.getCurrentMonthDay(); |
| | | return moneyPreDay.multiply(new BigDecimal(day)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); |
| | | return moneyPreDay.multiply(new BigDecimal(day)).setScale(FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_UP).doubleValue(); |
| | | } |
| | | // 结束时间 在当月内 |
| | | double hisDays = computeFeeSMOImpl.daysBetween(tmpReportFeeDto.getEndTime(), curDate); |
| | | BigDecimal hisDayDec = moneyPreDay.multiply(new BigDecimal(hisDays)).setScale(2, BigDecimal.ROUND_HALF_UP); |
| | | return feePriceDec.subtract(hisDayDec).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); |
| | | BigDecimal hisDayDec = moneyPreDay.multiply(new BigDecimal(hisDays)).setScale(FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_UP); |
| | | return feePriceDec.subtract(hisDayDec).setScale(FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_UP).doubleValue(); |
| | | } |
| | | |
| | | month = computeFeeSMOImpl.dayCompare(curDate, tmpReportFeeDto.getDeadlineTime()); |
| | | month = DateUtil.dayCompare(curDate, tmpReportFeeDto.getDeadlineTime()); |
| | | if (month < 0) { |
| | | return 0; |
| | | } |
| | | if (month < 1) { |
| | | return feePriceDec.multiply(new BigDecimal(month)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | return feePriceDec.multiply(new BigDecimal(month)).setScale(FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | } |
| | | |
| | | return tmpReportFeeDto.getFeePrice(); |
| | |
| | | if (curDate.getTime() < tmpReportFeeDto.getEndTime().getTime()) { |
| | | return 0.0; |
| | | } |
| | | if(FeeDto.STATE_FINISH.equals(tmpReportFeeDto.getState())){ |
| | | return 0.0; |
| | | } |
| | | |
| | | if (FeeDto.FEE_FLAG_ONCE.equals(tmpReportFeeDto.getFeeFlag())) { |
| | | //说明一次性费用都欠了 |
| | |
| | | return 0; |
| | | } |
| | | //这是每天的钱 |
| | | BigDecimal moneyPreDay = feePriceDec.divide(new BigDecimal(allDays), 2, BigDecimal.ROUND_HALF_EVEN); |
| | | BigDecimal moneyPreDay = feePriceDec.divide(new BigDecimal(allDays), FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_EVEN); |
| | | |
| | | double hisDays = computeFeeSMOImpl.daysBetween(tmpReportFeeDto.getEndTime(), curDate); |
| | | |
| | | return moneyPreDay.multiply(new BigDecimal(hisDays)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); |
| | | return moneyPreDay.multiply(new BigDecimal(hisDays)).setScale(FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_UP).doubleValue(); |
| | | } |
| | | |
| | | double month = 0.0; |
| | | if (tmpReportFeeDto.getDeadlineTime().getTime() < curDate.getTime()) { |
| | | month = computeFeeSMOImpl.dayCompare(tmpReportFeeDto.getEndTime(), tmpReportFeeDto.getDeadlineTime()); |
| | | month = DateUtil.dayCompare(tmpReportFeeDto.getEndTime(), tmpReportFeeDto.getDeadlineTime()); |
| | | } else { |
| | | month = computeFeeSMOImpl.dayCompare(tmpReportFeeDto.getEndTime(), curDate); |
| | | month = DateUtil.dayCompare(tmpReportFeeDto.getEndTime(), curDate); |
| | | } |
| | | BigDecimal curDegree = new BigDecimal(month); |
| | | return curDegree.multiply(feePriceDec).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | return curDegree.multiply(feePriceDec).setScale(FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | } |
| | | |
| | | |
| | |
| | | if (FeeDto.FEE_FLAG_ONCE.equals(tmpReportFeeDto.getFeeFlag())) { |
| | | receivableAmount = tmpReportFeeDto.getFeePrice(); |
| | | } else { |
| | | double month = computeFeeSMOImpl.dayCompare(tmpReportFeeDto.getEndTime(), curMonthDate.getTime()); |
| | | double month = DateUtil.dayCompare(tmpReportFeeDto.getEndTime(), curMonthDate.getTime()); |
| | | BigDecimal curDegree = new BigDecimal(month); |
| | | receivableAmount = curDegree.multiply(new BigDecimal(tmpReportFeeDto.getFeePrice())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | receivableAmount = curDegree.multiply(new BigDecimal(tmpReportFeeDto.getFeePrice())).setScale(FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | } |
| | | ReportFeeMonthStatisticsPo reportFeeMonthStatisticsPo = new ReportFeeMonthStatisticsPo(); |
| | | reportFeeMonthStatisticsPo.setDeadlineTime(DateUtil.getFormatTimeString(curMonthDate.getTime(), DateUtil.DATE_FORMATE_STRING_A)); |
| | |
| | | reportFeeMonthStatisticsPo.setFeeName(StringUtil.isEmpty(tmpReportFeeDto.getImportFeeName()) ? tmpReportFeeDto.getFeeName() : tmpReportFeeDto.getImportFeeName()); |
| | | if (RoomDto.ROOM_TYPE_ROOM.equals(reportRoomDto.getRoomType())) { |
| | | reportFeeMonthStatisticsPo.setObjName(reportRoomDto.getFloorNum() + "栋" + reportRoomDto.getUnitNum() + "单元" + reportRoomDto.getRoomNum() + "室"); |
| | | reportFeeMonthStatisticsPo.setObjNameNum(reportRoomDto.getFloorNum() + "-" + reportRoomDto.getUnitNum() + "-" + reportRoomDto.getRoomNum()); |
| | | } else { |
| | | reportFeeMonthStatisticsPo.setObjName(reportRoomDto.getFloorNum() + "栋" + reportRoomDto.getRoomNum() + "室"); |
| | | reportFeeMonthStatisticsPo.setObjNameNum(reportRoomDto.getFloorNum() + "-" + reportRoomDto.getRoomNum()); |
| | | } |
| | | //计算历史欠费 |
| | | reportFeeMonthStatisticsPo.setHisOweAmount("0"); |
| | |
| | | if (FeeDto.FEE_FLAG_ONCE.equals(tmpReportFeeDto.getFeeFlag())) { |
| | | return computeOnceFee(tmpReportFeeDto); |
| | | } |
| | | OwnerCarDto ownerCarDto = new OwnerCarDto(); |
| | | ownerCarDto.setCommunityId(tmpReportFeeDto.getCommunityId()); |
| | | ownerCarDto.setCarId(tmpReportFeeDto.getCarId()); |
| | | List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto); |
| | | if (ownerCarDtos == null || ownerCarDtos.size() < 1) { |
| | | // OwnerCarDto ownerCarDto = new OwnerCarDto(); |
| | | // ownerCarDto.setCommunityId(tmpReportFeeDto.getCommunityId()); |
| | | // ownerCarDto.setCarId(tmpReportFeeDto.getCarId()); |
| | | // List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto); |
| | | // if (ownerCarDtos == null || ownerCarDtos.size() < 1) { |
| | | // return 0.0; |
| | | // } |
| | | Date endTime = reportCarDto.getEndTime(); |
| | | |
| | | if(endTime == null){ |
| | | return 0.0; |
| | | } |
| | | Date endTime = ownerCarDtos.get(0).getEndTime(); |
| | | |
| | | Date maxEndDate = tmpReportFeeDto.getDeadlineTime(); |
| | | if (FeeDto.FEE_FLAG_CYCLE.equals(tmpReportFeeDto.getFeeFlag())) { |
| | |
| | | if (belongCurMonth(tmpReportFeeDto.getEndTime()) |
| | | && !belongCurMonth(endTime)) { |
| | | //算天数 |
| | | double month = computeFeeSMOImpl.dayCompare(tmpReportFeeDto.getEndTime(), DateUtil.getNextMonthFirstDate()); |
| | | double month = DateUtil.dayCompare(tmpReportFeeDto.getEndTime(), DateUtil.getNextMonthFirstDate()); |
| | | BigDecimal curDegree = new BigDecimal(month); |
| | | return curDegree.multiply(feePriceDec).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | return curDegree.multiply(feePriceDec).setScale(FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | } |
| | | //3.0 费用到期时间 不在当月,费用结束时间在当月 |
| | | if (!belongCurMonth(tmpReportFeeDto.getEndTime()) |
| | | && belongCurMonth(endTime)) { |
| | | //算天数 |
| | | double month = computeFeeSMOImpl.dayCompare(DateUtil.getFirstDate(), maxEndDate); |
| | | double month = DateUtil.dayCompare(DateUtil.getFirstDate(), maxEndDate); |
| | | BigDecimal curDegree = new BigDecimal(month); |
| | | return curDegree.multiply(feePriceDec).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | return curDegree.multiply(feePriceDec).setScale(FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | } |
| | | return 0.0; |
| | | } |
| | |
| | | || tmpReportFeeDto.getDeadlineTime().getTime() < nowTime.getTime()) { |
| | | return 0.0; |
| | | } |
| | | double month = computeFeeSMOImpl.dayCompare(tmpReportFeeDto.getDeadlineTime(), tmpReportFeeDto.getEndTime()); |
| | | double month = DateUtil.dayCompare(tmpReportFeeDto.getDeadlineTime(), tmpReportFeeDto.getEndTime()); |
| | | month = Math.ceil(month); |
| | | |
| | | if (month == 0) { |
| | |
| | | } |
| | | |
| | | BigDecimal feePriceDec = new BigDecimal(tmpReportFeeDto.getFeePrice()); |
| | | double money = feePriceDec.divide(new BigDecimal(month), 2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | double money = feePriceDec.divide(new BigDecimal(month), FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | return money; |
| | | } |
| | | |
| | |
| | | if (belongCurMonth(tmpReportFeeDto.getEndTime()) |
| | | && !belongCurMonth(maxEndDate)) { |
| | | //算天数 |
| | | double month = computeFeeSMOImpl.dayCompare(tmpReportFeeDto.getEndTime(), DateUtil.getNextMonthFirstDate()); |
| | | double month = DateUtil.dayCompare(tmpReportFeeDto.getEndTime(), DateUtil.getNextMonthFirstDate()); |
| | | BigDecimal curDegree = new BigDecimal(month); |
| | | return curDegree.multiply(feePriceDec).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | return curDegree.multiply(feePriceDec).setScale(FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | } |
| | | //3.0 费用到期时间 不在当月,费用结束时间在当月 |
| | | if (!belongCurMonth(tmpReportFeeDto.getEndTime()) |
| | | && belongCurMonth(maxEndDate)) { |
| | | //算天数 |
| | | double month = computeFeeSMOImpl.dayCompare(DateUtil.getFirstDate(), maxEndDate); |
| | | double month = DateUtil.dayCompare(DateUtil.getFirstDate(), maxEndDate); |
| | | BigDecimal curDegree = new BigDecimal(month); |
| | | return curDegree.multiply(feePriceDec).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | return curDegree.multiply(feePriceDec).setScale(FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_EVEN).doubleValue(); |
| | | } |
| | | return 0.0; |
| | | } |