diff --git a/stdiet-admin/src/main/filters/dev/application.yml b/stdiet-admin/src/main/filters/dev/application.yml index 6536928b3..91d0fbcdd 100644 --- a/stdiet-admin/src/main/filters/dev/application.yml +++ b/stdiet-admin/src/main/filters/dev/application.yml @@ -148,6 +148,7 @@ mybatis: mapperLocations: classpath*:mapper/**/*Mapper.xml # 加载全局的配置文件 configLocation: classpath:mybatis/mybatis-config.xml + typeHandlersPackage: com.stdiet.**.typehandler # PageHelper分页插件 pagehelper: diff --git a/stdiet-admin/src/main/filters/local/application.yml b/stdiet-admin/src/main/filters/local/application.yml index 057dee4c1..d135b20ca 100644 --- a/stdiet-admin/src/main/filters/local/application.yml +++ b/stdiet-admin/src/main/filters/local/application.yml @@ -148,6 +148,7 @@ mybatis: mapperLocations: classpath*:mapper/**/*Mapper.xml # 加载全局的配置文件 configLocation: classpath:mybatis/mybatis-config.xml + typeHandlersPackage: com.stdiet.**.typehandler # PageHelper分页插件 pagehelper: diff --git a/stdiet-admin/src/main/filters/prod/application.yml b/stdiet-admin/src/main/filters/prod/application.yml index 4044c157a..dab9fc36e 100644 --- a/stdiet-admin/src/main/filters/prod/application.yml +++ b/stdiet-admin/src/main/filters/prod/application.yml @@ -148,6 +148,7 @@ mybatis: mapperLocations: classpath*:mapper/**/*Mapper.xml # 加载全局的配置文件 configLocation: classpath:mybatis/mybatis-config.xml + typeHandlersPackage: com.stdiet.**.typehandler # PageHelper分页插件 pagehelper: diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesController.java index 0ba05c017..950b7c1cc 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesController.java @@ -1,23 +1,82 @@ package com.stdiet.web.controller.custom; +import com.stdiet.common.annotation.Log; import com.stdiet.common.core.controller.BaseController; import com.stdiet.common.core.domain.AjaxResult; +import com.stdiet.common.enums.BusinessType; +import com.stdiet.custom.domain.SysRecipes; +import com.stdiet.custom.domain.SysRecipesDailyDishes; import com.stdiet.custom.service.ISysRecipesService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController -@RequestMapping("/recipes") +@RequestMapping("/custom/recipes") public class SysRecipesController extends BaseController { @Autowired private ISysRecipesService sysRecipesService; + /** + * 获取食谱详情 + * + * @param resipesId + * @return + */ @GetMapping(value = "/{resipesId}") public AjaxResult getInfo(@PathVariable("resipesId") Long resipesId) { return AjaxResult.success(sysRecipesService.selectSysRecipesByRecipesId(resipesId)); } + + @Log(title = "食谱", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult addRecipes(@RequestBody SysRecipes sysRecipes) { + int rows = sysRecipesService.addRecipes(sysRecipes); + if (rows > 0) { + return AjaxResult.success(sysRecipes.getId()); + } else { + return AjaxResult.error(); + } + } + + /** + * 修改食谱菜品 + * + * @param sysRecipesDailyDishes + * @return + */ + @Log(title = "食谱菜品", businessType = BusinessType.UPDATE) + @PutMapping(value = "/dishes") + public AjaxResult edit(@RequestBody SysRecipesDailyDishes sysRecipesDailyDishes) { + return toAjax(sysRecipesService.updateDishesDetail(sysRecipesDailyDishes)); + } + + /** + * 添加菜品 + * + * @param sysRecipesDailyDishes + * @return + */ + @Log(title = "食谱菜品", businessType = BusinessType.INSERT) + @PostMapping(value = "/dishes") + public AjaxResult add(@RequestBody SysRecipesDailyDishes sysRecipesDailyDishes) { + int rows = sysRecipesService.addDishes(sysRecipesDailyDishes); + if (rows > 0) { + return AjaxResult.success(sysRecipesDailyDishes.getId()); + } else { + return AjaxResult.error(); + } + } + + /** + * 删除菜品 + * + * @param id + * @return + */ + @Log(title = "食谱菜品", businessType = BusinessType.DELETE) + @DeleteMapping("/dishes/{id}") + public AjaxResult delete(@PathVariable Long id) { + return toAjax(sysRecipesService.deleteDishes(id)); + } } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishes.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishes.java index 61bd86838..6d6f32c9f 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishes.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishes.java @@ -1,5 +1,6 @@ package com.stdiet.custom.domain; +import com.alibaba.fastjson.JSONArray; import com.fasterxml.jackson.annotation.JsonFormat; import com.stdiet.common.annotation.Excel; import lombok.Data; @@ -74,6 +75,4 @@ public class SysDishes { private List igdList; - private List detail; - } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishesIngredient.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishesIngredient.java index b4fb4200b..092dce023 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishesIngredient.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishesIngredient.java @@ -1,8 +1,6 @@ package com.stdiet.custom.domain; import lombok.Data; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; import java.math.BigDecimal; @@ -27,4 +25,11 @@ public class SysDishesIngredient extends SysIngredient { private String remark; + private Long id; + + private String cus_unit; + + private String cus_weight; + + } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipes.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipes.java index 9b727297d..40dc33b41 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipes.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipes.java @@ -1,47 +1,17 @@ package com.stdiet.custom.domain; -import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; -import java.util.Date; import java.util.List; @Data public class SysRecipes { - private static final long serialVersionUID = 1L; private Long id; - private Integer numDay; + private Long cusId; - private List dishes; + private Long planId; - private Integer reviewStatus; - - /** - * 创建者 - */ - private String createBy; - - /** - * 创建时间 - */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date createTime; - - /** - * 更新者 - */ - private String updateBy; - - /** - * 更新时间 - */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date updateTime; - - /** - * 备注 - */ - private String remark; + private List menus; } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesDaily.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesDaily.java new file mode 100644 index 000000000..057f25b21 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesDaily.java @@ -0,0 +1,34 @@ +package com.stdiet.custom.domain; + +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class SysRecipesDaily { + private Long id; + + private Integer numDay; + + private Date date; + + private Long recipesId; + + private Long cusId; + + private Integer reviewStatus; + + private Date createTime; + + private String createBy; + + private Date updateTime; + + private String updateBy; + + private String remark; + + private List dishes; + +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesDailyDishes.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesDailyDishes.java new file mode 100644 index 000000000..b4e5d5e77 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesDailyDishes.java @@ -0,0 +1,28 @@ +package com.stdiet.custom.domain; + +import com.alibaba.fastjson.JSONArray; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class SysRecipesDailyDishes { + private Long id; + + private Long menuId; + + private String name; + + private Long dishesId; + + private JSONArray detail; + + private String methods; + + private List igdList; + + private String type; + + private Integer isMain; +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesPlan.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesPlan.java index 27e41ec0b..c67a8fc8e 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesPlan.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesPlan.java @@ -26,6 +26,8 @@ public class SysRecipesPlan extends BaseEntity //@Excel(name = "订单ID") private Long orderId; + private Long cusId; + //客户ID private Long customerId; diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesMapper.java index e0bfdcc0a..b97792625 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesMapper.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesMapper.java @@ -1,10 +1,28 @@ package com.stdiet.custom.mapper; import com.stdiet.custom.domain.SysRecipes; +import com.stdiet.custom.domain.SysRecipesDaily; +import com.stdiet.custom.domain.SysRecipesDailyDishes; import java.util.List; public interface SysRecipesMapper { + + public int addRecipes(SysRecipes sysRecipes); + + public int bashAddDishes(List dishes); + + public int bashAddMenus(List menus); + + + public int getNumDayByCusId(Long id); + public List selectSysRecipesByRecipesId(Long id); + + public int updateDishesDetail(SysRecipesDailyDishes sysRecipesDaily); + + public int addDishes(SysRecipesDailyDishes sysRecipesDaily); + + public int deleteDishes(Long id); } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesService.java index 5bf1c4a39..b23c9b81c 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesService.java @@ -1,9 +1,20 @@ package com.stdiet.custom.service; import com.stdiet.custom.domain.SysRecipes; +import com.stdiet.custom.domain.SysRecipesDaily; +import com.stdiet.custom.domain.SysRecipesDailyDishes; import java.util.List; public interface ISysRecipesService { + + public int addRecipes(SysRecipes sysRecipes); + public List selectSysRecipesByRecipesId(Long id); + + public int updateDishesDetail(SysRecipesDailyDishes sysRecipesDaily); + + public int addDishes(SysRecipesDailyDishes sysRecipesDaily); + + public int deleteDishes(Long id); } 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 1391c3d92..d94cc5448 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 @@ -1,24 +1,24 @@ package com.stdiet.custom.service.impl; +import com.stdiet.common.utils.DateUtils; +import com.stdiet.common.utils.SynchrolockUtil; +import com.stdiet.custom.domain.SysOrder; +import com.stdiet.custom.domain.SysOrderPause; +import com.stdiet.custom.domain.SysRecipesPlan; +import com.stdiet.custom.mapper.SysRecipesPlanMapper; +import com.stdiet.custom.service.ISysOrderPauseService; +import com.stdiet.custom.service.ISysOrderService; +import com.stdiet.custom.service.ISysRecipesPlanService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + import java.time.LocalDate; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.Date; import java.util.List; -import com.stdiet.common.utils.DateUtils; -import com.stdiet.common.utils.SynchrolockUtil; -import com.stdiet.custom.domain.SysOrder; -import com.stdiet.custom.domain.SysOrderPause; -import com.stdiet.custom.service.ISysOrderPauseService; -import com.stdiet.custom.service.ISysOrderService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.annotation.QueryAnnotation; -import org.springframework.scheduling.annotation.Async; -import org.springframework.stereotype.Service; -import com.stdiet.custom.mapper.SysRecipesPlanMapper; -import com.stdiet.custom.domain.SysRecipesPlan; -import com.stdiet.custom.service.ISysRecipesPlanService; -import org.springframework.transaction.annotation.Transactional; /** * 食谱计划Service业务层处理 @@ -28,22 +28,17 @@ import org.springframework.transaction.annotation.Transactional; */ @Service("sysRecipesPlanService") @Transactional -public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService -{ +public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService { + public static final String generateRecipesPlanLockKey = "generateRecipesPlanLock::%s"; @Autowired private SysRecipesPlanMapper sysRecipesPlanMapper; - @Autowired private ISysOrderService sysOrderService; - @Autowired private ISysOrderPauseService sysOrderPauseService; - @Autowired private SynchrolockUtil synchrolockUtil; - public static final String generateRecipesPlanLockKey = "generateRecipesPlanLock::%s"; - /** * 查询食谱计划 * @@ -51,8 +46,7 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService * @return 食谱计划 */ @Override - public SysRecipesPlan selectSysRecipesPlanById(Long id) - { + public SysRecipesPlan selectSysRecipesPlanById(Long id) { return sysRecipesPlanMapper.selectSysRecipesPlanById(id); } @@ -63,8 +57,7 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService * @return 食谱计划 */ @Override - public List selectSysRecipesPlanList(SysRecipesPlan sysRecipesPlan) - { + public List selectSysRecipesPlanList(SysRecipesPlan sysRecipesPlan) { return sysRecipesPlanMapper.selectSysRecipesPlanList(sysRecipesPlan); } @@ -75,8 +68,7 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService * @return 结果 */ @Override - public int insertSysRecipesPlan(SysRecipesPlan sysRecipesPlan) - { + public int insertSysRecipesPlan(SysRecipesPlan sysRecipesPlan) { sysRecipesPlan.setCreateTime(DateUtils.getNowDate()); return sysRecipesPlanMapper.insertSysRecipesPlan(sysRecipesPlan); } @@ -88,8 +80,7 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService * @return 结果 */ @Override - public int updateSysRecipesPlan(SysRecipesPlan sysRecipesPlan) - { + public int updateSysRecipesPlan(SysRecipesPlan sysRecipesPlan) { sysRecipesPlan.setUpdateTime(DateUtils.getNowDate()); //目前只能修改发送状态,所以修改时加上发送时间 sysRecipesPlan.setSendTime(DateUtils.getNowDate()); @@ -103,8 +94,7 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService * @return 结果 */ @Override - public int deleteSysRecipesPlanByIds(Long[] ids) - { + public int deleteSysRecipesPlanByIds(Long[] ids) { return sysRecipesPlanMapper.deleteSysRecipesPlanByIds(ids); } @@ -115,8 +105,7 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService * @return 结果 */ @Override - public int deleteSysRecipesPlanById(Long id) - { + public int deleteSysRecipesPlanById(Long id) { return sysRecipesPlanMapper.deleteSysRecipesPlanById(id); } @@ -128,47 +117,47 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService */ @Override @Async - public void regenerateRecipesPlan(Long orderId){ - if(orderId == null || orderId <= 0){ + public void regenerateRecipesPlan(Long orderId) { + if (orderId == null || orderId <= 0) { return; } SysOrder sysOrder = sysOrderService.selectSysOrderById(orderId); //订单为空、金额小于0不进行食谱生成、更新,只对2021年开始的订单进行食谱计划生成 - if(sysOrder == null && DateUtils.dateToLocalDate(sysOrder.getOrderTime()).getYear() < 2021){ + if (sysOrder == null && DateUtils.dateToLocalDate(sysOrder.getOrderTime()).getYear() < 2021) { return; } - System.out.println(DateUtils.dateToLocalDate(sysOrder.getOrderTime()).getYear()); - try{ +// System.out.println(DateUtils.dateToLocalDate(sysOrder.getOrderTime()).getYear()); + try { //获取redis中该订单对应的锁 - if(synchrolockUtil.lock(String.format(generateRecipesPlanLockKey, orderId))){ + if (synchrolockUtil.lock(String.format(generateRecipesPlanLockKey, orderId))) { SysRecipesPlan queryParam = new SysRecipesPlan(); queryParam.setOrderId(orderId); List oldRecipesPlanList = sysRecipesPlanMapper.selectSysRecipesPlanList(queryParam); //判断是否已存在食谱 - if(oldRecipesPlanList != null && oldRecipesPlanList.size() > 0){ + if (oldRecipesPlanList != null && oldRecipesPlanList.size() > 0) { Long[] orderIdArray = new Long[1]; orderIdArray[0] = orderId; //删除该订单对于食谱 delRecipesPlanByOrderId(orderIdArray); } //判断订单金额、开始时间、结束时间,为空则直接返回,不重新生成食谱计划 - if(sysOrder.getAmount().floatValue() <= 0 || sysOrder.getStartTime() == null || sysOrder.getServerEndTime() == null){ + if (sysOrder.getAmount().floatValue() <= 0 || sysOrder.getStartTime() == null || sysOrder.getServerEndTime() == null) { return; } SysOrderPause pauseParam = new SysOrderPause(); pauseParam.setOrderId(sysOrder.getOrderId()); //暂停记录列表 List pauseList = sysOrderPauseService.selectSysOrderPauseList(pauseParam); - List planList = generatePlan(orderId, oldRecipesPlanList, DateUtils.dateToLocalDate(sysOrder.getStartTime()), DateUtils.dateToLocalDate(sysOrder.getServerEndTime()), pauseList); - if(planList != null && planList.size() > 0){ + List planList = generatePlan(sysOrder, oldRecipesPlanList, + DateUtils.dateToLocalDate(sysOrder.getStartTime()), DateUtils.dateToLocalDate(sysOrder.getServerEndTime()), pauseList); + if (planList != null && planList.size() > 0) { sysRecipesPlanMapper.insertBatch(planList); } /*for (SysRecipesPlan sysRecipesPlan : planList) { getTestDate(sysRecipesPlan.getStartDate(), sysRecipesPlan.getEndDate()); }*/ } - } - catch (Exception e) { + } catch (Exception e) { e.printStackTrace(); } finally { // 一定要释放锁 @@ -176,32 +165,34 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService } } - public void getTestDate(Date date, Date date2){ + public void getTestDate(Date date, Date date2) { LocalDate d = DateUtils.dateToLocalDate(date); - LocalDate d2 = DateUtils.dateToLocalDate(date2); - String s1 = d.getYear() +"-" + d.getMonthValue() + "-" + d.getDayOfMonth(); - String s2 = d2.getYear() +"-" + d2.getMonthValue() + "-" + d2.getDayOfMonth(); + LocalDate d2 = DateUtils.dateToLocalDate(date2); + String s1 = d.getYear() + "-" + d.getMonthValue() + "-" + d.getDayOfMonth(); + String s2 = d2.getYear() + "-" + d2.getMonthValue() + "-" + d2.getDayOfMonth(); System.out.println(s1 + " " + s2); } /** * 根据订单ID、订单开始服务时间、结束时间、暂停列表生成食谱计划列表 - * @param orderId 订单ID + * + * @param sysOrder 订单对象 * @param oldRecipesPlanList 旧的食谱计划 - * @param serverStartDate 服务开始时间 - * @param serverEndDate 服务结束时间 - * @param pauseList 暂停列表 + * @param serverStartDate 服务开始时间 + * @param serverEndDate 服务结束时间 + * @param pauseList 暂停列表 * @return */ - public List generatePlan(Long orderId, List oldRecipesPlanList, LocalDate serverStartDate, LocalDate serverEndDate, List pauseList){ + public List generatePlan(SysOrder sysOrder, List oldRecipesPlanList, + LocalDate serverStartDate, LocalDate serverEndDate, List pauseList) { List planList = new ArrayList<>(); boolean breakFlag = false; LocalDate planStartDate = serverStartDate; LocalDate planEndDate = planStartDate.plusDays(6); - while (true){ + while (true) { SysRecipesPlan sysRecipesPlan = new SysRecipesPlan(); //判断是否大于服务到期时间 - if(ChronoUnit.DAYS.between(planEndDate, serverEndDate) <= 0){ + if (ChronoUnit.DAYS.between(planEndDate, serverEndDate) <= 0) { planEndDate = serverEndDate; breakFlag = true; } @@ -210,14 +201,15 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService planEndDate = planEndDate.plusDays(pauseDay); sysRecipesPlan.setStartDate(DateUtils.localDateToDate(planStartDate)); sysRecipesPlan.setEndDate(DateUtils.localDateToDate(planEndDate)); - sysRecipesPlan.setOrderId(orderId); + sysRecipesPlan.setOrderId(sysOrder.getOrderId()); + sysRecipesPlan.setCusId(sysOrder.getCusId()); /*//当开始时间小于等于当前时间,默认为已发送,发送时间为前一天 if(ChronoUnit.DAYS.between(planStartDate, LocalDate.now()) >= 0){ sysRecipesPlan.setSendFlag(1); sysRecipesPlan.setSendTime(DateUtils.localDateToDate(LocalDate.now().minusDays(1))); }*/ //将旧食谱计划中的发送状态、发送时间、食谱复制到新食谱计划中 - boolean existFlag =oldRecipesPlanList.size() >= planList.size()+1; + boolean existFlag = oldRecipesPlanList.size() >= planList.size() + 1; sysRecipesPlan.setSendFlag(existFlag ? oldRecipesPlanList.get(planList.size()).getSendFlag() : 0); sysRecipesPlan.setSendTime(existFlag ? oldRecipesPlanList.get(planList.size()).getSendTime() : null); sysRecipesPlan.setRecipesId(existFlag ? oldRecipesPlanList.get(planList.size()).getRecipesId() : null); @@ -227,7 +219,7 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService planStartDate = planEndDate.plusDays(1); planEndDate = planStartDate.plusDays(6); - if(breakFlag){ + if (breakFlag) { break; } } @@ -236,25 +228,26 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService /** * 根据食谱开始时间、结束时间、暂停列表获取在食谱计划范围内的暂停天数 + * * @param planStartDate 计划开始时间 - * @param planEndDate 计划结束时间 - * @param pauseList 暂停列表 + * @param planEndDate 计划结束时间 + * @param pauseList 暂停列表 * @return */ - public long getPauseDayeCount(LocalDate planStartDate, LocalDate planEndDate, List pauseList){ + public long getPauseDayeCount(LocalDate planStartDate, LocalDate planEndDate, List pauseList) { long pauseDay = 0; //判断这个时间内是否存在暂停 - if(pauseList != null && pauseList.size() > 0){ - for(SysOrderPause sysOrderPause : pauseList){ + 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){ + if (ChronoUnit.DAYS.between(pauseEndDate, planStartDate) > 0 || ChronoUnit.DAYS.between(planEndDate, pauseStartDate) > 0) { continue; } - if(ChronoUnit.DAYS.between(pauseStartDate, planStartDate) > 0){ + if (ChronoUnit.DAYS.between(pauseStartDate, planStartDate) > 0) { pauseStartDate = planStartDate; } - if(ChronoUnit.DAYS.between(planEndDate, pauseEndDate) > 0){ + if (ChronoUnit.DAYS.between(planEndDate, pauseEndDate) > 0) { pauseEndDate = planEndDate; } pauseDay += ChronoUnit.DAYS.between(pauseStartDate, pauseEndDate); @@ -265,31 +258,34 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService /** * 根据订单ID删除所有食谱安排计划 + * * @param orderIds 订单ID * @return */ @Override - public int delRecipesPlanByOrderId(Long[] orderIds){ + public int delRecipesPlanByOrderId(Long[] orderIds) { return sysRecipesPlanMapper.delRecipesPlanByOrderId(orderIds); } /** * 多条件查询食谱计划列表 + * * @param sysRecipesPlan * @return */ @Override - public List selectPlanListByCondition(SysRecipesPlan sysRecipesPlan){ + public List selectPlanListByCondition(SysRecipesPlan sysRecipesPlan) { return sysRecipesPlanMapper.selectPlanListByCondition(sysRecipesPlan); } /** * 根据订单ID查询食谱计划 + * * @param sysRecipesPlan * @return */ @Override - public List selectPlanListByOrderId(SysRecipesPlan sysRecipesPlan){ + public List selectPlanListByOrderId(SysRecipesPlan sysRecipesPlan) { return sysRecipesPlanMapper.selectPlanListByOrderId(sysRecipesPlan); } } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesServiceImpl.java index a899e98c4..3ceaae40d 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesServiceImpl.java @@ -1,12 +1,18 @@ package com.stdiet.custom.service.impl; import com.stdiet.custom.domain.SysRecipes; +import com.stdiet.custom.domain.SysRecipesDaily; +import com.stdiet.custom.domain.SysRecipesDailyDishes; +import com.stdiet.custom.domain.SysRecipesPlan; import com.stdiet.custom.mapper.SysRecipesMapper; +import com.stdiet.custom.mapper.SysRecipesPlanMapper; import com.stdiet.custom.service.ISysRecipesService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.Date; import java.util.List; @Service @@ -16,8 +22,64 @@ public class SysRecipesServiceImpl implements ISysRecipesService { @Autowired private SysRecipesMapper sysRecipesMapper; + @Autowired + private SysRecipesPlanMapper sysRecipesPlanMapper; + + + @Override + public int addRecipes(SysRecipes sysRecipes) { + int rows = sysRecipesMapper.addRecipes(sysRecipes); + if (rows > 0) { + int count = sysRecipesMapper.getNumDayByCusId(sysRecipes.getCusId()); + List menus = sysRecipes.getMenus(); + List dishes = new ArrayList<>(); + int size = menus.size(); + for (int i = 0; i < size; i++) { + SysRecipesDaily tarMenu = menus.get(i); + // 计算menuId + long dailyId = sysRecipes.getId() + new Date().getTime() + i; + tarMenu.setId(dailyId); + // 插入recipiesId + tarMenu.setRecipesId(sysRecipes.getId()); + // 插入numDay + tarMenu.setNumDay(count + i + 1); + for (SysRecipesDailyDishes tmpDishes : tarMenu.getDishes()) { + // 让菜品插入menuId + tmpDishes.setMenuId(dailyId); + dishes.add(tmpDishes); + } + } + // 插入每天食谱 + sysRecipesMapper.bashAddMenus(menus); + // 插入每天菜品 + sysRecipesMapper.bashAddDishes(dishes); + // 更新食谱计划 + SysRecipesPlan sysRecipesPlan = new SysRecipesPlan(); + sysRecipesPlan.setId(sysRecipes.getPlanId()); + sysRecipesPlan.setRecipesId(sysRecipes.getId()); + sysRecipesPlanMapper.updateSysRecipesPlan(sysRecipesPlan); + } + + return rows; + } + @Override public List selectSysRecipesByRecipesId(Long id) { return sysRecipesMapper.selectSysRecipesByRecipesId(id); } + + @Override + public int updateDishesDetail(SysRecipesDailyDishes sysRecipesDailyDishes) { + return sysRecipesMapper.updateDishesDetail(sysRecipesDailyDishes); + } + + @Override + public int addDishes(SysRecipesDailyDishes sysRecipesDailyDishes) { + return sysRecipesMapper.addDishes(sysRecipesDailyDishes); + } + + @Override + public int deleteDishes(Long id) { + return sysRecipesMapper.deleteDishes(id); + } } diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml index f8cfc64a0..d29b1f7df 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml @@ -4,7 +4,7 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -15,14 +15,16 @@ - - + + + + + javaType="com.stdiet.custom.domain.SysDishesIngredient"/> @@ -76,4 +78,67 @@ ) ing USING(id) + + + update sys_customer_menu_dishes + + detail = #{detail, jdbcType=OTHER, typeHandler=com.stdiet.custom.typehandler.ArrayJsonHandler}, + + where id = #{id} + + + + + insert into sys_customer_menu_dishes + + menu_id, + dishes_id, + type, + detail, + + + #{menuId}, + #{dishesId}, + #{type}, + #{detail, jdbcType=OTHER, typeHandler=com.stdiet.custom.typehandler.ArrayJsonHandler}, + + + + + + delete from sys_customer_menu_dishes where id = #{id} + + + + + + + + insert into sys_customer_menu + + cus_id, + + + #{cusId}, + + + + + + insert into sys_customer_daily_menu (id, num_day, date, recipes_id, cus_id) values + + (#{item.id}, #{item.numDay}, #{item.date}, #{item.recipesId}, #{item.cusId}) + + + + + + insert into sys_customer_menu_dishes (menu_id, type, dishes_id, detail) values + + (#{item.menuId}, #{item.type}, #{item.dishesId}, #{item.detail, jdbcType=OTHER, typeHandler=com.stdiet.custom.typehandler.ArrayJsonHandler}) + + + \ No newline at end of file diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml index 8f47b8b98..64f53456f 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml @@ -17,6 +17,7 @@ + @@ -127,7 +128,7 @@