diff --git a/src/main/java/com/xdap/self_development/controller/BenchmarkingReportController.java b/src/main/java/com/xdap/self_development/controller/BenchmarkingReportController.java index 17dda7a..9bfb8fd 100644 --- a/src/main/java/com/xdap/self_development/controller/BenchmarkingReportController.java +++ b/src/main/java/com/xdap/self_development/controller/BenchmarkingReportController.java @@ -16,7 +16,6 @@ import javax.annotation.Resource; import javax.validation.Valid; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; -import java.util.List; @RestController @RequestMapping("/custom/benchmark") @@ -73,7 +72,7 @@ public class BenchmarkingReportController { return Response.ok().setMessage("重新提交成功"); } - // 筛选对标报告及待办 + // 筛选对标报告 @PostMapping("/getReportAndTodoByCondition") public Response getBenchmarkingReportByCondition( @Valid @RequestBody BenchmarkingReportPageForm form, @@ -89,6 +88,20 @@ public class BenchmarkingReportController { return Response.ok().data(list); } + // 获取流程列表 + @PostMapping("/getApprovalList") + public Response getApprovalList( + @Valid @RequestBody ApprovalListForm form, + BindingResult bindingResult + ) { + if (bindingResult.hasErrors()) { + bindingResult.getFieldErrors().forEach(error -> { + throw new CommonException(error.getDefaultMessage()); + }); + } + return Response.ok().data(benchmarkingReportService.getApprovalList(form)); + } + // 处理审批 @PostMapping("/handleReportApproval") public Response handleReportApproval( diff --git a/src/main/java/com/xdap/self_development/pojo/ApprovalFlow.java b/src/main/java/com/xdap/self_development/pojo/ApprovalFlow.java index ecc74e2..42c5ddf 100644 --- a/src/main/java/com/xdap/self_development/pojo/ApprovalFlow.java +++ b/src/main/java/com/xdap/self_development/pojo/ApprovalFlow.java @@ -19,7 +19,7 @@ public class ApprovalFlow extends MpaasBasePojo { private String templateId; private String currentNode; // 节点:PROOFREAD, REVIEW, COUNTERSIGN, APPROVE private String flowStatus; //DRAFT(草稿)、APPROVING(审批中)、COMPLETE(已完成)、RETURNED(已撤回)、REJECTED(已拒绝) - private String returnNum; + private Integer returnNum; private String proofreadUsers; // 校对人员 private String reviewUsers; // 审核人员 diff --git a/src/main/java/com/xdap/self_development/pojo/RevisionRecord.java b/src/main/java/com/xdap/self_development/pojo/RevisionRecord.java index 1f7d37b..f22ebdb 100644 --- a/src/main/java/com/xdap/self_development/pojo/RevisionRecord.java +++ b/src/main/java/com/xdap/self_development/pojo/RevisionRecord.java @@ -28,13 +28,13 @@ public class RevisionRecord extends MpaasBasePojo { private Timestamp createTime; private String parameterId; - private String returnNum; + private Integer returnNum; public RevisionRecord(String templateName, Integer version, Integer parameterNumber, String modifyDetails, String templateId, String preTemplateId, Timestamp createTime, String parameterId, - String returnNum) { + Integer returnNum) { this.templateName = templateName; this.version = version; this.parameterNumber = parameterNumber; diff --git a/src/main/java/com/xdap/self_development/pojo/Template.java b/src/main/java/com/xdap/self_development/pojo/Template.java index 84ba75f..1d2fead 100644 --- a/src/main/java/com/xdap/self_development/pojo/Template.java +++ b/src/main/java/com/xdap/self_development/pojo/Template.java @@ -37,12 +37,14 @@ public class Template extends MpaasBasePojo { private Timestamp publishedTime; private Long orderNum; private String createBy; - private String returnNum; + private Integer returnNum; @Column(type = ColumnType.CALCULATE) private Integer maxOrder; - public Template(String templateName, Integer version, String status, Timestamp createdTime, Timestamp publishedTime, String createBy, Long orderNum) { + public Template(String templateName, Integer version, String status, + Timestamp createdTime, Timestamp publishedTime, + String createBy, Long orderNum, Integer returnNum) { this.templateName = templateName; this.version = version; this.status = status; @@ -50,5 +52,6 @@ public class Template extends MpaasBasePojo { this.publishedTime = publishedTime; this.createBy = createBy; this.orderNum = orderNum; + this.returnNum = returnNum; } } diff --git a/src/main/java/com/xdap/self_development/pojo/view/TemplateChangeView.java b/src/main/java/com/xdap/self_development/pojo/view/TemplateChangeView.java index b3dc491..8ac90f9 100644 --- a/src/main/java/com/xdap/self_development/pojo/view/TemplateChangeView.java +++ b/src/main/java/com/xdap/self_development/pojo/view/TemplateChangeView.java @@ -6,7 +6,7 @@ import lombok.Data; @SQLQuery(value = { @SQL(view = "getParameterAndChange", - sql = "SELECT p.*, r.pre_template_id, r.modify_details FROM ( SELECT *, row_number() OVER (PARTITION BY parameter_id ORDER BY create_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 AND r.return_num <= #returnNum ORDER BY r.create_time DESC") + sql = "SELECT * FROM ( SELECT p.*, r.pre_template_id, r.modify_details, r.create_time AS r_create_time , ROW_NUMBER() OVER (PARTITION BY r.template_id, r.parameter_id ORDER BY r.create_time DESC) AS rn FROM yfsjglpt_model_revision_record r LEFT JOIN yfsjglpt_model_parameter p ON r.parameter_id = p.id WHERE r.template_id = #templateId AND r.return_num <= #returnNum ) subquery WHERE rn = 1 ORDER BY subquery.r_create_time") }) @Data public class TemplateChangeView { diff --git a/src/main/java/com/xdap/self_development/pojo/view/TodoAndReportListView.java b/src/main/java/com/xdap/self_development/pojo/view/TodoAndReportListView.java new file mode 100644 index 0000000..ba46638 --- /dev/null +++ b/src/main/java/com/xdap/self_development/pojo/view/TodoAndReportListView.java @@ -0,0 +1,28 @@ +package com.xdap.self_development.pojo.view; + +import com.definesys.mpaas.query.annotation.SQL; +import com.definesys.mpaas.query.annotation.SQLQuery; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.xdap.self_development.pojo.ApprovalXdapUsers; +import lombok.Data; + +import java.sql.Timestamp; +import java.util.List; + +@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\" , CASE WHEN current_node = 'PROOFREAD' THEN proofread_users WHEN current_node = 'REVIEW' THEN review_users WHEN current_node = 'COUNTERSIGN' THEN countersign_users WHEN current_node = 'APPROVE' THEN approve_users END AS current_users FROM yfsjglpt_model_approval_flow af 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 t.status LIKE CONCAT('%', #status, '%') AND t.created_time LIKE CONCAT('%', #createdTime, '%') AND xu.username LIKE CONCAT('%', #username, '%') ORDER BY CASE af.flow_status WHEN 'COMPLETE' THEN 1 WHEN 'APPROVING' THEN 2 WHEN 'DRAFT' THEN 3 WHEN 'REJECTED' THEN 4 ELSE 5 END ASC") +}) +@Data +public class TodoAndReportListView { + private String reportId; + private String flowId; + private String title; + private String status; + private String createBy; + private String currentUsers; + private String username; + private List currentApprovers; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Timestamp createdTime; +} diff --git a/src/main/java/com/xdap/self_development/service/BenchmarkingReportService.java b/src/main/java/com/xdap/self_development/service/BenchmarkingReportService.java index fc5152e..14c232a 100644 --- a/src/main/java/com/xdap/self_development/service/BenchmarkingReportService.java +++ b/src/main/java/com/xdap/self_development/service/BenchmarkingReportService.java @@ -4,15 +4,16 @@ import com.definesys.mpaas.query.db.PageQueryResult; import com.xdap.self_development.controller.form.*; import com.xdap.self_development.pojo.BenchmarkingReport; import com.xdap.self_development.pojo.view.ApprovalFlowView; +import com.xdap.self_development.pojo.view.TodoAndReportListView; import com.xdap.self_development.pojo.view.TodoAndReportView; import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid; import javax.validation.constraints.NotBlank; -import java.util.List; public interface BenchmarkingReportService { - PageQueryResult getBenchmarkingReportByCondition(@Valid BenchmarkingReportPageForm form); + PageQueryResult getBenchmarkingReportByCondition( + @Valid BenchmarkingReportPageForm form); void insertReport(@Valid SaveBenchmarkingReportForm form); @@ -27,4 +28,6 @@ public interface BenchmarkingReportService { ApprovalFlowView getReportProcess(@NotBlank String flowId); String uploadFile(MultipartFile file, @NotBlank String createBy); + + PageQueryResult getApprovalList(@Valid ApprovalListForm form); } diff --git a/src/main/java/com/xdap/self_development/service/TemplateApprovalService.java b/src/main/java/com/xdap/self_development/service/TemplateApprovalService.java index cf27ca9..040b3cc 100644 --- a/src/main/java/com/xdap/self_development/service/TemplateApprovalService.java +++ b/src/main/java/com/xdap/self_development/service/TemplateApprovalService.java @@ -7,13 +7,17 @@ import com.xdap.self_development.pojo.view.TemplateChangeView; import com.xdap.self_development.pojo.view.TodoAndTemplateView; import javax.validation.Valid; -import java.util.List; public interface TemplateApprovalService { String startApproval(StartApprovalRequest request); + PageQueryResult getApprovalList(ApprovalListForm form); + void handleApproval(HandleApprovalRequest request); + PageQueryResult getTemplateChanges(@Valid ApprovalAndParameterForm form); + ApprovalFlowView getApprovalProcess(@Valid ApprovalFlowForm form); + void handleReturn(@Valid HandleApprovalRequest request); } diff --git a/src/main/java/com/xdap/self_development/service/impl/BenchmarkingReportServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/BenchmarkingReportServiceImpl.java index ecd9b16..c4f310b 100644 --- a/src/main/java/com/xdap/self_development/service/impl/BenchmarkingReportServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/BenchmarkingReportServiceImpl.java @@ -16,6 +16,7 @@ import com.xdap.self_development.feign.dto.UserTokenDT0; import com.xdap.self_development.pojo.*; import com.xdap.self_development.pojo.view.ApprovalFlowView; import com.xdap.self_development.pojo.view.ApprovalNodeView; +import com.xdap.self_development.pojo.view.TodoAndReportListView; import com.xdap.self_development.pojo.view.TodoAndReportView; import com.xdap.self_development.service.BenchmarkingReportService; import com.xdap.self_development.service.XdapDeptUsersService; @@ -100,6 +101,36 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService return fileUploadDTO.getData().getUrl() +"&download=download&token=" + tokenXdap; } + @Override + public PageQueryResult getApprovalList(ApprovalListForm form) { + PageQueryResult result = bd.getBusinessDatabase() + .viewQueryMode(true) + .view("getAllReportApprovalList") + .setVar("title", form.getTemplateName()) + .setVar("status", form.getStatus()) + .setVar("createdTime", form.getCreateDate() == null ? "" : form.getCreateDate()) + .setVar("username", form.getUsername()) + .doPageQuery(form.getPageNumber(), form.getPageSize(), TodoAndReportListView.class); + setApprovalCurrentUser(result); + return result; + } + + private void setApprovalCurrentUser(PageQueryResult result) { + result.getResult().forEach(item -> { + if (item.getCurrentUsers() == null || item.getCurrentUsers().isEmpty()) { + item.setCurrentApprovers(null); + item.setCurrentUsers(null); + } else { + List userIds = JSON.parseArray(item.getCurrentUsers()).toJavaList(String.class); + List approvalXdapUsers = bd.getBusinessDatabase() + .in("id", userIds) + .doQuery(ApprovalXdapUsers.class); + item.setCurrentApprovers(approvalXdapUsers); + item.setCurrentUsers(null); + } + }); + } + @Override public PageQueryResult getBenchmarkingReportByCondition(BenchmarkingReportPageForm form) { PageQueryResult result = bd.getBusinessDatabase() diff --git a/src/main/java/com/xdap/self_development/service/impl/ParameterServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/ParameterServiceImpl.java index 1194d71..7e2763b 100644 --- a/src/main/java/com/xdap/self_development/service/impl/ParameterServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/ParameterServiceImpl.java @@ -145,25 +145,14 @@ public class ParameterServiceImpl implements ParameterService { Timestamp.valueOf(LocalDateTime.now()), null, userId, - baseTemplate.getOrderNum() + baseTemplate.getOrderNum(), + 0 ); bd.getBusinessDatabase().doInsert(newTemplate); return newTemplate; } } - 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 public List getAllParameters(String subsystem) { return bd.getBusinessDatabase() diff --git a/src/main/java/com/xdap/self_development/service/impl/TemplateApprovalServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/TemplateApprovalServiceImpl.java index 9e808b7..d0e2103 100644 --- a/src/main/java/com/xdap/self_development/service/impl/TemplateApprovalServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/TemplateApprovalServiceImpl.java @@ -288,7 +288,7 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { } else { return bd.getBusinessDatabase() .viewQueryMode(true) - .view("getParameterAndChangeByApprovalId") + .view("getParameterAndChange") .setVar("templateId", form.getTemplateId()) .setVar("returnNum", approvalFlow.getReturnNum()) .doPageQuery(form.getPageNumber(), form.getPageSize(), TemplateChangeView.class); diff --git a/src/main/java/com/xdap/self_development/service/impl/TemplateServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/TemplateServiceImpl.java index e1b307c..a5c9f7c 100644 --- a/src/main/java/com/xdap/self_development/service/impl/TemplateServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/TemplateServiceImpl.java @@ -65,7 +65,7 @@ public class TemplateServiceImpl implements TemplateService { // 创建新模板 Template newTemplate = new Template( form.getTemplateName(), 1, "DRAFT", Timestamp.valueOf(LocalDateTime.now()), - null, form.getUserId(), System.currentTimeMillis() + null, form.getUserId(), System.currentTimeMillis(), 0 ); bd.getBusinessDatabase().doInsert(newTemplate); @@ -125,7 +125,7 @@ public class TemplateServiceImpl implements TemplateService { Template newTemplate = new Template( form.getTemplateName(), 1, "DRAFT", Timestamp.valueOf(LocalDateTime.now()), - null, form.getUserId(), System.currentTimeMillis() + null, form.getUserId(), System.currentTimeMillis(), 0 ); bd.getBusinessDatabase() @@ -150,7 +150,6 @@ public class TemplateServiceImpl implements TemplateService { MyResponse problems = new MyResponse(false, new ArrayList<>(), new StringBuilder("已完成导入:无")); - Integer maxOrder = getMaxOrder(); try (InputStream inputStream = file.getInputStream()){ EasyExcel.read( inputStream, @@ -324,7 +323,7 @@ public class TemplateServiceImpl implements TemplateService { default: lastTemplate = new Template( templateName, lastTemplate.getVersion()+1, "DRAFT", - Timestamp.valueOf(LocalDateTime.now()), null, createBy, System.currentTimeMillis() + Timestamp.valueOf(LocalDateTime.now()), null, createBy, System.currentTimeMillis(), 0 ); bd.getBusinessDatabase() .doInsert(lastTemplate); @@ -332,7 +331,7 @@ public class TemplateServiceImpl implements TemplateService { } else { lastTemplate = new Template( templateName, 1, "DRAFT", Timestamp.valueOf(LocalDateTime.now()), - null, createBy, System.currentTimeMillis() + null, createBy, System.currentTimeMillis(), 0 ); bd.getBusinessDatabase() .doInsert(lastTemplate); @@ -399,18 +398,6 @@ public class TemplateServiceImpl implements TemplateService { 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; - } - } - private void insertAndUpdateParameters( List dataList, Template lastTemplate ) {