From 1314a3e8e320913f52a7cbab4e03647357c8b6c4 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Wed, 24 Apr 2024 18:25:07 +0800 Subject: [PATCH 1/2] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=90=8E=E7=AB=AF-?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E8=A1=A8=E5=8D=95=E6=A0=87=E5=87=86?= =?UTF-8?q?=E8=A7=84=E8=8C=83=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1141293256769536]后端-自定义表单标准规范定义 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1141293256769536 --- .../process/service/ProcessTaskService.java | 20 ++++++- .../service/ProcessTaskServiceImpl.java | 55 +++++++++++++++---- .../utilhandler/ProcessStepHandlerUtil.java | 2 +- .../thread/ProcessTaskActionThread.java | 7 +++ 4 files changed, 70 insertions(+), 14 deletions(-) diff --git a/src/main/java/neatlogic/module/process/service/ProcessTaskService.java b/src/main/java/neatlogic/module/process/service/ProcessTaskService.java index 25db927da..6ffd95c16 100644 --- a/src/main/java/neatlogic/module/process/service/ProcessTaskService.java +++ b/src/main/java/neatlogic/module/process/service/ProcessTaskService.java @@ -15,6 +15,8 @@ along with this program. If not, see .*/ package neatlogic.module.process.service; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import neatlogic.framework.dto.AuthenticationInfoVo; import neatlogic.framework.form.dto.FormAttributeVo; import neatlogic.framework.notify.core.INotifyTriggerType; @@ -25,8 +27,6 @@ import neatlogic.framework.process.constvalue.ProcessTaskStepStatus; import neatlogic.framework.process.constvalue.ProcessUserType; import neatlogic.framework.process.dto.*; import neatlogic.framework.process.exception.operationauth.ProcessTaskPermissionDeniedException; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import java.util.List; import java.util.Map; @@ -456,6 +456,14 @@ public interface ProcessTaskService { */ List getFormAttributeListByProcessTaskId(Long processTaskId); + /** + * 根据工单id获取工单绑定的表单信息 + * @param processTaskId 工单ID + * @param tag 标签 + * @return + */ + List getFormAttributeListByProcessTaskIdAngTag(Long processTaskId, String tag); + /** * 根据工单id获取表单属性数据列表 * @param processTaskId 工单id @@ -463,6 +471,14 @@ public interface ProcessTaskService { */ List getProcessTaskFormAttributeDataListByProcessTaskId(Long processTaskId); + /** + * 根据工单id获取表单属性数据列表 + * @param processTaskId 工单id + * @param tag 标签 + * @return + */ + List getProcessTaskFormAttributeDataListByProcessTaskIdAndTag(Long processTaskId, String tag); + /** * 根据工单id和表单属性uuid获取表单属性数据 * @param processTaskId 工单id diff --git a/src/main/java/neatlogic/module/process/service/ProcessTaskServiceImpl.java b/src/main/java/neatlogic/module/process/service/ProcessTaskServiceImpl.java index 2e3c4876b..9c574f58c 100644 --- a/src/main/java/neatlogic/module/process/service/ProcessTaskServiceImpl.java +++ b/src/main/java/neatlogic/module/process/service/ProcessTaskServiceImpl.java @@ -2020,34 +2020,67 @@ public class ProcessTaskServiceImpl implements ProcessTaskService, IProcessTaskC @Override public List getFormAttributeListByProcessTaskId(Long processTaskId) { + return getFormAttributeListByProcessTaskIdAngTag(processTaskId, null); + } + + @Override + public List getFormAttributeListByProcessTaskIdAngTag(Long processTaskId, String tag) { + List resultList = new ArrayList<>(); ProcessTaskFormVo processTaskFormVo = processTaskMapper.getProcessTaskFormByProcessTaskId(processTaskId); if (processTaskFormVo == null) { // 工单没有表单直接返回 - return new ArrayList<>(); + return resultList; } String formContent = selectContentByHashMapper.getProcessTaskFromContentByHash(processTaskFormVo.getFormContentHash()); + JSONObject config = JSONObject.parseObject(formContent); // 默认场景的表单 FormVersionVo formVersionVo = new FormVersionVo(); formVersionVo.setFormUuid(processTaskFormVo.getFormUuid()); formVersionVo.setFormName(processTaskFormVo.getFormName()); - formVersionVo.setFormConfig(JSONObject.parseObject(formContent)); - return formVersionVo.getFormAttributeList(); + formVersionVo.setFormConfig(config); + String mainSceneUuid = config.getString("uuid"); + formVersionVo.setSceneUuid(mainSceneUuid); + List formAttributeList = formVersionVo.getFormAttributeList(); + if (StringUtils.isBlank(tag)) { + return formAttributeList; + } + List parentUuidList = new ArrayList<>(); + List formExtendAttributeList = new ArrayList<>(); + List processTaskFormExtendAttributeList = processTaskMapper.getProcessTaskFormExtendAttributeListByProcessTaskIdAndTag(processTaskId, tag); + for (ProcessTaskFormAttributeVo processTaskFormAttributeVo : processTaskFormExtendAttributeList) { + parentUuidList.add(processTaskFormAttributeVo.getParentUuid()); + String configStr = selectContentByHashMapper.getProcessTaskFromContentByHash(processTaskFormAttributeVo.getConfigHash()); + processTaskFormAttributeVo.setConfig(JSONObject.parseObject(configStr)); + formExtendAttributeList.add(processTaskFormAttributeVo); + } + for (FormAttributeVo formAttributeVo : formAttributeList) { + if (parentUuidList.contains(formAttributeVo.getUuid())) { + continue; + } + resultList.add(formAttributeVo); + } + resultList.addAll(formExtendAttributeList); + return resultList; } @Override public List getProcessTaskFormAttributeDataListByProcessTaskId(Long processTaskId) { -// List formAttributeDataIdList = processTaskMapper.getProcessTaskFormAttributeDataIdListByProcessTaskId(processTaskId); -// if (CollectionUtils.isEmpty(formAttributeDataIdList)) { -// return new ArrayList<>(); -// } - List attributeDataList = formMapper.getFormAttributeDataListByProcessTaskId(processTaskId); - if (CollectionUtils.isEmpty(attributeDataList)) { - return new ArrayList<>(); - } + return getProcessTaskFormAttributeDataListByProcessTaskIdAndTag(processTaskId, null); + } + + @Override + public List getProcessTaskFormAttributeDataListByProcessTaskIdAndTag(Long processTaskId, String tag) { List processTaskFormAttributeDataList = new ArrayList<>(); + List attributeDataList = processTaskMapper.getProcessTaskFormAttributeDataListByProcessTaskId(processTaskId); for (AttributeDataVo attributeDataVo : attributeDataList) { processTaskFormAttributeDataList.add(new ProcessTaskFormAttributeDataVo(processTaskId, attributeDataVo)); } + if (StringUtils.isNotBlank(tag)) { + List extendAttributeDataList = processTaskMapper.getProcessTaskExtendFormAttributeDataListByProcessTaskId(processTaskId, tag); + for (AttributeDataVo attributeDataVo : extendAttributeDataList) { + processTaskFormAttributeDataList.add(new ProcessTaskFormAttributeDataVo(processTaskId, attributeDataVo)); + } + } return processTaskFormAttributeDataList; } diff --git a/src/main/java/neatlogic/module/process/stephandler/utilhandler/ProcessStepHandlerUtil.java b/src/main/java/neatlogic/module/process/stephandler/utilhandler/ProcessStepHandlerUtil.java index d5d9b50d1..922f05ebf 100644 --- a/src/main/java/neatlogic/module/process/stephandler/utilhandler/ProcessStepHandlerUtil.java +++ b/src/main/java/neatlogic/module/process/stephandler/utilhandler/ProcessStepHandlerUtil.java @@ -993,7 +993,7 @@ public class ProcessStepHandlerUtil implements IProcessStepHandlerUtil { Map oldExtendAttributeDataMap = oldExtendAttributeDataList.stream().collect(Collectors.toMap(AttributeDataVo::getAttributeUuid, e -> e)); JSONArray formExtendAttributeDataList = paramObj.getJSONArray("formExtendAttributeDataList"); if (CollectionUtils.isNotEmpty(formExtendAttributeDataList)) { - List processTaskFormExtendAttributeList = processTaskMapper.getProcessTaskFormExtendAttributeListByProcessTaskId(processTaskId); + List processTaskFormExtendAttributeList = processTaskMapper.getProcessTaskFormExtendAttributeListByProcessTaskIdAndTag(processTaskId, null); Map processTaskFormExtendAttributeMap = processTaskFormExtendAttributeList.stream().collect(Collectors.toMap(e -> e.getParentUuid() + "#" + e.getKey(), e -> e)); for (int j = 0; j < formExtendAttributeDataList.size(); j++) { JSONObject formExtendAttributeDataObj = formExtendAttributeDataList.getJSONObject(j); diff --git a/src/main/java/neatlogic/module/process/thread/ProcessTaskActionThread.java b/src/main/java/neatlogic/module/process/thread/ProcessTaskActionThread.java index c3cdc64cb..53af8ffbe 100644 --- a/src/main/java/neatlogic/module/process/thread/ProcessTaskActionThread.java +++ b/src/main/java/neatlogic/module/process/thread/ProcessTaskActionThread.java @@ -204,6 +204,13 @@ public class ProcessTaskActionThread extends NeatLogicThread { actionVo.setTrigger(triggerType.getTrigger()); actionVo.setTriggerText(triggerType.getText()); actionVo.setSucceed(isSucceed); + if (StringUtils.isNotBlank(integrationResultVo.getError())) { + String error = integrationResultVo.getError(); + if (error.startsWith("failed\n")) { + error = error.substring("failed\n".length()); + } + actionVo.setError(error); + } currentProcessTaskStepVo.getParamObj().put(ProcessTaskAuditDetailType.RESTFULACTION.getParamName(), JSON.toJSONString(actionVo)); ProcessTaskAuditThread.audit(currentProcessTaskStepVo, ProcessTaskAuditType.RESTFULACTION); } -- Gitee From b96503cd8c62d3c0dd1796d93b1e97825c651be7 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Wed, 24 Apr 2024 19:19:24 +0800 Subject: [PATCH 2/2] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=90=8E=E7=AB=AF-?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E8=A1=A8=E5=8D=95=E6=A0=87=E5=87=86?= =?UTF-8?q?=E8=A7=84=E8=8C=83=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1141293256769536]后端-自定义表单标准规范定义 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1141293256769536 --- .../process/audithandler/handler/FormAuditHandler.java | 6 ++---- .../handler/ProcessTaskFormAttributeCondition.java | 6 ++---- .../module/process/service/ProcessTaskServiceImpl.java | 6 ++---- .../stephandler/utilhandler/ProcessStepHandlerUtil.java | 9 +++------ 4 files changed, 9 insertions(+), 18 deletions(-) diff --git a/src/main/java/neatlogic/module/process/audithandler/handler/FormAuditHandler.java b/src/main/java/neatlogic/module/process/audithandler/handler/FormAuditHandler.java index 055ec4c0a..87b5fd0e2 100644 --- a/src/main/java/neatlogic/module/process/audithandler/handler/FormAuditHandler.java +++ b/src/main/java/neatlogic/module/process/audithandler/handler/FormAuditHandler.java @@ -1,13 +1,11 @@ package neatlogic.module.process.audithandler.handler; -import neatlogic.framework.crossover.CrossoverServiceFactory; import neatlogic.framework.form.attribute.core.FormAttributeDataConversionHandlerFactory; import neatlogic.framework.form.attribute.core.FormAttributeHandlerFactory; import neatlogic.framework.form.attribute.core.IFormAttributeDataConversionHandler; import neatlogic.framework.form.attribute.core.IFormAttributeHandler; import neatlogic.framework.form.dto.FormAttributeVo; import neatlogic.framework.form.dto.FormVersionVo; -import neatlogic.framework.form.service.IFormCrossoverService; import neatlogic.framework.process.audithandler.core.IProcessTaskStepAuditDetailHandler; import neatlogic.framework.process.constvalue.ProcessTaskAuditDetailType; import neatlogic.framework.process.dao.mapper.ProcessTaskMapper; @@ -19,6 +17,7 @@ import neatlogic.framework.process.dto.ProcessTaskStepAuditDetailVo; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import neatlogic.framework.util.FormUtil; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -94,8 +93,7 @@ public class FormAuditHandler implements IProcessTaskStepAuditDetailHandler { return 0; } // 判断是否修改了表单数据 - IFormCrossoverService formCrossoverService = CrossoverServiceFactory.getApi(IFormCrossoverService.class); - if (!formCrossoverService.isModifiedFormData(defaultSceneFormAttributeList, processTaskFormAttributeDataList, oldProcessTaskFormAttributeDataList)) { + if (!FormUtil.isModifiedFormData(defaultSceneFormAttributeList, processTaskFormAttributeDataList, oldProcessTaskFormAttributeDataList)) { // 表单未修改,返回值为0,表示不用显示表单内容 return 0; } diff --git a/src/main/java/neatlogic/module/process/condition/handler/ProcessTaskFormAttributeCondition.java b/src/main/java/neatlogic/module/process/condition/handler/ProcessTaskFormAttributeCondition.java index 1e8c8358b..b1a5b71b4 100644 --- a/src/main/java/neatlogic/module/process/condition/handler/ProcessTaskFormAttributeCondition.java +++ b/src/main/java/neatlogic/module/process/condition/handler/ProcessTaskFormAttributeCondition.java @@ -20,7 +20,6 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.google.common.base.Objects; import neatlogic.framework.common.constvalue.ParamType; -import neatlogic.framework.crossover.CrossoverServiceFactory; import neatlogic.framework.dto.condition.ConditionVo; import neatlogic.framework.exception.type.ParamIrregularException; import neatlogic.framework.form.attribute.core.FormAttributeDataConversionHandlerFactory; @@ -32,7 +31,6 @@ import neatlogic.framework.form.constvalue.FormHandler; import neatlogic.framework.form.dto.AttributeDataVo; import neatlogic.framework.form.dto.FormAttributeVo; import neatlogic.framework.form.dto.FormVersionVo; -import neatlogic.framework.form.service.IFormCrossoverService; import neatlogic.framework.fulltextindex.utils.FullTextIndexUtil; import neatlogic.framework.process.condition.core.IProcessTaskCondition; import neatlogic.framework.process.condition.core.ProcessTaskConditionBase; @@ -43,6 +41,7 @@ import neatlogic.framework.process.dao.mapper.SelectContentByHashMapper; import neatlogic.framework.process.dto.ProcessTaskFormAttributeDataVo; import neatlogic.framework.process.dto.ProcessTaskFormVo; import neatlogic.framework.process.dto.ProcessTaskStepVo; +import neatlogic.framework.util.FormUtil; import neatlogic.framework.util.Md5Util; import neatlogic.framework.util.TimeUtil; import neatlogic.module.process.service.ProcessTaskService; @@ -256,13 +255,12 @@ public class ProcessTaskFormAttributeCondition extends ProcessTaskConditionBase String formContent = selectContentByHashMapper.getProcessTaskFromContentByHash(processTaskFormVo.getFormContentHash()); if (StringUtils.isNotBlank(formContent)) { resultObj.put("formConfig", formContent); - IFormCrossoverService formCrossoverService = CrossoverServiceFactory.getApi(IFormCrossoverService.class); List processTaskFormAttributeDataList = processTaskService.getProcessTaskFormAttributeDataListByProcessTaskId(processTaskStepVo.getProcessTaskId()); for (ProcessTaskFormAttributeDataVo processTaskFormAttributeDataVo : processTaskFormAttributeDataList) { if (java.util.Objects.equals(processTaskFormAttributeDataVo.getHandler(), FormHandler.FORMRADIO.getHandler()) || java.util.Objects.equals(processTaskFormAttributeDataVo.getHandler(), FormHandler.FORMCHECKBOX.getHandler()) || java.util.Objects.equals(processTaskFormAttributeDataVo.getHandler(), FormHandler.FORMSELECT.getHandler())) { - Object value = formCrossoverService.getFormSelectAttributeValueByOriginalValue(processTaskFormAttributeDataVo.getDataObj()); + Object value = FormUtil.getFormSelectAttributeValueByOriginalValue(processTaskFormAttributeDataVo.getDataObj()); resultObj.put(processTaskFormAttributeDataVo.getAttributeUuid(), value); //另存一份label为key的数据,给条件路由的自定义脚本消费 //resultObj.put(processTaskFormAttributeDataVo.getAttributeLabel(), value); diff --git a/src/main/java/neatlogic/module/process/service/ProcessTaskServiceImpl.java b/src/main/java/neatlogic/module/process/service/ProcessTaskServiceImpl.java index 9c574f58c..d5f05fb7a 100644 --- a/src/main/java/neatlogic/module/process/service/ProcessTaskServiceImpl.java +++ b/src/main/java/neatlogic/module/process/service/ProcessTaskServiceImpl.java @@ -25,7 +25,6 @@ import neatlogic.framework.common.constvalue.GroupSearch; import neatlogic.framework.common.constvalue.SystemUser; import neatlogic.framework.common.constvalue.UserType; import neatlogic.framework.config.ConfigManager; -import neatlogic.framework.crossover.CrossoverServiceFactory; import neatlogic.framework.dao.mapper.RoleMapper; import neatlogic.framework.dao.mapper.TeamMapper; import neatlogic.framework.dao.mapper.UserMapper; @@ -42,7 +41,6 @@ import neatlogic.framework.form.dto.AttributeDataVo; import neatlogic.framework.form.dto.FormAttributeVo; import neatlogic.framework.form.dto.FormVersionVo; import neatlogic.framework.form.exception.FormActiveVersionNotFoundExcepiton; -import neatlogic.framework.form.service.IFormCrossoverService; import neatlogic.framework.fulltextindex.core.FullTextIndexHandlerFactory; import neatlogic.framework.fulltextindex.core.IFullTextIndexHandler; import neatlogic.framework.notify.core.INotifyTriggerType; @@ -72,6 +70,7 @@ import neatlogic.framework.process.workerpolicy.core.IWorkerPolicyHandler; import neatlogic.framework.process.workerpolicy.core.WorkerPolicyHandlerFactory; import neatlogic.framework.service.AuthenticationInfoService; import neatlogic.framework.util.$; +import neatlogic.framework.util.FormUtil; import neatlogic.framework.util.TimeUtil; import neatlogic.framework.worktime.dao.mapper.WorktimeMapper; import neatlogic.module.process.dao.mapper.ProcessMapper; @@ -2381,8 +2380,7 @@ public class ProcessTaskServiceImpl implements ProcessTaskService, IProcessTaskC } JSONArray formAttributeDataList = jsonObj.getJSONArray("formAttributeDataList"); - IFormCrossoverService formCrossoverService = CrossoverServiceFactory.getApi(IFormCrossoverService.class); - formCrossoverService.formAttributeValueValid(formVersionVo, formAttributeDataList); + FormUtil.formAttributeValueValid(formVersionVo, formAttributeDataList); IProcessStepHandler handler = ProcessStepHandlerFactory.getHandler(startProcessTaskStepVo.getHandler()); if (handler == null) { diff --git a/src/main/java/neatlogic/module/process/stephandler/utilhandler/ProcessStepHandlerUtil.java b/src/main/java/neatlogic/module/process/stephandler/utilhandler/ProcessStepHandlerUtil.java index 922f05ebf..2331964fd 100644 --- a/src/main/java/neatlogic/module/process/stephandler/utilhandler/ProcessStepHandlerUtil.java +++ b/src/main/java/neatlogic/module/process/stephandler/utilhandler/ProcessStepHandlerUtil.java @@ -22,7 +22,6 @@ import neatlogic.framework.asynchronization.threadlocal.UserContext; import neatlogic.framework.asynchronization.threadpool.TransactionSynchronizationPool; import neatlogic.framework.common.RootComponent; import neatlogic.framework.common.constvalue.GroupSearch; -import neatlogic.framework.crossover.CrossoverServiceFactory; import neatlogic.framework.dao.mapper.UserMapper; import neatlogic.framework.exception.user.UserNotFoundException; import neatlogic.framework.form.dao.mapper.FormMapper; @@ -30,7 +29,6 @@ import neatlogic.framework.form.dto.AttributeDataVo; import neatlogic.framework.form.dto.FormAttributeVo; import neatlogic.framework.form.dto.FormVersionVo; import neatlogic.framework.form.exception.FormAttributeRequiredException; -import neatlogic.framework.form.service.IFormCrossoverService; import neatlogic.framework.notify.core.INotifyTriggerType; import neatlogic.framework.process.audithandler.core.IProcessTaskAuditType; import neatlogic.framework.process.constvalue.*; @@ -41,6 +39,7 @@ import neatlogic.framework.process.stephandler.core.IProcessStepHandlerUtil; import neatlogic.framework.process.stepremind.core.IProcessTaskStepRemindType; import neatlogic.framework.process.workerpolicy.core.IWorkerPolicyHandler; import neatlogic.framework.process.workerpolicy.core.WorkerPolicyHandlerFactory; +import neatlogic.framework.util.FormUtil; import neatlogic.module.process.thread.*; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; @@ -860,9 +859,8 @@ public class ProcessStepHandlerUtil implements IProcessStepHandlerUtil { formVersionVo.setFormUuid(processTaskFormVo.getFormUuid()); formVersionVo.setFormName(processTaskFormVo.getFormName()); formVersionVo.setFormConfig(JSONObject.parseObject(formContent)); - IFormCrossoverService formCrossoverService = CrossoverServiceFactory.getApi(IFormCrossoverService.class); /* 校验表单属性是否合法 **/ - formCrossoverService.formAttributeValueValid(formVersionVo, formAttributeDataList); + FormUtil.formAttributeValueValid(formVersionVo, formAttributeDataList); defaultSceneFormAttributeList = formVersionVo.getFormAttributeList(); } if (CollectionUtils.isEmpty(defaultSceneFormAttributeList)) { @@ -960,8 +958,7 @@ public class ProcessStepHandlerUtil implements IProcessStepHandlerUtil { i++; } // 判断是否修改了表单数据,如果是,则记录活动 - IFormCrossoverService formCrossoverService = CrossoverServiceFactory.getApi(IFormCrossoverService.class); - if (formCrossoverService.isModifiedFormData(defaultSceneFormAttributeList, newProcessTaskFormAttributeDataList, oldProcessTaskFormAttributeDataList)) { + if (FormUtil.isModifiedFormData(defaultSceneFormAttributeList, newProcessTaskFormAttributeDataList, oldProcessTaskFormAttributeDataList)) { paramObj.put(ProcessTaskAuditDetailType.FORM.getOldDataParamName(), JSON.toJSONString(oldProcessTaskFormAttributeDataList)); paramObj.put(ProcessTaskAuditDetailType.FORM.getParamName(), JSON.toJSONString(newProcessTaskFormAttributeDataList)); } -- Gitee