修改:模板导入问题

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,
@SQLQuery(value = {
@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
public class TodoAndReportListView {

View File

@ -1,13 +1,35 @@
package com.xdap.self_development.service;
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.UpdateParameterForm;
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.service.impl.ParameterServiceImpl;
import java.util.List;
public interface ParameterService {
MyPageResult<Parameter> getParameterByCondition(ParameterPageForm 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.xdap.self_development.common.MyPageResult;
import com.xdap.self_development.common.UserPermissionGetter;
import com.xdap.self_development.config.BusinessDatabase;
import com.xdap.self_development.controller.form.ParameterForm;
import com.xdap.self_development.controller.form.ParameterPageForm;
@ -33,7 +32,7 @@ public class ParameterServiceImpl implements ParameterService {
@Resource
private BusinessDatabase bd;
@Resource
private UserPermissionGetter permissionGetter;
private ParameterService myself;
@Override
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(),
benchmark.getParameters(),
benchmark.getBaseTemplate(),
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();
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())) {
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();
// 草稿状态复用原模板已发布创建新版本
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()
.rowid("id", templateRowId)
@ -196,7 +196,7 @@ public class ParameterServiceImpl implements ParameterService {
*/
@Data
@AllArgsConstructor
private static class TemplateBenchmark {
public static class TemplateBenchmark {
private final Template baseTemplate;
private final Template lastTemplate;
private final List<Parameter> parameters;
@ -207,7 +207,7 @@ public class ParameterServiceImpl implements ParameterService {
*/
@Data
@AllArgsConstructor
private static class ParameterProcessingResult {
public static class ParameterProcessingResult {
private final List<Parameter> newParameters;
private final List<RevisionRecord> revisionRecords;
}
@ -220,12 +220,13 @@ public class ParameterServiceImpl implements ParameterService {
}
}
private ParameterProcessingResult processParameters(
public ParameterProcessingResult processParameters(
List<ParameterForm> parameterForms,
List<Parameter> existingParameters,
Template baseTemplate,
Template newTemplate,
String userId
String userId,
boolean isLastComplete
) {
Map<String, Parameter> parameterMap = existingParameters.stream()
.collect(Collectors.toMap(Parameter::getId, param -> param, (k1, k2) -> {
@ -252,13 +253,18 @@ public class ParameterServiceImpl implements ParameterService {
handleDeleteOperation(parameterForm, parameterMap, newTemplate, revisionRecords, baseTemplate);
break;
case UNCHANGED:
handleUnchangedOperation(parameterForm, parameterMap, newParameters);
handleUnchangedOperation(parameterForm, parameterMap, newParameters, isLastComplete);
break;
}
}
// 处理模板剩余的参数
List<Parameter> unmatchedParameters = findUnmatchedParameters(parameterMap, parameterForms);
// 未修改的参数也需要新增然后添加进新的参数列表中
if (!isLastComplete && !unmatchedParameters.isEmpty()) {
unmatchedParameters.forEach(parameter -> parameter.setId(null));
bd.getBusinessDatabase().doBatchInsert(unmatchedParameters);
}
newParameters.addAll(unmatchedParameters);
return new ParameterProcessingResult(newParameters, revisionRecords);
}
@ -370,7 +376,7 @@ public class ParameterServiceImpl implements ParameterService {
private String handleParameterChange(String name, String originalParameter, String updatedParameter) {
StringBuilder sb = new StringBuilder();
if ((originalParameter == null && updatedParameter.isEmpty())) {
if ((originalParameter == null && (updatedParameter == null || updatedParameter.isEmpty()))) {
return sb.toString();
}
if (!Objects.equals(originalParameter, updatedParameter)) {
@ -421,13 +427,18 @@ public class ParameterServiceImpl implements ParameterService {
*/
private void handleUnchangedOperation(
ParameterForm form, Map<String, Parameter> parameterMap,
List<Parameter> newParameters
List<Parameter> newParameters, boolean isLastComplete
) {
Parameter unchangedParameter = parameterMap.get(form.getParameterId());
if (unchangedParameter != null) {
newParameters.add(unchangedParameter);
if (unchangedParameter == null) {
return;
}
// 未修改的参数也需要新增然后添加进新的参数列表中
if (!isLastComplete) {
unchangedParameter.setId(null);
bd.getBusinessDatabase().doInsert(unchangedParameter);
}
newParameters.add(unchangedParameter);
}
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()
.eq("template_id", newTemplate.getId())
.doQuery(TemplateAndParameter.class).stream()

View File

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