From 4eb8a17727d982a13ed3dd3e070f182cb09cf505 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Thu, 27 Feb 2025 17:14:55 +0800 Subject: [PATCH 1/2] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=99=A8=E5=90=AF=E5=8A=A8=E6=97=B6=E5=88=A0=E9=99=A4processta?= =?UTF-8?q?sk=5Fstep=5Fin=5Foperation=E8=A1=A8=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1365928728559616]服务器启动时删除processtask_step_in_operation表数据 http://192.168.0.96:8090/demo/rdm.html#/story-detail/939050947543040/939050947543042/1365928728559616 --- .../DeleteProcessTaskStepInOperationApi.java | 24 +++++--- .../ProcessTaskProcessableStepList.java | 57 ++++++++++--------- .../mapper/processtask/ProcessTaskMapper.java | 2 + .../mapper/processtask/ProcessTaskMapper.xml | 6 ++ ...cessTaskStepInOperationStartupHandler.java | 48 ++++++++++++++++ .../changelog/2025-02-27/neatlogic_tenant.sql | 2 + .../process/changelog/2025-02-27/version.json | 11 ++++ 7 files changed, 116 insertions(+), 34 deletions(-) create mode 100644 src/main/java/neatlogic/module/process/startup/handler/ClearProcessTaskStepInOperationStartupHandler.java create mode 100644 src/main/resources/neatlogic/resources/process/changelog/2025-02-27/neatlogic_tenant.sql create mode 100644 src/main/resources/neatlogic/resources/process/changelog/2025-02-27/version.json diff --git a/src/main/java/neatlogic/module/process/api/processtask/DeleteProcessTaskStepInOperationApi.java b/src/main/java/neatlogic/module/process/api/processtask/DeleteProcessTaskStepInOperationApi.java index 815bab0db..95c4fde94 100644 --- a/src/main/java/neatlogic/module/process/api/processtask/DeleteProcessTaskStepInOperationApi.java +++ b/src/main/java/neatlogic/module/process/api/processtask/DeleteProcessTaskStepInOperationApi.java @@ -1,17 +1,21 @@ package neatlogic.module.process.api.processtask; +import com.alibaba.fastjson.JSONObject; import neatlogic.framework.auth.core.AuthAction; import neatlogic.framework.common.constvalue.ApiParamType; import neatlogic.framework.process.auth.PROCESS_BASE; -import neatlogic.module.process.dao.mapper.processtask.ProcessTaskMapper; +import neatlogic.framework.process.dto.ProcessTaskStepInOperationVo; import neatlogic.framework.restful.annotation.*; import neatlogic.framework.restful.constvalue.OperationTypeEnum; import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; -import com.alibaba.fastjson.JSONObject; +import neatlogic.framework.util.TableResultUtil; +import neatlogic.module.process.dao.mapper.processtask.ProcessTaskMapper; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.util.List; @Service @Transactional @@ -29,7 +33,7 @@ public class DeleteProcessTaskStepInOperationApi extends PrivateApiComponentBase @Override public String getName() { - return "根据工单ID删除processtask_step_in_operation表数据"; + return "nmpap.deleteprocesstaskstepinoperationapi.getname"; } @Override @@ -38,13 +42,19 @@ public class DeleteProcessTaskStepInOperationApi extends PrivateApiComponentBase } @Input({ - @Param(name = "processTaskId", type = ApiParamType.LONG, isRequired = true, desc = "工单ID") + @Param(name = "processTaskId", type = ApiParamType.LONG, isRequired = true, desc = "term.itsm.processtaskid") + }) + @Output({ + @Param(name = "tbodyList", explode = ProcessTaskStepInOperationVo[].class, desc = "common.tbodylist") }) - @Output({}) - @Description(desc = "根据工单ID删除processtask_step_in_operation表数据") + @Description(desc = "nmpap.deleteprocesstaskstepinoperationapi.getname") @Override public Object myDoService(JSONObject paramObj) throws Exception { Long processTaskId = paramObj.getLong("processTaskId"); - return processTaskMapper.deleteProcessTaskStepInOperationByProcessTaskId(processTaskId); + List processTaskStepInOperationList = processTaskMapper.getProcessTaskStepInOperationListByProcessTaskId(processTaskId); + if (CollectionUtils.isNotEmpty(processTaskStepInOperationList)) { + processTaskMapper.deleteProcessTaskStepInOperationByProcessTaskId(processTaskId); + } + return TableResultUtil.getResult(processTaskStepInOperationList); } } diff --git a/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskProcessableStepList.java b/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskProcessableStepList.java index 6b6940d47..0ec966199 100644 --- a/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskProcessableStepList.java +++ b/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskProcessableStepList.java @@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONObject; import neatlogic.framework.auth.core.AuthAction; import neatlogic.framework.common.constvalue.ApiParamType; import neatlogic.framework.process.auth.PROCESS_BASE; -import neatlogic.framework.process.dto.ProcessTaskStepInOperationVo; import neatlogic.framework.process.dto.ProcessTaskStepVo; import neatlogic.framework.process.dto.ProcessTaskVo; import neatlogic.framework.process.exception.processtask.ProcessTaskNotFoundEditTargetException; @@ -13,11 +12,9 @@ import neatlogic.framework.restful.constvalue.OperationTypeEnum; import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; import neatlogic.module.process.dao.mapper.processtask.ProcessTaskMapper; import neatlogic.module.process.service.ProcessTaskService; -import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.Date; import java.util.List; @Service @@ -38,7 +35,7 @@ public class ProcessTaskProcessableStepList extends PrivateApiComponentBase { @Override public String getName() { - return "当前用户可处理的步骤列表接口"; + return "nmpap.processtaskprocessablesteplist.getname"; } @Override @@ -47,14 +44,14 @@ public class ProcessTaskProcessableStepList extends PrivateApiComponentBase { } @Input({ - @Param(name = "processTaskId", type = ApiParamType.LONG, isRequired = true, desc = "工单Id"), - @Param(name = "action", type = ApiParamType.ENUM, rule = "accept,start,complete,recover", desc = "操作类型") + @Param(name = "processTaskId", type = ApiParamType.LONG, isRequired = true, desc = "term.itsm.processtaskid"), + @Param(name = "action", type = ApiParamType.ENUM, rule = "accept,start,complete,recover", desc = "common.actiontype") }) @Output({ - @Param(name = "tbodyList", explode = ProcessTaskStepVo[].class, desc = "步骤信息列表"), - @Param(name = "status", type = ApiParamType.ENUM, rule = "ok,running", desc = "步骤信息列表") + @Param(name = "tbodyList", explode = ProcessTaskStepVo[].class, desc = "common.tbodylist"), + @Param(name = "status", type = ApiParamType.ENUM, rule = "ok,running", desc = "common.status") }) - @Description(desc = "当前用户可处理的步骤列表接口") + @Description(desc = "nmpap.processtaskprocessablesteplist.getname") @Override public Object myDoService(JSONObject jsonObj) throws Exception { Long processTaskId = jsonObj.getLong("processTaskId"); @@ -69,25 +66,31 @@ public class ProcessTaskProcessableStepList extends PrivateApiComponentBase { // resultObj.put("status", "running"); // return resultObj; // } - List processTaskStepInOperationList = processTaskMapper.getProcessTaskStepInOperationListByProcessTaskId(processTaskId); - if (CollectionUtils.isNotEmpty(processTaskStepInOperationList)) { - // 如果后台有正在异步处理中的步骤,则返回status=running,前端等待一定时间后再次请求 - for (ProcessTaskStepInOperationVo processTaskStepInOperationVo : processTaskStepInOperationList) { - Date expireTime = processTaskStepInOperationVo.getExpireTime(); - if (expireTime == null) { - resultObj.put("status", "running"); - return resultObj; - } else { - long after = expireTime.getTime() - System.currentTimeMillis(); - if (after > 0) { - resultObj.put("status", "running"); - return resultObj; - } else { - processTaskMapper.deleteProcessTaskStepInOperationById(processTaskStepInOperationVo.getId()); - } - } - } + int count = processTaskMapper.getProcessTaskStepInOperationCountByProcessTaskId(processTaskId); + if (count > 0) { + resultObj.put("status", "running"); + return resultObj; } +// List processTaskStepInOperationList = processTaskMapper.getProcessTaskStepInOperationListByProcessTaskId(processTaskId); +// System.out.println("processTaskStepInOperationList = " + JSONObject.toJSONString(processTaskStepInOperationList)); +// if (CollectionUtils.isNotEmpty(processTaskStepInOperationList)) { +// // 如果后台有正在异步处理中的步骤,则返回status=running,前端等待一定时间后再次请求 +// for (ProcessTaskStepInOperationVo processTaskStepInOperationVo : processTaskStepInOperationList) { +// Date expireTime = processTaskStepInOperationVo.getExpireTime(); +// if (expireTime == null) { +// resultObj.put("status", "running"); +// return resultObj; +// } else { +// long after = expireTime.getTime() - System.currentTimeMillis(); +// if (after > 0) { +// resultObj.put("status", "running"); +// return resultObj; +// } else { +// processTaskMapper.deleteProcessTaskStepInOperationById(processTaskStepInOperationVo.getId()); +// } +// } +// } +// } List processableStepList = processTaskService.getProcessableStepList(processTaskVo, jsonObj.getString("action")); resultObj.put("tbodyList", processableStepList); diff --git a/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskMapper.java b/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskMapper.java index 0caad2de0..d593dcbee 100644 --- a/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskMapper.java +++ b/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskMapper.java @@ -581,6 +581,8 @@ public interface ProcessTaskMapper extends IProcessTaskCrossoverMapper { int deleteProcessTaskStepInOperationByProcessTaskId(Long processTaskId); + int deleteProcessTaskStepInOperationByServerId(Long serverId); + int deleteProcessTaskStepWorkerMinorByProcessTaskStepId(Long processTaskStepId); int deleteProcessTaskStepUserMinorByProcessTaskStepId(Long processTaskStepId); diff --git a/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskMapper.xml b/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskMapper.xml index add1e46b5..eb8f5a481 100644 --- a/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskMapper.xml +++ b/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskMapper.xml @@ -4117,6 +4117,12 @@ WHERE `processtask_id` = #{value} + + DELETE + FROM `processtask_step_in_operation` + WHERE `server_id` = #{value} + + DELETE FROM `processtask_step_worker` diff --git a/src/main/java/neatlogic/module/process/startup/handler/ClearProcessTaskStepInOperationStartupHandler.java b/src/main/java/neatlogic/module/process/startup/handler/ClearProcessTaskStepInOperationStartupHandler.java new file mode 100644 index 000000000..dcdaaaee8 --- /dev/null +++ b/src/main/java/neatlogic/module/process/startup/handler/ClearProcessTaskStepInOperationStartupHandler.java @@ -0,0 +1,48 @@ +/* + * 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.process.startup.handler; + +import neatlogic.framework.common.config.Config; +import neatlogic.framework.startup.StartupBase; +import neatlogic.module.process.dao.mapper.processtask.ProcessTaskMapper; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Component +public class ClearProcessTaskStepInOperationStartupHandler extends StartupBase { + + @Resource + private ProcessTaskMapper processTaskMapper; + + @Override + public String getName() { + return "nmpsh.clearprocesstaskstepinoperationstartuphandler.getname"; + } + + @Override + public int executeForCurrentTenant() { + System.out.println("ClearProcessTaskStepInOperationStartupHandler Config.SCHEDULE_SERVER_ID = " + Config.SCHEDULE_SERVER_ID); + return processTaskMapper.deleteProcessTaskStepInOperationByServerId((long) Config.SCHEDULE_SERVER_ID); + } + + @Override + public int sort() { + return 12; + } +} diff --git a/src/main/resources/neatlogic/resources/process/changelog/2025-02-27/neatlogic_tenant.sql b/src/main/resources/neatlogic/resources/process/changelog/2025-02-27/neatlogic_tenant.sql new file mode 100644 index 000000000..0377ad2ed --- /dev/null +++ b/src/main/resources/neatlogic/resources/process/changelog/2025-02-27/neatlogic_tenant.sql @@ -0,0 +1,2 @@ +ALTER TABLE `processtask_step_in_operation` + ADD COLUMN `server_id` BIGINT NULL COMMENT '服务器ID' AFTER `expire_time`; \ No newline at end of file diff --git a/src/main/resources/neatlogic/resources/process/changelog/2025-02-27/version.json b/src/main/resources/neatlogic/resources/process/changelog/2025-02-27/version.json new file mode 100644 index 000000000..7cd7c31ef --- /dev/null +++ b/src/main/resources/neatlogic/resources/process/changelog/2025-02-27/version.json @@ -0,0 +1,11 @@ +{ + "content":[ + { + "type":"修改功能", + "detail":[ + {"msg":"1.服务器启动时删除processtask_step_in_operation表数据"} + ] + } + ] +} + -- Gitee From caa3c7d2e0ca51af5e3e2e613316426dafb45b11 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Thu, 27 Feb 2025 17:16:40 +0800 Subject: [PATCH 2/2] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=99=A8=E5=90=AF=E5=8A=A8=E6=97=B6=E5=88=A0=E9=99=A4processta?= =?UTF-8?q?sk=5Fstep=5Fin=5Foperation=E8=A1=A8=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1365928728559616]服务器启动时删除processtask_step_in_operation表数据 http://192.168.0.96:8090/demo/rdm.html#/story-detail/939050947543040/939050947543042/1365928728559616 --- .../handler/ClearProcessTaskStepInOperationStartupHandler.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/neatlogic/module/process/startup/handler/ClearProcessTaskStepInOperationStartupHandler.java b/src/main/java/neatlogic/module/process/startup/handler/ClearProcessTaskStepInOperationStartupHandler.java index dcdaaaee8..790d5a040 100644 --- a/src/main/java/neatlogic/module/process/startup/handler/ClearProcessTaskStepInOperationStartupHandler.java +++ b/src/main/java/neatlogic/module/process/startup/handler/ClearProcessTaskStepInOperationStartupHandler.java @@ -37,7 +37,6 @@ public class ClearProcessTaskStepInOperationStartupHandler extends StartupBase { @Override public int executeForCurrentTenant() { - System.out.println("ClearProcessTaskStepInOperationStartupHandler Config.SCHEDULE_SERVER_ID = " + Config.SCHEDULE_SERVER_ID); return processTaskMapper.deleteProcessTaskStepInOperationByServerId((long) Config.SCHEDULE_SERVER_ID); } -- Gitee