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