Commit 90a3c2a0659472b25664ea6f31425722afec73cc

Authored by YunaiV
1 parent 93ded9f0

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

新增流转卡草稿状态校验,确保只有在草稿状态下才能修改或删除流转卡。更新相关服务和方法以支持此功能,提升系统的健壮性和数据一致性。
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
... ... @@ -305,6 +305,7 @@ public interface ErrorCodeConstants {
305 305 ErrorCode PRO_CARD_CODE_DUPLICATE = new ErrorCode(1_040_507_001, "流转卡编码已存在");
306 306 ErrorCode PRO_CARD_STATUS_ERROR = new ErrorCode(1_040_507_002, "流转卡状态不正确");
307 307 ErrorCode PRO_CARD_CANCEL_NOT_ALLOWED = new ErrorCode(1_040_507_003, "已完成或已取消的流转卡不允许取消");
  308 + ErrorCode PRO_CARD_NOT_PREPARE = new ErrorCode(1_040_507_004, "流转卡不是草稿状态,不允许修改或删除");
308 309 // ========== MES 生产管理-流转卡工序(1-040-507-100) ==========
309 310 ErrorCode PRO_CARD_PROCESS_NOT_EXISTS = new ErrorCode(1_040_507_100, "流转卡工序记录不存在");
310 311  
... ...
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 {
35 35  
36 36 @Override
37 37 public Long createCardProcess(MesProCardProcessSaveReqVO createReqVO) {
38   - // 1. 校验关联数据
  38 + // 1. 校验关联数据(含流转卡草稿状态校验)
39 39 validateCardProcessSaveData(createReqVO);
40 40  
41 41 // 2. 插入
... ... @@ -48,7 +48,7 @@ public class MesProCardProcessServiceImpl implements MesProCardProcessService {
48 48 public void updateCardProcess(MesProCardProcessSaveReqVO updateReqVO) {
49 49 // 1.1 校验存在
50 50 validateCardProcessExists(updateReqVO.getId());
51   - // 1.2 校验关联数据
  51 + // 1.2 校验关联数据(含流转卡草稿状态校验)
52 52 validateCardProcessSaveData(updateReqVO);
53 53  
54 54 // 2. 更新
... ... @@ -59,9 +59,14 @@ public class MesProCardProcessServiceImpl implements MesProCardProcessService {
59 59 @Override
60 60 public void deleteCardProcess(Long id) {
61 61 // 1. 校验存在
62   - validateCardProcessExists(id);
  62 + MesProCardProcessDO cardProcess = cardProcessMapper.selectById(id);
  63 + if (cardProcess == null) {
  64 + throw exception(PRO_CARD_PROCESS_NOT_EXISTS);
  65 + }
  66 + // 2. 校验流转卡为草稿状态
  67 + cardService.validateCardExistsAndPrepare(cardProcess.getCardId());
63 68  
64   - // 2. 删除
  69 + // 3. 删除
65 70 cardProcessMapper.deleteById(id);
66 71 }
67 72  
... ... @@ -84,8 +89,8 @@ public class MesProCardProcessServiceImpl implements MesProCardProcessService {
84 89 }
85 90  
86 91 private void validateCardProcessSaveData(MesProCardProcessSaveReqVO reqVO) {
87   - // 校验流转卡存在
88   - cardService.validateCardExists(reqVO.getCardId());
  92 + // 校验流转卡存在 + 草稿状态
  93 + cardService.validateCardExistsAndPrepare(reqVO.getCardId());
89 94 // 校验工序存在
90 95 if (reqVO.getProcessId() != null) {
91 96 processService.validateProcessExistsAndEnable(reqVO.getProcessId());
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/card/MesProCardService.java
... ... @@ -43,6 +43,13 @@ public interface MesProCardService {
43 43 void validateCardExists(Long id);
44 44  
45 45 /**
  46 + * 校验生产流转卡存在,且为草稿状态
  47 + *
  48 + * @param id 编号
  49 + */
  50 + void validateCardExistsAndPrepare(Long id);
  51 +
  52 + /**
46 53 * 获得生产流转卡
47 54 *
48 55 * @param id 编号
... ...
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 {
63 63  
64 64 @Override
65 65 public void updateCard(MesProCardSaveReqVO updateReqVO) {
66   - // 1.1 校验存在
67   - validateCardExists(updateReqVO.getId());
  66 + // 1.1 校验存在 + 草稿状态
  67 + validateCardExistsAndPrepare(updateReqVO.getId());
68 68 // 1.2 校验关联数据
69 69 validateCardSaveData(updateReqVO);
70 70  
... ... @@ -76,8 +76,8 @@ public class MesProCardServiceImpl implements MesProCardService {
76 76 @Override
77 77 @Transactional(rollbackFor = Exception.class)
78 78 public void deleteCard(Long id) {
79   - // 1. 校验存在
80   - validateCardExists(id);
  79 + // 1. 校验存在 + 草稿状态
  80 + validateCardExistsAndPrepare(id);
81 81  
82 82 // 2. 删除流转卡 + 级联删除工序记录
83 83 cardMapper.deleteById(id);
... ... @@ -137,6 +137,14 @@ public class MesProCardServiceImpl implements MesProCardService {
137 137 validateCardExistsInternal(id);
138 138 }
139 139  
  140 + @Override
  141 + public void validateCardExistsAndPrepare(Long id) {
  142 + MesProCardDO card = validateCardExistsInternal(id);
  143 + if (ObjUtil.notEqual(MesProWorkOrderStatusEnum.PREPARE.getStatus(), card.getStatus())) {
  144 + throw exception(PRO_CARD_NOT_PREPARE);
  145 + }
  146 + }
  147 +
140 148 private MesProCardDO validateCardExistsInternal(Long id) {
141 149 MesProCardDO card = cardMapper.selectById(id);
142 150 if (card == null) {
... ...