修改:模板导入问题

This commit is contained in:
zjh 2025-12-30 09:32:49 +08:00
parent 90c893df58
commit f691877b83
4 changed files with 76 additions and 23 deletions

View File

@ -12,7 +12,7 @@ import java.util.List;
// CASE af.flow_status WHEN 'COMPLETE' THEN 1 WHEN 'APPROVING' THEN 2 WHEN 'DRAFT' THEN 3 WHEN 'REJECTED' THEN 4 ELSE 5 END ASC, // CASE af.flow_status WHEN 'COMPLETE' THEN 1 WHEN 'APPROVING' THEN 2 WHEN 'DRAFT' THEN 3 WHEN 'REJECTED' THEN 4 ELSE 5 END ASC,
@SQLQuery(value = { @SQLQuery(value = {
@SQL(view = "getAllReportApprovalList", @SQL(view = "getAllReportApprovalList",
sql = "SELECT af.id AS flowId, r.id AS reportId, r.title AS title, af.flow_status AS status, af.create_by AS createBy , xu.username AS username, af.created_time AS createdTime, ac.assignees AS current_users FROM yfsjglpt_model_approval_flow af LEFT JOIN approval_config ac ON af.id = ac.approval_id AND af.current_node = ac.node_order LEFT JOIN yfsjglpt_model_benchmarking_report r ON af.template_id = r.id LEFT JOIN xdap_users xu ON xu.id = af.create_by WHERE af.flow_type = 2 AND r.title LIKE CONCAT('%', #title, '%') AND af.flow_status LIKE CONCAT('%', #status, '%') AND af.created_time LIKE CONCAT('%', #createdTime, '%') AND xu.username LIKE CONCAT('%', #username, '%') ORDER BY af.created_time DESC") sql = "SELECT af.id AS flowId, r.id AS reportId, af.process_title AS title, af.flow_status AS status, af.create_by AS createBy , xu.username AS username, af.created_time AS createdTime, ac.assignees AS current_users FROM yfsjglpt_model_approval_flow af LEFT JOIN approval_config ac ON af.id = ac.approval_id AND af.current_node = ac.node_order LEFT JOIN yfsjglpt_model_benchmarking_report r ON af.template_id = r.id LEFT JOIN xdap_users xu ON xu.id = af.create_by WHERE af.flow_type = 2 AND r.title LIKE CONCAT('%', #title, '%') AND af.flow_status LIKE CONCAT('%', #status, '%') AND af.created_time LIKE CONCAT('%', #createdTime, '%') AND xu.username LIKE CONCAT('%', #username, '%') ORDER BY af.created_time DESC")
}) })
@Data @Data
public class TodoAndReportListView { public class TodoAndReportListView {

View File

@ -1,13 +1,35 @@
package com.xdap.self_development.service; package com.xdap.self_development.service;
import com.xdap.self_development.common.MyPageResult; import com.xdap.self_development.common.MyPageResult;
import com.xdap.self_development.controller.form.ParameterForm;
import com.xdap.self_development.controller.form.ParameterPageForm; import com.xdap.self_development.controller.form.ParameterPageForm;
import com.xdap.self_development.controller.form.UpdateParameterForm; import com.xdap.self_development.controller.form.UpdateParameterForm;
import com.xdap.self_development.pojo.Parameter; import com.xdap.self_development.pojo.Parameter;
import com.xdap.self_development.pojo.Template;
import com.xdap.self_development.pojo.view.TemplateInfoView; import com.xdap.self_development.pojo.view.TemplateInfoView;
import com.xdap.self_development.service.impl.ParameterServiceImpl;
import java.util.List;
public interface ParameterService { public interface ParameterService {
MyPageResult<Parameter> getParameterByCondition(ParameterPageForm form); MyPageResult<Parameter> getParameterByCondition(ParameterPageForm form);
TemplateInfoView maintenanceParameters(UpdateParameterForm form); TemplateInfoView maintenanceParameters(UpdateParameterForm form);
ParameterServiceImpl.TemplateBenchmark getTemplateBenchmark(String templateRowId);
void validateTemplateStatus(ParameterServiceImpl.TemplateBenchmark benchmark);
Template createOrReuseNewTemplate(ParameterServiceImpl.TemplateBenchmark benchmark, String userId);
ParameterServiceImpl.ParameterProcessingResult processParameters(
List<ParameterForm> parameterForms,
List<Parameter> existingParameters,
Template baseTemplate,
Template newTemplate,
String userId,
boolean isLastComplete
);
void saveAllData(Template originalTemplate, Template newTemplate, ParameterServiceImpl.ParameterProcessingResult result);
} }

View File

@ -2,7 +2,6 @@ package com.xdap.self_development.service.impl;
import com.definesys.mpaas.query.db.PageQueryResult; import com.definesys.mpaas.query.db.PageQueryResult;
import com.xdap.self_development.common.MyPageResult; import com.xdap.self_development.common.MyPageResult;
import com.xdap.self_development.common.UserPermissionGetter;
import com.xdap.self_development.config.BusinessDatabase; import com.xdap.self_development.config.BusinessDatabase;
import com.xdap.self_development.controller.form.ParameterForm; import com.xdap.self_development.controller.form.ParameterForm;
import com.xdap.self_development.controller.form.ParameterPageForm; import com.xdap.self_development.controller.form.ParameterPageForm;
@ -33,7 +32,7 @@ public class ParameterServiceImpl implements ParameterService {
@Resource @Resource
private BusinessDatabase bd; private BusinessDatabase bd;
@Resource @Resource
private UserPermissionGetter permissionGetter; private ParameterService myself;
@Override @Override
public MyPageResult<Parameter> getParameterByCondition(ParameterPageForm form) { public MyPageResult<Parameter> getParameterByCondition(ParameterPageForm form) {
@ -87,22 +86,23 @@ public class ParameterServiceImpl implements ParameterService {
} }
} }
// 获取基准模板和最新模板 // 获取基准模板和最新模板
TemplateBenchmark benchmark = getTemplateBenchmark(form.getTemplateRowId()); TemplateBenchmark benchmark = myself.getTemplateBenchmark(form.getTemplateRowId());
// 校验模板状态 // 校验模板状态
validateTemplateStatus(benchmark); myself.validateTemplateStatus(benchmark);
// 创建/复用新版本模板 // 创建/复用新版本模板
Template newVersionTemplate = createOrReuseNewTemplate(benchmark, form.getUserId()); Template newVersionTemplate = myself.createOrReuseNewTemplate(benchmark, form.getUserId());
// 处理参数变更 // 处理参数变更
ParameterProcessingResult processingResult = processParameters( ParameterProcessingResult processingResult = myself.processParameters(
form.getParameterForms(), form.getParameterForms(),
benchmark.getParameters(), benchmark.getParameters(),
benchmark.getBaseTemplate(), benchmark.getBaseTemplate(),
newVersionTemplate, newVersionTemplate,
form.getUserId() form.getUserId(),
Objects.equals(newVersionTemplate.getId(), benchmark.getBaseTemplate().getId())
); );
// 保存所有数据 // 保存所有数据
saveAllData(benchmark.getBaseTemplate(), newVersionTemplate, processingResult); myself.saveAllData(benchmark.getBaseTemplate(), newVersionTemplate, processingResult);
TemplateInfoView result = new TemplateInfoView(); TemplateInfoView result = new TemplateInfoView();
result.setTemplateRowId(newVersionTemplate.getRowId()); result.setTemplateRowId(newVersionTemplate.getRowId());
@ -114,7 +114,7 @@ public class ParameterServiceImpl implements ParameterService {
/** /**
* 校验模板状态 * 校验模板状态
*/ */
private void validateTemplateStatus(TemplateBenchmark benchmark) { public void validateTemplateStatus(TemplateBenchmark benchmark) {
// 当前修改的模板不为最新版 // 当前修改的模板不为最新版
if (!Objects.equals(benchmark.getLastTemplate().getId(), benchmark.getBaseTemplate().getId())) { if (!Objects.equals(benchmark.getLastTemplate().getId(), benchmark.getBaseTemplate().getId())) {
throw new CommonException("该模板不可修改,请修改最新版本"); throw new CommonException("该模板不可修改,请修改最新版本");
@ -140,7 +140,7 @@ public class ParameterServiceImpl implements ParameterService {
/** /**
* 创建/复用新版本模板 * 创建/复用新版本模板
*/ */
private Template createOrReuseNewTemplate(TemplateBenchmark benchmark, String userId) { public Template createOrReuseNewTemplate(TemplateBenchmark benchmark, String userId) {
Template baseTemplate = benchmark.getBaseTemplate(); Template baseTemplate = benchmark.getBaseTemplate();
// 草稿状态复用原模板已发布创建新版本 // 草稿状态复用原模板已发布创建新版本
if ("DRAFT".equals(baseTemplate.getStatus())) { if ("DRAFT".equals(baseTemplate.getStatus())) {
@ -161,7 +161,7 @@ public class ParameterServiceImpl implements ParameterService {
} }
} }
private TemplateBenchmark getTemplateBenchmark(String templateRowId) { public TemplateBenchmark getTemplateBenchmark(String templateRowId) {
// 基准模板用户选择的要比较的版本 // 基准模板用户选择的要比较的版本
Template baseTemplate = bd.getBusinessDatabase() Template baseTemplate = bd.getBusinessDatabase()
.rowid("id", templateRowId) .rowid("id", templateRowId)
@ -196,7 +196,7 @@ public class ParameterServiceImpl implements ParameterService {
*/ */
@Data @Data
@AllArgsConstructor @AllArgsConstructor
private static class TemplateBenchmark { public static class TemplateBenchmark {
private final Template baseTemplate; private final Template baseTemplate;
private final Template lastTemplate; private final Template lastTemplate;
private final List<Parameter> parameters; private final List<Parameter> parameters;
@ -207,7 +207,7 @@ public class ParameterServiceImpl implements ParameterService {
*/ */
@Data @Data
@AllArgsConstructor @AllArgsConstructor
private static class ParameterProcessingResult { public static class ParameterProcessingResult {
private final List<Parameter> newParameters; private final List<Parameter> newParameters;
private final List<RevisionRecord> revisionRecords; private final List<RevisionRecord> revisionRecords;
} }
@ -220,12 +220,13 @@ public class ParameterServiceImpl implements ParameterService {
} }
} }
private ParameterProcessingResult processParameters( public ParameterProcessingResult processParameters(
List<ParameterForm> parameterForms, List<ParameterForm> parameterForms,
List<Parameter> existingParameters, List<Parameter> existingParameters,
Template baseTemplate, Template baseTemplate,
Template newTemplate, Template newTemplate,
String userId String userId,
boolean isLastComplete
) { ) {
Map<String, Parameter> parameterMap = existingParameters.stream() Map<String, Parameter> parameterMap = existingParameters.stream()
.collect(Collectors.toMap(Parameter::getId, param -> param, (k1, k2) -> { .collect(Collectors.toMap(Parameter::getId, param -> param, (k1, k2) -> {
@ -252,13 +253,18 @@ public class ParameterServiceImpl implements ParameterService {
handleDeleteOperation(parameterForm, parameterMap, newTemplate, revisionRecords, baseTemplate); handleDeleteOperation(parameterForm, parameterMap, newTemplate, revisionRecords, baseTemplate);
break; break;
case UNCHANGED: case UNCHANGED:
handleUnchangedOperation(parameterForm, parameterMap, newParameters); handleUnchangedOperation(parameterForm, parameterMap, newParameters, isLastComplete);
break; break;
} }
} }
// 处理模板剩余的参数 // 处理模板剩余的参数
List<Parameter> unmatchedParameters = findUnmatchedParameters(parameterMap, parameterForms); List<Parameter> unmatchedParameters = findUnmatchedParameters(parameterMap, parameterForms);
// 未修改的参数也需要新增然后添加进新的参数列表中
if (!isLastComplete && !unmatchedParameters.isEmpty()) {
unmatchedParameters.forEach(parameter -> parameter.setId(null));
bd.getBusinessDatabase().doBatchInsert(unmatchedParameters);
}
newParameters.addAll(unmatchedParameters); newParameters.addAll(unmatchedParameters);
return new ParameterProcessingResult(newParameters, revisionRecords); return new ParameterProcessingResult(newParameters, revisionRecords);
} }
@ -370,7 +376,7 @@ public class ParameterServiceImpl implements ParameterService {
private String handleParameterChange(String name, String originalParameter, String updatedParameter) { private String handleParameterChange(String name, String originalParameter, String updatedParameter) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
if ((originalParameter == null && updatedParameter.isEmpty())) { if ((originalParameter == null && (updatedParameter == null || updatedParameter.isEmpty()))) {
return sb.toString(); return sb.toString();
} }
if (!Objects.equals(originalParameter, updatedParameter)) { if (!Objects.equals(originalParameter, updatedParameter)) {
@ -421,13 +427,18 @@ public class ParameterServiceImpl implements ParameterService {
*/ */
private void handleUnchangedOperation( private void handleUnchangedOperation(
ParameterForm form, Map<String, Parameter> parameterMap, ParameterForm form, Map<String, Parameter> parameterMap,
List<Parameter> newParameters List<Parameter> newParameters, boolean isLastComplete
) { ) {
Parameter unchangedParameter = parameterMap.get(form.getParameterId()); Parameter unchangedParameter = parameterMap.get(form.getParameterId());
if (unchangedParameter == null) {
if (unchangedParameter != null) { return;
newParameters.add(unchangedParameter);
} }
// 未修改的参数也需要新增然后添加进新的参数列表中
if (!isLastComplete) {
unchangedParameter.setId(null);
bd.getBusinessDatabase().doInsert(unchangedParameter);
}
newParameters.add(unchangedParameter);
} }
public List<Parameter> findUnmatchedParameters( public List<Parameter> findUnmatchedParameters(
@ -446,7 +457,7 @@ public class ParameterServiceImpl implements ParameterService {
/** /**
* 保存所有数据 * 保存所有数据
*/ */
private void saveAllData(Template originalTemplate, Template newTemplate, ParameterProcessingResult result) { public void saveAllData(Template originalTemplate, Template newTemplate, ParameterProcessingResult result) {
List<String> parameterIds = bd.getBusinessDatabase() List<String> parameterIds = bd.getBusinessDatabase()
.eq("template_id", newTemplate.getId()) .eq("template_id", newTemplate.getId())
.doQuery(TemplateAndParameter.class).stream() .doQuery(TemplateAndParameter.class).stream()

View File

@ -296,12 +296,18 @@ public class TemplateServiceImpl implements TemplateService {
.eq("template_name", templateName) .eq("template_name", templateName)
.doQueryFirst(Template.class); .doQueryFirst(Template.class);
List<Parameter> lastTemplateParameters = new ArrayList<>();
if (lastTemplate != null) { if (lastTemplate != null) {
// 基于最新版本创建新版本 // 基于最新版本创建新版本
targetTemplate = new Template( targetTemplate = new Template(
templateName, lastTemplate.getVersion() + 1, "DRAFT", templateName, lastTemplate.getVersion() + 1, "DRAFT",
Timestamp.valueOf(LocalDateTime.now()), null, createBy, System.currentTimeMillis(), 0 Timestamp.valueOf(LocalDateTime.now()), null, createBy, System.currentTimeMillis(), 0
); );
lastTemplateParameters = bd.getBusinessDatabase()
.viewQueryMode(true)
.view("selectParametersByTId")
.setVar("templateId", lastTemplate.getId())
.doQuery(Parameter.class);
} else { } else {
// 如果没有同名模板创建第一个版本 // 如果没有同名模板创建第一个版本
targetTemplate = new Template( targetTemplate = new Template(
@ -309,7 +315,21 @@ public class TemplateServiceImpl implements TemplateService {
null, createBy, System.currentTimeMillis(), 0 null, createBy, System.currentTimeMillis(), 0
); );
} }
bd.getBusinessDatabase().doInsert(targetTemplate); bd.getBusinessDatabase().doInsert(targetTemplate);
if (!lastTemplateParameters.isEmpty()) {
lastTemplateParameters.forEach(parameter -> parameter.setId(null));
bd.getBusinessDatabase().doBatchInsert(lastTemplateParameters);
List<TemplateAndParameter> list = new ArrayList<>();
for (Parameter parameter : lastTemplateParameters) {
TemplateAndParameter templateAndParameter = new TemplateAndParameter();
templateAndParameter.setTemplateId(targetTemplate.getId());
templateAndParameter.setParameterId(parameter.getId());
list.add(templateAndParameter);
}
bd.getBusinessDatabase().doBatchInsert(list);
}
} }
// 获取目标模板的现有参数 // 获取目标模板的现有参数