From 59463d439c9a803a8d939caa715c03b787e8846e Mon Sep 17 00:00:00 2001 From: qjq <1766193529@qq.com> Date: Mon, 22 Apr 2024 09:11:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/order/OrderController.java | 22 ++++- .../admin/order/vo/OrderDetailsReqVO.java | 3 + .../admin/order/vo/OrderDetailsRespVO.java | 2 + .../admin/screen/ScreenController.java | 19 ++++ .../admin/user/MemberUserController.java | 10 +- .../orderdetail/vo/AppOrderDetailRespVO.java | 7 +- .../CustomerTrafficDetailDO.java | 13 +++ .../CustomerTrafficMapper.java | 26 ++++- .../carteenmoney/CarteenMoneyServiceImpl.java | 13 +-- .../CustomerTrafficService.java | 10 +- .../CustomerTrafficServiceImpl.java | 55 ++++++++++- .../member/service/order/OrderService.java | 1 + .../service/order/OrderServiceImpl.java | 25 +++-- .../orderdetail/OrderDetailServiceImpl.java | 5 +- .../admin/carteen/CarteenController.java | 40 ++++---- .../admin/carteen/vo/CarteenPageReqVO.java | 14 ++- .../carteen/vo/CarteenWeekSalesRespVo.java | 33 +++++++ .../admin/dishes/DishesController.java | 45 ++++----- .../admin/dishes/vo/DishesRespVO.java | 18 +++- .../admin/dishes/vo/DishesSaveReqVO.java | 12 ++- .../vo/DishesNutritionSaveReqVO.java | 6 +- .../dishesraw/vo/DishesRawSaveReqVO.java | 9 +- .../app/devuce/DevuceController.java | 6 ++ .../dal/mysql/carteen/CarteenMapper.java | 36 ++++++- .../service/carteen/CarteenService.java | 16 +++- .../service/carteen/CarteenServiceImpl.java | 96 ++++++++++++++++++- .../system/service/devuce/DevuceService.java | 8 ++ .../service/devuce/DevuceServiceImpl.java | 26 +++++ .../system/service/dishes/DishesService.java | 8 +- .../service/dishes/DishesServiceImpl.java | 59 +++++++++++- .../DishesNutritionService.java | 2 + .../DishesNutritionServiceImpl.java | 16 +++- .../service/dishesraw/DishesRawService.java | 1 + .../dishesraw/DishesRawServiceImpl.java | 18 +++- 34 files changed, 570 insertions(+), 110 deletions(-) create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/customertraffic/CustomerTrafficDetailDO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/carteen/vo/CarteenWeekSalesRespVo.java diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/OrderController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/OrderController.java index 7fc57f5e..f513fdd3 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/OrderController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/OrderController.java @@ -4,18 +4,21 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsReqVO; import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsRespVO; +import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailRespVO; import cn.iocoder.yudao.module.member.service.order.OrderService; +import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.validation.Valid; -import java.util.Map; +import java.util.List; @Tag(name = "管理后台 - 会员订单") @RestController @@ -25,6 +28,8 @@ public class OrderController { @Resource private OrderService orderService; + @Resource + private OrderDetailService detailService; // //@PostMapping("/create") //@Operation(summary = "创建会员订单") @@ -92,5 +97,18 @@ public class OrderController { public CommonResult> getPageResult(@Valid OrderDetailsReqVO reqVO){ return CommonResult.success(orderService.getPageOrderDetails(reqVO)); } - + /*================后台管理-订单管理-订单详情========================*/ + @GetMapping("/get") + @Operation(summary = "获得会员订单明细") + @PreAuthorize("@ss.hasPermission('member:order:query')") + public CommonResult> getOrderDetails(@RequestParam("orderId")Long orderId){ + return CommonResult.success(detailService.selectListByOrderId(orderId)); + } + /*================后台管理-订单管理-订单明细与用户信息========================*/ + @GetMapping("/get-details") + @Operation(summary = "获得会员订单明细与用户信息") + @PreAuthorize("@ss.hasPermission('member:order:query')") + public CommonResult getOrderDetailsAndUser(@RequestParam("orderId")Long orderId){ + return CommonResult.success(orderService.getOrderDetailsAndUser(orderId)); + } } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderDetailsReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderDetailsReqVO.java index a3d68218..b4ff8b6d 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderDetailsReqVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderDetailsReqVO.java @@ -5,6 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; import java.time.LocalDateTime; @@ -21,8 +22,10 @@ public class OrderDetailsReqVO extends PageParam { @Schema(description = "门店Id", example = "24217") private String storeId; @Schema(description = "开始时间", example = "2024-4-12 9:00:00") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime startDate; @Schema(description = "结束时间", example = "2024-4-12 18:00:00") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime endDate; @Schema(description = "订单号", example = "20240401085810236196705") private String orderId; diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderDetailsRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderDetailsRespVO.java index 0bb8bf9f..8092bf83 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderDetailsRespVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderDetailsRespVO.java @@ -40,6 +40,8 @@ public class OrderDetailsRespVO { @Schema(description = "工号", example = "15111956918") @ExcelProperty("工号") private String userJob; + @Schema(description = "用户头像", example = "15111956918") + private String avatar; @Schema(description = "订单交易时间", example = "2024-04-01 09:06:19") @ExcelProperty("订单交易时间") diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/ScreenController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/ScreenController.java index 24a52c00..c33cb14c 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/ScreenController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/ScreenController.java @@ -1,18 +1,23 @@ package cn.iocoder.yudao.module.member.controller.admin.screen; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateTime; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.member.controller.admin.customertraffic.vo.CustomerTrafficRespVO; import cn.iocoder.yudao.module.member.controller.admin.screen.vo.DishVo; import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDO; +import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDetailDO; import cn.iocoder.yudao.module.member.service.customertraffic.CustomerTrafficService; import cn.iocoder.yudao.module.member.service.order.OrderService; import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService; import cn.iocoder.yudao.module.member.service.storeevaluate.StoreEvaluateService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.format.annotation.DateTimeFormat; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @@ -56,6 +61,20 @@ public class ScreenController { return success(BeanUtils.toBean(data, CustomerTrafficRespVO.class)); } + @GetMapping("/half-hour") + @Operation(summary = "食堂今日半小时刻度顾客流量") + @PermitAll + public CommonResult> getHalfHour(@RequestParam(value = "storeId",required = false) Long storeId, + @DateTimeFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) + @RequestParam(value = "start")DateTime start, + @DateTimeFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) + @RequestParam(value = "end") DateTime end){ + return success(customerTrafficService.getHalfHour(storeId, start,end)); + } + + + + @GetMapping("/getUserCount") @Operation(summary = "获取总顾客流量") @PermitAll diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/user/MemberUserController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/user/MemberUserController.java index 322f3a4c..f36c3618 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/user/MemberUserController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/user/MemberUserController.java @@ -18,6 +18,7 @@ import cn.iocoder.yudao.module.member.service.user.MemberUserService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.format.annotation.DateTimeFormat; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -115,6 +116,13 @@ public class MemberUserController { convertSet(pageResult.getList(), MemberUserDO::getGroupId)); return success(MemberUserConvert.INSTANCE.convertPage(pageResult, tags, levels, groups)); } - + @GetMapping("/heat") + @Operation(summary = "获得会员热量分析") + public CommonResult> getUserHeat(@RequestParam(value = "userId",required = false) Long userId, + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @RequestParam(value = "startDate",required = false) LocalDateTime startDate, + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @RequestParam(value = "endDate",required = false) LocalDateTime endDate, + @RequestParam(value = "orderId",required = false)Long orderId){ + return success(memberUserService.getUserHeat(userId,startDate,endDate,orderId)); + } } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/vo/AppOrderDetailRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/vo/AppOrderDetailRespVO.java index 0bc3c85e..655d8281 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/vo/AppOrderDetailRespVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/vo/AppOrderDetailRespVO.java @@ -16,7 +16,8 @@ public class AppOrderDetailRespVO { @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "20679") @ExcelProperty("编号") private Long id; - + @Schema(description = "门店id", example = "20679") + private Long storeId; @Schema(description = "订单ID", example = "31077") @ExcelProperty("订单ID") private Long orderId; @@ -36,7 +37,9 @@ public class AppOrderDetailRespVO { @Schema(description = "热量") @ExcelProperty("热量") private Double heat; - + @Schema(description = "价格") + @ExcelProperty("价格") + private BigDecimal price; @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("创建时间") private LocalDateTime createTime; diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/customertraffic/CustomerTrafficDetailDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/customertraffic/CustomerTrafficDetailDO.java new file mode 100644 index 00000000..69da1b18 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/customertraffic/CustomerTrafficDetailDO.java @@ -0,0 +1,13 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.customertraffic; + +import lombok.Data; + +/** + * @Author:qjq + * @Date:2024/4/19 下午3:30 + */ +@Data +public class CustomerTrafficDetailDO extends CustomerTrafficDO{ + private String storesName; + +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/customertraffic/CustomerTrafficMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/customertraffic/CustomerTrafficMapper.java index e8497d30..d0f98726 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/customertraffic/CustomerTrafficMapper.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/customertraffic/CustomerTrafficMapper.java @@ -1,13 +1,17 @@ package cn.iocoder.yudao.module.member.dal.mysql.customertraffic; -import java.util.*; - +import cn.hutool.core.date.DateTime; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.member.controller.admin.customertraffic.vo.CustomerTrafficPageReqVO; import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDO; +import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDetailDO; import org.apache.ibatis.annotations.Mapper; -import cn.iocoder.yudao.module.member.controller.admin.customertraffic.vo.*; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** * 顾客流量 Mapper @@ -25,5 +29,17 @@ public interface CustomerTrafficMapper extends BaseMapperX { .betweenIfPresent(CustomerTrafficDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(CustomerTrafficDO::getId)); } - + @Select("") + List getAllCustomerNum(@Param("storeId")Long storeId,@Param("start")DateTime start,@Param("end")DateTime end); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/carteenmoney/CarteenMoneyServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/carteenmoney/CarteenMoneyServiceImpl.java index 0a9941a6..3b286edc 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/carteenmoney/CarteenMoneyServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/carteenmoney/CarteenMoneyServiceImpl.java @@ -204,17 +204,17 @@ public class CarteenMoneyServiceImpl implements CarteenMoneyService { //根据设备分组 Map> collect = dos.stream().collect(Collectors.groupingBy(OrderDetailDO::getSn)); for (Map.Entry> map : collect.entrySet()) { - //设备流水 - DeviceRespVO deviceRespVO = new DeviceRespVO(); List value = map.getValue(); - //设置设备ip - deviceRespVO.setDeviceIp(map.getKey()); - deviceRespVO.setDeviceName(deviceInfoApi.getDeviceInfoName(map.getKey())); //根据时间进行时间段赋值 value.forEach(v -> v.setCreator(TimePeriodEnum.getTimeName(v.getCreateTime()))); //根据时间段分组 value.stream().collect(Collectors.groupingBy(OrderDetailDO::getCreator)) .forEach((k, v) -> { + //设备流水 + DeviceRespVO deviceRespVO = new DeviceRespVO(); + //设置设备ip + deviceRespVO.setDeviceIp(map.getKey()); + deviceRespVO.setDeviceName(deviceInfoApi.getDeviceInfoName(map.getKey())); //根据时间段进行金额统计 BigDecimal sum = v.stream() .map(OrderDetailDO::getPrice) @@ -222,8 +222,9 @@ public class CarteenMoneyServiceImpl implements CarteenMoneyService { .reduce(BigDecimal.ZERO, BigDecimal::add); deviceRespVO.setTime(k); deviceRespVO.setMoney(sum); + bean.getDeviceRespVOList().add(deviceRespVO); }); - bean.getDeviceRespVOList().add(deviceRespVO); + } return bean; } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/customertraffic/CustomerTrafficService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/customertraffic/CustomerTrafficService.java index 9510c7f7..26b5e98b 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/customertraffic/CustomerTrafficService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/customertraffic/CustomerTrafficService.java @@ -1,9 +1,11 @@ package cn.iocoder.yudao.module.member.service.customertraffic; +import cn.hutool.core.date.DateTime; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.member.controller.admin.customertraffic.vo.CustomerTrafficPageReqVO; import cn.iocoder.yudao.module.member.controller.admin.customertraffic.vo.CustomerTrafficSaveReqVO; import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDO; +import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDetailDO; import javax.validation.Valid; import java.util.List; @@ -60,5 +62,11 @@ public interface CustomerTrafficService { * 获取最新7个时间节点的数据 */ List getData(Long storeId); - + /** + * @Description: 半小时刻度,查询最新7个时间点的数据 + * @Author: qjq + * @Date: 2024/4/19 下午2:39 + * @return + */ + List getHalfHour(Long storeId, DateTime start, DateTime end); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/customertraffic/CustomerTrafficServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/customertraffic/CustomerTrafficServiceImpl.java index 8c21fd13..6d79e7b1 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/customertraffic/CustomerTrafficServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/customertraffic/CustomerTrafficServiceImpl.java @@ -1,18 +1,26 @@ package cn.iocoder.yudao.module.member.service.customertraffic; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.member.controller.admin.customertraffic.vo.CustomerTrafficPageReqVO; import cn.iocoder.yudao.module.member.controller.admin.customertraffic.vo.CustomerTrafficSaveReqVO; import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDO; +import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDetailDO; import cn.iocoder.yudao.module.member.dal.mysql.customertraffic.CustomerTrafficMapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.math.BigDecimal; import java.time.LocalDateTime; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.CUSTOMER_TRAFFIC_NOT_EXISTS; @@ -28,7 +36,9 @@ public class CustomerTrafficServiceImpl implements CustomerTrafficService { @Resource private CustomerTrafficMapper customerTrafficMapper; - + private static final String ZC="ZC"; //早餐 + private static final String WC="WC"; //午餐 + private static final String W="W"; //晚餐 @Override public Long createCustomerTraffic(CustomerTrafficSaveReqVO createReqVO) { // 插入 @@ -86,4 +96,45 @@ public class CustomerTrafficServiceImpl implements CustomerTrafficService { .last("limit 7")); return customerTrafficDOS; } + + /** + * @param storeId + * @return + * @Description: 半小时刻度,查询最新7个时间点的数据 + * @Author: qjq + * @Date: 2024/4/19 下午2:39 + */ + @Override + public List getHalfHour(Long storeId, DateTime startDate,DateTime endDate) { + if(ObjUtil.isEmpty(storeId)){ + DateTime end = DateUtil.endOfDay(DateUtil.date()); + DateTime begin = DateUtil.beginOfDay(end); + List list=new ArrayList<>(); + customerTrafficMapper.getAllCustomerNum(null,begin, end) + .stream() + .collect(Collectors.groupingBy(CustomerTrafficDetailDO::getStoreId)) + .forEach((k,v)->{ + BigDecimal reduce = v.stream() + .map(f -> BigDecimal.valueOf(f.getCustomerNum())) + .filter(ObjUtil::isNotNull) + .reduce(BigDecimal.ZERO, BigDecimal::add); + CustomerTrafficDetailDO aDo = BeanUtil.toBean(v.get(0), CustomerTrafficDetailDO.class); + aDo.setCustomerNum(reduce.intValue()); + list.add(aDo); + }); + return list; + }else{ + List all = customerTrafficMapper.getAllCustomerNum(storeId, startDate, endDate); + all.sort(Comparator.comparing(CustomerTrafficDetailDO::getCustomerNum)); + List list=new ArrayList<>(); + //拆分 + List> split = ListUtil.split(list, 3); + for (List dos : split) { + CustomerTrafficDetailDO aDo = BeanUtil.toBean(dos.get(0), CustomerTrafficDetailDO.class); + aDo.setCustomerNum(dos.stream().mapToInt(CustomerTrafficDetailDO::getCustomerNum).sum()); + list.add(aDo); + } + return list; + } + } } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderService.java index b4db64be..14ead6f1 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderService.java @@ -84,6 +84,7 @@ public interface OrderService { List getDishOrderByTime(LocalDateTime startTime ,LocalDateTime endTime ); PageResult getPageOrderDetails(OrderDetailsReqVO reqVO); + OrderDetailsRespVO getOrderDetailsAndUser(Long orderId); /** * 获取今日顾客总量 diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderServiceImpl.java index 1e650390..d547a7c6 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderServiceImpl.java @@ -31,7 +31,6 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; import java.time.LocalDateTime; -import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Collections; @@ -168,15 +167,29 @@ public class OrderServiceImpl implements OrderService { List list=new ArrayList<>(); for (DishOrderDO dishOrderDO : pageResult.getList()) { OrderDetailsRespVO bean = BeanUtils.toBean(dishOrderDO, OrderDetailsRespVO.class); - MemberUserDO userDO = memberUserMapper.selectById(bean.getUserId()); - bean.setUserName(userDO.getName()); - bean.setUserJob(userDO.getMobile()); - bean.setUserAccount(userDO.getMobile()); - bean.setTimePeriod(TimePeriodEnum.MIDDAY.getTimePeriod(bean.getCreateTime())); + userDetails(bean); list.add(bean); } return new PageResult<>(list,pageResult.getTotal()); } + + @Override + public OrderDetailsRespVO getOrderDetailsAndUser(Long orderId) { + OrderDetailsRespVO bean = BeanUtils.toBean(dishOrderMapper.selectById(orderId), OrderDetailsRespVO.class); + userDetails(bean); + return bean; + } + + private void userDetails(OrderDetailsRespVO bean) { + MemberUserDO userDO = memberUserMapper.selectById(bean.getUserId()); + bean.setUserName(userDO.getNickname()); + bean.setUserJob(userDO.getMobile()); + bean.setAvatar(userDO.getAvatar()); + bean.setPayMethods("钱包"); + bean.setUserAccount(userDO.getMobile()); + bean.setTimePeriod(TimePeriodEnum.getTimeName(bean.getCreateTime())); + } + /** * @Description: 数据类型对标 {@link CostTypeEnum} * @Author: qjq diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetail/OrderDetailServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetail/OrderDetailServiceImpl.java index 6f7e6dc3..a270a96e 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetail/OrderDetailServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetail/OrderDetailServiceImpl.java @@ -161,8 +161,11 @@ public class OrderDetailServiceImpl implements OrderDetailService { @Override public List selectListByOrderId(Long orderId) { + Long storeId = dishOrderMapper.selectById(orderId).getStoreId(); List orderDetailDOS = orderDetailMapper.selectList(Wrappers.lambdaQuery().eq(OrderDetailDO::getOrderId, orderId)); - return BeanUtils.toBean(orderDetailDOS, AppOrderDetailRespVO.class); + List bean = BeanUtils.toBean(orderDetailDOS, AppOrderDetailRespVO.class); + bean.forEach(f->f.setStoreId(storeId)); + return bean; } @Override diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/carteen/CarteenController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/carteen/CarteenController.java index 62560091..3e75ec3f 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/carteen/CarteenController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/carteen/CarteenController.java @@ -1,33 +1,33 @@ package cn.iocoder.yudao.module.system.controller.admin.carteen; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenRespVO; import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenSaveReqVO; +import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenWeekSalesRespVo; import cn.iocoder.yudao.module.system.dal.dataobject.carteen.CarteenDO; import cn.iocoder.yudao.module.system.service.carteen.CarteenService; -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; -import javax.validation.*; -import javax.servlet.http.*; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; import java.io.IOException; import java.util.List; +import java.util.Map; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; - -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; - -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @Tag(name = "管理后台 - 门店管理") @@ -92,5 +92,11 @@ public class CarteenController { ExcelUtils.write(response, "门店管理.xls", "数据", CarteenRespVO.class, BeanUtils.toBean(list, CarteenRespVO.class)); } - + @GetMapping("/week/sales") + @Operation(summary = "获得门店销量") + @PreAuthorize("@ss.hasPermission('t:carteen:query')") +// @PermitAll + public CommonResult>> getCarteenSales(CarteenPageReqVO pageReqVO) { + return success(carteenService.getCarteenWeekSales(pageReqVO)); + } } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/carteen/vo/CarteenPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/carteen/vo/CarteenPageReqVO.java index 254ef3fb..775f3842 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/carteen/vo/CarteenPageReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/carteen/vo/CarteenPageReqVO.java @@ -1,10 +1,12 @@ package cn.iocoder.yudao.module.system.controller.admin.carteen.vo; -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; import org.springframework.format.annotation.DateTimeFormat; + import java.time.LocalDateTime; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -33,6 +35,12 @@ public class CarteenPageReqVO extends PageParam { @Schema(description = "联系电话") private String phone; + @Schema(description = "类型,(all:全部)空为单个") + private String type; + + @Schema(description = "门店id") + private Long carteenId; + @Schema(description = "创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/carteen/vo/CarteenWeekSalesRespVo.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/carteen/vo/CarteenWeekSalesRespVo.java new file mode 100644 index 00000000..0ffdc739 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/carteen/vo/CarteenWeekSalesRespVo.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.module.system.controller.admin.carteen.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * @Author:qjq + * @Date:2024/4/19 上午10:00 + */ +@Schema(description = "管理后台 - 门店周报 Response VO") +@Data +@ExcelIgnoreUnannotated +public class CarteenWeekSalesRespVo { + @Schema(description = "门店id") + private Long carteenId; + + @Schema(description = "食堂名称") + private String carteenName; + + @Schema(description = "时间类型") + private String timeType; + + @Schema(description = "时间") + private LocalDateTime createTime; + + @Schema(description = "菜品销量(kg)") + private BigDecimal sales; + //TODO 需要什么字段再加 +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishes/DishesController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishes/DishesController.java index 0bb94a61..e3f3fa1e 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishes/DishesController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishes/DishesController.java @@ -1,35 +1,33 @@ package cn.iocoder.yudao.module.system.controller.admin.dishes; -import cn.hutool.core.util.NumberUtil; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesRespVO; import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesSaveReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.dishes.DishesDO; import cn.iocoder.yudao.module.system.service.dishes.DishesService; -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; +import cn.iocoder.yudao.module.system.service.dishesnutrition.DishesNutritionService; +import cn.iocoder.yudao.module.system.service.dishesraw.DishesRawService; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; -import javax.validation.constraints.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; import java.io.IOException; +import java.util.List; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; - -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; - -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @Tag(name = "管理后台 - 菜品管理") @@ -40,6 +38,10 @@ public class DishesController { @Resource private DishesService dishesService; + @Resource + private DishesNutritionService dishesNutritionService; + @Resource + private DishesRawService dishesRawService; @PostMapping("/create") @Operation(summary = "创建菜品管理") @@ -70,8 +72,7 @@ public class DishesController { @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('t:dishes:query')") public CommonResult getDishes(@RequestParam("id") Long id) { - DishesDO dishes = dishesService.getDishes(id); - return success(BeanUtils.toBean(dishes, DishesRespVO.class)); + return success(dishesService.getDishes1(id)); } @GetMapping("/page") diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishes/vo/DishesRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishes/vo/DishesRespVO.java index f92f3ff4..87d08d60 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishes/vo/DishesRespVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishes/vo/DishesRespVO.java @@ -1,13 +1,16 @@ package cn.iocoder.yudao.module.system.controller.admin.dishes.vo; +import cn.iocoder.yudao.module.system.controller.admin.dishesraw.vo.DishesRawSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.dishesnutrition.DishesNutritionDO; +import cn.iocoder.yudao.module.system.dal.dataobject.dishesraw.DishesRawDO; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.util.*; +import lombok.Data; + import java.math.BigDecimal; -import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; -import com.alibaba.excel.annotation.*; +import java.util.List; @Schema(description = "管理后台 - 菜品管理 Response VO") @Data @@ -65,4 +68,9 @@ public class DishesRespVO { @Schema(description = "菜品总重量") private BigDecimal dishesNumber; + + @Schema(description = "菜品营养", example = "1") + private List dishesNutritionList; + @Schema(description = "菜品原材料", example = "1") + private List dishesRawList; } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishes/vo/DishesSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishes/vo/DishesSaveReqVO.java index 3870dbd4..d8ae329c 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishes/vo/DishesSaveReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishes/vo/DishesSaveReqVO.java @@ -1,11 +1,12 @@ package cn.iocoder.yudao.module.system.controller.admin.dishes.vo; +import cn.iocoder.yudao.module.system.controller.admin.dishesnutrition.vo.DishesNutritionSaveReqVO; +import cn.iocoder.yudao.module.system.controller.admin.dishesraw.vo.DishesRawSaveReqVO; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import org.springframework.web.multipart.MultipartFile; +import lombok.Data; -import javax.validation.constraints.*; import java.math.BigDecimal; +import java.util.List; @Schema(description = "管理后台 - 菜品管理新增/修改 Request VO") @Data @@ -57,4 +58,9 @@ public class DishesSaveReqVO { private BigDecimal dishesSumPrice; @Schema(description = "菜品总重量", example = "1") private BigDecimal dishesNumber; + + @Schema(description = "菜品营养", example = "1") + private List dishesNutritionList; + @Schema(description = "菜品原材料", example = "1") + private List dishesRawList; } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishesnutrition/vo/DishesNutritionSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishesnutrition/vo/DishesNutritionSaveReqVO.java index 82c97fbc..e0171956 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishesnutrition/vo/DishesNutritionSaveReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishesnutrition/vo/DishesNutritionSaveReqVO.java @@ -1,9 +1,7 @@ package cn.iocoder.yudao.module.system.controller.admin.dishesnutrition.vo; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import javax.validation.constraints.*; +import lombok.Data; @Schema(description = "管理后台 - 菜品营养新增/修改 Request VO") @Data @@ -22,7 +20,7 @@ public class DishesNutritionSaveReqVO { private String dishesNumber; @Schema(description = "菜品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "5929") - @NotNull(message = "菜品编号不能为空") +// @NotNull(message = "菜品编号不能为空") private Long dishesId; @Schema(description = "营养占比") diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishesraw/vo/DishesRawSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishesraw/vo/DishesRawSaveReqVO.java index 83aeb4e6..26dc6c23 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishesraw/vo/DishesRawSaveReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishesraw/vo/DishesRawSaveReqVO.java @@ -1,11 +1,8 @@ package cn.iocoder.yudao.module.system.controller.admin.dishesraw.vo; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import org.springframework.web.multipart.MultipartFile; +import lombok.Data; -import java.util.*; -import javax.validation.constraints.*; import java.math.BigDecimal; @Schema(description = "管理后台 - 菜品原材料新增/修改 Request VO") @@ -19,13 +16,13 @@ public class DishesRawSaveReqVO { private String rawName; @Schema(description = "原材料图片", example = "https://www.iocoder.cn") - private MultipartFile rawImgUrl; + private String rawImgUrl; @Schema(description = "原材料描述") private String rawDescribe; @Schema(description = "菜品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23140") - @NotNull(message = "菜品编号不能为空") +// @NotNull(message = "菜品编号不能为空") private Long dishesId; @Schema(description = "原材料产地") diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/devuce/DevuceController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/devuce/DevuceController.java index 1998c843..58c11af3 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/devuce/DevuceController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/devuce/DevuceController.java @@ -17,6 +17,7 @@ import javax.annotation.Resource; import javax.annotation.security.PermitAll; import javax.validation.Valid; import java.util.List; +import java.util.Map; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -109,4 +110,9 @@ public class DevuceController { public CommonResult getCarteenId() { return success(devuceService.getCarteenIdByIp()); } + @GetMapping("/nutrition") + @Operation(summary = "根据ip获取门店id") + public CommonResult> getDishesNutrition(@RequestParam("dishesId") Long dishesId) { + return success(devuceService.getDishesNutrition( dishesId)); + } } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/carteen/CarteenMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/carteen/CarteenMapper.java index 0f72ddf7..5c6f0b27 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/carteen/CarteenMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/carteen/CarteenMapper.java @@ -1,13 +1,17 @@ package cn.iocoder.yudao.module.system.dal.mysql.carteen; -import java.util.*; - +import cn.hutool.core.date.DateTime; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenWeekSalesRespVo; import cn.iocoder.yudao.module.system.dal.dataobject.carteen.CarteenDO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.LinkedList; /** * 门店管理 Mapper @@ -28,5 +32,31 @@ public interface CarteenMapper extends BaseMapperX { .betweenIfPresent(CarteenDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(CarteenDO::getId)); } + @Select("") + LinkedList selectWeekSales(@Param("carteenId") Long carteenId,@Param("beginDate") DateTime beginDate, @Param("endDate") DateTime endDate); + @Select("") + LinkedList getCarteenSales(@Param("carteenId")Long carteenId,@Param("beginDate") DateTime beginDate, @Param("endDate") DateTime endDate); } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/carteen/CarteenService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/carteen/CarteenService.java index e501644c..3f54df1b 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/carteen/CarteenService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/carteen/CarteenService.java @@ -1,11 +1,14 @@ package cn.iocoder.yudao.module.system.service.carteen; -import javax.validation.*; - +import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenSaveReqVO; +import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenWeekSalesRespVo; import cn.iocoder.yudao.module.system.dal.dataobject.carteen.CarteenDO; -import cn.iocoder.yudao.framework.common.pojo.PageResult; + +import javax.validation.Valid; +import java.util.List; +import java.util.Map; /** * 门店管理 Service 接口 @@ -52,4 +55,11 @@ public interface CarteenService { */ PageResult getCarteenPage(CarteenPageReqVO pageReqVO); + /** + * @Description: 获取门店一周卖出多少销量 千克 + * @Author: qjq + * @Date: 2024/4/19 上午9:55 + * @return + */ + Map> getCarteenWeekSales(CarteenPageReqVO pageReqVO); } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/carteen/CarteenServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/carteen/CarteenServiceImpl.java index 6720ac5d..10130b46 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/carteen/CarteenServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/carteen/CarteenServiceImpl.java @@ -1,10 +1,16 @@ package cn.iocoder.yudao.module.system.service.carteen; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenSaveReqVO; +import cn.iocoder.yudao.module.system.controller.admin.carteen.vo.CarteenWeekSalesRespVo; import cn.iocoder.yudao.module.system.dal.dataobject.carteen.CarteenDO; import cn.iocoder.yudao.module.system.dal.mysql.carteen.CarteenMapper; import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants; @@ -13,8 +19,10 @@ import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; -import java.util.Arrays; -import java.util.Set; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; +import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -31,6 +39,12 @@ public class CarteenServiceImpl implements CarteenService { private CarteenMapper carteenMapper; @Resource private PermissionService permissionService; + private static final String ALL="all"; + //这周字段 + private static final String THISWEEK="week"; + //上周 + private static final String LASTWEEK="LastWeek"; + @Override public Long createCarteen(CarteenSaveReqVO createReqVO) { // 插入 @@ -78,4 +92,82 @@ public class CarteenServiceImpl implements CarteenService { return carteenMapper.selectPage(pageReqVO); } + /** + * @param req + * @return + * @Description: 获取门店一周卖出多少销量 千克 + * @Author: qjq + * @Date: 2024/4/19 上午9:55 + */ + @Override + public Map> getCarteenWeekSales(CarteenPageReqVO req) { + //获取这周时间 + DateTime endTime =DateUtil.endOfDay(DateUtil.date()); + DateTime startTime1=DateUtil.beginOfDay(endTime); + //获取偏移时间单位 + DateTime startTime=DateUtil.offsetDay(startTime1,-6); + //获取上周时间 + DateTime endTime2=DateUtil.endOfDay(DateUtil.offsetDay(startTime,-1)); + DateTime startTime2 =DateUtil.beginOfDay(DateUtil.offsetDay(endTime2,-6)); + Map> listMap=new HashMap<>(); + //这周时间 + //获取所有门店的销售量 + List list = this.getCarteenWeekSalesByType(req, startTime, endTime); + list.addAll(this.getCarteenSales(req, startTime1, endTime)); + if(ALL.equals(req.getType())){ + listMap.put(THISWEEK,this.getComputeCarteenWeekSales(list)); + //上周时间 + listMap.put(LASTWEEK,this.getCarteenWeekSalesByType(req, startTime2, endTime2)); + }else{ + listMap.put(THISWEEK,list); + listMap.put(LASTWEEK,this.getCarteenWeekSalesByType(req, startTime2, endTime2)); + } + //进行时间处理 + listMap.forEach((v,k)->{ + k.sort(Comparator.comparing(CarteenWeekSalesRespVo::getCreateTime)); + k.forEach(f-> f.setTimeType(LocalDateTimeUtil.dayOfWeek(f.getCreateTime().toLocalDate()).toChinese())); + }); + return listMap; + } + public List getComputeCarteenWeekSales(List list) { + List list1= new ArrayList<>(); + list.forEach(f-> f.setTimeType(LocalDateTimeUtil.dayOfWeek(f.getCreateTime().toLocalDate()).toChinese())); + list.stream() + .collect(Collectors.groupingBy(CarteenWeekSalesRespVo::getCarteenId)) + .forEach((k,v)->{ + CarteenWeekSalesRespVo bean = BeanUtil.toBean(v.get(0), CarteenWeekSalesRespVo.class); + BigDecimal sum = v.stream() + .map(CarteenWeekSalesRespVo::getSales) + .filter(ObjectUtil::isNotEmpty) + .reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP); + bean.setSales(sum); + list1.add(bean); + }); + return list1; + } + public List getCarteenWeekSalesByType(CarteenPageReqVO req, + DateTime startDate, + DateTime endDate){ + if(ALL.equals(req.getType())){ + return this.getComputeCarteenWeekSales(carteenMapper.selectWeekSales(null,startDate,endDate)); + }else{ + + return carteenMapper.selectWeekSales(req.getCarteenId(),startDate,endDate); + } + } + /** + * @Description: 今日门店销售量 + * @Author: qjq + * @Date: 2024/4/19 上午11:35 + * @return + */ + public List getCarteenSales(CarteenPageReqVO req, DateTime startDate, + DateTime endDate){ + if(ALL.equals(req.getType())){ + return carteenMapper.getCarteenSales(null,startDate,endDate); + } + else{ + return carteenMapper.getCarteenSales(req.getCarteenId(),startDate,endDate); + } + } } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/devuce/DevuceService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/devuce/DevuceService.java index 76b8427a..a4c7e9c6 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/devuce/DevuceService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/devuce/DevuceService.java @@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.system.dal.dataobject.dishestype.DishesTypeDO; import javax.validation.Valid; import java.util.List; +import java.util.Map; /** * 设备 Service 接口 @@ -78,4 +79,11 @@ public interface DevuceService { * @return */ Long getCarteenIdByIp(); + /** + * @Description: 获取菜品营养与菜品名称 + * @Author: qjq + * @Date: 2024/4/19 下午2:44 + * @return + */ + List getDishesNutrition(Long dishesId); } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/devuce/DevuceServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/devuce/DevuceServiceImpl.java index 6e9c0725..998ca6b9 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/devuce/DevuceServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/devuce/DevuceServiceImpl.java @@ -9,10 +9,12 @@ import cn.iocoder.yudao.module.system.controller.app.devuce.vo.DevuceSaveReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.deviceInfo.DeviceInfoDO; import cn.iocoder.yudao.module.system.dal.dataobject.devuce.DevuceDO; import cn.iocoder.yudao.module.system.dal.dataobject.dishes.DishesDO; +import cn.iocoder.yudao.module.system.dal.dataobject.dishesnutrition.DishesNutritionDO; import cn.iocoder.yudao.module.system.dal.dataobject.dishestype.DishesTypeDO; import cn.iocoder.yudao.module.system.dal.mysql.deviceInfo.DeviceInfoMapper; import cn.iocoder.yudao.module.system.dal.mysql.devuce.DevuceMapper; import cn.iocoder.yudao.module.system.dal.mysql.dishes.DishesMapper; +import cn.iocoder.yudao.module.system.dal.mysql.dishesnutrition.DishesNutritionMapper; import cn.iocoder.yudao.module.system.dal.mysql.dishestype.DishesTypeMapper; import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -22,6 +24,7 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -45,6 +48,8 @@ public class DevuceServiceImpl implements DevuceService { private HttpServletRequest httpServletRequest; @Resource private DeviceInfoMapper deviceInfoMapper; + @Resource + private DishesNutritionMapper dishesNutritionMapper; @Override public Long createDevuce(DevuceSaveReqVO createReqVO) { // 插入 @@ -174,6 +179,27 @@ public class DevuceServiceImpl implements DevuceService { return dishesTypeMapper.selectList(new LambdaQueryWrapperX().eq(DishesTypeDO::getCarteenId,carteenId)); } + /** + * @param dishesId + * @return + * @Description: 获取菜品营养与菜品名称 + * @Author: qjq + * @Date: 2024/4/19 下午2:44 + */ + @Override + public List getDishesNutrition(Long dishesId) { + + List rawDOS = dishesNutritionMapper.selectList(new LambdaQueryWrapperX() + .eqIfPresent(DishesNutritionDO::getDishesId, dishesId)); + List maps = BeanUtil.copyToList(rawDOS, Map.class); + maps.forEach(f ->{ + DishesDO dishesDO = dishesMapper.selectById(dishesId); + f.put("dishesName",dishesDO.getDishesName()); + f.put("dishesImageUrl",dishesDO.getDishesImageUrl()); + }); + return maps; + } + /** * @return * @Description: 根据ip获取门店id diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishes/DishesService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishes/DishesService.java index 95bb3c8f..4c143b82 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishes/DishesService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishes/DishesService.java @@ -1,11 +1,12 @@ package cn.iocoder.yudao.module.system.service.dishes; -import javax.validation.*; - +import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesRespVO; import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesSaveReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.dishes.DishesDO; -import cn.iocoder.yudao.framework.common.pojo.PageResult; + +import javax.validation.Valid; /** * 菜品管理 Service 接口 @@ -43,6 +44,7 @@ public interface DishesService { * @return 菜品管理 */ DishesDO getDishes(Long id); + DishesRespVO getDishes1(Long id); /** * 获得菜品管理分页 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishes/DishesServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishes/DishesServiceImpl.java index 91a5c0a2..6c2c0695 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishes/DishesServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishes/DishesServiceImpl.java @@ -1,19 +1,31 @@ package cn.iocoder.yudao.module.system.service.dishes; import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjUtil; +import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesRespVO; import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesSaveReqVO; +import cn.iocoder.yudao.module.system.controller.admin.dishesnutrition.vo.DishesNutritionPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.dishesnutrition.vo.DishesNutritionSaveReqVO; +import cn.iocoder.yudao.module.system.controller.admin.dishesraw.vo.DishesRawPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.dishesraw.vo.DishesRawSaveReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.dishes.DishesDO; +import cn.iocoder.yudao.module.system.dal.dataobject.dishesnutrition.DishesNutritionDO; +import cn.iocoder.yudao.module.system.dal.dataobject.dishesraw.DishesRawDO; import cn.iocoder.yudao.module.system.dal.mysql.dishes.DishesMapper; import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants; +import cn.iocoder.yudao.module.system.service.dishesnutrition.DishesNutritionService; +import cn.iocoder.yudao.module.system.service.dishesraw.DishesRawService; import lombok.SneakyThrows; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.math.BigDecimal; +import java.util.List; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -28,6 +40,10 @@ public class DishesServiceImpl implements DishesService { @Resource private DishesMapper dishesMapper; + @Resource + private DishesNutritionService dishesNutritionService; + @Resource + private DishesRawService dishesRawService; @Override @SneakyThrows public Long createDishes(DishesSaveReqVO createReqVO) { @@ -45,6 +61,16 @@ public class DishesServiceImpl implements DishesService { dishes.setDishesBasePrice(div); } dishesMapper.insert(dishes); + List list = createReqVO.getDishesNutritionList(); + List dishesRawList = createReqVO.getDishesRawList(); + if(ObjUtil.isNotEmpty(list)){ + list.forEach(f-> f.setDishesId(dishes.getId())); + dishesNutritionService.createDishesNutritionList(list); + } + if(ObjUtil.isNotEmpty(dishesRawList)){ + dishesRawList.forEach(f-> f.setDishesId(dishes.getId())); + dishesRawService.createDishesRawList(dishesRawList); + } // 返回 return dishes.getId(); } @@ -53,13 +79,19 @@ public class DishesServiceImpl implements DishesService { public void updateDishes(DishesSaveReqVO updateReqVO) { // 校验存在 validateDishesExists(updateReqVO.getId()); -// //把图片转换为base64 -// String img = Base64.getEncoder().encodeToString(updateReqVO.getFile().getBytes()); // 更新 DishesDO updateObj = BeanUtils.toBean(updateReqVO, DishesDO.class); -// updateObj.setDishesImageUrl(img); dishesMapper.updateById(updateObj); - + List list = updateReqVO.getDishesNutritionList(); + List dishesRawList = updateReqVO.getDishesRawList(); + if(ObjUtil.isNotEmpty(list)){ + list.forEach(f-> f.setDishesId(updateReqVO.getId())); + dishesNutritionService.updateDishesNutritionList(list); + } + if(ObjUtil.isNotEmpty(dishesRawList)){ + dishesRawList.forEach(f-> f.setDishesId(updateReqVO.getId())); + dishesRawService.updateDishesRawList(dishesRawList); + } } @Override @@ -76,11 +108,30 @@ public class DishesServiceImpl implements DishesService { } } + /** + * 获得菜品管理 + * + * @param id 编号 + * @return 菜品管理 + */ @Override public DishesDO getDishes(Long id) { return dishesMapper.selectById(id); } + @Override + public DishesRespVO getDishes1(Long id) { + DishesRespVO bean = BeanUtils.toBean(dishesMapper.selectById(id), DishesRespVO.class); + List dishesNutritionList = dishesNutritionService.getDishesNutritionList(new DishesNutritionPageReqVO().setDishesId(id)); + DishesRawPageReqVO dishesRawPageReqVO = new DishesRawPageReqVO(); + dishesRawPageReqVO.setDishesId(id); + dishesRawPageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List dishesRawList = dishesRawService.getDishesRawPage(dishesRawPageReqVO).getList(); + bean.setDishesNutritionList(dishesNutritionList); + bean.setDishesRawList(dishesRawList); + return bean; + } + @Override public PageResult getDishesPage(DishesPageReqVO pageReqVO) { return dishesMapper.selectPage(pageReqVO); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishesnutrition/DishesNutritionService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishesnutrition/DishesNutritionService.java index 3b3c175d..cae9cea4 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishesnutrition/DishesNutritionService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishesnutrition/DishesNutritionService.java @@ -31,6 +31,8 @@ public interface DishesNutritionService { */ void updateDishesNutrition(@Valid DishesNutritionSaveReqVO updateReqVO); + void updateDishesNutritionList(@Valid List updateReqVO); + /** * 删除菜品营养 * diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishesnutrition/DishesNutritionServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishesnutrition/DishesNutritionServiceImpl.java index 2fffc9b1..b247b5ec 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishesnutrition/DishesNutritionServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishesnutrition/DishesNutritionServiceImpl.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.service.dishesnutrition; import cn.hutool.core.util.NumberUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.system.controller.admin.dishesnutrition.vo.DishesNutritionPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.dishesnutrition.vo.DishesNutritionSaveReqVO; @@ -9,11 +10,9 @@ import cn.iocoder.yudao.module.system.dal.dataobject.dishesnutrition.DishesNutri import cn.iocoder.yudao.module.system.dal.mysql.dishesnutrition.DishesNutritionMapper; import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants; import org.springframework.stereotype.Service; -import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; - +import javax.annotation.Resource; import java.math.BigDecimal; import java.util.List; @@ -43,12 +42,21 @@ public class DishesNutritionServiceImpl implements DishesNutritionService { @Override public void updateDishesNutrition(DishesNutritionSaveReqVO updateReqVO) { // 校验存在 - validateDishesNutritionExists(updateReqVO.getId()); + try { + validateDishesNutritionExists(updateReqVO.getId()); + } catch (Exception e) { + this.createDishesNutrition(updateReqVO); + } // 更新 DishesNutritionDO updateObj = BeanUtils.toBean(updateReqVO, DishesNutritionDO.class); dishesNutritionMapper.updateById(updateObj); } + @Override + public void updateDishesNutritionList(List updateReqVO) { + updateReqVO.forEach(this::updateDishesNutrition); + } + @Override public void deleteDishesNutrition(Long id) { // 校验存在 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishesraw/DishesRawService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishesraw/DishesRawService.java index b7e87218..acc87860 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishesraw/DishesRawService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishesraw/DishesRawService.java @@ -30,6 +30,7 @@ public interface DishesRawService { * @param updateReqVO 更新信息 */ void updateDishesRaw(@Valid DishesRawSaveReqVO updateReqVO); + void updateDishesRawList(@Valid List updateReqVO); /** * 删除菜品原材料 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishesraw/DishesRawServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishesraw/DishesRawServiceImpl.java index d5d2de6d..c6b15c95 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishesraw/DishesRawServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishesraw/DishesRawServiceImpl.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.service.dishesraw; import cn.hutool.core.util.ObjUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.system.controller.admin.dishesraw.vo.DishesRawPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.dishesraw.vo.DishesRawSaveReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.dishesraw.DishesRawDO; @@ -9,11 +10,9 @@ import cn.iocoder.yudao.module.system.dal.mysql.dishesraw.DishesRawMapper; import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants; import lombok.SneakyThrows; import org.springframework.stereotype.Service; -import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; - +import javax.annotation.Resource; import java.util.Base64; import java.util.List; @@ -42,13 +41,22 @@ public class DishesRawServiceImpl implements DishesRawService { @Override public void updateDishesRaw(DishesRawSaveReqVO updateReqVO) { - // 校验存在 - validateDishesRawExists(updateReqVO.getId()); + try { + // 校验存在 + validateDishesRawExists(updateReqVO.getId()); + } catch (Exception e) { + this.createDishesRaw(updateReqVO); + } // 更新 DishesRawDO updateObj = BeanUtils.toBean(updateReqVO, DishesRawDO.class); dishesRawMapper.updateById(updateObj); } + @Override + public void updateDishesRawList(List updateReqVO) { + updateReqVO.forEach(this::updateDishesRaw); + } + @Override public void deleteDishesRaw(Long id) { // 校验存在