From 5c5bdecec5fbf00edae6c24e77b5f1e65ad704c4 Mon Sep 17 00:00:00 2001 From: luozukai Date: Thu, 25 Apr 2019 15:15:40 +0800 Subject: [PATCH] =?UTF-8?q?[=E8=B4=A6=E6=9C=9F=E8=B0=83=E6=95=B4][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E4=BF=AE=E6=94=B9=E7=94=9F=E6=88=90?= =?UTF-8?q?=E9=80=BB=E8=BE=91]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/WxPropertyContractServiceImpl.java | 97 ++++++++++++------- .../impl/WxRentContractServiceImpl.java | 79 ++++++++++----- .../service/impl/WxTopicServiceImpl.java | 12 ++- .../java/com/iformall/utils/DateUtils.java | 23 +++++ 4 files changed, 149 insertions(+), 62 deletions(-) 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 63c70ef8e..57c8c0512 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java @@ -292,11 +292,11 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService //生成预览账单 if(CollectionUtils.isEmpty(billList) || (!wxPropertyContract.getReceivePeriod().equals(record.getReceivePeriod()) - ||!wxPropertyContract.getPrice().equals(record.getPrice()) - ||!wxPropertyContract.getDeposit().equals(record.getDeposit()) - ||!wxPropertyContract.getAdjustPeriod().equals(record.getAdjustPeriod()) - || !DateUtils.date2String(wxPropertyContract.getRentalStartDate(),"yyyy-MM-dd").equals(DateUtils.date2String(record.getRentalStartDate(),"yyyy-MM-dd")) - )){ + ||!wxPropertyContract.getPrice().equals(record.getPrice()) + ||!wxPropertyContract.getDeposit().equals(record.getDeposit()) + ||!wxPropertyContract.getAdjustPeriod().equals(record.getAdjustPeriod()) + || !DateUtils.date2String(wxPropertyContract.getRentalStartDate(),"yyyy-MM-dd").equals(DateUtils.date2String(record.getRentalStartDate(),"yyyy-MM-dd")) + )){ wxBillPropertyMapper.deletePreviewBill(record); //重新生成 wxPropertyContract.setPrice(record.getPrice()); @@ -342,20 +342,20 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService //wxBillProperty.setMerchantId(record.getMerchantId()); //List> billPropertyList = wxBillPropertyMapper.queryBillPropertyList(wxBillProperty); //if (billPropertyList.size() == 0) { - //预览账单改为正式,并写入商户id - WxBillProperty billProperty = new WxBillProperty(); - billProperty.setPropertyContractId(id); - billProperty.setIsPreview(EnumIsPreview.NO.getCode()); - billProperty.setMerchantId(record.getMerchantId()); - wxBillPropertyMapper.updatePreviewStatus(billProperty); - - WxMerchant wxMerchant = new WxMerchant(); - wxMerchant.setId(record.getMerchantId()); - wxMerchant.setTenantId(record.getTenantId()); - //物业账单 - //buildProperty(wxMerchant,null); - //物业押金账单 - buildDeposit(wxMerchant,id); + //预览账单改为正式,并写入商户id + WxBillProperty billProperty = new WxBillProperty(); + billProperty.setPropertyContractId(id); + billProperty.setIsPreview(EnumIsPreview.NO.getCode()); + billProperty.setMerchantId(record.getMerchantId()); + wxBillPropertyMapper.updatePreviewStatus(billProperty); + + WxMerchant wxMerchant = new WxMerchant(); + wxMerchant.setId(record.getMerchantId()); + wxMerchant.setTenantId(record.getTenantId()); + //物业账单 + //buildProperty(wxMerchant,null); + //物业押金账单 + buildDeposit(wxMerchant,id); //} } return new ResultData(Result.SUCCESS, "操作成功"); @@ -587,7 +587,9 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService if(receivePeriod > 1) { needPayDouble += price * extralease; } - needPayDouble += oneDayProce * endDateInt; + if(!isFirstDay(wxPropertyContract.getRentalStartDate())) { //残月才加 + needPayDouble += oneDayProce * endDateInt; + } }else{ //[A/31 *(31-12+1)]+A+A needPayDouble = oneDayProce * (DateUtils.getMonthDayCount(wxBillProperty.getStarttime())-startDateInt+1); @@ -615,32 +617,58 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService Date firstDay = DateUtils.getFirstDayForCurrMonth(wxBillProperty.getStarttime()); instance.clear(); instance.setTime(firstDay); + //最后一期有余,加上残月,(不整除时,最后一个月有余,否则为0) - if(receivePeriod > 1) { - if(isLastYesr) { - instance.add(dayType, extralease); - }else{ + if(isFirstDay(wxPropertyContract.getRentalStartDate())){ + if(receivePeriod > 1) { + if(isLastYesr && extralease > 0) { + instance.add(dayType, extralease); + }else{ + instance.add(dayType, receivePeriod); + } + }else { instance.add(dayType, receivePeriod); } + }else{ + if(receivePeriod > 1) { + if(isLastYesr) { + instance.add(dayType, extralease); + }else{ + instance.add(dayType, receivePeriod); + } + } + if(isLastYesr) { + instance.add(Calendar.DAY_OF_MONTH, rentStartDateInt - 1); + } } - if(isLastYesr) { - instance.add(Calendar.DAY_OF_MONTH, rentStartDateInt - 1); - } + instance.add(Calendar.DAY_OF_MONTH, -1); wxBillProperty.setEndtime(instance.getTime()); //逻辑同计算endtime double needPayDouble = 0; double oneDayProce = (double) price/DateUtils.getMonthDayCount(wxBillProperty.getEndtime()); - if(receivePeriod > 1) { - if(isLastYesr) { - needPayDouble += price * extralease; - }else{ + if(isFirstDay(wxPropertyContract.getRentalStartDate())){ + if(receivePeriod > 1) { + if(isLastYesr && extralease > 0) { + needPayDouble += price * extralease; + }else{ + needPayDouble += price * receivePeriod; + } + }else { needPayDouble += price * receivePeriod; } - } - if(isLastYesr) { - needPayDouble += oneDayProce * endDateInt; + }else{ + if(receivePeriod > 1) { + if(isLastYesr) { + needPayDouble += price * extralease; + }else{ + needPayDouble += price * receivePeriod; + } + } + if(isLastYesr) { + needPayDouble += oneDayProce * endDateInt; + } } DecimalFormat format = new DecimalFormat("0"); needpay = Integer.parseInt(format.format(needPayDouble)); //分做四舍五入 @@ -990,3 +1018,4 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService } } + 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 9a4d7f72c..5ecf29e1f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -813,7 +813,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { public Map buildRent(int lease, int receivePeriod, int price, Date startdate, int dayType, WxRentContract wxRentContract, Long userId, WxMerchant wxMerchant, int billcount, Integer isPreview, Map shopInfo,boolean isLastYesr) { System.out.println("------lease:"+lease+"receivePeriod:"+receivePeriod+"price:"+price+"start:"+DateUtils.date2String(startdate,"yyyy-MM-dd") - +"dayType:"+dayType+"billcount:"+billcount); + +"dayType:"+dayType+"billcount:"+billcount); String shopInfoStr = null; if (shopInfo != null) { @@ -840,12 +840,12 @@ public class WxRentContractServiceImpl implements WxRentContractService { int paycount = lease / receivePeriod + extracount; int index = paycount - 1; final IdWorker idWorker = IdWorker.get(); - //自然月,而且残月,周期整除,n+1,最后一个周期作为残月 + //自然月计租,而且残月,周期整除,n+1,最后一个周期作为残月 if(wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode()) - && !isFirstDay(wxRentContract.getRentalStartDate()) + && !isFirstDay(wxRentContract.getRentalStartDate()) && (wxRentContract.getLease() % wxRentContract.getReceivePeriod() == 0) && isLastYesr - ){ + ){ paycount ++; } for(int i = 0; i < paycount; i++){ @@ -933,7 +933,9 @@ public class WxRentContractServiceImpl implements WxRentContractService { if(receivePeriod > 1) { needPayDouble += price * extralease; } - needPayDouble += oneDayProce * endDateInt; + if(!isFirstDay(wxRentContract.getRentalStartDate())) { //残月才加 + needPayDouble += oneDayProce * endDateInt; + } }else{ //[A/31 *(31-12+1)]+A+A needPayDouble = oneDayProce * (DateUtils.getMonthDayCount(wxBillRent.getStarttime())-startDateInt+1); @@ -961,32 +963,58 @@ public class WxRentContractServiceImpl implements WxRentContractService { Date firstDay = DateUtils.getFirstDayForCurrMonth(wxBillRent.getStarttime()); instance.clear(); instance.setTime(firstDay); + //最后一期有余,加上残月,(不整除时,最后一个月有余,否则为0) - if(receivePeriod > 1) { - if(isLastYesr) { - instance.add(dayType, extralease); - }else{ + if(isFirstDay(wxRentContract.getRentalStartDate())){ + if(receivePeriod > 1) { + if(isLastYesr && extralease > 0) { + instance.add(dayType, extralease); + }else{ + instance.add(dayType, receivePeriod); + } + }else { instance.add(dayType, receivePeriod); } + }else{ + if(receivePeriod > 1) { + if(isLastYesr) { + instance.add(dayType, extralease); + }else{ + instance.add(dayType, receivePeriod); + } + } + if(isLastYesr) { + instance.add(Calendar.DAY_OF_MONTH, rentStartDateInt - 1); + } } - if(isLastYesr) { - instance.add(Calendar.DAY_OF_MONTH, rentStartDateInt - 1); - } + instance.add(Calendar.DAY_OF_MONTH, -1); wxBillRent.setEndtime(instance.getTime()); //逻辑同计算endtime double needPayDouble = 0; double oneDayProce = (double) price/DateUtils.getMonthDayCount(wxBillRent.getEndtime()); - if(receivePeriod > 1) { - if(isLastYesr) { - needPayDouble += price * extralease; - }else{ + if(isFirstDay(wxRentContract.getRentalStartDate())){ + if(receivePeriod > 1) { + if(isLastYesr && extralease > 0) { + needPayDouble += price * extralease; + }else{ + needPayDouble += price * receivePeriod; + } + }else { needPayDouble += price * receivePeriod; } - } - if(isLastYesr) { - needPayDouble += oneDayProce * endDateInt; + }else{ + if(receivePeriod > 1) { + if(isLastYesr) { + needPayDouble += price * extralease; + }else{ + needPayDouble += price * receivePeriod; + } + } + if(isLastYesr) { + needPayDouble += oneDayProce * endDateInt; + } } DecimalFormat format = new DecimalFormat("0"); needpay = Integer.parseInt(format.format(needPayDouble)); //分做四舍五入 @@ -1406,13 +1434,13 @@ public class WxRentContractServiceImpl implements WxRentContractService { // List> billRentList = wxBillRentMapper.queryBillRentList(wxBillRent); // if (billRentList.size() == 0) { - WxMerchant wxMerchant = new WxMerchant(); - wxMerchant.setId(record.getMerchantId()); - wxMerchant.setTenantId(record.getTenantId()); - //租金 + WxMerchant wxMerchant = new WxMerchant(); + wxMerchant.setId(record.getMerchantId()); + wxMerchant.setTenantId(record.getTenantId()); + //租金 // buildRent(wxMerchant, null,null); - //押金 - buildDeposit(wxMerchant, null,id); + //押金 + buildDeposit(wxMerchant, null,id); // } } //作废合同 @@ -1982,3 +2010,4 @@ public class WxRentContractServiceImpl implements WxRentContractService { } } + diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxTopicServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxTopicServiceImpl.java index b99359170..ee9311aa3 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxTopicServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxTopicServiceImpl.java @@ -75,11 +75,17 @@ public class WxTopicServiceImpl implements WxTopicService { query.setBeginTime(record.getBeginTime()); query.setEndTime(record.getEndTime()); } - List topicList = wxTopicMapper.findExist(query); - if (CollectionUtils.isNotEmpty(topicList)) { - return new ResultData(ErrorCode.SYS_REPEAT_SUBMIT_EXCEPTION.getCode(), "["+topicList.get(0).getName()+"]正在活动中,截止至"+ DateUtils.date2String(topicList.get(0).getEndTime(),"yyyy-MM-dd")); + WxTopic dbquery = new WxTopic(); + dbquery.setTenantId(record.getTenantId()); + dbquery.setStatus(EnumWxTopicStatus.VAILD.getCode()); + List onLineTopicList = wxTopicMapper.findList(dbquery); + for (WxTopic topic:onLineTopicList) { + if (query.getBeginTime().after(topic.getBeginTime()) && query.getEndTime().before(topic.getEndTime())) { + return new ResultData(ErrorCode.SYS_REPEAT_SUBMIT_EXCEPTION.getCode(), "[" + topic.getName() + "]正在活动中,截止至" + DateUtils.date2String(topic.getEndTime(), "yyyy-MM-dd")); + } } } + if (record.getId() == null) { final IdWorker idWorker = IdWorker.get(); record.setId(idWorker.nextId()); diff --git a/mallinkService/src/main/java/com/iformall/utils/DateUtils.java b/mallinkService/src/main/java/com/iformall/utils/DateUtils.java index a3ce3a0a4..0a3a04a0a 100755 --- a/mallinkService/src/main/java/com/iformall/utils/DateUtils.java +++ b/mallinkService/src/main/java/com/iformall/utils/DateUtils.java @@ -1060,4 +1060,27 @@ public class DateUtils { return getFirstDayForCurrMonth(d); } + /** + * 判断时间是否在时间段内 + * @param nowTime + * @param beginTime + * @param endTime + * @return + */ + public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) { + Calendar date = Calendar.getInstance(); + date.setTime(nowTime); + Calendar begin = Calendar.getInstance(); + begin.setTime(beginTime); + Calendar end = Calendar.getInstance(); + end.setTime(endTime); + if (date.after(begin) && date.before(end)) { + return true; + } else if (nowTime.compareTo(beginTime) == 0 || nowTime.compareTo(endTime) == 0) { + return true; + } else { + return false; + } + } + }