Browse Source

✨ feat(mes): 优化销售通知单创建和更新逻辑

重构销售通知单的创建和更新方法,统一数据校验逻辑,确保编码唯一性和客户存在性检查。此变更提升了代码的可维护性和一致性。
YunaiV 4 months ago
parent
commit
5eefbfe122

+ 13 - 8
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeServiceImpl.java

@@ -43,10 +43,8 @@ public class MesWmSalesNoticeServiceImpl implements MesWmSalesNoticeService {
 
     @Override
     public Long createSalesNotice(MesWmSalesNoticeSaveReqVO createReqVO) {
-        // 校验编码唯一
-        validateNoticeCodeUnique(null, createReqVO.getNoticeCode());
-        // DONE @AI:clientId 存在;
-        clientService.validateClientExists(createReqVO.getClientId());
+        // 校验数据
+        validateSalesNoticeSave(createReqVO);
 
         // 插入
         MesWmSalesNoticeDO notice = BeanUtils.toBean(createReqVO, MesWmSalesNoticeDO.class);
@@ -59,10 +57,8 @@ public class MesWmSalesNoticeServiceImpl implements MesWmSalesNoticeService {
     public void updateSalesNotice(MesWmSalesNoticeSaveReqVO updateReqVO) {
         // 校验存在 + 草稿状态
         validateSalesNoticeExistsAndDraft(updateReqVO.getId());
-        // 校验编码唯一
-        validateNoticeCodeUnique(updateReqVO.getId(), updateReqVO.getNoticeCode());
-        // 校验客户存在
-        clientService.validateClientExists(updateReqVO.getClientId());
+        // 校验数据
+        validateSalesNoticeSave(updateReqVO);
 
         // 更新
         MesWmSalesNoticeDO updateObj = BeanUtils.toBean(updateReqVO, MesWmSalesNoticeDO.class);
@@ -142,6 +138,15 @@ public class MesWmSalesNoticeServiceImpl implements MesWmSalesNoticeService {
         return notice;
     }
 
+    private void validateSalesNoticeSave(MesWmSalesNoticeSaveReqVO saveReqVO) {
+        // 校验编码唯一
+        validateNoticeCodeUnique(saveReqVO.getId(), saveReqVO.getNoticeCode());
+        // 校验客户存在
+        if (saveReqVO.getClientId() != null) {
+            clientService.validateClientExists(saveReqVO.getClientId());
+        }
+    }
+
     private void validateNoticeCodeUnique(Long id, String noticeCode) {
         MesWmSalesNoticeDO notice = salesNoticeMapper.selectByNoticeCode(noticeCode);
         if (notice == null) {