From 829f0301e0d68206fbf07f5b685df0325f4ef574 Mon Sep 17 00:00:00 2001 From: wenshijun Date: Fri, 12 Dec 2025 14:53:20 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=8E=A5=E5=8F=A3=E6=96=B0?= =?UTF-8?q?=E5=A2=9E1212?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DeliveryOrderController.java | 11 ++++- .../domain/dto/DeliveryOrderStatQuery.java | 2 +- .../document/mapper/DeliveryOrderMapper.java | 3 ++ .../service/IDeliveryOrderService.java | 3 ++ .../impl/DeliveryOrderServiceImpl.java | 45 +++++++++++-------- .../mybatis/document/DeliveryOrderMapper.xml | 21 ++++++++- 6 files changed, 62 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/delivery/project/document/controller/DeliveryOrderController.java b/src/main/java/com/delivery/project/document/controller/DeliveryOrderController.java index dfab382..62e54e6 100644 --- a/src/main/java/com/delivery/project/document/controller/DeliveryOrderController.java +++ b/src/main/java/com/delivery/project/document/controller/DeliveryOrderController.java @@ -46,7 +46,7 @@ public class DeliveryOrderController extends BaseController { /** * 新增:详细列表(表头 + 货物明细 + 照片),不分页 */ -// @PreAuthorize("@ss.hasPermi('document:order:list')") + // @PreAuthorize("@ss.hasPermi('document:order:list')") @GetMapping("/listWithDetail") public TableDataInfo listWithDetail(DeliveryOrder deliveryOrder) { @@ -56,7 +56,6 @@ public class DeliveryOrderController extends BaseController { return getDataTable(list); } - /** * 导出配送单据主列表 */ @@ -187,4 +186,12 @@ public class DeliveryOrderController extends BaseController { List list = deliveryOrderService.statByDaily(query); return AjaxResult.success(list); } + + /** 按日期(月维度)统计 */ + //@PreAuthorize("@ss.hasPermi('document:order:stat')") + @PostMapping("/stat/monthly") + public AjaxResult statByMonthly(@RequestBody DeliveryOrderStatQuery query) { + List list = deliveryOrderService.statByMonthly(query); + return AjaxResult.success(list); + } } diff --git a/src/main/java/com/delivery/project/document/domain/dto/DeliveryOrderStatQuery.java b/src/main/java/com/delivery/project/document/domain/dto/DeliveryOrderStatQuery.java index 365889b..a56fbd3 100644 --- a/src/main/java/com/delivery/project/document/domain/dto/DeliveryOrderStatQuery.java +++ b/src/main/java/com/delivery/project/document/domain/dto/DeliveryOrderStatQuery.java @@ -14,7 +14,7 @@ public class DeliveryOrderStatQuery { /** 开始日期(按配送日期过滤) */ @JsonFormat(pattern = "yyyy-MM-dd") - private Date beginDate; + private Date statDate; /** 结束日期(按配送日期过滤) */ @JsonFormat(pattern = "yyyy-MM-dd") diff --git a/src/main/java/com/delivery/project/document/mapper/DeliveryOrderMapper.java b/src/main/java/com/delivery/project/document/mapper/DeliveryOrderMapper.java index 4d39278..54e7a27 100644 --- a/src/main/java/com/delivery/project/document/mapper/DeliveryOrderMapper.java +++ b/src/main/java/com/delivery/project/document/mapper/DeliveryOrderMapper.java @@ -108,6 +108,9 @@ public interface DeliveryOrderMapper /** 按日期(日维度)统计 */ List selectDailyStat(@Param("q") DeliveryOrderStatQuery query); + /** 按日期(月维度)统计 */ + List selectMonthlyStat(@Param("q") DeliveryOrderStatQuery query); + /** 配送单VO列表 */ List selectDeliveryOrderVoList(DeliveryOrder deliveryOrder); } diff --git a/src/main/java/com/delivery/project/document/service/IDeliveryOrderService.java b/src/main/java/com/delivery/project/document/service/IDeliveryOrderService.java index e1c14e7..6b42063 100644 --- a/src/main/java/com/delivery/project/document/service/IDeliveryOrderService.java +++ b/src/main/java/com/delivery/project/document/service/IDeliveryOrderService.java @@ -54,6 +54,9 @@ public interface IDeliveryOrderService { /** 按日期(日维度)统计 */ List statByDaily(DeliveryOrderStatQuery query); + /** 按日期(月维度)统计 */ + List statByMonthly(DeliveryOrderStatQuery query); + /** 配送单VO列表 */ List selectDeliveryOrderVoList(DeliveryOrder deliveryOrder); } diff --git a/src/main/java/com/delivery/project/document/service/impl/DeliveryOrderServiceImpl.java b/src/main/java/com/delivery/project/document/service/impl/DeliveryOrderServiceImpl.java index f640156..7d4a4db 100644 --- a/src/main/java/com/delivery/project/document/service/impl/DeliveryOrderServiceImpl.java +++ b/src/main/java/com/delivery/project/document/service/impl/DeliveryOrderServiceImpl.java @@ -190,20 +190,19 @@ public class DeliveryOrderServiceImpl implements IDeliveryOrderService throw new ServiceException("物料明细不能为空"); } - // 取第一条,仍然要求同一出库单据号(暂不支持多出库单合并) + // 取第一条 billNoCk,判断是“手动创建”还是“出库单生成” String billNoCk = dto.getItems().get(0).getBillNoCk(); - if (StringUtils.isBlank(billNoCk)) { - throw new ServiceException("明细行缺少出库单据号 billNoCk"); - } + boolean fromWms = StringUtils.isNotBlank(billNoCk); // true = 出库单生成;false = 手动创建 - // 收集 rk_info 主键 id(用于回写 WMS) + // 收集 rk_info 主键 id(仅用于出库单生成场景回写 WMS) List rkInfoIds = dto.getItems().stream() .map(DeliveryOrderLineDTO::getRkInfoId) .filter(Objects::nonNull) .distinct() .collect(Collectors.toList()); - if (rkInfoIds.isEmpty()) { + // 出库单生成场景必须有 rkInfoId + if (fromWms && rkInfoIds.isEmpty()) { throw new ServiceException("明细行缺少 rk_info 主键 id,无法回写配送状态"); } @@ -237,13 +236,16 @@ public class DeliveryOrderServiceImpl implements IDeliveryOrderService for (DeliveryOrderLineDTO it : dto.getItems()) { - // 仍然限制同一出库单(你后续要支持多出库单再放开) - if (!billNoCk.equals(it.getBillNoCk())) { - throw new ServiceException("当前接口暂不支持多张出库单合并配送,请确保所有明细 billNoCk 相同"); - } + // ===== 出库单生成场景下的两个判断(手动创建时跳过) ===== + if (fromWms) { + // 限制同一出库单 + if (!billNoCk.equals(it.getBillNoCk())) { + throw new ServiceException("当前接口暂不支持多张出库单合并配送,请确保所有明细 billNoCk 相同"); + } - if (it.getRkInfoId() == null) { - throw new ServiceException("明细行缺少 rk_info 主键 id"); + if (it.getRkInfoId() == null) { + throw new ServiceException("明细行缺少 rk_info 主键 id"); + } } DeliveryOrder row = new DeliveryOrder(); @@ -284,7 +286,7 @@ public class DeliveryOrderServiceImpl implements IDeliveryOrderService row.setRemark(dto.getRemark()); // 2.2 明细字段 - row.setRkInfoId(it.getRkInfoId()); // 关联 rk_info 主键ID + row.setRkInfoId(it.getRkInfoId()); // 关联 rk_info 主键ID(手动单可以为空) row.setBillNoCk(it.getBillNoCk()); row.setXmMs(it.getXmMs()); row.setXmNo(it.getXmNo()); @@ -309,12 +311,14 @@ public class DeliveryOrderServiceImpl implements IDeliveryOrderService deliveryOrderMapper.batchInsert(rows); } - // ========== 4. 回写 WMS:按 rk_info.id 更新 is_delivery = 2(配送中) ========== + // ========== 4. 回写 WMS(仅出库单生成场景,手动创建不回写、不远程调用) ========== - boolean ok = updateWmsIsDeliveryByIds(rkInfoIds, 2); - if (!ok) { - // 回写失败,整单回滚,避免脏数据 - throw new ServiceException("已生成配送单,但回写 WMS 配送状态失败"); + if (fromWms) { + boolean ok = updateWmsIsDeliveryByIds(rkInfoIds, 2); + if (!ok) { + // 回写失败,整单回滚,避免脏数据 + throw new ServiceException("已生成配送单,但回写 WMS 配送状态失败"); + } } return orderNo; @@ -495,4 +499,9 @@ public class DeliveryOrderServiceImpl implements IDeliveryOrderService return deliveryOrderMapper.selectDailyStat(query); } + @Override + public List statByMonthly(DeliveryOrderStatQuery query) { + return deliveryOrderMapper.selectMonthlyStat(query); + } + } diff --git a/src/main/resources/mybatis/document/DeliveryOrderMapper.xml b/src/main/resources/mybatis/document/DeliveryOrderMapper.xml index 7720702..ac4b952 100644 --- a/src/main/resources/mybatis/document/DeliveryOrderMapper.xml +++ b/src/main/resources/mybatis/document/DeliveryOrderMapper.xml @@ -874,8 +874,8 @@ (dor.is_delete = '0' OR dor.is_delete = 0 OR dor.is_delete IS NULL) - - AND DATE(dor.delivery_date) =]]> DATE(#{q.beginDate}) + + AND DATE(dor.delivery_date) =]]> DATE(#{q.statDate}) AND DATE(dor.delivery_date) DATE(#{q.endDate}) @@ -989,4 +989,21 @@ GROUP BY DATE(dor.delivery_date) ORDER BY statDate ASC + + +