From 6284d016e7c21a2f9817bb31f90a632534a701ca Mon Sep 17 00:00:00 2001 From: luozukai Date: Thu, 15 Aug 2019 15:35:21 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=90=88=E5=90=8C][=E4=BF=AE=E6=94=B9][?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E8=81=94=E8=90=A5=E8=B7=B3=E7=82=B9=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/enums/EnumMissTimeType.java | 1 + .../service/impl/WxBillRentServiceImpl.java | 34 +++++++++++-------- .../java/com/iformall/utils/DateUtils.java | 10 ------ 3 files changed, 20 insertions(+), 25 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumMissTimeType.java b/mallinkService/src/main/java/com/iformall/enums/EnumMissTimeType.java index 4ff171f33..6ef644ee3 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumMissTimeType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumMissTimeType.java @@ -7,6 +7,7 @@ public enum EnumMissTimeType { YEAR(1, "残年"), MONTH(2, "残月"), + OTHER(3, "其他"), ; public static EnumMissTimeType getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentServiceImpl.java index c1742df11..11818964c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentServiceImpl.java @@ -268,7 +268,7 @@ public class WxBillRentServiceImpl implements WxBillRentService { * @param record */ public Integer getPayRatio(WxBillRent record,WxRentContract wxRentContract,EnumMissTimeType timeType){ - if(wxRentContract.getPayRatio() != null){ + if(wxRentContract.getPayRatio() != null && wxRentContract.getPayRatio().intValue() > 0){ return wxRentContract.getPayRatio(); } BigDecimal revenue = new BigDecimal(record.getRevenue()).divide(new BigDecimal(1000000)).setScale(4, RoundingMode.HALF_EVEN); @@ -286,11 +286,11 @@ public class WxBillRentServiceImpl implements WxBillRentService { //残年 (小金额 / 365 * 账单周期天数 )--(大金额 / 365 * 账单周期天数) if(EnumMissTimeType.YEAR.getCode().equals(timeType.getCode())){ - start = new BigDecimal(revenueArray[0]).divide(new BigDecimal(365)).multiply(new BigDecimal(dayCount)); - end = new BigDecimal(revenueArray[1]).divide(new BigDecimal(365)).multiply(new BigDecimal(dayCount)); + start = new BigDecimal(revenueArray[0]).divide(new BigDecimal(365),10,BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(dayCount)); + end = new BigDecimal(revenueArray[1]).divide(new BigDecimal(365),10,BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(dayCount)); }else if(EnumMissTimeType.MONTH.getCode().equals(timeType.getCode())){ - start = new BigDecimal(revenueArray[0]).divide(new BigDecimal(30)).multiply(new BigDecimal(dayCount)); - end = new BigDecimal(revenueArray[1]).divide(new BigDecimal(30)).multiply(new BigDecimal(dayCount)); + start = new BigDecimal(revenueArray[0]).divide(new BigDecimal(30),10,BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(dayCount)); + end = new BigDecimal(revenueArray[1]).divide(new BigDecimal(30),10,BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(dayCount)); } if (revenue.compareTo(start) >= 0 && revenue.compareTo(end)<= 0){ return ratio; @@ -301,9 +301,9 @@ public class WxBillRentServiceImpl implements WxBillRentService { //残年 (小金额 / 365 * 账单周期天数 )--(大金额 / 365 * 账单周期天数) if(EnumMissTimeType.YEAR.getCode().equals(timeType.getCode())){ - end = new BigDecimal(revenueArray[1]).divide(new BigDecimal(365)).multiply(new BigDecimal(dayCount)); + end = new BigDecimal(revenueArray[1]).divide(new BigDecimal(365),10,BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(dayCount)); }else if(EnumMissTimeType.MONTH.getCode().equals(timeType.getCode())){ - end = new BigDecimal(revenueArray[1]).divide(new BigDecimal(30)).multiply(new BigDecimal(dayCount)); + end = new BigDecimal(revenueArray[1]).divide(new BigDecimal(30),10,BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(dayCount)); } if (revenue.compareTo(end) >= 0){ return ratio; @@ -313,32 +313,36 @@ public class WxBillRentServiceImpl implements WxBillRentService { return 0; } + @Transactional(rollbackFor = {Exception.class}) @Override public ResultData updateRevenue(WxBillRent record, MallUserInfo user) { WxBillRent wxBillRent = wxBillRentMapper.selectByPrimaryKey(record.getId()); - WxRentContract wxRentContract = wxRentContractMapper.selectByPrimaryKey(record.getRentContractId()); - SimpleDateFormat sdD = new SimpleDateFormat("yyyy-MM-dd"); + WxRentContract wxRentContract = wxRentContractMapper.selectByPrimaryKey(wxBillRent.getRentContractId()); + SimpleDateFormat sdD = new SimpleDateFormat("d"); SimpleDateFormat sdM = new SimpleDateFormat("yyyy-MM"); int startInt = Integer.parseInt(sdD.format(wxBillRent.getStarttime())); int endInt = Integer.parseInt(sdD.format(DateUtils.getDaySet(wxBillRent.getEndtime(),Calendar.DATE,1))); int months = getMonths(sdM.format(wxBillRent.getStarttime())+"-01",sdM.format(DateUtils.getDaySet(wxBillRent.getEndtime(),Calendar.DATE,1))+"-01"); - Integer ratio = getPayRatio(record,wxRentContract,null); - - if(StringUtils.isNotBlank(wxRentContract.getBusDiscountRatio())){ + Integer ratio = 0; + if(wxRentContract.getPayRatio() != null && wxRentContract.getPayRatio().intValue() >0){ + ratio = getPayRatio(wxBillRent,wxRentContract,EnumMissTimeType.OTHER); + }else if(StringUtils.isNotBlank(wxRentContract.getBusDiscountRatio())){ if(EnumBusRatioTime.YEAR.getCode().equals(wxRentContract.getBusDiscountTime())){ if(startInt == endInt && months == 12){ //刚好1年 + ratio = getPayRatio(wxBillRent,wxRentContract,EnumMissTimeType.OTHER); }else{ - ratio = getPayRatio(record,wxRentContract,EnumMissTimeType.YEAR); + ratio = getPayRatio(wxBillRent,wxRentContract,EnumMissTimeType.YEAR); } }else if(EnumBusRatioTime.MONTH.getCode().equals(wxRentContract.getBusDiscountTime())){ if(startInt == endInt && months == 1){ //刚好1个月 + ratio = getPayRatio(wxBillRent,wxRentContract,EnumMissTimeType.OTHER); }else{ - ratio = getPayRatio(record,wxRentContract,EnumMissTimeType.MONTH); + ratio = getPayRatio(wxBillRent,wxRentContract,EnumMissTimeType.MONTH); } } } @@ -353,7 +357,7 @@ public class WxBillRentServiceImpl implements WxBillRentService { } Long oldPrice = wxBillRent.getReceivePay(); - Long newPrice = record.getReceivePay(); + Long newPrice = newReceivePay; wxBillRent.setRevenue(record.getRevenue()); //wxBillRent.setReceivePay(oldPrice.equals(newPrice) ? oldPrice : newPrice); wxBillRent.setUpdatetime(new Date()); diff --git a/mallinkService/src/main/java/com/iformall/utils/DateUtils.java b/mallinkService/src/main/java/com/iformall/utils/DateUtils.java index 7375a1ad1..4f4501f1b 100755 --- a/mallinkService/src/main/java/com/iformall/utils/DateUtils.java +++ b/mallinkService/src/main/java/com/iformall/utils/DateUtils.java @@ -1223,14 +1223,4 @@ public class DateUtils { LocalDate startLocalDate = LocalDate.of(startYear,startMonth,startDay); return startLocalDate.until(endLocalDate, ChronoUnit.DAYS); } - - public static void main(String[] args) throws Exception { - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - String feeTimeStr = "2019-08-07 12:44:41"; - String oldFeeTimeStr = "2019-08-07 12:44:28"; - Date feeTime = dateFormat.parse(feeTimeStr); - Date oldFeeTime = dateFormat.parse(oldFeeTimeStr); - System.out.println(DateUtils.isInDate15Mins(feeTime, oldFeeTime)); - } - }