修改:模板导入问题
This commit is contained in:
parent
90c893df58
commit
f691877b83
@ -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 {
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
// 获取目标模板的现有参数
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user