Просмотр исходного кода

✨ feat(MES): 添加流转卡草稿状态校验功能

新增流转卡草稿状态校验,确保只有在草稿状态下才能修改或删除流转卡。更新相关服务和方法以支持此功能,提升系统的健壮性和数据一致性。
YunaiV месяцев назад: 3
Родитель
Сommit
90a3c2a065

+ 1 - 0
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java

@@ -305,6 +305,7 @@ public interface ErrorCodeConstants {
     ErrorCode PRO_CARD_CODE_DUPLICATE = new ErrorCode(1_040_507_001, "流转卡编码已存在");
     ErrorCode PRO_CARD_STATUS_ERROR = new ErrorCode(1_040_507_002, "流转卡状态不正确");
     ErrorCode PRO_CARD_CANCEL_NOT_ALLOWED = new ErrorCode(1_040_507_003, "已完成或已取消的流转卡不允许取消");
+    ErrorCode PRO_CARD_NOT_PREPARE = new ErrorCode(1_040_507_004, "流转卡不是草稿状态,不允许修改或删除");
     // ========== MES 生产管理-流转卡工序(1-040-507-100) ==========
     ErrorCode PRO_CARD_PROCESS_NOT_EXISTS = new ErrorCode(1_040_507_100, "流转卡工序记录不存在");
 

+ 11 - 6
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/card/MesProCardProcessServiceImpl.java

@@ -35,7 +35,7 @@ public class MesProCardProcessServiceImpl implements MesProCardProcessService {
 
     @Override
     public Long createCardProcess(MesProCardProcessSaveReqVO createReqVO) {
-        // 1. 校验关联数据
+        // 1. 校验关联数据(含流转卡草稿状态校验)
         validateCardProcessSaveData(createReqVO);
 
         // 2. 插入
@@ -48,7 +48,7 @@ public class MesProCardProcessServiceImpl implements MesProCardProcessService {
     public void updateCardProcess(MesProCardProcessSaveReqVO updateReqVO) {
         // 1.1 校验存在
         validateCardProcessExists(updateReqVO.getId());
-        // 1.2 校验关联数据
+        // 1.2 校验关联数据(含流转卡草稿状态校验)
         validateCardProcessSaveData(updateReqVO);
 
         // 2. 更新
@@ -59,9 +59,14 @@ public class MesProCardProcessServiceImpl implements MesProCardProcessService {
     @Override
     public void deleteCardProcess(Long id) {
         // 1. 校验存在
-        validateCardProcessExists(id);
+        MesProCardProcessDO cardProcess = cardProcessMapper.selectById(id);
+        if (cardProcess == null) {
+            throw exception(PRO_CARD_PROCESS_NOT_EXISTS);
+        }
+        // 2. 校验流转卡为草稿状态
+        cardService.validateCardExistsAndPrepare(cardProcess.getCardId());
 
-        // 2. 删除
+        // 3. 删除
         cardProcessMapper.deleteById(id);
     }
 
@@ -84,8 +89,8 @@ public class MesProCardProcessServiceImpl implements MesProCardProcessService {
     }
 
     private void validateCardProcessSaveData(MesProCardProcessSaveReqVO reqVO) {
-        // 校验流转卡存在
-        cardService.validateCardExists(reqVO.getCardId());
+        // 校验流转卡存在 + 草稿状态
+        cardService.validateCardExistsAndPrepare(reqVO.getCardId());
         // 校验工序存在
         if (reqVO.getProcessId() != null) {
             processService.validateProcessExistsAndEnable(reqVO.getProcessId());

+ 7 - 0
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/card/MesProCardService.java

@@ -42,6 +42,13 @@ public interface MesProCardService {
      */
     void validateCardExists(Long id);
 
+    /**
+     * 校验生产流转卡存在,且为草稿状态
+     *
+     * @param id 编号
+     */
+    void validateCardExistsAndPrepare(Long id);
+
     /**
      * 获得生产流转卡
      *

+ 12 - 4
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/card/MesProCardServiceImpl.java

@@ -63,8 +63,8 @@ public class MesProCardServiceImpl implements MesProCardService {
 
     @Override
     public void updateCard(MesProCardSaveReqVO updateReqVO) {
-        // 1.1 校验存在
-        validateCardExists(updateReqVO.getId());
+        // 1.1 校验存在 + 草稿状态
+        validateCardExistsAndPrepare(updateReqVO.getId());
         // 1.2 校验关联数据
         validateCardSaveData(updateReqVO);
 
@@ -76,8 +76,8 @@ public class MesProCardServiceImpl implements MesProCardService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void deleteCard(Long id) {
-        // 1. 校验存在
-        validateCardExists(id);
+        // 1. 校验存在 + 草稿状态
+        validateCardExistsAndPrepare(id);
 
         // 2. 删除流转卡 + 级联删除工序记录
         cardMapper.deleteById(id);
@@ -137,6 +137,14 @@ public class MesProCardServiceImpl implements MesProCardService {
         validateCardExistsInternal(id);
     }
 
+    @Override
+    public void validateCardExistsAndPrepare(Long id) {
+        MesProCardDO card = validateCardExistsInternal(id);
+        if (ObjUtil.notEqual(MesProWorkOrderStatusEnum.PREPARE.getStatus(), card.getStatus())) {
+            throw exception(PRO_CARD_NOT_PREPARE);
+        }
+    }
+
     private MesProCardDO validateCardExistsInternal(Long id) {
         MesProCardDO card = cardMapper.selectById(id);
         if (card == null) {