winter 1 год назад
Родитель
Сommit
6df5bd20cd
6 измененных файлов: 34 добавлений и 15 удалений
  1. +7
    -2
      mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFees.java
  2. +1
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumBillAllType.java
  3. +0
    -1
      mallinkService/src/main/java/com/iformall/enums/EnumFeesStandardsCalcuteUnit.java
  4. +2
    -1
      mallinkService/src/main/java/com/iformall/enums/EnumFeesStandardsTimeUnit.java
  5. +17
    -6
      mallinkService/src/main/java/com/iformall/service/helper/WxRentContractHelper.java
  6. +7
    -5
      mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java

+ 7
- 2
mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFees.java Просмотреть файл

@@ -8,6 +8,7 @@ import com.iformall.enums.EnumBillAllType;
import com.iformall.enums.EnumEnergyPublicCalcuteRule; import com.iformall.enums.EnumEnergyPublicCalcuteRule;
import com.iformall.enums.EnumFeesStandardsCalcuteUnit; import com.iformall.enums.EnumFeesStandardsCalcuteUnit;
import com.iformall.enums.EnumFeesStandardsTimeUnit; import com.iformall.enums.EnumFeesStandardsTimeUnit;
import com.iformall.enums.EnumRentDayPriceCalcute;
import com.iformall.enums.EnumYesOrNo; import com.iformall.enums.EnumYesOrNo;
import com.iformall.service.helper.WxRentContractHelper; import com.iformall.service.helper.WxRentContractHelper;
import com.iformall.utils.Constant; import com.iformall.utils.Constant;
@@ -117,7 +118,7 @@ public class WxEnergyFees extends TenantEntity {
return ""; return "";
} }
public String calcuteTotalMoney(Integer decimalSize,Date start,Date end,String count,boolean isFixed) {
public String calcuteTotalMoney(Integer decimalSize,Date start,Date end,String count,boolean isFixed,EnumRentDayPriceCalcute priceCalcute,Integer monthDays ) {
if (isFixed) { if (isFixed) {
return this.price; return this.price;
} }
@@ -127,7 +128,11 @@ public class WxEnergyFees extends TenantEntity {
if (this.timeUnit.intValue() == EnumFeesStandardsTimeUnit.DAY.getCode().intValue()) { if (this.timeUnit.intValue() == EnumFeesStandardsTimeUnit.DAY.getCode().intValue()) {
BigDecimal priceD = new BigDecimal(this.price); BigDecimal priceD = new BigDecimal(this.price);
priceD = priceD.multiply(new BigDecimal(count)); priceD = priceD.multiply(new BigDecimal(count));
return WxRentContractHelper.getNeedPay(decimalSize,new BigDecimal(0),priceD,start,end);
return WxRentContractHelper.getNeedPay(decimalSize,new BigDecimal(0),priceD,start,end,priceCalcute,monthDays);
}if (this.timeUnit.intValue() == EnumFeesStandardsTimeUnit.ONECE.getCode().intValue()) {
BigDecimal priceD = new BigDecimal(this.price);
priceD = priceD.multiply(new BigDecimal(count));
return priceD.toPlainString();
}else { }else {
//按月计算 //按月计算
BigDecimal priceMonth = new BigDecimal(this.price); BigDecimal priceMonth = new BigDecimal(this.price);


+ 1
- 0
mallinkService/src/main/java/com/iformall/enums/EnumBillAllType.java Просмотреть файл

@@ -88,6 +88,7 @@ public enum EnumBillAllType {
retList.add(EnumFeesStandardsTimeUnit.DAY); retList.add(EnumFeesStandardsTimeUnit.DAY);
retList.add(EnumFeesStandardsTimeUnit.MONTH); retList.add(EnumFeesStandardsTimeUnit.MONTH);
retList.add(EnumFeesStandardsTimeUnit.YEAR); retList.add(EnumFeesStandardsTimeUnit.YEAR);
retList.add(EnumFeesStandardsTimeUnit.ONECE);
return retList; return retList;
} }
} }

+ 0
- 1
mallinkService/src/main/java/com/iformall/enums/EnumFeesStandardsCalcuteUnit.java Просмотреть файл

@@ -3,7 +3,6 @@ package com.iformall.enums;
import java.math.BigDecimal; import java.math.BigDecimal;


/** /**
* @author gongbiao
*/ */


public enum EnumFeesStandardsCalcuteUnit { public enum EnumFeesStandardsCalcuteUnit {


+ 2
- 1
mallinkService/src/main/java/com/iformall/enums/EnumFeesStandardsTimeUnit.java Просмотреть файл

@@ -12,7 +12,8 @@ import com.iformall.utils.Constant;
public enum EnumFeesStandardsTimeUnit { public enum EnumFeesStandardsTimeUnit {
DAY(1, "每日"), DAY(1, "每日"),
MONTH(2, "每月"), MONTH(2, "每月"),
YEAR(3,"每年");
YEAR(3,"每年"),
ONECE(4,"单次");


public static EnumFeesStandardsTimeUnit getEnum(Integer code) { public static EnumFeesStandardsTimeUnit getEnum(Integer code) {
for (EnumFeesStandardsTimeUnit value : values()) { for (EnumFeesStandardsTimeUnit value : values()) {


+ 17
- 6
mallinkService/src/main/java/com/iformall/service/helper/WxRentContractHelper.java Просмотреть файл

@@ -382,10 +382,12 @@ public class WxRentContractHelper {
if (null == wxRentContract.getDecimalSize()) { if (null == wxRentContract.getDecimalSize()) {
wxRentContract.setDecimalSize(Constant.default_short_decimal_size); wxRentContract.setDecimalSize(Constant.default_short_decimal_size);
} }
EnumRentDayPriceCalcute priceCalcute = EnumRentDayPriceCalcute.getEnum(wxRentContract.getDayPriceCalcute());
//按日 //按日
if (wxRentContract.getPriceUnit().equals(EnumPriceUnit.D.getCode())){ if (wxRentContract.getPriceUnit().equals(EnumPriceUnit.D.getCode())){
BigDecimal priceD = new BigDecimal(price); BigDecimal priceD = new BigDecimal(price);
String needpayD = WxRentContractHelper.getNeedPay(Constant.default_long_decimal_size,new BigDecimal(0),priceD,startDate,endDate);
String needpayD = WxRentContractHelper.getNeedPay(Constant.default_long_decimal_size,new BigDecimal(0),priceD,startDate,endDate,priceCalcute,wxRentContract.getMonthAverageDays());
//取整 //取整
//needpay = new Double(needpayD).longValue(); //needpay = new Double(needpayD).longValue();
//四舍五入 //四舍五入
@@ -491,7 +493,7 @@ public class WxRentContractHelper {
if (fees.getFixedPrice().intValue() == EnumYesOrNo.YES.getCode().intValue() && null != billStartDate && null != billEndDate) { if (fees.getFixedPrice().intValue() == EnumYesOrNo.YES.getCode().intValue() && null != billStartDate && null != billEndDate) {
vo.setStart(billStartDate); vo.setStart(billStartDate);
vo.setEnd(billEndDate); vo.setEnd(billEndDate);
vo.setTotal(fees.calcuteTotalMoney(decimalSize, billStartDate, billEndDate, "1",true));
vo.setTotal(fees.calcuteTotalMoney(decimalSize, billStartDate, billEndDate, "1",true,null,null));
vo.setReceiveDate(DateUtils.getDaySet(billStartDate,Calendar.DATE,-1)); vo.setReceiveDate(DateUtils.getDaySet(billStartDate,Calendar.DATE,-1));
vo.setFeeStandards(fees); vo.setFeeStandards(fees);
retList.add(vo); retList.add(vo);
@@ -610,6 +612,14 @@ public class WxRentContractHelper {
return months; return months;
} }


private static int getRealMonthDays(EnumRentDayPriceCalcute priceCalcute,Integer monthDays,Date day) {
if (priceCalcute.getCode().intValue() == EnumRentDayPriceCalcute.REAL_DAYS.getCode().intValue()) {
return DateUtils.getMonthDayCount(day);
}else {
return monthDays;
}
}
/** /**
* 按日计租 根据每月的日期总数计算needpay * 按日计租 根据每月的日期总数计算needpay
* @param monthPrice * @param monthPrice
@@ -617,13 +627,13 @@ public class WxRentContractHelper {
* @param end * @param end
* @return * @return
*/ */
public static String getNeedPay(Integer decimalSize,BigDecimal monthPrice,BigDecimal dayPrice,Date start,Date end){
public static String getNeedPay(Integer decimalSize,BigDecimal monthPrice,BigDecimal dayPrice,Date start,Date end,EnumRentDayPriceCalcute priceCalcute,Integer monthDays){
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdM = new SimpleDateFormat("yyyy-MM"); SimpleDateFormat sdM = new SimpleDateFormat("yyyy-MM");
BigDecimal total; BigDecimal total;
int[] diff; int[] diff;
int dayCount = DateUtils.getMonthDayCount(start);
int dayCount = getRealMonthDays(priceCalcute,monthDays,start);
BigDecimal price; BigDecimal price;
if(monthPrice.compareTo(new BigDecimal(0)) > 0){ if(monthPrice.compareTo(new BigDecimal(0)) > 0){
price = monthPrice.divide(new BigDecimal(dayCount),decimalSize,BigDecimal.ROUND_HALF_UP); price = monthPrice.divide(new BigDecimal(dayCount),decimalSize,BigDecimal.ROUND_HALF_UP);
@@ -648,7 +658,8 @@ public class WxRentContractHelper {
int warnCount = 0; int warnCount = 0;
while (true){ while (true){
Date monthStartDate = DateUtils.getDaySet(currEnd,Calendar.DATE,1); Date monthStartDate = DateUtils.getDaySet(currEnd,Calendar.DATE,1);
dayCount = DateUtils.getMonthDayCount(monthStartDate);
dayCount = getRealMonthDays(priceCalcute,monthDays,monthStartDate);
//dayCount = DateUtils.getMonthDayCount(monthStartDate);
if(monthPrice.compareTo(new BigDecimal(0)) > 0){ if(monthPrice.compareTo(new BigDecimal(0)) > 0){
price = monthPrice.divide(new BigDecimal(dayCount),decimalSize,BigDecimal.ROUND_HALF_UP); price = monthPrice.divide(new BigDecimal(dayCount),decimalSize,BigDecimal.ROUND_HALF_UP);
}else{ }else{


+ 7
- 5
mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java Просмотреть файл

@@ -884,17 +884,18 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
private String calcuteStandardsFee(List<WxBillFeesStandardsListVo> unFixedList,Date start,Date end,WxPropertyContract wxPropertyContract) { private String calcuteStandardsFee(List<WxBillFeesStandardsListVo> unFixedList,Date start,Date end,WxPropertyContract wxPropertyContract) {
EnumRentDayPriceCalcute dayPrice = EnumRentDayPriceCalcute.getEnum(wxPropertyContract.getDayPriceCalcute());
if (null != unFixedList) { if (null != unFixedList) {
BigDecimal total = new BigDecimal(0); BigDecimal total = new BigDecimal(0);
for (int j = 0 ; j < unFixedList.size(); j ++) { for (int j = 0 ; j < unFixedList.size(); j ++) {
WxBillFeesStandardsListVo bfsvo = unFixedList.get(j); WxBillFeesStandardsListVo bfsvo = unFixedList.get(j);
WxEnergyFees feeStandars = bfsvo.getFeeStandards(); WxEnergyFees feeStandars = bfsvo.getFeeStandards();
if(EnumFeesStandardsCalcuteUnit.MM.getCode().intValue() == feeStandars.getCalcuteUnit().intValue()) { if(EnumFeesStandardsCalcuteUnit.MM.getCode().intValue() == feeStandars.getCalcuteUnit().intValue()) {
bfsvo.setTotal(feeStandars.calcuteTotalMoney(wxPropertyContract.getDecimalSize(), start, end,wxPropertyContract.getRentArea(),false));
bfsvo.setTotal(feeStandars.calcuteTotalMoney(wxPropertyContract.getDecimalSize(), start, end,wxPropertyContract.getRentArea(),false,dayPrice,wxPropertyContract.getMonthAverageDays()));
}else if (EnumFeesStandardsCalcuteUnit.HU.getCode().intValue() == feeStandars.getCalcuteUnit().intValue()) { }else if (EnumFeesStandardsCalcuteUnit.HU.getCode().intValue() == feeStandars.getCalcuteUnit().intValue()) {
bfsvo.setTotal(feeStandars.calcuteTotalMoney(wxPropertyContract.getDecimalSize(), start, end,"1",false));
bfsvo.setTotal(feeStandars.calcuteTotalMoney(wxPropertyContract.getDecimalSize(), start, end,"1",false,dayPrice,wxPropertyContract.getMonthAverageDays()));
}else { }else {
bfsvo.setTotal(feeStandars.calcuteTotalMoney(wxPropertyContract.getDecimalSize(), start, end,"1",false));
bfsvo.setTotal(feeStandars.calcuteTotalMoney(wxPropertyContract.getDecimalSize(), start, end,"1",false,dayPrice,wxPropertyContract.getMonthAverageDays()));
} }
bfsvo.setStart(start); bfsvo.setStart(start);
bfsvo.setEnd(end); bfsvo.setEnd(end);
@@ -907,11 +908,12 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
} }


public String getNeedPayMoney(WxPropertyContract wxRentContract,String price,Date startDate,Date endDate,int i,int billTimeVoListSize,boolean saveDb,int dayType,int receivePeriod){ public String getNeedPayMoney(WxPropertyContract wxRentContract,String price,Date startDate,Date endDate,int i,int billTimeVoListSize,boolean saveDb,int dayType,int receivePeriod){
String needpay;
EnumRentDayPriceCalcute dayPrice = EnumRentDayPriceCalcute.getEnum(wxRentContract.getDayPriceCalcute());
String needpay;
//按日 //按日
if (wxRentContract.getPriceUnit().equals(EnumPriceUnit.D.getCode())){ if (wxRentContract.getPriceUnit().equals(EnumPriceUnit.D.getCode())){
BigDecimal priceD = new BigDecimal(price); BigDecimal priceD = new BigDecimal(price);
String needpayD = WxRentContractHelper.getNeedPay(wxRentContract.getDecimalSize(),new BigDecimal(0),priceD,startDate,endDate);
String needpayD = WxRentContractHelper.getNeedPay(wxRentContract.getDecimalSize(),new BigDecimal(0),priceD,startDate,endDate,dayPrice,wxRentContract.getMonthAverageDays());
needpay = needpayD; needpay = needpayD;
//按月计算 //按月计算
}else{ }else{


Загрузка…
Отмена
Сохранить