模板新增问题修改

This commit is contained in:
zjh 2025-12-04 15:11:49 +08:00
parent f0e5fcbae8
commit 3bcb4da432
19 changed files with 40 additions and 63 deletions

View File

@ -1,20 +1,14 @@
package com.xdap.self_development.controller;
import cn.hutool.core.codec.Base64;
import cn.hutool.json.JSONUtil;
import com.definesys.mpaas.common.http.Response;
import com.xdap.self_development.config.BusinessDatabase;
import com.xdap.self_development.feign.ApaasMyTokenFeign;
import com.xdap.self_development.feign.dto.AppTokenDTO;
import com.xdap.self_development.feign.dto.FileUploadDTO;
import com.xdap.self_development.feign.dto.UserTokenDT0;
import com.xdap.self_development.pojo.*;
import lombok.extern.slf4j.Slf4j;
import org.bson.types.ObjectId;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.HashMap;

View File

@ -14,7 +14,6 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.util.List;
@RestController

View File

@ -1,11 +1,8 @@
package com.xdap.self_development.controller.form;
import lombok.Data;
import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
public class BenchmarkingReportPageForm {

View File

@ -1,7 +1,6 @@
package com.xdap.self_development.controller.form;
import lombok.Data;
import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.constraints.NotBlank;

View File

@ -3,7 +3,6 @@ package com.xdap.self_development.controller.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
public class ParameterForm {

View File

@ -1,8 +1,6 @@
package com.xdap.self_development.controller.form;
import lombok.Data;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;

View File

@ -5,7 +5,6 @@ import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data

View File

@ -1,13 +1,14 @@
package com.xdap.self_development.pojo;
import com.definesys.mpaas.query.annotation.*;
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.model.MpaasBasePojo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.sql.Timestamp;
import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Data

View File

@ -1,7 +1,5 @@
package com.xdap.self_development.pojo;
import com.definesys.mpaas.query.annotation.SQL;
import com.definesys.mpaas.query.annotation.SQLQuery;
import com.definesys.mpaas.query.annotation.Table;
import com.xdap.api.moudle.base.entity.NoTenBasePojo;
import lombok.Data;

View File

@ -1,6 +1,8 @@
package com.xdap.self_development.pojo;
import com.definesys.mpaas.query.annotation.*;
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.model.MpaasBasePojo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

View File

@ -8,7 +8,6 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.bouncycastle.util.Times;
import java.sql.Timestamp;
@ -27,11 +26,12 @@ public class RevisionRecord extends MpaasBasePojo {
private String preTemplateId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Timestamp createdTime;
private String parameterId;
public RevisionRecord(String templateName, Integer version,
Integer parameterNumber, String modifyDetails,
String templateId, String preTemplateId,
Timestamp createdTime) {
Timestamp createdTime, String parameterId) {
this.templateName = templateName;
this.version = version;
this.parameterNumber = parameterNumber;
@ -39,5 +39,6 @@ public class RevisionRecord extends MpaasBasePojo {
this.templateId = templateId;
this.preTemplateId = preTemplateId;
this.createdTime = createdTime;
this.parameterId = parameterId;
}
}

View File

@ -12,11 +12,11 @@ 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"
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(view = "getNewTemplate",
sql = "SELECT t.* FROM yfsjglpt_model_template t JOIN ( SELECT template_name, MAX(version) AS latest_version FROM yfsjglpt_model_template GROUP BY template_name ) latest_template ON t.template_name = latest_template.template_name AND t.version = latest_template.latest_version")
sql = "SELECT t.* FROM yfsjglpt_model_template t JOIN ( SELECT template_name, MAX(version) AS latest_version FROM yfsjglpt_model_template GROUP BY template_name ) latest_template ON t.template_name = latest_template.template_name AND t.version = latest_template.latest_version ")
})
@EqualsAndHashCode(callSuper = true)
@Data

View File

@ -6,7 +6,7 @@ import lombok.Data;
@SQLQuery(value = {
@SQL(view = "getParameterAndChange",
sql = "SELECT p.*, r.modify_details FROM yfsjglpt_model_parameter_and_template tap INNER JOIN yfsjglpt_model_parameter p ON tap.parameter_id = p.id LEFT JOIN yfsjglpt_model_revision_record r ON tap.template_id = r.template_id AND p.parameter_number = r.parameter_number WHERE tap.template_id = #templateId ORDER BY p.parameter_number")
sql = "SELECT p.*, r.modify_details FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY parameter_id ORDER BY created_time DESC) AS rn FROM yfsjglpt_model_revision_record ) r LEFT JOIN yfsjglpt_model_parameter p ON r.parameter_id = p.id WHERE r.rn = 1 and r.template_id = #templateId")
})
@Data
public class TemplateChangeView {

View File

@ -4,8 +4,6 @@ import com.definesys.mpaas.query.annotation.SQL;
import com.definesys.mpaas.query.annotation.SQLQuery;
import lombok.Data;
import java.util.List;
@SQLQuery(value = {
@SQL(view = "getAllRoleUserAndPerm",
sql = "SELECT r.id as roleId, r.role_name as roleName, GROUP_CONCAT(DISTINCT u.username) AS userNames , GROUP_CONCAT(DISTINCT p.permission_name) AS permissionNames FROM yfsjglpt_model_roles r LEFT JOIN yfsjglpt_model_user_roles ur ON r.id = ur.role_id LEFT JOIN yfsjglpt_model_role_permissions rp ON r.id = rp.role_id LEFT JOIN yfsjglpt_model_permissions p ON rp.permission_id = p.id LEFT JOIN xdap_users u ON u.id = ur.user_id GROUP BY r.id, r.role_name, r.description ORDER BY r.role_name")

View File

@ -2,7 +2,6 @@ package com.xdap.self_development.service;
import com.definesys.mpaas.query.db.PageQueryResult;
import com.xdap.self_development.controller.form.ParameterPageForm;
import com.xdap.self_development.controller.form.TemplateRowIdForm;
import com.xdap.self_development.controller.form.UpdateParameterForm;
import com.xdap.self_development.pojo.Parameter;
import com.xdap.self_development.pojo.view.TemplateInfoView;

View File

@ -5,11 +5,9 @@ import com.xdap.self_development.controller.form.DeptResponsiblePageForm;
import com.xdap.self_development.controller.form.ResponsiblePersonForm;
import com.xdap.self_development.controller.form.UpdateResponsiblePersonForm;
import com.xdap.self_development.pojo.ResponsiblePerson;
import com.xdap.self_development.pojo.Template;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.util.List;
import java.util.Set;
public interface ResponsiblePersonService {

View File

@ -9,7 +9,6 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
public interface TemplateService {
PageQueryResult<Template> getTemplateByCondition(TemplatePageForm form);

View File

@ -76,12 +76,6 @@ public class ParameterServiceImpl implements ParameterService {
if (Objects.equals(benchmark.getLastTemplate().getId(), benchmark.getBaseTemplate().getId())
&& Objects.equals(benchmark.getBaseTemplate().getStatus(), "DRAFT")
&& Objects.equals(benchmark.getLastTemplate().getStatus(), "DRAFT")) {
if (!benchmark.getParameters().isEmpty()) {
// 清除原来的关联关系
bd.getBusinessDatabase().eq("template_id", benchmark.getBaseTemplate().getId()).doDelete(TemplateAndParameter.class);
List<String> parameterIds = benchmark.getParameters().stream().map(Parameter::getId).collect(Collectors.toList());
bd.getBusinessDatabase().in("id", parameterIds).doDelete(Parameter.class);
}
newVersionTemplate = benchmark.getBaseTemplate();
}
// 否则创建新版本
@ -94,8 +88,6 @@ public class ParameterServiceImpl implements ParameterService {
bd.getBusinessDatabase().doInsert(newVersionTemplate);
}
// 4. 处理参数变更
ParameterProcessingResult processingResult = processParameters(
form.getParameterForms(),
@ -179,6 +171,10 @@ public class ParameterServiceImpl implements ParameterService {
Template newTemplate)
{
Map<Integer, Parameter> parameterMap = createParameterMap(existingParameters);
if (!existingParameters.isEmpty()) {
// 清除原来的关联关系
bd.getBusinessDatabase().eq("template_id", baseTemplate.getId()).doDelete(TemplateAndParameter.class);
}
List<Parameter> newParameters = new ArrayList<>();
List<RevisionRecord> revisionRecords = new ArrayList<>();
@ -260,7 +256,7 @@ public class ParameterServiceImpl implements ParameterService {
throw new CommonException("参数编号重复");
}
}
bd.getBusinessDatabase().doInsert(newParameter);
newParameters.add(newParameter);
revisionRecords.add(new RevisionRecord(
newTemplate.getTemplateName(),
@ -269,7 +265,8 @@ public class ParameterServiceImpl implements ParameterService {
"新增参数",
newTemplate.getId(),
null,
Timestamp.valueOf(LocalDateTime.now())
Timestamp.valueOf(LocalDateTime.now()),
newParameter.getId()
));
}
@ -289,11 +286,10 @@ public class ParameterServiceImpl implements ParameterService {
Parameter updatedParameter = new Parameter();
BeanUtils.copyProperties(form, updatedParameter);
String detail = getParameterChange(originalParameter, updatedParameter);
bd.getBusinessDatabase().doInsert(updatedParameter);
newParameters.add(updatedParameter);
revisionRecords.add(new RevisionRecord(
newTemplate.getTemplateName(),
newTemplate.getVersion(),
@ -301,7 +297,8 @@ public class ParameterServiceImpl implements ParameterService {
detail,
newTemplate.getId(),
baseTemplate.getId(),
Timestamp.valueOf(LocalDateTime.now())
Timestamp.valueOf(LocalDateTime.now()),
updatedParameter.getId()
));
}
@ -354,7 +351,8 @@ public class ParameterServiceImpl implements ParameterService {
"删除参数",
newTemplate.getId(),
baseTemplate.getId(),
Timestamp.valueOf(LocalDateTime.now())
Timestamp.valueOf(LocalDateTime.now()),
deletedParameter.getId()
));
}
}
@ -369,11 +367,7 @@ public class ParameterServiceImpl implements ParameterService {
Parameter unchangedParameter = parameterMap.get(form.getParameterNumber());
if (unchangedParameter != null) {
Parameter parameterCopy = new Parameter();
BeanUtils.copyProperties(unchangedParameter, parameterCopy);
parameterCopy.setId(null);
parameterCopy.setRowId(null);
newParameters.add(parameterCopy);
newParameters.add(unchangedParameter);
}
}
@ -381,8 +375,6 @@ public class ParameterServiceImpl implements ParameterService {
* 保存所有数据
*/
private void saveAllData(Template newTemplate, ParameterProcessingResult result) {
// 批量保存参数
bd.getBusinessDatabase().doBatchInsert(result.getNewParameters());
// 创建并保存模板参数关联
List<TemplateAndParameter> templateAndParameters = result.getNewParameters().stream()
.map(parameter -> createTemplateAndParameter(newTemplate.getId(), parameter.getId()))

View File

@ -18,6 +18,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@ -294,13 +295,16 @@ public class TemplateServiceImpl implements TemplateService {
List<RevisionRecord> revisionRecords = dataList.stream()
.map(parameter -> {
RevisionRecord revision = new RevisionRecord();
revision.setTemplateName(finalLastTemplate.getTemplateName());
revision.setVersion(finalLastTemplate.getVersion());
revision.setParameterNumber(parameter.getParameterNumber());
revision.setModifyDetails("新增参数");
revision.setTemplateId(finalLastTemplate.getId());
return revision;
return new RevisionRecord(
finalLastTemplate.getTemplateName(),
finalLastTemplate.getVersion(),
parameter.getParameterNumber(),
"新增参数",
finalLastTemplate.getId(),
null,
Timestamp.valueOf(LocalDateTime.now()),
parameter.getId()
);
})
.collect(Collectors.toList());