Browse Source

自定义流程接口新增

wangliang 3 years ago
parent
commit
da4c114c22

+ 6 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/flow/CustomFlowVarDto.java

@@ -52,6 +52,12 @@ public class CustomFlowVarDto implements Serializable {
         this.approveIds = approveIds;
     }
 
+    public CustomFlowVarDto(String flowTaskVar, List<String> approveIds, String approveUserNames) {
+        this.flowTaskVar = flowTaskVar;
+        this.approveIds = approveIds;
+        this.approveUserNames = approveUserNames;
+    }
+
     public CustomFlowVarDto(String flowTaskVar, List<String> approveIds,
                             CustomFlowApproveUserTypeEnum approveUserType,
                             CustomFlowMultipleUserApproveTypeEnum multipleUserApproveType,

+ 1 - 13
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/FlowViewResult.java

@@ -21,9 +21,6 @@ public class FlowViewResult implements Serializable {
     @ApiModelProperty(value = "当前流程节点")
     private FlowTaskResult currFlowTaskResult;
 
-    @ApiModelProperty(value = "下一级审批人")
-    private String pendApproveUsers;
-
     @ApiModelProperty(value = "流程审批信息")
     List<TFFlowViewLogResult> tfFlowViewLogResultList;
 
@@ -35,10 +32,9 @@ public class FlowViewResult implements Serializable {
         this.tfFlowViewLogResultList = tfFlowViewLogResultList;
     }
 
-    public FlowViewResult(CustomFlowMultipleUserApproveTypeEnum multipleUserApproveType,FlowTaskResult currFlowTaskResult, String pendApproveUsers, List<TFFlowViewLogResult> tfFlowViewLogResultList) {
+    public FlowViewResult(CustomFlowMultipleUserApproveTypeEnum multipleUserApproveType, FlowTaskResult currFlowTaskResult, List<TFFlowViewLogResult> tfFlowViewLogResultList) {
         this.multipleUserApproveType = multipleUserApproveType;
         this.currFlowTaskResult = currFlowTaskResult;
-        this.pendApproveUsers = pendApproveUsers;
         this.tfFlowViewLogResultList = tfFlowViewLogResultList;
     }
 
@@ -58,14 +54,6 @@ public class FlowViewResult implements Serializable {
         this.multipleUserApproveType = multipleUserApproveType;
     }
 
-    public String getPendApproveUsers() {
-        return pendApproveUsers;
-    }
-
-    public void setPendApproveUsers(String pendApproveUsers) {
-        this.pendApproveUsers = pendApproveUsers;
-    }
-
     public List<TFFlowViewLogResult> getTfFlowViewLogResultList() {
         return tfFlowViewLogResultList;
     }

+ 17 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TFCustomFlowMapper.java

@@ -27,5 +27,22 @@ public interface TFCustomFlowMapper extends BaseMapper<TFCustomFlow> {
      */
     TFCustomFlow findMaxVersion(@Param("schoolId") Long schoolId, @Param("orgId") Long orgId, @Param("type") String type);
 
+    /**
+     * 查询自定义流程数据列表
+     *
+     * @param iPage
+     * @param name
+     * @param schoolId
+     * @param orgId
+     * @return
+     */
     public IPage<TFCustomFlow> list(IPage<Map> iPage, @Param("name") String name, @Param("schoolId") Long schoolId, @Param("orgId") Long orgId);
+
+    /**
+     * 根据key查找id
+     *
+     * @param flowKey
+     * @return
+     */
+    public String findActIdByFlowKey(@Param("flowKey") String flowKey);
 }

+ 8 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TFCustomFlowService.java

@@ -37,4 +37,12 @@ public interface TFCustomFlowService extends IService<TFCustomFlow> {
      * @return
      */
     public IPage<TFCustomFlow> list(IPage<Map> iPage, String name, Long schoolId, Long orgId);
+
+    /**
+     * 根据key查找id
+     *
+     * @param flowKey
+     * @return
+     */
+    public String findActIdByFlowKey(String flowKey);
 }

+ 20 - 15
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ActivitiServiceImpl.java

@@ -317,15 +317,15 @@ public class ActivitiServiceImpl implements ActivitiService {
 
         //TODO 测试用
         Long examTaskId = (Long) map.get(SystemConstant.EXAM_TASK_ID);
-//        ExamTask examTask = examTaskService.getById(examTaskId);
-//        examTask.setFlowId(SystemConstant.convertIdToLong(flowId));
-//        examTaskService.updateById(examTask);
-//
-//        String id = (String) map.get(SystemConstant.FLOW_ENTITY_ID);
-//        TExamTaskFlow tExamTaskFlow = tExamTaskFlowService.findByFlowLevel(examTaskId);
-//        tExamTaskFlow.setFlowEntityId(SystemConstant.convertIdToLong(id));
-//        tExamTaskFlow.setFlowId(SystemConstant.convertIdToLong(flowId));
-//        tExamTaskFlowService.updateById(tExamTaskFlow);
+        ExamTask examTask = examTaskService.getById(examTaskId);
+        examTask.setFlowId(SystemConstant.convertIdToLong(flowId));
+        examTaskService.updateById(examTask);
+
+        String id = (String) map.get(SystemConstant.FLOW_ENTITY_ID);
+        TExamTaskFlow tExamTaskFlow = tExamTaskFlowService.findByFlowLevel(examTaskId);
+        tExamTaskFlow.setFlowEntityId(SystemConstant.convertIdToLong(id));
+        tExamTaskFlow.setFlowId(SystemConstant.convertIdToLong(flowId));
+        tExamTaskFlowService.updateById(tExamTaskFlow);
 
         tfFlowLogService.save(new TFFlowLog(sysUser.getSchoolId(), sysUser.getOrgId(), SystemConstant.convertIdToLong(flowId), examTaskId, sysUser.getId(), sysUser.getId(), "提交流程", approveId, FlowApproveOperationEnum.SUBMIT));
     }
@@ -2181,13 +2181,15 @@ public class ActivitiServiceImpl implements ActivitiService {
     public Map<String, Object> customFlowStart(Map<String, Object> map) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         Long approveId = (Long) map.get(SystemConstant.APPROVE_ID);
-        TFCustomFlow tfCustomFlow = tfCustomFlowService.findMaxVersion(sysUser.getSchoolId(), sysUser.getOrgId(), TFCustomTypeEnum.ELECTRON_FLOW);
+        TFCustomFlow tfCustomFlow = tfCustomFlowService.findMaxVersion(sysUser.getSchoolId(), null, TFCustomTypeEnum.ELECTRON_FLOW);
         Optional.ofNullable(tfCustomFlow).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到自定义流程数据"));
 
         TFCustomFlowEntity tfCustomFlowEntity = new TFCustomFlowEntity(tfCustomFlow.getId(), sysUser.getId());
         Map<String, Object> flowProcessVarMap = this.getFlowProcessVarMap(tfCustomFlow);
         Map<String, CustomFlowVarDto> agginessMap = (Map<String, CustomFlowVarDto>) flowProcessVarMap.get(SystemConstant.AGGINESS_MAP);
-        agginessMap.put(CustomFlowTypeEnum.USER_TASK.getId() + DefaultInstanceConvertToMultiInstance.DEFAULT_USER_TASK, new CustomFlowVarDto(SystemConstant.APPROVE_ID, new ArrayList(Arrays.asList(String.valueOf(approveId)))));
+        List<String> approveUserIds = new ArrayList(Arrays.asList(String.valueOf(approveId)));
+        ApproveUserResult approveUserResult = sysUserService.findByIds(approveUserIds.stream().map(x -> SystemConstant.convertIdToLong(x)).collect(Collectors.toList()));
+        agginessMap.put(CustomFlowTypeEnum.USER_TASK.getId() + DefaultInstanceConvertToMultiInstance.DEFAULT_USER_TASK, new CustomFlowVarDto(SystemConstant.APPROVE_ID, approveUserIds, approveUserResult.getPendApproveUsers()));
         flowProcessVarMap.put(SystemConstant.AGGINESS_MAP, agginessMap);
 
         map.computeIfAbsent(SystemConstant.ID, v -> tfCustomFlow.getFlowKey());
@@ -2197,7 +2199,6 @@ public class ActivitiServiceImpl implements ActivitiService {
         map.computeIfAbsent(SystemConstant.VERSION, v -> tfCustomFlow.getVersion());
         this.flowStart(map);
 
-        tfCustomFlow.setActFlowId((String) map.get(SystemConstant.PROCESS_DEFINITION_ID));
         tfCustomFlowEntity.setFlowId(SystemConstant.convertIdToLong((String) map.get(SystemConstant.FLOW_ID)));
 
         map.remove(SystemConstant.APPROVE_ID);
@@ -2299,15 +2300,19 @@ public class ActivitiServiceImpl implements ActivitiService {
                 if (Objects.nonNull(customFlowVarDto.getMultipleUserApproveType()) && customFlowVarDto.getMultipleUserApproveType() == CustomFlowMultipleUserApproveTypeEnum.ORDER) {
                     String[] strs = nextApproveUsers.split(",");
                     nextApproveUsers = strs[0];
+                    currFlowTaskResult.setApproveUserNames(nextApproveUsers);
+                } else {
+                    currFlowTaskResult.setApproveUserNames(customFlowVarDto.getApproveUserNames());
                 }
-                return new FlowViewResult(customFlowVarDto.getMultipleUserApproveType(), currFlowTaskResult, nextApproveUsers, flowViewTaskResultList);
+                return new FlowViewResult(customFlowVarDto.getMultipleUserApproveType(), currFlowTaskResult, flowViewTaskResultList);
             } else {
                 return new FlowViewResult(flowViewTaskResultList);
             }
         } else {
             if (Objects.nonNull(currFlowTaskResult)) {
                 CustomFlowVarDto customFlowVarDto = gson.fromJson(gson.toJson(agginessMap.get(currFlowTaskResult.getTaskKey())), CustomFlowVarDto.class);
-                return new FlowViewResult(customFlowVarDto.getMultipleUserApproveType(), currFlowTaskResult, customFlowVarDto.getApproveUserNames(), null);
+                currFlowTaskResult.setApproveUserNames(customFlowVarDto.getApproveUserNames());
+                return new FlowViewResult(customFlowVarDto.getMultipleUserApproveType(), currFlowTaskResult, null);
             } else {
                 return null;
             }
@@ -2323,7 +2328,7 @@ public class ActivitiServiceImpl implements ActivitiService {
     @Override
     public List<FlowTaskResult> getFlowInfoByType(TFCustomTypeEnum type) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        TFCustomFlow tfCustomFlow = tfCustomFlowService.findMaxVersion(sysUser.getSchoolId(), sysUser.getOrgId(), type);
+        TFCustomFlow tfCustomFlow = tfCustomFlowService.findMaxVersion(sysUser.getSchoolId(), null, type);
         Optional.ofNullable(tfCustomFlow).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到自定义流程数据"));
 
         List<FlowTaskResult> flowTaskResultList = this.getFlowTaskResult(tfCustomFlow);

+ 11 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TFCustomFlowServiceImpl.java

@@ -52,4 +52,15 @@ public class TFCustomFlowServiceImpl extends ServiceImpl<TFCustomFlowMapper, TFC
     public IPage<TFCustomFlow> list(IPage<Map> iPage, String name, Long schoolId, Long orgId) {
         return tfCustomFlowMapper.list(iPage, name, schoolId, orgId);
     }
+
+    /**
+          * 根据key查找id
+          *
+          * @param flowKey
+          * @return
+          */
+    @Override
+    public String findActIdByFlowKey(String flowKey) {
+        return tfCustomFlowMapper.findActIdByFlowKey(flowKey);
+    }
 }

+ 3 - 0
distributed-print-business/src/main/resources/mapper/TFCustomFlowMapper.xml

@@ -51,4 +51,7 @@
         </where>
     </select>
 
+    <select id="findActIdByFlowKey" resultType="java.lang.String">
+        select max(arp.ID_) as actFlowId from act_re_procdef arp where arp.KEY_ = #{flowKey} order by arp.VERSION_ desc LIMIT 1
+    </select>
 </mapper>

+ 5 - 4
distributed-print/src/main/java/com/qmth/distributed/print/api/TFCustomFlowController.java

@@ -103,7 +103,7 @@ public class TFCustomFlowController {
             throw ExceptionResultEnum.ERROR.exception("正在发布中,请稍候再试!");
         }
         try {
-            TFCustomFlow dbTfCustomFlow = tfCustomFlowService.findMaxVersion(customFlowSaveDto.getSchoolId(), customFlowSaveDto.getOrgId(), customFlowSaveDto.getType());
+            TFCustomFlow dbTfCustomFlow = tfCustomFlowService.findMaxVersion(customFlowSaveDto.getSchoolId(), null, customFlowSaveDto.getType());
             TFCustomFlow tfCustomFlow = null;
             if (Objects.isNull(customFlowSaveDto.getCustomFlowId())) {
                 tfCustomFlow = new TFCustomFlow(customFlowSaveDto.getSchoolId(), customFlowSaveDto.getOrgId(), customFlowSaveDto.getName(), customFlowSaveDto.getType(), customFlowSaveDto.getPublish(), JacksonUtil.parseJson(customFlowSaveDto.getCustomFlowLists()), sysUser.getId(), flowBpmnId);
@@ -115,7 +115,6 @@ public class TFCustomFlowController {
                 }
                 tfCustomFlow.setObjectData(JacksonUtil.parseJson(customFlowSaveDto.getCustomFlowLists()));
                 tfCustomFlow.updateInfo(sysUser.getId());
-                tfCustomFlow.setActFlowId(null);
             }
             AtomicInteger atomicInteger = null;
             if (Objects.isNull(dbTfCustomFlow)) {//新增
@@ -127,6 +126,8 @@ public class TFCustomFlowController {
             }
             //自定义流程处理开始
             Map<String, Object> map = activitiService.dynamicBuildBpmn(customFlowSaveDto, flowBpmnId, tfCustomFlow.getVersion());
+            String actFlowId = tfCustomFlowService.findActIdByFlowKey(flowBpmnId);
+            tfCustomFlow.setActFlowId(actFlowId);
             tfCustomFlow.setFlowProcessVar(JacksonUtil.parseJson(map));
             tfCustomFlowService.saveOrUpdate(tfCustomFlow);
         } catch (Exception e) {
@@ -267,7 +268,7 @@ public class TFCustomFlowController {
         return ResultUtil.ok(tfCustomFlowService.updateById(tfCustomFlow));
     }
 
-    @ApiOperation(value = "查看流程流程")
+    @ApiOperation(value = "查看流程信息")
     @ApiResponses({@ApiResponse(code = 200, message = "审批流程信息", response = FlowViewResult.class)})
     @RequestMapping(value = "/view", method = RequestMethod.POST)
     public Result view(@ApiParam(value = "流程id", required = true) @RequestParam String flowId) {
@@ -334,7 +335,7 @@ public class TFCustomFlowController {
     }
 
     @ApiOperation(value = "根据流程类型获取流程节点")
-    @ApiResponses({@ApiResponse(code = 200, message = "当前流程节点信息", response = ResultUtil.class)})
+    @ApiResponses({@ApiResponse(code = 200, message = "当前流程节点信息", response = FlowTaskResult.class)})
     @RequestMapping(value = "/get_flow_info_by_type", method = RequestMethod.POST)
     public Result getFlowInfoByType(@ApiParam(value = "流程类型", required = true) @RequestParam TFCustomTypeEnum type) {
         return ResultUtil.ok(activitiService.getFlowInfoByType(type));