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 815bab0db96acaa7a3fd6b11ce31b340629f91c8..95c4fde94e213a478b1451078990c2ed3971065a 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 6b6940d4770f1176fedc491247f763645e977193..0ec966199f911f19cc4df40b30db21fddf2160f8 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 0caad2de05cff528e29d5559f572d3b90bba1e3b..d593dcbee714ca16736a285ff8b7b1c7fd804ae5 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 add1e46b53770b5adf8e50518b170738ee9e5b7b..eb8f5a481b005daa69c36093fd6e21aa4fcaca6a 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 0000000000000000000000000000000000000000..790d5a0406ffcb5eb93e63710444e36097315326 --- /dev/null +++ b/src/main/java/neatlogic/module/process/startup/handler/ClearProcessTaskStepInOperationStartupHandler.java @@ -0,0 +1,47 @@ +/* + * 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() { + 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 0000000000000000000000000000000000000000..0377ad2ed3241463b19a1ebd07d19c0cea88d2b6 --- /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 0000000000000000000000000000000000000000..7cd7c31ef75b8696c0435b232ef2b9b698f0b4c9 --- /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表数据"} + ] + } + ] +} +