From a1b154bfd4c5e138d964e1bfdc5a2bcac1e25488 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 23 四月 2026 11:49:25 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New_pro' into dev_New_pro

---
 src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingOperationParamServiceImpl.java |   83 ++++++++++++++++++++++++++---------------
 1 files changed, 52 insertions(+), 31 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..2db55b4 100644
--- a/src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingOperationParamServiceImpl.java
+++ b/src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingOperationParamServiceImpl.java
@@ -38,7 +38,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 +62,6 @@
     public boolean saveTechnologyRoutingOperationParam(TechnologyRoutingOperationParam item) {
         TechnologyRoutingOperation routingOperation = getRoutingOperation(item.getTechnologyRoutingOperationId());
         fillFromOperationParam(item, routingOperation);
-        validateManualFields(item);
         checkDuplicate(item);
         return this.saveOrUpdate(item);
     }
@@ -75,7 +74,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(
@@ -134,11 +133,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 +146,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 +204,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 +212,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