diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxPropertyContract.java b/mallinkService/src/main/java/com/iformall/domain/po/WxPropertyContract.java index cff82f473..c838f4ccb 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxPropertyContract.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxPropertyContract.java @@ -1,6 +1,8 @@ package com.iformall.domain.po; import com.iformall.common.SortColumn; +import com.iformall.enums.EnumPriceUnit; +import com.iformall.enums.EnumRentContractAdjustPeriod; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; @@ -252,4 +254,16 @@ public class WxPropertyContract extends BaseEntity { this.setSortColumns(Field.valueOf(sortColumns)); } } + + public Integer getAdjustPeriod() { + if(EnumPriceUnit.D.getCode().equals(this.getPriceUnit()) && EnumRentContractAdjustPeriod.ADJUST_PERIOD_MONTH.getCode().equals(adjustPeriod)){ + return EnumRentContractAdjustPeriod.ADJUST_PERIOD_DAY.getCode(); + } + return adjustPeriod; + } + + + public void setAdjustPeriod(Integer adjustPeriod) { + this.adjustPeriod = adjustPeriod; + } } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java b/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java index 5f2142c0a..c66dcfbb0 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java @@ -1,6 +1,8 @@ package com.iformall.domain.po; import com.iformall.common.SortColumn; +import com.iformall.enums.EnumPriceUnit; +import com.iformall.enums.EnumRentContractAdjustPeriod; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; @@ -290,4 +292,16 @@ public class WxRentContract extends BaseEntity { this.setSortColumns(Field.valueOf(sortColumns)); } } + + public Integer getAdjustPeriod() { + if(EnumPriceUnit.D.getCode().equals(this.getPriceUnit()) && EnumRentContractAdjustPeriod.ADJUST_PERIOD_MONTH.getCode().equals(adjustPeriod)){ + return EnumRentContractAdjustPeriod.ADJUST_PERIOD_DAY.getCode(); + } + return adjustPeriod; + } + + + public void setAdjustPeriod(Integer adjustPeriod) { + this.adjustPeriod = adjustPeriod; + } } 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 a123c91eb..6a3d9227e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java @@ -92,7 +92,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService return new ResultData(ErrorCode.PROPERTY_CONTRACT_IS_NOT_FOUND); } - //m:init dateDiff + //init dateDiff if(wxPropertyContract.getRentalStartDate() != null && wxPropertyContract.getRentalEndDate() != null){ Calendar instance = Calendar.getInstance(); instance.setTime(wxPropertyContract.getRentalEndDate()); @@ -102,7 +102,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService result.put("totalPeriodDay",array[1]); } - //m:init 租赁单价 + //init 租赁单价 String rentInfo = wxPropertyContract.getRentInfo(); if(StringUtils.isNotBlank(rentInfo)){ JSONArray rentInfoArray = JSONArray.parseArray(rentInfo); @@ -134,6 +134,10 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService if(wxPropertyContract.getPriceUnit() == null){ wxPropertyContract.setPriceUnit(EnumPriceUnit.M.getCode()); } + if(wxPropertyContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_DAY.getCode())){ + wxPropertyContract.setAdjustPeriod(EnumRentContractAdjustPeriod.ADJUST_PERIOD_MONTH.getCode()); + wxPropertyContract.setPriceUnit(EnumPriceUnit.D.getCode()); + } wxPropertyContract.setPrice(wxPropertyContract.getPrice() != null ? wxPropertyContract.getPrice() : 0); wxPropertyContract.setDeposit(wxPropertyContract.getDeposit() != null ? wxPropertyContract.getDeposit() : 0); @@ -182,13 +186,6 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService result.put("remark",flowRecordList.get(0).getRemark()); } -// //生成预览账单 -// if(wxPropertyContract.getReceivePeriod() != null && wxPropertyContract.getLease()!=null) { -// wxBillPropertyMapper.deletePreviewBill(wxPropertyContract); -// //重新生成 -// List billList = buildProperty(new WxMerchant(),wxPropertyContract,EnumIsPreview.YES.getCode()); -// wxPropertyContract.setPreviewBillRentList(billList); -// } //查询预账单用于展示 WxBillProperty wxBillRent = new WxBillProperty(); wxBillRent.setPropertyContractId(id); @@ -548,6 +545,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService && !isFirstDay(wxPropertyContract.getRentalStartDate()) && (wxPropertyContract.getLease() % wxPropertyContract.getReceivePeriod() == 0) && isLastYesr + && wxPropertyContract.getReceivePeriod() != 1 ){ paycount ++; } @@ -717,6 +715,19 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService } } + //最后一期截止到结束日期 + if(i == paycount - 1){ + wxBillProperty.setEndtime(wxPropertyContract.getRentalEndDate()); + + //当天也算,加1天 + Date newEndDate = DateUtils.getDaySet(wxBillProperty.getEndtime(),Calendar.DATE,1); + int[] diff = DateUtils.getDiff(wxBillProperty.getStarttime(),newEndDate); + needpay = diff[0]*price; + + double oneDayProce = (double) price/DateUtils.getMonthDayCount(wxPropertyContract.getRentalEndDate()); + needpay += diff[1] * oneDayProce; + } + wxBillProperty.setNeedPay(needpay); wxBillProperty.setOwe(needpay); wxBillProperty.setReceivePay(needpay); @@ -800,7 +811,9 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService ||propertyContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode())) { result = buildRentMonth(wxMerchant, userId, propertyContract, receivePeriod, lease, rentalStartDate, price,isPreview); } else { - //按日计租 + //如果按日 + //处理lease + lease = DateUtils.daysBetween(propertyContract.getRentalStartDate(),propertyContract.getRentalEndDate()); Map resultMap = buildRent(lease, receivePeriod, price, rentalStartDate, Calendar.DAY_OF_MONTH, propertyContract, userId, wxMerchant, 0, isPreview, null,false); result = (List)resultMap.get("billList"); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java index 75a193088..8be2162bd 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -115,7 +115,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { return new ResultData(ErrorCode.RENT_CONTRACT_IS_NOT_FOUND); } - //m: init dateDiff + //init dateDiff if(wxRentContract.getRentalStartDate() != null && wxRentContract.getRentalEndDate() != null){ Calendar instance = Calendar.getInstance(); instance.setTime(wxRentContract.getRentalEndDate()); @@ -125,7 +125,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { result.put("totalPeriodDay",array[1]); } - //m: init 租赁单价 + //init 租赁单价 String rentInfo = wxRentContract.getRentInfo(); if(StringUtils.isNotBlank(rentInfo)){ JSONArray rentInfoArray = JSONArray.parseArray(rentInfo); @@ -157,6 +157,10 @@ public class WxRentContractServiceImpl implements WxRentContractService { if(wxRentContract.getPriceUnit() == null){ wxRentContract.setPriceUnit(EnumPriceUnit.M.getCode()); } + if(wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_DAY.getCode())){ + wxRentContract.setAdjustPeriod(EnumRentContractAdjustPeriod.ADJUST_PERIOD_MONTH.getCode()); + wxRentContract.setPriceUnit(EnumPriceUnit.D.getCode()); + } //商场信息 WxMall wxMall = new WxMall(); @@ -703,12 +707,16 @@ public class WxRentContractServiceImpl implements WxRentContractService { Date rentalStartDate = wxRentContract.getRentalStartDate(); Long price = wxRentContract.getPrice(); + //按月计租 if (wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_MONTH.getCode()) ||wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode())) { rentList = buildRentMonth(wxMerchant, userId, wxRentContract, receivePeriod, lease, rentalStartDate, price,isPreview); } else { - //按日计租 + //如果按日 + //处理lease + lease = DateUtils.daysBetween(wxRentContract.getRentalStartDate(),wxRentContract.getRentalEndDate()); + Map resultMap = buildRent(lease, receivePeriod, price, rentalStartDate, Calendar.DAY_OF_MONTH, wxRentContract, userId, wxMerchant, 0, isPreview, null,false); rentList = ( List)resultMap.get("billList"); } @@ -888,9 +896,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { wxBillRent.setId(idWorker.nextId()); wxBillRent.setRentContractId(wxRentContract.getId()); wxBillRent.setPay(0L); - //System.out.println("-----------price:"+price+",receivePeriod:"+receivePeriod); long needpay = new BigDecimal(price).multiply(new BigDecimal(receivePeriod)).longValue(); - //System.out.println("--------needpay:"+needpay); Calendar instance = Calendar.getInstance(); Date date = new Date();