From 8a08aa79e608fa5cbc8583d3455516d605a427b0 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Tue, 14 Oct 2025 18:27:35 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=E8=90=A5=E5=85=BB=E5=88=86=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/app/HardAppProductLikeTopDto.java | 4 ++ .../hard/api/vo/hard/PanelPorductVo.java | 20 ++++-- .../panel/PanelNutritionController.java | 51 ++++++++++++++ .../hard/service/PanelNutritionService.java | 24 +++++++ .../impl/panel/PanelNutritionServiceImpl.java | 68 +++++++++++++++++++ .../resources/mapper/order/HardCarMapper.xml | 3 + 6 files changed, 165 insertions(+), 5 deletions(-) create mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/panel/PanelNutritionController.java create mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/PanelNutritionService.java create mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/panel/PanelNutritionServiceImpl.java diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppProductLikeTopDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppProductLikeTopDto.java index 1eb28df7c..f0b7a983a 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppProductLikeTopDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppProductLikeTopDto.java @@ -2,6 +2,8 @@ package com.bsd.pjcloud.hard.api.dto.order.app; import lombok.Data; +import java.time.LocalDateTime; + /** * 个人菜品喜好排行 */ @@ -10,4 +12,6 @@ public class HardAppProductLikeTopDto { private Long userId; + private LocalDateTime[] payTimeList; + } diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/hard/PanelPorductVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/hard/PanelPorductVo.java index 8cddbf723..ae6172905 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/hard/PanelPorductVo.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/hard/PanelPorductVo.java @@ -19,11 +19,26 @@ import java.util.List; @NoArgsConstructor public class PanelPorductVo { + /** + * 分类名 + */ + private String classifyName; + + /** + * 分类ID + */ + private Long classifyId; + /** * 商品名 */ private String productName; + /** + * 商品id + */ + private Long productId; + /** * 商家ID */ @@ -39,11 +54,6 @@ public class PanelPorductVo { */ private String hourType; - /** - * 商品名 - */ - private String productStr; - /** * 用餐人数 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/panel/PanelNutritionController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/panel/PanelNutritionController.java new file mode 100644 index 000000000..5e353c9b9 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/panel/PanelNutritionController.java @@ -0,0 +1,51 @@ +package com.bsd.pjcloud.hard.controller.panel; + +import cn.hutool.core.util.ObjectUtil; +import com.bsd.pjcloud.common.core.constant.enums.MerchantTypeEnum; +import com.bsd.pjcloud.common.core.util.DateRangeTool; +import com.bsd.pjcloud.common.core.util.R; +import com.bsd.pjcloud.hard.api.dto.panel.PanelProductDto; +import com.bsd.pjcloud.hard.api.vo.hard.PanelPorductVo; +import com.bsd.pjcloud.hard.service.PanelNutritionService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpHeaders; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/panel-nutrition") +@Tag(description = "panel-nutrition", name = "营养统计") +@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) +public class PanelNutritionController { + + private final PanelNutritionService panelNutritionService; + + @PostMapping(value = "/class-count") + @Operation(summary = "食堂用餐分类统计") + public R> classCount(@RequestBody PanelProductDto dto) { + if (ObjectUtil.isNotEmpty(dto.getDateRangeType()) && ObjectUtil.isEmpty(dto.getTotalTimeList())) { + dto.setTotalTimeList(DateRangeTool.transitionDateTypeToDateTimeList(dto.getDateRangeType())); + } + dto.setMchTypeCodes(List.of(MerchantTypeEnum.CANTEEN.getType())); + return R.ok(panelNutritionService.classCount(dto)); + } + + @PostMapping(value = "/cuisine-top") + @Operation(summary = "菜品喜好排行") + public R> cuisineTop(@RequestBody PanelProductDto dto) { + if (ObjectUtil.isNotEmpty(dto.getDateRangeType()) && ObjectUtil.isEmpty(dto.getTotalTimeList())) { + dto.setTotalTimeList(DateRangeTool.transitionDateTypeToDateTimeList(dto.getDateRangeType())); + } + dto.setMchTypeCodes(List.of(MerchantTypeEnum.CANTEEN.getType())); + return R.ok(panelNutritionService.cuisineTop(dto)); + } + +} diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/PanelNutritionService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/PanelNutritionService.java new file mode 100644 index 000000000..4404892bb --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/PanelNutritionService.java @@ -0,0 +1,24 @@ +package com.bsd.pjcloud.hard.service; + +import com.bsd.pjcloud.hard.api.dto.panel.PanelProductDto; +import com.bsd.pjcloud.hard.api.vo.hard.PanelPorductVo; + +import java.util.List; + +/** + * @author liusiyang_dxm + * @since 2025/10/14 + */ +public interface PanelNutritionService { + + /** + * 食堂用餐分类统计 + */ + List classCount(PanelProductDto dto); + + /** + * 菜品喜好排行 + */ + List cuisineTop(PanelProductDto dto); + +} diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/panel/PanelNutritionServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/panel/PanelNutritionServiceImpl.java new file mode 100644 index 000000000..1ad037046 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/panel/PanelNutritionServiceImpl.java @@ -0,0 +1,68 @@ +package com.bsd.pjcloud.hard.service.impl.panel; + +import com.bsd.pjcloud.hard.api.dto.order.app.HardAppProductByClassifyDto; +import com.bsd.pjcloud.hard.api.dto.order.app.HardAppProductLikeTopDto; +import com.bsd.pjcloud.hard.api.dto.panel.PanelProductDto; +import com.bsd.pjcloud.hard.api.vo.hard.PanelPorductVo; +import com.bsd.pjcloud.hard.api.vo.order.app.HardAppProductByClassifyVo; +import com.bsd.pjcloud.hard.api.vo.order.app.HardAppProductLikeTopVo; +import com.bsd.pjcloud.hard.mapper.order.HardOrderMapper; +import com.bsd.pjcloud.hard.service.HardCanteenTotalService; +import com.bsd.pjcloud.hard.service.PanelNutritionService; +import com.bsd.pjcloud.wallet.api.feign.RemoteMchService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +@Validated +@Slf4j +@RequiredArgsConstructor +@Service +public class PanelNutritionServiceImpl implements PanelNutritionService { + + private final HardOrderMapper hardOrderMapper; + + private final HardCanteenTotalService canteenTotalService; + + private final RemoteMchService remoteMchService; + + /** + * 食堂用餐分类统计 + */ + @Override + public List classCount(PanelProductDto dto) { + HardAppProductByClassifyDto classDto = new HardAppProductByClassifyDto(); + classDto.setPayTimeList(dto.getTotalTimeList()); + List list = canteenTotalService.productByClassify(classDto); + return list.stream().map((item) -> { + PanelPorductVo entity = new PanelPorductVo(); + entity.setClassifyId(item.getClassifyId()); + entity.setClassifyName(item.getClassifyName()); + entity.setBuyCount(item.getPayCount()); + entity.setBuyProductCount(item.getTimeCount()); + entity.setPersonCount(item.getPayUserCount()); + return entity; + }).toList(); + } + + /** + * 菜品喜好排行 + */ + @Override + public List cuisineTop(PanelProductDto dto) { + HardAppProductLikeTopDto likeQuery = new HardAppProductLikeTopDto(); + likeQuery.setPayTimeList(dto.getTotalTimeList()); + List list = canteenTotalService.productLikeTop(likeQuery); + return list.stream().map((item) -> { + PanelPorductVo entity = new PanelPorductVo(); + entity.setProductName(item.getProductName()); + entity.setProductId(item.getProductId()); + entity.setBuyProductCount(item.getPayCount()); + return entity; + }).toList(); + } + +} diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml index 84a3b8377..2b1de7195 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml @@ -375,6 +375,9 @@ and o.user_id = #{dto.userId} + + and o.pay_time between #{dto.payTimeList[0]} and #{dto.payTimeList[1]} + group by a.product_id order by SUM(a.product_count) desc From 85c58c83033ba737a6c6568c5c53addd9f75306e Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Wed, 15 Oct 2025 10:20:36 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat:=E5=A4=A7=E5=B1=8F=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/1002pjcloudx_integrated.sql | 15 ++++ .../api/dto/panel/HardPanelSettingDto.java | 9 +++ .../entity/panel/HardPanelSettingEntity.java | 77 +++++++++++++++++++ .../hard/api/vo/panel/HardPanelSettingVo.java | 9 +++ .../panel/HardPanelSettingController.java | 51 ++++++++++++ .../mapper/panel/HardPanelSettingMapper.java | 10 +++ .../hard/service/HardPanelSettingService.java | 18 +++++ .../panel/HardPanelSettingServiceImpl.java | 40 ++++++++++ .../mapper/panel/HardPanelSettingMapper.xml | 15 ++++ 9 files changed, 244 insertions(+) create mode 100644 db/1002pjcloudx_integrated.sql create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/panel/HardPanelSettingDto.java create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/panel/HardPanelSettingEntity.java create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/panel/HardPanelSettingVo.java create mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/panel/HardPanelSettingController.java create mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/panel/HardPanelSettingMapper.java create mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardPanelSettingService.java create mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/panel/HardPanelSettingServiceImpl.java create mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/panel/HardPanelSettingMapper.xml diff --git a/db/1002pjcloudx_integrated.sql b/db/1002pjcloudx_integrated.sql new file mode 100644 index 000000000..632a599de --- /dev/null +++ b/db/1002pjcloudx_integrated.sql @@ -0,0 +1,15 @@ +-- 大屏配置表 +CREATE TABLE `hard_panel_setting` +( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `nutrition_top_exclude_classify` varchar(1024) NOT NULL COMMENT '营养分析-菜品排行-排除菜品分类', + `create_by` varchar(50) DEFAULT NULL COMMENT '创建者', + `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(50) DEFAULT NULL COMMENT '更新者', + `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` char(1) DEFAULT '0' COMMENT '是否删除(0=正常 1=删除)', + `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户编号', + PRIMARY KEY (`id`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8mb4 COMMENT ='大屏配置表'; + diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/panel/HardPanelSettingDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/panel/HardPanelSettingDto.java new file mode 100644 index 000000000..6899f95fe --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/panel/HardPanelSettingDto.java @@ -0,0 +1,9 @@ +package com.bsd.pjcloud.hard.api.dto.panel; + +import com.bsd.pjcloud.hard.api.entity.panel.HardPanelSettingEntity; +import lombok.Data; + +@Data +public class HardPanelSettingDto extends HardPanelSettingEntity { + +} diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/panel/HardPanelSettingEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/panel/HardPanelSettingEntity.java new file mode 100644 index 000000000..40516a696 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/panel/HardPanelSettingEntity.java @@ -0,0 +1,77 @@ +package com.bsd.pjcloud.hard.api.entity.panel; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import com.bsd.pjcloud.common.core.util.TenantTable; + +import java.time.LocalDateTime; + +/** + * 大屏配置表 + */ +@Data +@TenantTable +@TableName("hard_panel_setting") +@EqualsAndHashCode(callSuper = true) +@Schema(description = "大屏配置表") +public class HardPanelSettingEntity extends Model { + + + /** + * 主键ID + */ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键ID") + private Long id; + + /** + * 营养分析-菜品排行-排除菜品分类 + */ + @Schema(description = "营养分析-菜品排行-排除菜品分类") + private String nutritionTopExcludeClassify; + + /** + * 创建者 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建者") + private String createBy; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建时间") + private LocalDateTime createTime; + + /** + * 更新者 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "更新者") + private String updateBy; + + /** + * 更新时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "更新时间") + private LocalDateTime updateTime; + + /** + * 是否删除(0=正常 1=删除) + */ + @TableLogic + @TableField(fill = FieldFill.INSERT) + @Schema(description = "是否删除(0=正常 1=删除)") + private String delFlag; + + /** + * 租户编号 + */ + @Schema(description = "租户编号") + private Long tenantId; +} \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/panel/HardPanelSettingVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/panel/HardPanelSettingVo.java new file mode 100644 index 000000000..7ea892047 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/panel/HardPanelSettingVo.java @@ -0,0 +1,9 @@ +package com.bsd.pjcloud.hard.api.vo.panel; + +import com.bsd.pjcloud.hard.api.entity.panel.HardPanelSettingEntity; +import lombok.Data; + +@Data +public class HardPanelSettingVo extends HardPanelSettingEntity { + +} diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/panel/HardPanelSettingController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/panel/HardPanelSettingController.java new file mode 100644 index 000000000..fadf67f57 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/panel/HardPanelSettingController.java @@ -0,0 +1,51 @@ +package com.bsd.pjcloud.hard.controller.panel; + +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.common.core.util.R; +import com.bsd.pjcloud.common.log.annotation.SysLog; +import com.bsd.pjcloud.hard.api.dto.panel.HardPanelSettingDto; +import com.bsd.pjcloud.hard.api.entity.panel.HardPanelSettingEntity; +import com.bsd.pjcloud.hard.service.HardPanelSettingService; +import org.springframework.security.access.prepost.PreAuthorize; +import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import org.springdoc.core.annotations.ParameterObject; +import org.springframework.http.HttpHeaders; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Objects; + +/** + * 大屏配置表 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/hardPanelSetting") +@Tag(description = "hardPanelSetting", name = "大屏配置表管理") +@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) +public class HardPanelSettingController { + + private final HardPanelSettingService hardPanelSettingService; + + @Operation(summary = "查询配置", description = "查询配置") + @GetMapping("/") + public R getSetting() { + return R.ok(hardPanelSettingService.getSetting()); + } + + + @Operation(summary = "新增或修改", description = "新增或修改") + @PostMapping + public R saveOrUpdate(@RequestBody HardPanelSettingDto dto) { + return R.ok(hardPanelSettingService.selefSaveOrUpdate(dto)); + } + +} \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/panel/HardPanelSettingMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/panel/HardPanelSettingMapper.java new file mode 100644 index 000000000..635f1a1d4 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/panel/HardPanelSettingMapper.java @@ -0,0 +1,10 @@ +package com.bsd.pjcloud.hard.mapper.panel; + +import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; +import com.bsd.pjcloud.hard.api.entity.panel.HardPanelSettingEntity; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface HardPanelSettingMapper extends PjcloudBaseMapper { + +} \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardPanelSettingService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardPanelSettingService.java new file mode 100644 index 000000000..318928037 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardPanelSettingService.java @@ -0,0 +1,18 @@ +package com.bsd.pjcloud.hard.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.bsd.pjcloud.hard.api.dto.panel.HardPanelSettingDto; +import com.bsd.pjcloud.hard.api.entity.panel.HardPanelSettingEntity; + +public interface HardPanelSettingService extends IService { + + /** + * 查询配置 + */ + HardPanelSettingEntity getSetting(); + + /** + * 新增或修改 + */ + HardPanelSettingEntity selefSaveOrUpdate(HardPanelSettingDto dto); +} \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/panel/HardPanelSettingServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/panel/HardPanelSettingServiceImpl.java new file mode 100644 index 000000000..46d918926 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/panel/HardPanelSettingServiceImpl.java @@ -0,0 +1,40 @@ +package com.bsd.pjcloud.hard.service.impl.panel; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsd.pjcloud.hard.api.dto.panel.HardPanelSettingDto; +import com.bsd.pjcloud.hard.api.entity.panel.HardPanelSettingEntity; +import com.bsd.pjcloud.hard.mapper.panel.HardPanelSettingMapper; +import com.bsd.pjcloud.hard.service.HardPanelSettingService; +import org.springframework.stereotype.Service; + +/** + * 大屏配置表 + */ +@Service +public class HardPanelSettingServiceImpl extends ServiceImpl implements HardPanelSettingService { + + /** + * 查询配置 + */ + @Override + public HardPanelSettingEntity getSetting() { + return baseMapper.selectOne(new LambdaQueryWrapper<>()); + } + + /** + * 新增或修改 + */ + @Override + public HardPanelSettingEntity selefSaveOrUpdate(HardPanelSettingDto dto) { + HardPanelSettingEntity setting = getSetting(); + if (ObjectUtil.isEmpty(setting)) { + baseMapper.insert(dto); + } else { + dto.setId(setting.getId()); + baseMapper.updateById(dto); + } + return setting; + } +} \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/panel/HardPanelSettingMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/panel/HardPanelSettingMapper.xml new file mode 100644 index 000000000..eb7a5b91e --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/panel/HardPanelSettingMapper.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file From ab3cffc35d60f45e545697007b9f00e4bd3122e0 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Wed, 15 Oct 2025 11:12:34 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat:=E8=8F=9C=E5=93=81=E5=96=9C=E5=A5=BD?= =?UTF-8?q?=E6=8E=92=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/app/HardAppProductLikeTopDto.java | 3 ++ .../hard/api/dto/panel/PanelProductDto.java | 2 ++ .../entity/panel/HardPanelSettingEntity.java | 11 +++---- .../entity/panel/HardPanelSettingShare.java | 29 +++++++++++++++++++ .../panel/HardPanelSettingController.java | 14 +-------- .../panel/HardPanelSettingServiceImpl.java | 1 + .../impl/panel/PanelNutritionServiceImpl.java | 15 ++++++++++ .../resources/mapper/order/HardCarMapper.xml | 6 ++++ 8 files changed, 63 insertions(+), 18 deletions(-) create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/panel/HardPanelSettingShare.java diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppProductLikeTopDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppProductLikeTopDto.java index f0b7a983a..650a26834 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppProductLikeTopDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppProductLikeTopDto.java @@ -3,6 +3,7 @@ package com.bsd.pjcloud.hard.api.dto.order.app; import lombok.Data; import java.time.LocalDateTime; +import java.util.List; /** * 个人菜品喜好排行 @@ -12,6 +13,8 @@ public class HardAppProductLikeTopDto { private Long userId; + private List classifyIds; + private LocalDateTime[] payTimeList; } diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/panel/PanelProductDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/panel/PanelProductDto.java index 7f146d3f9..0d3345f6c 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/panel/PanelProductDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/panel/PanelProductDto.java @@ -21,6 +21,8 @@ public class PanelProductDto { private List mchTypeCodes; + private List classifyIds; + private String hourTypeIsNull; private String hourType; diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/panel/HardPanelSettingEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/panel/HardPanelSettingEntity.java index 40516a696..41734abfa 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/panel/HardPanelSettingEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/panel/HardPanelSettingEntity.java @@ -2,6 +2,7 @@ package com.bsd.pjcloud.hard.api.entity.panel; import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -14,12 +15,11 @@ import java.time.LocalDateTime; */ @Data @TenantTable -@TableName("hard_panel_setting") +@TableName(value = "hard_panel_setting", autoResultMap = true) @EqualsAndHashCode(callSuper = true) @Schema(description = "大屏配置表") public class HardPanelSettingEntity extends Model { - /** * 主键ID */ @@ -28,10 +28,11 @@ public class HardPanelSettingEntity extends Model { private Long id; /** - * 营养分析-菜品排行-排除菜品分类 + * 营养分析json配置 */ - @Schema(description = "营养分析-菜品排行-排除菜品分类") - private String nutritionTopExcludeClassify; + @Schema(description = "营养分析json配置") + @TableField(typeHandler = JacksonTypeHandler.class) + private HardPanelSettingShare.NutritionSetting nutritionSetting; /** * 创建者 diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/panel/HardPanelSettingShare.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/panel/HardPanelSettingShare.java new file mode 100644 index 000000000..5931b6a8c --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/panel/HardPanelSettingShare.java @@ -0,0 +1,29 @@ +package com.bsd.pjcloud.hard.api.entity.panel; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +public class HardPanelSettingShare { + + /** + * 营养分析配置 + */ + @Data + @Builder + @AllArgsConstructor + @NoArgsConstructor + static public class NutritionSetting { + + /** + * 喜爱菜品排行需要排除的菜品分类 + */ + private List topExcludeCategoryIds; + + } + +} diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/panel/HardPanelSettingController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/panel/HardPanelSettingController.java index fadf67f57..ca3cf83e8 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/panel/HardPanelSettingController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/panel/HardPanelSettingController.java @@ -1,28 +1,16 @@ package com.bsd.pjcloud.hard.controller.panel; -import cn.hutool.core.util.ArrayUtil; -import cn.hutool.core.collection.CollUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.common.core.util.R; -import com.bsd.pjcloud.common.log.annotation.SysLog; import com.bsd.pjcloud.hard.api.dto.panel.HardPanelSettingDto; import com.bsd.pjcloud.hard.api.entity.panel.HardPanelSettingEntity; import com.bsd.pjcloud.hard.service.HardPanelSettingService; -import org.springframework.security.access.prepost.PreAuthorize; -import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; import io.swagger.v3.oas.annotations.security.SecurityRequirement; -import org.springdoc.core.annotations.ParameterObject; import org.springframework.http.HttpHeaders; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; -import java.util.List; -import java.util.Objects; - /** * 大屏配置表 */ @@ -36,7 +24,7 @@ public class HardPanelSettingController { private final HardPanelSettingService hardPanelSettingService; @Operation(summary = "查询配置", description = "查询配置") - @GetMapping("/") + @GetMapping("/setting") public R getSetting() { return R.ok(hardPanelSettingService.getSetting()); } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/panel/HardPanelSettingServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/panel/HardPanelSettingServiceImpl.java index 46d918926..bcc0a24b2 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/panel/HardPanelSettingServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/panel/HardPanelSettingServiceImpl.java @@ -1,6 +1,7 @@ package com.bsd.pjcloud.hard.service.impl.panel; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsd.pjcloud.hard.api.dto.panel.HardPanelSettingDto; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/panel/PanelNutritionServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/panel/PanelNutritionServiceImpl.java index 1ad037046..85eb1e566 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/panel/PanelNutritionServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/panel/PanelNutritionServiceImpl.java @@ -1,13 +1,17 @@ package com.bsd.pjcloud.hard.service.impl.panel; +import cn.hutool.core.util.ObjectUtil; import com.bsd.pjcloud.hard.api.dto.order.app.HardAppProductByClassifyDto; import com.bsd.pjcloud.hard.api.dto.order.app.HardAppProductLikeTopDto; import com.bsd.pjcloud.hard.api.dto.panel.PanelProductDto; +import com.bsd.pjcloud.hard.api.entity.panel.HardPanelSettingEntity; +import com.bsd.pjcloud.hard.api.entity.panel.HardPanelSettingShare; import com.bsd.pjcloud.hard.api.vo.hard.PanelPorductVo; import com.bsd.pjcloud.hard.api.vo.order.app.HardAppProductByClassifyVo; import com.bsd.pjcloud.hard.api.vo.order.app.HardAppProductLikeTopVo; import com.bsd.pjcloud.hard.mapper.order.HardOrderMapper; import com.bsd.pjcloud.hard.service.HardCanteenTotalService; +import com.bsd.pjcloud.hard.service.HardPanelSettingService; import com.bsd.pjcloud.hard.service.PanelNutritionService; import com.bsd.pjcloud.wallet.api.feign.RemoteMchService; import lombok.RequiredArgsConstructor; @@ -26,6 +30,7 @@ public class PanelNutritionServiceImpl implements PanelNutritionService { private final HardOrderMapper hardOrderMapper; private final HardCanteenTotalService canteenTotalService; + private final HardPanelSettingService panelSettingService; private final RemoteMchService remoteMchService; @@ -54,6 +59,16 @@ public class PanelNutritionServiceImpl implements PanelNutritionService { @Override public List cuisineTop(PanelProductDto dto) { HardAppProductLikeTopDto likeQuery = new HardAppProductLikeTopDto(); + + // 查询配置 + HardPanelSettingEntity setting = panelSettingService.getSetting(); + if (ObjectUtil.isNotEmpty(setting) && ObjectUtil.isNotEmpty(setting.getNutritionSetting())) { + HardPanelSettingShare.NutritionSetting nutritionSetting = setting.getNutritionSetting(); + if (ObjectUtil.isNotEmpty(nutritionSetting.getTopExcludeCategoryIds())) { + likeQuery.setClassifyIds(nutritionSetting.getTopExcludeCategoryIds()); + } + } + likeQuery.setPayTimeList(dto.getTotalTimeList()); List list = canteenTotalService.productLikeTop(likeQuery); return list.stream().map((item) -> { diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml index 2b1de7195..5c8f9e4c7 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml @@ -378,6 +378,12 @@ and o.pay_time between #{dto.payTimeList[0]} and #{dto.payTimeList[1]} + + and s.category_id not in + + #{v} + + group by a.product_id order by SUM(a.product_count) desc