diff --git a/src/main/java/neatlogic/module/autoexec/api/process/CreateJobStepTestApi.java b/src/main/java/neatlogic/module/autoexec/api/process/CreateJobStepTestApi.java index 20313bacf41338fc494464e2ca84358df54123fc..7c3ce91f9385ba3a2cf2317b8b5adcc0df9efa38 100644 --- a/src/main/java/neatlogic/module/autoexec/api/process/CreateJobStepTestApi.java +++ b/src/main/java/neatlogic/module/autoexec/api/process/CreateJobStepTestApi.java @@ -18,25 +18,31 @@ package neatlogic.module.autoexec.api.process; import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.JSONPath; import neatlogic.framework.autoexec.dto.combop.AutoexecCombopVersionVo; import neatlogic.framework.autoexec.exception.AutoexecCombopActiveVersionNotFoundException; import neatlogic.framework.autoexec.exception.AutoexecCombopVersionNotFoundException; import neatlogic.framework.common.constvalue.ApiParamType; +import neatlogic.framework.crossover.CrossoverServiceFactory; +import neatlogic.framework.process.crossover.IProcessTaskCrossoverMapper; +import neatlogic.framework.process.crossover.ISelectContentByHashCrossoverMapper; import neatlogic.framework.process.dto.ProcessTaskStepVo; -import neatlogic.framework.restful.annotation.Input; -import neatlogic.framework.restful.annotation.OperationType; -import neatlogic.framework.restful.annotation.Output; -import neatlogic.framework.restful.annotation.Param; +import neatlogic.framework.restful.annotation.*; import neatlogic.framework.restful.constvalue.OperationTypeEnum; import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; import neatlogic.module.autoexec.dao.mapper.AutoexecCombopVersionMapper; import neatlogic.module.autoexec.process.dto.AutoexecJobBuilder; import neatlogic.module.autoexec.process.dto.CreateJobConfigConfigVo; +import neatlogic.module.autoexec.process.dto.CreateJobConfigVo; import neatlogic.module.autoexec.process.util.CreateJobConfigUtil; import neatlogic.module.autoexec.service.AutoexecCombopService; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; @Service @@ -48,36 +54,63 @@ public class CreateJobStepTestApi extends PrivateApiComponentBase { private AutoexecCombopService autoexecCombopService; @Override public String getName() { - return "测试新自动化节点"; + return "nmaap.createjobsteptestapi.getname"; } @Input({ - @Param(name = "processTaskId", type = ApiParamType.LONG, isRequired = true, desc = "工单ID"), - @Param(name = "createJobConfigConfig", type = ApiParamType.JSONOBJECT, isRequired = true, desc = "配置信息") + @Param(name = "processTaskId", type = ApiParamType.LONG, isRequired = true, desc = "term.itsm.processtaskid"), + @Param(name = "processTaskStepId", type = ApiParamType.LONG, desc = "term.itsm.processtaskstepid"), + @Param(name = "createJobConfig", type = ApiParamType.JSONOBJECT, desc = "common.config") }) @Output({ - @Param(name = "Return", type = ApiParamType.JSONOBJECT) + @Param(name = "tbodyList", explode = AutoexecJobBuilder[].class, desc = "common.tbodylist") }) + @Description(desc = "nmaap.createjobsteptestapi.getname") @Override public Object myDoService(JSONObject paramObj) throws Exception { + ProcessTaskStepVo processTaskStep = new ProcessTaskStepVo(); Long processTaskId = paramObj.getLong("processTaskId"); - JSONObject createJobConfigConfig = paramObj.getJSONObject("createJobConfigConfig"); - ProcessTaskStepVo processTaskStepVo = new ProcessTaskStepVo(); - processTaskStepVo.setProcessTaskId(processTaskId); - processTaskStepVo.setId(1L); - CreateJobConfigConfigVo createJobConfigConfigVo = createJobConfigConfig.toJavaObject(CreateJobConfigConfigVo.class); - Long activeVersionId = autoexecCombopVersionMapper.getAutoexecCombopActiveVersionIdByCombopId(createJobConfigConfigVo.getCombopId()); - if (activeVersionId == null) { - throw new AutoexecCombopActiveVersionNotFoundException(createJobConfigConfigVo.getCombopId()); + processTaskStep.setProcessTaskId(processTaskId); + processTaskStep.setId(1L); + JSONObject createJobConfig = paramObj.getJSONObject("createJobConfig"); + if (MapUtils.isEmpty(createJobConfig)) { + Long processTaskStepId = paramObj.getLong("processTaskStepId"); + if (processTaskStepId == null) { + return null; + } + processTaskStep.setId(processTaskStepId); + IProcessTaskCrossoverMapper processTaskCrossoverMapper = CrossoverServiceFactory.getApi(IProcessTaskCrossoverMapper.class); + ISelectContentByHashCrossoverMapper selectContentByHashCrossoverMapper = CrossoverServiceFactory.getApi(ISelectContentByHashCrossoverMapper.class); + ProcessTaskStepVo processTaskStepVo = processTaskCrossoverMapper.getProcessTaskStepBaseInfoById(processTaskStepId); + // 获取工单当前步骤配置信息 + String config = selectContentByHashCrossoverMapper.getProcessTaskStepConfigByHash(processTaskStepVo.getConfigHash()); + if (StringUtils.isBlank(config)) { + return null; + } + createJobConfig = (JSONObject) JSONPath.read(config, "createJobConfig"); } - AutoexecCombopVersionVo autoexecCombopVersionVo = autoexecCombopService.getAutoexecCombopVersionById(activeVersionId); - if (autoexecCombopVersionVo == null) { - throw new AutoexecCombopVersionNotFoundException(activeVersionId); + CreateJobConfigVo createJobConfigVo = createJobConfig.toJavaObject(CreateJobConfigVo.class); + List configList = createJobConfigVo.getConfigList(); + if (CollectionUtils.isEmpty(configList)) { + return null; + } + List tbodyList = new ArrayList<>(); + for (CreateJobConfigConfigVo createJobConfigConfigVo : configList) { + Long activeVersionId = autoexecCombopVersionMapper.getAutoexecCombopActiveVersionIdByCombopId(createJobConfigConfigVo.getCombopId()); + if (activeVersionId == null) { + throw new AutoexecCombopActiveVersionNotFoundException(createJobConfigConfigVo.getCombopId()); + } + AutoexecCombopVersionVo autoexecCombopVersionVo = autoexecCombopService.getAutoexecCombopVersionById(activeVersionId); + if (autoexecCombopVersionVo == null) { + throw new AutoexecCombopVersionNotFoundException(activeVersionId); + } + List builderList = CreateJobConfigUtil.createAutoexecJobBuilderList(processTaskStep, createJobConfigConfigVo, autoexecCombopVersionVo); + if (CollectionUtils.isNotEmpty(builderList)) { + tbodyList.addAll(builderList); + } } - List builderList = CreateJobConfigUtil.createAutoexecJobBuilderList(processTaskStepVo, createJobConfigConfigVo, autoexecCombopVersionVo); - System.out.println("builderList = " + JSONObject.toJSONString(builderList)); JSONObject resultObj = new JSONObject(); - resultObj.put("builderList", builderList); + resultObj.put("tbodyList", tbodyList); return resultObj; } diff --git a/src/main/java/neatlogic/module/autoexec/process/stephandler/CreateJobProcessComponent.java b/src/main/java/neatlogic/module/autoexec/process/stephandler/component/CreateJobProcessComponent.java similarity index 98% rename from src/main/java/neatlogic/module/autoexec/process/stephandler/CreateJobProcessComponent.java rename to src/main/java/neatlogic/module/autoexec/process/stephandler/component/CreateJobProcessComponent.java index 58a2b9cd36608fb461d7d85404b5895d56cfaabe..d590889ce45463527bf16ce3dcfd68f41a8ecb62 100644 --- a/src/main/java/neatlogic/module/autoexec/process/stephandler/CreateJobProcessComponent.java +++ b/src/main/java/neatlogic/module/autoexec/process/stephandler/component/CreateJobProcessComponent.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package neatlogic.module.autoexec.process.stephandler; +package neatlogic.module.autoexec.process.stephandler.component; import com.alibaba.fastjson.*; import neatlogic.framework.asynchronization.threadlocal.UserContext; @@ -163,7 +163,10 @@ public class CreateJobProcessComponent extends ProcessStepHandlerBase { processTaskStepData.setProcessTaskId(currentProcessTaskStepVo.getProcessTaskId()); processTaskStepData.setProcessTaskStepId(currentProcessTaskStepVo.getId()); processTaskStepData.setType("autoexecCreateJobError"); - processTaskStepDataCrossoverMapper.deleteProcessTaskStepData(processTaskStepData); + processTaskStepData = processTaskStepDataCrossoverMapper.getProcessTaskStepData(processTaskStepData); + if (processTaskStepData != null) { + processTaskStepDataCrossoverMapper.deleteProcessTaskStepData(processTaskStepData); + } List configList = createJobConfigVo.getConfigList(); if (CollectionUtils.isEmpty(configList)) { return 0; @@ -183,9 +186,6 @@ public class CreateJobProcessComponent extends ProcessStepHandlerBase { } // 根据配置信息创建AutoexecJobBuilder对象 List list = CreateJobConfigUtil.createAutoexecJobBuilderList(currentProcessTaskStepVo, createJobConfigConfigVo, autoexecCombopVersionVo); - for (AutoexecJobBuilder builder : list) { - System.out.println("builder = " + JSON.toJSONString(builder)); - } builderList.addAll(list); } diff --git a/src/main/java/neatlogic/module/autoexec/process/stephandler/regulate/CreateJobConfigRegulateHandler.java b/src/main/java/neatlogic/module/autoexec/process/stephandler/regulate/CreateJobConfigRegulateHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..a4b46b2cb2549ff841303057d56d68610b13d764 --- /dev/null +++ b/src/main/java/neatlogic/module/autoexec/process/stephandler/regulate/CreateJobConfigRegulateHandler.java @@ -0,0 +1,43 @@ +/* + * 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.autoexec.process.stephandler.regulate; + +import com.alibaba.fastjson.JSONObject; +import neatlogic.framework.process.stephandler.core.IProcessStepInternalHandler; +import neatlogic.framework.process.stephandler.core.IRegulateHandler; +import neatlogic.module.autoexec.process.dto.CreateJobConfigVo; +import org.apache.commons.collections4.MapUtils; +import org.springframework.stereotype.Component; + +@Component +public class CreateJobConfigRegulateHandler implements IRegulateHandler { + @Override + public String getName() { + return "createJobConfig"; + } + + @Override + public void regulateConfig(IProcessStepInternalHandler processStepInternalHandler, JSONObject oldConfigObj, JSONObject newConfigObj) { + JSONObject createJobConfig = oldConfigObj.getJSONObject("createJobConfig"); + if (MapUtils.isEmpty(createJobConfig)) { + newConfigObj.put("createJobConfig", new CreateJobConfigVo()); + } else { + newConfigObj.put("createJobConfig", createJobConfig.toJavaObject(CreateJobConfigVo.class)); + } + } +} diff --git a/src/main/java/neatlogic/module/autoexec/process/stephandler/CreateJobProcessUtilHandler.java b/src/main/java/neatlogic/module/autoexec/process/stephandler/utilhandler/CreateJobProcessUtilHandler.java similarity index 48% rename from src/main/java/neatlogic/module/autoexec/process/stephandler/CreateJobProcessUtilHandler.java rename to src/main/java/neatlogic/module/autoexec/process/stephandler/utilhandler/CreateJobProcessUtilHandler.java index 77a176b74267a11a19d5b61483de7914656097bc..8be01755fe0fd6c0c6371e476b98238da75d9124 100644 --- a/src/main/java/neatlogic/module/autoexec/process/stephandler/CreateJobProcessUtilHandler.java +++ b/src/main/java/neatlogic/module/autoexec/process/stephandler/utilhandler/CreateJobProcessUtilHandler.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package neatlogic.module.autoexec.process.stephandler; +package neatlogic.module.autoexec.process.stephandler.utilhandler; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -24,25 +24,21 @@ import neatlogic.framework.autoexec.dao.mapper.AutoexecJobMapper; import neatlogic.framework.autoexec.dto.job.AutoexecJobPhaseVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobVo; import neatlogic.framework.crossover.CrossoverServiceFactory; -import neatlogic.framework.notify.crossover.INotifyServiceCrossoverService; -import neatlogic.framework.notify.dto.InvokeNotifyPolicyConfigVo; import neatlogic.framework.process.constvalue.ProcessTaskOperationType; import neatlogic.framework.process.crossover.IProcessTaskStepDataCrossoverMapper; import neatlogic.framework.process.dto.ProcessTaskStepDataVo; import neatlogic.framework.process.dto.ProcessTaskStepVo; -import neatlogic.framework.process.dto.processconfig.ActionConfigVo; import neatlogic.framework.process.stephandler.core.ProcessStepInternalHandlerBase; -import neatlogic.framework.process.util.ProcessConfigUtil; -import neatlogic.module.autoexec.notify.handler.AutoexecCombopNotifyPolicyHandler; import neatlogic.module.autoexec.process.constvalue.CreateJobProcessStepHandlerType; -import neatlogic.module.autoexec.process.dto.CreateJobConfigVo; -import neatlogic.module.autoexec.service.AutoexecJobService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * @author linbq @@ -54,9 +50,6 @@ public class CreateJobProcessUtilHandler extends ProcessStepInternalHandlerBase @Resource private AutoexecJobMapper autoexecJobMapper; - @Resource - AutoexecJobService autoexecJobService; - @Override public String getHandler() { return CreateJobProcessStepHandlerType.CREATE_JOB.getHandler(); @@ -124,125 +117,34 @@ public class CreateJobProcessUtilHandler extends ProcessStepInternalHandlerBase } - @Override - public JSONObject makeupConfig(JSONObject configObj) { - if (configObj == null) { - configObj = new JSONObject(); - } - JSONObject resultObj = new JSONObject(); - /* 授权 **/ - ProcessTaskOperationType[] stepActions = { + /** + * 返回步骤动作,校验时用 + */ + @Override + public ProcessTaskOperationType[] getStepActions() { + return new ProcessTaskOperationType[]{ ProcessTaskOperationType.STEP_VIEW, ProcessTaskOperationType.STEP_TRANSFER }; - JSONArray authorityList = configObj.getJSONArray("authorityList"); - JSONArray authorityArray = ProcessConfigUtil.regulateAuthorityList(authorityList, stepActions); - resultObj.put("authorityList", authorityArray); - - /* 按钮映射 **/ - ProcessTaskOperationType[] stepButtons = { - ProcessTaskOperationType.STEP_COMPLETE, - ProcessTaskOperationType.STEP_BACK, - ProcessTaskOperationType.PROCESSTASK_TRANSFER, - ProcessTaskOperationType.STEP_ACCEPT - }; - JSONArray customButtonList = configObj.getJSONArray("customButtonList"); - JSONArray customButtonArray = ProcessConfigUtil.regulateCustomButtonList(customButtonList, stepButtons); - resultObj.put("customButtonList", customButtonArray); - /* 状态映射列表 **/ - JSONArray customStatusList = configObj.getJSONArray("customStatusList"); - JSONArray customStatusArray = ProcessConfigUtil.regulateCustomStatusList(customStatusList); - resultObj.put("customStatusList", customStatusArray); - - /* 可替换文本列表 **/ - resultObj.put("replaceableTextList", ProcessConfigUtil.regulateReplaceableTextList(configObj.getJSONArray("replaceableTextList"))); - return resultObj; } + /** + * 返回步骤按钮列表 + */ @Override - public JSONObject regulateProcessStepConfig(JSONObject configObj) { - if (configObj == null) { - configObj = new JSONObject(); - } - JSONObject resultObj = new JSONObject(); - - /* 授权 **/ - ProcessTaskOperationType[] stepActions = { - ProcessTaskOperationType.STEP_VIEW, - ProcessTaskOperationType.STEP_TRANSFER - }; - JSONArray authorityList = null; - Integer enableAuthority = configObj.getInteger("enableAuthority"); - if (Objects.equals(enableAuthority, 1)) { - authorityList = configObj.getJSONArray("authorityList"); - } else { - enableAuthority = 0; - } - resultObj.put("enableAuthority", enableAuthority); - JSONArray authorityArray = ProcessConfigUtil.regulateAuthorityList(authorityList, stepActions); - resultObj.put("authorityList", authorityArray); - - /* 通知 **/ - JSONObject notifyPolicyConfig = configObj.getJSONObject("notifyPolicyConfig"); - INotifyServiceCrossoverService notifyServiceCrossoverService = CrossoverServiceFactory.getApi(INotifyServiceCrossoverService.class); - InvokeNotifyPolicyConfigVo invokeNotifyPolicyConfigVo = notifyServiceCrossoverService.regulateNotifyPolicyConfig(notifyPolicyConfig, AutoexecCombopNotifyPolicyHandler.class); - resultObj.put("notifyPolicyConfig", invokeNotifyPolicyConfigVo); - - /** 动作 **/ - JSONObject actionConfig = configObj.getJSONObject("actionConfig"); - ActionConfigVo actionConfigVo = JSONObject.toJavaObject(actionConfig, ActionConfigVo.class); - if (actionConfigVo == null) { - actionConfigVo = new ActionConfigVo(); - } - actionConfigVo.setHandler(AutoexecCombopNotifyPolicyHandler.class.getName()); - resultObj.put("actionConfig", actionConfigVo); - - /* 按钮映射列表 **/ - ProcessTaskOperationType[] stepButtons = { + public ProcessTaskOperationType[] getStepButtons() { + return new ProcessTaskOperationType[]{ ProcessTaskOperationType.STEP_COMPLETE, ProcessTaskOperationType.STEP_BACK, ProcessTaskOperationType.PROCESSTASK_TRANSFER, ProcessTaskOperationType.STEP_ACCEPT }; - JSONArray customButtonList = configObj.getJSONArray("customButtonList"); - JSONArray customButtonArray = ProcessConfigUtil.regulateCustomButtonList(customButtonList, stepButtons); - resultObj.put("customButtonList", customButtonArray); - /* 状态映射列表 **/ - JSONArray customStatusList = configObj.getJSONArray("customStatusList"); - JSONArray customStatusArray = ProcessConfigUtil.regulateCustomStatusList(customStatusList); - resultObj.put("customStatusList", customStatusArray); - - /* 可替换文本列表 **/ - resultObj.put("replaceableTextList", ProcessConfigUtil.regulateReplaceableTextList(configObj.getJSONArray("replaceableTextList"))); - - /* 自动化配置 **/ - JSONObject createJobConfig = configObj.getJSONObject("createJobConfig"); - CreateJobConfigVo createJobConfigVo = regulateCreateJobConfig(createJobConfig); - resultObj.put("createJobConfig", createJobConfigVo); - - /** 分配处理人 **/ - JSONObject workerPolicyConfig = configObj.getJSONObject("workerPolicyConfig"); - JSONObject workerPolicyObj = ProcessConfigUtil.regulateWorkerPolicyConfig(workerPolicyConfig); - resultObj.put("workerPolicyConfig", workerPolicyObj); - - JSONArray tagList = configObj.getJSONArray("tagList"); - if (tagList == null) { - tagList = new JSONArray(); - } - resultObj.put("tagList", tagList); - /** 表单场景 **/ - String formSceneUuid = configObj.getString("formSceneUuid"); - String formSceneName = configObj.getString("formSceneName"); - resultObj.put("formSceneUuid", formSceneUuid == null ? "" : formSceneUuid); - resultObj.put("formSceneName", formSceneName == null ? "" : formSceneName); - return resultObj; } - private CreateJobConfigVo regulateCreateJobConfig(JSONObject createJobConfig) { - if (createJobConfig == null) { - createJobConfig = new JSONObject(); - } - return createJobConfig.toJavaObject(CreateJobConfigVo.class); + + @Override + public String[] getRegulateKeyList() { + return new String[]{"enableAuthority", "authorityList", "notifyPolicyConfig", "actionConfig", "customButtonList", "customStatusList", "replaceableTextList", "createJobConfig", "workerPolicyConfig", "tagList", "formSceneUuid", "formSceneName"}; } } diff --git a/src/main/java/neatlogic/module/autoexec/process/util/CreateJobConfigUtil.java b/src/main/java/neatlogic/module/autoexec/process/util/CreateJobConfigUtil.java index 77a18b0f4fb00b3ac7ec480436eaca36c73ce2e7..73e979a7f5b55b2f7b98b47c6ab94effa7fadbff 100644 --- a/src/main/java/neatlogic/module/autoexec/process/util/CreateJobConfigUtil.java +++ b/src/main/java/neatlogic/module/autoexec/process/util/CreateJobConfigUtil.java @@ -67,7 +67,6 @@ public class CreateJobConfigUtil { List formAttributeList = processTaskCrossoverService.getFormAttributeListByProcessTaskIdAngTag(processTaskId, createJobConfigConfigVo.getFormTag()); if (CollectionUtils.isNotEmpty(formAttributeList)) { List processTaskFormAttributeDataList = processTaskCrossoverService.getProcessTaskFormAttributeDataListByProcessTaskIdAndTag(processTaskId, createJobConfigConfigVo.getFormTag()); - System.out.println("processTaskFormAttributeDataList = " + JSON.toJSONString(processTaskFormAttributeDataList)); for (ProcessTaskFormAttributeDataVo attributeDataVo : processTaskFormAttributeDataList) { originalFormAttributeDataMap.put(attributeDataVo.getAttributeUuid(), attributeDataVo.getDataObj()); // 放入表单普通组件数据