From 2b63397840f6f68ce0b101a4e3a5e1c0dbb4fa9b Mon Sep 17 00:00:00 2001 From: zjh <15615273395@163.com> Date: Thu, 25 Dec 2025 18:43:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9:=E5=AF=BC=E5=85=A5=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=89=8D=E7=9A=84=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/form/ApprovalFlowForm.java | 1 - .../pojo/view/TodoAndReportView.java | 2 +- .../service/TemplateApprovalService.java | 17 +++++++ .../impl/BenchmarkingReportServiceImpl.java | 6 ++- .../impl/TemplateApprovalServiceImpl.java | 46 +++++++++++-------- .../service/impl/TemplateServiceImpl.java | 1 + 6 files changed, 52 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/xdap/self_development/controller/form/ApprovalFlowForm.java b/src/main/java/com/xdap/self_development/controller/form/ApprovalFlowForm.java index bce5bc2..973f70a 100644 --- a/src/main/java/com/xdap/self_development/controller/form/ApprovalFlowForm.java +++ b/src/main/java/com/xdap/self_development/controller/form/ApprovalFlowForm.java @@ -8,6 +8,5 @@ import javax.validation.constraints.NotBlank; public class ApprovalFlowForm { @NotBlank(message = "流程不能为空") private String flowId; - @NotBlank(message = "模板不能为空") private String templateId; } diff --git a/src/main/java/com/xdap/self_development/pojo/view/TodoAndReportView.java b/src/main/java/com/xdap/self_development/pojo/view/TodoAndReportView.java index 948f45a..d4ba13b 100644 --- a/src/main/java/com/xdap/self_development/pojo/view/TodoAndReportView.java +++ b/src/main/java/com/xdap/self_development/pojo/view/TodoAndReportView.java @@ -9,7 +9,7 @@ import java.sql.Timestamp; @SQLQuery(value = { @SQL(view = "getAllReport", - sql = "SELECT br.id AS \"reportId\", br.* FROM yfsjglpt_model_benchmarking_report br WHERE br.is_delete = 0 and br.title like CONCAT('%', #title, '%') and br.manufacturer_name like CONCAT('%', #manufacturerName, '%') and br.model_name like CONCAT('%', #modelName, '%') and br.product_number like CONCAT('%', #productNumber, '%') and br.module like CONCAT('%', #module, '%') and br.plate like CONCAT('%', #plate, '%') and br.platform like CONCAT('%', #platform, '%') and br.series like CONCAT('%', #series, '%') and br.market_segment like CONCAT('%', #marketSegment, '%') and br.project_name like CONCAT('%', #projectName, '%') and br.project_number like CONCAT('%', #projectNumber, '%') and br.status like CONCAT('%', #status, '%') ORDER BY CASE br.status WHEN 'COMPLETE' THEN 1 WHEN 'APPROVING' THEN 2 WHEN 'REJECTED' THEN 3 ELSE 4 END ASC") + sql = "SELECT br.id AS \"reportId\", br.* FROM yfsjglpt_model_benchmarking_report br WHERE br.is_delete = 0 and br.title like CONCAT('%', #title, '%') and br.manufacturer_name like CONCAT('%', #manufacturerName, '%') and br.model_name like CONCAT('%', #modelName, '%') and br.product_number like CONCAT('%', #productNumber, '%') and br.module like CONCAT('%', #module, '%') and br.plate like CONCAT('%', #plate, '%') and br.platform like CONCAT('%', #platform, '%') and br.series like CONCAT('%', #series, '%') and br.market_segment like CONCAT('%', #marketSegment, '%') and br.project_name like CONCAT('%', #projectName, '%') and br.project_number like CONCAT('%', #projectNumber, '%') and br.status like CONCAT('%', #status, '%') ORDER BY CASE br.status WHEN 'COMPLETE' THEN 1 WHEN 'APPROVING' THEN 2 WHEN 'REJECTED' THEN 3 ELSE 4 END ASC , af.created_time DESC") }) @Data public class TodoAndReportView { 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 aecccd2..ae81d8d 100644 --- a/src/main/java/com/xdap/self_development/service/TemplateApprovalService.java +++ b/src/main/java/com/xdap/self_development/service/TemplateApprovalService.java @@ -2,6 +2,9 @@ package com.xdap.self_development.service; import com.definesys.mpaas.query.db.PageQueryResult; import com.xdap.self_development.controller.form.*; +import com.xdap.self_development.pojo.ApprovalConfigPojo; +import com.xdap.self_development.pojo.ApprovalFlow; +import com.xdap.self_development.pojo.Template; import com.xdap.self_development.pojo.view.ApprovalFlowNodeView; import com.xdap.self_development.pojo.view.TemplateChangeView; import com.xdap.self_development.pojo.view.TodoAndTemplateView; @@ -20,4 +23,18 @@ public interface TemplateApprovalService { ApprovalFlowNodeView getApprovalProcess(@Valid ApprovalFlowForm form); void handleReturn(@Valid HandleApprovalRequest request); + + void processApprovalLogic( + ApprovalFlow flow, HandleApprovalRequest request, ApprovalConfigPojo currentNode + ); + + void cancelProcess(ApprovalFlow flow, String status); + + void processNextNode(ApprovalFlow flow, ApprovalConfigPojo currentNode, String userId); + + boolean checkNodeComplete(ApprovalFlow flow, ApprovalConfigPojo node); + + void updateTasks(ApprovalFlow flow, String status); + + void addNodeTodo(ApprovalFlow flow, ApprovalConfigPojo node, Template template, String createBy); } 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 d838fae..10126fe 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 @@ -131,6 +131,8 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService initiatedTask.setDataType("对标报告审核"); initiatedTask.setProcessTitle(form.getProcessTitle()); initiatedTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + initiatedTask.setIsDelete(0); + initiatedTask.setModelId(flow.getTemplateId()); bd.getBusinessDatabase().doInsert(initiatedTask); // 更新报告状态为校对中 @@ -343,6 +345,8 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService completedTaskPojo.setOwnerId(request.getUserId()); completedTaskPojo.setProcessTitle(flow.getProcessTitle()); completedTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + completedTaskPojo.setIsDelete(0); + completedTaskPojo.setModelId(flow.getTemplateId()); bd.getBusinessDatabase().doInsert(completedTaskPojo); // 处理驳回逻辑 @@ -445,7 +449,7 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService .doUpdate(CompletedTaskPojo.class); bd.getBusinessDatabase() .eq("document_no", flow.getId()) - .update("current_node", "已拒绝") + .update("current_node", status) .doUpdate(InitiatedTaskPojo.class); } 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 0a311de..856352a 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 @@ -35,6 +35,8 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { private RedisLockUtil redisLockUtil; @Resource private XdapDeptUsersService xdapDeptUsersService; + @Resource + private TemplateApprovalService myself; // 分布式锁标志 private static final String FLOW_LOCK_PREFIX = "approval:lock:"; @@ -141,11 +143,14 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { InitiatedTaskPojo initiatedTask = new InitiatedTaskPojo(); initiatedTask.setDocumentNo(flow.getId()); initiatedTask.setCreatedById(request.getUserId()); + initiatedTask.setCreatedBy(xdapDeptUsersService.selectUserByID(request.getUserId()).getUsername()); initiatedTask.setCurrentNode(firstNode.getNodeName()); initiatedTask.setCurrentProcessor(JSON.toJSONString(firstNode.getAssignees())); initiatedTask.setDataType("模板审核"); initiatedTask.setProcessTitle(request.getProcessTitle()); initiatedTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + initiatedTask.setIsDelete(0); + initiatedTask.setModelId(flow.getTemplateId()); bd.getBusinessDatabase().doInsert(initiatedTask); // 更新模板状态为校对中 @@ -229,14 +234,14 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { if (processedCount > 0) { throw new CommonException("此节点已被他人处理"); } - processApprovalLogic(flow, request, currentNode); + myself.processApprovalLogic(flow, request, currentNode); } finally { redisLockUtil.unlock(lockKey, lockValue); } } // 会签节点 else { - processApprovalLogic(flow, request, currentNode); + myself.processApprovalLogic(flow, request, currentNode); } } @@ -246,7 +251,9 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { .toJavaList(String.class).contains(userId); } - private void processApprovalLogic(ApprovalFlow flow, HandleApprovalRequest request, ApprovalConfigPojo currentNode) { + public void processApprovalLogic( + ApprovalFlow flow, HandleApprovalRequest request, ApprovalConfigPojo currentNode + ) { // 记录审批结果 ApprovalRecord record = new ApprovalRecord(); record.setFlowId(flow.getId()); @@ -269,30 +276,33 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { CompletedTaskPojo completedTaskPojo = new CompletedTaskPojo(); completedTaskPojo.setDocumentNo(flow.getId()); completedTaskPojo.setCreatedById(request.getUserId()); + completedTaskPojo.setCreatedBy(xdapDeptUsersService.selectUserByID(request.getUserId()).getUsername()); completedTaskPojo.setCurrentNode(currentNode.getNodeName()); - completedTaskPojo.setCurrentProcessor(JSON.toJSONString(currentNode.getAssignees())); + completedTaskPojo.setCurrentProcessor(currentNode.getAssignees()); completedTaskPojo.setDataType("模板审核"); completedTaskPojo.setOwnerId(request.getUserId()); completedTaskPojo.setProcessTitle(flow.getProcessTitle()); completedTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + completedTaskPojo.setIsDelete(0); + completedTaskPojo.setModelId(flow.getTemplateId()); bd.getBusinessDatabase().doInsert(completedTaskPojo); // 处理驳回逻辑 if ("REJECT".equals(request.getResult())) { // 审批人退回 - cancelProcess(flow, "REJECTED"); + myself.cancelProcess(flow, "REJECTED"); return; } else if ("RETURN".equals(request.getResult())) { // 申请人撤回 - cancelProcess(flow, "RETURNED"); + myself.cancelProcess(flow, "RETURNED"); return; } // 处理通过逻辑,流转到下一节点 - processNextNode(flow, currentNode, request.getUserId()); + myself.processNextNode(flow, currentNode, request.getUserId()); } - private void cancelProcess(ApprovalFlow flow, String status) { + public void cancelProcess(ApprovalFlow flow, String status) { // 更新流程状态 flow.setFlowStatus(status); bd.getBusinessDatabase() @@ -310,13 +320,13 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { .update("return_num", template.getReturnNum() + 1) .doUpdate(Template.class); - updateTasks(flow, "已拒绝"); + myself.updateTasks(flow, "已拒绝"); } // 处理下一节点流转 - private void processNextNode(ApprovalFlow flow, ApprovalConfigPojo currentNode, String userId) { + public void processNextNode(ApprovalFlow flow, ApprovalConfigPojo currentNode, String userId) { // 检查当前节点是否满足流转条件 - if (!checkNodeComplete(flow, currentNode)) { + if (!myself.checkNodeComplete(flow, currentNode)) { return; } @@ -347,12 +357,12 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { .update("published_time", Timestamp.valueOf(LocalDateTime.now())) .doUpdate(Template.class); // 待办环节修改 - updateTasks(flow, "已完成"); + myself.updateTasks(flow, "已完成"); // 更新机型版本 // dataEntryEngineModelService.updateModelForNewVersion(); } else { flow.setCurrentNode(nextNode.getNodeOrder()); - addNodeTodo(flow, nextNode, template, userId); + myself.addNodeTodo(flow, nextNode, template, userId); } bd.getBusinessDatabase() @@ -363,7 +373,7 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { } // 检查节点是否完成 - private boolean checkNodeComplete(ApprovalFlow flow, ApprovalConfigPojo node) { + public boolean checkNodeComplete(ApprovalFlow flow, ApprovalConfigPojo node) { Integer processedCount = bd.getBusinessDatabase() .eq("flow_id", flow.getId()) .eq("node", node.getNodeName()) @@ -375,7 +385,7 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { } } - private void addNodeTodo(ApprovalFlow flow, ApprovalConfigPojo node, Template template, String createBy) { + public void addNodeTodo(ApprovalFlow flow, ApprovalConfigPojo node, Template template, String createBy) { // 获取处理人 List users = JSON.parseArray(node.getAssignees()).toJavaList(String.class); // 新增待办 @@ -400,14 +410,14 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { } // 更新已办和发起的状态 - updateTasks(flow, node.getNodeName()); + myself.updateTasks(flow, node.getNodeName()); if (!list.isEmpty()) { bd.getBusinessDatabase().doBatchInsert(list); } } - private void updateTasks(ApprovalFlow flow, String status) { + public void updateTasks(ApprovalFlow flow, String status) { // 更新已办和发起的节点状态 bd.getBusinessDatabase() .eq("document_no", flow.getId()) @@ -415,7 +425,7 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { .doUpdate(CompletedTaskPojo.class); bd.getBusinessDatabase() .eq("document_no", flow.getId()) - .update("current_node", "已拒绝") + .update("current_node", status) .doUpdate(InitiatedTaskPojo.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 4a4c707..b140207 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 @@ -227,6 +227,7 @@ public class TemplateServiceImpl implements TemplateService { } @Override + @Transactional(rollbackFor = Exception.class) public void processSheetData(List dataList, String sheetName, String templateRowId, String createBy, MyResponse problems) { if (dataList.isEmpty()) {