diff --git a/src/main/java/neatlogic/module/process/service/ProcessStepHandlerUtil.java b/src/main/java/neatlogic/module/process/service/ProcessStepHandlerUtil.java index 90767e9b355825de5682ab47ec0c45b58ec0c3c0..72e044611b12e8cbd3f06389948729c689d74d6b 100644 --- a/src/main/java/neatlogic/module/process/service/ProcessStepHandlerUtil.java +++ b/src/main/java/neatlogic/module/process/service/ProcessStepHandlerUtil.java @@ -32,6 +32,7 @@ import neatlogic.framework.form.dao.mapper.FormMapper; import neatlogic.framework.form.dto.AttributeDataVo; import neatlogic.framework.form.dto.FormAttributeVo; import neatlogic.framework.form.dto.FormVersionVo; +import neatlogic.framework.form.exception.FormAttributeDataException; import neatlogic.framework.form.exception.FormAttributeRequiredException; import neatlogic.framework.notify.core.INotifyTriggerType; import neatlogic.framework.process.audithandler.core.IProcessTaskAuditType; @@ -1118,10 +1119,24 @@ public class ProcessStepHandlerUtil implements IProcessStepHandlerUtil, IProcess processTaskMapper.insertProcessTaskFormAttributeList(needSaveProcessTaskFormAttributeDataList); } // 保存表单扩展组件值 - List oldExtendAttributeDataList = processTaskMapper.getProcessTaskExtendFormAttributeDataListByProcessTaskId(processTaskId, null); - Map oldExtendAttributeDataMap = oldExtendAttributeDataList.stream().collect(Collectors.toMap(AttributeDataVo::getAttributeUuid, e -> e)); JSONArray formExtendAttributeDataList = paramObj.getJSONArray("formExtendAttributeDataList"); if (CollectionUtils.isNotEmpty(formExtendAttributeDataList)) { + Map> tag2KeyListMap = new HashMap<>(); + for (int j = 0; j < formExtendAttributeDataList.size(); j++) { + JSONObject formExtendAttributeDataObj = formExtendAttributeDataList.getJSONObject(j); + if (MapUtils.isEmpty(formExtendAttributeDataObj)) { + continue; + } + String tag = formExtendAttributeDataObj.getString("tag"); + String key = formExtendAttributeDataObj.getString("key"); + List keyList = tag2KeyListMap.computeIfAbsent(tag, k -> new ArrayList<>()); + if (keyList.contains(key)) { + throw new FormAttributeDataException("formExtendAttributeDataList", tag, key); + } + keyList.add(key); + } + List oldExtendAttributeDataList = processTaskMapper.getProcessTaskExtendFormAttributeDataListByProcessTaskId(processTaskId, null); + Map oldExtendAttributeDataMap = oldExtendAttributeDataList.stream().collect(Collectors.toMap(AttributeDataVo::getAttributeUuid, e -> e)); List needSaveProcessTaskFormExtendAttributeDataList = new ArrayList<>(); for (int j = 0; j < formExtendAttributeDataList.size(); j++) { JSONObject formExtendAttributeDataObj = formExtendAttributeDataList.getJSONObject(j);