From 4b90ca9a9a09a42f5f280cadddc281aacb0a971e Mon Sep 17 00:00:00 2001 From: zjh <15615273395@163.com> Date: Tue, 9 Dec 2025 14:58:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=E5=AF=B9=E6=A0=87?= =?UTF-8?q?=E6=8A=A5=E5=91=8A=E9=83=A8=E5=88=86=E6=98=BE=E7=A4=BA=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/BenchmarkingReport.java | 8 +- .../xdap/self_development/pojo/Template.java | 2 +- .../impl/BenchmarkingReportServiceImpl.java | 5 +- .../service/impl/ParameterServiceImpl.java | 73 +++++++++++-------- .../service/impl/TemplateServiceImpl.java | 1 - 5 files changed, 51 insertions(+), 38 deletions(-) diff --git a/src/main/java/com/xdap/self_development/pojo/BenchmarkingReport.java b/src/main/java/com/xdap/self_development/pojo/BenchmarkingReport.java index 605e5ea..85aadda 100644 --- a/src/main/java/com/xdap/self_development/pojo/BenchmarkingReport.java +++ b/src/main/java/com/xdap/self_development/pojo/BenchmarkingReport.java @@ -1,8 +1,6 @@ package com.xdap.self_development.pojo; -import com.definesys.mpaas.query.annotation.RowID; -import com.definesys.mpaas.query.annotation.RowIDType; -import com.definesys.mpaas.query.annotation.Table; +import com.definesys.mpaas.query.annotation.*; import com.definesys.mpaas.query.model.MpaasBasePojo; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; @@ -11,6 +9,10 @@ import lombok.NoArgsConstructor; import java.sql.Timestamp; +@SQLQuery(value = { + @SQL(view = "getReportById", + sql = "SELECT ymbr.id, ymbr.title, ymbr.manufacturer_name, ymbr.model_name, ymbr.module , ymbr.manufacturer_abbreviation, ymbr.model_abbreviation, ymbr.product_number, ymbr.plate, ymbr.platform , ymbr.market_segment, ymbr.project_name, ymbr.project_number, ymbr.upload_time, ymbr.file_path , ymbr.status, xu.username AS create_by FROM yfsjglpt_model_benchmarking_report ymbr LEFT JOIN xdap_users xu ON xu.id = ymbr.create_by where ymbr.id = #reportId") +}) @EqualsAndHashCode(callSuper = true) @Data @Table("yfsjglpt_model_benchmarking_report") diff --git a/src/main/java/com/xdap/self_development/pojo/Template.java b/src/main/java/com/xdap/self_development/pojo/Template.java index be5e199..8ec2a16 100644 --- a/src/main/java/com/xdap/self_development/pojo/Template.java +++ b/src/main/java/com/xdap/self_development/pojo/Template.java @@ -12,7 +12,7 @@ import java.sql.Timestamp; @SQLQuery(value = { // 查找每个模板的最新版本并且优先级按照已发布、审核中、草稿状态转变(只有这三种状态) @SQL(view = "getLatestTemplate", - sql = "SELECT * FROM ( SELECT t.*, ROW_NUMBER() OVER (PARTITION BY template_name ORDER BY CASE WHEN status = 'COMPLETE' THEN 1 WHEN status = 'APPROVING' THEN 2 ELSE 3 END, version DESC) AS rn FROM yfsjglpt_model_template t WHERE status IN ('COMPLETE', 'DRAFT', 'APPROVING') ) ranked WHERE rn = 1 ORDER BY CASE status WHEN 'COMPLETE' THEN 1 WHEN 'APPROVING' THEN 2 WHEN 'DRAFT' THEN 3 WHEN 'RETURNED' THEN 4 WHEN 'REJECTED' THEN 5 ELSE 6 END ASC" + sql = "SELECT ranked.id, ranked.template_name, ranked.version, ranked.status, ranked.created_time , ranked.published_time, xu.username AS createBy FROM ( SELECT t.*, ROW_NUMBER() OVER (PARTITION BY template_name ORDER BY CASE WHEN status = 'COMPLETE' THEN 1 WHEN status = 'APPROVING' THEN 2 ELSE 3 END, version DESC) AS rn FROM yfsjglpt_model_template t WHERE status IN ('COMPLETE', 'DRAFT', 'APPROVING') ) ranked LEFT JOIN xdap_users xu ON xu.id = ranked.create_by WHERE rn = 1 ORDER BY CASE status WHEN 'COMPLETE' THEN 1 WHEN 'APPROVING' THEN 2 WHEN 'DRAFT' THEN 3 WHEN 'RETURNED' THEN 4 WHEN 'REJECTED' THEN 5 ELSE 6 END ASC" ), // 获取所有模板的最新版本号(包括所有状态) @SQL(view = "getNewTemplate", diff --git a/src/main/java/com/xdap/self_development/service/impl/BenchmarkingReportServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/BenchmarkingReportServiceImpl.java index dce2fac..7e3dfc9 100644 --- a/src/main/java/com/xdap/self_development/service/impl/BenchmarkingReportServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/BenchmarkingReportServiceImpl.java @@ -232,7 +232,10 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService @Override public BenchmarkingReport getReportDetail(String reportId) { - return bd.getBusinessDatabase().eq("id", reportId) + return bd.getBusinessDatabase() + .viewQueryMode(true) + .view("getReportById") + .setVar("reportId", reportId) .doQueryFirst(BenchmarkingReport.class); } diff --git a/src/main/java/com/xdap/self_development/service/impl/ParameterServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/ParameterServiceImpl.java index 4028de4..d8d4000 100644 --- a/src/main/java/com/xdap/self_development/service/impl/ParameterServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/ParameterServiceImpl.java @@ -1,6 +1,9 @@ package com.xdap.self_development.service.impl; import com.definesys.mpaas.query.db.PageQueryResult; +import com.xdap.api.moudle.user.vo.LoginUserVo; +import com.xdap.runtime.service.RuntimeAppContextService; +import com.xdap.runtime.service.RuntimeUserService; import com.xdap.self_development.config.BusinessDatabase; import com.xdap.self_development.controller.form.ParameterForm; import com.xdap.self_development.controller.form.ParameterPageForm; @@ -35,6 +38,8 @@ public class ParameterServiceImpl implements ParameterService { private BusinessDatabase bd; @Resource private ModelRoleService modelRoleService; + @Resource + private RuntimeAppContextService runtimeAppContextService; @Override public PageQueryResult getParameterByCondition(ParameterPageForm form) { @@ -46,7 +51,16 @@ public class ParameterServiceImpl implements ParameterService { throw new CommonException("模板未找到"); } - //todo 获取指定子系统下的用户的权限,权限应该为:参数的 parameterNumber + //todo 假定子系统名和模板名一致 +// String currentUserId = runtimeAppContextService.getCurrentUserId(); +// List ids = modelRoleService.selectPersByUser(currentUserId).stream() +// .filter(view -> Objects.equals(view.getSubsystem(), template.getTemplateName())) +// .map(MenuParamView::getParameterId) +// .collect(Collectors.toList()); +// +// if (ids.isEmpty()) { +// ids = new ArrayList<>(); +// } return bd.getBusinessDatabase() .viewQueryMode(true) @@ -196,10 +210,7 @@ public class ParameterServiceImpl implements ParameterService { Template newTemplate) { Map parameterMap = createParameterMap(existingParameters); -// if (!existingParameters.isEmpty()) { -// // 清除原来的关联关系 -// bd.getBusinessDatabase().eq("template_id", baseTemplate.getId()).doDelete(TemplateAndParameter.class); -// } + List newParameters = new ArrayList<>(); List revisionRecords = new ArrayList<>(); @@ -209,8 +220,6 @@ public class ParameterServiceImpl implements ParameterService { parameterForm.setOperation(""); } ParameterOperation operation = ParameterOperation.fromCode(parameterForm.getOperation()); - - switch (operation) { case INSERT: handleInsertOperation(parameterForm, newTemplate, newParameters, revisionRecords, baseTemplate); @@ -259,33 +268,25 @@ public class ParameterServiceImpl implements ParameterService { ) { Parameter newParameter = new Parameter(); BeanUtils.copyProperties(form, newParameter); - if (form.getParameterNumber() == null ) { - Parameter parameter = bd.getBusinessDatabase() - .viewQueryMode(true) - .view("selectMaxNumber") - .setVar("templateId", baseTemplate.getId()) - .doQueryFirst(Parameter.class); - if (parameter == null || parameter.getMaxNumber() == null) { - int maxNumber = newParameters.stream() - .mapToInt(Parameter::getParameterNumber) - .max() - .orElse(0); - newParameter.setParameterNumber(maxNumber + 1); - } else { - int i = parameter.getMaxNumber() + 1; - newParameter.setParameterNumber(i); - } - } else { - List parameters = bd.getBusinessDatabase() + + Parameter parameter = bd.getBusinessDatabase() .viewQueryMode(true) - .view("selectParametersByTemplateId") + .view("selectMaxNumber") .setVar("templateId", baseTemplate.getId()) - .eq("parameter_number", newParameter.getParameterNumber()) - .doQuery(Parameter.class); - if (parameters != null && !parameters.isEmpty()) { - throw new CommonException("参数编号重复"); - } + .doQueryFirst(Parameter.class); + + int maxNum = newParameters.stream() + .mapToInt(Parameter::getParameterNumber) + .max() + .orElse(0); + + if (parameter == null || parameter.getMaxNumber() == null) { + newParameter.setParameterNumber(maxNum + 1); + } else { + int i = Math.max(maxNum + 1, parameter.getMaxNumber() + 1); + newParameter.setParameterNumber(i); } + newParameter.setId(null); bd.getBusinessDatabase().doInsert(newParameter); newParameters.add(newParameter); revisionRecords.add(new RevisionRecord( @@ -418,8 +419,16 @@ public class ParameterServiceImpl implements ParameterService { * 保存所有数据 */ private void saveAllData(Template newTemplate, ParameterProcessingResult result) { + List parameterIds = bd.getBusinessDatabase() + .eq("template_id", newTemplate.getId()) + .doQuery(TemplateAndParameter.class).stream() + .map(TemplateAndParameter::getParameterId) + .collect(Collectors.toList()); + // 创建并保存模板参数关联 - List templateAndParameters = result.getNewParameters().stream() + List templateAndParameters = + result.getNewParameters().stream() + .filter(parameter -> !parameterIds.contains(parameter.getId())) .map(parameter -> createTemplateAndParameter(newTemplate.getId(), parameter.getId())) .collect(Collectors.toList()); bd.getBusinessDatabase().doBatchInsert(templateAndParameters); diff --git a/src/main/java/com/xdap/self_development/service/impl/TemplateServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/TemplateServiceImpl.java index 1b93406..a7eb2f7 100644 --- a/src/main/java/com/xdap/self_development/service/impl/TemplateServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/TemplateServiceImpl.java @@ -38,7 +38,6 @@ public class TemplateServiceImpl implements TemplateService { @Override public PageQueryResult