Commit 19c82843d4dbaa1e5bb9972a16fe13e14a136780

Authored by YunaiV
1 parent 79ca5751

✨ feat(mes): 更新外协入库单状态枚举及相关逻辑

调整外协入库单状态枚举的描述,增加对应方法的注释以提高代码可读性。同时,修改提交逻辑以根据质检状态动态路由到待检验或待上架状态,优化了入库单的处理流程。
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmOutsourceReceiptStatusEnum.java
1 1 package cn.iocoder.yudao.module.mes.enums.wm;
2 2  
3 3 import cn.iocoder.yudao.framework.common.core.ArrayValuable;
  4 +import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.MesWmOutsourceReceiptSaveReqVO;
4 5 import cn.iocoder.yudao.module.mes.enums.MesOrderStatusConstants;
  6 +import cn.iocoder.yudao.module.mes.service.wm.outsourcereceipt.MesWmOutsourceReceiptService;
5 7 import lombok.AllArgsConstructor;
6 8 import lombok.Getter;
7 9  
8 10 import java.util.Arrays;
9 11  
10 12 /**
11   - * MES 委外收货单状态枚举
  13 + * MES 外协入库单状态枚举
  14 + *
  15 + * 对应字典 mes_wm_outsource_receipt_status
12 16 *
13 17 * @author 芋道源码
14 18 */
... ... @@ -16,25 +20,40 @@ import java.util.Arrays;
16 20 @AllArgsConstructor
17 21 public enum MesWmOutsourceReceiptStatusEnum implements ArrayValuable<Integer> {
18 22  
19   - // TODO @AI:需要 @对应的状态;参考 /Users/yunai/Java/yudao-all-in-one/ruoyi-vue-pro/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmMiscIssueStatusEnum.java 里的逻辑;
20 23 /**
21   - * 准备中
  24 + * 草稿
  25 + *
  26 + * 对应方法:{@link MesWmOutsourceReceiptService#createOutsourceReceipt(MesWmOutsourceReceiptSaveReqVO)}
  27 + */
  28 + PREPARE(MesOrderStatusConstants.PREPARE, "草稿"),
  29 + /**
  30 + * 待检验(已确认,等待质检)
  31 + *
  32 + * 对应方法:{@link MesWmOutsourceReceiptService#submitOutsourceReceipt(Long)}
22 33 */
23   - PREPARE(MesOrderStatusConstants.PREPARE, "准备中"),
  34 + CONFIRMED(MesOrderStatusConstants.CONFIRMED, "待检验"),
24 35 /**
25   - * 审批中
  36 + * 待上架(检验完成,等待仓库上架)
  37 + *
  38 + * 对应方法:{@link MesWmOutsourceReceiptService#submitOutsourceReceipt(Long)}
26 39 */
27   - APPROVING(MesOrderStatusConstants.APPROVING, "审批中"),
  40 + APPROVING(MesOrderStatusConstants.APPROVING, "待上架"),
28 41 /**
29   - * 已审批
  42 + * 待执行入库(上架完成,等待执行入库操作)
  43 + *
  44 + * 对应方法:{@link MesWmOutsourceReceiptService#stockOutsourceReceipt(Long)}
30 45 */
31   - APPROVED(MesOrderStatusConstants.APPROVED, "已审批"),
  46 + APPROVED(MesOrderStatusConstants.APPROVED, "待执行入库"),
32 47 /**
33   - * 已完成
  48 + * 已完成(入库执行完成,库存已更新)
  49 + *
  50 + * 对应方法:{@link MesWmOutsourceReceiptService#finishOutsourceReceipt(Long)}
34 51 */
35 52 FINISHED(MesOrderStatusConstants.FINISHED, "已完成"),
36 53 /**
37 54 * 已取消
  55 + *
  56 + * 对应方法:{@link MesWmOutsourceReceiptService#cancelOutsourceReceipt(Long)}
38 57 */
39 58 CANCELED(MesOrderStatusConstants.CANCELLED, "已取消");
40 59  
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptServiceImpl.java
... ... @@ -14,12 +14,11 @@ import cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourcereceipt.MesWmOutsourceR
14 14 import cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourcereceipt.MesWmOutsourceReceiptLineMapper;
15 15 import cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourcereceipt.MesWmOutsourceReceiptMapper;
16 16 import cn.iocoder.yudao.module.mes.enums.wm.MesWmOutsourceReceiptStatusEnum;
  17 +import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum;
17 18 import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
18 19 import cn.iocoder.yudao.module.mes.service.md.vendor.MesMdVendorService;
19 20 import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService;
20 21 import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
21   -import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService;
22   -import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService;
23 22 import jakarta.annotation.Resource;
24 23 import org.springframework.stereotype.Service;
25 24 import org.springframework.transaction.annotation.Transactional;
... ... @@ -56,12 +55,6 @@ public class MesWmOutsourceReceiptServiceImpl implements MesWmOutsourceReceiptSe
56 55 private MesMdItemService itemService;
57 56  
58 57 @Resource
59   - private MesWmWarehouseService warehouseService;
60   -
61   - @Resource
62   - private MesWmWarehouseLocationService warehouseLocationService;
63   -
64   - @Resource
65 58 private MesWmWarehouseAreaService warehouseAreaService;
66 59  
67 60 @Override
... ... @@ -125,14 +118,15 @@ public class MesWmOutsourceReceiptServiceImpl implements MesWmOutsourceReceiptSe
125 118 if (CollUtil.isEmpty(lines)) {
126 119 throw exception(WM_OUTSOURCE_RECEIPT_NO_LINE);
127 120 }
128   - // 校验物料存在
129   - for (MesWmOutsourceReceiptLineDO line : lines) {
130   - itemService.validateItemExists(line.getItemId());
131   - }
132 121  
133   - // 提交(草稿 → 审批中)
  122 + // 检查是否有待检验的行
  123 + boolean hasPendingQc = CollUtil.contains(lines,
  124 + line -> MesWmQualityStatusEnum.PENDING.getStatus().equals(line.getQualityStatus()));
  125 + // 根据质检状态,路由到待检验或待上架
  126 + Integer targetStatus = hasPendingQc ? MesWmOutsourceReceiptStatusEnum.CONFIRMED.getStatus()
  127 + : MesWmOutsourceReceiptStatusEnum.APPROVING.getStatus();
134 128 outsourceReceiptMapper.updateById(new MesWmOutsourceReceiptDO()
135   - .setId(id).setStatus(MesWmOutsourceReceiptStatusEnum.APPROVING.getStatus()));
  129 + .setId(id).setStatus(targetStatus));
136 130 }
137 131  
138 132 @Override
... ...