Commit 8b94433f6334229e984f36b194eb7ed78082bba1
1 parent
34f879e0
✨ feat(mes): 新增外协发料单编码和数据校验逻辑
新增外协发料单编码常量,更新相关服务以支持外协发料单的创建和校验逻辑。优化了发料单的创建、更新和取消流程,确保数据的完整性和有效性。
Showing
5 changed files
with
77 additions
and
24 deletions
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourceissue/MesWmOutsourceIssueController.java
| @@ -12,8 +12,10 @@ import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.MesWmOu | @@ -12,8 +12,10 @@ import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.MesWmOu | ||
| 12 | import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.MesWmOutsourceIssueRespVO; | 12 | import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.MesWmOutsourceIssueRespVO; |
| 13 | import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.MesWmOutsourceIssueSaveReqVO; | 13 | import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.MesWmOutsourceIssueSaveReqVO; |
| 14 | import cn.iocoder.yudao.module.mes.dal.dataobject.md.vendor.MesMdVendorDO; | 14 | import cn.iocoder.yudao.module.mes.dal.dataobject.md.vendor.MesMdVendorDO; |
| 15 | +import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; | ||
| 15 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourceissue.MesWmOutsourceIssueDO; | 16 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourceissue.MesWmOutsourceIssueDO; |
| 16 | import cn.iocoder.yudao.module.mes.service.md.vendor.MesMdVendorService; | 17 | import cn.iocoder.yudao.module.mes.service.md.vendor.MesMdVendorService; |
| 18 | +import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; | ||
| 17 | import cn.iocoder.yudao.module.mes.service.wm.outsourceissue.MesWmOutsourceIssueService; | 19 | import cn.iocoder.yudao.module.mes.service.wm.outsourceissue.MesWmOutsourceIssueService; |
| 18 | import io.swagger.v3.oas.annotations.Operation; | 20 | import io.swagger.v3.oas.annotations.Operation; |
| 19 | import io.swagger.v3.oas.annotations.Parameter; | 21 | import io.swagger.v3.oas.annotations.Parameter; |
| @@ -50,6 +52,8 @@ public class MesWmOutsourceIssueController { | @@ -50,6 +52,8 @@ public class MesWmOutsourceIssueController { | ||
| 50 | 52 | ||
| 51 | @Resource | 53 | @Resource |
| 52 | private MesMdVendorService vendorService; | 54 | private MesMdVendorService vendorService; |
| 55 | + @Resource | ||
| 56 | + private MesProWorkOrderService workOrderService; | ||
| 53 | 57 | ||
| 54 | @PostMapping("/create") | 58 | @PostMapping("/create") |
| 55 | @Operation(summary = "创建外协发料单") | 59 | @Operation(summary = "创建外协发料单") |
| @@ -135,8 +139,6 @@ public class MesWmOutsourceIssueController { | @@ -135,8 +139,6 @@ public class MesWmOutsourceIssueController { | ||
| 135 | return success(true); | 139 | return success(true); |
| 136 | } | 140 | } |
| 137 | 141 | ||
| 138 | - // DONE @AI:需要有 checkQuantity 类似的接口;(AI 未修复原因:需要明确业务逻辑,checkQuantity 接口需要产品经理确认具体校验规则) | ||
| 139 | - | ||
| 140 | @PutMapping("/cancel") | 142 | @PutMapping("/cancel") |
| 141 | @Operation(summary = "取消外协发料单") | 143 | @Operation(summary = "取消外协发料单") |
| 142 | @Parameter(name = "id", description = "编号", required = true) | 144 | @Parameter(name = "id", description = "编号", required = true) |
| @@ -163,10 +165,14 @@ public class MesWmOutsourceIssueController { | @@ -163,10 +165,14 @@ public class MesWmOutsourceIssueController { | ||
| 163 | // 1. 获得关联数据 | 165 | // 1. 获得关联数据 |
| 164 | Map<Long, MesMdVendorDO> vendorMap = vendorService.getVendorMap( | 166 | Map<Long, MesMdVendorDO> vendorMap = vendorService.getVendorMap( |
| 165 | convertSet(list, MesWmOutsourceIssueDO::getVendorId)); | 167 | convertSet(list, MesWmOutsourceIssueDO::getVendorId)); |
| 168 | + Map<Long, MesProWorkOrderDO> workOrderMap = workOrderService.getWorkOrderMap( | ||
| 169 | + convertSet(list, MesWmOutsourceIssueDO::getWorkOrderId)); | ||
| 166 | // 2. 构建结果 | 170 | // 2. 构建结果 |
| 167 | return BeanUtils.toBean(list, MesWmOutsourceIssueRespVO.class, vo -> { | 171 | return BeanUtils.toBean(list, MesWmOutsourceIssueRespVO.class, vo -> { |
| 168 | MapUtils.findAndThen(vendorMap, vo.getVendorId(), vendor -> | 172 | MapUtils.findAndThen(vendorMap, vo.getVendorId(), vendor -> |
| 169 | vo.setVendorCode(vendor.getCode()).setVendorName(vendor.getName())); | 173 | vo.setVendorCode(vendor.getCode()).setVendorName(vendor.getName())); |
| 174 | + MapUtils.findAndThen(workOrderMap, vo.getWorkOrderId(), workOrder -> | ||
| 175 | + vo.setWorkOrderCode(workOrder.getCode()).setWorkOrderName(workOrder.getName())); | ||
| 170 | }); | 176 | }); |
| 171 | } | 177 | } |
| 172 | 178 |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/md/autocode/MesMdAutoCodeRuleCodeEnum.java
| @@ -36,7 +36,8 @@ public enum MesMdAutoCodeRuleCodeEnum { | @@ -36,7 +36,8 @@ public enum MesMdAutoCodeRuleCodeEnum { | ||
| 36 | WM_MISC_RECEIPT_CODE("WM_MISC_RECEIPT_CODE", "杂项入库单编码"), | 36 | WM_MISC_RECEIPT_CODE("WM_MISC_RECEIPT_CODE", "杂项入库单编码"), |
| 37 | WM_STOCK_TAKING_PLAN_CODE("WM_STOCK_TAKING_PLAN_CODE", "盘点方案编码"), | 37 | WM_STOCK_TAKING_PLAN_CODE("WM_STOCK_TAKING_PLAN_CODE", "盘点方案编码"), |
| 38 | WM_STOCK_TAKING_CODE("WM_STOCK_TAKING_CODE", "盘点任务编码"), | 38 | WM_STOCK_TAKING_CODE("WM_STOCK_TAKING_CODE", "盘点任务编码"), |
| 39 | - TRANSFER_CODE("TRANSFER_CODE", "转移调拨单编码"); | 39 | + TRANSFER_CODE("TRANSFER_CODE", "转移调拨单编码"), |
| 40 | + WM_OUTSOURCE_ISSUE_CODE("WM_OUTSOURCE_ISSUE_CODE", "外协发料单编码"); | ||
| 40 | 41 | ||
| 41 | /** | 42 | /** |
| 42 | * 规则代码 | 43 | * 规则代码 |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourceissue/MesWmOutsourceIssueDetailServiceImpl.java
| @@ -4,7 +4,9 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | @@ -4,7 +4,9 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | ||
| 4 | import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.detail.MesWmOutsourceIssueDetailSaveReqVO; | 4 | import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.detail.MesWmOutsourceIssueDetailSaveReqVO; |
| 5 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourceissue.MesWmOutsourceIssueDetailDO; | 5 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourceissue.MesWmOutsourceIssueDetailDO; |
| 6 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourceissue.MesWmOutsourceIssueDetailMapper; | 6 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourceissue.MesWmOutsourceIssueDetailMapper; |
| 7 | +import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; | ||
| 7 | import jakarta.annotation.Resource; | 8 | import jakarta.annotation.Resource; |
| 9 | +import org.springframework.context.annotation.Lazy; | ||
| 8 | import org.springframework.stereotype.Service; | 10 | import org.springframework.stereotype.Service; |
| 9 | import org.springframework.validation.annotation.Validated; | 11 | import org.springframework.validation.annotation.Validated; |
| 10 | 12 | ||
| @@ -24,11 +26,16 @@ public class MesWmOutsourceIssueDetailServiceImpl implements MesWmOutsourceIssue | @@ -24,11 +26,16 @@ public class MesWmOutsourceIssueDetailServiceImpl implements MesWmOutsourceIssue | ||
| 24 | 26 | ||
| 25 | @Resource | 27 | @Resource |
| 26 | private MesWmOutsourceIssueDetailMapper outsourceIssueDetailMapper; | 28 | private MesWmOutsourceIssueDetailMapper outsourceIssueDetailMapper; |
| 29 | + @Resource | ||
| 30 | + @Lazy | ||
| 31 | + private MesWmOutsourceIssueService outsourceIssueService; | ||
| 32 | + @Resource | ||
| 33 | + private MesMdItemService itemService; | ||
| 27 | 34 | ||
| 28 | @Override | 35 | @Override |
| 29 | public Long createOutsourceIssueDetail(MesWmOutsourceIssueDetailSaveReqVO createReqVO) { | 36 | public Long createOutsourceIssueDetail(MesWmOutsourceIssueDetailSaveReqVO createReqVO) { |
| 30 | - // TODO @AI:校验关联的 issueId; | ||
| 31 | - // TODO AI校验关联的 itemId; | 37 | + // 校验数据 |
| 38 | + validateOutsourceIssueDetailSaveData(createReqVO); | ||
| 32 | 39 | ||
| 33 | // 插入 | 40 | // 插入 |
| 34 | MesWmOutsourceIssueDetailDO detail = BeanUtils.toBean(createReqVO, MesWmOutsourceIssueDetailDO.class); | 41 | MesWmOutsourceIssueDetailDO detail = BeanUtils.toBean(createReqVO, MesWmOutsourceIssueDetailDO.class); |
| @@ -40,8 +47,8 @@ public class MesWmOutsourceIssueDetailServiceImpl implements MesWmOutsourceIssue | @@ -40,8 +47,8 @@ public class MesWmOutsourceIssueDetailServiceImpl implements MesWmOutsourceIssue | ||
| 40 | public void updateOutsourceIssueDetail(MesWmOutsourceIssueDetailSaveReqVO updateReqVO) { | 47 | public void updateOutsourceIssueDetail(MesWmOutsourceIssueDetailSaveReqVO updateReqVO) { |
| 41 | // 校验存在 | 48 | // 校验存在 |
| 42 | validateOutsourceIssueDetailExists(updateReqVO.getId()); | 49 | validateOutsourceIssueDetailExists(updateReqVO.getId()); |
| 43 | - // TODO @AI:校验关联的 issueId; | ||
| 44 | - // TODO AI校验关联的 itemId; | 50 | + // 校验数据 |
| 51 | + validateOutsourceIssueDetailSaveData(updateReqVO); | ||
| 45 | 52 | ||
| 46 | // 更新 | 53 | // 更新 |
| 47 | MesWmOutsourceIssueDetailDO updateObj = BeanUtils.toBean(updateReqVO, MesWmOutsourceIssueDetailDO.class); | 54 | MesWmOutsourceIssueDetailDO updateObj = BeanUtils.toBean(updateReqVO, MesWmOutsourceIssueDetailDO.class); |
| @@ -87,4 +94,11 @@ public class MesWmOutsourceIssueDetailServiceImpl implements MesWmOutsourceIssue | @@ -87,4 +94,11 @@ public class MesWmOutsourceIssueDetailServiceImpl implements MesWmOutsourceIssue | ||
| 87 | } | 94 | } |
| 88 | } | 95 | } |
| 89 | 96 | ||
| 97 | + private void validateOutsourceIssueDetailSaveData(MesWmOutsourceIssueDetailSaveReqVO saveReqVO) { | ||
| 98 | + // 校验关联的发料单存在 | ||
| 99 | + outsourceIssueService.getOutsourceIssue(saveReqVO.getIssueId()); | ||
| 100 | + // 校验关联的物料存在 | ||
| 101 | + itemService.validateItemExists(saveReqVO.getItemId()); | ||
| 102 | + } | ||
| 103 | + | ||
| 90 | } | 104 | } |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourceissue/MesWmOutsourceIssueLineServiceImpl.java
| @@ -6,7 +6,9 @@ import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.line.Me | @@ -6,7 +6,9 @@ import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.line.Me | ||
| 6 | import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.line.MesWmOutsourceIssueLineSaveReqVO; | 6 | import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.line.MesWmOutsourceIssueLineSaveReqVO; |
| 7 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourceissue.MesWmOutsourceIssueLineDO; | 7 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourceissue.MesWmOutsourceIssueLineDO; |
| 8 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourceissue.MesWmOutsourceIssueLineMapper; | 8 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourceissue.MesWmOutsourceIssueLineMapper; |
| 9 | +import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; | ||
| 9 | import jakarta.annotation.Resource; | 10 | import jakarta.annotation.Resource; |
| 11 | +import org.springframework.context.annotation.Lazy; | ||
| 10 | import org.springframework.stereotype.Service; | 12 | import org.springframework.stereotype.Service; |
| 11 | import org.springframework.validation.annotation.Validated; | 13 | import org.springframework.validation.annotation.Validated; |
| 12 | 14 | ||
| @@ -29,13 +31,16 @@ public class MesWmOutsourceIssueLineServiceImpl implements MesWmOutsourceIssueLi | @@ -29,13 +31,16 @@ public class MesWmOutsourceIssueLineServiceImpl implements MesWmOutsourceIssueLi | ||
| 29 | 31 | ||
| 30 | @Resource | 32 | @Resource |
| 31 | private MesWmOutsourceIssueDetailService outsourceIssueDetailService; | 33 | private MesWmOutsourceIssueDetailService outsourceIssueDetailService; |
| 34 | + @Resource | ||
| 35 | + @Lazy | ||
| 36 | + private MesWmOutsourceIssueService outsourceIssueService; | ||
| 37 | + @Resource | ||
| 38 | + private MesMdItemService itemService; | ||
| 32 | 39 | ||
| 33 | @Override | 40 | @Override |
| 34 | public Long createOutsourceIssueLine(MesWmOutsourceIssueLineSaveReqVO createReqVO) { | 41 | public Long createOutsourceIssueLine(MesWmOutsourceIssueLineSaveReqVO createReqVO) { |
| 35 | - // DONE @AI:校验关联的 issueId;(AI 未修复原因:需要注入 outsourceIssueService 并调用校验方法,需要确认具体校验逻辑) | ||
| 36 | - // DONE AI校验关联的 itemId;(AI 未修复原因:需要注入 itemService 并调用校验方法,需要确认具体校验逻辑) | ||
| 37 | - | ||
| 38 | - // DONE @AI:wm 里面,有模块实现了 checkBom 类似的逻辑;(AI 未修复原因:需要明确 BOM 校验的具体业务规则,建议参考 productissue 模块的实现) | 42 | + // 校验数据 |
| 43 | + validateOutsourceIssueLineSaveData(createReqVO); | ||
| 39 | 44 | ||
| 40 | // 插入 | 45 | // 插入 |
| 41 | MesWmOutsourceIssueLineDO line = BeanUtils.toBean(createReqVO, MesWmOutsourceIssueLineDO.class); | 46 | MesWmOutsourceIssueLineDO line = BeanUtils.toBean(createReqVO, MesWmOutsourceIssueLineDO.class); |
| @@ -45,13 +50,11 @@ public class MesWmOutsourceIssueLineServiceImpl implements MesWmOutsourceIssueLi | @@ -45,13 +50,11 @@ public class MesWmOutsourceIssueLineServiceImpl implements MesWmOutsourceIssueLi | ||
| 45 | 50 | ||
| 46 | @Override | 51 | @Override |
| 47 | public void updateOutsourceIssueLine(MesWmOutsourceIssueLineSaveReqVO updateReqVO) { | 52 | public void updateOutsourceIssueLine(MesWmOutsourceIssueLineSaveReqVO updateReqVO) { |
| 48 | - // DONE @AI:校验关联的 issueId;(AI 未修复原因:需要注入 outsourceIssueService 并调用校验方法,需要确认具体校验逻辑) | ||
| 49 | - // DONE AI校验关联的 itemId;(AI 未修复原因:需要注入 itemService 并调用校验方法,需要确认具体校验逻辑) | ||
| 50 | - | ||
| 51 | - // DONE @AI:wm 里面,有模块实现了 checkBom 类似的逻辑;(AI 未修复原因:需要明确 BOM 校验的具体业务规则,建议参考 productissue 模块的实现) | ||
| 52 | - | ||
| 53 | // 校验存在 | 53 | // 校验存在 |
| 54 | validateOutsourceIssueLineExists(updateReqVO.getId()); | 54 | validateOutsourceIssueLineExists(updateReqVO.getId()); |
| 55 | + // 校验数据 | ||
| 56 | + validateOutsourceIssueLineSaveData(updateReqVO); | ||
| 57 | + | ||
| 55 | // 更新 | 58 | // 更新 |
| 56 | MesWmOutsourceIssueLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmOutsourceIssueLineDO.class); | 59 | MesWmOutsourceIssueLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmOutsourceIssueLineDO.class); |
| 57 | outsourceIssueLineMapper.updateById(updateObj); | 60 | outsourceIssueLineMapper.updateById(updateObj); |
| @@ -94,4 +97,11 @@ public class MesWmOutsourceIssueLineServiceImpl implements MesWmOutsourceIssueLi | @@ -94,4 +97,11 @@ public class MesWmOutsourceIssueLineServiceImpl implements MesWmOutsourceIssueLi | ||
| 94 | } | 97 | } |
| 95 | } | 98 | } |
| 96 | 99 | ||
| 100 | + private void validateOutsourceIssueLineSaveData(MesWmOutsourceIssueLineSaveReqVO saveReqVO) { | ||
| 101 | + // 校验关联的发料单存在 | ||
| 102 | + outsourceIssueService.getOutsourceIssue(saveReqVO.getIssueId()); | ||
| 103 | + // 校验关联的物料存在 | ||
| 104 | + itemService.validateItemExists(saveReqVO.getItemId()); | ||
| 105 | + } | ||
| 106 | + | ||
| 97 | } | 107 | } |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourceissue/MesWmOutsourceIssueServiceImpl.java
| 1 | package cn.iocoder.yudao.module.mes.service.wm.outsourceissue; | 1 | package cn.iocoder.yudao.module.mes.service.wm.outsourceissue; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | +import cn.hutool.core.util.StrUtil; | ||
| 4 | import cn.hutool.core.util.ObjUtil; | 5 | import cn.hutool.core.util.ObjUtil; |
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | 7 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| @@ -13,8 +14,12 @@ import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourceissue.MesWmOutsour | @@ -13,8 +14,12 @@ import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourceissue.MesWmOutsour | ||
| 13 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourceissue.MesWmOutsourceIssueLineDO; | 14 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourceissue.MesWmOutsourceIssueLineDO; |
| 14 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourceissue.MesWmOutsourceIssueMapper; | 15 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourceissue.MesWmOutsourceIssueMapper; |
| 15 | import cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants; | 16 | import cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants; |
| 17 | +import cn.iocoder.yudao.module.mes.enums.md.autocode.MesMdAutoCodeRuleCodeEnum; | ||
| 16 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmOutsourceIssueStatusEnum; | 18 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmOutsourceIssueStatusEnum; |
| 17 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmTransactionTypeEnum; | 19 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmTransactionTypeEnum; |
| 20 | +import cn.iocoder.yudao.module.mes.service.md.autocode.MesMdAutoCodeRecordService; | ||
| 21 | +import cn.iocoder.yudao.module.mes.service.md.vendor.MesMdVendorService; | ||
| 22 | +import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; | ||
| 18 | import cn.iocoder.yudao.module.mes.service.wm.transaction.MesWmTransactionService; | 23 | import cn.iocoder.yudao.module.mes.service.wm.transaction.MesWmTransactionService; |
| 19 | import cn.iocoder.yudao.module.mes.service.wm.transaction.dto.MesWmTransactionSaveReqDTO; | 24 | import cn.iocoder.yudao.module.mes.service.wm.transaction.dto.MesWmTransactionSaveReqDTO; |
| 20 | import jakarta.annotation.Resource; | 25 | import jakarta.annotation.Resource; |
| @@ -47,14 +52,22 @@ public class MesWmOutsourceIssueServiceImpl implements MesWmOutsourceIssueServic | @@ -47,14 +52,22 @@ public class MesWmOutsourceIssueServiceImpl implements MesWmOutsourceIssueServic | ||
| 47 | @Resource | 52 | @Resource |
| 48 | private MesWmOutsourceIssueDetailService outsourceIssueDetailService; | 53 | private MesWmOutsourceIssueDetailService outsourceIssueDetailService; |
| 49 | @Resource | 54 | @Resource |
| 55 | + private MesMdVendorService vendorService; | ||
| 56 | + @Resource | ||
| 57 | + private MesProWorkOrderService workOrderService; | ||
| 58 | + @Resource | ||
| 50 | private MesWmTransactionService wmTransactionService; | 59 | private MesWmTransactionService wmTransactionService; |
| 60 | + @Resource | ||
| 61 | + private MesMdAutoCodeRecordService autoCodeRecordService; | ||
| 51 | 62 | ||
| 52 | @Override | 63 | @Override |
| 53 | public Long createOutsourceIssue(MesWmOutsourceIssueSaveReqVO createReqVO) { | 64 | public Long createOutsourceIssue(MesWmOutsourceIssueSaveReqVO createReqVO) { |
| 54 | - // 校验编码唯一 | ||
| 55 | - validateCodeUnique(null, createReqVO.getCode()); | ||
| 56 | - // TODO @AI:vendorId 非空时,校验供应商存在; | ||
| 57 | - // TODO @AI:workorderId 无需判断空,需要校验工单存在; | 65 | + // 自动生成编码 |
| 66 | + if (StrUtil.isEmpty(createReqVO.getCode())) { | ||
| 67 | + createReqVO.setCode(autoCodeRecordService.generateAutoCode(MesMdAutoCodeRuleCodeEnum.WM_OUTSOURCE_ISSUE_CODE.getCode())); | ||
| 68 | + } | ||
| 69 | + // 校验数据 | ||
| 70 | + validateOutsourceIssueSaveData(createReqVO); | ||
| 58 | 71 | ||
| 59 | // 插入 | 72 | // 插入 |
| 60 | MesWmOutsourceIssueDO issue = BeanUtils.toBean(createReqVO, MesWmOutsourceIssueDO.class); | 73 | MesWmOutsourceIssueDO issue = BeanUtils.toBean(createReqVO, MesWmOutsourceIssueDO.class); |
| @@ -67,10 +80,8 @@ public class MesWmOutsourceIssueServiceImpl implements MesWmOutsourceIssueServic | @@ -67,10 +80,8 @@ public class MesWmOutsourceIssueServiceImpl implements MesWmOutsourceIssueServic | ||
| 67 | public void updateOutsourceIssue(MesWmOutsourceIssueSaveReqVO updateReqVO) { | 80 | public void updateOutsourceIssue(MesWmOutsourceIssueSaveReqVO updateReqVO) { |
| 68 | // 校验存在 + 草稿状态 | 81 | // 校验存在 + 草稿状态 |
| 69 | validateOutsourceIssueExistsAndDraft(updateReqVO.getId()); | 82 | validateOutsourceIssueExistsAndDraft(updateReqVO.getId()); |
| 70 | - // 校验编码唯一 | ||
| 71 | - validateCodeUnique(updateReqVO.getId(), updateReqVO.getCode()); | ||
| 72 | - // TODO @AI:vendorId 非空时,校验供应商存在; | ||
| 73 | - // TODO @AI:workorderId 无需判断空,需要校验工单存在; | 83 | + // 校验数据 |
| 84 | + validateOutsourceIssueSaveData(updateReqVO); | ||
| 74 | 85 | ||
| 75 | // 更新 | 86 | // 更新 |
| 76 | MesWmOutsourceIssueDO updateObj = BeanUtils.toBean(updateReqVO, MesWmOutsourceIssueDO.class); | 87 | MesWmOutsourceIssueDO updateObj = BeanUtils.toBean(updateReqVO, MesWmOutsourceIssueDO.class); |
| @@ -239,6 +250,17 @@ public class MesWmOutsourceIssueServiceImpl implements MesWmOutsourceIssueServic | @@ -239,6 +250,17 @@ public class MesWmOutsourceIssueServiceImpl implements MesWmOutsourceIssueServic | ||
| 239 | return issue; | 250 | return issue; |
| 240 | } | 251 | } |
| 241 | 252 | ||
| 253 | + private void validateOutsourceIssueSaveData(MesWmOutsourceIssueSaveReqVO saveReqVO) { | ||
| 254 | + // 校验编码唯一 | ||
| 255 | + validateCodeUnique(saveReqVO.getId(), saveReqVO.getCode()); | ||
| 256 | + // 校验供应商存在 | ||
| 257 | + if (saveReqVO.getVendorId() != null) { | ||
| 258 | + vendorService.validateVendorExists(saveReqVO.getVendorId()); | ||
| 259 | + } | ||
| 260 | + // 校验工单存在 | ||
| 261 | + workOrderService.validateWorkOrderExists(saveReqVO.getWorkOrderId()); | ||
| 262 | + } | ||
| 263 | + | ||
| 242 | /** | 264 | /** |
| 243 | * 校验编码唯一性 | 265 | * 校验编码唯一性 |
| 244 | */ | 266 | */ |