From 26b0526093082190317125f62c696f36df1c81ce Mon Sep 17 00:00:00 2001 From: "ys.git" <18439391935@163.com> Date: Tue, 23 Dec 2025 17:38:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=85=E5=8A=9E=E6=9B=B4=E6=96=B0=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../request/ApprovalNodeRequest.java | 2 + .../AnalysisCommonParametersService.java | 6 +- .../impl/ActivitiProcessServiceImpl.java | 139 ++++++++++++------ src/main/resources/sql.sql | 14 ++ 4 files changed, 111 insertions(+), 50 deletions(-) diff --git a/src/main/java/com/xdap/self_development/controller/request/ApprovalNodeRequest.java b/src/main/java/com/xdap/self_development/controller/request/ApprovalNodeRequest.java index 9402afd..d0fe8db 100644 --- a/src/main/java/com/xdap/self_development/controller/request/ApprovalNodeRequest.java +++ b/src/main/java/com/xdap/self_development/controller/request/ApprovalNodeRequest.java @@ -21,4 +21,6 @@ public class ApprovalNodeRequest { private String userId; //审批发起说明 private String comment; + //审批发起说明 + private String processTitle; } diff --git a/src/main/java/com/xdap/self_development/service/AnalysisCommonParametersService.java b/src/main/java/com/xdap/self_development/service/AnalysisCommonParametersService.java index fc5c0ed..43c7b71 100644 --- a/src/main/java/com/xdap/self_development/service/AnalysisCommonParametersService.java +++ b/src/main/java/com/xdap/self_development/service/AnalysisCommonParametersService.java @@ -2,12 +2,8 @@ package com.xdap.self_development.service; import com.xdap.self_development.controller.request.AnalysisRequest; -import com.xdap.self_development.controller.request.ApprovalNodeRequest; + import com.xdap.self_development.controller.request.ReportRequest; -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.view.AnalysisModelParamterView; import com.xdap.self_development.pojo.view.AnalysisModelParamterViewAndParam; 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 bbc50b3..1cbf25f 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 @@ -72,7 +72,11 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { if (ParamOperation.UPDATE.toString().equals(operation)) { String parameterValue = StringUtils.isEmpty(engineParamDetailPojo.getParameterValue()) ? "" : engineParamDetailPojo.getParameterValue(); - com = "修改:" + parameterValue + "改为" + engineParamDetailPojo.getMinorVersion(); + if (ObjectUtils.isEmpty(parameterValue)) { + com = "填写为:" + engineParamDetailPojo.getMinorVersion(); + } else { + com = "修改:" + parameterValue + "改为" + engineParamDetailPojo.getMinorVersion(); + } } if (ParamOperation.INSERT.toString().equals(operation)) { com = "新增"; @@ -117,7 +121,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { log.info("参与审批的数据为空"); return; } - + String processTitle = approvalNodeRequest.getProcessTitle(); String userId = approvalNodeRequest.getUserId(); // 1. 获取第一个审批环节(按nodeOrder排序取最小) ApprovalNodeDTO firstNode = approvalNodeRequest.getNodeList().stream() @@ -157,7 +161,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { engineReviewListPojo.setModelId(engineModelId); engineReviewListPojo.setModelName(modelPojoOld.getModelName()); engineReviewListPojo.setYcOrOth(modelPojoOld.getYcOrOth()); - engineReviewListPojo.setProcessTopic(processTopic); + engineReviewListPojo.setProcessTopic(processTitle); // engineReviewListPojo.setSubsystemName(subSystem); engineReviewListPojo.setStatusCode(ParamValueVersionEnum.UNDER.getCode()); engineReviewListPojo.setApplicant(userId); @@ -174,12 +178,12 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { TodoTaskPojo todoTaskPojo = new TodoTaskPojo(); todoTaskPojo.setDocumentNo(approvalId); - todoTaskPojo.setProcessTitle(CurrentNodeEnum.DATAAPPROVAL.getDesc()); + todoTaskPojo.setProcessTitle(processTitle); todoTaskPojo.setCurrentNode(ApprovalOrderEnum.PROOFREAD.getDesc()); todoTaskPojo.setModelId(engineModelId); todoTaskPojo.setVersionNumber(modelPojoOld.getVersionNumber()); todoTaskPojo.setOwnerId(assigneeId); - todoTaskPojo.setDataType(modelPojoOld.getYcOrOth()); + todoTaskPojo.setDataType(CurrentNodeEnum.DATAAPPROVAL.getDesc()); todoTaskPojo.setModelName(modelPojoOld.getModelName()); todoTaskPojo.setCreatedById(userId); todoTaskPojo.setCreatedBy(createBy); @@ -256,6 +260,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { || reviewListPojo.getStatusCode() == ParamValueVersionEnum.PASSED.getCode()) { throw new RuntimeException("无效的审批记录请检查是否已经审批完成或被拒绝"); } + String processTopic = reviewListPojo.getProcessTopic(); //查看当前人是否有权限审批 String currentAssignees = reviewListPojo.getApproverPersons(); List assigneeList = Arrays.asList(currentAssignees.split(",")); @@ -311,6 +316,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { //审批流的待办全部is_delete=1 sw.buildFromDatasource("xdap_app_223770822127386625") .update("is_delete", 1) +// .update("current_node", ParamValueVersionEnum.REFUSE.getDesc()) .update("last_update_date", new Date()) .eq("document_no", approvalId).doUpdate(TodoTaskPojo.class); return "已拒绝"; @@ -325,6 +331,11 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { Set operatedUsers = nodeRecords.stream() .map(ParamApprovalRecordPojo::getAssignee) .collect(Collectors.toSet()); + // 获取下一个环节 + List approvalConfigPojos = sw.buildFromDatasource("xdap_app_223770822127386625") + .eq("approval_id", approvalId) + .eq("node_order", (nodeOrder + 1)) + .doQuery(ApprovalConfigPojo.class); //必须已经全部通过 不是会签的话例外 if (operatedUsers.containsAll(assigneeList) || notAll) { @@ -337,37 +348,61 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { } else { isd = 2;//被抢签完成 } - sw.buildFromDatasource("xdap_app_223770822127386625") - .update("is_delete", isd) - .update("last_update_date", new Date()) - .eq("document_no", approvalId) - .eq("owner_id", assID) - .doUpdate(TodoTaskPojo.class); + if (ObjectUtils.isNotEmpty(approvalConfigPojos)) { + sw.buildFromDatasource("xdap_app_223770822127386625") + .update("is_delete", isd) + .update("current_node", approvalConfigPojos.get(0).getNodeName()) + .update("last_update_date", new Date()) + .update("current_processor", Arrays.asList(approvalConfigPojos.get(0).getAssignees().split(","))) + .eq("document_no", approvalId) + .eq("owner_id", assID) + .doUpdate(TodoTaskPojo.class); + } else { + sw.buildFromDatasource("xdap_app_223770822127386625") + .update("is_delete", isd) + .update("last_update_date", new Date()) + .update("current_processor", "-") + .eq("document_no", approvalId) + .eq("owner_id", assID) + .doUpdate(TodoTaskPojo.class); + } } - // 获取下一个环节 - List approvalConfigPojos = sw.buildFromDatasource("xdap_app_223770822127386625") - .eq("approval_id", approvalId) - .eq("node_order", (nodeOrder + 1)) - .doQuery(ApprovalConfigPojo.class); if (ObjectUtils.isNotEmpty(approvalConfigPojos)) { ApprovalConfigPojo approvalConfigPojo1 = approvalConfigPojos.get(0); for (String nextAssId : Arrays.asList(approvalConfigPojo1.getAssignees().split(","))) { - TodoTaskPojo todoTaskPojo = new TodoTaskPojo(); - todoTaskPojo.setDocumentNo(approvalId); - todoTaskPojo.setProcessTitle(CurrentNodeEnum.DATAAPPROVAL.getDesc()); - todoTaskPojo.setCurrentNode(approvalConfigPojo1.getNodeName()); - todoTaskPojo.setModelId(reviewListPojo.getModelId()); - todoTaskPojo.setVersionNumber(modelPojo.getVersionNumber()); - todoTaskPojo.setOwnerId(nextAssId); - todoTaskPojo.setDataType(modelPojo.getYcOrOth()); - todoTaskPojo.setModelName(modelPojo.getModelName()); - todoTaskPojo.setCreatedById(approvalConfigPojo.getCreatedBy()); - todoTaskPojo.setCreatedBy(createBy); - todoTaskPojo.setCreationDate(new Date()); - todoTaskPojo.setIsDelete(0); - sw.buildFromDatasource("xdap_app_223770822127386625").doInsert(todoTaskPojo); + // 更新待办 + List todoTaskPojos = sw.buildFromDatasource("xdap_app_223770822127386625") + .eq("document_no", approvalId) + .eq("owner_id", nextAssId) + .update("is_delete", 0) + .doQuery(TodoTaskPojo.class); + + sw.buildFromDatasource("xdap_app_223770822127386625") + .update("last_update_date", new Date()) + .update("current_node", approvalConfigPojo1.getNodeName()) + .update("current_processor", Arrays.asList(approvalConfigPojo1.getAssignees().split(","))) + .eq("document_no", approvalId) +// .eq("is_delete", 0) +// .eq("owner_id", nextAssId) + .doUpdate(TodoTaskPojo.class); + if (ObjectUtils.isEmpty(todoTaskPojos)) { + TodoTaskPojo todoTaskPojo = new TodoTaskPojo(); + todoTaskPojo.setDocumentNo(approvalId); + todoTaskPojo.setProcessTitle(processTopic); + todoTaskPojo.setCurrentNode(approvalConfigPojo1.getNodeName()); + todoTaskPojo.setModelId(reviewListPojo.getModelId()); + todoTaskPojo.setVersionNumber(modelPojo.getVersionNumber()); + todoTaskPojo.setOwnerId(nextAssId); + todoTaskPojo.setDataType(CurrentNodeEnum.DATAAPPROVAL.getDesc()); + todoTaskPojo.setModelName(modelPojo.getModelName()); + todoTaskPojo.setCreatedById(approvalConfigPojo.getCreatedBy()); + todoTaskPojo.setCreatedBy(createBy); + todoTaskPojo.setCreationDate(new Date()); + todoTaskPojo.setIsDelete(0); + sw.buildFromDatasource("xdap_app_223770822127386625").doInsert(todoTaskPojo); + } } //更新审批流到下个审批节点 sw.buildFromDatasource("xdap_app_223770822127386625") @@ -423,6 +458,12 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { .update("approver_persons", "") .update("last_update_date", new Date()) .eq("id", approvalId).doUpdate(EngineReviewListPojo.class); + //待办环节修改 + sw.buildFromDatasource("xdap_app_223770822127386625") + .update("is_delete", 1) + .update("current_node", ParamValueVersionEnum.PASSED.getDesc()) + .update("last_update_date", new Date()) + .eq("document_no", approvalId).doUpdate(TodoTaskPojo.class); } } else { //如果还有未通过的 找到未通过的 @@ -434,25 +475,33 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { sw.buildFromDatasource("xdap_app_223770822127386625") .update("is_delete", 1) .update("last_update_date", new Date()) + .update("current_processor", remainingAssignees) .eq("document_no", approvalId) + .eq("owner_id", approver) .doUpdate(TodoTaskPojo.class); for (String remainingAssignee : remainingAssignees) { - TodoTaskPojo todoTaskPojo = new TodoTaskPojo(); - todoTaskPojo.setDocumentNo(approvalId); - todoTaskPojo.setProcessTitle(CurrentNodeEnum.DATAAPPROVAL.getDesc()); - todoTaskPojo.setCurrentNode(reviewListPojo.getNodeName()); - todoTaskPojo.setModelId(reviewListPojo.getModelId()); - todoTaskPojo.setVersionNumber(modelPojo.getVersionNumber()); - todoTaskPojo.setOwnerId(remainingAssignee); - todoTaskPojo.setDataType(modelPojo.getYcOrOth()); - todoTaskPojo.setModelName(modelPojo.getModelName()); - todoTaskPojo.setCreatedById(approvalConfigPojo.getCreatedBy()); - todoTaskPojo.setCreatedBy(createBy); - todoTaskPojo.setCreationDate(new Date()); - todoTaskPojo.setIsDelete(0); - sw.buildFromDatasource("xdap_app_223770822127386625").doInsert(todoTaskPojo); - + List todoTaskPojos = sw.buildFromDatasource("xdap_app_223770822127386625") + .eq("document_no", approvalId) + .eq("owner_id", remainingAssignee) + .update("is_delete", 0) + .doQuery(TodoTaskPojo.class); + if (ObjectUtils.isEmpty(todoTaskPojos)) { + TodoTaskPojo todoTaskPojo = new TodoTaskPojo(); + todoTaskPojo.setDocumentNo(approvalId); + todoTaskPojo.setProcessTitle(processTopic); + todoTaskPojo.setCurrentNode(reviewListPojo.getNodeName()); + todoTaskPojo.setModelId(reviewListPojo.getModelId()); + todoTaskPojo.setVersionNumber(modelPojo.getVersionNumber()); + todoTaskPojo.setOwnerId(remainingAssignee); + todoTaskPojo.setDataType(CurrentNodeEnum.DATAAPPROVAL.getDesc()); + todoTaskPojo.setModelName(modelPojo.getModelName()); + todoTaskPojo.setCreatedById(approvalConfigPojo.getCreatedBy()); + todoTaskPojo.setCreatedBy(createBy); + todoTaskPojo.setCreationDate(new Date()); + todoTaskPojo.setIsDelete(0); + sw.buildFromDatasource("xdap_app_223770822127386625").doInsert(todoTaskPojo); + } } //更新机型审批数据的当前审批人去掉已经审批通过的那个人 sw.buildFromDatasource("xdap_app_223770822127386625") diff --git a/src/main/resources/sql.sql b/src/main/resources/sql.sql index d9691e8..66eec51 100644 --- a/src/main/resources/sql.sql +++ b/src/main/resources/sql.sql @@ -1,4 +1,18 @@ DROP TABLE IF EXISTS `yfsjglpt_model_approval_flow`; +-- yc_datasource_0.approval_config definition + +CREATE TABLE `approval_config` ( + `id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT 'ID', + `approval_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '流程ID', + `node_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '环节', + `assignees` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '处理人列表', + `node_order` int DEFAULT NULL COMMENT '环节顺序', + `created_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '创建人', + `creation_date` datetime DEFAULT NULL COMMENT '创建时间', + `last_updated_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '最后更新人', + `last_update_date` datetime DEFAULT NULL COMMENT '最后更新时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='流程配置表'; CREATE TABLE `yfsjglpt_model_approval_flow` (