Explorar o código

自定义流程-新增流程类型(发起人指定)BUG修改

wangliang %!s(int64=3) %!d(string=hai) anos
pai
achega
31f98c3c49

+ 16 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ActivitiServiceImpl.java

@@ -509,7 +509,9 @@ public class ActivitiServiceImpl implements ActivitiService {
                         agginessMap,
                         approvePass,
                         flowProcessVarMap,
-                        tfCustomFlowEntity);
+                        tfCustomFlowEntity,
+                        currFlow,
+                        setupMap);
             }
             this.setApproveInfo(tfFlowApprove,
                     tfFlowLog,
@@ -633,6 +635,8 @@ public class ActivitiServiceImpl implements ActivitiService {
      * @param approvePass
      * @param flowProcessVarMap
      * @param tfCustomFlowEntity
+     * @param currFlow
+     * @param setupMap
      */
     protected void getAgginess(FlowTaskResult nextFlowTaskResult,
                                Gson gson,
@@ -640,12 +644,20 @@ public class ActivitiServiceImpl implements ActivitiService {
                                Map<String, CustomFlowVarDto> agginessMap,
                                FlowApprovePassEnum approvePass,
                                Map<String, Object> flowProcessVarMap,
-                               TFCustomFlowEntity tfCustomFlowEntity) {
+                               TFCustomFlowEntity tfCustomFlowEntity,
+                               FlowNode currFlow,
+                               Map<String, FlowTaskResult> setupMap) {
         if (Objects.nonNull(agginessMap.get(nextFlowTaskResult.getTaskKey()))) {
             CustomFlowVarDto customFlowVarDto = gson.fromJson(gson.toJson(agginessMap.get(nextFlowTaskResult.getTaskKey())), CustomFlowVarDto.class);
             if (Objects.nonNull(nextFlowTaskResult.getModelType()) && nextFlowTaskResult.getModelType() == TFCustomModelTypeEnum.APPROVE_SET) {
                 List<Long> approveUserIds = (List<Long>) map.get(SystemConstant.APPROVE_USER_IDS);
                 if (approvePass == FlowApprovePassEnum.PASS && Objects.nonNull(approveUserIds) && approveUserIds.size() > 0) {
+                    boolean freshen = false;
+                    if (Objects.equals(currFlow.getId(), nextFlowTaskResult.getTaskKey())) {
+                        nextFlowTaskResult = this.getNextFlowTaskResult(setupMap, gson, (nextFlowTaskResult.getSetup().intValue() + 1), nextFlowTaskResult);
+                        customFlowVarDto = gson.fromJson(gson.toJson(agginessMap.get(nextFlowTaskResult.getTaskKey())), CustomFlowVarDto.class);
+                        freshen = true;
+                    }
                     List<String> approveIds = approveUserIds.stream().map(s -> String.valueOf(s)).collect(Collectors.toList());
                     nextFlowTaskResult.setApproveIds(approveIds);
                     customFlowVarDto.setApproveIds(nextFlowTaskResult.getApproveIds());
@@ -659,6 +671,8 @@ public class ActivitiServiceImpl implements ActivitiService {
                     varMap.put(SystemConstant.FLOW_PROCESS_VAR_MAP, flowProcessVarMap);
                     tfCustomFlowEntity.setFlowProcessVar(JacksonUtil.parseJson(varMap));
                     tfCustomFlowEntityService.updateById(tfCustomFlowEntity);
+
+                    customFlowVarDto = freshen ? gson.fromJson(gson.toJson(agginessMap.get(currFlow.getId())), CustomFlowVarDto.class) : customFlowVarDto;
                 }
                 setFlowTaskVar(customFlowVarDto, map);
             } else {