From ca727bacb92189a1f7120b20efc859154e601ea7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Mon, 25 May 2026 10:27:49 +0800 Subject: [PATCH] =?UTF-8?q?refactor(product-model-params):=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=A4=8D=E5=88=B6=E6=95=B0=E6=8D=AE=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改ProductModelController中查询逻辑,使用batchNumber代替parentId和name进行过滤 - 移除ProductModelParamsItemMapper中未使用的getForQuotation方法及对应XML配置 - 更新ProductModelParamsMapper的getAllListByLanguage方法SQL,改为多表连接查询,支持语言过滤 - 删除ProductModelParamsMapper的copyItems声明和XML,实现由服务层自定义复制逻辑 - 实现ProductModelParamsServiceImpl中copyItems方法,完整复制旧版本数据和语言表,构建父子节点映射,保证数据一致性 --- .../controller/ProductModelController.java | 11 ++-- .../mapper/ProductModelParamsItemMapper.java | 1 - .../mapper/ProductModelParamsMapper.java | 2 - .../impl/ProductModelParamsServiceImpl.java | 53 ++++++++++++++++++- .../mapper/ProductModelParamsItemMapper.xml | 8 --- .../mapper/ProductModelParamsMapper.xml | 22 ++++---- 6 files changed, 66 insertions(+), 31 deletions(-) diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductModelController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductModelController.java index 169add30..9b48f3bf 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductModelController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductModelController.java @@ -379,6 +379,7 @@ public class ProductModelController extends ControllerBase { && productModelParamsDataService.lambdaQuery() .eq(ProductModelParamsData::getParamsId, request.getModelParamsId()) .eq(ProductModelParamsData::getParentId, 0) + .ne(ProductModelParamsData::getName, request.getIndexName()) .eq(ProductModelParamsData::getName, request.getNewIndexName()) .exists() ).throwMessage("指标名称已存在"); @@ -517,11 +518,10 @@ public class ProductModelController extends ControllerBase { Integer oldId = request.getModelParamsId(); request.setModelParamsId(productModelParamsService.add(info.getModelId(), info.getBatchNumber())); productModelParamsService.copyItems(oldId, request.getModelParamsId()); - // 在新版本中找到对应的数据记录 + // 在新版本中通过 batchNumber 找到对应的数据记录 ProductModelParamsData newData = productModelParamsDataService.lambdaQuery() .eq(ProductModelParamsData::getParamsId, request.getModelParamsId()) - .eq(ProductModelParamsData::getParentId, currentData.getParentId()) - .eq(ProductModelParamsData::getName, currentData.getName()) + .eq(ProductModelParamsData::getBatchNumber, currentData.getBatchNumber()) .one(); VUtils.trueThrowBusinessError(Objects.isNull(newData)).throwMessage("修改失败"); dataId = newData.getId(); @@ -604,11 +604,10 @@ public class ProductModelController extends ControllerBase { Integer oldId = request.getModelParamsId(); request.setModelParamsId(productModelParamsService.add(request.getModelId(), info.getBatchNumber())); productModelParamsService.copyItems(oldId, request.getModelParamsId()); - // 在新版本中找到对应的数据记录 + // 在新版本中通过 batchNumber 找到对应的数据记录 ProductModelParamsData newData = productModelParamsDataService.lambdaQuery() .eq(ProductModelParamsData::getParamsId, request.getModelParamsId()) - .eq(ProductModelParamsData::getParentId, currentData.getParentId()) - .eq(ProductModelParamsData::getName, currentData.getName()) + .eq(ProductModelParamsData::getBatchNumber, currentData.getBatchNumber()) .one(); VUtils.trueThrowBusinessError(Objects.isNull(newData)).throwMessage("删除失败"); dataId = newData.getId(); diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelParamsItemMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelParamsItemMapper.java index 6b86d668..4148d5f2 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelParamsItemMapper.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelParamsItemMapper.java @@ -15,5 +15,4 @@ import java.util.List; */ public interface ProductModelParamsItemMapper extends BaseMapper { - List getForQuotation(Long configId); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelParamsMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelParamsMapper.java index 53ddec2d..d74c36c4 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelParamsMapper.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelParamsMapper.java @@ -20,8 +20,6 @@ public interface ProductModelParamsMapper extends BaseMapper List getAllListByLanguage(Integer modelId, String language); - void copyItems(Integer oldId, Integer newId); - List getMainListByLanguage(Integer modelId, String language); List getMainListForSort(Integer paramId, String language); diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelParamsServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelParamsServiceImpl.java index 4c555084..39d32774 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelParamsServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelParamsServiceImpl.java @@ -202,7 +202,58 @@ public class ProductModelParamsServiceImpl extends ServiceImpl allData = productModelParamsDataService.lambdaQuery() + .eq(ProductModelParamsData::getParamsId, oldId) + .list(); + if (CollectionUtil.isEmpty(allData)) { + return; + } + // 分离父节点和子节点 + List parents = allData.stream() + .filter(d -> Objects.equals(d.getParentId(), 0L)) + .collect(Collectors.toList()); + List children = allData.stream() + .filter(d -> !Objects.equals(d.getParentId(), 0L)) + .collect(Collectors.toList()); + // oldParentId -> newParentId 映射 + Map parentIdMapping = new HashMap<>(); + // oldDataId -> newDataId 映射(用于语言表) + Map dataIdMapping = new HashMap<>(); + // 复制父节点 + for (ProductModelParamsData parent : parents) { + Long oldParentDataId = parent.getId(); + parent.setId(null); + parent.setParamsId(Long.valueOf(newId)); + productModelParamsDataService.save(parent); + parentIdMapping.put(oldParentDataId, parent.getId()); + dataIdMapping.put(oldParentDataId, parent.getId()); + } + // 复制子节点,重映射 parentId + for (ProductModelParamsData child : children) { + Long oldChildDataId = child.getId(); + Long newParentId2 = parentIdMapping.get(child.getParentId()); + child.setId(null); + child.setParamsId(Long.valueOf(newId)); + child.setParentId(newParentId2 != null ? newParentId2 : child.getParentId()); + productModelParamsDataService.save(child); + dataIdMapping.put(oldChildDataId, child.getId()); + } + // 复制语言表数据 + List oldDataIds = new ArrayList<>(dataIdMapping.keySet()); + if (CollectionUtil.isNotEmpty(oldDataIds)) { + List langList = productModelParamsDataLanguageService.lambdaQuery() + .in(ProductModelParamsDataLanguage::getParamsDataId, oldDataIds) + .list(); + if (CollectionUtil.isNotEmpty(langList)) { + langList.forEach(lang -> { + lang.setId(null); + lang.setParamsId(Long.valueOf(newId)); + lang.setParamsDataId(dataIdMapping.get(lang.getParamsDataId())); + }); + productModelParamsDataLanguageService.saveBatch(langList); + } + } } @Override diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelParamsItemMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelParamsItemMapper.xml index 633ff3b9..d0a68667 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelParamsItemMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelParamsItemMapper.xml @@ -2,12 +2,4 @@ - \ No newline at end of file diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelParamsMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelParamsMapper.xml index dc37d8f9..b669cc6a 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelParamsMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelParamsMapper.xml @@ -3,20 +3,16 @@ - -