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