Commit da07eebbcca1376e37349142c829043d29651324

Authored by YunaiV
1 parent 5b61d1be

✨ feat(unit-measure): 新增计量单位引用检查功能

为计量单位添加引用检查,确保在删除计量单位时,能够验证是否被生产任务投料或质检方案指标项引用。新增相关方法以获取引用记录数量,提升数据一致性和安全性。
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/task/MesProTaskIssueMapper.java
... ... @@ -27,6 +27,10 @@ public interface MesProTaskIssueMapper extends BaseMapperX<MesProTaskIssueDO> {
27 27 .orderByDesc(MesProTaskIssueDO::getId));
28 28 }
29 29  
  30 + default Long selectCountByUnitMeasureId(Long unitMeasureId) {
  31 + return selectCount(MesProTaskIssueDO::getUnitMeasureId, unitMeasureId);
  32 + }
  33 +
30 34 default List<MesProTaskIssueDO> selectListByTaskId(Long taskId) {
31 35 return selectList(new LambdaQueryWrapperX<MesProTaskIssueDO>()
32 36 .eq(MesProTaskIssueDO::getTaskId, taskId)
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/qc/template/MesQcTemplateIndicatorMapper.java
... ... @@ -27,6 +27,10 @@ public interface MesQcTemplateIndicatorMapper extends BaseMapperX&lt;MesQcTemplateI
27 27 return selectList(MesQcTemplateIndicatorDO::getTemplateId, templateId);
28 28 }
29 29  
  30 + default Long selectCountByUnitMeasureId(Long unitMeasureId) {
  31 + return selectCount(MesQcTemplateIndicatorDO::getUnitMeasureId, unitMeasureId);
  32 + }
  33 +
30 34 default void deleteByTemplateId(Long templateId) {
31 35 delete(new LambdaQueryWrapperX<MesQcTemplateIndicatorDO>()
32 36 .eq(MesQcTemplateIndicatorDO::getTemplateId, templateId));
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/batch/MesWmBatchMapper.java
... ... @@ -24,6 +24,10 @@ public interface MesWmBatchMapper extends BaseMapperX&lt;MesWmBatchDO&gt; {
24 24 return selectOne(MesWmBatchDO:: getCode, code);
25 25 }
26 26  
  27 + default Long selectCountByToolId(Long toolId) {
  28 + return selectCount(MesWmBatchDO::getToolId, toolId);
  29 + }
  30 +
27 31 default PageResult<MesWmBatchDO> selectPage(MesWmBatchPageReqVO reqVO) {
28 32 return selectPage(reqVO, new LambdaQueryWrapperX<MesWmBatchDO>()
29 33 .likeIfPresent(MesWmBatchDO::getCode, reqVO.getCode())
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
... ... @@ -25,6 +25,8 @@ public interface ErrorCodeConstants {
25 25 ErrorCode MD_UNIT_MEASURE_CODE_DUPLICATE = new ErrorCode(1_040_101_001, "计量单位编码已存在");
26 26 ErrorCode MD_UNIT_MEASURE_HAS_ITEM = new ErrorCode(1_040_101_002, "该计量单位下存在物料,无法删除");
27 27 ErrorCode MD_UNIT_MEASURE_HAS_SECONDARY = new ErrorCode(1_040_101_003, "该主单位下存在辅单位,无法删除");
  28 + ErrorCode MD_UNIT_MEASURE_HAS_TASK_ISSUE = new ErrorCode(1_040_101_004, "该计量单位已被生产投料引用,无法删除");
  29 + ErrorCode MD_UNIT_MEASURE_HAS_QC_TEMPLATE_INDICATOR = new ErrorCode(1_040_101_005, "该计量单位已被质检方案指标项引用,无法删除");
28 30  
29 31 // ========== MES 基础数据-物料(1-040-102-000) ==========
30 32 ErrorCode MD_ITEM_NOT_EXISTS = new ErrorCode(1_040_102_000, "物料不存在");
... ... @@ -223,6 +225,7 @@ public interface ErrorCodeConstants {
223 225 // ========== MES 工具管理-工具台账(1-040-401-000) ==========
224 226 ErrorCode TM_TOOL_NOT_EXISTS = new ErrorCode(1_040_401_000, "工具不存在");
225 227 ErrorCode TM_TOOL_CODE_DUPLICATE = new ErrorCode(1_040_401_001, "工具编码已存在");
  228 + ErrorCode TM_TOOL_HAS_BATCH = new ErrorCode(1_040_401_002, "该工具已被批次引用,无法删除");
226 229  
227 230 // ========== MES 生产管理-工序(1-040-500-000) ==========
228 231 ErrorCode PRO_PROCESS_NOT_EXISTS = new ErrorCode(1_040_500_000, "工序不存在");
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/unitmeasure/MesMdUnitMeasureServiceImpl.java
... ... @@ -8,6 +8,9 @@ import cn.iocoder.yudao.module.mes.controller.admin.md.unitmeasure.vo.MesMdUnitM
8 8 import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
9 9 import cn.iocoder.yudao.module.mes.dal.mysql.md.unitmeasure.MesMdUnitMeasureMapper;
10 10 import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
  11 +import cn.iocoder.yudao.module.mes.service.pro.task.MesProTaskIssueService;
  12 +import cn.iocoder.yudao.module.mes.service.qc.template.MesQcTemplateIndicatorService;
  13 +import org.springframework.context.annotation.Lazy;
11 14 import jakarta.annotation.Resource;
12 15 import org.springframework.stereotype.Service;
13 16 import org.springframework.validation.annotation.Validated;
... ... @@ -34,6 +37,12 @@ public class MesMdUnitMeasureServiceImpl implements MesMdUnitMeasureService {
34 37  
35 38 @Resource
36 39 private MesMdItemService itemService;
  40 + @Resource
  41 + @Lazy
  42 + private MesProTaskIssueService taskIssueService;
  43 + @Resource
  44 + @Lazy
  45 + private MesQcTemplateIndicatorService templateIndicatorService;
37 46  
38 47 @Override
39 48 public Long createUnitMeasure(MesMdUnitMeasureSaveReqVO createReqVO) {
... ... @@ -70,6 +79,14 @@ public class MesMdUnitMeasureServiceImpl implements MesMdUnitMeasureService {
70 79 if (itemService.getItemCountByUnitMeasureId(id) > 0) {
71 80 throw exception(MD_UNIT_MEASURE_HAS_ITEM);
72 81 }
  82 + // 校验是否被生产任务投料引用
  83 + if (taskIssueService.getTaskIssueCountByUnitMeasureId(id) > 0) {
  84 + throw exception(MD_UNIT_MEASURE_HAS_TASK_ISSUE);
  85 + }
  86 + // 校验是否被质检方案指标项引用
  87 + if (templateIndicatorService.getTemplateIndicatorCountByUnitMeasureId(id) > 0) {
  88 + throw exception(MD_UNIT_MEASURE_HAS_QC_TEMPLATE_INDICATOR);
  89 + }
73 90  
74 91 // 删除
75 92 unitMeasureMapper.deleteById(id);
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/task/MesProTaskIssueService.java
... ... @@ -61,4 +61,12 @@ public interface MesProTaskIssueService {
61 61 */
62 62 List<MesProTaskIssueDO> getTaskIssueListByTaskId(Long taskId);
63 63  
  64 + /**
  65 + * 获取指定计量单位的投料记录数量
  66 + *
  67 + * @param unitMeasureId 计量单位编号
  68 + * @return 投料记录数量
  69 + */
  70 + Long getTaskIssueCountByUnitMeasureId(Long unitMeasureId);
  71 +
64 72 }
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/task/MesProTaskIssueServiceImpl.java
... ... @@ -83,6 +83,11 @@ public class MesProTaskIssueServiceImpl implements MesProTaskIssueService {
83 83 return taskIssueMapper.selectListByTaskId(taskId);
84 84 }
85 85  
  86 + @Override
  87 + public Long getTaskIssueCountByUnitMeasureId(Long unitMeasureId) {
  88 + return taskIssueMapper.selectCountByUnitMeasureId(unitMeasureId);
  89 + }
  90 +
86 91 private void validateTaskIssueExists(Long id) {
87 92 if (taskIssueMapper.selectById(id) == null) {
88 93 throw exception(PRO_TASK_ISSUE_NOT_EXISTS);
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/template/MesQcTemplateIndicatorService.java
... ... @@ -68,4 +68,12 @@ public interface MesQcTemplateIndicatorService {
68 68 */
69 69 List<MesQcTemplateIndicatorDO> getTemplateIndicatorListByTemplateId(Long templateId);
70 70  
  71 + /**
  72 + * 获取指定计量单位的检测指标项数量
  73 + *
  74 + * @param unitMeasureId 计量单位编号
  75 + * @return 检测指标项数量
  76 + */
  77 + Long getTemplateIndicatorCountByUnitMeasureId(Long unitMeasureId);
  78 +
71 79 }
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/template/MesQcTemplateIndicatorServiceImpl.java
... ... @@ -87,4 +87,9 @@ public class MesQcTemplateIndicatorServiceImpl implements MesQcTemplateIndicator
87 87 return templateIndicatorMapper.selectListByTemplateId(templateId);
88 88 }
89 89  
  90 + @Override
  91 + public Long getTemplateIndicatorCountByUnitMeasureId(Long unitMeasureId) {
  92 + return templateIndicatorMapper.selectCountByUnitMeasureId(unitMeasureId);
  93 + }
  94 +
90 95 }
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchService.java
... ... @@ -88,4 +88,12 @@ public interface MesWmBatchService {
88 88 */
89 89 MesWmBatchDO validateBatchExists(Long batchId, Long itemId, Long clientId, Long vendorId);
90 90  
  91 + /**
  92 + * 获取指定工具的批次数量
  93 + *
  94 + * @param toolId 工具编号
  95 + * @return 批次数量
  96 + */
  97 + Long getBatchCountByToolId(Long toolId);
  98 +
91 99 }
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImpl.java
... ... @@ -266,4 +266,9 @@ public class MesWmBatchServiceImpl implements MesWmBatchService {
266 266 return batch;
267 267 }
268 268  
  269 + @Override
  270 + public Long getBatchCountByToolId(Long toolId) {
  271 + return batchMapper.selectCountByToolId(toolId);
  272 + }
  273 +
269 274 }
... ...