diff --git a/src/main/java/neatlogic/module/process/api/processtask/manualintervention/UpdateProcessTaskConfigApi.java b/src/main/java/neatlogic/module/process/api/processtask/manualintervention/UpdateProcessTaskConfigApi.java index 03d254e9c9aacc3992ded8f6e5eeffa43fe13aa6..073f7e1cce59a97a6e220f21731bdc57e01cf345 100644 --- a/src/main/java/neatlogic/module/process/api/processtask/manualintervention/UpdateProcessTaskConfigApi.java +++ b/src/main/java/neatlogic/module/process/api/processtask/manualintervention/UpdateProcessTaskConfigApi.java @@ -40,6 +40,7 @@ import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; @Service @@ -87,7 +88,7 @@ public class UpdateProcessTaskConfigApi extends PrivateApiComponentBase { processTaskMapper.insertIgnoreProcessTaskConfig(processTaskConfigVo); processTaskMapper.updateProcessTaskConfigHashById(processTaskId, configHash); List processTaskStepList = processTaskMapper.getProcessTaskStepListByProcessTaskId(processTaskId); - Map processStepUuid2IdMap = processTaskStepList.stream().collect(Collectors.toMap(ProcessTaskStepVo::getProcessStepUuid, ProcessTaskStepVo::getId)); + Map processTaskStepMap = processTaskStepList.stream().collect(Collectors.toMap(ProcessTaskStepVo::getProcessStepUuid, e -> e)); JSONObject config = JSONObject.parseObject(configStr); JSONObject process = config.getJSONObject("process"); JSONArray stepList = process.getJSONArray("stepList"); @@ -96,40 +97,47 @@ public class UpdateProcessTaskConfigApi extends PrivateApiComponentBase { JSONObject stepObj = stepList.getJSONObject(i); if (MapUtils.isNotEmpty(stepObj)) { String uuid = stepObj.getString("uuid"); - Long processTaskStepId = processStepUuid2IdMap.get(uuid); - if (processTaskStepId == null) { + ProcessTaskStepVo processTaskStepVo = processTaskStepMap.get(uuid); + if (processTaskStepVo == null) { continue; } + Long processTaskStepId = processTaskStepVo.getId(); + String name = stepObj.getString("name"); JSONObject stepConfigObj = stepObj.getJSONObject("stepConfig"); String stepConfig = stepConfigObj.toJSONString(); String stepConfigHash = DigestUtils.md5DigestAsHex(stepConfig.getBytes()); - processTaskMapper.insertIgnoreProcessTaskStepConfig(new ProcessTaskStepConfigVo(stepConfigHash, stepConfig)); - processTaskMapper.updateProcessTaskStepConfigHashByProcessTaskIdAndProcessStepUuid(processTaskId, uuid, stepConfigHash); - processTaskMapper.deleteProcessTaskStepWorkerPolicyByProcessTaskStepId(processTaskStepId); - JSONObject workerPolicyConfig = stepConfigObj.getJSONObject("workerPolicyConfig"); - if (MapUtils.isNotEmpty(workerPolicyConfig)) { - JSONArray policyList = workerPolicyConfig.getJSONArray("policyList"); - if (CollectionUtils.isNotEmpty(policyList)) { - List workerPolicyList = new ArrayList<>(); - for (int k = 0; k < policyList.size(); k++) { - JSONObject policyObj = policyList.getJSONObject(k); - if (!"1".equals(policyObj.getString("isChecked"))) { - continue; + if (Objects.equals(name, processTaskStepVo.getName()) && Objects.equals(stepConfigHash, processTaskStepVo.getConfigHash())) { + continue; + } + if (!Objects.equals(stepConfigHash, processTaskStepVo.getConfigHash())) { + processTaskMapper.insertIgnoreProcessTaskStepConfig(new ProcessTaskStepConfigVo(stepConfigHash, stepConfig)); + processTaskMapper.deleteProcessTaskStepWorkerPolicyByProcessTaskStepId(processTaskStepId); + JSONObject workerPolicyConfig = stepConfigObj.getJSONObject("workerPolicyConfig"); + if (MapUtils.isNotEmpty(workerPolicyConfig)) { + JSONArray policyList = workerPolicyConfig.getJSONArray("policyList"); + if (CollectionUtils.isNotEmpty(policyList)) { + List workerPolicyList = new ArrayList<>(); + for (int k = 0; k < policyList.size(); k++) { + JSONObject policyObj = policyList.getJSONObject(k); + if (!"1".equals(policyObj.getString("isChecked"))) { + continue; + } + ProcessTaskStepWorkerPolicyVo processStepWorkerPolicyVo = new ProcessTaskStepWorkerPolicyVo(); + processStepWorkerPolicyVo.setProcessTaskId(processTaskId); + processStepWorkerPolicyVo.setProcessTaskStepId(processTaskStepId); + processStepWorkerPolicyVo.setProcessStepUuid(uuid); + processStepWorkerPolicyVo.setPolicy(policyObj.getString("type")); + processStepWorkerPolicyVo.setSort(k + 1); + processStepWorkerPolicyVo.setConfig(policyObj.getString("config")); + workerPolicyList.add(processStepWorkerPolicyVo); + } + if (CollectionUtils.isNotEmpty(workerPolicyList)) { + processTaskMapper.insertProcessTaskStepWorkerPolicyList(workerPolicyList); } - ProcessTaskStepWorkerPolicyVo processStepWorkerPolicyVo = new ProcessTaskStepWorkerPolicyVo(); - processStepWorkerPolicyVo.setProcessTaskId(processTaskId); - processStepWorkerPolicyVo.setProcessTaskStepId(processTaskStepId); - processStepWorkerPolicyVo.setProcessStepUuid(uuid); - processStepWorkerPolicyVo.setPolicy(policyObj.getString("type")); - processStepWorkerPolicyVo.setSort(k + 1); - processStepWorkerPolicyVo.setConfig(policyObj.getString("config")); - workerPolicyList.add(processStepWorkerPolicyVo); - } - if (CollectionUtils.isNotEmpty(workerPolicyList)) { - processTaskMapper.insertProcessTaskStepWorkerPolicyList(workerPolicyList); } } } + processTaskMapper.updateProcessTaskStepNameAndConfigHashByProcessTaskIdAndProcessStepUuid(processTaskId, uuid, name, stepConfigHash); } } } 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 47ad55a30e024dc57649fb1b33ad1561eed54417..3c6600499e39d360f34896a51fb2485ec1778981 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 @@ -530,7 +530,7 @@ public interface ProcessTaskMapper extends IProcessTaskCrossoverMapper { int updateProcessTaskConfigHashById(@Param("id") Long id, @Param("configHash") String configHash); - int updateProcessTaskStepConfigHashByProcessTaskIdAndProcessStepUuid(@Param("processTaskId") Long processTaskId, @Param("processStepUuid") String processStepUuid, @Param("configHash") String configHash); + int updateProcessTaskStepNameAndConfigHashByProcessTaskIdAndProcessStepUuid(@Param("processTaskId") Long processTaskId, @Param("processStepUuid") String processStepUuid, @Param("name") String name, @Param("configHash") String configHash); int deleteProcessTaskFormAttributeByProcessTaskId(Long processTaskId); 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 a03d6774a338d3f40ae1e4b16f62f926e404485e..371b205eeb79a5bef8a56c92be66779046bd2e26 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 @@ -3900,9 +3900,10 @@ WHERE `id` = #{id} - + UPDATE `processtask_step` SET + `name` = #{name}, `config_hash` = #{configHash} WHERE `processtask_id` = #{processTaskId} AND `process_step_uuid` = #{processStepUuid}