diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxAllBill.java b/mallinkService/src/main/java/com/iformall/domain/po/WxAllBill.java index 648a920b3..0ff98575e 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxAllBill.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxAllBill.java @@ -11,6 +11,7 @@ import com.iformall.domain.vo.WxBillFeesStandardsListVo; import com.iformall.enums.EnumBillAction; import com.iformall.enums.EnumBillAllType; import com.iformall.enums.EnumBillStatus; +import com.iformall.utils.DateUtils; import lombok.Data; import lombok.EqualsAndHashCode; @@ -105,6 +106,14 @@ public class WxAllBill extends TenantEntity { @Excel(name = "周期开始时间", format = "yyyy-MM-dd", width = 20, orderNum = "4") @io.swagger.annotations.ApiModelProperty(value="开始时间",name="starttime") public Date starttime; + @TableField(exist = false) + private String starttimeStr; + public String getStarttimeStr() { + if (null != starttime) { + starttimeStr = DateUtils.date2String(starttime); + } + return starttimeStr; + } @Excel(name = "周期结束时间", format = "yyyy-MM-dd", width = 20, orderNum = "5") @io.swagger.annotations.ApiModelProperty(value="结束时间",name="endtime") @@ -113,6 +122,14 @@ public class WxAllBill extends TenantEntity { public Date endtimeBegin; @TableField(exist = false) public Date endtimeEnd; + @TableField(exist = false) + private String endtimeStr; + public String getEndtimeStr() { + if (null != endtime) { + endtimeStr = DateUtils.date2String(endtime); + } + return endtimeStr; + } @Excel(name = "欠缴金额(元)", width = 20, orderNum = "11") @TableField(exist = false) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFees.java b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFees.java index df92e39c1..683a1e3e9 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFees.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFees.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; import com.iformall.enums.EnumBillAllType; +import com.iformall.enums.EnumContractReceivePeriodUnit; import com.iformall.enums.EnumEnergyPublicCalcuteRule; import com.iformall.enums.EnumFeesStandardsCalcuteUnit; import com.iformall.enums.EnumFeesStandardsTimeUnit; @@ -19,6 +20,7 @@ import lombok.EqualsAndHashCode; import lombok.ToString; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; @@ -118,7 +120,8 @@ public class WxEnergyFees extends TenantEntity { return ""; } - public String calcuteTotalMoney(Integer decimalSize,Date start,Date end,String count,boolean isFixed,EnumRentDayPriceCalcute priceCalcute,Integer monthDays ) { + public String calcuteTotalMoney(Integer decimalSize,Date start,Date end,String count,boolean isFixed,EnumRentDayPriceCalcute priceCalcute,Integer monthDays, + EnumContractReceivePeriodUnit dayType,Integer receivePeriod ) { if (StringUtils.isBlank(count)) { count = "1"; } @@ -141,47 +144,7 @@ public class WxEnergyFees extends TenantEntity { priceMonth = new BigDecimal(price).divide(new BigDecimal(12),Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP); } priceMonth = priceMonth.multiply(new BigDecimal(count)); - - //如果开始时间是1号,结束时间是当月最后一天,则是整月,*月数。 - //如果不是整月,跨月了的,则计算: 开始时间到当月底+ 中间整月 + 结束时间月1号到结束时间 - SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); - Date startMonthFirstDay = DateUtils.getFirstDayForCurrMonth(start); - Date endMonthLastDay = DateUtils.getLastDayForMonth(end); - if(sd.format(start).equals(sd.format(startMonthFirstDay)) && sd.format(end).equals(sd.format(endMonthLastDay)) ){ - int months = WxRentContractHelper.getMonths(sd.format(start),sd.format(end)); - months++; - if (months > 0 ) { - return priceMonth.multiply(new BigDecimal(months)).toPlainString(); - }else { - return priceMonth.toPlainString(); - } - }else { - Date startMonthEndDay = DateUtils.getLastDayForMonth(start); - int startDays = DateUtils.daysBetween(start, startMonthEndDay)+1; - int startMonthDays = DateUtils.daysBetween(startMonthFirstDay, startMonthEndDay)+1; - - Date endMontFirstDay = DateUtils.getFirstDayForCurrMonth(end); - int endDays = DateUtils.daysBetween(endMontFirstDay, end)+1; - int endMonthDays = DateUtils.daysBetween(endMontFirstDay, endMonthLastDay)+1; - - int months = WxRentContractHelper.getMonths(sd.format(DateUtils.getDaySet(startMonthEndDay, Calendar.DATE, 1)),sd.format(DateUtils.getDaySet(endMontFirstDay, Calendar.DATE, -1))); - months++; - - if (startDays > 0 ) { - priceMonth = priceMonth.multiply(new BigDecimal(startDays)).divide(new BigDecimal(startMonthDays),Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP); - } - - if (endDays > 0 ) { - priceMonth = priceMonth.multiply(new BigDecimal(endDays)).divide(new BigDecimal(endMonthDays),Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP); - } - - if (months > 0 ) { - priceMonth = priceMonth.multiply(new BigDecimal(months)); - } - - return priceMonth.toPlainString(); - - } + return WxRentContractHelper.getMonthNeedPay(null,decimalSize,priceMonth, start, end,dayType.getCode(),receivePeriod,priceCalcute.getCode(),monthDays); } } diff --git a/mallinkService/src/main/java/com/iformall/service/helper/WxRentContractHelper.java b/mallinkService/src/main/java/com/iformall/service/helper/WxRentContractHelper.java index 722e9e0a1..dc9fcb53f 100644 --- a/mallinkService/src/main/java/com/iformall/service/helper/WxRentContractHelper.java +++ b/mallinkService/src/main/java/com/iformall/service/helper/WxRentContractHelper.java @@ -411,7 +411,7 @@ public class WxRentContractHelper { if (null != fees.getCalcuteUnit() && fees.getCalcuteUnit().intValue() == EnumFeesStandardsCalcuteUnit.MM.getCode().intValue()) { count = rentArea; } - vo.setTotal(fees.calcuteTotalMoney(decimalSize, billStartDate, billEndDate, count,true,null,null)); + vo.setTotal(fees.calcuteTotalMoney(decimalSize, billStartDate, billEndDate, count,true,null,null,null,null)); vo.setReceiveDate(DateUtils.getDaySet(billStartDate,Calendar.DATE,-1)); vo.setFeeStandards(fees); retList.add(vo); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java index a44101f08..b6caeca0c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java @@ -889,11 +889,14 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService WxBillFeesStandardsListVo bfsvo = unFixedList.get(j); WxEnergyFees feeStandars = bfsvo.getFeeStandards(); if(EnumFeesStandardsCalcuteUnit.MM.getCode().intValue() == feeStandars.getCalcuteUnit().intValue()) { - bfsvo.setTotal(feeStandars.calcuteTotalMoney(wxPropertyContract.getDecimalSize(), start, end,wxPropertyContract.getRentArea(),false,dayPrice,wxPropertyContract.getMonthAverageDays())); + bfsvo.setTotal(feeStandars.calcuteTotalMoney(wxPropertyContract.getDecimalSize(), start, end,wxPropertyContract.getRentArea(),false,dayPrice, + wxPropertyContract.getMonthAverageDays(),EnumContractReceivePeriodUnit.getEnum(wxPropertyContract.getReceivePeriodUnit()),wxPropertyContract.getReceivePeriod())); }else if (EnumFeesStandardsCalcuteUnit.HU.getCode().intValue() == feeStandars.getCalcuteUnit().intValue()) { - bfsvo.setTotal(feeStandars.calcuteTotalMoney(wxPropertyContract.getDecimalSize(), start, end,"1",false,dayPrice,wxPropertyContract.getMonthAverageDays())); + bfsvo.setTotal(feeStandars.calcuteTotalMoney(wxPropertyContract.getDecimalSize(), start, end,"1",false,dayPrice,wxPropertyContract.getMonthAverageDays(), + EnumContractReceivePeriodUnit.getEnum(wxPropertyContract.getReceivePeriodUnit()),wxPropertyContract.getReceivePeriod())); }else { - bfsvo.setTotal(feeStandars.calcuteTotalMoney(wxPropertyContract.getDecimalSize(), start, end,"1",false,dayPrice,wxPropertyContract.getMonthAverageDays())); + bfsvo.setTotal(feeStandars.calcuteTotalMoney(wxPropertyContract.getDecimalSize(), start, end,"1",false,dayPrice,wxPropertyContract.getMonthAverageDays(), + EnumContractReceivePeriodUnit.getEnum(wxPropertyContract.getReceivePeriodUnit()),wxPropertyContract.getReceivePeriod())); } bfsvo.setStart(start); bfsvo.setEnd(end);