feat(订单): 添加查询未归还订单商品功能
在ShopOrderGoodsService、OrderApplicationService、ShopOrderGoodsServiceImpl和ShopOrderGoodsMapper中添加了selectUnReturnOrderGoods方法,用于查询未归还的订单商品。同时,在StatsDTO中新增了未归还商品数量、未归还订单数量和未归还金额字段,并在ShopController的stats方法中实现了相关统计逻辑。
This commit is contained in:
parent
10329475f3
commit
ffc5befc81
|
@ -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<StatsDTO> 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<ShopOrderGoodsEntity> 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<TodayLatestOrderGoodsDTO> 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);
|
||||
}
|
||||
|
|
|
@ -353,4 +353,8 @@ public class OrderApplicationService {
|
|||
public BigDecimal sumTotalAmount() {
|
||||
return orderService.sumTotalAmount();
|
||||
}
|
||||
|
||||
public List<ShopOrderGoodsEntity> selectUnReturnOrderGoods() {
|
||||
return orderGoodsService.selectUnReturnOrderGoods();
|
||||
}
|
||||
}
|
|
@ -41,4 +41,14 @@ public interface ShopOrderGoodsMapper extends BaseMapper<ShopOrderGoodsEntity> {
|
|||
"ORDER BY sog.create_time DESC " +
|
||||
"LIMIT 10")
|
||||
List<TodayLatestOrderGoodsDTO> 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<ShopOrderGoodsEntity> selectUnReturnOrderGoods();
|
||||
}
|
||||
|
|
|
@ -22,4 +22,6 @@ public interface ShopOrderGoodsService extends IService<ShopOrderGoodsEntity> {
|
|||
List<TopGoodsDTO> selectTopGoodsByOccurrence();
|
||||
|
||||
List<TodayLatestOrderGoodsDTO> selectTodayLatestOrderGoods();
|
||||
|
||||
List<ShopOrderGoodsEntity> selectUnReturnOrderGoods();
|
||||
}
|
||||
|
|
|
@ -37,4 +37,9 @@ public class ShopOrderGoodsServiceImpl extends ServiceImpl<ShopOrderGoodsMapper,
|
|||
return baseMapper.selectTodayLatestOrderGoods();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ShopOrderGoodsEntity> selectUnReturnOrderGoods() {
|
||||
return baseMapper.selectUnReturnOrderGoods();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue