From ffc5befc810ae0594aaa6dc3aa8a4f1bb84c833f Mon Sep 17 00:00:00 2001 From: dzq Date: Wed, 21 May 2025 09:22:55 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E8=AE=A2=E5=8D=95):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=9C=AA=E5=BD=92=E8=BF=98=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=95=86=E5=93=81=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在ShopOrderGoodsService、OrderApplicationService、ShopOrderGoodsServiceImpl和ShopOrderGoodsMapper中添加了selectUnReturnOrderGoods方法,用于查询未归还的订单商品。同时,在StatsDTO中新增了未归还商品数量、未归还订单数量和未归还金额字段,并在ShopController的stats方法中实现了相关统计逻辑。 --- .../admin/controller/shop/ShopController.java | 27 +++++++++++++++++++ .../shop/order/OrderApplicationService.java | 4 +++ .../shop/order/db/ShopOrderGoodsMapper.java | 10 +++++++ .../shop/order/db/ShopOrderGoodsService.java | 2 ++ .../order/db/ShopOrderGoodsServiceImpl.java | 5 ++++ .../domain/shop/shop/dto/StatsDTO.java | 9 +++++++ 6 files changed, 57 insertions(+) diff --git a/agileboot-admin/src/main/java/com/agileboot/admin/controller/shop/ShopController.java b/agileboot-admin/src/main/java/com/agileboot/admin/controller/shop/ShopController.java index 558dd6d..7ae03ed 100644 --- a/agileboot-admin/src/main/java/com/agileboot/admin/controller/shop/ShopController.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/controller/shop/ShopController.java @@ -11,6 +11,7 @@ import com.agileboot.domain.common.command.BulkOperationCommand; import com.agileboot.domain.mqtt.MqttService; import com.agileboot.domain.shop.goods.GoodsApplicationService; import com.agileboot.domain.shop.order.OrderApplicationService; +import com.agileboot.domain.shop.order.db.ShopOrderGoodsEntity; import com.agileboot.domain.shop.order.db.TodayLatestOrderGoodsDTO; import com.agileboot.domain.shop.shop.ShopApplicationService; import com.agileboot.domain.shop.shop.command.AddShopCommand; @@ -20,6 +21,8 @@ import com.agileboot.domain.shop.shop.dto.ShopDTO; import com.agileboot.domain.shop.shop.dto.StatsDTO; import com.agileboot.domain.shop.shop.query.SearchShopQuery; import io.swagger.v3.oas.annotations.Operation; + +import java.math.BigDecimal; import java.util.List; import javax.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; @@ -49,24 +52,48 @@ public class ShopController extends BaseController { @Operation(summary = "首页数据") @GetMapping("/Stats") public ResponseDTO stats() { + // 创建统计数据DTO对象 StatsDTO statsDTO = new StatsDTO(); + // 设置商店总数(调用商店服务统计) statsDTO.setShopCount(shopApplicationService.countAllRecord()); + // 设置商品总数(调用商品服务统计) statsDTO.setGoodsCount(goodsApplicationService.countAllRecord()); + // 设置商品总金额(调用商品服务计算) statsDTO.setGoodsTotalAmount(goodsApplicationService.calculateTotalAmount()); + // 设置订单总数(调用订单服务统计) statsDTO.setOrderCount(orderApplicationService.countAllRecord()); + // 设置订单总金额(调用订单服务计算) statsDTO.setOrderAmountSum(orderApplicationService.sumTotalAmount()); + + List unReturnOrderGoods = orderApplicationService.selectUnReturnOrderGoods(); + // 设置未还商品数量(调用订单服务统计) + statsDTO.setUnReturnedGoodsCount((long) unReturnOrderGoods.size()); + // 设置未还订单数量(调用订单服务统计) + statsDTO.setUnReturnedOrderCount(unReturnOrderGoods.stream().map(ShopOrderGoodsEntity::getOrderId).distinct().count()); + // 设置未还金额(调用订单服务计算) + statsDTO.setUnReturnedAmount(unReturnOrderGoods.stream().map(ShopOrderGoodsEntity::getTotalAmount).reduce(BigDecimal.ZERO, BigDecimal::add)); + + // 设置智能柜总数(调用智能柜服务统计) statsDTO.setCabinetCount(smartCabinetApplicationService.countAllRecord()); + // 设置格口总数(调用格口服务统计) statsDTO.setCellCount(cabinetCellApplicationService.countAllRecord()); + // 设置已关联格口数(调用格口服务统计) statsDTO.setLinkedCellCount(cabinetCellApplicationService.countLinkedRecord()); + // 计算并设置未管理格口数(总格口数-已关联格口数) statsDTO.setUnmanagedCellCount(statsDTO.getCellCount() - statsDTO.getLinkedCellCount()); + // 设置网关数量(从MQTT服务获取) statsDTO.setGatewayCount(mqttService.getGatewayCount()); + // 设置热门商品列表(调用订单服务获取) statsDTO.setTopGoods(orderApplicationService.selectTopGoodsByOccurrence()); + // 获取今日最新订单商品列表 List todayLatestOrderGoodsDTOS = orderApplicationService.selectTodayLatestOrderGoods(); + // 格式化每个订单商品的创建时间(HH:mm:ss格式) todayLatestOrderGoodsDTOS.forEach(dto -> { if (dto.getCreateTime() != null) { dto.setCreateTimeStr(cn.hutool.core.date.DateUtil.format(dto.getCreateTime(), "HH:mm:ss")); } }); + // 设置今日最新订单商品列表到统计DTO statsDTO.setTodayLatestOrderGoods(todayLatestOrderGoodsDTOS); return ResponseDTO.ok(statsDTO); } diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java index ae437d4..bd03787 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java @@ -353,4 +353,8 @@ public class OrderApplicationService { public BigDecimal sumTotalAmount() { return orderService.sumTotalAmount(); } + + public List selectUnReturnOrderGoods() { + return orderGoodsService.selectUnReturnOrderGoods(); + } } \ No newline at end of file diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/db/ShopOrderGoodsMapper.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/db/ShopOrderGoodsMapper.java index 3c9e584..0c0e692 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/db/ShopOrderGoodsMapper.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/db/ShopOrderGoodsMapper.java @@ -41,4 +41,14 @@ public interface ShopOrderGoodsMapper extends BaseMapper { "ORDER BY sog.create_time DESC " + "LIMIT 10") List selectTodayLatestOrderGoods(); + + @Select("SELECT og.* " + + "FROM shop_order_goods og " + + "LEFT JOIN shop_goods g ON og.goods_id = g.goods_id " + + "LEFT JOIN cabinet_cell cc ON og.cell_id = cc.cell_id " + + "WHERE og.status = 1 " + + "AND og.deleted = 0 " + + "AND g.deleted = 0 " + + "AND cc.deleted = 0 AND cc.goods_id = og.goods_id") + List selectUnReturnOrderGoods(); } diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/db/ShopOrderGoodsService.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/db/ShopOrderGoodsService.java index 819c019..c8611f7 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/db/ShopOrderGoodsService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/db/ShopOrderGoodsService.java @@ -22,4 +22,6 @@ public interface ShopOrderGoodsService extends IService { List selectTopGoodsByOccurrence(); List selectTodayLatestOrderGoods(); + + List selectUnReturnOrderGoods(); } diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/db/ShopOrderGoodsServiceImpl.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/db/ShopOrderGoodsServiceImpl.java index 746c9c1..a0a14f0 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/db/ShopOrderGoodsServiceImpl.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/db/ShopOrderGoodsServiceImpl.java @@ -37,4 +37,9 @@ public class ShopOrderGoodsServiceImpl extends ServiceImpl selectUnReturnOrderGoods() { + return baseMapper.selectUnReturnOrderGoods(); + } + } diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/shop/dto/StatsDTO.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/shop/dto/StatsDTO.java index 838793c..281e91f 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/shop/shop/dto/StatsDTO.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/shop/dto/StatsDTO.java @@ -31,6 +31,15 @@ public class StatsDTO { @ExcelColumn(name = "总柜子数量") private Long cabinetCount; + @ExcelColumn(name = "未还商品数量") + private Long unReturnedGoodsCount; + + @ExcelColumn(name = "未还订单数量") + private Long unReturnedOrderCount; + + @ExcelColumn(name = "未还金额") + private BigDecimal unReturnedAmount; + @ExcelColumn(name = "总格口数量") private Long cellCount;