From 6a8aeca08f6d9dba7997a003b0728386f778f2ef Mon Sep 17 00:00:00 2001 From: jjLv <1981429112@qq.com> Date: Mon, 14 Apr 2025 13:14:16 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8F=9C=E8=B0=B1=E5=88=97=E8=A1=A8-=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E8=8F=9C=E5=93=81=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../canteen/core/android/vo/UserInfoVo.java | 5 + .../menu/controller/MenuRecipeController.java | 9 ++ .../core/menu/dto/MenuRecipeParamDTO.java | 26 ++++++ .../core/menu/dto/RecipeDishesCountDTO.java | 11 +++ .../core/menu/mapper/MenuRecipeMapper.java | 29 ++++++ .../core/menu/service/IMenuRecipeService.java | 9 ++ .../service/impl/MenuRecipeServiceImpl.java | 92 ++++++++++++++++-- .../core/menu/vo/MenuRecipeDataVO.java | 18 ++++ .../canteen/core/menu/vo/MenuRecipeV2VO.java | 48 ++++++++++ .../resources/mapper/android/UserMapper.xml | 4 +- .../mapper/menu/MenuRecipeMapper.xml | 93 ++++++++++++++++++- 11 files changed, 334 insertions(+), 10 deletions(-) create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/dto/MenuRecipeParamDTO.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/dto/RecipeDishesCountDTO.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/vo/MenuRecipeDataVO.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/vo/MenuRecipeV2VO.java diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/android/vo/UserInfoVo.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/android/vo/UserInfoVo.java index 443a250..21e989f 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/android/vo/UserInfoVo.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/android/vo/UserInfoVo.java @@ -34,6 +34,11 @@ public class UserInfoVo { */ private BigDecimal subsidiesBalance; + /** + * 账户状态 1正常 2冻结 3销户 + */ + private String accStatus; + } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/controller/MenuRecipeController.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/controller/MenuRecipeController.java index e70b531..e1609df 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/controller/MenuRecipeController.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/controller/MenuRecipeController.java @@ -3,6 +3,7 @@ package com.bonus.canteen.core.menu.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; +import com.bonus.canteen.core.menu.dto.MenuRecipeParamDTO; import com.bonus.canteen.core.menu.service.IMenuRecipeService; import com.bonus.common.log.enums.OperaType; import io.swagger.annotations.Api; @@ -113,4 +114,12 @@ public class MenuRecipeController extends BaseController { public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(menuRecipeService.deleteMenuRecipeByIds(ids)); } + + + @PostMapping({"/getDishesList"}) + @ApiOperation("菜谱列表-获取菜品列表") + public AjaxResult getDishesList(@RequestBody MenuRecipeParamDTO dto) { + return this.menuRecipeService.getDishesList(dto); + } + } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/dto/MenuRecipeParamDTO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/dto/MenuRecipeParamDTO.java new file mode 100644 index 0000000..36b9de3 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/dto/MenuRecipeParamDTO.java @@ -0,0 +1,26 @@ +package com.bonus.canteen.core.menu.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; + +import java.util.List; +@Data +@ToString +public class MenuRecipeParamDTO { + @ApiModelProperty("菜谱id") + private Long recipeId; + @ApiModelProperty("菜谱名称") + private String recipeName; + @ApiModelProperty("区域Id") + private Long areaId; + private List areaIds; + @ApiModelProperty("食堂id") + private Long canteenId; + private List canteenIds; + @ApiModelProperty("档口id") + private Long stallId; + private List stallIds; + @ApiModelProperty("菜谱类型") + private Integer recipeType; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/dto/RecipeDishesCountDTO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/dto/RecipeDishesCountDTO.java new file mode 100644 index 0000000..346942a --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/dto/RecipeDishesCountDTO.java @@ -0,0 +1,11 @@ +package com.bonus.canteen.core.menu.dto; + +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class RecipeDishesCountDTO { + private Long recipeId; + private Integer num; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/mapper/MenuRecipeMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/mapper/MenuRecipeMapper.java index 242dbe8..939fcfa 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/mapper/MenuRecipeMapper.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/mapper/MenuRecipeMapper.java @@ -1,8 +1,18 @@ package com.bonus.canteen.core.menu.mapper; +import java.time.LocalDate; import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; import com.bonus.canteen.core.menu.domain.MenuRecipe; +import com.bonus.canteen.core.menu.dto.MenuRecipeParamDTO; +import com.bonus.canteen.core.menu.dto.RecipeDishesCountDTO; +import com.bonus.canteen.core.menu.vo.MenuRecipeDataVO; +import com.bonus.canteen.core.menu.vo.MenuRecipeV2VO; +import org.apache.ibatis.annotations.MapKey; +import org.apache.ibatis.annotations.Param; /** * 菜品计划信息Mapper接口 @@ -58,4 +68,23 @@ public interface MenuRecipeMapper { * @return 结果 */ public int deleteMenuRecipeByIds(Long[] ids); + + /** + * 获取菜品列表 + * @param dto + * @return + */ + List getDishesList(MenuRecipeParamDTO dto); + /** + * 根据recipeIds获取菜品数量 + * @param recipeIds + * @return + */ + List getDishesCountByRecipeIds(@Param("recipeIds") List recipeIds); + /** + * 根据recipeIds获取日期 + * @param recipeIds + * @return + */ + List selectApplyDateListByRecipeId(@Param("applyDate") LocalDate applyDate, @Param("recipeIds") List recipeIds); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/service/IMenuRecipeService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/service/IMenuRecipeService.java index b355a4c..9c06840 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/service/IMenuRecipeService.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/service/IMenuRecipeService.java @@ -2,6 +2,8 @@ package com.bonus.canteen.core.menu.service; import java.util.List; import com.bonus.canteen.core.menu.domain.MenuRecipe; +import com.bonus.canteen.core.menu.dto.MenuRecipeParamDTO; +import com.bonus.common.core.web.domain.AjaxResult; /** * 菜品计划信息Service接口 @@ -57,4 +59,11 @@ public interface IMenuRecipeService { * @return 结果 */ public int deleteMenuRecipeById(Long id); + + /** + * 菜谱列表-获取菜品列表 + * @param dto + * @return + */ + AjaxResult getDishesList(MenuRecipeParamDTO dto); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/service/impl/MenuRecipeServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/service/impl/MenuRecipeServiceImpl.java index c525c3a..83ae633 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/service/impl/MenuRecipeServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/service/impl/MenuRecipeServiceImpl.java @@ -1,10 +1,25 @@ package com.bonus.canteen.core.menu.service.impl; -import java.util.List; +import java.time.DayOfWeek; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.temporal.TemporalAccessor; +import java.time.temporal.TemporalAdjusters; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import cn.hutool.core.util.ObjectUtil; +import com.bonus.canteen.core.menu.dto.MenuRecipeParamDTO; +import com.bonus.canteen.core.menu.dto.RecipeDishesCountDTO; +import com.bonus.canteen.core.menu.mapper.MenuRecipeDishesMapper; import com.bonus.canteen.core.menu.service.IMenuRecipeService; +import com.bonus.canteen.core.menu.vo.MenuRecipeDataVO; +import com.bonus.canteen.core.menu.vo.MenuRecipeV2VO; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; +import com.bonus.common.core.web.domain.AjaxResult; +import com.google.common.collect.Lists; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.bonus.canteen.core.menu.mapper.MenuRecipeMapper; @@ -12,7 +27,7 @@ import com.bonus.canteen.core.menu.domain.MenuRecipe; /** * 菜品计划信息Service业务层处理 - * + * * @author xsheng * @date 2025-04-03 */ @@ -23,7 +38,7 @@ public class MenuRecipeServiceImpl implements IMenuRecipeService { /** * 查询菜品计划信息 - * + * * @param id 菜品计划信息主键 * @return 菜品计划信息 */ @@ -34,7 +49,7 @@ public class MenuRecipeServiceImpl implements IMenuRecipeService { /** * 查询菜品计划信息列表 - * + * * @param menuRecipe 菜品计划信息 * @return 菜品计划信息 */ @@ -45,7 +60,7 @@ public class MenuRecipeServiceImpl implements IMenuRecipeService { /** * 新增菜品计划信息 - * + * * @param menuRecipe 菜品计划信息 * @return 结果 */ @@ -61,7 +76,7 @@ public class MenuRecipeServiceImpl implements IMenuRecipeService { /** * 修改菜品计划信息 - * + * * @param menuRecipe 菜品计划信息 * @return 结果 */ @@ -77,7 +92,7 @@ public class MenuRecipeServiceImpl implements IMenuRecipeService { /** * 批量删除菜品计划信息 - * + * * @param ids 需要删除的菜品计划信息主键 * @return 结果 */ @@ -88,7 +103,7 @@ public class MenuRecipeServiceImpl implements IMenuRecipeService { /** * 删除菜品计划信息信息 - * + * * @param id 菜品计划信息主键 * @return 结果 */ @@ -96,4 +111,65 @@ public class MenuRecipeServiceImpl implements IMenuRecipeService { public int deleteMenuRecipeById(Long id) { return menuRecipeMapper.deleteMenuRecipeById(id); } + + /** + * 菜谱列表-获取菜品列表 + * + * @param dto + * @return + */ + @Override + public AjaxResult getDishesList(MenuRecipeParamDTO dto) { + List list = menuRecipeMapper.getDishesList(dto); + List last = this.getLastWeekDate(); + List recipeIds = list.stream().map(MenuRecipeV2VO::getRecipeId).collect(Collectors.toList()); + List dishesCountByRecipeIdsList = menuRecipeMapper.getDishesCountByRecipeIds(recipeIds); + Map dishesCountByRecipeIds = dishesCountByRecipeIdsList.stream().collect(Collectors.toMap(RecipeDishesCountDTO::getRecipeId, RecipeDishesCountDTO::getNum)); + List recipeDatesList = this.menuRecipeMapper.selectApplyDateListByRecipeId(LocalDate.now(),recipeIds); + Map> recipeDates = recipeDatesList.stream().collect(Collectors.groupingBy(MenuRecipeDataVO::getRecipeId, Collectors.mapping(MenuRecipeDataVO::getApplyData, Collectors.toCollection(TreeSet::new)))); + if (list.isEmpty()){ + return AjaxResult.success(new ArrayList<>()); + } + list.forEach(r -> { + Long recipeId = r.getRecipeId(); + r.setDishesCount(dishesCountByRecipeIds.getOrDefault(recipeId, 0)); + Set applyDateList = recipeDates.getOrDefault(recipeId, new TreeSet<>()); + Object finalDate; + if (ObjectUtil.equal(r.getRecipeType(), 3)) { + Stream var10000 = last.stream(); + Objects.requireNonNull(applyDateList); + finalDate = var10000.filter(applyDateList::contains).collect(Collectors.toList()); + } else if (ObjectUtil.equal(r.getRecipeType(), 2)) { + finalDate = this.getLastWeek(); + } else { + finalDate = new ArrayList<>(applyDateList); + } + List applyDateStringList = Lists.newArrayList(); + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("MM-dd"); + ((List)finalDate).forEach(d -> { + applyDateStringList.add(dateTimeFormatter.format((TemporalAccessor) d)); + }); + r.setApplyDateList((List)finalDate); + r.setApplyDateStringList(applyDateStringList); + }); + return AjaxResult.success(list); + } + + public List getLastWeekDate() { + List objects = new ArrayList<>(); + LocalDate sunday = LocalDate.now().with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY)); + LocalDate now = LocalDate.now(); + for(LocalDate date = now; date.isBefore(sunday) || date.isEqual(sunday); date = date.plusDays(1L)) { + objects.add(date); + } + return objects; + } + public List getLastWeek() { + List dates = new ArrayList<>(); + LocalDate now = LocalDate.now(); + for(int i = 0; i < 7; ++i) { + dates.add(now.plusDays(i)); + } + return dates; + } } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/vo/MenuRecipeDataVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/vo/MenuRecipeDataVO.java new file mode 100644 index 0000000..51157ea --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/vo/MenuRecipeDataVO.java @@ -0,0 +1,18 @@ +package com.bonus.canteen.core.menu.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; + +import java.time.LocalDate; + + +@Data +@ToString +public class MenuRecipeDataVO { + @ApiModelProperty("菜谱id") + private Long recipeId; + @ApiModelProperty("日期") + private LocalDate applyData; + +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/vo/MenuRecipeV2VO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/vo/MenuRecipeV2VO.java new file mode 100644 index 0000000..8ba2ac0 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/vo/MenuRecipeV2VO.java @@ -0,0 +1,48 @@ +package com.bonus.canteen.core.menu.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; +@Data +@ToString +@ApiModel("菜谱计划发布记录列表") +public class MenuRecipeV2VO { + @ApiModelProperty("菜谱id") + private Long recipeId; + @ApiModelProperty("菜谱类型") + private Integer recipeType; + @ApiModelProperty("菜谱名称") + private String recipeName; + @ApiModelProperty("区域id") + private Long areaId; + @ApiModelProperty("区域名称") + private String areaName; + @ApiModelProperty("食堂id") + private Long canteenId; + @ApiModelProperty("食堂名称") + private String canteenName; + @ApiModelProperty("档口id") + private Long stallId; + @ApiModelProperty("档口名称") + private String stallName; + @ApiModelProperty("菜品数量") + private Integer dishesCount; + @ApiModelProperty("生效范围id") + private Long effId; + @ApiModelProperty("生效范围名称") + private String effName; + @ApiModelProperty("创建人") + private String crby; + @ApiModelProperty("创建时间") + private LocalDateTime crtime; + @ApiModelProperty("已排菜日期") + private List applyDateList; + @ApiModelProperty("已排菜日期(月-日)") + private List applyDateStringList; + +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/android/UserMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/android/UserMapper.xml index e6e0f1d..6b8d5b4 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/android/UserMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/android/UserMapper.xml @@ -9,9 +9,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" su.nick_name as userName, ac.acc_id as accId, ac.card_num as cardNum, - ac.serial_num as serialNum + ac.serial_num as serialNum, + ai.acc_status as accStatus from sys_user su left join acc_card ac on ac.user_id = su.user_id + left join acc_info ai on ai.user_id = su.user_id diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/menu/MenuRecipeMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/menu/MenuRecipeMapper.xml index 98bf089..ad2dd55 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/menu/MenuRecipeMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/menu/MenuRecipeMapper.xml @@ -48,7 +48,98 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} - + + + + insert into menu_recipe