From 571ec3d3aef0ab51cc4e95f816082fbe0dc68456 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期二, 08 四月 2025 18:11:09 +0800 Subject: [PATCH] 修改任务彻底实现,查询表单数据不使用任务上的流程变量,单独去查流程变量 --- business/src/main/resources/mapper/ProjectProcessMapper.xml | 19 ++++++++- business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java | 86 +++++++++++++++++++++++++++++-------------- 2 files changed, 75 insertions(+), 30 deletions(-) diff --git a/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java b/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java index bf9dcf8..a891ed1 100644 --- a/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java +++ b/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java @@ -1445,7 +1445,6 @@ public AjaxResult currentFlowTaskForm(String taskId) { // 娴佺▼鍙橀噺 List<HistoricTaskInstance> hisTaskList = historyService.createHistoricTaskInstanceQuery() - .includeProcessVariables() .finished() .taskId(taskId) .orderByHistoricTaskInstanceStartTime() @@ -1455,7 +1454,19 @@ return AjaxResult.error("鏈壘鍒拌浠诲姟淇℃伅"); } HistoricTaskInstance historicTaskInstance = hisTaskList.get(0); - Map<String, Object> parameters = historicTaskInstance.getProcessVariables(); + ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().includeProcessVariables().processInstanceId(historicTaskInstance.getProcessInstanceId()).singleResult(); + Map<String, Object> parameters = new HashMap<>(); + if (Objects.nonNull(processInstance)) { + parameters = processInstance.getProcessVariables(); + } else { + // 濡傛灉涓虹┖锛岃〃鏄庢祦绋嬪凡缁忕粨鏉� + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().includeProcessVariables().processInstanceId(historicTaskInstance.getProcessInstanceId()).singleResult(); + if (Objects.isNull(historicProcessInstance)) { + throw new RuntimeException("娴佺▼涓嶅瓨鍦�"); + } + parameters = historicProcessInstance.getProcessVariables(); + } + String processInsId = historicTaskInstance.getProcessInstanceId(); List<FormDetailVO> beforeNodes = this.getBeforeNodeForm(parameters, historicTaskInstance.getFormKey(), @@ -1504,36 +1515,55 @@ @Override public AjaxResult flowTaskForm(String taskId) throws Exception { Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); - // 娴佺▼鍙橀噺 - Map<String, Object> parameters = new HashMap<>(); - List<FormDetailVO> beforeNodes = new ArrayList<>(); + // 1. 鑾峰彇鍒板彉閲忎俊鎭紝鍥犱负浠诲姟鍙兘鏄繍琛屼腑鐨勪篃鍙兘鏄巻鍙蹭换鍔� String processInsId = ""; - List<HistoricTaskInstance> hisTaskList = historyService.createHistoricTaskInstanceQuery() - .includeProcessVariables() - .finished() - .taskId(taskId) - .orderByHistoricTaskInstanceStartTime() - .desc() - .list(); - if (CollectionUtils.isNotEmpty(hisTaskList) && Objects.nonNull(hisTaskList.get(0))) { - parameters = hisTaskList.get(0).getProcessVariables(); - processInsId = hisTaskList.get(0).getProcessInstanceId(); - beforeNodes = this.getBeforeNodeForm(parameters, - hisTaskList.get(0).getFormKey(), - hisTaskList.get(0).getName(), - hisTaskList.get(0).getProcessDefinitionId(), - hisTaskList.get(0).getTaskDefinitionKey(), - Boolean.FALSE, Boolean.TRUE); + String processDefId = ""; + String formKey = ""; + String taskName = ""; + String taskDefKey = ""; + if (Objects.isNull(task)) { + List<HistoricTaskInstance> hisTaskList = historyService.createHistoricTaskInstanceQuery() + .finished() + .taskId(taskId) + .orderByHistoricTaskInstanceStartTime() + .desc() + .list(); + if (CollectionUtils.isEmpty(hisTaskList) || Objects.isNull(hisTaskList.get(0))) { + return AjaxResult.error("浠诲姟涓嶅瓨鍦�"); + } + HistoricTaskInstance hisTask = hisTaskList.get(0); + processInsId = hisTask.getProcessInstanceId(); + processDefId = hisTask.getProcessDefinitionId(); + formKey = hisTask.getFormKey(); + taskName = hisTask.getName(); + taskDefKey = hisTask.getTaskDefinitionKey(); } else { - parameters = taskService.getVariables(taskId); processInsId = task.getProcessInstanceId(); - beforeNodes = this.getBeforeNodeForm(parameters, - task.getFormKey(), - task.getName(), - task.getProcessDefinitionId(), - task.getTaskDefinitionKey(), - Boolean.FALSE, Boolean.TRUE); + processDefId = task.getProcessDefinitionId(); + formKey = task.getFormKey(); + taskName = task.getName(); + taskDefKey = task.getTaskDefinitionKey(); } + // 2. 鑾峰彇娴佺▼鍙橀噺 + ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().includeProcessVariables().processInstanceId(processInsId).singleResult(); + Map<String, Object> parameters = new HashMap<>(); + if (Objects.nonNull(processInstance)) { + parameters = processInstance.getProcessVariables(); + } else { + // 濡傛灉涓虹┖锛岃〃鏄庢祦绋嬪凡缁忕粨鏉� + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().includeProcessVariables().processInstanceId(processInsId).singleResult(); + if (Objects.isNull(historicProcessInstance)) { + throw new RuntimeException("娴佺▼涓嶅瓨鍦�"); + } + parameters = historicProcessInstance.getProcessVariables(); + } + List<FormDetailVO> beforeNodes = new ArrayList<>(); + beforeNodes = this.getBeforeNodeForm(parameters, + formKey, + taskName, + processDefId, + taskDefKey, + Boolean.TRUE, Boolean.TRUE); // 鍒ゆ柇鍓嶇疆浠诲姟鏄笉鏄拰褰撳墠浠诲姟涓哄悓涓�涓猠xecuteId // 鍒ゆ柇褰撳墠浠诲姟鏄惁琚寕璧蜂腑 String finalProcessInsId = processInsId; diff --git a/business/src/main/resources/mapper/ProjectProcessMapper.xml b/business/src/main/resources/mapper/ProjectProcessMapper.xml index 2df3a94..b938fa6 100644 --- a/business/src/main/resources/mapper/ProjectProcessMapper.xml +++ b/business/src/main/resources/mapper/ProjectProcessMapper.xml @@ -179,11 +179,26 @@ SELECT TPP.process_ins_id FROM t_project_engineering TPE INNER JOIN t_project_process TPP ON TPE.id = TPP.project_id AND TPE.deleted = 0 AND TPP.project_type = 'ENGINEERING' </select> - <select id="getHisByteId" resultType="com.ycl.domain.vo.FlowableVarVO"> + <resultMap id="flowableVarVOResultMap" type="com.ycl.domain.vo.FlowableVarVO"> + <id property="ID_" column="ID_"/> + <result property="PROC_INST_ID_" column="PROC_INST_ID_"/> + <result property="EXECUTION_ID_" column="EXECUTION_ID_"/> + <result property="NAME_" column="NAME_"/> + <result property="VAR_TYPE_" column="VAR_TYPE_"/> + <result property="BYTEARRAY_ID_" column="BYTEARRAY_ID_"/> + <result property="DOUBLE_" column="DOUBLE_"/> + <result property="LONG_" column="LONG_"/> + <result property="TEXT_" column="TEXT_"/> + <result property="TEXT2_" column="TEXT2_"/> + <result property="CREATE_TIME_" column="CREATE_TIME_"/> + <result property="LAST_UPDATED_TIME_" column="LAST_UPDATED_TIME_"/> + </resultMap> + + <select id="getHisByteId" resultMap="flowableVarVOResultMap"> SELECT ID_, PROC_INST_ID_, EXECUTION_ID_, NAME_, VAR_TYPE_, BYTEARRAY_ID_ FROM act_hi_varinst WHERE PROC_INST_ID_ = #{processInsId} AND NAME_ = #{keyName} </select> - <select id="getRuByteId" resultType="com.ycl.domain.vo.FlowableVarVO"> + <select id="getRuByteId" resultMap="flowableVarVOResultMap"> SELECT ID_, PROC_INST_ID_, EXECUTION_ID_, NAME_, TYPE_ as VAR_TYPE_, BYTEARRAY_ID_ FROM act_ru_variable WHERE PROC_INST_ID_ = #{processInsId} AND NAME_ = #{keyName} </select> -- Gitblit v1.8.0