From 89b852ab8de7b9c41bf93f0835d7fbc0f9882a22 Mon Sep 17 00:00:00 2001 From: wkc <978997012@qq.com> Date: Fri, 6 Mar 2026 17:05:36 +0800 Subject: [PATCH] =?UTF-8?q?feat(ccdi-project):=20=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=9F=A5=E8=AF=A2=E5=92=8C=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/CcdiModelParamServiceImpl.java | 117 ++++++++++++++++++ 1 file changed, 117 insertions(+) diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiModelParamServiceImpl.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiModelParamServiceImpl.java index 0e7ee44..1e057f2 100644 --- a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiModelParamServiceImpl.java +++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiModelParamServiceImpl.java @@ -6,8 +6,13 @@ import com.ruoyi.ccdi.project.domain.CcdiModelParam; import com.ruoyi.ccdi.project.domain.CcdiProject; import com.ruoyi.ccdi.project.domain.dto.ModelParamQueryDTO; import com.ruoyi.ccdi.project.domain.dto.ModelParamSaveDTO; +import com.ruoyi.ccdi.project.domain.dto.ModelParamSaveAllDTO; +import com.ruoyi.ccdi.project.domain.dto.ModelParamGroupDTO; +import com.ruoyi.ccdi.project.domain.dto.ParamValueItem; import com.ruoyi.ccdi.project.domain.vo.ModelListVO; import com.ruoyi.ccdi.project.domain.vo.ModelParamVO; +import com.ruoyi.ccdi.project.domain.vo.ModelParamAllVO; +import com.ruoyi.ccdi.project.domain.vo.ModelGroupVO; import com.ruoyi.ccdi.project.mapper.CcdiModelParamMapper; import com.ruoyi.ccdi.project.mapper.CcdiProjectMapper; import com.ruoyi.ccdi.project.service.ICcdiModelParamService; @@ -20,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional; import jakarta.annotation.Resource; import java.util.ArrayList; +import java.util.Comparator; import java.util.Date; import java.util.List; import java.util.Map; @@ -225,4 +231,115 @@ public class CcdiModelParamServiceImpl implements ICcdiModelParamService { return count; } + + @Override + public ModelParamAllVO selectAllParams(Long projectId) { + // 1. 参数验证 + if (projectId == null) { + projectId = 0L; + } + + // 2. 如果是项目查询,根据 configType 决定查询哪组参数 + Long effectiveProjectId = projectId; + if (projectId > 0) { + CcdiProject project = projectMapper.selectById(projectId); + if (project == null) { + throw new ServiceException("项目不存在"); + } + if ("default".equals(project.getConfigType())) { + effectiveProjectId = 0L; + } + } + + // 3. 查询所有模型的参数 + List allParams = modelParamMapper.selectByProjectId(effectiveProjectId); + + // 4. 按模型分组 + Map> groupedParams = allParams.stream() + .collect(Collectors.groupingBy(CcdiModelParam::getModelCode)); + + // 5. 转换为VO + ModelParamAllVO result = new ModelParamAllVO(); + List models = new ArrayList<>(); + + groupedParams.forEach((modelCode, params) -> { + ModelGroupVO groupVO = new ModelGroupVO(); + groupVO.setModelCode(modelCode); + groupVO.setModelName(params.get(0).getModelName()); + + List paramVOs = params.stream() + .map(param -> { + ModelParamVO vo = new ModelParamVO(); + BeanUtils.copyProperties(param, vo); + return vo; + }) + .collect(Collectors.toList()); + + groupVO.setParams(paramVOs); + models.add(groupVO); + }); + + // 6. 按模型编码排序(保证固定顺序) + models.sort(Comparator.comparing(ModelGroupVO::getModelCode)); + + result.setModels(models); + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveAllParams(ModelParamSaveAllDTO saveAllDTO) { + try { + // 1. 参数验证 + if (saveAllDTO.getProjectId() == null) { + throw new ServiceException("项目ID不能为空"); + } + if (saveAllDTO.getModels() == null || saveAllDTO.getModels().isEmpty()) { + throw new ServiceException("参数列表不能为空"); + } + + Long projectId = saveAllDTO.getProjectId(); + + // 2. 如果是项目保存,检查是否需要复制默认参数 + if (projectId > 0) { + CcdiProject project = projectMapper.selectById(projectId); + if (project == null) { + throw new ServiceException("项目不存在"); + } + + // 如果是首次保存(configType=default),需要复制所有模型的系统默认参数 + if ("default".equals(project.getConfigType())) { + for (ModelParamGroupDTO modelGroup : saveAllDTO.getModels()) { + copyDefaultParamsToProject(projectId, modelGroup.getModelCode()); + } + + // 更新项目配置类型为 custom + project.setConfigType("custom"); + projectMapper.updateById(project); + } + } + + // 3. 批量更新所有模型的参数值 + for (ModelParamGroupDTO modelGroup : saveAllDTO.getModels()) { + for (ParamValueItem item : modelGroup.getParams()) { + int updated = modelParamMapper.updateParamValue( + projectId, + modelGroup.getModelCode(), + item.getParamCode(), + item.getParamValue() + ); + if (updated == 0) { + log.warn("参数不存在或未更新, modelCode={}, paramCode={}", + modelGroup.getModelCode(), item.getParamCode()); + } + } + } + + } catch (ServiceException e) { + throw e; + } catch (Exception e) { + log.error("批量保存模型参数失败", e); + throw new ServiceException("批量保存模型参数失败:" + e.getMessage()); + } + } }