From 8ba3eaf20e8a584d9776241cc960d83f46b86b69 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Wed, 17 Apr 2024 18:22:29 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20IT=E6=9C=8D=E5=8A=A1-?= =?UTF-8?q?=E7=AC=AC=E4=B8=89=E6=96=B9=E4=B8=8A=E6=8A=A5=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=A2=9E=E5=8A=A0=E5=BC=82=E6=AD=A5=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E5=B7=A5=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1136997786157056]IT服务-第三方上报工单接口增加异步创建工单 http://192.168.0.96:8090/demo/rdm.html#/story-detail/939050947543040/939050947543042/1136997786157056 --- .../api/processtask/ProcessTaskCreateApi.java | 3 +- .../processtask/ProcessTaskDraftSaveApi.java | 2 +- .../ProcessTaskCreatePublicServiceImpl.java | 79 ++++++++++++++----- .../process/service/ProcessTaskService.java | 2 +- .../service/ProcessTaskServiceImpl.java | 4 +- 5 files changed, 67 insertions(+), 23 deletions(-) diff --git a/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskCreateApi.java b/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskCreateApi.java index fb391c158..0d8eee87e 100644 --- a/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskCreateApi.java +++ b/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskCreateApi.java @@ -48,7 +48,8 @@ public class ProcessTaskCreateApi extends PrivateApiComponentBase { @Param(name = "filePathList", type = ApiParamType.JSONARRAY, desc = "common.filepathlist"), @Param(name = "fileIdList", type = ApiParamType.JSONARRAY, desc = "common.fileidlist"), @Param(name = "handlerStepInfo", type = ApiParamType.JSONOBJECT, desc = "term.itsm.handlerstepinfo"), - @Param(name = "source", type = ApiParamType.STRING, desc = "common.source") + @Param(name = "source", type = ApiParamType.STRING, desc = "common.source"), + @Param(name = "isAsync", type = ApiParamType.INTEGER, rule="0,1", desc = "是否异步模式") }) @Output({ @Param(name = "processTaskId", type = ApiParamType.LONG, desc = "term.itsm.processtaskid") diff --git a/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskDraftSaveApi.java b/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskDraftSaveApi.java index 19b0388f1..d9134859d 100644 --- a/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskDraftSaveApi.java +++ b/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskDraftSaveApi.java @@ -165,7 +165,7 @@ public class ProcessTaskDraftSaveApi extends PrivateApiComponentBase { // if (indexHandler != null) { // indexHandler.createIndex(startProcessTaskStepVo.getProcessTaskId()); // } - return processTaskService.saveProcessTaskDraft(jsonObj); + return processTaskService.saveProcessTaskDraft(jsonObj, null); } } diff --git a/src/main/java/neatlogic/module/process/service/ProcessTaskCreatePublicServiceImpl.java b/src/main/java/neatlogic/module/process/service/ProcessTaskCreatePublicServiceImpl.java index 0f8938c84..4a722cbe8 100644 --- a/src/main/java/neatlogic/module/process/service/ProcessTaskCreatePublicServiceImpl.java +++ b/src/main/java/neatlogic/module/process/service/ProcessTaskCreatePublicServiceImpl.java @@ -2,11 +2,14 @@ package neatlogic.module.process.service; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import neatlogic.framework.asynchronization.thread.NeatLogicThread; import neatlogic.framework.asynchronization.threadlocal.UserContext; +import neatlogic.framework.asynchronization.threadpool.CachedThreadPool; import neatlogic.framework.common.constvalue.GroupSearch; import neatlogic.framework.common.constvalue.SystemUser; import neatlogic.framework.dao.mapper.UserMapper; import neatlogic.framework.dto.AuthenticationInfoVo; +import neatlogic.framework.dto.JwtVo; import neatlogic.framework.dto.UserVo; import neatlogic.framework.exception.user.UserNotFoundException; import neatlogic.framework.file.dao.mapper.FileMapper; @@ -34,10 +37,13 @@ import neatlogic.framework.process.exception.process.ProcessNotFoundException; import neatlogic.framework.process.exception.processtask.ProcessTaskNextStepIllegalException; import neatlogic.framework.process.exception.processtask.ProcessTaskNextStepOverOneException; import neatlogic.framework.service.AuthenticationInfoService; +import neatlogic.framework.util.SnowflakeUtil; import neatlogic.module.process.dao.mapper.ProcessMapper; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -46,6 +52,7 @@ import java.util.*; @Service public class ProcessTaskCreatePublicServiceImpl implements ProcessTaskCreatePublicService, IProcessTaskCreatePublicCrossoverService { + private Logger logger = LoggerFactory.getLogger(ProcessTaskCreatePublicServiceImpl.class); @Resource private ChannelMapper channelMapper; @@ -348,28 +355,64 @@ public class ProcessTaskCreatePublicServiceImpl implements ProcessTaskCreatePubl reporterUserVo = userMapper.getUserByUuid(reporterUserVo.getUuid()); } AuthenticationInfoVo authenticationInfoVo = authenticationInfoService.getAuthenticationInfo(userVo.getUuid()); - UserContext.init(reporterUserVo, authenticationInfoVo, SystemUser.SYSTEM.getTimezone()); + JwtVo jwtVo = UserContext.get().getJwtVo(); + UserContext.get().init(reporterUserVo, authenticationInfoVo, SystemUser.SYSTEM.getTimezone()).setJwtVo(jwtVo); } - //暂存 - //TODO isNeedValid 参数是否需要??? - paramObj.put("isNeedValid", 1); - JSONObject saveResultObj = processTaskService.saveProcessTaskDraft(paramObj); + Long processTaskId = null; + Integer isAsync = paramObj.getInteger("isAsync"); + if (Objects.equals(isAsync, 1)) { + Long newProcessTaskId = SnowflakeUtil.uniqueLong(); + NeatLogicThread neatLogicThread = new NeatLogicThread("PUBLIC_CREATE_PROCESSTASK_" + newProcessTaskId, true) { + @Override + protected void execute() { + try { + //暂存 + //TODO isNeedValid 参数是否需要??? + paramObj.put("isNeedValid", 1); + JSONObject saveResultObj = processTaskService.saveProcessTaskDraft(paramObj, newProcessTaskId); - //查询可执行下一 步骤 - Long processTaskId = saveResultObj.getLong("processTaskId"); - List nextStepIdList = processTaskMapper.getToProcessTaskStepIdListByFromIdAndType(saveResultObj.getLong("processTaskStepId"), ProcessFlowDirection.FORWARD.getValue()); - if (nextStepIdList.isEmpty()) { - throw new ProcessTaskNextStepIllegalException(processTaskId); - } - if (nextStepIdList.size() != 1) { - throw new ProcessTaskNextStepOverOneException(processTaskId); - } - saveResultObj.put("nextStepId", nextStepIdList.get(0)); + //查询可执行下一 步骤 + Long processTaskId = saveResultObj.getLong("processTaskId"); + List nextStepIdList = processTaskMapper.getToProcessTaskStepIdListByFromIdAndType(saveResultObj.getLong("processTaskStepId"), ProcessFlowDirection.FORWARD.getValue()); + if (nextStepIdList.isEmpty()) { + throw new ProcessTaskNextStepIllegalException(processTaskId); + } + if (nextStepIdList.size() != 1) { + throw new ProcessTaskNextStepOverOneException(processTaskId); + } + saveResultObj.put("nextStepId", nextStepIdList.get(0)); - //流转 - processTaskService.startProcessProcessTask(saveResultObj); + //流转 + processTaskService.startProcessProcessTask(saveResultObj); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + } + }; + CachedThreadPool.execute(neatLogicThread); + processTaskId = newProcessTaskId; + } else { + //暂存 + //TODO isNeedValid 参数是否需要??? + paramObj.put("isNeedValid", 1); + JSONObject saveResultObj = processTaskService.saveProcessTaskDraft(paramObj, null); + + //查询可执行下一 步骤 + processTaskId = saveResultObj.getLong("processTaskId"); + List nextStepIdList = processTaskMapper.getToProcessTaskStepIdListByFromIdAndType(saveResultObj.getLong("processTaskStepId"), ProcessFlowDirection.FORWARD.getValue()); + if (nextStepIdList.isEmpty()) { + throw new ProcessTaskNextStepIllegalException(processTaskId); + } + if (nextStepIdList.size() != 1) { + throw new ProcessTaskNextStepOverOneException(processTaskId); + } + saveResultObj.put("nextStepId", nextStepIdList.get(0)); + + //流转 + processTaskService.startProcessProcessTask(saveResultObj); + } - result.put("processTaskId", saveResultObj.getString("processTaskId")); + result.put("processTaskId", processTaskId); return result; } } diff --git a/src/main/java/neatlogic/module/process/service/ProcessTaskService.java b/src/main/java/neatlogic/module/process/service/ProcessTaskService.java index 172041328..25db927da 100644 --- a/src/main/java/neatlogic/module/process/service/ProcessTaskService.java +++ b/src/main/java/neatlogic/module/process/service/ProcessTaskService.java @@ -355,7 +355,7 @@ public interface ProcessTaskService { * @param jsonObj * @return */ - JSONObject saveProcessTaskDraft(JSONObject jsonObj) throws Exception; + JSONObject saveProcessTaskDraft(JSONObject jsonObj, Long newProcessTaskId) throws Exception; /** * 提交上报工单 diff --git a/src/main/java/neatlogic/module/process/service/ProcessTaskServiceImpl.java b/src/main/java/neatlogic/module/process/service/ProcessTaskServiceImpl.java index c1d487308..813c005bc 100644 --- a/src/main/java/neatlogic/module/process/service/ProcessTaskServiceImpl.java +++ b/src/main/java/neatlogic/module/process/service/ProcessTaskServiceImpl.java @@ -2277,7 +2277,7 @@ public class ProcessTaskServiceImpl implements ProcessTaskService, IProcessTaskC * @return */ @Override - public JSONObject saveProcessTaskDraft(JSONObject jsonObj) throws Exception { + public JSONObject saveProcessTaskDraft(JSONObject jsonObj, Long newProcessTaskId) throws Exception { String channelUuid = jsonObj.getString("channelUuid"); if (channelMapper.checkChannelIsExists(channelUuid) == 0) { throw new ChannelNotFoundException(channelUuid); @@ -2384,7 +2384,7 @@ public class ProcessTaskServiceImpl implements ProcessTaskService, IProcessTaskC processTaskStepDataVo.setFcu(UserContext.get().getUserUuid(true)); startProcessTaskStepVo.getParamObj().putAll(jsonObj); - handler.saveDraft(startProcessTaskStepVo); + handler.saveDraft(startProcessTaskStepVo, newProcessTaskId); processTaskStepDataVo.setData(jsonObj.toJSONString()); processTaskStepDataVo.setProcessTaskId(startProcessTaskStepVo.getProcessTaskId()); -- Gitee