From c30e0074e39e998964000f292d2f53a78a637092 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Sun, 26 May 2024 15:38:55 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20IT=E6=9C=8D=E5=8A=A1-?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=90=8C=E6=97=B6=E6=BF=80=E6=B4=BB=E5=A4=9A?= =?UTF-8?q?=E4=B8=AA=E6=AD=A5=E9=AA=A4=E6=97=B6=EF=BC=8C=E6=AD=A5=E9=AA=A4?= =?UTF-8?q?=E4=B9=8B=E9=97=B4=E6=8C=89=E6=AD=A3=E5=90=91=E8=BF=9E=E7=BA=BF?= =?UTF-8?q?=E5=85=88=E5=90=8E=E9=A1=BA=E5=BA=8F=E6=89=A7=E8=A1=8C=E6=BF=80?= =?UTF-8?q?=E6=B4=BB=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1165179927101440]IT服务-流程同时激活多个步骤时,步骤之间按正向连线先后顺序执行激活操作 http://192.168.0.96:8090/demo/rdm.html#/story-detail/939050947543040/939050947543042/1165179927101440 --- ...sTaskStepExecuteSortComparatorTestApi.java | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 src/main/java/neatlogic/module/process/api/processtask/test/ProcessTaskStepExecuteSortComparatorTestApi.java diff --git a/src/main/java/neatlogic/module/process/api/processtask/test/ProcessTaskStepExecuteSortComparatorTestApi.java b/src/main/java/neatlogic/module/process/api/processtask/test/ProcessTaskStepExecuteSortComparatorTestApi.java new file mode 100644 index 000000000..d265c0f89 --- /dev/null +++ b/src/main/java/neatlogic/module/process/api/processtask/test/ProcessTaskStepExecuteSortComparatorTestApi.java @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2024 深圳极向量科技有限公司 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.api.processtask.test; + +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.constvalue.ProcessStepMode; +import neatlogic.framework.process.constvalue.ProcessTaskOperationType; +import neatlogic.framework.process.dto.ProcessTaskStepRelVo; +import neatlogic.framework.process.dto.ProcessTaskStepVo; +import neatlogic.framework.process.stephandler.core.ProcessTaskStepThread; +import neatlogic.framework.process.stephandler.core.ProcessTaskStepThreadComparator; +import neatlogic.framework.restful.annotation.*; +import neatlogic.framework.restful.constvalue.OperationTypeEnum; +import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; +import neatlogic.framework.util.TableResultUtil; +import neatlogic.module.process.dao.mapper.processtask.ProcessTaskMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +@Component +@OperationType(type = OperationTypeEnum.SEARCH) +@AuthAction(action = PROCESS_BASE.class) +public class ProcessTaskStepExecuteSortComparatorTestApi extends PrivateApiComponentBase { + + @Autowired + ProcessTaskMapper processtaskMapper; + + @Override + public String getName() { + return "测试工单步骤执行排序比较器"; + } + + @Input({ + @Param(name = "processTaskId", type = ApiParamType.LONG, isRequired = true, desc = "term.itsm.processtaskid") + }) + @Output({ + @Param(name = "tbodyList", explode = ProcessTaskStepVo.class, desc = "common.tbodylist") + }) + @Description(desc = "测试工单步骤执行排序比较器") + @Override + public Object myDoService(JSONObject paramObj) throws Exception { + Long processTaskId = paramObj.getLong("processTaskId"); + List processTaskStepList = processtaskMapper.getProcessTaskStepListByProcessTaskId(processTaskId); + ProcessTaskStepVo endProcessTaskStepVo = null; + for (ProcessTaskStepVo processTaskStepVo : processTaskStepList) { + if (Objects.equals(processTaskStepVo.getHandler(), "end")) { + endProcessTaskStepVo = processTaskStepVo; + } + } + List processTaskStepRelList = processtaskMapper.getProcessTaskStepRelByProcessTaskId(processTaskId); + ProcessTaskStepThreadComparator comparator = new ProcessTaskStepThreadComparator(processTaskStepRelList, endProcessTaskStepVo.getId()); + + List processTaskStepThreadList = new ArrayList<>(); + for (ProcessTaskStepVo processTaskStepVo : processTaskStepList) { + ProcessTaskStepThread thread = new ProcessTaskStepThread(ProcessTaskOperationType.STEP_ACTIVE, processTaskStepVo, ProcessStepMode.MT) { + @Override + protected void myExecute(ProcessTaskStepVo processTaskStepVo) { + + } + }; + processTaskStepThreadList.add(thread); + } + processTaskStepThreadList.sort(comparator); + List tbodyList = processTaskStepThreadList.stream().map(ProcessTaskStepThread::getProcessTaskStepVo).collect(Collectors.toList()); + return TableResultUtil.getResult(tbodyList); + } + + @Override + public String getToken() { + return "processtask/step/executesortcomparator/test"; + } +} -- Gitee