diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscissue/vo/MesWmMiscIssuePageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscissue/vo/MesWmMiscIssuePageReqVO.java index 5c5eb4e..eb56ae1 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscissue/vo/MesWmMiscIssuePageReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscissue/vo/MesWmMiscIssuePageReqVO.java @@ -24,6 +24,12 @@ public class MesWmMiscIssuePageReqVO extends PageParam { @Schema(description = "杂项类型", example = "1") private Integer type; + @Schema(description = "来源单据编号", example = "DOC20260302001") + private String sourceDocCode; + + @Schema(description = "来源单据类型", example = "PURCHASE_ORDER") + private String sourceDocType; + @Schema(description = "状态", example = "0") private Integer status; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscissue/vo/line/MesWmMiscIssueLineRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscissue/vo/line/MesWmMiscIssueLineRespVO.java index f51e9ee..119733f 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscissue/vo/line/MesWmMiscIssueLineRespVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscissue/vo/line/MesWmMiscIssueLineRespVO.java @@ -43,6 +43,9 @@ public class MesWmMiscIssueLineRespVO { @Schema(description = "批次编号", example = "1") private Long batchId; + @Schema(description = "批次号", example = "BATCH20260301") + private String batchCode; + @Schema(description = "仓库编号", example = "1") private Long warehouseId; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscissue/vo/line/MesWmMiscIssueLineSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscissue/vo/line/MesWmMiscIssueLineSaveReqVO.java index 7d52914..2c5d6f6 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscissue/vo/line/MesWmMiscIssueLineSaveReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscissue/vo/line/MesWmMiscIssueLineSaveReqVO.java @@ -36,6 +36,9 @@ public class MesWmMiscIssueLineSaveReqVO { @Schema(description = "批次编号", example = "1") private Long batchId; + @Schema(description = "批次号", example = "BATCH20260301") + private String batchCode; + @Schema(description = "仓库编号", example = "1") private Long warehouseId; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/miscissue/MesWmMiscIssueLineDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/miscissue/MesWmMiscIssueLineDO.java index 5e0b984..9a05b50 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/miscissue/MesWmMiscIssueLineDO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/miscissue/MesWmMiscIssueLineDO.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.wm.miscissue; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; @@ -56,9 +57,17 @@ public class MesWmMiscIssueLineDO extends BaseDO { private BigDecimal quantity; /** * 批次编号 + * + * 关联 {@link MesWmBatchDO#getId()} */ private Long batchId; /** + * 批次号 + * + * 挂你兰 {@link MesWmBatchDO#getCode()} + */ + private String batchCode; + /** * 仓库编号 * * 关联 {@link MesWmWarehouseDO#getId()} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/miscissue/MesWmMiscIssueMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/miscissue/MesWmMiscIssueMapper.java index 6715657..f5b4440 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/miscissue/MesWmMiscIssueMapper.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/miscissue/MesWmMiscIssueMapper.java @@ -20,6 +20,8 @@ public interface MesWmMiscIssueMapper extends BaseMapperX { .likeIfPresent(MesWmMiscIssueDO::getCode, reqVO.getCode()) .likeIfPresent(MesWmMiscIssueDO::getName, reqVO.getName()) .eqIfPresent(MesWmMiscIssueDO::getType, reqVO.getType()) + .likeIfPresent(MesWmMiscIssueDO::getSourceDocCode, reqVO.getSourceDocCode()) + .eqIfPresent(MesWmMiscIssueDO::getSourceDocType, reqVO.getSourceDocType()) .eqIfPresent(MesWmMiscIssueDO::getStatus, reqVO.getStatus()) .betweenIfPresent(MesWmMiscIssueDO::getIssueDate, reqVO.getIssueDate()) .orderByDesc(MesWmMiscIssueDO::getId)); diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscissue/MesWmMiscIssueLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscissue/MesWmMiscIssueLineServiceImpl.java index cd01cab..80ac949 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscissue/MesWmMiscIssueLineServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscissue/MesWmMiscIssueLineServiceImpl.java @@ -46,6 +46,7 @@ public class MesWmMiscIssueLineServiceImpl implements MesWmMiscIssueLineService @Override @Transactional(rollbackFor = Exception.class) public Long createMiscIssueLine(MesWmMiscIssueLineSaveReqVO createReqVO) { + // TODO @AI:增加 validateXXXSaveData // 1.1 校验父单据存在且为可编辑状态 miscIssueService.validateMiscIssueEditable(createReqVO.getIssueId()); // 1.2 校验物料存在 @@ -69,6 +70,7 @@ public class MesWmMiscIssueLineServiceImpl implements MesWmMiscIssueLineService public void updateMiscIssueLine(MesWmMiscIssueLineSaveReqVO updateReqVO) { // 1.1 校验存在 MesWmMiscIssueLineDO line = validateAndGetMiscIssueLine(updateReqVO.getId()); + // TODO @AI:增加 validateXXXSaveData // 1.2 校验父单据存在且为可编辑状态 miscIssueService.validateMiscIssueEditable(line.getIssueId()); // 1.3 校验物料存在 @@ -89,7 +91,9 @@ public class MesWmMiscIssueLineServiceImpl implements MesWmMiscIssueLineService @Transactional(rollbackFor = Exception.class) public void deleteMiscIssueLine(Long id) { // 校验存在 - validateAndGetMiscIssueLine(id); + MesWmMiscIssueLineDO line = validateAndGetMiscIssueLine(id); + // 校验父单据存在且为可编辑状态 + miscIssueService.validateMiscIssueEditable(line.getIssueId()); // 删除行 miscIssueLineMapper.deleteById(id); diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscissue/MesWmMiscIssueServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscissue/MesWmMiscIssueServiceImpl.java index da0feef..749731b 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscissue/MesWmMiscIssueServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscissue/MesWmMiscIssueServiceImpl.java @@ -108,11 +108,16 @@ public class MesWmMiscIssueServiceImpl implements MesWmMiscIssueService { @Override @Transactional(rollbackFor = Exception.class) public void finishMiscIssue(Long id) { - // 校验存在 + // 1.1 校验存在 MesWmMiscIssueDO issue = validateMiscIssueExists(id); if (ObjUtil.notEqual(MesWmMiscIssueStatusEnum.APPROVED.getStatus(), issue.getStatus())) { throw exception(WM_MISC_ISSUE_STATUS_INVALID); } + // 1.2 校验至少有一条行 + List lines = miscIssueLineService.getMiscIssueLineListByIssueId(id); + if (CollUtil.isEmpty(lines)) { + throw exception(WM_MISC_ISSUE_NO_LINE); + } // 2. 遍历所有行,创建库存事务(扣减库存 + 记录流水) createTransactionList(issue); diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeLineServiceImpl.java index ca85752..3d4eccf 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeLineServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeLineServiceImpl.java @@ -10,6 +10,7 @@ import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.salesnotice.MesWmSalesNoticeDO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.salesnotice.MesWmSalesNoticeLineDO; import cn.iocoder.yudao.module.mes.dal.mysql.wm.salesnotice.MesWmSalesNoticeLineMapper; +import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService; import jakarta.annotation.Resource; import org.springframework.context.annotation.Lazy; @@ -39,10 +40,16 @@ public class MesWmSalesNoticeLineServiceImpl implements MesWmSalesNoticeLineServ @Resource private MesWmBatchService batchService; + @Resource + private MesMdItemService itemService; + @Override public Long createSalesNoticeLine(MesWmSalesNoticeLineSaveReqVO createReqVO) { + // TODO @AI:增加 validateXXXSaveData 方法 // 校验父单据存在且为草稿状态 validateNoticeStatusDraft(createReqVO.getNoticeId()); + // 校验物料存在 + itemService.validateItemExists(createReqVO.getItemId()); // 插入 MesWmSalesNoticeLineDO line = BeanUtils.toBean(createReqVO, MesWmSalesNoticeLineDO.class); @@ -55,8 +62,13 @@ public class MesWmSalesNoticeLineServiceImpl implements MesWmSalesNoticeLineServ public void updateSalesNoticeLine(MesWmSalesNoticeLineSaveReqVO updateReqVO) { // 校验存在 MesWmSalesNoticeLineDO line = validateSalesNoticeLineExists(updateReqVO.getId()); + // TODO @AI:增加 validateXXXSaveData 方法 // 校验父单据存在且为草稿状态 validateNoticeStatusDraft(line.getNoticeId()); + // 校验物料存在 + if (updateReqVO.getItemId() != null) { + itemService.validateItemExists(updateReqVO.getItemId()); + } // 更新 MesWmSalesNoticeLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmSalesNoticeLineDO.class);