diff --git a/src/main/java/com/xdap/self_development/controller/ActivitiProcessController.java b/src/main/java/com/xdap/self_development/controller/ActivitiProcessController.java index d5e9502..e22a86c 100644 --- a/src/main/java/com/xdap/self_development/controller/ActivitiProcessController.java +++ b/src/main/java/com/xdap/self_development/controller/ActivitiProcessController.java @@ -93,7 +93,7 @@ public class ActivitiProcessController { public Response getApprovalUsers( @NotBlank @RequestParam String templateId ) { - List nodes = activitiProcessService.getApprovalUsers(templateId); + ApprovalNodesDTO nodes = activitiProcessService.getApprovalUsers(templateId); return Response.ok().data(nodes); } // 直送回退回的节点 diff --git a/src/main/java/com/xdap/self_development/controller/TemplateApprovalController.java b/src/main/java/com/xdap/self_development/controller/TemplateApprovalController.java index e075abe..64d4aa8 100644 --- a/src/main/java/com/xdap/self_development/controller/TemplateApprovalController.java +++ b/src/main/java/com/xdap/self_development/controller/TemplateApprovalController.java @@ -6,6 +6,7 @@ import com.xdap.runtime.service.RuntimeDatasourceService; import com.xdap.self_development.controller.form.*; import com.xdap.self_development.exception.CommonException; import com.xdap.self_development.pojo.dto.ApprovalNodeDTO; +import com.xdap.self_development.pojo.dto.ApprovalNodesDTO; import com.xdap.self_development.pojo.view.ApprovalFlowNodeView; import com.xdap.self_development.pojo.view.DepartmentUserView; import com.xdap.self_development.pojo.view.TemplateChangeView; @@ -40,7 +41,7 @@ public class TemplateApprovalController { public Response getApprovalUsers( @NotBlank @RequestParam String templateId ) { - List nodes = templateApprovalService.getApprovalUsers(templateId); + ApprovalNodesDTO nodes = templateApprovalService.getApprovalUsers(templateId); return Response.ok().data(nodes); } diff --git a/src/main/java/com/xdap/self_development/controller/form/ApprovalPersonForm.java b/src/main/java/com/xdap/self_development/controller/form/ApprovalPersonForm.java index 157c4d9..e517dd2 100644 --- a/src/main/java/com/xdap/self_development/controller/form/ApprovalPersonForm.java +++ b/src/main/java/com/xdap/self_development/controller/form/ApprovalPersonForm.java @@ -9,15 +9,12 @@ import java.util.List; @Data public class ApprovalPersonForm { - @NotEmpty(message = "创建者不能为空") + @NotBlank(message = "创建者不能为空") private String userId; - @NotEmpty(message = "报告不能为空") + @NotBlank(message = "报告不能为空") private String reportId; - @NotBlank(message = "流程标题不能为空") - private String processTitle; - // 审批环节配置列表 - @NotEmpty(message = "环节不能为空") - private List nodeList; - private String explanation; + + @NotBlank(message = "流程不能为空") + private String flowId; } diff --git a/src/main/java/com/xdap/self_development/controller/form/SaveBenchmarkingReportForm.java b/src/main/java/com/xdap/self_development/controller/form/SaveBenchmarkingReportForm.java index d4aebe0..603bdb7 100644 --- a/src/main/java/com/xdap/self_development/controller/form/SaveBenchmarkingReportForm.java +++ b/src/main/java/com/xdap/self_development/controller/form/SaveBenchmarkingReportForm.java @@ -1,8 +1,11 @@ package com.xdap.self_development.controller.form; +import com.xdap.self_development.pojo.dto.ApprovalNodeDTO; import lombok.Data; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import java.util.List; @Data public class SaveBenchmarkingReportForm { @@ -24,6 +27,13 @@ public class SaveBenchmarkingReportForm { private String subsystem; private String partsName; + @NotBlank(message = "流程标题不能为空") + private String processTitle; + // 审批环节配置列表 + @NotEmpty(message = "环节不能为空") + private List nodeList; + private String explanation; + @NotBlank(message = "发起人不能为空") private String userId; private String fileUrl; diff --git a/src/main/java/com/xdap/self_development/controller/form/UpdateBenchmarkingReportForm.java b/src/main/java/com/xdap/self_development/controller/form/UpdateBenchmarkingReportForm.java index 7b05c7f..d95d4a2 100644 --- a/src/main/java/com/xdap/self_development/controller/form/UpdateBenchmarkingReportForm.java +++ b/src/main/java/com/xdap/self_development/controller/form/UpdateBenchmarkingReportForm.java @@ -1,13 +1,18 @@ package com.xdap.self_development.controller.form; +import com.xdap.self_development.pojo.dto.ApprovalNodeDTO; import lombok.Data; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import java.util.List; @Data public class UpdateBenchmarkingReportForm { @NotBlank(message = "原对标报告不能为空") private String reportId; + @NotBlank(message = "流程不能为空") + private String flowId; private String title; private String manufacturerName; @@ -25,9 +30,14 @@ public class UpdateBenchmarkingReportForm { private String subsystem; private String partsName; - private String fileUrl; + @NotBlank(message = "流程标题不能为空") + private String processTitle; + @NotEmpty(message = "流程节点不能为空") + private List nodeList; + private String explanation; + @NotBlank(message = "发起人不能为空") private String userId; } diff --git a/src/main/java/com/xdap/self_development/pojo/dto/ApprovalNodesDTO.java b/src/main/java/com/xdap/self_development/pojo/dto/ApprovalNodesDTO.java new file mode 100644 index 0000000..1c91973 --- /dev/null +++ b/src/main/java/com/xdap/self_development/pojo/dto/ApprovalNodesDTO.java @@ -0,0 +1,13 @@ +package com.xdap.self_development.pojo.dto; + +import com.xdap.self_development.controller.form.ApprovalUserNodeDTO; +import lombok.Data; + +import java.util.List; + +@Data +public class ApprovalNodesDTO { + private String processTitle; + private List nodeList; + private String explanation; +} 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 index 172241c..93046ff 100644 --- a/src/main/java/com/xdap/self_development/pojo/view/TodoAndReportListView.java +++ b/src/main/java/com/xdap/self_development/pojo/view/TodoAndReportListView.java @@ -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, @SQLQuery(value = { @SQL(view = "getAllReportApprovalList", - sql = "WITH RankedFlows AS (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, ROW_NUMBER() OVER (PARTITION BY af.template_id ORDER BY af.created_time DESC) AS rn 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) SELECT flowId, reportId, title, status, createBy, username, createdTime, current_users FROM RankedFlows WHERE rn = 1 AND title LIKE CONCAT('%', #title, '%') AND status LIKE CONCAT('%', #status, '%') AND createdTime LIKE CONCAT('%', #createdTime, '%') AND username LIKE CONCAT('%', #username, '%') ORDER BY createdTime DESC") + sql = "WITH RankedFlows AS (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, ROW_NUMBER() OVER (PARTITION BY af.template_id ORDER BY af.created_time DESC) AS rn 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 af.flow_status <> 'DRAFT') SELECT flowId, reportId, title, status, createBy, username, createdTime, current_users FROM RankedFlows WHERE rn = 1 AND title LIKE CONCAT('%', #title, '%') AND status LIKE CONCAT('%', #status, '%') AND createdTime LIKE CONCAT('%', #createdTime, '%') AND username LIKE CONCAT('%', #username, '%') ORDER BY createdTime DESC") }) @Data public class TodoAndReportListView { diff --git a/src/main/java/com/xdap/self_development/service/ActivitiProcessService.java b/src/main/java/com/xdap/self_development/service/ActivitiProcessService.java index 0591f58..748230e 100644 --- a/src/main/java/com/xdap/self_development/service/ActivitiProcessService.java +++ b/src/main/java/com/xdap/self_development/service/ActivitiProcessService.java @@ -8,10 +8,7 @@ import com.xdap.self_development.controller.request.ApprovalByPlatformRequest; import com.xdap.self_development.controller.request.ApprovalNodeRequest; import com.xdap.self_development.enums.ParamValueVersionEnum; import com.xdap.self_development.pojo.*; -import com.xdap.self_development.pojo.dto.ActivitiDataAndRecordDTO; -import com.xdap.self_development.pojo.dto.ActivitiDataDTO; -import com.xdap.self_development.pojo.dto.HandleApprovalDTO; -import com.xdap.self_development.pojo.dto.ShowActivitiDTO; +import com.xdap.self_development.pojo.dto.*; import javax.validation.Valid; import javax.validation.constraints.NotBlank; @@ -31,7 +28,7 @@ public interface ActivitiProcessService { boolean getIsDirect(String flowId); - List getApprovalUsers(@NotBlank String flowId); + ApprovalNodesDTO getApprovalUsers(@NotBlank String flowId); void directSendingApproval(@NotBlank String templateId, @NotBlank String userId); 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 1b4ec53..97e43de 100644 --- a/src/main/java/com/xdap/self_development/service/TemplateApprovalService.java +++ b/src/main/java/com/xdap/self_development/service/TemplateApprovalService.java @@ -7,6 +7,7 @@ import com.xdap.self_development.pojo.ApprovalFlow; import com.xdap.self_development.pojo.ApprovalRecord; import com.xdap.self_development.pojo.Template; import com.xdap.self_development.pojo.dto.ApprovalNodeDTO; +import com.xdap.self_development.pojo.dto.ApprovalNodesDTO; import com.xdap.self_development.pojo.view.ApprovalFlowNodeView; import com.xdap.self_development.pojo.view.TemplateChangeView; import com.xdap.self_development.pojo.view.TodoAndTemplateView; @@ -48,7 +49,7 @@ public interface TemplateApprovalService { List getReturnNodes(@NotBlank String flowId); - List getApprovalUsers(@NotBlank String templateId); + ApprovalNodesDTO getApprovalUsers(@NotBlank String templateId); boolean getIsDirect(String flowId); } diff --git a/src/main/java/com/xdap/self_development/service/impl/ActivitiProcessServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/ActivitiProcessServiceImpl.java index 026c3e5..c4dd16b 100644 --- a/src/main/java/com/xdap/self_development/service/impl/ActivitiProcessServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/ActivitiProcessServiceImpl.java @@ -682,7 +682,10 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { } @Override - public List getApprovalUsers(String flowId) { + public ApprovalNodesDTO getApprovalUsers(String flowId) { + ApprovalNodesDTO nodes = new ApprovalNodesDTO(); + nodes.setProcessTitle(""); + nodes.setExplanation(""); List list = new ArrayList<>(); // 获取到模板最近一次未完成的流程 @@ -690,7 +693,8 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { .eq("id", flowId) .doQueryFirst(EngineReviewListPojo.class); if (flow == null) { - return list; + nodes.setNodeList(list); + return nodes; } // 获取流程节点 @@ -710,7 +714,10 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { ); list.add(dto); }); - return list; + nodes.setProcessTitle(flow.getProcessTopic()); + nodes.setExplanation(flow.getReviewComment()); + nodes.setNodeList(list); + return nodes; } @Override 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 09f2df7..f673b3e 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 @@ -58,6 +58,158 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService private static final String FLOW_LOCK_PREFIX = "report:lock:"; private static final int FLOW_LOCK_EXPIRE_SECONDS = 5; + + @Override + @Transactional(rollbackFor = Exception.class) + public void insertReport(SaveBenchmarkingReportForm form) { + // 创建报告 + BenchmarkingReport report = new BenchmarkingReport(); + BeanUtils.copyProperties(form, report); + report.setFilePath(form.getFileUrl() == null ? "" : form.getFileUrl()); + report.setUploadTime(Timestamp.valueOf(LocalDateTime.now())); + // 草稿状态 + report.setStatus("DRAFT"); + report.setCreateBy(form.getUserId()); + report.setIsDelete(0); + report.setReturnNum(0); + report.setFileName(form.getFileName()); + bd.getBusinessDatabase().doInsert(report); + + // 新增流程 + ApprovalFlow flow = new ApprovalFlow(); + flow.setTemplateId(report.getId()); + flow.setCurrentNode(1); + flow.setFlowStatus("DRAFT"); + flow.setProcessTitle(form.getProcessTitle()); + flow.setCreateBy(form.getUserId()); + flow.setCreatedTime(Timestamp.valueOf(LocalDateTime.now())); + flow.setFlowType(2); // 设置为报告审批流程 + flow.setExplanation(form.getExplanation()); + flow.setReturnNum(0); + flow.setPreNode(-1); + bd.getBusinessDatabase().doInsert(flow); + + // 创建审批配置 + List approvalConfigs = new ArrayList<>(); + for (ApprovalNodeDTO node : form.getNodeList()) { + ApprovalConfigPojo config = new ApprovalConfigPojo(); + config.setNodeName(node.getNodeName()); + config.setNodeOrder(node.getNodeOrder()); + config.setAssignees(JSON.toJSONString(node.getAssignees())); + config.setApprovalId(flow.getId()); + approvalConfigs.add(config); + } + bd.getBusinessDatabase().doBatchInsert(approvalConfigs); + } + + @Override + public void updateReport(UpdateBenchmarkingReportForm form) { + // 验证报告 + BenchmarkingReport report = bd.getBusinessDatabase() + .eq("id", form.getReportId()) + .doQueryFirst(BenchmarkingReport.class); + if (!"DRAFT".equals(report.getStatus()) && !"REJECTED".equals(report.getStatus())) { + throw new CommonException("报告非草稿或拒绝状态不可修改"); + } + if (!Objects.equals(report.getCreateBy(), form.getUserId())) { + throw new CommonException("非创建者不能修改"); + } + // 修改报告 + BeanUtils.copyProperties(form, report); + report.setFilePath(form.getFileUrl() == null ? "" : form.getFileUrl()); + report.setUploadTime(Timestamp.valueOf(LocalDateTime.now())); + report.setStatus("DRAFT"); + bd.getBusinessDatabase() + .eq("id", report.getId()) + .doUpdate(report); + + // 修改流程 + ApprovalFlow flow = bd.getBusinessDatabase() + .eq("id", form.getFlowId()) + .doQueryFirst(ApprovalFlow.class); + flow.setExplanation(form.getExplanation()); + flow.setProcessTitle(form.getProcessTitle()); + bd.getBusinessDatabase() + .eq("id", flow.getId()) + .update("explanation", flow.getExplanation()) + .update("process_title", flow.getProcessTitle()) + .doUpdate(ApprovalFlow.class); + // 修改流程节点 + List ids = bd.getBusinessDatabase() + .eq("approval_id", flow.getId()) + .orderBy("node_order", "asc") + .doQuery(ApprovalConfigPojo.class) + .stream().map(ApprovalConfigPojo::getId) + .collect(Collectors.toList()); + bd.getBusinessDatabase() + .in("ids", ids) + .doDelete(ApprovalConfigPojo.class); + List approvalConfigs = new ArrayList<>(); + for (ApprovalNodeDTO node : form.getNodeList()) { + ApprovalConfigPojo config = new ApprovalConfigPojo(); + config.setNodeName(node.getNodeName()); + config.setNodeOrder(node.getNodeOrder()); + config.setAssignees(JSON.toJSONString(node.getAssignees())); + config.setApprovalId(flow.getId()); + approvalConfigs.add(config); + } + bd.getBusinessDatabase().doBatchInsert(approvalConfigs); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteReport(String reportId) { + BenchmarkingReport report = bd.getBusinessDatabase() + .eq("id", reportId) + .doQueryFirst(BenchmarkingReport.class); + if (report == null) { + throw new CommonException("该报告不存在"); + } + ApprovalFlow flow = bd.getBusinessDatabase() + .eq("template_id", reportId) + .ne("pre_node", -1) + .eq("flow_status", "APPROVING") + .orderBy("created_time", "desc") + .doQueryFirst(ApprovalFlow.class); + if (flow != null) { + throw new CommonException("该报告正在审批中"); + } + bd.getBusinessDatabase() + .eq("id", reportId) + .update("is_delete", 1) + .doUpdate(BenchmarkingReport.class); + } + + @Override + public String uploadFile(MultipartFile file, String userId) { + String currentTenantId = runtimeAppContextService.getCurrentTenantId(); + AppTokenDTO token = apaasMyTokenFeign.getAppToken( + "client_credentials", + clientId, + clientSecret + ); + + UserTokenDT0 userToken = apaasMyTokenFeign.getUserToken( + token.getAccess_token(), + userId + ); + + String uploadId = new ObjectId().toHexString(); + FileUploadDTO fileUploadDTO = apaasMyTokenFeign.uploadFile( + "Bearer " + userToken.getAccess_token(), + "application/x-www-form-urlencoded", + file, + uploadId, + currentTenantId, + userId + ); + Map map = new HashMap<>(); + map.put("xdaptenantid", currentTenantId); + cn.hutool.json.JSON json = JSONUtil.parse(map); + String tokenXdap = Base64.encode(json.toString()); + return fileUploadDTO.getData().getUrl() +"&download=download&token=" + tokenXdap; + } + @Override @Transactional(rollbackFor = Exception.class) public void startReportApproval(ApprovalPersonForm form) { @@ -70,59 +222,34 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService } ApprovalFlow approvalFlow = bd.getBusinessDatabase() - .eq("template_id", report.getId()) + .eq("id", form.getFlowId()) .doQueryFirst(ApprovalFlow.class); - if (approvalFlow != null && Objects.equals(approvalFlow.getFlowStatus(), "APPROVING")) { - throw new CommonException("该报告正在审批中,请勿重复发起审批"); + if (approvalFlow == null || Objects.equals(approvalFlow.getFlowStatus(), "APPROVING")) { + throw new CommonException("该报告正在审批中"); } - // 新增流程 - ApprovalFlow flow = new ApprovalFlow(); - flow.setTemplateId(report.getId()); - flow.setCurrentNode(1); - flow.setFlowStatus("APPROVING"); - flow.setProcessTitle(form.getProcessTitle()); - flow.setCreateBy(form.getUserId()); - flow.setCreatedTime(Timestamp.valueOf(LocalDateTime.now())); - flow.setFlowType(2); // 设置为报告审批流程 - flow.setExplanation(form.getExplanation()); - flow.setReturnNum(0); - flow.setPreNode(-1); - bd.getBusinessDatabase().doInsert(flow); + // 获取首个节点 + ApprovalConfigPojo firstNode = bd.getBusinessDatabase() + .eq("approval_id", approvalFlow.getId()) + .eq("node_order", 1) + .doQueryFirst(ApprovalConfigPojo.class); - // 创建审批配置 - List approvalConfigs = new ArrayList<>(); - ApprovalNodeDTO firstNode = new ApprovalNodeDTO(); - for (ApprovalNodeDTO node : form.getNodeList()) { - if (node.getNodeOrder() == 1) { - firstNode.setNodeOrder(1); - firstNode.setAssignees(node.getAssignees()); - firstNode.setNodeName(node.getNodeName()); - } - ApprovalConfigPojo config = new ApprovalConfigPojo(); - config.setNodeName(node.getNodeName()); - config.setNodeOrder(node.getNodeOrder()); - config.setAssignees(JSON.toJSONString(node.getAssignees())); - config.setApprovalId(flow.getId()); - approvalConfigs.add(config); - } - bd.getBusinessDatabase().doBatchInsert(approvalConfigs); // 新增我的待办 List list = new ArrayList<>(); - for (String person : firstNode.getAssignees()) { + for (String person : JSON.parseArray(firstNode.getAssignees()).toJavaList(String.class)) { TodoTaskPojo todoTask = new TodoTaskPojo(); todoTask.setCreatedById(form.getUserId()); todoTask.setCreatedBy(xdapDeptUsersService.selectUserByID(form.getUserId()).getUsername()); todoTask.setCurrentNode(firstNode.getNodeName()); todoTask.setDataType("对标报告审核"); - todoTask.setDocumentNo(flow.getId()); + todoTask.setDocumentNo(approvalFlow.getId()); todoTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); todoTask.setIsDelete(0); todoTask.setModelId(report.getId()); todoTask.setModelName(report.getProjectName() + "对标报告"); - todoTask.setProcessTitle(form.getProcessTitle()); - todoTask.setStatusCode(flow.getFlowStatus()); + todoTask.setProcessTitle(approvalFlow.getProcessTitle()); + todoTask.setStatusCode(approvalFlow.getFlowStatus()); todoTask.setVersionNumber(1); todoTask.setOwnerId(person); todoTask.setCurrentProcessor(JSON.toJSONString(firstNode.getAssignees())); @@ -132,23 +259,23 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService // 新增我创建的 InitiatedTaskPojo initiatedTask = new InitiatedTaskPojo(); - initiatedTask.setDocumentNo(flow.getId()); + initiatedTask.setDocumentNo(approvalFlow.getId()); initiatedTask.setCreatedById(form.getUserId()); initiatedTask.setCreatedBy(xdapDeptUsersService.selectUserByID(form.getUserId()).getUsername()); initiatedTask.setCurrentNode(firstNode.getNodeName()); initiatedTask.setCurrentProcessor(JSON.toJSONString(firstNode.getAssignees())); initiatedTask.setDataType("对标报告审核"); - initiatedTask.setProcessTitle(form.getProcessTitle()); + initiatedTask.setProcessTitle(approvalFlow.getProcessTitle()); initiatedTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); initiatedTask.setIsDelete(0); - initiatedTask.setModelId(flow.getTemplateId()); + initiatedTask.setModelId(approvalFlow.getTemplateId()); initiatedTask.setEnableReturn(1); bd.getBusinessDatabase().doInsert(initiatedTask); // 新增发起记录 bd.getBusinessDatabase().doInsert( new ApprovalRecord( - flow.getId(), + approvalFlow.getId(), "发起审批", xdapDeptUsersService.selectUserByID(form.getUserId()).getUsername(), "发起审批", @@ -397,60 +524,6 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService } } - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteReport(String reportId) { - BenchmarkingReport report = bd.getBusinessDatabase() - .eq("id", reportId) - .doQueryFirst(BenchmarkingReport.class); - if (report == null) { - throw new CommonException("该报告不存在"); - } - ApprovalFlow flow = bd.getBusinessDatabase() - .eq("template_id", reportId) - .ne("pre_node", -1) - .eq("flow_status", "APPROVING") - .orderBy("created_time", "desc") - .doQueryFirst(ApprovalFlow.class); - if (flow != null) { - throw new CommonException("该报告正在审批中"); - } - bd.getBusinessDatabase() - .eq("id", reportId) - .update("is_delete", 1) - .doUpdate(BenchmarkingReport.class); - } - - @Override - public String uploadFile(MultipartFile file, String userId) { - String currentTenantId = runtimeAppContextService.getCurrentTenantId(); - AppTokenDTO token = apaasMyTokenFeign.getAppToken( - "client_credentials", - clientId, - clientSecret - ); - - UserTokenDT0 userToken = apaasMyTokenFeign.getUserToken( - token.getAccess_token(), - userId - ); - - String uploadId = new ObjectId().toHexString(); - FileUploadDTO fileUploadDTO = apaasMyTokenFeign.uploadFile( - "Bearer " + userToken.getAccess_token(), - "application/x-www-form-urlencoded", - file, - uploadId, - currentTenantId, - userId - ); - Map map = new HashMap<>(); - map.put("xdaptenantid", currentTenantId); - cn.hutool.json.JSON json = JSONUtil.parse(map); - String tokenXdap = Base64.encode(json.toString()); - return fileUploadDTO.getData().getUrl() +"&download=download&token=" + tokenXdap; - } - @Override public PageQueryResult getApprovalList(ApprovalListForm form) { PageQueryResult result = bd.getBusinessDatabase() @@ -503,41 +576,6 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService return result; } - @Override - public void insertReport(SaveBenchmarkingReportForm form) { - BenchmarkingReport report = new BenchmarkingReport(); - BeanUtils.copyProperties(form, report); - report.setFilePath(form.getFileUrl() == null ? "" : form.getFileUrl()); - report.setUploadTime(Timestamp.valueOf(LocalDateTime.now())); - // 草稿状态 - report.setStatus("DRAFT"); - report.setCreateBy(form.getUserId()); - report.setIsDelete(0); - report.setReturnNum(0); - report.setFileName(form.getFileName()); - bd.getBusinessDatabase().doInsert(report); - } - - @Override - public void updateReport(UpdateBenchmarkingReportForm form) { - BenchmarkingReport report = bd.getBusinessDatabase() - .eq("id", form.getReportId()) - .doQueryFirst(BenchmarkingReport.class); - if (!"DRAFT".equals(report.getStatus()) && !"REJECTED".equals(report.getStatus())) { - throw new CommonException("报告非草稿或拒绝状态不可修改"); - } - if (!Objects.equals(report.getCreateBy(), form.getUserId())) { - throw new CommonException("非创建者不能修改"); - } - BeanUtils.copyProperties(form, report); - report.setFilePath(form.getFileUrl() == null ? "" : form.getFileUrl()); - report.setUploadTime(Timestamp.valueOf(LocalDateTime.now())); - report.setStatus("DRAFT"); - bd.getBusinessDatabase() - .eq("id", report.getId()) - .doUpdate(report); - } - private void setCurrentApprovers(PageQueryResult result) { result.getResult().forEach(item -> { ApprovalXdapUsers approvalXdapUser = 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 387110c..a73cc98 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 @@ -8,6 +8,7 @@ import com.xdap.self_development.controller.form.*; import com.xdap.self_development.exception.CommonException; import com.xdap.self_development.pojo.*; import com.xdap.self_development.pojo.dto.ApprovalNodeDTO; +import com.xdap.self_development.pojo.dto.ApprovalNodesDTO; import com.xdap.self_development.pojo.view.ApprovalFlowNodeView; import com.xdap.self_development.pojo.view.FlowNode; import com.xdap.self_development.pojo.view.TemplateChangeView; @@ -603,7 +604,10 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { } @Override - public List getApprovalUsers(String templateId) { + public ApprovalNodesDTO getApprovalUsers(String templateId) { + ApprovalNodesDTO nodes = new ApprovalNodesDTO(); + nodes.setProcessTitle(""); + nodes.setExplanation(""); List list = new ArrayList<>(); // 获取到模板最近一次未完成的流程 @@ -614,7 +618,8 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { .orderBy("created_time", "desc") .doQueryFirst(ApprovalFlow.class); if (flow == null) { - return list; + nodes.setNodeList(list); + return nodes; } // 获取流程节点 @@ -634,7 +639,10 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { ); list.add(dto); }); - return list; + nodes.setProcessTitle(flow.getProcessTitle()); + nodes.setExplanation(flow.getExplanation()); + nodes.setNodeList(list); + return nodes; } @Override