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 530b20244..00f4a74ac 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java @@ -532,7 +532,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService //endDate = wxPropertyContract.getRentalEndDate(); endDate = null; }else { - endDate = yearList.get(index); + endDate = yearList.get(index+1);//price index 0开始,year.end 从第二年开始 logger.info("==========cross:"+sd.format(endDate)); } } @@ -554,16 +554,23 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService //按日 if (wxPropertyContract.getPriceUnit().equals(EnumPriceUnit.D.getCode())){ - double needpayD = WxRentContractServiceImpl.getNeedPay(0,price,wxBillProperty.getStarttime(),wxBillProperty.getEndtime()); + Double priceD = new Double(price); + double needpayD = WxRentContractServiceImpl.getNeedPay(0,priceD,wxBillProperty.getStarttime(),wxBillProperty.getEndtime()); needpay = new Double(needpayD).longValue(); }else{ + //年 需要除12 + Double priceD = new Double(price); + if(EnumPriceUnit.Y.getCode().equals(wxPropertyContract.getPriceUnit())){ + priceD = new Double(price)/12; + } + //当天也算,加1天 Date newEndDate = DateUtils.getDaySet(wxBillProperty.getEndtime(),Calendar.DATE,1); //按月 int[] diff = DateUtils.getDiff(wxBillProperty.getStarttime(),newEndDate); - needpay = diff[0]*price; + needpay =new Double( diff[0]*priceD).longValue(); - double oneDayProce = (double) price/DateUtils.getMonthDayCount(wxPropertyContract.getRentalEndDate()); + double oneDayProce = priceD/DateUtils.getMonthDayCount(wxPropertyContract.getRentalEndDate()); needpay += diff[1] * oneDayProce; } wxBillProperty.setNeedPay(needpay); @@ -639,9 +646,6 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService Integer lease = wxPropertyContract.getLease(); Date rentalStartDate = propertyContract.getRentalStartDate(); Long price = propertyContract.getPrice(); - if(EnumPriceUnit.Y.getCode().equals(propertyContract.getPriceUnit())){ - price = price/12; - } //按月计租 // if (propertyContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_MONTH.getCode()) 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 6ed5276ad..5368b6536 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -728,9 +728,6 @@ public class WxRentContractServiceImpl implements WxRentContractService { Date rentalStartDate = wxRentContract.getRentalStartDate(); Long price = wxRentContract.getPrice(); - if(EnumPriceUnit.Y.getCode().equals(wxRentContract.getPriceUnit())){ - price = price/12; - } //按月计租 // if (wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_MONTH.getCode()) @@ -760,13 +757,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { long[] priceArr = new long[arraySize]; for (int i = 0; i < arraySize; i++) { JSONObject rentInfoObject = rentInfoArray.getJSONObject(i); - //年 需要除12 - if(EnumPriceUnit.Y.getCode().equals(priceUnit)){ - BigDecimal yprice = new BigDecimal(rentInfoObject.getString("price")).divide(new BigDecimal(12),2, BigDecimal.ROUND_HALF_DOWN); - priceArr[i] = yprice.multiply(new BigDecimal(100)).longValue(); - }else{ - priceArr[i] = new BigDecimal(rentInfoObject.getString("price")).multiply(new BigDecimal(100)).longValue(); - } + priceArr[i] = new BigDecimal(rentInfoObject.getString("price")).multiply(new BigDecimal(100)).longValue(); } priceList.add(priceArr); //大于一年 @@ -880,7 +871,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { List resultList = new ArrayList<>(); final IdWorker idWorker = IdWorker.get(); - Date endDate = null; + Date endDate = null;//每年的截止日期 if(yearList.size() > 1){ endDate = yearList.get(1); } @@ -900,8 +891,8 @@ public class WxRentContractServiceImpl implements WxRentContractService { if(index >= yearList.size()-1){ //endDate = wxRentContract.getRentalEndDate(); endDate = null; - }else { - endDate = yearList.get(index); + }else{ + endDate = yearList.get(index+1);//price index 0开始,year.end 从第二年开始 logger.info("==========cross:"+sd.format(endDate)); } @@ -946,16 +937,23 @@ public class WxRentContractServiceImpl implements WxRentContractService { //按日 if (wxRentContract.getPriceUnit().equals(EnumPriceUnit.D.getCode())){ - double needpayD = WxRentContractServiceImpl.getNeedPay(0,price,wxBillRent.getStarttime(),wxBillRent.getEndtime()); + Double priceD = new Double(price); + double needpayD = WxRentContractServiceImpl.getNeedPay(0,priceD,wxBillRent.getStarttime(),wxBillRent.getEndtime()); needpay = new Double(needpayD).longValue(); }else{ + //年 需要除12 + Double priceD = new Double(price); + if(EnumPriceUnit.Y.getCode().equals(wxRentContract.getPriceUnit())){ + priceD = new Double(price)/12; + } + //当天也算,加1天 Date newEndDate = DateUtils.getDaySet(wxBillRent.getEndtime(),Calendar.DATE,1); //按月 int[] diff = DateUtils.getDiff(wxBillRent.getStarttime(),newEndDate); - needpay = diff[0]*price; + needpay =new Double( diff[0]*priceD).longValue(); - double oneDayProce = (double) price/DateUtils.getMonthDayCount(wxRentContract.getRentalEndDate()); + double oneDayProce = priceD/DateUtils.getMonthDayCount(wxRentContract.getRentalEndDate()); needpay += diff[1] * oneDayProce; } @@ -1778,7 +1776,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { * @param end * @return */ - public static double getNeedPay(long monthPrice,long dayPrice,Date start,Date end){ + public static double getNeedPay(long monthPrice,Double dayPrice,Date start,Date end){ SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdM = new SimpleDateFormat("yyyy-MM"); Double total; @@ -1842,7 +1840,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { Date start = sd.parse("2020-05-29"); Date end = sd.parse("2020-07-28"); - System.out.println("===="+new WxRentContractServiceImpl().getNeedPay(tprice,0,start,end));; +// System.out.println("===="+new WxRentContractServiceImpl().getNeedPay(tprice,0,start,end));; } public static List initBillTimeList(Date start,Date end,Integer adjustPeriod,Integer dayType,int receivePeriod){ diff --git a/mallinkService/src/main/resources/mapper/WxBillPropertyMapper.xml b/mallinkService/src/main/resources/mapper/WxBillPropertyMapper.xml index c7adeee9f..6a290b7d7 100644 --- a/mallinkService/src/main/resources/mapper/WxBillPropertyMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBillPropertyMapper.xml @@ -174,7 +174,7 @@ - update wx_bill_property set is_preview = #{isPreview},merchant_id = #{merchantId} + update wx_bill_property set is_preview = #{isPreview},merchant_id = #{merchantId},need_pay = receive_pay,owe=receive_pay where property_contract_id = #{propertyContractId} diff --git a/mallinkService/src/main/resources/mapper/WxBillRentMapper.xml b/mallinkService/src/main/resources/mapper/WxBillRentMapper.xml index 3591f2d77..9868d01de 100644 --- a/mallinkService/src/main/resources/mapper/WxBillRentMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBillRentMapper.xml @@ -173,7 +173,7 @@ - update wx_bill_rent set is_preview = #{isPreview},merchant_id = #{merchantId} + update wx_bill_rent set is_preview = #{isPreview},merchant_id = #{merchantId},need_pay = receive_pay,owe=receive_pay where rent_contract_id = #{rentContractId}