From 53e938e66daacd2cd004e8970aa7a3b1dadec8c3 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Mon, 31 Mar 2025 12:22:40 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5-=E8=87=AA=E5=8A=A8=E5=8C=96?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E8=8A=82=E7=82=B9=E5=BC=82=E5=B8=B8=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E5=B1=95=E7=A4=BA=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1356418362343424]工单详情页-自动化作业节点异常信息展示优化 http://192.168.0.96:8090/demo/rdm.html#/story-detail/939050947543040/939050947543042/1356418362343424 --- .../AutoexecSuccessMessageAuditHandler.java | 95 +++++++++++++++++++ .../AutoexecProcessTaskAuditDetailType.java | 71 ++++++++++++++ .../component/CreateJobProcessComponent.java | 10 +- 3 files changed, 175 insertions(+), 1 deletion(-) create mode 100644 src/main/java/neatlogic/module/autoexec/process/audithandler/handler/AutoexecSuccessMessageAuditHandler.java create mode 100644 src/main/java/neatlogic/module/autoexec/process/constvalue/AutoexecProcessTaskAuditDetailType.java diff --git a/src/main/java/neatlogic/module/autoexec/process/audithandler/handler/AutoexecSuccessMessageAuditHandler.java b/src/main/java/neatlogic/module/autoexec/process/audithandler/handler/AutoexecSuccessMessageAuditHandler.java new file mode 100644 index 00000000..10fd5e86 --- /dev/null +++ b/src/main/java/neatlogic/module/autoexec/process/audithandler/handler/AutoexecSuccessMessageAuditHandler.java @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2025 深圳极向量科技有限公司 All Rights Reserved. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package neatlogic.module.autoexec.process.audithandler.handler; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import neatlogic.framework.autoexec.constvalue.JobStatus; +import neatlogic.framework.autoexec.dao.mapper.AutoexecJobMapper; +import neatlogic.framework.autoexec.dto.job.AutoexecJobPhaseVo; +import neatlogic.framework.autoexec.dto.job.AutoexecJobVo; +import neatlogic.framework.process.audithandler.core.IProcessTaskStepAuditDetailHandler; +import neatlogic.framework.process.dto.ProcessTaskStepAuditDetailVo; +import neatlogic.module.autoexec.process.constvalue.AutoexecProcessTaskAuditDetailType; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component +public class AutoexecSuccessMessageAuditHandler implements IProcessTaskStepAuditDetailHandler { + + @Resource + private AutoexecJobMapper autoexecJobMapper; + + @Override + public String getType() { + return AutoexecProcessTaskAuditDetailType.AUTOEXECMESSAGE.getValue(); + } + + @Override + public int handle(ProcessTaskStepAuditDetailVo processTaskStepAuditDetailVo) { + JSONObject resultObj = new JSONObject(); + String newContent = processTaskStepAuditDetailVo.getNewContent(); + if (StringUtils.isNotBlank(newContent)) { + JSONObject jsonObj = JSONObject.parseObject(newContent); + if (MapUtils.isNotEmpty(jsonObj)) { + JSONArray jobIdArray = jsonObj.getJSONArray("jobIdList"); + if (CollectionUtils.isNotEmpty(jobIdArray)) { + List jobIdList = jobIdArray.toJavaList(Long.class); + int completed = 0, failed = 0, running = 0; + Map> jobIdToAutoexecJobPhaseListMap = new HashMap<>(); + List jobPhaseList = autoexecJobMapper.getJobPhaseListWithGroupByJobIdList(jobIdList); + for (AutoexecJobPhaseVo autoexecJobPhaseVo : jobPhaseList) { + jobIdToAutoexecJobPhaseListMap.computeIfAbsent(autoexecJobPhaseVo.getJobId(), key -> new ArrayList<>()).add(autoexecJobPhaseVo); + } + List autoexecJobList = autoexecJobMapper.getJobListByIdList(jobIdList); + for (AutoexecJobVo autoexecJobVo : autoexecJobList) { + List jobPhaseVoList = jobIdToAutoexecJobPhaseListMap.get(autoexecJobVo.getId()); + autoexecJobVo.setPhaseList(jobPhaseVoList); + if (JobStatus.isRunningStatus(autoexecJobVo.getStatus())) { + running++; + } else if (JobStatus.isCompletedStatus(autoexecJobVo.getStatus())) { + completed++; + } else if (JobStatus.isFailedStatus(autoexecJobVo.getStatus())) { + failed++; + } + } + + if (running > 0) { + resultObj.put("status", JobStatus.RUNNING.getValue()); + } else if (failed > 0) { + resultObj.put("status", JobStatus.FAILED.getValue()); + } else if (completed > 0) { + resultObj.put("status", JobStatus.COMPLETED.getValue()); + } + resultObj.put("jobList", autoexecJobList); + processTaskStepAuditDetailVo.setNewContent(resultObj.toJSONString()); + } + return 1; + } + } + return 0; + } +} diff --git a/src/main/java/neatlogic/module/autoexec/process/constvalue/AutoexecProcessTaskAuditDetailType.java b/src/main/java/neatlogic/module/autoexec/process/constvalue/AutoexecProcessTaskAuditDetailType.java new file mode 100644 index 00000000..747f1c71 --- /dev/null +++ b/src/main/java/neatlogic/module/autoexec/process/constvalue/AutoexecProcessTaskAuditDetailType.java @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2025 深圳极向量科技有限公司 All Rights Reserved. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package neatlogic.module.autoexec.process.constvalue; + +import neatlogic.framework.process.audithandler.core.IProcessTaskAuditDetailType; + +public enum AutoexecProcessTaskAuditDetailType implements IProcessTaskAuditDetailType { + AUTOEXECMESSAGE("autoexecmessage", "", "autoexecMessage", "oldAutoexecMessage", 22, false), + ; + + private String value; + private String text; + private String paramName; + private String oldDataParamName; + private int sort; + private boolean needCompression; + + AutoexecProcessTaskAuditDetailType(String value, String text, String paramName, String oldDataParamName, int sort, boolean needCompression) { + this.value = value; + this.text = text; + this.paramName = paramName; + this.oldDataParamName = oldDataParamName; + this.sort = sort; + this.needCompression = needCompression; + } + + @Override + public String getValue() { + return value; + } + + @Override + public String getText() { + return text; + } + + @Override + public String getParamName() { + return paramName; + } + + @Override + public String getOldDataParamName() { + return oldDataParamName; + } + + @Override + public int getSort() { + return sort; + } + + @Override + public boolean getNeedCompression() { + return needCompression; + } +} diff --git a/src/main/java/neatlogic/module/autoexec/process/stephandler/component/CreateJobProcessComponent.java b/src/main/java/neatlogic/module/autoexec/process/stephandler/component/CreateJobProcessComponent.java index 0e084334..13eeb3ad 100644 --- a/src/main/java/neatlogic/module/autoexec/process/stephandler/component/CreateJobProcessComponent.java +++ b/src/main/java/neatlogic/module/autoexec/process/stephandler/component/CreateJobProcessComponent.java @@ -50,6 +50,7 @@ import neatlogic.framework.process.stephandler.core.*; import neatlogic.module.autoexec.constvalue.FailPolicy; import neatlogic.module.autoexec.dao.mapper.AutoexecCombopVersionMapper; import neatlogic.module.autoexec.dao.mapper.AutoexecServiceMapper; +import neatlogic.module.autoexec.process.constvalue.AutoexecProcessTaskAuditDetailType; import neatlogic.module.autoexec.process.constvalue.CreateJobProcessStepHandlerType; import neatlogic.module.autoexec.process.dto.AutoexecJobBuilder; import neatlogic.module.autoexec.process.dto.CreateJobConfigConfigVo; @@ -335,6 +336,7 @@ public class CreateJobProcessComponent extends ProcessStepHandlerBase { processTaskStepDataVo.setData(dataObj.toJSONString()); processTaskStepDataVo.setFcu(UserContext.get().getUserUuid()); processTaskStepDataCrossoverMapper.replaceProcessTaskStepData(processTaskStepDataVo); + currentProcessTaskStepVo.getParamObj().put(AutoexecProcessTaskAuditDetailType.AUTOEXECMESSAGE.getParamName(), dataObj.toJSONString()); String failPolicy = createJobConfigVo.getFailPolicy(); if (FailPolicy.KEEP_ON.getValue().equals(failPolicy)) { if (CollectionUtils.isNotEmpty(jobIdList)) { @@ -364,11 +366,17 @@ public class CreateJobProcessComponent extends ProcessStepHandlerBase { IProcessStepHandlerCrossoverUtil processStepHandlerCrossoverUtil = CrossoverServiceFactory.getApi(IProcessStepHandlerCrossoverUtil.class); /* 触发通知 **/ processStepHandlerCrossoverUtil.notify(processTaskStepVo, AutoexecNotifyTriggerType.CREATE_JOB_FAILED); + } else { + JSONObject dataObj = new JSONObject(); + dataObj.put("jobIdList", jobIdList); + currentProcessTaskStepVo.getParamObj().put(AutoexecProcessTaskAuditDetailType.AUTOEXECMESSAGE.getParamName(), dataObj.toJSONString()); } } catch (Exception e) { logger.error(e.getMessage(), e); + } finally { + IProcessStepHandlerCrossoverUtil processStepHandlerCrossoverUtil = CrossoverServiceFactory.getApi(IProcessStepHandlerCrossoverUtil.class); + processStepHandlerCrossoverUtil.audit(currentProcessTaskStepVo, ProcessTaskAuditType.ACTIVE); } - } }; processTaskStepThreadList.add(thread); -- Gitee