| @@ -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<Map<String, Object>> 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 | |||
| } | |||
| } | |||
| @@ -813,7 +813,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| public Map<String, Object> buildRent(int lease, int receivePeriod, int price, Date startdate, int dayType, WxRentContract wxRentContract, Long userId, WxMerchant wxMerchant, int billcount, Integer isPreview, Map<String, Object> 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<Map<String, Object>> 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 { | |||
| } | |||
| } | |||
| @@ -75,11 +75,17 @@ public class WxTopicServiceImpl implements WxTopicService { | |||
| query.setBeginTime(record.getBeginTime()); | |||
| query.setEndTime(record.getEndTime()); | |||
| } | |||
| List<WxTopic> 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<WxTopic> 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()); | |||
| @@ -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; | |||
| } | |||
| } | |||
| } | |||