Commit 8b94433f6334229e984f36b194eb7ed78082bba1

Authored by YunaiV
1 parent 34f879e0

✨ feat(mes): 新增外协发料单编码和数据校验逻辑

新增外协发料单编码常量,更新相关服务以支持外协发料单的创建和校验逻辑。优化了发料单的创建、更新和取消流程,确保数据的完整性和有效性。
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 */