Merge remote-tracking branch 'origin/master'

This commit is contained in:
ys.git 2025-12-14 10:06:27 +08:00
commit 6190a48f36
10 changed files with 104 additions and 31 deletions

View File

@ -32,10 +32,12 @@ public class DeleteController {
@GetMapping("/getTables") @GetMapping("/getTables")
public Response getTables() { public Response getTables(String ztj, String z_wlms) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
List<Map<String, Object>> list = queryFactory List<Map<String, Object>> list = queryFactory
.buildFromDatasource("yc_lrs_test_relsult") .buildFromDatasource("yc_lrs_test_relsult")
.eq("ztj", ztj)
.eq("z_wlms", z_wlms)
.table("ads_prd_f_yfsjglpt_fdjlbjcjb") .table("ads_prd_f_yfsjglpt_fdjlbjcjb")
.doQuery(); .doQuery();
List<Map<String, Object>> list1 = queryFactory List<Map<String, Object>> list1 = queryFactory

View File

@ -3,9 +3,13 @@ package com.xdap.self_development.controller.form;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data @Data
public class UpdateTemplateForm { public class UpdateTemplateForm {
@NotNull(message = "顺序不能为空")
private Integer orderNum;
@NotBlank(message = "模板名不能为空") @NotBlank(message = "模板名不能为空")
private String templateName; private String templateName;

View File

@ -33,6 +33,7 @@ public class SheetDataListener implements ReadListener<Parameter> {
private final Set<String> requiredHeaders; private final Set<String> requiredHeaders;
// 标记当前sheet是否有效 // 标记当前sheet是否有效
private boolean validSheet = false; private boolean validSheet = false;
private Set<Integer> someNumber = new HashSet<>();
public SheetDataListener(TemplateService templateService, public SheetDataListener(TemplateService templateService,
String templateRowId, String createBy, MyResponse problems, Integer maxOrder) { String templateRowId, String createBy, MyResponse problems, Integer maxOrder) {
@ -53,6 +54,7 @@ public class SheetDataListener implements ReadListener<Parameter> {
.filter(Objects::nonNull) .filter(Objects::nonNull)
.collect(Collectors.toSet()); .collect(Collectors.toSet());
currentSheetName = context.readSheetHolder().getSheetName(); currentSheetName = context.readSheetHolder().getSheetName();
someNumber = new HashSet<>();
log.info("开始解析Sheet: {}", currentSheetName); log.info("开始解析Sheet: {}", currentSheetName);
} }
@ -69,6 +71,28 @@ public class SheetDataListener implements ReadListener<Parameter> {
return; return;
} }
if (data.getSubsystemName() == null) {
problems.setFlag(true);
problems.getErrors().add(currentSheetName +"模板的参数"+data.getParameterName()+"的子系统字段为空");
return;
}
if (data.getPartsName() == null || data.getPartsName().isEmpty()) {
data.setPartsName("/");
}
if (data.getParameterNumber() == null) {
problems.setFlag(true);
problems.getErrors().add(currentSheetName +"模板的参数"+data.getParameterName()+"的序号字段为空");
return;
}
if (!someNumber.add(data.getParameterNumber())) {
problems.setFlag(true);
problems.getErrors().add(currentSheetName +"模板的参数"+data.getParameterName()+"的序号字段重复");
return;
}
if (currentSheetName == null) { if (currentSheetName == null) {
currentSheetName = context.readSheetHolder().getSheetName(); currentSheetName = context.readSheetHolder().getSheetName();
} }

View File

@ -10,11 +10,11 @@ import lombok.NoArgsConstructor;
@SQLQuery(value = { @SQLQuery(value = {
@SQL(view = "selectParametersByTIdAndCreateBy", @SQL(view = "selectParametersByTIdAndCreateBy",
sql = "select p.* from yfsjglpt_model_parameter p left join yfsjglpt_model_parameter_and_template tap on p.id = tap.parameter_id where tap.template_id = #templateId and p.created_by = #createdBy"), sql = "select p.* from yfsjglpt_model_parameter p left join yfsjglpt_model_parameter_and_template tap on p.id = tap.parameter_id where tap.template_id = #templateId and p.created_by = #createdBy order by p.parameter_number"),
@SQL(view = "selectParametersByTId", @SQL(view = "selectParametersByTId",
sql = "select p.* from yfsjglpt_model_parameter p left join yfsjglpt_model_parameter_and_template tap on p.id = tap.parameter_id where tap.template_id = #templateId"), sql = "select p.* from yfsjglpt_model_parameter p left join yfsjglpt_model_parameter_and_template tap on p.id = tap.parameter_id where tap.template_id = #templateId order by p.parameter_number"),
@SQL(view = "getAllSubsystemAndPara", @SQL(view = "getAllSubsystemAndPara",
sql = "SELECT DISTINCT mp.subsystem_name, mp.parameter_name, mp.id, mp.parameter_type, mt.order_num FROM yfsjglpt_model_parameter mp INNER JOIN yfsjglpt_model_parameter_and_template mpat ON mp.id = mpat.parameter_id INNER JOIN yfsjglpt_model_template mt ON mpat.template_id = mt.id INNER JOIN ( SELECT template_name, MAX(version) AS max_version FROM yfsjglpt_model_template WHERE status = 'COMPLETE' GROUP BY template_name ) latest ON mt.template_name = latest.template_name AND mt.version = latest.max_version WHERE mt.status = 'COMPLETE' ORDER BY mt.order_num"), sql = "SELECT DISTINCT mp.subsystem_name, mp.parameter_name, mp.id, mp.parameter_type, mp.parts_name, mt.order_num FROM yfsjglpt_model_parameter mp INNER JOIN yfsjglpt_model_parameter_and_template mpat ON mp.id = mpat.parameter_id INNER JOIN yfsjglpt_model_template mt ON mpat.template_id = mt.id INNER JOIN ( SELECT template_name, MAX(version) AS max_version FROM yfsjglpt_model_template WHERE status = 'COMPLETE' GROUP BY template_name ) latest ON mt.template_name = latest.template_name AND mt.version = latest.max_version WHERE mt.status = 'COMPLETE' ORDER BY mt.order_num"),
@SQL(view = "getAllSubsystem", @SQL(view = "getAllSubsystem",
sql = "SELECT DISTINCT mp.subsystem_name FROM yfsjglpt_model_parameter mp INNER JOIN yfsjglpt_model_parameter_and_template mpat ON mp.id = mpat.parameter_id INNER JOIN yfsjglpt_model_template mt ON mpat.template_id = mt.id INNER JOIN ( SELECT template_name, MAX(version) AS max_version FROM yfsjglpt_model_template WHERE status = 'COMPLETE' GROUP BY template_name ) latest ON mt.template_name = latest.template_name AND mt.version = latest.max_version WHERE mt.status = 'COMPLETE' ORDER BY mp.subsystem_name"), sql = "SELECT DISTINCT mp.subsystem_name FROM yfsjglpt_model_parameter mp INNER JOIN yfsjglpt_model_parameter_and_template mpat ON mp.id = mpat.parameter_id INNER JOIN yfsjglpt_model_template mt ON mpat.template_id = mt.id INNER JOIN ( SELECT template_name, MAX(version) AS max_version FROM yfsjglpt_model_template WHERE status = 'COMPLETE' GROUP BY template_name ) latest ON mt.template_name = latest.template_name AND mt.version = latest.max_version WHERE mt.status = 'COMPLETE' ORDER BY mp.subsystem_name"),
@SQL(view = "selectParametersByTemplateId", @SQL(view = "selectParametersByTemplateId",

View File

@ -14,7 +14,7 @@ import java.sql.Timestamp;
sql = "SELECT * FROM ( SELECT *, MAX(order_num) OVER (PARTITION BY template_name ) AS maxOrder , ROW_NUMBER() OVER (PARTITION BY template_name ORDER BY order_num DESC) AS rn FROM yfsjglpt_model_template ) tmp WHERE rn = 1"), sql = "SELECT * FROM ( SELECT *, MAX(order_num) OVER (PARTITION BY template_name ) AS maxOrder , ROW_NUMBER() OVER (PARTITION BY template_name ORDER BY order_num DESC) AS rn FROM yfsjglpt_model_template ) tmp WHERE rn = 1"),
// 查找每个模板的最新版本并且优先级按照已发布审核中草稿状态转变只有这三种状态 // 查找每个模板的最新版本并且优先级按照已发布审核中草稿状态转变只有这三种状态
@SQL(view = "getLatestTemplate", @SQL(view = "getLatestTemplate",
sql = "SELECT ranked.id, ranked.template_name, ranked.version, ranked.status, ranked.created_time , ranked.published_time, xu.username AS 'createBy' 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 LEFT JOIN xdap_users xu ON xu.id = ranked.create_by 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 = "SELECT ranked.order_num, ranked.id, ranked.template_name, ranked.version, ranked.status, ranked.created_time , ranked.published_time, xu.username AS 'createBy' 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 LEFT JOIN xdap_users xu ON xu.id = ranked.create_by 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(view = "getNewTemplate",

View File

@ -17,4 +17,7 @@ public class ParametersView {
private String parameterId; private String parameterId;
private String parameterName; private String parameterName;
private String parameterType; private String parameterType;
private String subsystem;
private String partsName;
} }

View File

@ -169,7 +169,13 @@ public class CommonParameterServiceImpl implements CommonParameterService {
ModelCommonItem item = new ModelCommonItem(); ModelCommonItem item = new ModelCommonItem();
item.setSubsystem(entry.getKey()); item.setSubsystem(entry.getKey());
List<ParametersView> parameters = entry.getValue().stream() List<ParametersView> parameters = entry.getValue().stream()
.map(param -> new ParametersView(param.getId(), param.getParameterName(), param.getParameterType())) .map(param -> new ParametersView(
param.getId(),
param.getParameterName(),
param.getParameterType(),
param.getSubsystemName(),
param.getPartsName()
))
.collect(Collectors.toList()); .collect(Collectors.toList());
item.setParameters(parameters); item.setParameters(parameters);
return item; return item;
@ -203,7 +209,12 @@ public class CommonParameterServiceImpl implements CommonParameterService {
ModelCommonItem item = new ModelCommonItem(); ModelCommonItem item = new ModelCommonItem();
item.setSubsystem(subsystemEntry.getKey()); item.setSubsystem(subsystemEntry.getKey());
List<ParametersView> parameters = subsystemEntry.getValue().stream() List<ParametersView> parameters = subsystemEntry.getValue().stream()
.map(param -> new ParametersView(param.getParameterId(), param.getParameterName(), param.getSubsystemName())) .map(param -> new ParametersView(
param.getParameterId(),
param.getParameterName(),
param.getSubsystemName(),
null,null
))
.collect(Collectors.toList()); .collect(Collectors.toList());
item.setParameters(parameters); item.setParameters(parameters);
items.add(item); items.add(item);

View File

@ -92,30 +92,28 @@ public class ParameterServiceImpl implements ParameterService {
// 获取基准模板和最新模板 // 获取基准模板和最新模板
TemplateBenchmark benchmark = getTemplateBenchmark(form.getTemplateRowId()); TemplateBenchmark benchmark = getTemplateBenchmark(form.getTemplateRowId());
Template newVersionTemplate; Template newVersionTemplate;
// 如果当前修改的模板为最新版并且为草稿状态就不需要新建版本
if (Objects.equals(benchmark.getLastTemplate().getId(), benchmark.getBaseTemplate().getId()) // 当前修改的模板不为最新版
&& Objects.equals(benchmark.getBaseTemplate().getStatus(), "DRAFT") if (!Objects.equals(benchmark.getLastTemplate().getId(), benchmark.getBaseTemplate().getId())) {
&& Objects.equals(benchmark.getLastTemplate().getStatus(), "DRAFT")) { throw new CommonException("该状态的模板不可修改");
}
// 当前模板为草稿状态
if (Objects.equals(benchmark.getBaseTemplate().getStatus(), "DRAFT")) {
newVersionTemplate = benchmark.getBaseTemplate(); newVersionTemplate = benchmark.getBaseTemplate();
} }
// 否则创建新版本 // 当前模板为已发布状态
else if (Objects.equals(benchmark.getBaseTemplate().getStatus(), "COMPLETE")) {
newVersionTemplate = new Template(
benchmark.getLastTemplate().getTemplateName(), calculateNextVersion(benchmark.getLastTemplate().getVersion()),
"DRAFT", Timestamp.valueOf(LocalDateTime.now()), null, permissionGetter.getCurrentUserId(),getMaxOrder()
);
// 保存新模板
bd.getBusinessDatabase().doInsert(newVersionTemplate);
}
// 其他状态
else { else {
switch (benchmark.getLastTemplate().getStatus()) { throw new CommonException("该状态的模板不可修改");
// 如果最新版本为草稿状态沿用该版本
case "DRAFT":
throw new CommonException("最新模板为草稿状态,暂时无法新建版本");
// 如果最新版本为审核中则不允许新建版本
case "APPROVING":
throw new CommonException("最新模板审核中,暂时无法新建版本");
// 如果最新版本为已完成创建新版本
default:
newVersionTemplate = new Template(
benchmark.getLastTemplate().getTemplateName(), calculateNextVersion(benchmark.getLastTemplate().getVersion()),
"DRAFT", Timestamp.valueOf(LocalDateTime.now()), null, permissionGetter.getCurrentUserId(),getMaxOrder()
);
// 保存新模板
bd.getBusinessDatabase().doInsert(newVersionTemplate);
}
} }
// 4. 处理参数变更 // 4. 处理参数变更

View File

@ -338,15 +338,17 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
flow.setFlowStatus("COMPLETE"); flow.setFlowStatus("COMPLETE");
flow.setCurrentNode(null); flow.setCurrentNode(null);
template.setStatus("COMPLETE"); template.setStatus("COMPLETE");
bd.getBusinessDatabase()
.eq("template_name", template.getTemplateName())
.update("status", "HISTORY")
.doUpdate(Template.class);
bd.getBusinessDatabase() bd.getBusinessDatabase()
.rowid("id", template.getRowId()) .rowid("id", template.getRowId())
.update("status", template.getStatus()) .update("status", template.getStatus())
.update("published_time", Timestamp.valueOf(LocalDateTime.now())) .update("published_time", Timestamp.valueOf(LocalDateTime.now()))
.doUpdate(Template.class); .doUpdate(Template.class);
// 更新机型版本 // 更新机型版本
dataEntryEngineModelService.updateModelForNewVersion(); dataEntryEngineModelService.updateModelForNewVersion();
clearProcessed(flow); clearProcessed(flow);
} else { } else {
flow.setCurrentNode(nextNode); flow.setCurrentNode(nextNode);

View File

@ -64,13 +64,14 @@ public class TemplateServiceImpl implements TemplateService {
// 创建新模板 // 创建新模板
Template newTemplate = new Template( Template newTemplate = new Template(
form.getTemplateName(), 1, "DRAFT", Timestamp.valueOf(LocalDateTime.now()), form.getTemplateName(), 1, "DRAFT", Timestamp.valueOf(LocalDateTime.now()),
null, permissionGetter.getCurrentUserId(), 1 null, permissionGetter.getCurrentUserId(), getMaxOrder()
); );
bd.getBusinessDatabase().doInsert(newTemplate); bd.getBusinessDatabase().doInsert(newTemplate);
} }
@Override @Override
@Transactional(rollbackFor = CommonException.class)
public void updateTemplate(UpdateTemplateForm form) { public void updateTemplate(UpdateTemplateForm form) {
Template template = bd.getBusinessDatabase() Template template = bd.getBusinessDatabase()
.viewQueryMode(true) .viewQueryMode(true)
@ -79,6 +80,33 @@ public class TemplateServiceImpl implements TemplateService {
.doQueryFirst(Template.class); .doQueryFirst(Template.class);
if (template != null) { if (template != null) {
if (Objects.equals(form.getTemplateName(), template.getTemplateName())) {
List<String> originalTemplateId = bd.getBusinessDatabase()
.eq("order_num", template.getOrderNum())
.doQuery(Template.class).stream().map(Template::getId)
.collect(Collectors.toList());
List<String> updateTemplateId = bd.getBusinessDatabase()
.eq("order_num", form.getOrderNum())
.doQuery(Template.class).stream().map(Template::getId)
.collect(Collectors.toList());
if (updateTemplateId.isEmpty()) {
bd.getBusinessDatabase()
.in("id", updateTemplateId)
.update("order_num", getMaxOrder())
.doUpdate(Template.class);
} else {
bd.getBusinessDatabase()
.in("id", updateTemplateId)
.update("order_num", template.getOrderNum())
.doUpdate(Template.class);
bd.getBusinessDatabase()
.in("id", originalTemplateId)
.update("order_num", form.getOrderNum())
.doUpdate(Template.class);
}
return;
}
throw new CommonException("不可修改为已有模板"); throw new CommonException("不可修改为已有模板");
} }
@ -247,6 +275,7 @@ public class TemplateServiceImpl implements TemplateService {
problems.getErrors().add("模板‘"+templateName+"’已有参数,无法导入"); problems.getErrors().add("模板‘"+templateName+"’已有参数,无法导入");
return; return;
} }
break;
case "APPROVING": case "APPROVING":
problems.setFlag(true); problems.setFlag(true);
problems.getErrors().add("模板‘"+templateName+"‘的最新版本正在审核中,无法导入"); problems.getErrors().add("模板‘"+templateName+"‘的最新版本正在审核中,无法导入");