From 9d0307376313f526c2c18bbcb13ec5cb76fc3bdf Mon Sep 17 00:00:00 2001 From: xiezhijun <15270898033@163.com> Date: Sat, 13 Mar 2021 15:40:34 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A3=9F=E8=B0=B1=E8=AE=A1=E5=88=92=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SysRecipesPlanServiceImpl.java | 68 ++++++++++--------- 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java index ec0d0ac54..27697a26b 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java @@ -198,7 +198,6 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService { } //更新 if(updateList.size() > 0){ - System.out.println("更新数量:"+updateList.size()); for (SysRecipesPlan plan : updateList) { sysRecipesPlanMapper.updateSysRecipesPlan(plan); } @@ -242,16 +241,18 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService { //判断是否大于服务到期时间 if (ChronoUnit.DAYS.between(planEndDate, serverEndDate) <= 0) { planEndDate = serverEndDate; - breakFlag = false; } String[] pauseResult = dealPlanPause(planStartDate, planEndDate, pauseList); - //开始时间变更为暂停结束之后的日期,因为暂停开始时间与食谱计划开始时间相同 - if(StringUtils.isNotEmpty(pauseResult[0])){ - planStartDate = DateUtils.stringToLocalDate(pauseResult[0],"yyyyMMdd"); - planEndDate = DateUtils.stringToLocalDate(pauseResult[1],"yyyyMMdd"); + //根据暂停结果返回的数据更新计划开始、结束时间 + planStartDate = DateUtils.stringToLocalDate(pauseResult[0],"yyyyMMdd"); + planEndDate = DateUtils.stringToLocalDate(pauseResult[1],"yyyyMMdd"); + //判断是否大于服务到期时间 + if (ChronoUnit.DAYS.between(planEndDate, serverEndDate) <= 0) { + planEndDate = serverEndDate; + breakFlag = false; } - //加上暂停时间 - planEndDate = planEndDate.plusDays(Integer.parseInt(pauseResult[2])); + //暂停日期 + sysRecipesPlan.setPauseDate(pauseResult[3]); sysRecipesPlan.setStartDate(DateUtils.localDateToDate(planStartDate)); sysRecipesPlan.setEndDate(DateUtils.localDateToDate(planEndDate)); sysRecipesPlan.setOrderId(sysOrder.getOrderId()); @@ -259,10 +260,9 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService { sysRecipesPlan.setOutId(Md5Utils.hash(String.valueOf(sysOrder.getCusId()))); oldStartNumDay += 1; sysRecipesPlan.setStartNumDay(oldStartNumDay); - oldStartNumDay += 6; + long dayNumber = ChronoUnit.DAYS.between(planStartDate, planEndDate); + oldStartNumDay += dayNumber > 6 ? 6 : dayNumber; sysRecipesPlan.setEndNumDay(oldStartNumDay); - //暂停日期 - sysRecipesPlan.setPauseDate(pauseResult[3]); //添加暂停范围内的日期 planList.add(sysRecipesPlan); }while (breakFlag); @@ -285,33 +285,37 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService { if (pauseList != null && pauseList.size() > 0) { //每条暂停时间的范围不会重叠,在添加暂停时做了限制 for (SysOrderPause sysOrderPause : pauseList) { - LocalDate pauseStartDate = DateUtils.dateToLocalDate(sysOrderPause.getPauseStartDate()); - LocalDate pauseEndDate = DateUtils.dateToLocalDate(sysOrderPause.getPauseEndDate()); - if (ChronoUnit.DAYS.between(pauseEndDate, planStartDate) > 0 || ChronoUnit.DAYS.between(planEndDate, pauseStartDate) > 0) { - continue; - } - if (ChronoUnit.DAYS.between(pauseStartDate, planStartDate) > 0) { - pauseStartDate = planStartDate; - } - if (ChronoUnit.DAYS.between(planEndDate, pauseEndDate) > 0) { - pauseEndDate = planEndDate; - } - //判断暂停记录是否从食谱计划开始时间开始的 - if(ChronoUnit.DAYS.between(pauseStartDate, planStartDate) == 0){ - //记录该条暂停记录结束之后的第一天日期,如果两条记录连着,则取最后暂停结束之后的第一天 - if("".equals(result[0]) || result[0].equals(DateUtils.localDateToString(pauseStartDate,"yyyyMMdd"))){ + while(true){ + LocalDate pauseStartDate = DateUtils.dateToLocalDate(sysOrderPause.getPauseStartDate()); + LocalDate pauseEndDate = DateUtils.dateToLocalDate(sysOrderPause.getPauseEndDate()); + if (ChronoUnit.DAYS.between(pauseEndDate, planStartDate) > 0 || ChronoUnit.DAYS.between(planEndDate, pauseStartDate) > 0) { + break; + } + if (ChronoUnit.DAYS.between(pauseStartDate, planStartDate) > 0) { + pauseStartDate = planStartDate; + } + if (ChronoUnit.DAYS.between(planEndDate, pauseEndDate) > 0) { + pauseEndDate = planEndDate; + } + //判断暂停记录是否从食谱计划开始时间开始的 + if(ChronoUnit.DAYS.between(pauseStartDate, planStartDate) == 0){ planStartDate = pauseEndDate.plusDays(1); planEndDate = planStartDate.plusDays(6); - result[0] = DateUtils.localDateToString(planStartDate,"yyyyMMdd"); - result[1] = DateUtils.localDateToString(planEndDate,"yyyyMMdd"); + }else{ + planEndDate = planEndDate.plusDays(ChronoUnit.DAYS.between(pauseStartDate, pauseEndDate) + 1); + pauseDateString.addAll(getPauseDateString(pauseStartDate, pauseEndDate)); + break; } - }else{ - pauseDay += ChronoUnit.DAYS.between(pauseStartDate, pauseEndDate) + 1; - pauseDateString.addAll(getPauseDateString(pauseStartDate, pauseEndDate)); } + /*System.out.println("---------------------------------------"); + System.out.println(DateUtils.localDateToString(planStartDate, "yyyy-MM-dd")); + System.out.println(DateUtils.localDateToString(planEndDate, "yyyy-MM-dd")); + System.out.println("---------------------------------------");*/ } } - result[2] = pauseDay+""; + result[0] = DateUtils.localDateToString(planStartDate,"yyyyMMdd"); + result[1] = DateUtils.localDateToString(planEndDate,"yyyyMMdd"); + result[2] = pauseDay + ""; result[3] = pauseDateString.size() > 0 ? StringUtils.join(pauseDateString,"|") : ""; return result; }