| @@ -292,11 +292,11 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService | |||||
| //生成预览账单 | //生成预览账单 | ||||
| if(CollectionUtils.isEmpty(billList) || | if(CollectionUtils.isEmpty(billList) || | ||||
| (!wxPropertyContract.getReceivePeriod().equals(record.getReceivePeriod()) | (!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); | wxBillPropertyMapper.deletePreviewBill(record); | ||||
| //重新生成 | //重新生成 | ||||
| wxPropertyContract.setPrice(record.getPrice()); | wxPropertyContract.setPrice(record.getPrice()); | ||||
| @@ -342,20 +342,20 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService | |||||
| //wxBillProperty.setMerchantId(record.getMerchantId()); | //wxBillProperty.setMerchantId(record.getMerchantId()); | ||||
| //List<Map<String, Object>> billPropertyList = wxBillPropertyMapper.queryBillPropertyList(wxBillProperty); | //List<Map<String, Object>> billPropertyList = wxBillPropertyMapper.queryBillPropertyList(wxBillProperty); | ||||
| //if (billPropertyList.size() == 0) { | //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, "操作成功"); | return new ResultData(Result.SUCCESS, "操作成功"); | ||||
| @@ -587,7 +587,9 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService | |||||
| if(receivePeriod > 1) { | if(receivePeriod > 1) { | ||||
| needPayDouble += price * extralease; | needPayDouble += price * extralease; | ||||
| } | } | ||||
| needPayDouble += oneDayProce * endDateInt; | |||||
| if(!isFirstDay(wxPropertyContract.getRentalStartDate())) { //残月才加 | |||||
| needPayDouble += oneDayProce * endDateInt; | |||||
| } | |||||
| }else{ | }else{ | ||||
| //[A/31 *(31-12+1)]+A+A | //[A/31 *(31-12+1)]+A+A | ||||
| needPayDouble = oneDayProce * (DateUtils.getMonthDayCount(wxBillProperty.getStarttime())-startDateInt+1); | needPayDouble = oneDayProce * (DateUtils.getMonthDayCount(wxBillProperty.getStarttime())-startDateInt+1); | ||||
| @@ -615,32 +617,58 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService | |||||
| Date firstDay = DateUtils.getFirstDayForCurrMonth(wxBillProperty.getStarttime()); | Date firstDay = DateUtils.getFirstDayForCurrMonth(wxBillProperty.getStarttime()); | ||||
| instance.clear(); | instance.clear(); | ||||
| instance.setTime(firstDay); | instance.setTime(firstDay); | ||||
| //最后一期有余,加上残月,(不整除时,最后一个月有余,否则为0) | //最后一期有余,加上残月,(不整除时,最后一个月有余,否则为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); | 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); | instance.add(Calendar.DAY_OF_MONTH, -1); | ||||
| wxBillProperty.setEndtime(instance.getTime()); | wxBillProperty.setEndtime(instance.getTime()); | ||||
| //逻辑同计算endtime | //逻辑同计算endtime | ||||
| double needPayDouble = 0; | double needPayDouble = 0; | ||||
| double oneDayProce = (double) price/DateUtils.getMonthDayCount(wxBillProperty.getEndtime()); | 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; | 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"); | DecimalFormat format = new DecimalFormat("0"); | ||||
| needpay = Integer.parseInt(format.format(needPayDouble)); //分做四舍五入 | 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) { | 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") | 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; | String shopInfoStr = null; | ||||
| if (shopInfo != null) { | if (shopInfo != null) { | ||||
| @@ -840,12 +840,12 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||||
| int paycount = lease / receivePeriod + extracount; | int paycount = lease / receivePeriod + extracount; | ||||
| int index = paycount - 1; | int index = paycount - 1; | ||||
| final IdWorker idWorker = IdWorker.get(); | final IdWorker idWorker = IdWorker.get(); | ||||
| //自然月,而且残月,周期整除,n+1,最后一个周期作为残月 | |||||
| //自然月计租,而且残月,周期整除,n+1,最后一个周期作为残月 | |||||
| if(wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode()) | if(wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode()) | ||||
| && !isFirstDay(wxRentContract.getRentalStartDate()) | |||||
| && !isFirstDay(wxRentContract.getRentalStartDate()) | |||||
| && (wxRentContract.getLease() % wxRentContract.getReceivePeriod() == 0) | && (wxRentContract.getLease() % wxRentContract.getReceivePeriod() == 0) | ||||
| && isLastYesr | && isLastYesr | ||||
| ){ | |||||
| ){ | |||||
| paycount ++; | paycount ++; | ||||
| } | } | ||||
| for(int i = 0; i < paycount; i++){ | for(int i = 0; i < paycount; i++){ | ||||
| @@ -933,7 +933,9 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||||
| if(receivePeriod > 1) { | if(receivePeriod > 1) { | ||||
| needPayDouble += price * extralease; | needPayDouble += price * extralease; | ||||
| } | } | ||||
| needPayDouble += oneDayProce * endDateInt; | |||||
| if(!isFirstDay(wxRentContract.getRentalStartDate())) { //残月才加 | |||||
| needPayDouble += oneDayProce * endDateInt; | |||||
| } | |||||
| }else{ | }else{ | ||||
| //[A/31 *(31-12+1)]+A+A | //[A/31 *(31-12+1)]+A+A | ||||
| needPayDouble = oneDayProce * (DateUtils.getMonthDayCount(wxBillRent.getStarttime())-startDateInt+1); | needPayDouble = oneDayProce * (DateUtils.getMonthDayCount(wxBillRent.getStarttime())-startDateInt+1); | ||||
| @@ -961,32 +963,58 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||||
| Date firstDay = DateUtils.getFirstDayForCurrMonth(wxBillRent.getStarttime()); | Date firstDay = DateUtils.getFirstDayForCurrMonth(wxBillRent.getStarttime()); | ||||
| instance.clear(); | instance.clear(); | ||||
| instance.setTime(firstDay); | instance.setTime(firstDay); | ||||
| //最后一期有余,加上残月,(不整除时,最后一个月有余,否则为0) | //最后一期有余,加上残月,(不整除时,最后一个月有余,否则为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); | 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); | instance.add(Calendar.DAY_OF_MONTH, -1); | ||||
| wxBillRent.setEndtime(instance.getTime()); | wxBillRent.setEndtime(instance.getTime()); | ||||
| //逻辑同计算endtime | //逻辑同计算endtime | ||||
| double needPayDouble = 0; | double needPayDouble = 0; | ||||
| double oneDayProce = (double) price/DateUtils.getMonthDayCount(wxBillRent.getEndtime()); | 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; | 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"); | DecimalFormat format = new DecimalFormat("0"); | ||||
| needpay = Integer.parseInt(format.format(needPayDouble)); //分做四舍五入 | needpay = Integer.parseInt(format.format(needPayDouble)); //分做四舍五入 | ||||
| @@ -1406,13 +1434,13 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||||
| // List<Map<String, Object>> billRentList = wxBillRentMapper.queryBillRentList(wxBillRent); | // List<Map<String, Object>> billRentList = wxBillRentMapper.queryBillRentList(wxBillRent); | ||||
| // if (billRentList.size() == 0) { | // 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); | // 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.setBeginTime(record.getBeginTime()); | ||||
| query.setEndTime(record.getEndTime()); | 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) { | if (record.getId() == null) { | ||||
| final IdWorker idWorker = IdWorker.get(); | final IdWorker idWorker = IdWorker.get(); | ||||
| record.setId(idWorker.nextId()); | record.setId(idWorker.nextId()); | ||||
| @@ -1060,4 +1060,27 @@ public class DateUtils { | |||||
| return getFirstDayForCurrMonth(d); | 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; | |||||
| } | |||||
| } | |||||
| } | } | ||||