From 7b7a2cc050d55af2eed2cccb3761a91314c9b9f6 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 30 四月 2026 15:07:32 +0800
Subject: [PATCH] feat:1.产品维护,增加产品编号字段 2.入库批号添加 3.是否质检仅添加入库记录(待审核) 4.是否生产报工更改 5.入库做审核

---
 src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingOperationParamServiceImpl.java |  118 +++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 71 insertions(+), 47 deletions(-)

diff --git a/src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingOperationParamServiceImpl.java b/src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingOperationParamServiceImpl.java
index 44b59ed..9f270fa 100644
--- a/src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingOperationParamServiceImpl.java
+++ b/src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingOperationParamServiceImpl.java
@@ -3,6 +3,7 @@
 import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -38,7 +39,7 @@
 
     @Override
     public IPage<TechnologyRoutingOperationParamVo> pageTechnologyRoutingOperationParam(Page<TechnologyRoutingOperationParamDto> page,
-                                                                                        TechnologyRoutingOperationParamDto dto) {
+                                                                                         TechnologyRoutingOperationParamDto dto) {
         Page<TechnologyRoutingOperationParam> entityPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
         return this.page(entityPage, buildQueryWrapper(dto))
                 .convert(item -> BeanUtil.copyProperties(item, TechnologyRoutingOperationParamVo.class));
@@ -62,7 +63,6 @@
     public boolean saveTechnologyRoutingOperationParam(TechnologyRoutingOperationParam item) {
         TechnologyRoutingOperation routingOperation = getRoutingOperation(item.getTechnologyRoutingOperationId());
         fillFromOperationParam(item, routingOperation);
-        validateManualFields(item);
         checkDuplicate(item);
         return this.saveOrUpdate(item);
     }
@@ -75,7 +75,7 @@
     @Override
     public int syncTechnologyRoutingOperationParam(TechnologyRoutingOperationParamSyncDto syncDto) {
         if (syncDto == null || syncDto.getTechnologyRoutingOperationId() == null) {
-            throw new ServiceException("technologyRoutingOperationId is required");
+            throw new ServiceException("宸ヨ壓璺嚎宸ュ簭ID涓嶈兘涓虹┖");
         }
         TechnologyRoutingOperation routingOperation = getRoutingOperation(syncDto.getTechnologyRoutingOperationId());
         List<TechnologyOperationParam> operationParamList = technologyOperationParamMapper.selectList(
@@ -91,23 +91,25 @@
             );
         }
         int successCount = 0;
-        for (TechnologyOperationParam operationParam : operationParamList) {
-            boolean exists = technologyRoutingOperationParamMapper.selectCount(
-                    Wrappers.<TechnologyRoutingOperationParam>lambdaQuery()
-                            .eq(TechnologyRoutingOperationParam::getTechnologyRoutingOperationId, routingOperation.getId())
-                            .eq(TechnologyRoutingOperationParam::getTechnologyOperationParamId, operationParam.getId())
-            ) > 0;
-            if (!replaceExisting && exists) {
-                continue;
+        if (CollectionUtils.isNotEmpty(operationParamList)) {
+            for (TechnologyOperationParam operationParam : operationParamList) {
+                boolean exists = technologyRoutingOperationParamMapper.selectCount(
+                        Wrappers.<TechnologyRoutingOperationParam>lambdaQuery()
+                                .eq(TechnologyRoutingOperationParam::getTechnologyRoutingOperationId, routingOperation.getId())
+                                .eq(TechnologyRoutingOperationParam::getTechnologyOperationParamId, operationParam.getId())
+                ) > 0;
+                if (!replaceExisting && exists) {
+                    continue;
+                }
+                TechnologyRoutingOperationParam snapshot = new TechnologyRoutingOperationParam();
+                snapshot.setTechnologyRoutingOperationId(routingOperation.getId());
+                snapshot.setTechnologyOperationParamId(operationParam.getId());
+                snapshot.setTechnologyOperationId(operationParam.getTechnologyOperationId());
+                snapshot.setStandardValue(operationParam.getStandardValue());
+                fillFromOperationParam(snapshot, routingOperation);
+                technologyRoutingOperationParamMapper.insert(snapshot);
+                successCount++;
             }
-            TechnologyRoutingOperationParam snapshot = new TechnologyRoutingOperationParam();
-            snapshot.setTechnologyRoutingOperationId(routingOperation.getId());
-            snapshot.setTechnologyOperationParamId(operationParam.getId());
-            snapshot.setTechnologyOperationId(operationParam.getTechnologyOperationId());
-            snapshot.setStandardValue(operationParam.getStandardValue());
-            fillFromOperationParam(snapshot, routingOperation);
-            technologyRoutingOperationParamMapper.insert(snapshot);
-            successCount++;
         }
         return successCount;
     }
@@ -134,11 +136,11 @@
 
     private TechnologyRoutingOperation getRoutingOperation(Long technologyRoutingOperationId) {
         if (technologyRoutingOperationId == null) {
-            throw new ServiceException("technologyRoutingOperationId is required");
+            throw new ServiceException("宸ヨ壓璺嚎宸ュ簭ID涓嶈兘涓虹┖");
         }
         TechnologyRoutingOperation routingOperation = technologyRoutingOperationMapper.selectById(technologyRoutingOperationId);
         if (routingOperation == null) {
-            throw new ServiceException("Technology routing operation not found");
+            throw new ServiceException("宸ヨ壓璺嚎宸ュ簭涓嶅瓨鍦�");
         }
         return routingOperation;
     }
@@ -147,22 +149,54 @@
         if (item.getTechnologyOperationId() == null) {
             item.setTechnologyOperationId(routingOperation.getTechnologyOperationId());
         } else if (!item.getTechnologyOperationId().equals(routingOperation.getTechnologyOperationId())) {
-            throw new ServiceException("technologyOperationId does not match routing operation");
+            throw new ServiceException("宸ュ簭ID涓庡伐鑹鸿矾绾垮伐搴忎笉鍖归厤");
         }
-        if (item.getTechnologyOperationParamId() == null) {
+
+        if (item.getTechnologyOperationParamId() != null) {
+            TechnologyOperationParam operationParam = technologyOperationParamMapper.selectById(item.getTechnologyOperationParamId());
+            if (operationParam == null) {
+                throw new ServiceException("宸ュ簭鍙傛暟涓嶅瓨鍦�");
+            }
+            if (!routingOperation.getTechnologyOperationId().equals(operationParam.getTechnologyOperationId())) {
+                throw new ServiceException("宸ュ簭鍙傛暟涓嶅睘浜庡綋鍓嶅伐鑹鸿矾绾垮伐搴�");
+            }
+            TechnologyParam technologyParam = technologyParamMapper.selectById(operationParam.getTechnologyParamId());
+            if (technologyParam == null) {
+                throw new ServiceException("鍩虹鍙傛暟涓嶅瓨鍦�");
+            }
+            fillFromTechnologyParam(item, technologyParam);
+            if (item.getStandardValue() == null) {
+                item.setStandardValue(operationParam.getStandardValue());
+            }
             return;
         }
-        TechnologyOperationParam operationParam = technologyOperationParamMapper.selectById(item.getTechnologyOperationParamId());
-        if (operationParam == null) {
-            throw new ServiceException("Technology operation param not found");
+
+        if (item.getParamId() != null) {
+            TechnologyParam technologyParam = technologyParamMapper.selectById(item.getParamId());
+            if (technologyParam == null) {
+                throw new ServiceException("鍩虹鍙傛暟涓嶅瓨鍦�");
+            }
+            fillFromTechnologyParam(item, technologyParam);
+            TechnologyOperationParam operationParam = technologyOperationParamMapper.selectOne(
+                    Wrappers.<TechnologyOperationParam>lambdaQuery()
+                            .eq(TechnologyOperationParam::getTechnologyOperationId, routingOperation.getTechnologyOperationId())
+                            .eq(TechnologyOperationParam::getTechnologyParamId, item.getParamId())
+                            .orderByAsc(TechnologyOperationParam::getId)
+                            .last("limit 1")
+            );
+            if (operationParam != null) {
+                item.setTechnologyOperationParamId(operationParam.getId());
+                if (item.getStandardValue() == null) {
+                    item.setStandardValue(operationParam.getStandardValue());
+                }
+            }
+            return;
         }
-        if (!routingOperation.getTechnologyOperationId().equals(operationParam.getTechnologyOperationId())) {
-            throw new ServiceException("Operation param does not belong to routing operation");
-        }
-        TechnologyParam technologyParam = technologyParamMapper.selectById(operationParam.getTechnologyParamId());
-        if (technologyParam == null) {
-            throw new ServiceException("Technology param not found");
-        }
+
+        throw new ServiceException("paramId鎴杢echnologyOperationParamId涓嶈兘涓虹┖");
+    }
+
+    private void fillFromTechnologyParam(TechnologyRoutingOperationParam item, TechnologyParam technologyParam) {
         item.setParamId(technologyParam.getId());
         item.setParamCode(technologyParam.getParamCode());
         item.setParamName(technologyParam.getParamName());
@@ -173,18 +207,6 @@
         if (item.getRemark() == null || item.getRemark().trim().isEmpty()) {
             item.setRemark(technologyParam.getRemark());
         }
-        if (item.getStandardValue() == null) {
-            item.setStandardValue(operationParam.getStandardValue());
-        }
-    }
-
-    private void validateManualFields(TechnologyRoutingOperationParam item) {
-        if (item.getParamCode() == null || item.getParamCode().trim().isEmpty()) {
-            throw new ServiceException("paramCode is required");
-        }
-        if (item.getParamName() == null || item.getParamName().trim().isEmpty()) {
-            throw new ServiceException("paramName is required");
-        }
     }
 
     private void checkDuplicate(TechnologyRoutingOperationParam item) {
@@ -193,12 +215,14 @@
                         .eq(TechnologyRoutingOperationParam::getTechnologyRoutingOperationId, item.getTechnologyRoutingOperationId())
                         .eq(item.getTechnologyOperationParamId() != null,
                                 TechnologyRoutingOperationParam::getTechnologyOperationParamId, item.getTechnologyOperationParamId())
-                        .eq(item.getTechnologyOperationParamId() == null && item.getParamCode() != null,
+                        .eq(item.getTechnologyOperationParamId() == null && item.getParamId() != null,
+                                TechnologyRoutingOperationParam::getParamId, item.getParamId())
+                        .eq(item.getTechnologyOperationParamId() == null && item.getParamId() == null && item.getParamCode() != null,
                                 TechnologyRoutingOperationParam::getParamCode, item.getParamCode())
                         .ne(item.getId() != null, TechnologyRoutingOperationParam::getId, item.getId())
         ) > 0;
         if (duplicate) {
-            throw new ServiceException("Duplicate routing operation param");
+            throw new ServiceException("宸ヨ壓璺嚎宸ュ簭鍙傛暟閲嶅");
         }
     }
 }

--
Gitblit v1.9.3