Commit 788d9c8286fa84a5ba932a11dc6f19b72b281418

Authored by YunaiV
1 parent f57da447

refactor(mes): 添加采购入库单模块待优化项标记

  - 标记字段设计待优化项(batchCode、warehouseId 等)
  - 标记业务逻辑待完善项(库存更新、校验逻辑等)
  - 调整代码格式
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/vo/line/MesWmItemReceiptLineSaveReqVO.java
... ... @@ -29,9 +29,11 @@ public class MesWmItemReceiptLineSaveReqVO {
29 29 @NotNull(message = "入库数量不能为空")
30 30 private BigDecimal receivedQuantity;
31 31  
  32 + // TODO @芋艿:【暂时不调整】这个换成 batchCode;无论是前端、后端;数据库还是 batchId;后续在调整;
32 33 @Schema(description = "批次编号", example = "1")
33 34 private Long batchId;
34 35  
  36 + // TODO @AI:是不是这里不用 warehouseId、locationId、areaId
35 37 @Schema(description = "仓库编号", example = "1")
36 38 private Long warehouseId;
37 39  
... ... @@ -50,9 +52,11 @@ public class MesWmItemReceiptLineSaveReqVO {
50 52 @Schema(description = "生产批号", example = "PB20260110")
51 53 private String productionBatchNumber;
52 54  
  55 + // TODO @AI:这个字段去掉;
53 56 @Schema(description = "是否需要来料检验", example = "true")
54 57 private Boolean iqcCheckFlag;
55 58  
  59 + // TODO @AI:这个字段去掉;不是这里保存出来的;你也思考下;
56 60 @Schema(description = "来料检验单编号", example = "1")
57 61 private Long iqcId;
58 62  
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/itemreceipt/MesWmItemReceiptDO.java
... ... @@ -65,6 +65,7 @@ public class MesWmItemReceiptDO extends BaseDO {
65 65 * 关联 {@link MesMdVendorDO#getId()}
66 66 */
67 67 private Long vendorId;
  68 + // TODO @AI:warehouseId、locationId、areaId 这几个字段,是不是不需要;只需要在 detaildo 里存储就好了;
68 69 /**
69 70 * 仓库编号
70 71 *
... ... @@ -97,6 +98,7 @@ public class MesWmItemReceiptDO extends BaseDO {
97 98 * 备注
98 99 */
99 100 private String remark;
  101 +
100 102 /**
101 103 * 预留字段1
102 104 */
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/itemreceipt/MesWmItemReceiptDetailDO.java
... ... @@ -80,6 +80,7 @@ public class MesWmItemReceiptDetailDO extends BaseDO {
80 80 * 备注
81 81 */
82 82 private String remark;
  83 +
83 84 /**
84 85 * 预留字段1
85 86 */
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/itemreceipt/MesWmItemReceiptLineDO.java
... ... @@ -38,6 +38,7 @@ public class MesWmItemReceiptLineDO extends BaseDO {
38 38 * 关联 {@link MesWmItemReceiptDO#getId()}
39 39 */
40 40 private Long receiptId;
  41 + // TODO @AI:字段要不完整点,更好维护;arrivalNoticeLineId;因为 noticeLineId 关联到 arrivalNoticeLineId;不然会有歧义;
41 42 /**
42 43 * 到货通知单行编号
43 44 *
... ... @@ -60,6 +61,7 @@ public class MesWmItemReceiptLineDO extends BaseDO {
60 61 * TODO DONE @芋艿:保留。待 mes_wm_batch 模块迁移后补充 @link 关联
61 62 */
62 63 private Long batchId;
  64 + // TODO @AI:warehouseId、locationId、areaId 这几个字段,是不是不需要;只需要在 detaildo 里存储就好了;
63 65 /**
64 66 * 仓库编号
65 67 *
... ... @@ -90,11 +92,13 @@ public class MesWmItemReceiptLineDO extends BaseDO {
90 92 * 生产批号
91 93 */
92 94 private String productionBatchNumber;
  95 + // TODO @AI:貌似不用 iqcCheckFlag 存储;因为 noticeLineId 可以关联到
93 96 /**
94 97 * 是否需要来料检验
95 98 */
96 99 private Boolean iqcCheckFlag;
97 100 // TODO DONE @AI:已添加关联注释。因 QC 模块 DO 类尚未迁移,暂用表名标识
  101 + // TODO @AI:可以添加了;
98 102 /**
99 103 * 来料检验单编号
100 104 *
... ... @@ -105,6 +109,7 @@ public class MesWmItemReceiptLineDO extends BaseDO {
105 109 * 备注
106 110 */
107 111 private String remark;
  112 +
108 113 /**
109 114 * 预留字段1
110 115 */
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmItemReceiptStatusEnum.java
... ... @@ -6,6 +6,7 @@ import lombok.Getter;
6 6  
7 7 import java.util.Arrays;
8 8  
  9 +// TODO @AI:应该使用 MesOrderStatusEnum 替代掉,只是使用其中的部分状态。需要在对应的 DO 说明下;当然,字典还是独立的!
9 10 /**
10 11 * MES 采购入库单状态枚举
11 12 *
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptDetailServiceImpl.java
... ... @@ -30,8 +30,12 @@ public class MesWmItemReceiptDetailServiceImpl implements MesWmItemReceiptDetail
30 30  
31 31 @Override
32 32 public Long createItemReceiptDetail(MesWmItemReceiptDetailSaveReqVO createReqVO) {
  33 + // TODO @AI:warehouseId、locationId、areaId 存在,并且是父子关系!最好在 areaService 中提供一个方法,校验这三个 ID 的关系!(并且存在)
33 34 // 校验父单据存在且为草稿状态
34 35 itemReceiptService.validateItemReceiptEditable(createReqVO.getReceiptId());
  36 + // TODO @AI:超过数量验证;
  37 +
  38 + // TODO @芋艿:【后续搞】不允许物资混放
35 39  
36 40 MesWmItemReceiptDetailDO detail = BeanUtils.toBean(createReqVO, MesWmItemReceiptDetailDO.class);
37 41 itemReceiptDetailMapper.insert(detail);
... ... @@ -40,10 +44,14 @@ public class MesWmItemReceiptDetailServiceImpl implements MesWmItemReceiptDetail
40 44  
41 45 @Override
42 46 public void updateItemReceiptDetail(MesWmItemReceiptDetailSaveReqVO updateReqVO) {
  47 + // TODO @AI:warehouseId、locationId、areaId 存在,并且是父子关系!最好在 areaService 中提供一个方法,校验这三个 ID 的关系!(并且存在)
43 48 // 校验存在
44 49 MesWmItemReceiptDetailDO detail = validateItemReceiptDetailExists(updateReqVO.getId());
45 50 // 校验父单据存在且为草稿状态
46 51 itemReceiptService.validateItemReceiptEditable(detail.getReceiptId());
  52 + // TODO @AI:超过数量验证;
  53 +
  54 + // TODO @芋艿:【后续搞】不允许物资混放
47 55  
48 56 // 更新
49 57 MesWmItemReceiptDetailDO updateObj = BeanUtils.toBean(updateReqVO, MesWmItemReceiptDetailDO.class);
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptLineServiceImpl.java
... ... @@ -41,10 +41,13 @@ public class MesWmItemReceiptLineServiceImpl implements MesWmItemReceiptLineServ
41 41 public Long createItemReceiptLine(MesWmItemReceiptLineSaveReqVO createReqVO) {
42 42 // 校验父单据存在且为草稿状态
43 43 validateReceiptStatusDraft(createReqVO.getReceiptId());
  44 + // TODO @AI:校验关联订单;
44 45  
45 46 // 新增
46 47 MesWmItemReceiptLineDO line = BeanUtils.toBean(createReqVO, MesWmItemReceiptLineDO.class);
47 48 itemReceiptLineMapper.insert(line);
  49 +
  50 + // TODO @芋艿:【暂时不处理】wmBatchService 需要生成下;基于 batchCode
48 51 return line.getId();
49 52 }
50 53  
... ... @@ -54,10 +57,13 @@ public class MesWmItemReceiptLineServiceImpl implements MesWmItemReceiptLineServ
54 57 MesWmItemReceiptLineDO line = validateItemReceiptLineExists(updateReqVO.getId());
55 58 // 校验父单据存在且为草稿状态
56 59 validateReceiptStatusDraft(line.getReceiptId());
  60 + // TODO @AI:校验关联订单;
57 61  
58 62 // 更新
59 63 MesWmItemReceiptLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmItemReceiptLineDO.class);
60 64 itemReceiptLineMapper.updateById(updateObj);
  65 +
  66 + // TODO @芋艿:【暂时不处理】wmBatchService 需要生成下;基于 batchCode
61 67 }
62 68  
63 69 @Override
... ... @@ -100,6 +106,7 @@ public class MesWmItemReceiptLineServiceImpl implements MesWmItemReceiptLineServ
100 106 return line;
101 107 }
102 108  
  109 + // TODO @AI:这个应该在 itemReceiptService 中;
103 110 /**
104 111 * 校验父采购入库单存在且为草稿状态
105 112 */
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java
... ... @@ -147,6 +147,7 @@ public class MesWmItemReceiptServiceImpl implements MesWmItemReceiptService {
147 147 }
148 148  
149 149 // 遍历所有明细,更新库存台账
  150 + // TODO @AI:这里可能有点问题;缺少库存更新;后面在弄;
150 151 List<MesWmItemReceiptDetailDO> details = itemReceiptDetailService.getItemReceiptDetailListByReceiptId(id);
151 152 for (MesWmItemReceiptDetailDO detail : details) {
152 153 materialStockService.increaseStock(
... ... @@ -157,6 +158,7 @@ public class MesWmItemReceiptServiceImpl implements MesWmItemReceiptService {
157 158 // 更新入库单状态
158 159 itemReceiptMapper.updateById(new MesWmItemReceiptDO()
159 160 .setId(id).setStatus(MesWmItemReceiptStatusEnum.FINISHED.getStatus()));
  161 +
160 162 // 更新关联的到货通知单状态
161 163 if (receipt.getNoticeId() != null) {
162 164 arrivalNoticeService.finishArrivalNotice(receipt.getNoticeId());
... ...