From caafb3762db8406b77fb6f7e419673e332eb3616 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 1 Aug 2025 17:10:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E9=A3=9F=E5=A0=82=E8=8F=9C=E5=93=81?= =?UTF-8?q?=E8=B4=AD=E4=B9=B0=E7=BB=9F=E8=AE=A1-=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hard/api/dto/order/HardOrderDto.java | 2 + .../vo/order/HardCanteenProductTotalVo.java | 9 +++ .../order/HardCanteenTotalController.java | 9 +++ .../hard/mapper/order/HardCarMapper.java | 4 + .../hard/service/HardCanteenTotalService.java | 7 ++ .../order/HardCanteenTotalServiceImpl.java | 44 ++++++++++- .../resources/mapper/order/HardCarMapper.xml | 74 ++++++++++++++++++- ...mework.cloud.openfeign.FeignClient.imports | 1 - 8 files changed, 146 insertions(+), 4 deletions(-) diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java index 23b780b6e..1c83aeaae 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java @@ -57,4 +57,6 @@ public class HardOrderDto extends HardOrderEntity implements BaseIsIncludeTreeIn */ private String afterSaleNo; + private String createTimeStr; + } diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardCanteenProductTotalVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardCanteenProductTotalVo.java index 4d82b1eaf..0ca96af49 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardCanteenProductTotalVo.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardCanteenProductTotalVo.java @@ -8,6 +8,15 @@ import java.time.LocalDateTime; @Data public class HardCanteenProductTotalVo { + @Schema(description = "唯一编号") + private String uniqueCode; + + @Schema(description = "部门id") + private Long userDeptId; + + @Schema(description = "部门名") + private String userDeptName; + @Schema(description = "购买日期(年月日)") private LocalDateTime createTime; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java index 329dd95d0..ca428fc8d 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java @@ -16,6 +16,8 @@ import org.springdoc.core.annotations.ParameterObject; import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * 食堂统计 */ @@ -28,6 +30,13 @@ public class HardCanteenTotalController { private final HardCanteenTotalService canteenTotalService; + @Operation(summary = "根据部门 食堂菜品购买统计", description = "根据部门 食堂菜品购买统计") + @PostMapping("/proudct-total-by-dept") + public R> productTotalByDept(@ParameterObject Page page, @RequestBody HardOrderDto dto) { + DataScope dataScope = null; + return R.ok(canteenTotalService.productTotalByDept(page, dto, dataScope)); + } + @Operation(summary = "食堂菜品购买统计", description = "食堂菜品购买统计") @PostMapping("/proudct-total") public R> productTotal(@ParameterObject Page page, @RequestBody HardOrderDto dto) { diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java index 80dbcb8b0..28b19fd94 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java @@ -12,6 +12,8 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + @Mapper public interface HardCarMapper extends PjcloudBaseMapper { @@ -22,6 +24,8 @@ public interface HardCarMapper extends PjcloudBaseMapper { return selectJoinPage(page, HardCarVo.class, wrapper); } + List productTotalByDept(@Param("dto") HardOrderDto dto, DataScope dataScope); + Page productTotal(Page page, @Param("dto") HardOrderDto dto, DataScope dataScope); Page proudctQuery(Page page, @Param("dto") HardCarDto dto); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardCanteenTotalService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardCanteenTotalService.java index 38136834f..8af5f1274 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardCanteenTotalService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardCanteenTotalService.java @@ -8,8 +8,15 @@ import com.bsd.pjcloud.hard.api.vo.order.HardCanteenProductTotalVo; import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto; import com.bsd.pjcloud.hard.api.vo.order.HardCarVo; +import java.util.List; + public interface HardCanteenTotalService { + /** + * 根据部门 食堂菜品购买统计 + */ + List productTotalByDept(Page page, HardOrderDto dto, DataScope dataScope); + /** * 食堂菜品购买统计 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenTotalServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenTotalServiceImpl.java index baf5f8892..663ee7012 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenTotalServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenTotalServiceImpl.java @@ -1,6 +1,10 @@ package com.bsd.pjcloud.hard.service.impl.order; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.admin.api.entity.SysDept; +import com.bsd.pjcloud.admin.api.feign.RemoteDeptService; +import com.bsd.pjcloud.canteen.api.feign.RemoteCanteenSpuService; import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.hard.api.constant.order.HardOrderStatusEnum; import com.bsd.pjcloud.hard.api.dto.order.HardCarDto; @@ -15,6 +19,10 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; +import java.time.LocalDate; +import java.util.List; +import java.util.Map; + /** * 食堂统计 @@ -30,13 +38,47 @@ public class HardCanteenTotalServiceImpl implements HardCanteenTotalService { private final HardOrderMapper hardOrderMapper; private final HardCarMapper hardCarMapper; + private final RemoteDeptService remoteDeptService; + + /** + * 根据部门 食堂菜品购买统计 + */ + @Override + public List productTotalByDept(Page page, HardOrderDto dto, DataScope dataScope) { + dto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes()); + List list = hardCarMapper.productTotalByDept(dto, dataScope); + if (ObjectUtil.isNotEmpty(list)) { + // 查询部门名 + List userDeptList = list.stream().map(HardCanteenProductTotalVo::getUserDeptId).distinct().filter(ObjectUtil::isNotEmpty).toList(); + if(ObjectUtil.isNotEmpty(userDeptList)){ + Map userDeptMap = remoteDeptService.getDeptByDeptIds(userDeptList).getData(); + if (ObjectUtil.isNotEmpty(userDeptMap)) { + for (HardCanteenProductTotalVo v : list) { + SysDept sysDept = userDeptMap.get(v.getUserDeptId()); + if (ObjectUtil.isNotEmpty(sysDept)) { + v.setUserDeptName(sysDept.getName()); + } + } + } + } + } + return list; + } + /** * 食堂菜品购买统计 */ @Override public Page productTotal(Page page, HardOrderDto dto, DataScope dataScope) { dto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes()); - return hardCarMapper.productTotal(page, dto, dataScope); + Page pageList = hardCarMapper.productTotal(page, dto, dataScope); + if (ObjectUtil.isNotEmpty(pageList)) { + for (HardCanteenProductTotalVo v : pageList.getRecords()) { + LocalDate localDate = v.getCreateTime().toLocalDate(); + v.setUniqueCode(localDate + "_" + v.getHourType()); + } + } + return pageList; } /** 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 66ba78bf0..8ffe3902e 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 @@ -41,7 +41,7 @@ a.del_flag = '0' - + and DATE_FORMAT(a.create_time, '%Y-%m-%d') = #{dto.createTimeStr} @@ -49,6 +49,76 @@ + +