Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
ddc38c7648
@ -22,9 +22,14 @@ public class UserPermissionGetter {
|
|||||||
@Resource
|
@Resource
|
||||||
private RuntimeAppContextService runtimeAppContextService;
|
private RuntimeAppContextService runtimeAppContextService;
|
||||||
|
|
||||||
|
public String getCurrentUserId() {
|
||||||
|
// return runtimeAppContextService.getCurrentUserId();
|
||||||
|
return "zjh";
|
||||||
|
}
|
||||||
|
|
||||||
// 获取子系统下的参数权限
|
// 获取子系统下的参数权限
|
||||||
public List<String> getParamPermissions(String subsystem) {
|
public List<String> getParamPermissions(String subsystem) {
|
||||||
String currentUserId = runtimeAppContextService.getCurrentUserId();
|
String currentUserId = getCurrentUserId();
|
||||||
Set<String> result = new HashSet<>();
|
Set<String> result = new HashSet<>();
|
||||||
try {
|
try {
|
||||||
// 获取用户权限
|
// 获取用户权限
|
||||||
|
|||||||
@ -34,10 +34,12 @@ public class DeleteController {
|
|||||||
@GetMapping("/getTables")
|
@GetMapping("/getTables")
|
||||||
public Response getTables() {
|
public Response getTables() {
|
||||||
Map<String, Object> map = new HashMap<>();
|
Map<String, Object> map = new HashMap<>();
|
||||||
List<Map<String, Object>> list = queryFactory.buildFromDatasource("yc_lrs_test_relsult")
|
List<Map<String, Object>> list = queryFactory
|
||||||
|
.buildFromDatasource("yc_lrs_test_relsult")
|
||||||
.table("ads_prd_f_yfsjglpt_fdjlbjcjb")
|
.table("ads_prd_f_yfsjglpt_fdjlbjcjb")
|
||||||
.doQuery();
|
.doQuery();
|
||||||
List<Map<String, Object>> list1 = queryFactory.buildFromDatasource("yc_lrs_test_relsult")
|
List<Map<String, Object>> list1 = queryFactory
|
||||||
|
.buildFromDatasource("yc_lrs_test_relsult")
|
||||||
.table("ads_prd_f_tc_flsxb")
|
.table("ads_prd_f_tc_flsxb")
|
||||||
.doQuery();
|
.doQuery();
|
||||||
map.put("ads_prd_f_yfsjglpt_fdjlbjcjb", list);
|
map.put("ads_prd_f_yfsjglpt_fdjlbjcjb", list);
|
||||||
|
|||||||
@ -72,10 +72,9 @@ public class TemplateController {
|
|||||||
@PostMapping("/import")
|
@PostMapping("/import")
|
||||||
public Response importTemplate(
|
public Response importTemplate(
|
||||||
@RequestPart("file") MultipartFile file,
|
@RequestPart("file") MultipartFile file,
|
||||||
@RequestPart(value = "templateRowId", required = false) String templateRowId,
|
@RequestPart(value = "templateRowId", required = false) String templateRowId
|
||||||
@RequestPart("createBy") String createBy
|
|
||||||
) {
|
) {
|
||||||
MyResponse templateImportProblemView = templateService.importTemplate(file, templateRowId, createBy);
|
MyResponse templateImportProblemView = templateService.importTemplate(file, templateRowId);
|
||||||
if (templateImportProblemView.getFlag()) {
|
if (templateImportProblemView.getFlag()) {
|
||||||
return Response.error("导入异常").data(templateImportProblemView);
|
return Response.error("导入异常").data(templateImportProblemView);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -6,9 +6,6 @@ import javax.validation.constraints.NotBlank;
|
|||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class ApprovalListForm {
|
public class ApprovalListForm {
|
||||||
@NotBlank(message = "用户不能为空")
|
|
||||||
private String userId;
|
|
||||||
|
|
||||||
private String templateName;
|
private String templateName;
|
||||||
private String username;
|
private String username;
|
||||||
private String createDate;
|
private String createDate;
|
||||||
|
|||||||
@ -8,7 +8,4 @@ import javax.validation.constraints.NotBlank;
|
|||||||
public class InsertTemplateForm {
|
public class InsertTemplateForm {
|
||||||
@NotBlank(message = "模板名不能为空")
|
@NotBlank(message = "模板名不能为空")
|
||||||
private String templateName;
|
private String templateName;
|
||||||
|
|
||||||
@NotBlank(message = "创建者不能为空")
|
|
||||||
private String createBy;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,7 +19,5 @@ public class StartApprovalRequest {
|
|||||||
@NotEmpty(message = "批准人员不能为空")
|
@NotEmpty(message = "批准人员不能为空")
|
||||||
private List<String> approveUsers;
|
private List<String> approveUsers;
|
||||||
|
|
||||||
@NotBlank(message = "发起人不能为空")
|
|
||||||
private String createBy;
|
|
||||||
private String explanation;
|
private String explanation;
|
||||||
}
|
}
|
||||||
@ -11,8 +11,6 @@ import java.util.List;
|
|||||||
public class UpdateParameterForm {
|
public class UpdateParameterForm {
|
||||||
@NotBlank(message = "模板不能为空")
|
@NotBlank(message = "模板不能为空")
|
||||||
private String templateRowId;
|
private String templateRowId;
|
||||||
@NotBlank(message = "创建者不能为空")
|
|
||||||
private String createBy;
|
|
||||||
@Valid @NotEmpty(message = "请至少修改一项参数")
|
@Valid @NotEmpty(message = "请至少修改一项参数")
|
||||||
private List<ParameterForm> parameterForms;
|
private List<ParameterForm> parameterForms;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,9 +9,6 @@ public class UpdateTemplateForm {
|
|||||||
@NotBlank(message = "模板名不能为空")
|
@NotBlank(message = "模板名不能为空")
|
||||||
private String templateName;
|
private String templateName;
|
||||||
|
|
||||||
@NotBlank(message = "创建者不能为空")
|
|
||||||
private String createBy;
|
|
||||||
|
|
||||||
@NotBlank(message = "请选择模板")
|
@NotBlank(message = "请选择模板")
|
||||||
private String templateRowId;
|
private String templateRowId;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,6 +23,7 @@ public class SheetDataListener implements ReadListener<Parameter> {
|
|||||||
private List<Parameter> cachedDataList;
|
private List<Parameter> cachedDataList;
|
||||||
private String currentSheetName;
|
private String currentSheetName;
|
||||||
MyResponse problems;
|
MyResponse problems;
|
||||||
|
Integer maxOrder;
|
||||||
|
|
||||||
// 用于存储表头
|
// 用于存储表头
|
||||||
private Set<String> actualHeaders = new HashSet<>();
|
private Set<String> actualHeaders = new HashSet<>();
|
||||||
@ -34,13 +35,14 @@ public class SheetDataListener implements ReadListener<Parameter> {
|
|||||||
private boolean validSheet = false;
|
private boolean validSheet = false;
|
||||||
|
|
||||||
public SheetDataListener(TemplateService templateService,
|
public SheetDataListener(TemplateService templateService,
|
||||||
String templateRowId, String createBy, MyResponse problems) {
|
String templateRowId, String createBy, MyResponse problems, Integer maxOrder) {
|
||||||
this.templateService = templateService;
|
this.templateService = templateService;
|
||||||
this.templateRowId = templateRowId;
|
this.templateRowId = templateRowId;
|
||||||
this.createBy = createBy;
|
this.createBy = createBy;
|
||||||
this.cachedDataList = new ArrayList<>(BATCH_SIZE);
|
this.cachedDataList = new ArrayList<>(BATCH_SIZE);
|
||||||
this.problems = problems;
|
this.problems = problems;
|
||||||
this.requiredHeaders = getIncludeColumnFieldNames();
|
this.requiredHeaders = getIncludeColumnFieldNames();
|
||||||
|
this.maxOrder = maxOrder;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -92,7 +94,8 @@ public class SheetDataListener implements ReadListener<Parameter> {
|
|||||||
currentSheetName,
|
currentSheetName,
|
||||||
templateRowId,
|
templateRowId,
|
||||||
createBy,
|
createBy,
|
||||||
problems
|
problems,
|
||||||
|
maxOrder
|
||||||
);
|
);
|
||||||
cachedDataList.clear();
|
cachedDataList.clear();
|
||||||
}
|
}
|
||||||
@ -134,6 +137,7 @@ public class SheetDataListener implements ReadListener<Parameter> {
|
|||||||
headerChecked = false;
|
headerChecked = false;
|
||||||
validSheet = false;
|
validSheet = false;
|
||||||
actualHeaders.clear();
|
actualHeaders.clear();
|
||||||
|
maxOrder += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Set<String> getIncludeColumnFieldNames() {
|
private static Set<String> getIncludeColumnFieldNames() {
|
||||||
|
|||||||
@ -9,12 +9,16 @@ import lombok.EqualsAndHashCode;
|
|||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
@SQLQuery(value = {
|
@SQLQuery(value = {
|
||||||
|
@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(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(view = "getAllSubsystemAndPara",
|
@SQL(view = "getAllSubsystemAndPara",
|
||||||
sql = "SELECT DISTINCT mp.subsystem_name, mp.parameter_name, mp.id, mp.parameter_type 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, mp.parameter_name, mp.id, mp.parameter_type"),
|
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(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",
|
||||||
sql = "select p.* from yfsjglpt_model_parameter p left join yfsjglpt_model_parameter_and_template tap on p.id = tap.parameter_id where p.id in (#permissionIds) and 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 p.id in (#parameterIds) and tap.template_id = #templateId"),
|
||||||
@SQL(view = "selectMaxNumber",
|
@SQL(view = "selectMaxNumber",
|
||||||
sql = "SELECT max(parameter_number) AS max_number 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 max(parameter_number) AS max_number FROM yfsjglpt_model_parameter p LEFT JOIN yfsjglpt_model_parameter_and_template tap ON p.id = tap.parameter_id WHERE tap.template_id = #templateId")
|
||||||
})
|
})
|
||||||
@ -46,6 +50,13 @@ public class Parameter extends MpaasBasePojo {
|
|||||||
@ExcelProperty("备注")
|
@ExcelProperty("备注")
|
||||||
private String remarks;
|
private String remarks;
|
||||||
|
|
||||||
|
@ExcelIgnore
|
||||||
|
private String createdBy;
|
||||||
|
|
||||||
|
@ExcelIgnore
|
||||||
|
@Column(type=ColumnType.CALCULATE)
|
||||||
|
private Integer orderNum;
|
||||||
|
|
||||||
@ExcelIgnore
|
@ExcelIgnore
|
||||||
@Column(value = "max_number",type=ColumnType.CALCULATE)
|
@Column(value = "max_number",type=ColumnType.CALCULATE)
|
||||||
private Integer maxNumber;
|
private Integer maxNumber;
|
||||||
|
|||||||
@ -10,9 +10,11 @@ import lombok.NoArgsConstructor;
|
|||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
|
|
||||||
@SQLQuery(value = {
|
@SQLQuery(value = {
|
||||||
|
@SQL(view = "getMaxOrder",
|
||||||
|
sql = "select *, MAX(order_num) AS maxOrder from yfsjglpt_model_template GROUP BY template_name"),
|
||||||
// 查找每个模板的最新版本并且优先级按照已发布、审核中、草稿状态转变(只有这三种状态)
|
// 查找每个模板的最新版本并且优先级按照已发布、审核中、草稿状态转变(只有这三种状态)
|
||||||
@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.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",
|
||||||
@ -35,13 +37,18 @@ public class Template extends MpaasBasePojo {
|
|||||||
private Timestamp publishedTime;
|
private Timestamp publishedTime;
|
||||||
private Integer orderNum;
|
private Integer orderNum;
|
||||||
private String createBy;
|
private String createBy;
|
||||||
|
private Integer orderNum;
|
||||||
|
|
||||||
public Template(String templateName, Integer version, String status, Timestamp createdTime, Timestamp publishedTime, String createBy) {
|
@Column(type = ColumnType.CALCULATE)
|
||||||
|
private Integer maxOrder;
|
||||||
|
|
||||||
|
public Template(String templateName, Integer version, String status, Timestamp createdTime, Timestamp publishedTime, String createBy, Integer orderNum) {
|
||||||
this.templateName = templateName;
|
this.templateName = templateName;
|
||||||
this.version = version;
|
this.version = version;
|
||||||
this.status = status;
|
this.status = status;
|
||||||
this.createdTime = createdTime;
|
this.createdTime = createdTime;
|
||||||
this.publishedTime = publishedTime;
|
this.publishedTime = publishedTime;
|
||||||
this.createBy = createBy;
|
this.createBy = createBy;
|
||||||
|
this.orderNum = orderNum;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,10 +13,10 @@ import java.util.List;
|
|||||||
public interface TemplateService {
|
public interface TemplateService {
|
||||||
PageQueryResult<Template> getTemplateByCondition(TemplatePageForm form);
|
PageQueryResult<Template> getTemplateByCondition(TemplatePageForm form);
|
||||||
|
|
||||||
MyResponse importTemplate(MultipartFile file, String templateRowId, String createBy);
|
MyResponse importTemplate(MultipartFile file, String templateRowId);
|
||||||
|
|
||||||
void processSheetData(List<Parameter> dataList, String sheetName,
|
void processSheetData(List<Parameter> dataList, String sheetName,
|
||||||
String templateRowId, String createBy, MyResponse problems);
|
String templateRowId, String createBy, MyResponse problems,Integer maxOrder);
|
||||||
|
|
||||||
void insertTemplate(InsertTemplateForm form);
|
void insertTemplate(InsertTemplateForm form);
|
||||||
|
|
||||||
|
|||||||
@ -14,10 +14,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@ -154,20 +151,27 @@ public class CommonParameterServiceImpl implements CommonParameterService {
|
|||||||
if (parameterList == null || parameterList.isEmpty()) {
|
if (parameterList == null || parameterList.isEmpty()) {
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
Map<String, List<Parameter>> groupedBySubsystem = parameterList.stream()
|
|
||||||
.collect(Collectors.groupingBy(Parameter::getSubsystemName));
|
// 先按orderNum排序,然后按子系统分组,保持插入顺序
|
||||||
List<ModelCommonItem> result = new ArrayList<>();
|
LinkedHashMap<String, List<Parameter>> groupedBySubsystem = parameterList.stream()
|
||||||
for (Map.Entry<String, List<Parameter>> entry : groupedBySubsystem.entrySet()) {
|
.sorted(Comparator.comparingInt(Parameter::getOrderNum))
|
||||||
ModelCommonItem item = new ModelCommonItem();
|
.collect(Collectors.groupingBy(
|
||||||
item.setSubsystem(entry.getKey());
|
Parameter::getSubsystemName,
|
||||||
List<ParametersView> parameters = entry.getValue().stream()
|
LinkedHashMap::new, // 保持插入顺序
|
||||||
.map(param -> new
|
Collectors.toList()
|
||||||
ParametersView(param.getId(), param.getParameterName(), param.getParameterType()))
|
));
|
||||||
.collect(Collectors.toList());
|
|
||||||
item.setParameters(parameters);
|
return groupedBySubsystem.entrySet().stream()
|
||||||
result.add(item);
|
.map(entry -> {
|
||||||
}
|
ModelCommonItem item = new ModelCommonItem();
|
||||||
return result;
|
item.setSubsystem(entry.getKey());
|
||||||
|
List<ParametersView> parameters = entry.getValue().stream()
|
||||||
|
.map(param -> new ParametersView(param.getId(), param.getParameterName(), param.getParameterType()))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
item.setParameters(parameters);
|
||||||
|
return item;
|
||||||
|
})
|
||||||
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -51,12 +51,21 @@ public class ParameterServiceImpl implements ParameterService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//todo 假定子系统名和模板名一致
|
//todo 假定子系统名和模板名一致
|
||||||
List<String> permissionIds = permissionGetter.getParamPermissions(template.getTemplateName());
|
Set<String> objects = new HashSet<>();
|
||||||
|
objects.addAll(permissionGetter.getParamPermissions(template.getTemplateName()));
|
||||||
|
objects.addAll(bd.getBusinessDatabase()
|
||||||
|
.viewQueryMode(true)
|
||||||
|
.view("selectParametersByTIdAndCreateBy")
|
||||||
|
.setVar("templateId", template.getId())
|
||||||
|
.setVar("createdBy", permissionGetter.getCurrentUserId())
|
||||||
|
.doQuery(Parameter.class).stream().map(Parameter::getId).collect(Collectors.toList()));
|
||||||
|
List<String> parameterIds = new ArrayList<>(objects);
|
||||||
|
|
||||||
return bd.getBusinessDatabase()
|
return bd.getBusinessDatabase()
|
||||||
.viewQueryMode(true)
|
.viewQueryMode(true)
|
||||||
.view("selectParametersByTemplateId")
|
.view("selectParametersByTemplateId")
|
||||||
.setVar("templateId", template.getId())
|
.setVar("templateId", template.getId())
|
||||||
.setVar("permissionIds", permissionIds)
|
.setVar("parameterIds", parameterIds)
|
||||||
.like("parameter_name", form.getParameterName())
|
.like("parameter_name", form.getParameterName())
|
||||||
.like("parts_name", form.getPartsName())
|
.like("parts_name", form.getPartsName())
|
||||||
.like("parameter_type", form.getParameterType())
|
.like("parameter_type", form.getParameterType())
|
||||||
@ -102,7 +111,7 @@ public class ParameterServiceImpl implements ParameterService {
|
|||||||
default:
|
default:
|
||||||
newVersionTemplate = new Template(
|
newVersionTemplate = new Template(
|
||||||
benchmark.getLastTemplate().getTemplateName(), calculateNextVersion(benchmark.getLastTemplate().getVersion()),
|
benchmark.getLastTemplate().getTemplateName(), calculateNextVersion(benchmark.getLastTemplate().getVersion()),
|
||||||
"DRAFT", Timestamp.valueOf(LocalDateTime.now()), null, form.getCreateBy()
|
"DRAFT", Timestamp.valueOf(LocalDateTime.now()), null, permissionGetter.getCurrentUserId(),getMaxOrder()
|
||||||
);
|
);
|
||||||
// 保存新模板
|
// 保存新模板
|
||||||
bd.getBusinessDatabase().doInsert(newVersionTemplate);
|
bd.getBusinessDatabase().doInsert(newVersionTemplate);
|
||||||
@ -126,6 +135,18 @@ public class ParameterServiceImpl implements ParameterService {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Integer getMaxOrder() {
|
||||||
|
Template template = bd.getBusinessDatabase()
|
||||||
|
.viewQueryMode(true)
|
||||||
|
.view("getMaxOrder")
|
||||||
|
.doQueryFirst(Template.class);
|
||||||
|
if (template != null) {
|
||||||
|
return template.getMaxOrder() + 1;
|
||||||
|
} else {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ParametersView> getAllParameters(String subsystem) {
|
public List<ParametersView> getAllParameters(String subsystem) {
|
||||||
return bd.getBusinessDatabase()
|
return bd.getBusinessDatabase()
|
||||||
@ -158,7 +179,7 @@ public class ParameterServiceImpl implements ParameterService {
|
|||||||
// 基准模板的参数
|
// 基准模板的参数
|
||||||
List<Parameter> parameters = bd.getBusinessDatabase()
|
List<Parameter> parameters = bd.getBusinessDatabase()
|
||||||
.viewQueryMode(true)
|
.viewQueryMode(true)
|
||||||
.view("selectParametersByTemplateId")
|
.view("selectParametersByTId")
|
||||||
.setVar("templateId", baseTemplate.getId())
|
.setVar("templateId", baseTemplate.getId())
|
||||||
.doQuery(Parameter.class);
|
.doQuery(Parameter.class);
|
||||||
|
|
||||||
@ -194,11 +215,12 @@ public class ParameterServiceImpl implements ParameterService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private ParameterProcessingResult processParameters(
|
@Transactional(rollbackFor = CommonException.class)
|
||||||
List<ParameterForm> parameterForms,
|
public ParameterProcessingResult processParameters(
|
||||||
List<Parameter> existingParameters,
|
List<ParameterForm> parameterForms,
|
||||||
Template baseTemplate,
|
List<Parameter> existingParameters,
|
||||||
Template newTemplate)
|
Template baseTemplate,
|
||||||
|
Template newTemplate)
|
||||||
{
|
{
|
||||||
Map<Integer, Parameter> parameterMap = createParameterMap(existingParameters);
|
Map<Integer, Parameter> parameterMap = createParameterMap(existingParameters);
|
||||||
|
|
||||||
@ -252,13 +274,15 @@ public class ParameterServiceImpl implements ParameterService {
|
|||||||
/**
|
/**
|
||||||
* 处理新增参数
|
* 处理新增参数
|
||||||
*/
|
*/
|
||||||
private void handleInsertOperation(
|
@Transactional(rollbackFor = CommonException.class)
|
||||||
ParameterForm form, Template newTemplate,
|
public void handleInsertOperation(
|
||||||
List<Parameter> newParameters, List<RevisionRecord> revisionRecords,
|
ParameterForm form, Template newTemplate,
|
||||||
Template baseTemplate
|
List<Parameter> newParameters, List<RevisionRecord> revisionRecords,
|
||||||
) {
|
Template baseTemplate
|
||||||
|
) {
|
||||||
Parameter newParameter = new Parameter();
|
Parameter newParameter = new Parameter();
|
||||||
BeanUtils.copyProperties(form, newParameter);
|
BeanUtils.copyProperties(form, newParameter);
|
||||||
|
newParameter.setCreatedBy(permissionGetter.getCurrentUserId());
|
||||||
|
|
||||||
Parameter parameter = bd.getBusinessDatabase()
|
Parameter parameter = bd.getBusinessDatabase()
|
||||||
.viewQueryMode(true)
|
.viewQueryMode(true)
|
||||||
@ -295,11 +319,12 @@ public class ParameterServiceImpl implements ParameterService {
|
|||||||
/**
|
/**
|
||||||
* 处理更新参数
|
* 处理更新参数
|
||||||
*/
|
*/
|
||||||
private void handleUpdateOperation(
|
@Transactional(rollbackFor = CommonException.class)
|
||||||
ParameterForm form, Map<Integer, Parameter> parameterMap,
|
public void handleUpdateOperation(
|
||||||
Template newTemplate, List<Parameter> newParameters,
|
ParameterForm form, Map<Integer, Parameter> parameterMap,
|
||||||
List<RevisionRecord> revisionRecords, Template baseTemplate
|
Template newTemplate, List<Parameter> newParameters,
|
||||||
) {
|
List<RevisionRecord> revisionRecords, Template baseTemplate
|
||||||
|
) {
|
||||||
Parameter originalParameter = parameterMap.get(form.getParameterNumber());
|
Parameter originalParameter = parameterMap.get(form.getParameterNumber());
|
||||||
|
|
||||||
if (originalParameter == null) {
|
if (originalParameter == null) {
|
||||||
@ -308,6 +333,7 @@ public class ParameterServiceImpl implements ParameterService {
|
|||||||
|
|
||||||
Parameter updatedParameter = new Parameter();
|
Parameter updatedParameter = new Parameter();
|
||||||
BeanUtils.copyProperties(form, updatedParameter);
|
BeanUtils.copyProperties(form, updatedParameter);
|
||||||
|
updatedParameter.setCreatedBy(permissionGetter.getCurrentUserId());
|
||||||
String detail = getParameterChange(originalParameter, updatedParameter);
|
String detail = getParameterChange(originalParameter, updatedParameter);
|
||||||
|
|
||||||
bd.getBusinessDatabase().doInsert(updatedParameter);
|
bd.getBusinessDatabase().doInsert(updatedParameter);
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package com.xdap.self_development.service.impl;
|
|||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.definesys.mpaas.query.db.PageQueryResult;
|
import com.definesys.mpaas.query.db.PageQueryResult;
|
||||||
import com.xdap.runtime.service.RuntimeDatasourceService;
|
import com.xdap.runtime.service.RuntimeDatasourceService;
|
||||||
|
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.*;
|
import com.xdap.self_development.controller.form.*;
|
||||||
import com.xdap.self_development.exception.CommonException;
|
import com.xdap.self_development.exception.CommonException;
|
||||||
@ -41,6 +42,8 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
|||||||
private RedisLockUtil redisLockUtil;
|
private RedisLockUtil redisLockUtil;
|
||||||
@Resource
|
@Resource
|
||||||
private DataEntryEngineModelService dataEntryEngineModelService;
|
private DataEntryEngineModelService dataEntryEngineModelService;
|
||||||
|
@Resource
|
||||||
|
private UserPermissionGetter permissionGetter;
|
||||||
|
|
||||||
// 待办标志: userId -> flowId集合
|
// 待办标志: userId -> flowId集合
|
||||||
private static final String TODO_PREFIX = "approval:todo:";
|
private static final String TODO_PREFIX = "approval:todo:";
|
||||||
@ -91,7 +94,7 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
|||||||
flow.setReviewUsers(JSON.toJSONString(request.getReviewUsers()));
|
flow.setReviewUsers(JSON.toJSONString(request.getReviewUsers()));
|
||||||
flow.setCountersignUsers(JSON.toJSONString(request.getCountersignUsers()));
|
flow.setCountersignUsers(JSON.toJSONString(request.getCountersignUsers()));
|
||||||
flow.setApproveUsers(JSON.toJSONString(request.getApproveUsers()));
|
flow.setApproveUsers(JSON.toJSONString(request.getApproveUsers()));
|
||||||
flow.setCreateBy(request.getCreateBy());
|
flow.setCreateBy(permissionGetter.getCurrentUserId());
|
||||||
flow.setCreatedTime(Timestamp.valueOf(LocalDateTime.now()));
|
flow.setCreatedTime(Timestamp.valueOf(LocalDateTime.now()));
|
||||||
flow.setFlowType(1); // 设置为模板审批流程
|
flow.setFlowType(1); // 设置为模板审批流程
|
||||||
flow.setExplanation(request.getExplanation());
|
flow.setExplanation(request.getExplanation());
|
||||||
@ -116,13 +119,13 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
|||||||
@Transactional
|
@Transactional
|
||||||
public List<TodoAndTemplateView> getApprovalList(ApprovalListForm form) {
|
public List<TodoAndTemplateView> getApprovalList(ApprovalListForm form) {
|
||||||
List<TodoAndTemplateView> approvalList = new ArrayList<>();
|
List<TodoAndTemplateView> approvalList = new ArrayList<>();
|
||||||
Set<String> flowIds = new HashSet<>(Objects.requireNonNull(redisTemplate.opsForSet().members(TODO_PREFIX + form.getUserId())));
|
Set<String> flowIds = new HashSet<>(Objects.requireNonNull(redisTemplate.opsForSet().members(TODO_PREFIX + permissionGetter.getCurrentUserId())));
|
||||||
List<String> ids = new ArrayList<>(flowIds);
|
List<String> ids = new ArrayList<>(flowIds);
|
||||||
List<TodoAndTemplateView> todoList =bd.getBusinessDatabase()
|
List<TodoAndTemplateView> todoList =bd.getBusinessDatabase()
|
||||||
.viewQueryMode(true)
|
.viewQueryMode(true)
|
||||||
.view("getTodoAndTemplate")
|
.view("getTodoAndTemplate")
|
||||||
.setVar("ids", ids)
|
.setVar("ids", ids)
|
||||||
.setVar("createBy", form.getUserId())
|
.setVar("createBy", permissionGetter.getCurrentUserId())
|
||||||
.setVar("templateName", form.getTemplateName())
|
.setVar("templateName", form.getTemplateName())
|
||||||
.setVar("status", form.getStatus())
|
.setVar("status", form.getStatus())
|
||||||
.setVar("createdTime", form.getCreateDate() == null ? "" : form.getCreateDate())
|
.setVar("createdTime", form.getCreateDate() == null ? "" : form.getCreateDate())
|
||||||
@ -192,7 +195,8 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processApprovalLogic(ApprovalFlow flow, HandleApprovalRequest request, String currentNode) {
|
@Transactional(rollbackFor = CommonException.class)
|
||||||
|
public void processApprovalLogic(ApprovalFlow flow, HandleApprovalRequest request, String currentNode) {
|
||||||
// 记录审批结果
|
// 记录审批结果
|
||||||
ApprovalRecord record = new ApprovalRecord();
|
ApprovalRecord record = new ApprovalRecord();
|
||||||
record.setFlowId(flow.getId());
|
record.setFlowId(flow.getId());
|
||||||
@ -316,6 +320,7 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 处理下一节点流转
|
// 处理下一节点流转
|
||||||
|
@Transactional(rollbackFor = CommonException.class)
|
||||||
public void processNextNode(ApprovalFlow flow, String currentNode) {
|
public void processNextNode(ApprovalFlow flow, String currentNode) {
|
||||||
// 检查当前节点是否满足流转条件
|
// 检查当前节点是否满足流转条件
|
||||||
if (!checkNodeComplete(flow, currentNode)) {
|
if (!checkNodeComplete(flow, currentNode)) {
|
||||||
@ -388,7 +393,8 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void cancelProcess(ApprovalFlow flow, String status) {
|
@Transactional(rollbackFor = CommonException.class)
|
||||||
|
public void cancelProcess(ApprovalFlow flow, String status) {
|
||||||
// 更新流程状态
|
// 更新流程状态
|
||||||
flow.setFlowStatus(status);
|
flow.setFlowStatus(status);
|
||||||
bd.getBusinessDatabase()
|
bd.getBusinessDatabase()
|
||||||
|
|||||||
@ -41,10 +41,8 @@ public class TemplateServiceImpl implements TemplateService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageQueryResult<Template> getTemplateByCondition(TemplatePageForm form) {
|
public PageQueryResult<Template> getTemplateByCondition(TemplatePageForm form) {
|
||||||
// List<String> subsystemPermissions = permissionGetter.getSubsystemPermissions();
|
|
||||||
return bd.getBusinessDatabase()
|
return bd.getBusinessDatabase()
|
||||||
.viewQueryMode(true)
|
.viewQueryMode(true)
|
||||||
// .setVar("names", "")
|
|
||||||
.view("getLatestTemplate")
|
.view("getLatestTemplate")
|
||||||
.like("template_name", form.getTemplateName())
|
.like("template_name", form.getTemplateName())
|
||||||
.doPageQuery(form.getPageNumber(), form.getPageSize(), Template.class);
|
.doPageQuery(form.getPageNumber(), form.getPageSize(), Template.class);
|
||||||
@ -66,7 +64,7 @@ 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, form.getCreateBy()
|
null, permissionGetter.getCurrentUserId(), 1
|
||||||
);
|
);
|
||||||
|
|
||||||
bd.getBusinessDatabase().doInsert(newTemplate);
|
bd.getBusinessDatabase().doInsert(newTemplate);
|
||||||
@ -86,7 +84,7 @@ 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, form.getCreateBy()
|
null, permissionGetter.getCurrentUserId(), 1
|
||||||
);
|
);
|
||||||
|
|
||||||
bd.getBusinessDatabase()
|
bd.getBusinessDatabase()
|
||||||
@ -96,7 +94,8 @@ public class TemplateServiceImpl implements TemplateService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = CommonException.class)
|
@Transactional(rollbackFor = CommonException.class)
|
||||||
public MyResponse importTemplate(MultipartFile file, String templateRowId, String createBy) {
|
public MyResponse importTemplate(MultipartFile file, String templateRowId) {
|
||||||
|
String createBy = permissionGetter.getCurrentUserId();
|
||||||
// 验证文件是否为工作表
|
// 验证文件是否为工作表
|
||||||
if (file == null || file.isEmpty()) {
|
if (file == null || file.isEmpty()) {
|
||||||
throw new CommonException("文件不能为空");
|
throw new CommonException("文件不能为空");
|
||||||
@ -110,11 +109,13 @@ public class TemplateServiceImpl implements TemplateService {
|
|||||||
}
|
}
|
||||||
MyResponse problems =
|
MyResponse problems =
|
||||||
new MyResponse(false, new ArrayList<>(), new StringBuilder("已完成导入:无"));
|
new MyResponse(false, new ArrayList<>(), new StringBuilder("已完成导入:无"));
|
||||||
|
|
||||||
|
Integer maxOrder = getMaxOrder();
|
||||||
try (InputStream inputStream = file.getInputStream()){
|
try (InputStream inputStream = file.getInputStream()){
|
||||||
EasyExcel.read(
|
EasyExcel.read(
|
||||||
inputStream,
|
inputStream,
|
||||||
Parameter.class,
|
Parameter.class,
|
||||||
new SheetDataListener(this, templateRowId, createBy, problems)
|
new SheetDataListener(this, templateRowId, createBy, problems, maxOrder)
|
||||||
).doReadAll();
|
).doReadAll();
|
||||||
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
@ -184,7 +185,7 @@ public class TemplateServiceImpl implements TemplateService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void processSheetData(List<Parameter> dataList, String sheetName,
|
public void processSheetData(List<Parameter> dataList, String sheetName,
|
||||||
String templateRowId, String createBy, MyResponse problems) {
|
String templateRowId, String createBy, MyResponse problems, Integer maxOrder) {
|
||||||
if (dataList.isEmpty()) {
|
if (dataList.isEmpty()) {
|
||||||
log.warn("Sheet {} 没有数据", sheetName);
|
log.warn("Sheet {} 没有数据", sheetName);
|
||||||
return;
|
return;
|
||||||
@ -192,6 +193,7 @@ public class TemplateServiceImpl implements TemplateService {
|
|||||||
|
|
||||||
// 验证公式
|
// 验证公式
|
||||||
for (Parameter data : dataList) {
|
for (Parameter data : dataList) {
|
||||||
|
data.setCreatedBy(permissionGetter.getCurrentUserId());
|
||||||
if (Objects.equals(data.getParameterSource(), "公式计算")) {
|
if (Objects.equals(data.getParameterSource(), "公式计算")) {
|
||||||
Map<String, Object> validationResult = FormulaValidator.validateFormulaDetailed(
|
Map<String, Object> validationResult = FormulaValidator.validateFormulaDetailed(
|
||||||
data.getNumberOrFormula());
|
data.getNumberOrFormula());
|
||||||
@ -253,7 +255,7 @@ public class TemplateServiceImpl implements TemplateService {
|
|||||||
default:
|
default:
|
||||||
lastTemplate = new Template(
|
lastTemplate = new Template(
|
||||||
templateName, lastTemplate.getVersion()+1, "DRAFT",
|
templateName, lastTemplate.getVersion()+1, "DRAFT",
|
||||||
Timestamp.valueOf(LocalDateTime.now()), null, createBy
|
Timestamp.valueOf(LocalDateTime.now()), null, createBy, maxOrder
|
||||||
);
|
);
|
||||||
bd.getBusinessDatabase()
|
bd.getBusinessDatabase()
|
||||||
.doInsert(lastTemplate);
|
.doInsert(lastTemplate);
|
||||||
@ -261,7 +263,7 @@ public class TemplateServiceImpl implements TemplateService {
|
|||||||
} else {
|
} else {
|
||||||
lastTemplate = new Template(
|
lastTemplate = new Template(
|
||||||
templateName, 1, "DRAFT", Timestamp.valueOf(LocalDateTime.now()),
|
templateName, 1, "DRAFT", Timestamp.valueOf(LocalDateTime.now()),
|
||||||
null, createBy
|
null, createBy, maxOrder
|
||||||
);
|
);
|
||||||
bd.getBusinessDatabase()
|
bd.getBusinessDatabase()
|
||||||
.doInsert(lastTemplate);
|
.doInsert(lastTemplate);
|
||||||
@ -326,4 +328,16 @@ public class TemplateServiceImpl implements TemplateService {
|
|||||||
includeColumnFieldNames.add("remarks");
|
includeColumnFieldNames.add("remarks");
|
||||||
return includeColumnFieldNames;
|
return includeColumnFieldNames;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Integer getMaxOrder() {
|
||||||
|
Template template = bd.getBusinessDatabase()
|
||||||
|
.viewQueryMode(true)
|
||||||
|
.view("getMaxOrder")
|
||||||
|
.doQueryFirst(Template.class);
|
||||||
|
if (template != null && template.getMaxOrder() != null) {
|
||||||
|
return template.getMaxOrder() + 1;
|
||||||
|
} else {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user