From 99fc189db423e0d070d09645d2bf45664dd71cfd Mon Sep 17 00:00:00 2001 From: zengtao01 Date: Mon, 22 Apr 2024 18:03:18 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8F=9C=E5=93=81=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/enums/ErrorCodeConstants.java | 2 +- .../DishStatisticsController.java | 95 ++++++++++++++++++ .../vo/DishStatisticsPageReqVO.java | 38 ++++++++ .../vo/DishStatisticsRespVO.java | 45 +++++++++ .../vo/DishStatisticsSaveReqVO.java | 31 ++++++ .../dishstatistics/DishStatisticsDO.java | 62 ++++++++++++ .../dishstatistics/DishStatisticsMapper.java | 33 +++++++ .../module/member/job/StatisticsJob.java | 32 +++++++ .../dishstatistics/DishStatisticsService.java | 59 ++++++++++++ .../DishStatisticsServiceImpl.java | 96 +++++++++++++++++++ .../dishstatistics/DishStatisticsMapper.xml | 20 ++++ .../module/system/api/dish/DishesApi.java | 8 ++ .../module/system/api/dish/DishesApiImpl.java | 8 ++ .../system/service/dishes/DishesService.java | 5 + .../service/dishes/DishesServiceImpl.java | 9 ++ 15 files changed, 542 insertions(+), 1 deletion(-) create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/dishstatistics/DishStatisticsController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/dishstatistics/vo/DishStatisticsPageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/dishstatistics/vo/DishStatisticsRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/dishstatistics/vo/DishStatisticsSaveReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/dishstatistics/DishStatisticsDO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/dishstatistics/DishStatisticsMapper.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/StatisticsJob.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/dishstatistics/DishStatisticsService.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/dishstatistics/DishStatisticsServiceImpl.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/dishstatistics/DishStatisticsMapper.xml diff --git a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java index 3aacc806..81a37e06 100644 --- a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java +++ b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java @@ -68,7 +68,7 @@ public interface ErrorCodeConstants { ErrorCode STORE_COMPLAIN_NOT_EXISTS = new ErrorCode(1_004_013_009, "订单明细不存在"); ErrorCode CUSTOMER_TRAFFIC_NOT_EXISTS = new ErrorCode(1_004_013_010, "订单明细不存在"); ErrorCode DEVICE_WARN_NOT_EXISTS = new ErrorCode(1_004_013_011, "订单明细不存在"); - + ErrorCode DISH_STATISTICS_NOT_EXISTS = new ErrorCode(1_004_013_012, "订单明细不存在"); ErrorCode DINING_PLATES_NOT_EXISTS = new ErrorCode(1_004_099_000, "餐盘不存在"); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/dishstatistics/DishStatisticsController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/dishstatistics/DishStatisticsController.java new file mode 100644 index 00000000..182c0d60 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/dishstatistics/DishStatisticsController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.member.controller.admin.dishstatistics; + +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 javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +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 cn.iocoder.yudao.module.member.controller.admin.dishstatistics.vo.*; +import cn.iocoder.yudao.module.member.dal.dataobject.dishstatistics.DishStatisticsDO; +import cn.iocoder.yudao.module.member.service.dishstatistics.DishStatisticsService; + +@Tag(name = "管理后台 - 菜品统计") +@RestController +@RequestMapping("/member/dish-statistics") +@Validated +public class DishStatisticsController { + + @Resource + private DishStatisticsService dishStatisticsService; + + @PostMapping("/create") + @Operation(summary = "创建菜品统计") + @PreAuthorize("@ss.hasPermission('member:dish-statistics:create')") + public CommonResult createDishStatistics(@Valid @RequestBody DishStatisticsSaveReqVO createReqVO) { + return success(dishStatisticsService.createDishStatistics(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新菜品统计") + @PreAuthorize("@ss.hasPermission('member:dish-statistics:update')") + public CommonResult updateDishStatistics(@Valid @RequestBody DishStatisticsSaveReqVO updateReqVO) { + dishStatisticsService.updateDishStatistics(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除菜品统计") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:dish-statistics:delete')") + public CommonResult deleteDishStatistics(@RequestParam("id") Long id) { + dishStatisticsService.deleteDishStatistics(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得菜品统计") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:dish-statistics:query')") + public CommonResult getDishStatistics(@RequestParam("id") Long id) { + DishStatisticsDO dishStatistics = dishStatisticsService.getDishStatistics(id); + return success(BeanUtils.toBean(dishStatistics, DishStatisticsRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得菜品统计分页") + @PreAuthorize("@ss.hasPermission('member:dish-statistics:query')") + public CommonResult> getDishStatisticsPage(@Valid DishStatisticsPageReqVO pageReqVO) { + PageResult pageResult = dishStatisticsService.getDishStatisticsPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, DishStatisticsRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出菜品统计 Excel") + @PreAuthorize("@ss.hasPermission('member:dish-statistics:export')") + @OperateLog(type = EXPORT) + public void exportDishStatisticsExcel(@Valid DishStatisticsPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = dishStatisticsService.getDishStatisticsPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "菜品统计.xls", "数据", DishStatisticsRespVO.class, + BeanUtils.toBean(list, DishStatisticsRespVO.class)); + } + +} \ 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/dishstatistics/vo/DishStatisticsPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/dishstatistics/vo/DishStatisticsPageReqVO.java new file mode 100644 index 00000000..8bdb9618 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/dishstatistics/vo/DishStatisticsPageReqVO.java @@ -0,0 +1,38 @@ +package cn.iocoder.yudao.module.member.controller.admin.dishstatistics.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import java.math.BigDecimal; +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 DishStatisticsPageReqVO extends PageParam { + + @Schema(description = "设备Ip") + private String deviceSn; + + @Schema(description = "门店id", example = "26370") + private Long storeId; + + @Schema(description = "报警次数", example = "24451") + private Long dishId; + + @Schema(description = "菜品", example = "张三") + private String dishesName; + + @Schema(description = "重量") + private BigDecimal weight; + + @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/dishstatistics/vo/DishStatisticsRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/dishstatistics/vo/DishStatisticsRespVO.java new file mode 100644 index 00000000..2a0730a8 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/dishstatistics/vo/DishStatisticsRespVO.java @@ -0,0 +1,45 @@ +package cn.iocoder.yudao.module.member.controller.admin.dishstatistics.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 菜品统计 Response VO") +@Data +@ExcelIgnoreUnannotated +public class DishStatisticsRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "7207") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "设备Ip") + @ExcelProperty("设备Ip") + private String deviceSn; + + @Schema(description = "门店id", example = "26370") + @ExcelProperty("门店id") + private Long storeId; + + @Schema(description = "报警次数", example = "24451") + @ExcelProperty("报警次数") + private Long dishId; + + @Schema(description = "菜品", example = "张三") + @ExcelProperty("菜品") + private String dishesName; + + @Schema(description = "重量") + @ExcelProperty("重量") + private BigDecimal weight; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + 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/dishstatistics/vo/DishStatisticsSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/dishstatistics/vo/DishStatisticsSaveReqVO.java new file mode 100644 index 00000000..8ac05da7 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/dishstatistics/vo/DishStatisticsSaveReqVO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.member.controller.admin.dishstatistics.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 DishStatisticsSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "7207") + private Long id; + + @Schema(description = "设备Ip") + private String deviceSn; + + @Schema(description = "门店id", example = "26370") + private Long storeId; + + @Schema(description = "报警次数", example = "24451") + private Long dishId; + + @Schema(description = "菜品", example = "张三") + private String dishesName; + + @Schema(description = "重量") + private BigDecimal weight; + +} \ 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/dishstatistics/DishStatisticsDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/dishstatistics/DishStatisticsDO.java new file mode 100644 index 00000000..d2684850 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/dishstatistics/DishStatisticsDO.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.dishstatistics; + +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.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; + +import java.math.BigDecimal; + +/** + * 菜品统计 DO + * + * @author 开发账号 + */ +@TableName("member_dish_statistics") +@KeySequence("member_dish_statistics_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DishStatisticsDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 设备Ip + */ + private String deviceSn; + /** + * 门店id + */ + private Long storeId; + /** + * 菜品Id + */ + private Long dishId; + /** + * 菜品 + */ + private String dishesName; + /** + * 重量 + */ + private BigDecimal weight; + + /** + * 价钱 + */ + private BigDecimal money; + +} \ 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/mysql/dishstatistics/DishStatisticsMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/dishstatistics/DishStatisticsMapper.java new file mode 100644 index 00000000..33c7ca2b --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/dishstatistics/DishStatisticsMapper.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.module.member.dal.mysql.dishstatistics; + +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.member.controller.admin.dishstatistics.vo.DishStatisticsPageReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.dishstatistics.DishStatisticsDO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 菜品统计 Mapper + * + * @author 开发账号 + */ +@Mapper +public interface DishStatisticsMapper extends BaseMapperX { + + default PageResult selectPage(DishStatisticsPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(DishStatisticsDO::getDeviceSn, reqVO.getDeviceSn()) + .eqIfPresent(DishStatisticsDO::getStoreId, reqVO.getStoreId()) + .eqIfPresent(DishStatisticsDO::getDishId, reqVO.getDishId()) + .likeIfPresent(DishStatisticsDO::getDishesName, reqVO.getDishesName()) + .eqIfPresent(DishStatisticsDO::getWeight, reqVO.getWeight()) + .betweenIfPresent(DishStatisticsDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(DishStatisticsDO::getId)); + } + + List getSaleData(String time); + +} \ 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/StatisticsJob.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/StatisticsJob.java new file mode 100644 index 00000000..5a627dc9 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/StatisticsJob.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.member.job; + +import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler; +import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore; +import cn.iocoder.yudao.module.member.service.dishstatistics.DishStatisticsService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * @author zt + * @description + * @since 2024/4/22 + */ + +@Slf4j +@Component +public class StatisticsJob implements JobHandler { + + + @Resource + private DishStatisticsService service; + + @Override + @TenantIgnore + public String execute(String param) { + Integer i = service.addData(); + log.info("[execute][菜品统计任务生成数据 ({}) 个]",i ); + return String.format("菜品统计定时任务生成数 %s 个", i); + } +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/dishstatistics/DishStatisticsService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/dishstatistics/DishStatisticsService.java new file mode 100644 index 00000000..9ba32bec --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/dishstatistics/DishStatisticsService.java @@ -0,0 +1,59 @@ +package cn.iocoder.yudao.module.member.service.dishstatistics; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.member.controller.admin.dishstatistics.vo.DishStatisticsPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.dishstatistics.vo.DishStatisticsSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.dishstatistics.DishStatisticsDO; + +import javax.validation.Valid; + +/** + * 菜品统计 Service 接口 + * + * @author 开发账号 + */ +public interface DishStatisticsService { + + /** + * 创建菜品统计 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createDishStatistics(@Valid DishStatisticsSaveReqVO createReqVO); + + /** + * 更新菜品统计 + * + * @param updateReqVO 更新信息 + */ + void updateDishStatistics(@Valid DishStatisticsSaveReqVO updateReqVO); + + /** + * 删除菜品统计 + * + * @param id 编号 + */ + void deleteDishStatistics(Long id); + + /** + * 获得菜品统计 + * + * @param id 编号 + * @return 菜品统计 + */ + DishStatisticsDO getDishStatistics(Long id); + + /** + * 获得菜品统计分页 + * + * @param pageReqVO 分页查询 + * @return 菜品统计分页 + */ + PageResult getDishStatisticsPage(DishStatisticsPageReqVO pageReqVO); + + /** + * 统计昨日数据 + */ + Integer addData(); +} \ 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/dishstatistics/DishStatisticsServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/dishstatistics/DishStatisticsServiceImpl.java new file mode 100644 index 00000000..54f75875 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/dishstatistics/DishStatisticsServiceImpl.java @@ -0,0 +1,96 @@ +package cn.iocoder.yudao.module.member.service.dishstatistics; + +import cn.hutool.core.collection.CollectionUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.member.controller.admin.dishstatistics.vo.DishStatisticsPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.dishstatistics.vo.DishStatisticsSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.dishstatistics.DishStatisticsDO; +import cn.iocoder.yudao.module.member.dal.mysql.dishstatistics.DishStatisticsMapper; +import cn.iocoder.yudao.module.member.util.MemberConstants; +import cn.iocoder.yudao.module.system.api.dish.DishesApi; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*; +/** + * 菜品统计 Service 实现类 + * + * @author 开发账号 + */ +@Service +@Validated +public class DishStatisticsServiceImpl implements DishStatisticsService { + + @Resource + private DishStatisticsMapper dishStatisticsMapper; + @Resource + private DishesApi dishesApi; + + @Override + public Long createDishStatistics(DishStatisticsSaveReqVO createReqVO) { + // 插入 + DishStatisticsDO dishStatistics = BeanUtils.toBean(createReqVO, DishStatisticsDO.class); + dishStatisticsMapper.insert(dishStatistics); + // 返回 + return dishStatistics.getId(); + } + + @Override + public void updateDishStatistics(DishStatisticsSaveReqVO updateReqVO) { + // 校验存在 + validateDishStatisticsExists(updateReqVO.getId()); + // 更新 + DishStatisticsDO updateObj = BeanUtils.toBean(updateReqVO, DishStatisticsDO.class); + dishStatisticsMapper.updateById(updateObj); + } + + @Override + public void deleteDishStatistics(Long id) { + // 校验存在 + validateDishStatisticsExists(id); + // 删除 + dishStatisticsMapper.deleteById(id); + } + + private void validateDishStatisticsExists(Long id) { + if (dishStatisticsMapper.selectById(id) == null) { + throw exception(DISH_STATISTICS_NOT_EXISTS); + } + } + + @Override + public DishStatisticsDO getDishStatistics(Long id) { + return dishStatisticsMapper.selectById(id); + } + + @Override + public PageResult getDishStatisticsPage(DishStatisticsPageReqVO pageReqVO) { + return dishStatisticsMapper.selectPage(pageReqVO); + } + + + @Override + public Integer addData() { + String time = LocalDateTime.now().format(DateTimeFormatter.ofPattern(MemberConstants.DATE_FORMAT)); + List saleData = dishStatisticsMapper.getSaleData(time); + if(CollectionUtil.isNotEmpty(saleData)){ + List dishIds = saleData.stream().map(DishStatisticsDO::getDishId).collect(Collectors.toList()); + Map dishName = dishesApi.getDishName(dishIds); + saleData.forEach(add ->{ + add.setDishesName(dishName.get(add.getDishId())); + }); + dishStatisticsMapper.insertBatch(saleData); + } + return saleData.size(); + + } +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/dishstatistics/DishStatisticsMapper.xml b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/dishstatistics/DishStatisticsMapper.xml new file mode 100644 index 00000000..d6a70198 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/dishstatistics/DishStatisticsMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + \ 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/dish/DishesApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dish/DishesApi.java index 5ffd276d..9a389617 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dish/DishesApi.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dish/DishesApi.java @@ -2,6 +2,9 @@ package cn.iocoder.yudao.module.system.api.dish; import cn.iocoder.yudao.module.system.api.dish.dto.DishesRespDto; +import java.util.List; +import java.util.Map; + /** * @author zt * @description @@ -13,4 +16,9 @@ public interface DishesApi { * @Description: 根据菜品id 获取菜品属性 */ public DishesRespDto getDish(Long id); + + /** + * @Description: 根据菜品id 获取菜品名称 + */ + public Map getDishName(List ids); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dish/DishesApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dish/DishesApiImpl.java index ad1c2a38..8d900af4 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dish/DishesApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dish/DishesApiImpl.java @@ -8,6 +8,9 @@ import cn.iocoder.yudao.module.system.service.dishes.DishesService; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; +import java.util.Map; /** * 菜品营养 Service 接口 @@ -25,4 +28,9 @@ public class DishesApiImpl implements DishesApi { DishesDO dishes = dishesService.getDishes(id); return BeanUtils.toBean(dishes,DishesRespDto.class); } + + @Override + public Map getDishName(List ids) { + return dishesService.getDishName(ids); + } } \ 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/dishes/DishesService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishes/DishesService.java index 4c143b82..4aca0659 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishes/DishesService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishes/DishesService.java @@ -7,6 +7,8 @@ import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesSaveReqVO import cn.iocoder.yudao.module.system.dal.dataobject.dishes.DishesDO; import javax.validation.Valid; +import java.util.List; +import java.util.Map; /** * 菜品管理 Service 接口 @@ -54,4 +56,7 @@ public interface DishesService { */ PageResult getDishesPage(DishesPageReqVO pageReqVO); + Map getDishName(List ids); + + } \ 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/dishes/DishesServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishes/DishesServiceImpl.java index 6c2c0695..f068fb63 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishes/DishesServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishes/DishesServiceImpl.java @@ -19,6 +19,7 @@ import cn.iocoder.yudao.module.system.dal.mysql.dishes.DishesMapper; import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants; import cn.iocoder.yudao.module.system.service.dishesnutrition.DishesNutritionService; import cn.iocoder.yudao.module.system.service.dishesraw.DishesRawService; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.SneakyThrows; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -26,6 +27,8 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -137,4 +140,10 @@ public class DishesServiceImpl implements DishesService { return dishesMapper.selectPage(pageReqVO); } + @Override + public Map getDishName(List ids) { + List dishesDOS = dishesMapper.selectList(Wrappers.lambdaQuery().in(DishesDO::getId, ids)); + Map collect = dishesDOS.stream().collect(Collectors.toMap(DishesDO::getId, DishesDO::getDishesName)); + return collect; + } } \ No newline at end of file