From 23bb203d3631d82979660c2641eed8b3bf899561 Mon Sep 17 00:00:00 2001 From: qjq <1766193529@qq.com> Date: Tue, 16 Apr 2024 15:00:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AF=8F=E9=81=93=E8=8F=9C=E7=9A=84=E4=BB=B7?= =?UTF-8?q?=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../carteenmoney/CarteenMoneyController.java | 45 +++++--- .../carteenmoney/vo/DeviceMoneyPageReqVO.java | 23 ++++ .../carteenmoney/vo/DeviceMoneyRespVO.java | 24 ++++ .../admin/carteenmoney/vo/DeviceRespVO.java | 26 +++++ .../dataobject/orderdetail/OrderDetailDO.java | 4 + .../module/member/job/DeviceMoneyJob.java | 104 ++++++++++++++++++ .../carteenmoney/CarteenMoneyService.java | 16 ++- .../carteenmoney/CarteenMoneyServiceImpl.java | 85 +++++++++++--- .../orderdetail/OrderDetailServiceImpl.java | 6 +- .../api/DeviceMoney/DeviceMoneyApi.java | 12 ++ .../api/DeviceMoney/dto/DeviceMoneyDto.java | 41 +++++++ .../module/system/api/carteen/CarteenApi.java | 16 +++ .../system/api/deviceInfo/DeviceInfoApi.java | 13 +++ .../api/deviceInfo/dto/DeviceInfoDto.java | 34 ++++++ .../system/enums/ErrorCodeConstants.java | 8 +- .../api/DeviceMoney/DeviceMoneyApiImpl.java | 23 ++++ .../system/api/carteen/CarteenApiImpl.java | 23 +++- .../api/deviceInfo/DeviceInfoApiImpl.java | 26 +++++ .../deviceinfo/DeviceInfoController.java | 94 ++++++++++++++++ .../deviceinfo/vo/DeviceInfoPageReqVO.java | 37 +++++++ .../admin/deviceinfo/vo/DeviceInfoRespVO.java | 44 ++++++++ .../deviceinfo/vo/DeviceInfoSaveReqVO.java | 30 +++++ .../devicemoney/DeviceMoneyController.java | 91 +++++++++++++++ .../devicemoney/vo/DeviceMoneyPageReqVO.java | 46 ++++++++ .../devicemoney/vo/DeviceMoneyRespVO.java | 52 +++++++++ .../devicemoney/vo/DeviceMoneySaveReqVO.java | 38 +++++++ .../dishestype/DishesTypeController.java | 52 ++++++--- .../dishestype/vo/DishesTypeListRespVO.java | 21 ++++ .../admin/material/MaterialController.java | 100 +++++++++++++++++ .../admin/material/vo/MaterialPageReqVO.java | 36 ++++++ .../admin/material/vo/MaterialRespVO.java | 37 +++++++ .../admin/material/vo/MaterialSaveReqVO.java | 33 ++++++ .../dataobject/devicemoney/DeviceMoneyDO.java | 55 +++++++++ .../dal/dataobject/material/MaterialDO.java | 48 ++++++++ .../dataobject/orderdetail/OrderDetail.java | 59 ++++++++++ .../mysql/deviceInfo/DeviceInfoMapper.java | 22 +++- .../mysql/devicemoney/DeviceMoneyMapper.java | 30 +++++ .../mysql/dishestype/DishesTypeMapper.java | 16 ++- .../dal/mysql/material/MaterialMapper.java | 26 +++++ .../module/system/enums/CostTypeEnum.java | 29 +++++ .../module/system/enums/TimePeriodEnum.java | 77 +++++++++++++ .../service/carteen/CarteenServiceImpl.java | 19 ++-- .../service/deviceinfo/DeviceInfoService.java | 55 +++++++++ .../deviceinfo/DeviceInfoServiceImpl.java | 71 ++++++++++++ .../devicemoney/DeviceMoneyService.java | 53 +++++++++ .../devicemoney/DeviceMoneyServiceImpl.java | 71 ++++++++++++ .../service/dishestype/DishesTypeService.java | 19 +++- .../dishestype/DishesTypeServiceImpl.java | 63 ++++++++++- .../service/material/MaterialService.java | 61 ++++++++++ .../service/material/MaterialServiceImpl.java | 85 ++++++++++++++ 50 files changed, 2022 insertions(+), 77 deletions(-) create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/carteenmoney/vo/DeviceMoneyPageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/carteenmoney/vo/DeviceMoneyRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/carteenmoney/vo/DeviceRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/DeviceMoneyJob.java create mode 100644 yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/DeviceMoney/DeviceMoneyApi.java create mode 100644 yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/DeviceMoney/dto/DeviceMoneyDto.java create mode 100644 yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/deviceInfo/DeviceInfoApi.java create mode 100644 yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/deviceInfo/dto/DeviceInfoDto.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/DeviceMoney/DeviceMoneyApiImpl.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/deviceInfo/DeviceInfoApiImpl.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/deviceinfo/DeviceInfoController.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/deviceinfo/vo/DeviceInfoPageReqVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/deviceinfo/vo/DeviceInfoRespVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/deviceinfo/vo/DeviceInfoSaveReqVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/devicemoney/DeviceMoneyController.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/devicemoney/vo/DeviceMoneyPageReqVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/devicemoney/vo/DeviceMoneyRespVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/devicemoney/vo/DeviceMoneySaveReqVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishestype/vo/DishesTypeListRespVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/material/MaterialController.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/material/vo/MaterialPageReqVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/material/vo/MaterialRespVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/material/vo/MaterialSaveReqVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/devicemoney/DeviceMoneyDO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/material/MaterialDO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/orderdetail/OrderDetail.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/devicemoney/DeviceMoneyMapper.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/material/MaterialMapper.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/CostTypeEnum.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/TimePeriodEnum.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/deviceinfo/DeviceInfoService.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/deviceinfo/DeviceInfoServiceImpl.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/devicemoney/DeviceMoneyService.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/devicemoney/DeviceMoneyServiceImpl.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/material/MaterialService.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/material/MaterialServiceImpl.java diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/carteenmoney/CarteenMoneyController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/carteenmoney/CarteenMoneyController.java index 4d6ebc6e..2512bc81 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/carteenmoney/CarteenMoneyController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/carteenmoney/CarteenMoneyController.java @@ -1,33 +1,35 @@ package cn.iocoder.yudao.module.member.controller.admin.carteenmoney; +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.member.controller.admin.carteenmoney.vo.CarteenMoneyPageReqVO; import cn.iocoder.yudao.module.member.controller.admin.carteenmoney.vo.CarteenMoneyRespVO; -import cn.iocoder.yudao.module.member.controller.admin.carteenmoney.vo.CarteenMoneySaveReqVO; +import cn.iocoder.yudao.module.member.controller.admin.carteenmoney.vo.DeviceMoneyPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.carteenmoney.vo.DeviceMoneyRespVO; import cn.iocoder.yudao.module.member.dal.dataobject.carteenmoney.CarteenMoneyDO; import cn.iocoder.yudao.module.member.service.carteenmoney.CarteenMoneyService; -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.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; -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 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 = "管理后台 - 门店流水") @@ -93,4 +95,13 @@ public class CarteenMoneyController { BeanUtils.toBean(list, CarteenMoneyRespVO.class)); } + + @GetMapping("/device/money") + @Operation(summary = "获得门店设备流水") + @PreAuthorize("@ss.hasPermission('t:carteen-money:query')") + public CommonResult getCarteenMoneyDevicePage(@Valid DeviceMoneyPageReqVO pageReqVO) { + return success(carteenMoneyService.getCarteenMoneyDevice(pageReqVO)); + } + + } \ 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/carteenmoney/vo/DeviceMoneyPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/carteenmoney/vo/DeviceMoneyPageReqVO.java new file mode 100644 index 00000000..932ef67a --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/carteenmoney/vo/DeviceMoneyPageReqVO.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.module.member.controller.admin.carteenmoney.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +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; + +@Schema(description = "管理后台 - 门店设备流水 Request VO") +@Data +@ToString(callSuper = true) +public class DeviceMoneyPageReqVO { + + @Schema(description = "门店id", example = "927") + private Long carteenId; + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ 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/carteenmoney/vo/DeviceMoneyRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/carteenmoney/vo/DeviceMoneyRespVO.java new file mode 100644 index 00000000..6d46dcaf --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/carteenmoney/vo/DeviceMoneyRespVO.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.module.member.controller.admin.carteenmoney.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.ToString; + +import java.util.ArrayList; +import java.util.List; + +@Schema(description = "管理后台 - 门店设备流水 Request VO") +@Data +@ToString(callSuper = true) +public class DeviceMoneyRespVO { + @Schema(description = "门店id", example = "927") + private Long id; + @Schema(description = "门店名称", example = "真好吃") + private String storesName; + @Schema(description = "门店电话", example = "真好吃") + private String storeAddress; + @Schema(description = "联系电话") + private String phone; + @Schema(description = "门店设备流水详细") + private List deviceRespVOList =new ArrayList<>(); +} \ 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/carteenmoney/vo/DeviceRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/carteenmoney/vo/DeviceRespVO.java new file mode 100644 index 00000000..44ae2ea4 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/carteenmoney/vo/DeviceRespVO.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.member.controller.admin.carteenmoney.vo; + +import cn.iocoder.yudao.module.system.api.dish.dto.DishesRespDto; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.ToString; + +import java.math.BigDecimal; +import java.util.List; + +@Schema(description = "管理后台 - 设备流水 Request VO") +@Data +@ToString(callSuper = true) +public class DeviceRespVO { + @Schema(description = "设备ip", example = "172.0.0.1") + private String deviceIp; + @Schema(description = "设备流水", example = "13264") + private BigDecimal money; + @Schema(description = "时间段", example = "早上") + private String time; + /** + * 预留,设备热门菜品 + */ + @Schema(description = "设备热门菜品") + private List dishesRespDtoList; +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/orderdetail/OrderDetailDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/orderdetail/OrderDetailDO.java index b5077219..27147258 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/orderdetail/OrderDetailDO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/orderdetail/OrderDetailDO.java @@ -62,4 +62,8 @@ public class OrderDetailDO extends BaseDO { * 设备ip */ private String sn; + /** + * 菜品价格 + */ + private BigDecimal price; } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/DeviceMoneyJob.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/DeviceMoneyJob.java new file mode 100644 index 00000000..ea71966e --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/DeviceMoneyJob.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.member.job; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler; +import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore; +import cn.iocoder.yudao.module.member.dal.dataobject.orderdetail.OrderDetailDO; +import cn.iocoder.yudao.module.member.dal.mysql.orderdetail.OrderDetailMapper; +import cn.iocoder.yudao.module.member.enums.TimePeriodEnum; +import cn.iocoder.yudao.module.system.api.DeviceMoney.DeviceMoneyApi; +import cn.iocoder.yudao.module.system.api.DeviceMoney.dto.DeviceMoneyDto; +import cn.iocoder.yudao.module.system.api.carteen.CarteenApi; +import cn.iocoder.yudao.module.system.api.carteen.dto.CarteenRespDto; +import cn.iocoder.yudao.module.system.api.deviceInfo.DeviceInfoApi; +import cn.iocoder.yudao.module.system.api.deviceInfo.dto.DeviceInfoDto; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Author:qjq 每日统计设备流水金额 + * @Date:2024/4/15 上午9:59 + */ +@Slf4j +@Component +public class DeviceMoneyJob implements JobHandler { + @Resource + private CarteenApi carteenApi; + @Resource + private OrderDetailMapper orderDetailMapper; + @Resource + private DeviceInfoApi deviceInfoApi; + @Resource + private DeviceMoneyApi deviceMoneyApi; + /** + * 执行任务 + * + * @param param 参数 + * @return 结果 + * @throws Exception 异常 + */ + @Override + @TenantIgnore + public String execute(String param) throws Exception { + //获取昨天时间 + LocalDateTime offset = LocalDateTimeUtil.offset(LocalDateTime.now(), -1, ChronoUnit.DAYS); + //获取昨天开始时间 + LocalDateTime startTime = LocalDateTimeUtil.beginOfDay(offset); + LocalDateTime endTime = LocalDateTimeUtil.endOfDay(offset); + //获取门店信息 + List car = carteenApi.getCarteenList(); + for (CarteenRespDto dto : car) { + int i=0; + //获取门店下的设备 + List ips = deviceInfoApi.getDeviceInfoList(dto.getId()).stream() + .map(DeviceInfoDto::getDeviceIp) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + if(ObjectUtil.isNotEmpty(ips)){ + //获取设备营业数据 + List dos = orderDetailMapper.selectList(new LambdaQueryWrapperX() + .in(OrderDetailDO::getSn, ips) + .betweenIfPresent(OrderDetailDO::getCreateTime, startTime, endTime)); + if(ObjectUtil.isNotEmpty(dos)){ + //根据设备分组 + Map> collect = dos.stream().collect(Collectors.groupingBy(OrderDetailDO::getSn)); + for (Map.Entry> map : collect.entrySet()) { + DeviceMoneyDto bean = BeanUtil.toBean(dto, DeviceMoneyDto.class); + bean.setCarteenId(dto.getId()); + List value = map.getValue(); + //设置设备ip + bean.setDeviceIp(map.getKey()); + //根据时间进行时间段赋值 + value.forEach(v -> v.setCreator(TimePeriodEnum.getTimePeriod(v.getCreateTime()))); + //根据时间段分组 + value.stream().collect(Collectors.groupingBy(OrderDetailDO::getCreator)) + .forEach((k, v) -> { + //根据时间段进行金额统计 + BigDecimal sum = v.stream() + .map(OrderDetailDO::getPrice) + .filter(ObjectUtil::isNotEmpty) + .reduce(BigDecimal.ZERO, BigDecimal::add); + bean.setTimePeriod(k); + bean.setMoney(sum); + }); + i+= deviceMoneyApi.insertDeviceMoney(bean); + } + } + } + log.info("[execute][定时插入门店设备流水数据成功 {} 条数据]",i); + } + return String.format("定时插入统计营业数据是否成功 %s ", true); + } +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/carteenmoney/CarteenMoneyService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/carteenmoney/CarteenMoneyService.java index c9f757c7..cebe2d3b 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/carteenmoney/CarteenMoneyService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/carteenmoney/CarteenMoneyService.java @@ -3,9 +3,11 @@ package cn.iocoder.yudao.module.member.service.carteenmoney; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.member.controller.admin.carteenmoney.vo.CarteenMoneyPageReqVO; import cn.iocoder.yudao.module.member.controller.admin.carteenmoney.vo.CarteenMoneySaveReqVO; +import cn.iocoder.yudao.module.member.controller.admin.carteenmoney.vo.DeviceMoneyPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.carteenmoney.vo.DeviceMoneyRespVO; import cn.iocoder.yudao.module.member.dal.dataobject.carteenmoney.CarteenMoneyDO; -import javax.validation.*; +import javax.validation.Valid; /** * 门店流水 Service 接口 @@ -47,9 +49,19 @@ public interface CarteenMoneyService { /** * 获得门店流水分页 * + * + * + * + * * @param pageReqVO 分页查询 * @return 门店流水分页 */ PageResult getCarteenMoneyPage(CarteenMoneyPageReqVO pageReqVO); - + /** + * @Description: 获取门店下面的设备流水 + * @Author: qjq + * @Date: 2024/4/12 下午3:15 + * @return + */ + DeviceMoneyRespVO getCarteenMoneyDevice(DeviceMoneyPageReqVO reqVO); } \ 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 43b18d23..e657cf52 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 @@ -1,31 +1,33 @@ package cn.iocoder.yudao.module.member.service.carteenmoney; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.ObjUtil; +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.mybatis.core.query.LambdaQueryWrapperX; -import cn.iocoder.yudao.module.member.controller.admin.carteenmoney.vo.CarteenMoneyPageReqVO; -import cn.iocoder.yudao.module.member.controller.admin.carteenmoney.vo.CarteenMoneySaveReqVO; +import cn.iocoder.yudao.module.member.controller.admin.carteenmoney.vo.*; import cn.iocoder.yudao.module.member.dal.dataobject.carteenmoney.CarteenMoneyDO; import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO; +import cn.iocoder.yudao.module.member.dal.dataobject.orderdetail.OrderDetailDO; import cn.iocoder.yudao.module.member.dal.mysql.carteenmoney.CarteenMoneyMapper; import cn.iocoder.yudao.module.member.dal.mysql.order.DishOrderMapper; +import cn.iocoder.yudao.module.member.dal.mysql.orderdetail.OrderDetailMapper; +import cn.iocoder.yudao.module.member.enums.TimePeriodEnum; +import cn.iocoder.yudao.module.system.api.carteen.CarteenApi; +import cn.iocoder.yudao.module.system.api.carteen.dto.CarteenRespDto; +import cn.iocoder.yudao.module.system.api.deviceInfo.DeviceInfoApi; +import cn.iocoder.yudao.module.system.api.deviceInfo.dto.DeviceInfoDto; 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.time.LocalDate; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -43,8 +45,12 @@ public class CarteenMoneyServiceImpl implements CarteenMoneyService { private CarteenMoneyMapper carteenMoneyMapper; @Resource private DishOrderMapper dishOrderMapper; - - + @Resource + private CarteenApi carteenApi; + @Resource + private OrderDetailMapper orderDetailMapper; + @Resource + private DeviceInfoApi deviceInfoApi; @Override public Long createCarteenMoney(CarteenMoneySaveReqVO createReqVO) { @@ -167,4 +173,57 @@ public class CarteenMoneyServiceImpl implements CarteenMoneyService { } return list; } + + /** + * @param reqVO + * @return + * @Description: 获取门店下面的设备流水 + * @Author: qjq + * @Date: 2024/4/12 下午3:13 + */ + @Override + public DeviceMoneyRespVO getCarteenMoneyDevice(DeviceMoneyPageReqVO reqVO) { + //时间为空默认为今天 + if(ObjUtil.isEmpty(reqVO.getCreateTime())){ + reqVO.setCreateTime(new LocalDateTime[]{LocalDateTimeUtil.beginOfDay(LocalDateTime.now()),LocalDateTimeUtil.endOfDay(LocalDateTime.now())}); + } + //门店id + Long carteenId = reqVO.getCarteenId(); + //获取门店信息 + CarteenRespDto car = carteenApi.getCarteenById(carteenId); + DeviceMoneyRespVO bean = BeanUtil.toBean(car, DeviceMoneyRespVO.class); + //获取门店下的设备 + List ips = deviceInfoApi.getDeviceInfoList(bean.getId()).stream() + .map(DeviceInfoDto::getDeviceIp) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + //获取设备营业数据 + List dos = orderDetailMapper.selectList(new LambdaQueryWrapperX() + .in(OrderDetailDO::getSn, ips) + .betweenIfPresent(OrderDetailDO::getCreateTime, reqVO.getCreateTime())); + //根据设备分组 + 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()); + //根据时间进行时间段赋值 + value.forEach(v -> v.setCreator(TimePeriodEnum.getTimePeriod(v.getCreateTime()))); + //根据时间段分组 + value.stream().collect(Collectors.groupingBy(OrderDetailDO::getCreator)) + .forEach((k, v) -> { + //根据时间段进行金额统计 + BigDecimal sum = v.stream() + .map(OrderDetailDO::getPrice) + .filter(ObjectUtil::isNotEmpty) + .reduce(BigDecimal.ZERO, BigDecimal::add); + deviceRespVO.setTime(k); + deviceRespVO.setMoney(sum); + }); + bean.getDeviceRespVOList().add(deviceRespVO); + } + return bean; + } } \ 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/orderdetail/OrderDetailServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetail/OrderDetailServiceImpl.java index 28bd12c2..1a816488 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 @@ -99,9 +99,10 @@ public class OrderDetailServiceImpl implements OrderDetailService { //计算新总价 String old = stringRedisTemplate.opsForValue().get(createReqVO.getDiningPlatesNum()); BigDecimal oldBigDecimal = new BigDecimal(old); + //计算每个菜品的价格 + BigDecimal bigDecimal1 = dish.getDishesBasePrice().multiply(createReqVO.getWeight()).setScale(2, RoundingMode.HALF_UP); // - BigDecimal newPrice = dish.getDishesBasePrice().multiply(createReqVO.getWeight()) - .add(oldBigDecimal).setScale(2, RoundingMode.HALF_UP); + BigDecimal newPrice =bigDecimal1.add(oldBigDecimal).setScale(2, RoundingMode.HALF_UP); stringRedisTemplate.opsForValue().set(createReqVO.getDiningPlatesNum(),newPrice.toString()); //计算热量 @@ -116,6 +117,7 @@ public class OrderDetailServiceImpl implements OrderDetailService { orderDetail.setOrderId(dishOrderDO.getId()).setDishesName(dish.getDishesName()).setDishUrl(dish.getDishesImageUrl()); orderDetail.setSn(this.getHearder()); + orderDetail.setPrice(bigDecimal1); orderDetailMapper.insert(orderDetail); // 返回 return orderDetail.getId(); diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/DeviceMoney/DeviceMoneyApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/DeviceMoney/DeviceMoneyApi.java new file mode 100644 index 00000000..5d549386 --- /dev/null +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/DeviceMoney/DeviceMoneyApi.java @@ -0,0 +1,12 @@ +package cn.iocoder.yudao.module.system.api.DeviceMoney; + +import cn.iocoder.yudao.module.system.api.DeviceMoney.dto.DeviceMoneyDto; + +/** + * @Author:qjq + * @Date:2024/4/15 上午11:21 + */ +public interface DeviceMoneyApi { + + int insertDeviceMoney(DeviceMoneyDto createReqVO); +} diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/DeviceMoney/dto/DeviceMoneyDto.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/DeviceMoney/dto/DeviceMoneyDto.java new file mode 100644 index 00000000..d059de14 --- /dev/null +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/DeviceMoney/dto/DeviceMoneyDto.java @@ -0,0 +1,41 @@ +package cn.iocoder.yudao.module.system.api.DeviceMoney.dto; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @Author:qjq + * @Date:2024/4/15 上午11:22 + */ +@Data +public class DeviceMoneyDto { + /** + * 设备ip + */ + private String deviceIp; + /** + * 设备名称 + */ + private String deviceName; + /** + * 设备sn + */ + private String deviceSn; + /** + * 门店编号 + */ + private Long carteenId; + /** + * 设备流水 + */ + private BigDecimal money; + /** + * 时间段 + */ + private String timePeriod; + /** + * 热门菜品ids,如[1,2,3,4,5,] + */ + private String dishesIds; +} diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/carteen/CarteenApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/carteen/CarteenApi.java index 4495eb0f..febd12e9 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/carteen/CarteenApi.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/carteen/CarteenApi.java @@ -3,6 +3,8 @@ package cn.iocoder.yudao.module.system.api.carteen; import cn.iocoder.yudao.module.system.api.carteen.dto.CarteenRespDto; +import java.util.List; + /** * 菜品营养 Service 接口 * @@ -14,4 +16,18 @@ public interface CarteenApi { * 获得门店信息 */ public CarteenRespDto getCarteen(Long id); + /** + * @Description: 根据id获取门店信息 + * @Author: qjq + * @Date: 2024/4/12 下午3:31 + * @return + */ + CarteenRespDto getCarteenById(Long id); + /** + * @Description: 获取门店列表 + * @Author: qjq + * @Date: 2024/4/15 上午10:18 + * @return + */ + List getCarteenList(); } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/deviceInfo/DeviceInfoApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/deviceInfo/DeviceInfoApi.java new file mode 100644 index 00000000..320dc4c2 --- /dev/null +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/deviceInfo/DeviceInfoApi.java @@ -0,0 +1,13 @@ +package cn.iocoder.yudao.module.system.api.deviceInfo; + +import cn.iocoder.yudao.module.system.api.deviceInfo.dto.DeviceInfoDto; + +import java.util.List; + +/** + * @Author:qjq 设备信息api + * @Date:2024/4/12 下午3:53 + */ +public interface DeviceInfoApi { + List getDeviceInfoList(Long carteenId); +} diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/deviceInfo/dto/DeviceInfoDto.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/deviceInfo/dto/DeviceInfoDto.java new file mode 100644 index 00000000..e776ea0f --- /dev/null +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/deviceInfo/dto/DeviceInfoDto.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.system.api.deviceInfo.dto; + +import lombok.Data; + +/** + * @Author:qjq + * @Date:2024/4/10 下午4:37 + */ +@Data +public class DeviceInfoDto { + + + /** + * 设备sn码 + */ + private String deviceSn; + /** + * 门店编号 + */ + private Long carteenId; + /** + * 设备ip + */ + private String deviceIp; + /** + * 设备名称 + */ + private String deviceName; + + /** + * 门店名称 + */ + private String carteenName; +} diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java index 41444466..78567273 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java @@ -183,7 +183,11 @@ public interface ErrorCodeConstants { // ========== 门店 流水 1_002_035_002 ========== ErrorCode DISHES_RAW_NOT_EXISTS = new ErrorCode(1_002_035_002, "菜品原材料不存在"); // ========== 门店 流水 1_002_036_002 ========== - ErrorCode BUSINESS_NOT_EXISTS = new ErrorCode(1_002_035_002, "营业统计不存在"); + ErrorCode BUSINESS_NOT_EXISTS = new ErrorCode(1_002_036_002, "营业统计不存在"); // ========== 门店 流水 1_002_037_002 ========== - ErrorCode DEVUCE_NOT_EXISTS = new ErrorCode(1_002_035_002, "设备不存在"); + ErrorCode DEVUCE_NOT_EXISTS = new ErrorCode(1_002_037_002, "设备不存在"); + // ========== 门店 设备日流水 1_002_038_002 ========== + ErrorCode DEVICE_MONEY_NOT_EXISTS = new ErrorCode(1_002_038_002, "门店设备流水不存在"); + // ========== 门店 设备日流水 1_002_039_002 ========== + ErrorCode MATERIAL_NOT_EXISTS = new ErrorCode(1_002_039_002, "门店材料库存不存在"); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/DeviceMoney/DeviceMoneyApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/DeviceMoney/DeviceMoneyApiImpl.java new file mode 100644 index 00000000..85e93860 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/DeviceMoney/DeviceMoneyApiImpl.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.module.system.api.DeviceMoney; + +import cn.hutool.core.bean.BeanUtil; +import cn.iocoder.yudao.module.system.api.DeviceMoney.dto.DeviceMoneyDto; +import cn.iocoder.yudao.module.system.dal.dataobject.devicemoney.DeviceMoneyDO; +import cn.iocoder.yudao.module.system.dal.mysql.devicemoney.DeviceMoneyMapper; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * @Author:qjq + * @Date:2024/4/15 上午11:19 + */ +@Service +public class DeviceMoneyApiImpl implements DeviceMoneyApi{ + @Resource + private DeviceMoneyMapper deviceMoneyMapper; + @Override + public int insertDeviceMoney(DeviceMoneyDto createReqVO) { + return deviceMoneyMapper.insert(BeanUtil.toBean(createReqVO, DeviceMoneyDO.class)); + } +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/carteen/CarteenApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/carteen/CarteenApiImpl.java index 240895c2..11ad1dbe 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/carteen/CarteenApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/carteen/CarteenApiImpl.java @@ -10,6 +10,7 @@ import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.util.List; /** * 门店管理 Service 实现类 @@ -33,6 +34,26 @@ public class CarteenApiImpl implements CarteenApi { return BeanUtils.toBean(carteenDO, CarteenRespDto.class); } + /** + * @param id + * @return + * @Description: 根据id获取门店信息 + * @Author: qjq + * @Date: 2024/4/12 下午3:30 + */ + @Override + public CarteenRespDto getCarteenById(Long id) { + return BeanUtils.toBean(carteenMapper.selectById(id), CarteenRespDto.class); + } - + /** + * @return + * @Description: 获取门店列表 + * @Author: qjq + * @Date: 2024/4/15 上午10:18 + */ + @Override + public List getCarteenList() { + return BeanUtils.toBean(carteenMapper.selectList(null), CarteenRespDto.class); + } } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/deviceInfo/DeviceInfoApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/deviceInfo/DeviceInfoApiImpl.java new file mode 100644 index 00000000..bd54b068 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/deviceInfo/DeviceInfoApiImpl.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.system.api.deviceInfo; + +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.system.api.deviceInfo.dto.DeviceInfoDto; +import cn.iocoder.yudao.module.system.dal.dataobject.deviceInfo.DeviceInfoDO; +import cn.iocoder.yudao.module.system.dal.mysql.deviceInfo.DeviceInfoMapper; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Author:qjq + * @Date:2024/4/12 下午3:55 + */ +@Service +public class DeviceInfoApiImpl implements DeviceInfoApi { + @Resource + private DeviceInfoMapper deviceInfoMapper; + @Override + public List getDeviceInfoList(Long carteenId) { + return BeanUtils.toBean(deviceInfoMapper.selectList(new LambdaQueryWrapperX() + .eqIfPresent(DeviceInfoDO::getCarteenId, carteenId)), DeviceInfoDto.class); + } +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/deviceinfo/DeviceInfoController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/deviceinfo/DeviceInfoController.java new file mode 100644 index 00000000..d68c0521 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/deviceinfo/DeviceInfoController.java @@ -0,0 +1,94 @@ +package cn.iocoder.yudao.module.system.controller.admin.deviceinfo; + +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.deviceinfo.vo.DeviceInfoPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.deviceinfo.vo.DeviceInfoRespVO; +import cn.iocoder.yudao.module.system.controller.admin.deviceinfo.vo.DeviceInfoSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.deviceInfo.DeviceInfoDO; +import cn.iocoder.yudao.module.system.service.deviceinfo.DeviceInfoService; +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.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; + + +@Tag(name = "管理后台 - 设备信息关联门店") +@RestController +@RequestMapping("/t/device-info") +@Validated +public class DeviceInfoController { + + @Resource + private DeviceInfoService deviceInfoService; + + @PostMapping("/create") + @Operation(summary = "创建设备信息关联门店") + @PreAuthorize("@ss.hasPermission('t:device-info:create')") + public CommonResult createDeviceInfo(@Valid @RequestBody DeviceInfoSaveReqVO createReqVO) { + return success(deviceInfoService.createDeviceInfo(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新设备信息关联门店") + @PreAuthorize("@ss.hasPermission('t:device-info:update')") + public CommonResult updateDeviceInfo(@Valid @RequestBody DeviceInfoSaveReqVO updateReqVO) { + deviceInfoService.updateDeviceInfo(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除设备信息关联门店") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('t:device-info:delete')") + public CommonResult deleteDeviceInfo(@RequestParam("id") Long id) { + deviceInfoService.deleteDeviceInfo(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得设备信息关联门店") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('t:device-info:query')") + public CommonResult getDeviceInfo(@RequestParam("id") Long id) { + DeviceInfoDO deviceInfo = deviceInfoService.getDeviceInfo(id); + return success(BeanUtils.toBean(deviceInfo, DeviceInfoRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得设备信息关联门店分页") + @PreAuthorize("@ss.hasPermission('t:device-info:query')") + public CommonResult> getDeviceInfoPage(@Valid DeviceInfoPageReqVO pageReqVO) { + PageResult pageResult = deviceInfoService.getDeviceInfoPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, DeviceInfoRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出设备信息关联门店 Excel") + @PreAuthorize("@ss.hasPermission('t:device-info:export')") + @OperateLog(type = EXPORT) + public void exportDeviceInfoExcel(@Valid DeviceInfoPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = deviceInfoService.getDeviceInfoPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "设备信息关联门店.xls", "数据", DeviceInfoRespVO.class, + BeanUtils.toBean(list, DeviceInfoRespVO.class)); + } + +} \ 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/deviceinfo/vo/DeviceInfoPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/deviceinfo/vo/DeviceInfoPageReqVO.java new file mode 100644 index 00000000..48d58e2c --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/deviceinfo/vo/DeviceInfoPageReqVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.system.controller.admin.deviceinfo.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +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; + +@Schema(description = "管理后台 - 设备信息关联门店分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class DeviceInfoPageReqVO extends PageParam { + + @Schema(description = "设备sn码") + private String deviceSn; + + @Schema(description = "门店编号", example = "29361") + private Long carteenId; + + @Schema(description = "设备ip") + private String deviceIp; + + @Schema(description = "设备名称", example = "张三") + private String deviceName; + + @Schema(description = "门店名称", example = "张三") + private String carteenName; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ 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/deviceinfo/vo/DeviceInfoRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/deviceinfo/vo/DeviceInfoRespVO.java new file mode 100644 index 00000000..ae887f10 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/deviceinfo/vo/DeviceInfoRespVO.java @@ -0,0 +1,44 @@ +package cn.iocoder.yudao.module.system.controller.admin.deviceinfo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 设备信息关联门店 Response VO") +@Data +@ExcelIgnoreUnannotated +public class DeviceInfoRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "557") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "设备sn码") + @ExcelProperty("设备sn码") + private String deviceSn; + + @Schema(description = "门店编号", example = "29361") + @ExcelProperty("门店编号") + private Long carteenId; + + @Schema(description = "设备ip") + @ExcelProperty("设备ip") + private String deviceIp; + + @Schema(description = "设备名称", example = "张三") + @ExcelProperty("设备名称") + private String deviceName; + + @Schema(description = "门店名称", example = "张三") + @ExcelProperty("门店名称") + private String carteenName; + + @Schema(description = "创建时间") + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ 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/deviceinfo/vo/DeviceInfoSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/deviceinfo/vo/DeviceInfoSaveReqVO.java new file mode 100644 index 00000000..e6238045 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/deviceinfo/vo/DeviceInfoSaveReqVO.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.system.controller.admin.deviceinfo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 设备信息关联门店新增/修改 Request VO") +@Data +public class DeviceInfoSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "557") + private Long id; + + @Schema(description = "设备sn码") + private String deviceSn; + + @Schema(description = "门店编号", example = "29361") + private Long carteenId; + + @Schema(description = "设备ip") + private String deviceIp; + + @Schema(description = "设备名称", example = "张三") + private String deviceName; + + @Schema(description = "门店名称", example = "张三") + private String carteenName; + +} \ 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/devicemoney/DeviceMoneyController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/devicemoney/DeviceMoneyController.java new file mode 100644 index 00000000..e529a0b3 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/devicemoney/DeviceMoneyController.java @@ -0,0 +1,91 @@ +package cn.iocoder.yudao.module.system.controller.admin.devicemoney; + +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.dal.dataobject.devicemoney.DeviceMoneyDO; +import cn.iocoder.yudao.module.system.service.devicemoney.DeviceMoneyService; +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 cn.iocoder.yudao.module.system.controller.admin.devicemoney.vo.*; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; + + +@Tag(name = "管理后台 - 门店设备日流水") +@RestController +@RequestMapping("/t/device-money") +@Validated +public class DeviceMoneyController { + + @Resource + private DeviceMoneyService deviceMoneyService; + + @PostMapping("/create") + @Operation(summary = "创建门店设备日流水") + @PreAuthorize("@ss.hasPermission('t:device-money:create')") + public CommonResult createDeviceMoney(@Valid @RequestBody DeviceMoneySaveReqVO createReqVO) { + return success(deviceMoneyService.createDeviceMoney(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新门店设备日流水") + @PreAuthorize("@ss.hasPermission('t:device-money:update')") + public CommonResult updateDeviceMoney(@Valid @RequestBody DeviceMoneySaveReqVO updateReqVO) { + deviceMoneyService.updateDeviceMoney(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除门店设备日流水") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('t:device-money:delete')") + public CommonResult deleteDeviceMoney(@RequestParam("id") Long id) { + deviceMoneyService.deleteDeviceMoney(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得门店设备日流水") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('t:device-money:query')") + public CommonResult getDeviceMoney(@RequestParam("id") Long id) { + DeviceMoneyDO deviceMoney = deviceMoneyService.getDeviceMoney(id); + return success(BeanUtils.toBean(deviceMoney, DeviceMoneyRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得门店设备日流水分页") + @PreAuthorize("@ss.hasPermission('t:device-money:query')") + public CommonResult> getDeviceMoneyPage(@Valid DeviceMoneyPageReqVO pageReqVO) { + PageResult pageResult = deviceMoneyService.getDeviceMoneyPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, DeviceMoneyRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出门店设备日流水 Excel") + @PreAuthorize("@ss.hasPermission('t:device-money:export')") + @OperateLog(type = EXPORT) + public void exportDeviceMoneyExcel(@Valid DeviceMoneyPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = deviceMoneyService.getDeviceMoneyPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "门店设备日流水.xls", "数据", DeviceMoneyRespVO.class, + BeanUtils.toBean(list, DeviceMoneyRespVO.class)); + } + +} \ 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/devicemoney/vo/DeviceMoneyPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/devicemoney/vo/DeviceMoneyPageReqVO.java new file mode 100644 index 00000000..1758533d --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/devicemoney/vo/DeviceMoneyPageReqVO.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.module.system.controller.admin.devicemoney.vo; + +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.math.BigDecimal; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 门店设备日流水分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class DeviceMoneyPageReqVO extends PageParam { + + @Schema(description = "设备ip") + private String deviceIp; + + @Schema(description = "设备名称", example = "张三") + private String deviceName; + + @Schema(description = "设备sn") + private String deviceSn; + + @Schema(description = "门店编号", example = "30417") + private Long carteenId; + + @Schema(description = "设备流水") + private BigDecimal money; + + @Schema(description = "时间段") + private String timePeriod; + + @Schema(description = "热门菜品ids,如[1,2,3,4,5,]") + private String dishesIds; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ 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/devicemoney/vo/DeviceMoneyRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/devicemoney/vo/DeviceMoneyRespVO.java new file mode 100644 index 00000000..6d3c1001 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/devicemoney/vo/DeviceMoneyRespVO.java @@ -0,0 +1,52 @@ +package cn.iocoder.yudao.module.system.controller.admin.devicemoney.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 门店设备日流水 Response VO") +@Data +@ExcelIgnoreUnannotated +public class DeviceMoneyRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "9854") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "设备ip") + @ExcelProperty("设备ip") + private String deviceIp; + + @Schema(description = "设备名称", example = "张三") + @ExcelProperty("设备名称") + private String deviceName; + + @Schema(description = "设备sn") + @ExcelProperty("设备sn") + private String deviceSn; + + @Schema(description = "门店编号", example = "30417") + @ExcelProperty("门店编号") + private Long carteenId; + + @Schema(description = "设备流水", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("设备流水") + private BigDecimal money; + + @Schema(description = "时间段") + @ExcelProperty("时间段") + private String timePeriod; + + @Schema(description = "热门菜品ids,如[1,2,3,4,5,]") + @ExcelProperty("热门菜品ids,如[1,2,3,4,5,]") + private String dishesIds; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ 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/devicemoney/vo/DeviceMoneySaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/devicemoney/vo/DeviceMoneySaveReqVO.java new file mode 100644 index 00000000..1f33f9ca --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/devicemoney/vo/DeviceMoneySaveReqVO.java @@ -0,0 +1,38 @@ +package cn.iocoder.yudao.module.system.controller.admin.devicemoney.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 门店设备日流水新增/修改 Request VO") +@Data +public class DeviceMoneySaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "9854") + private Long id; + + @Schema(description = "设备ip") + private String deviceIp; + + @Schema(description = "设备名称", example = "张三") + private String deviceName; + + @Schema(description = "设备sn") + private String deviceSn; + + @Schema(description = "门店编号", example = "30417") + private Long carteenId; + + @Schema(description = "设备流水", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "设备流水不能为空") + private BigDecimal money; + + @Schema(description = "时间段") + private String timePeriod; + + @Schema(description = "热门菜品ids,如[1,2,3,4,5,]") + private String dishesIds; + +} \ 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/dishestype/DishesTypeController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishestype/DishesTypeController.java index 0810eb6a..31adc522 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishestype/DishesTypeController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishestype/DishesTypeController.java @@ -1,33 +1,34 @@ package cn.iocoder.yudao.module.system.controller.admin.dishestype; +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.dishestype.vo.DishesTypeListRespVO; import cn.iocoder.yudao.module.system.controller.admin.dishestype.vo.DishesTypePageReqVO; import cn.iocoder.yudao.module.system.controller.admin.dishestype.vo.DishesTypeRespVO; import cn.iocoder.yudao.module.system.controller.admin.dishestype.vo.DishesTypeSaveReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.dishestype.DishesTypeDO; import cn.iocoder.yudao.module.system.service.dishestype.DishesTypeService; -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.format.annotation.DateTimeFormat; +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 java.util.*; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; import java.io.IOException; +import java.time.LocalDateTime; +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 = "管理后台 - 菜品分类") @@ -72,6 +73,21 @@ public class DishesTypeController { return success(BeanUtils.toBean(dishesType, DishesTypeRespVO.class)); } + @GetMapping("/list") + @Operation(summary = "获得菜品分类") + @PreAuthorize("@ss.hasPermission('t:dishes-type:query')") + public CommonResult> getDishesTypeList(@RequestParam("carteenId") Long carteenId, + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @RequestParam("startTime") LocalDateTime startTime, + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @RequestParam("endTime")LocalDateTime endTime){ + List dishesTypeList = dishesTypeService.getDishesTypeList(carteenId, startTime, endTime); + return success(dishesTypeList); + } + + + + @GetMapping("/page") @Operation(summary = "获得菜品分类分页") @PreAuthorize("@ss.hasPermission('t:dishes-type:query')") diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishestype/vo/DishesTypeListRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishestype/vo/DishesTypeListRespVO.java new file mode 100644 index 00000000..da22219a --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishestype/vo/DishesTypeListRespVO.java @@ -0,0 +1,21 @@ +package cn.iocoder.yudao.module.system.controller.admin.dishestype.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @Author:qjq + * @Date:2024/4/15 下午2:46 + */ +@Data +@Schema(description = "管理后台 - 大屏早中晚菜谱 Request VO") +public class DishesTypeListRespVO { + @Schema(description = "时间段", example = "早餐") + private String time; + @Schema(description = "菜品分类名称", example = "主食") + private List> dishesTypeName=new ArrayList<>(); +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/material/MaterialController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/material/MaterialController.java new file mode 100644 index 00000000..484c9058 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/material/MaterialController.java @@ -0,0 +1,100 @@ +package cn.iocoder.yudao.module.system.controller.admin.material; + +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.material.vo.MaterialPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.material.vo.MaterialRespVO; +import cn.iocoder.yudao.module.system.controller.admin.material.vo.MaterialSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.material.MaterialDO; +import cn.iocoder.yudao.module.system.service.material.MaterialService; +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.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; + + +@Tag(name = "管理后台 - 门店材料库存") +@RestController +@RequestMapping("/t/material") +@Validated +public class MaterialController { + + @Resource + private MaterialService materialService; + + @PostMapping("/create") + @Operation(summary = "创建门店材料库存") + @PreAuthorize("@ss.hasPermission('t:material:create')") + public CommonResult createMaterial(@Valid @RequestBody MaterialSaveReqVO createReqVO) { + return success(materialService.createMaterial(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新门店材料库存") + @PreAuthorize("@ss.hasPermission('t:material:update')") + public CommonResult updateMaterial(@Valid @RequestBody MaterialSaveReqVO updateReqVO) { + materialService.updateMaterial(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除门店材料库存") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('t:material:delete')") + public CommonResult deleteMaterial(@RequestParam("id") Long id) { + materialService.deleteMaterial(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得门店材料库存") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('t:material:query')") + public CommonResult getMaterial(@RequestParam("id") Long id) { + MaterialDO material = materialService.getMaterial(id); + return success(BeanUtils.toBean(material, MaterialRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得门店材料库存分页") + @PreAuthorize("@ss.hasPermission('t:material:query')") + public CommonResult> getMaterialPage(@Valid MaterialPageReqVO pageReqVO) { + PageResult pageResult = materialService.getMaterialPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, MaterialRespVO.class)); + } + @GetMapping("/list") + @Operation(summary = "获得门店材料库存") + @PreAuthorize("@ss.hasPermission('t:material:query')") + public CommonResult> getMaterialList(@RequestParam("carteenId") Long carteenId) { + List list = materialService.getMaterialList(carteenId); + return success(BeanUtils.toBean(list,MaterialRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出门店材料库存 Excel") + @PreAuthorize("@ss.hasPermission('t:material:export')") + @OperateLog(type = EXPORT) + public void exportMaterialExcel(@Valid MaterialPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = materialService.getMaterialPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "门店材料库存.xls", "数据", MaterialRespVO.class, + BeanUtils.toBean(list, MaterialRespVO.class)); + } +} \ 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/material/vo/MaterialPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/material/vo/MaterialPageReqVO.java new file mode 100644 index 00000000..2a5d4d6d --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/material/vo/MaterialPageReqVO.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.module.system.controller.admin.material.vo; + +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.math.BigDecimal; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 门店材料库存分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class MaterialPageReqVO extends PageParam { + + @Schema(description = "库存材料名称", example = "赵六") + private String materialName; + + @Schema(description = "库存材料重量") + private BigDecimal materialWeight; + + @Schema(description = "库存材料重量单位") + private String meterialUnit; + @Schema(description = "门店编号") + private Long carteenId; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ 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/material/vo/MaterialRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/material/vo/MaterialRespVO.java new file mode 100644 index 00000000..7944a880 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/material/vo/MaterialRespVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.system.controller.admin.material.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 门店材料库存 Response VO") +@Data +@ExcelIgnoreUnannotated +public class MaterialRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3954") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "库存材料名称", example = "赵六") + @ExcelProperty("库存材料名称") + private String materialName; + + @Schema(description = "库存材料重量") + @ExcelProperty("库存材料重量") + private BigDecimal materialWeight; + + @Schema(description = "库存材料重量单位") + @ExcelProperty("库存材料重量单位") + private String meterialUnit; + @Schema(description = "门店编号") + private Long carteenId; + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ 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/material/vo/MaterialSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/material/vo/MaterialSaveReqVO.java new file mode 100644 index 00000000..45194795 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/material/vo/MaterialSaveReqVO.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.module.system.controller.admin.material.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 门店材料库存新增/修改 Request VO") +@Data +public class MaterialSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3954") + private Long id; + + @Schema(description = "库存材料名称", example = "赵六") + @NotEmpty(message = "库存材料名称不能为空") + private String materialName; + + @Schema(description = "库存材料重量") + @NotNull(message = "库存材料重量不能为空") + private BigDecimal materialWeight; + + @Schema(description = "门店编号") + @NotNull(message = "门店编号不能为空") + private Long carteenId; + + @Schema(description = "库存材料重量单位") + @NotEmpty(message = "库存材料重量单位不能为空") + private String meterialUnit; + +} \ 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/dataobject/devicemoney/DeviceMoneyDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/devicemoney/DeviceMoneyDO.java new file mode 100644 index 00000000..94f30c8f --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/devicemoney/DeviceMoneyDO.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.system.dal.dataobject.devicemoney; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +import java.math.BigDecimal; + +/** + * 门店设备日流水 DO + * + * @author 开发账号 + */ +@TableName("t_device_money") +@KeySequence("t_device_money_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DeviceMoneyDO extends BaseDO { + + private Long id; + /** + * 设备ip + */ + private String deviceIp; + /** + * 设备名称 + */ + private String deviceName; + /** + * 设备sn + */ + private String deviceSn; + /** + * 门店编号 + */ + private Long carteenId; + /** + * 设备流水 + */ + private BigDecimal money; + /** + * 时间段 + */ + private String timePeriod; + /** + * 热门菜品ids,如[1,2,3,4,5,] + */ + private String dishesIds; + +} \ 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/dataobject/material/MaterialDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/material/MaterialDO.java new file mode 100644 index 00000000..e9fd54fa --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/material/MaterialDO.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.module.system.dal.dataobject.material; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +import java.math.BigDecimal; + +/** + * 门店材料库存 DO + * + * @author 开发账号 + */ +@TableName("t_material") +@KeySequence("t_material_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MaterialDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 库存材料名称 + */ + private String materialName; + /** + * 库存材料重量 + */ + private BigDecimal materialWeight; + /** + * 库存材料重量单位 + */ + private String meterialUnit; + /** + * 门店编号 + */ + private Long carteenId; + +} \ 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/dataobject/orderdetail/OrderDetail.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/orderdetail/OrderDetail.java new file mode 100644 index 00000000..a535891c --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/orderdetail/OrderDetail.java @@ -0,0 +1,59 @@ +package cn.iocoder.yudao.module.system.dal.dataobject.orderdetail; + +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 订单明细 DO + * + * @author 开发账号 + */ +//@TableName("member_order_detail") +//@KeySequence("member_order_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data + +public class OrderDetail { + private LocalDateTime createTime; + + private String creator; + /** + * 编号 + */ + + private Long id; + /** + * 订单ID + */ + private Long orderId; + /** + * 菜品ID + */ + private Long dishesId; + /** + * 菜品 + */ + private String dishesName; + /** + * 重量 + */ + private BigDecimal weight; + /** + * 热量 + */ + private Double heat; + + /** + * 菜品图片 + */ + private String dishUrl; + /** + * 设备ip + */ + private String sn; + /** + * 菜品价格 + */ + private BigDecimal price; +} \ 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/deviceInfo/DeviceInfoMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/deviceInfo/DeviceInfoMapper.java index 1094b4f2..3af3e26a 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/deviceInfo/DeviceInfoMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/deviceInfo/DeviceInfoMapper.java @@ -1,13 +1,29 @@ package cn.iocoder.yudao.module.system.dal.mysql.deviceInfo; +import cn.iocoder.yudao.framework.common.pojo.PageResult; 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.deviceinfo.vo.DeviceInfoPageReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.deviceInfo.DeviceInfoDO; import org.apache.ibatis.annotations.Mapper; /** - * @Author:qjq - * @Date:2024/4/10 下午4:37 + * 设备信息关联门店 Mapper + * + * @author 开发账号 */ @Mapper public interface DeviceInfoMapper extends BaseMapperX { -} + + default PageResult selectPage(DeviceInfoPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(DeviceInfoDO::getDeviceSn, reqVO.getDeviceSn()) + .eqIfPresent(DeviceInfoDO::getCarteenId, reqVO.getCarteenId()) + .eqIfPresent(DeviceInfoDO::getDeviceIp, reqVO.getDeviceIp()) + .likeIfPresent(DeviceInfoDO::getDeviceName, reqVO.getDeviceName()) + .likeIfPresent(DeviceInfoDO::getCarteenName, reqVO.getCarteenName()) + .betweenIfPresent(DeviceInfoDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(DeviceInfoDO::getId)); + } + +} \ 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/devicemoney/DeviceMoneyMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/devicemoney/DeviceMoneyMapper.java new file mode 100644 index 00000000..f2eb9324 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/devicemoney/DeviceMoneyMapper.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.system.dal.mysql.devicemoney; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +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.devicemoney.vo.DeviceMoneyPageReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.devicemoney.DeviceMoneyDO; +import org.apache.ibatis.annotations.Mapper; +/** + * 门店设备日流水 Mapper + * + * @author 开发账号 + */ +@Mapper +public interface DeviceMoneyMapper extends BaseMapperX { + + default PageResult selectPage(DeviceMoneyPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(DeviceMoneyDO::getDeviceIp, reqVO.getDeviceIp()) + .likeIfPresent(DeviceMoneyDO::getDeviceName, reqVO.getDeviceName()) + .eqIfPresent(DeviceMoneyDO::getDeviceSn, reqVO.getDeviceSn()) + .eqIfPresent(DeviceMoneyDO::getCarteenId, reqVO.getCarteenId()) + .eqIfPresent(DeviceMoneyDO::getMoney, reqVO.getMoney()) + .eqIfPresent(DeviceMoneyDO::getTimePeriod, reqVO.getTimePeriod()) + .eqIfPresent(DeviceMoneyDO::getDishesIds, reqVO.getDishesIds()) + .betweenIfPresent(DeviceMoneyDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(DeviceMoneyDO::getId)); + } + +} \ 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/dishestype/DishesTypeMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dishestype/DishesTypeMapper.java index df3d0a95..e8fa20cb 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dishestype/DishesTypeMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dishestype/DishesTypeMapper.java @@ -1,13 +1,18 @@ package cn.iocoder.yudao.module.system.dal.mysql.dishestype; -import java.util.*; - import cn.iocoder.yudao.framework.common.pojo.PageResult; 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.dishestype.vo.DishesTypePageReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.dishestype.DishesTypeDO; +import cn.iocoder.yudao.module.system.dal.dataobject.orderdetail.OrderDetail; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; /** * 菜品分类 Mapper @@ -24,5 +29,10 @@ public interface DishesTypeMapper extends BaseMapperX { .betweenIfPresent(DishesTypeDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(DishesTypeDO::getId)); } - + @Select("") + List selectByIdAmdTypeName(@Param("ids") List ids); + @Select("select id from member_dish_order where deleted=0 and store_id = #{carteenId} and create_time between #{startTime} and #{endTime}") + List selectOrderIds(@Param("carteenId")Long carteenId, + @Param("startTime")LocalDateTime startTime, + @Param("endTime")LocalDateTime endTime); } \ 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/material/MaterialMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/material/MaterialMapper.java new file mode 100644 index 00000000..dca42ae3 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/material/MaterialMapper.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.system.dal.mysql.material; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.system.dal.dataobject.material.MaterialDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.system.controller.admin.material.vo.*; +/** + * 门店材料库存 Mapper + * + * @author 开发账号 + */ +@Mapper +public interface MaterialMapper extends BaseMapperX { + + default PageResult selectPage(MaterialPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(MaterialDO::getMaterialName, reqVO.getMaterialName()) + .eqIfPresent(MaterialDO::getMaterialWeight, reqVO.getMaterialWeight()) + .eqIfPresent(MaterialDO::getMeterialUnit, reqVO.getMeterialUnit()) + .betweenIfPresent(MaterialDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(MaterialDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/CostTypeEnum.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/CostTypeEnum.java new file mode 100644 index 00000000..d3880e40 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/CostTypeEnum.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.system.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 代码生成的场景枚举 + * + * @author 芋道源码 + */ +@AllArgsConstructor +@Getter +public enum CostTypeEnum { + + WX_PAY("1", "微信充值"), + MORNING("2", "早餐"), + NOON("3", "午餐"), + NIGHT("4", "晚餐"), + ; + + /** + * 编码 + */ + private final String code; + /** + * 类型 + */ + private final String name; +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/TimePeriodEnum.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/TimePeriodEnum.java new file mode 100644 index 00000000..5cea1ab2 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/enums/TimePeriodEnum.java @@ -0,0 +1,77 @@ +package cn.iocoder.yudao.module.system.enums; + +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.map.MapUtil; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +/** + * @Author:qjq 订单管理 时间段 时间枚举 + * @Date:2024/4/1 10:54 + */ +@AllArgsConstructor +@Getter +public enum TimePeriodEnum { + /** + * 早上时间段 + */ + MORNING("05:00:00","10:59:59","2",5,10), + /** + * 中午时间段 + */ + MIDDAY("11:00:00","15:59:59","3",11,15), + /** + * 晚上时间段 + */ + NIGHT("16:00:00","23:59:59","4",16,23); + private final String startTime; + private final String endTime; + private final String code; + private final Integer startInt; + private final Integer endInt; + public LocalDateTime getStart(){ + LocalDateTime now = LocalDateTimeUtil.now(); + String format = LocalDateTimeUtil.format(now, DatePattern.NORM_DATE_PATTERN); + format+="T"+startTime; + return LocalDateTimeUtil.parse(format); + } + public LocalDateTime getEnd(){ + LocalDateTime now = LocalDateTimeUtil.now(); + String format = LocalDateTimeUtil.format(now, DatePattern.NORM_DATE_PATTERN); + format+="T"+endTime; + return LocalDateTimeUtil.parse(format); + } + public Map getStartToEnd(){ + LocalDateTime start = this.getStart(); + LocalDateTime end = this.getEnd(); + return MapUtil.builder(new HashMap()) + .put("start", start) + .put("end", end).build(); + } + + public static String getTimePeriod(LocalDateTime localDateTime){ + int hour = localDateTime.getHour(); + if(TimePeriodEnum.MORNING.startInt<=hour && hour<=TimePeriodEnum.MORNING.endInt){ + return CostTypeEnum.MORNING.getCode(); + } else if (TimePeriodEnum.MIDDAY.startInt<=hour && hour<=TimePeriodEnum.MIDDAY.endInt){ + return CostTypeEnum.NOON.getCode(); + }else{ + return CostTypeEnum.NIGHT.getCode(); + } + } + public static String getTimeName(LocalDateTime localDateTime){ + int hour = localDateTime.getHour(); + if(TimePeriodEnum.MORNING.startInt<=hour && hour<=TimePeriodEnum.MORNING.endInt){ + return CostTypeEnum.MORNING.getName(); + } else if (TimePeriodEnum.MIDDAY.startInt<=hour && hour<=TimePeriodEnum.MIDDAY.endInt){ + return CostTypeEnum.NOON.getName(); + }else{ + return CostTypeEnum.NIGHT.getName(); + } + } +} 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 c0d0369a..6720ac5d 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,17 +1,21 @@ package cn.iocoder.yudao.module.system.service.carteen; +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.dal.dataobject.carteen.CarteenDO; import cn.iocoder.yudao.module.system.dal.mysql.carteen.CarteenMapper; import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants; -import com.xingyuv.jushauth.utils.UuidUtils; +import cn.iocoder.yudao.module.system.service.permission.PermissionService; import org.springframework.stereotype.Service; -import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.Set; + import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; /** @@ -25,7 +29,8 @@ public class CarteenServiceImpl implements CarteenService { @Resource private CarteenMapper carteenMapper; - + @Resource + private PermissionService permissionService; @Override public Long createCarteen(CarteenSaveReqVO createReqVO) { // 插入 @@ -34,12 +39,12 @@ public class CarteenServiceImpl implements CarteenService { carteen.setMultipleManage(Boolean.FALSE); carteen.setAccountOrder(Boolean.FALSE); carteen.setDeleted(Boolean.FALSE); - carteen.setSerialNumber(UuidUtils.getUUID()); + Set set = permissionService.getUserRoleIdListByUserId(SecurityFrameworkUtils.getLoginUserId()); + carteen.setSerialNumber(Arrays.toString(set.toArray())); carteenMapper.insert(carteen); // 返回 return carteen.getId(); } - @Override public void updateCarteen(CarteenSaveReqVO updateReqVO) { // 校验存在 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/deviceinfo/DeviceInfoService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/deviceinfo/DeviceInfoService.java new file mode 100644 index 00000000..1ca76812 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/deviceinfo/DeviceInfoService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.system.service.deviceinfo; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.deviceinfo.vo.DeviceInfoPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.deviceinfo.vo.DeviceInfoSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.deviceInfo.DeviceInfoDO; + +import javax.validation.Valid; + +/** + * 设备信息关联门店 Service 接口 + * + * @author 开发账号 + */ +public interface DeviceInfoService { + + /** + * 创建设备信息关联门店 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createDeviceInfo(@Valid DeviceInfoSaveReqVO createReqVO); + + /** + * 更新设备信息关联门店 + * + * @param updateReqVO 更新信息 + */ + void updateDeviceInfo(@Valid DeviceInfoSaveReqVO updateReqVO); + + /** + * 删除设备信息关联门店 + * + * @param id 编号 + */ + void deleteDeviceInfo(Long id); + + /** + * 获得设备信息关联门店 + * + * @param id 编号 + * @return 设备信息关联门店 + */ + DeviceInfoDO getDeviceInfo(Long id); + + /** + * 获得设备信息关联门店分页 + * + * @param pageReqVO 分页查询 + * @return 设备信息关联门店分页 + */ + PageResult getDeviceInfoPage(DeviceInfoPageReqVO 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/deviceinfo/DeviceInfoServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/deviceinfo/DeviceInfoServiceImpl.java new file mode 100644 index 00000000..a7d8a3e9 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/deviceinfo/DeviceInfoServiceImpl.java @@ -0,0 +1,71 @@ +package cn.iocoder.yudao.module.system.service.deviceinfo; + +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.deviceinfo.vo.DeviceInfoPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.deviceinfo.vo.DeviceInfoSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.deviceInfo.DeviceInfoDO; +import cn.iocoder.yudao.module.system.dal.mysql.deviceInfo.DeviceInfoMapper; +import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; + +/** + * 设备信息关联门店 Service 实现类 + * + * @author 开发账号 + */ +@Service +@Validated +public class DeviceInfoServiceImpl implements DeviceInfoService { + + @Resource + private DeviceInfoMapper deviceInfoMapper; + + @Override + public Long createDeviceInfo(DeviceInfoSaveReqVO createReqVO) { + // 插入 + DeviceInfoDO deviceInfo = BeanUtils.toBean(createReqVO, DeviceInfoDO.class); + deviceInfoMapper.insert(deviceInfo); + // 返回 + return deviceInfo.getId(); + } + + @Override + public void updateDeviceInfo(DeviceInfoSaveReqVO updateReqVO) { + // 校验存在 + validateDeviceInfoExists(updateReqVO.getId()); + // 更新 + DeviceInfoDO updateObj = BeanUtils.toBean(updateReqVO, DeviceInfoDO.class); + deviceInfoMapper.updateById(updateObj); + } + + @Override + public void deleteDeviceInfo(Long id) { + // 校验存在 + validateDeviceInfoExists(id); + // 删除 + deviceInfoMapper.deleteById(id); + } + + private void validateDeviceInfoExists(Long id) { + if (deviceInfoMapper.selectById(id) == null) { + throw exception(ErrorCodeConstants.DEVUCE_NOT_EXISTS); + } + } + + @Override + public DeviceInfoDO getDeviceInfo(Long id) { + return deviceInfoMapper.selectById(id); + } + + @Override + public PageResult getDeviceInfoPage(DeviceInfoPageReqVO pageReqVO) { + return deviceInfoMapper.selectPage(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/devicemoney/DeviceMoneyService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/devicemoney/DeviceMoneyService.java new file mode 100644 index 00000000..c305fbe3 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/devicemoney/DeviceMoneyService.java @@ -0,0 +1,53 @@ +package cn.iocoder.yudao.module.system.service.devicemoney; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.dal.dataobject.devicemoney.DeviceMoneyDO; +import cn.iocoder.yudao.module.system.controller.admin.devicemoney.vo.*; +import javax.validation.Valid; + +/** + * 门店设备日流水 Service 接口 + * + * @author 开发账号 + */ +public interface DeviceMoneyService { + + /** + * 创建门店设备日流水 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createDeviceMoney(@Valid DeviceMoneySaveReqVO createReqVO); + + /** + * 更新门店设备日流水 + * + * @param updateReqVO 更新信息 + */ + void updateDeviceMoney(@Valid DeviceMoneySaveReqVO updateReqVO); + + /** + * 删除门店设备日流水 + * + * @param id 编号 + */ + void deleteDeviceMoney(Long id); + + /** + * 获得门店设备日流水 + * + * @param id 编号 + * @return 门店设备日流水 + */ + DeviceMoneyDO getDeviceMoney(Long id); + + /** + * 获得门店设备日流水分页 + * + * @param pageReqVO 分页查询 + * @return 门店设备日流水分页 + */ + PageResult getDeviceMoneyPage(DeviceMoneyPageReqVO 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/devicemoney/DeviceMoneyServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/devicemoney/DeviceMoneyServiceImpl.java new file mode 100644 index 00000000..134e16fb --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/devicemoney/DeviceMoneyServiceImpl.java @@ -0,0 +1,71 @@ +package cn.iocoder.yudao.module.system.service.devicemoney; + +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.devicemoney.vo.DeviceMoneyPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.devicemoney.vo.DeviceMoneySaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.devicemoney.DeviceMoneyDO; +import cn.iocoder.yudao.module.system.dal.mysql.devicemoney.DeviceMoneyMapper; +import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; + +/** + * 门店设备日流水 Service 实现类 + * + * @author 开发账号 + */ +@Service +@Validated +public class DeviceMoneyServiceImpl implements DeviceMoneyService { + + @Resource + private DeviceMoneyMapper deviceMoneyMapper; + + @Override + public Long createDeviceMoney(DeviceMoneySaveReqVO createReqVO) { + // 插入 + DeviceMoneyDO deviceMoney = BeanUtils.toBean(createReqVO, DeviceMoneyDO.class); + deviceMoneyMapper.insert(deviceMoney); + // 返回 + return deviceMoney.getId(); + } + + @Override + public void updateDeviceMoney(DeviceMoneySaveReqVO updateReqVO) { + // 校验存在 + validateDeviceMoneyExists(updateReqVO.getId()); + // 更新 + DeviceMoneyDO updateObj = BeanUtils.toBean(updateReqVO, DeviceMoneyDO.class); + deviceMoneyMapper.updateById(updateObj); + } + + @Override + public void deleteDeviceMoney(Long id) { + // 校验存在 + validateDeviceMoneyExists(id); + // 删除 + deviceMoneyMapper.deleteById(id); + } + + private void validateDeviceMoneyExists(Long id) { + if (deviceMoneyMapper.selectById(id) == null) { + throw exception(ErrorCodeConstants.DEVICE_MONEY_NOT_EXISTS); + } + } + + @Override + public DeviceMoneyDO getDeviceMoney(Long id) { + return deviceMoneyMapper.selectById(id); + } + + @Override + public PageResult getDeviceMoneyPage(DeviceMoneyPageReqVO pageReqVO) { + return deviceMoneyMapper.selectPage(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/dishestype/DishesTypeService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishestype/DishesTypeService.java index 96d4fa50..71bc89f9 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishestype/DishesTypeService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishestype/DishesTypeService.java @@ -1,12 +1,14 @@ package cn.iocoder.yudao.module.system.service.dishestype; -import java.util.*; -import javax.validation.*; - +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.dishestype.vo.DishesTypeListRespVO; import cn.iocoder.yudao.module.system.controller.admin.dishestype.vo.DishesTypePageReqVO; import cn.iocoder.yudao.module.system.controller.admin.dishestype.vo.DishesTypeSaveReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.dishestype.DishesTypeDO; -import cn.iocoder.yudao.framework.common.pojo.PageResult; + +import javax.validation.Valid; +import java.time.LocalDateTime; +import java.util.List; /** * 菜品分类 Service 接口 @@ -52,5 +54,14 @@ public interface DishesTypeService { * @return 菜品分类分页 */ PageResult getDishesTypePage(DishesTypePageReqVO pageReqVO); + /** + * @Description: 通过门店编号 获得菜品分类以及菜品名称 + * @Author: qjq + * @Date: 2024/4/15 下午3:13 + * @return + */ + List getDishesTypeList(Long carteenId, LocalDateTime startTime,LocalDateTime endTime); + + } \ 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/dishestype/DishesTypeServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishestype/DishesTypeServiceImpl.java index d56a32e9..c6e0fa7a 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishestype/DishesTypeServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishestype/DishesTypeServiceImpl.java @@ -1,17 +1,24 @@ package cn.iocoder.yudao.module.system.service.dishestype; +import cn.hutool.core.map.MapUtil; +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.dishestype.vo.DishesTypeListRespVO; import cn.iocoder.yudao.module.system.controller.admin.dishestype.vo.DishesTypePageReqVO; import cn.iocoder.yudao.module.system.controller.admin.dishestype.vo.DishesTypeSaveReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.dishestype.DishesTypeDO; +import cn.iocoder.yudao.module.system.dal.dataobject.orderdetail.OrderDetail; +import cn.iocoder.yudao.module.system.dal.mysql.dishes.DishesMapper; import cn.iocoder.yudao.module.system.dal.mysql.dishestype.DishesTypeMapper; import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants; +import cn.iocoder.yudao.module.system.enums.TimePeriodEnum; import org.springframework.stereotype.Service; -import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; - +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -26,7 +33,8 @@ public class DishesTypeServiceImpl implements DishesTypeService { @Resource private DishesTypeMapper dishesTypeMapper; - + @Resource + private DishesMapper dishesMapper; @Override public Long createDishesType(DishesTypeSaveReqVO createReqVO) { // 插入 @@ -70,4 +78,49 @@ public class DishesTypeServiceImpl implements DishesTypeService { return dishesTypeMapper.selectPage(pageReqVO); } + /** + * @param carteenId + * @param startTime + * @param endTime + * @return + * @Description: 通过门店编号 获得菜品分类以及菜品名称 + * @Author: qjq + * @Date: 2024/4/15 下午3:13 + */ + @Override + public List getDishesTypeList(Long carteenId, LocalDateTime startTime, LocalDateTime endTime) { + List list=new ArrayList<>(); + //获取订单id + List collect = dishesTypeMapper.selectOrderIds(carteenId, startTime, endTime); + List orderDetailDOS = dishesTypeMapper.selectByIdAmdTypeName(collect); + orderDetailDOS.forEach(f-> f.setCreator(TimePeriodEnum.getTimePeriod(f.getCreateTime()))); + // 根据时间进行分组 + Map> map = orderDetailDOS.stream() + .collect(Collectors.groupingBy(OrderDetail::getCreator)); + for (Map.Entry> en : map.entrySet()) { + DishesTypeListRespVO vo=new DishesTypeListRespVO(); + vo.setTime(en.getKey()); + //集合根据菜品名称去重 + List collect1 = new ArrayList<>(en.getValue().stream().collect(Collectors.toMap( + OrderDetail::getDishesName, + m -> m, + (oldValue, newValue) -> newValue + )).values()); + //根据类型进行分组 + collect1.stream() + .collect(Collectors.groupingBy(OrderDetail::getDishUrl)) + .forEach((v,k)-> { + Map map1 = MapUtil.builder(new HashMap()) + .put("dishesName", k.stream() + .map(OrderDetail::getDishesName) + .collect(Collectors.toList()).toString()) + .put("typeName", v) + .map(); + vo.getDishesTypeName().add(map1); + }); + list.add(vo); + } + list.sort(Comparator.comparing(DishesTypeListRespVO::getTime)); + return list; + } } \ 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/material/MaterialService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/material/MaterialService.java new file mode 100644 index 00000000..8744d9c1 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/material/MaterialService.java @@ -0,0 +1,61 @@ +package cn.iocoder.yudao.module.system.service.material; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.material.vo.*; +import cn.iocoder.yudao.module.system.dal.dataobject.material.MaterialDO; + +import javax.validation.Valid; +import java.util.List; + +/** + * 门店材料库存 Service 接口 + * + * @author 开发账号 + */ +public interface MaterialService { + + /** + * 创建门店材料库存 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createMaterial(@Valid MaterialSaveReqVO createReqVO); + + /** + * 更新门店材料库存 + * + * @param updateReqVO 更新信息 + */ + void updateMaterial(@Valid MaterialSaveReqVO updateReqVO); + + /** + * 删除门店材料库存 + * + * @param id 编号 + */ + void deleteMaterial(Long id); + + /** + * 获得门店材料库存 + * + * @param id 编号 + * @return 门店材料库存 + */ + MaterialDO getMaterial(Long id); + + /** + * 获得门店材料库存分页 + * + * @param pageReqVO 分页查询 + * @return 门店材料库存分页 + */ + PageResult getMaterialPage(MaterialPageReqVO pageReqVO); + /** + * @Description: 获取门店材料库存列表 + * @Author: qjq + * @Date: 2024/4/15 下午2:11 + * @return + */ + List getMaterialList(Long carteenId); +} \ 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/material/MaterialServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/material/MaterialServiceImpl.java new file mode 100644 index 00000000..cb28c145 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/material/MaterialServiceImpl.java @@ -0,0 +1,85 @@ +package cn.iocoder.yudao.module.system.service.material; + +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.material.vo.MaterialPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.material.vo.MaterialSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.material.MaterialDO; +import cn.iocoder.yudao.module.system.dal.mysql.material.MaterialMapper; +import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; + +/** + * 门店材料库存 Service 实现类 + * + * @author 开发账号 + */ +@Service +@Validated +public class MaterialServiceImpl implements MaterialService { + + @Resource + private MaterialMapper materialMapper; + + @Override + public Long createMaterial(MaterialSaveReqVO createReqVO) { + // 插入 + MaterialDO material = BeanUtils.toBean(createReqVO, MaterialDO.class); + materialMapper.insert(material); + // 返回 + return material.getId(); + } + + @Override + public void updateMaterial(MaterialSaveReqVO updateReqVO) { + // 校验存在 + validateMaterialExists(updateReqVO.getId()); + // 更新 + MaterialDO updateObj = BeanUtils.toBean(updateReqVO, MaterialDO.class); + materialMapper.updateById(updateObj); + } + + @Override + public void deleteMaterial(Long id) { + // 校验存在 + validateMaterialExists(id); + // 删除 + materialMapper.deleteById(id); + } + + private void validateMaterialExists(Long id) { + if (materialMapper.selectById(id) == null) { + throw exception(ErrorCodeConstants.MATERIAL_NOT_EXISTS); + } + } + + @Override + public MaterialDO getMaterial(Long id) { + return materialMapper.selectById(id); + } + + @Override + public PageResult getMaterialPage(MaterialPageReqVO pageReqVO) { + return materialMapper.selectPage(pageReqVO); + } + + /** + * @param carteenId + * @return + * @Description: 获取门店材料库存列表 + * @Author: qjq + * @Date: 2024/4/15 下午2:11 + */ + @Override + public List getMaterialList(Long carteenId) { + return materialMapper.selectList(new LambdaQueryWrapperX() + .eqIfPresent(MaterialDO::getCarteenId,carteenId)); + } +} \ No newline at end of file