Browse Source

流程修改

wangliang 3 years ago
parent
commit
0216375ece
15 changed files with 158 additions and 136 deletions
  1. 6 12
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/DirectorApproveListener.java
  2. 23 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/PresidentApproveListener.java
  3. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TFFlow.java
  4. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TFFlowApprove.java
  5. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TFFlowApproveLog.java
  6. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TFFlowLog.java
  7. 80 67
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ActivitiServiceImpl.java
  8. 6 6
      distributed-print-business/src/main/resources/mapper/ExamTaskMapper.xml
  9. 6 6
      distributed-print-business/src/main/resources/mapper/TFFlowMapper.xml
  10. 9 18
      distributed-print/src/main/java/com/qmth/distributed/print/api/TFFlowController.java
  11. 3 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java
  12. 9 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/SysOrgMapper.java
  13. 3 3
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysOrgService.java
  14. 4 15
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysOrgServiceImpl.java
  15. 5 1
      teachcloud-common/src/main/resources/mapper/SysOrgMapper.xml

+ 6 - 12
distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/DirectorApproveListener.java

@@ -3,6 +3,7 @@ package com.qmth.distributed.print.business.activiti;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qmth.distributed.print.business.entity.ExamTask;
 import com.qmth.distributed.print.business.service.ExamTaskService;
+import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.entity.BasicCourse;
 import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.entity.SysUser;
@@ -34,18 +35,6 @@ import java.util.stream.Collectors;
 public class DirectorApproveListener implements TaskListener {
     private final static Logger log = LoggerFactory.getLogger(DirectorApproveListener.class);
 
-    @Resource
-    SysOrgService sysOrgService;
-
-    @Resource
-    ExamTaskService examTaskService;
-
-    @Resource
-    BasicCourseService basicCourseService;
-
-    @Resource
-    SysUserService sysUserService;
-
     /**
      * 查找同级和以下人员
      *
@@ -53,6 +42,11 @@ public class DirectorApproveListener implements TaskListener {
      */
     @Override
     public void notify(DelegateTask delegateTask) {
+        SysOrgService sysOrgService = SpringContextHolder.getBean(SysOrgService.class);
+        ExamTaskService examTaskService = SpringContextHolder.getBean(ExamTaskService.class);
+        BasicCourseService basicCourseService = SpringContextHolder.getBean(BasicCourseService.class);
+        SysUserService sysUserService = SpringContextHolder.getBean(SysUserService.class);
+
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         String flowId = delegateTask.getProcessInstanceId();
         QueryWrapper<ExamTask> examTaskQueryWrapper = new QueryWrapper<>();

+ 23 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/PresidentApproveListener.java

@@ -1,11 +1,20 @@
 package com.qmth.distributed.print.business.activiti;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qmth.teachcloud.common.contant.SpringContextHolder;
+import com.qmth.teachcloud.common.entity.SysOrg;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.service.SysOrgService;
+import com.qmth.teachcloud.common.service.SysUserService;
+import com.qmth.teachcloud.common.util.ServletUtil;
 import org.activiti.engine.delegate.DelegateTask;
 import org.activiti.engine.delegate.TaskListener;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 教学院长审批
@@ -24,7 +33,19 @@ public class PresidentApproveListener implements TaskListener {
      */
     @Override
     public void notify(DelegateTask delegateTask) {
+        SysOrgService sysOrgService = SpringContextHolder.getBean(SysOrgService.class);
+        SysUserService sysUserService = SpringContextHolder.getBean(SysUserService.class);
+
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        List<SysOrg> sysOrgList = sysOrgService.findByConnectByParentId(sysUser.getOrgId());
+        Set<Long> orgIds = sysOrgList.stream().map(s -> s.getId()).collect(Collectors.toSet());
+
+        QueryWrapper<SysUser> sysUserQueryWrapper = new QueryWrapper<>();
+        sysUserQueryWrapper.lambda().eq(SysUser::getSchoolId, sysUser.getSchoolId())
+                .in(SysUser::getOrgId, orgIds);
+        List<SysUser> sysUserList = sysUserService.list(sysUserQueryWrapper);
+        List<String> ids = sysUserList.stream().map(s -> String.valueOf(s.getId())).collect(Collectors.toList());
         //添加或签的人员,一人通过即可进入下一环节
-        delegateTask.addCandidateUsers(Arrays.asList("2", "6"));
+        delegateTask.addCandidateUsers(ids);
     }
 }

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TFFlow.java

@@ -46,7 +46,7 @@ public class TFFlow extends BaseEntity implements Serializable {
     public TFFlow(Long schoolId, Long orgId, String name, Long userId) {
         setId(SystemConstant.getDbUuid());
         this.schoolId = schoolId;
-        this.orgId = orgId;
+//        this.orgId = orgId;
         this.name = name;
         setCreateId(userId);
     }

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TFFlowApprove.java

@@ -56,7 +56,7 @@ public class TFFlowApprove extends BaseEntity implements Serializable {
     public TFFlowApprove(Long schoolId, Long orgId, Long flowId, Long approveId, FlowStatusEnum status, Long userId) {
         setId(SystemConstant.getDbUuid());
         this.schoolId = schoolId;
-        this.orgId = orgId;
+//        this.orgId = orgId;
         this.flowId = flowId;
         this.approveId = approveId;
         this.status = status;

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TFFlowApproveLog.java

@@ -76,7 +76,7 @@ public class TFFlowApproveLog extends BaseEntity implements Serializable {
     public TFFlowApproveLog(Long schoolId, Long orgId, Long flowId, Long taskId, Long startId, Long userId) {
         setId(SystemConstant.getDbUuid());
         this.schoolId = schoolId;
-        this.orgId = orgId;
+//        this.orgId = orgId;
         this.flowId = flowId;
         this.taskId = taskId;
         this.startId = startId;

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TFFlowLog.java

@@ -62,7 +62,7 @@ public class TFFlowLog extends BaseEntity implements Serializable {
     public TFFlowLog(Long schoolId, Long orgId, Long flowId, Long taskId, Long approveId, Long userId, String approveRemark) {
         setId(SystemConstant.getDbUuid());
         this.schoolId = schoolId;
-        this.orgId = orgId;
+//        this.orgId = orgId;
         this.flowId = flowId;
         this.approveId = approveId;
         this.taskId = taskId;

+ 80 - 67
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ActivitiServiceImpl.java

@@ -176,75 +176,90 @@ public class ActivitiServiceImpl implements ActivitiService {
     @Override
     @Transactional
     public void flowEnd(String flowId) {
-        Task task = taskService.createTaskQuery().processInstanceId(flowId).singleResult();
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        runtimeService.deleteProcessInstance(flowId, FlowGdykdxApproveSetupEnum.END.getTitle());
-        //流程审批
-        QueryWrapper<TFFlowApprove> tfFlowApproveQueryWrapper = new QueryWrapper<>();
-        tfFlowApproveQueryWrapper.lambda().eq(TFFlowApprove::getFlowId, Long.parseLong(flowId));
-        TFFlowApprove tfFlowApprove = tfFlowApproveService.getOne(tfFlowApproveQueryWrapper);
-        if (Objects.isNull(tfFlowApprove)) {
-            tfFlowApprove = new TFFlowApprove(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(flowId), sysUser.getId(), FlowStatusEnum.END, sysUser.getId());
-        } else {
-            tfFlowApprove.setStatus(FlowStatusEnum.END);
-            tfFlowApprove.setSetup(FlowGdykdxApproveSetupEnum.END.getSetup());
-            tfFlowApprove.updateInfo(sysUser.getId());
-        }
-        tfFlowApproveService.saveOrUpdate(tfFlowApprove);
-
-        //流程流水日志
-        QueryWrapper<ExamTask> examTaskQueryWrapper = new QueryWrapper<>();
-        examTaskQueryWrapper.lambda().eq(ExamTask::getFlowId, Long.parseLong(flowId));
-        ExamTask examTask = examTaskService.getOne(examTaskQueryWrapper);
-        TFFlowLog tfFlowLog = new TFFlowLog(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(flowId), examTask.getId(), sysUser.getId(), sysUser.getId(), FlowGdykdxApproveSetupEnum.END.getTitle());
-        tfFlowLog.setApproveOperation(FlowApproveOperationEnum.END);
-        tfFlowLog.setApproveSetup(FlowGdykdxApproveSetupEnum.END.getSetup());
-        tfFlowLogService.save(tfFlowLog);
-
-        if (Objects.nonNull(task)) {
-            String processDefinitionId = historyService.createHistoricProcessInstanceQuery().processInstanceId(flowId).singleResult().getProcessDefinitionId();
-            ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService).getDeployedProcessDefinition(processDefinitionId);
-            //获取当前流程节点
-            String currActivityId = task.getTaskDefinitionKey();
-            BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId());
-            FlowNode currFlow = (FlowNode) bpmnModel.getMainProcess().getFlowElement(currActivityId);
-            if (currFlow instanceof UserTask) {
-                UserTask userTask = (UserTask) currFlow;
-                //广东医科大学流程
-                if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)) {
-                    //流程审批记录
-                    QueryWrapper<TFFlowApproveLog> tfFlowApproveLogQueryWrapper = new QueryWrapper<>();
-                    tfFlowApproveLogQueryWrapper.lambda().eq(TFFlowApproveLog::getFlowId, Long.parseLong(flowId))
-                            .eq(TFFlowApproveLog::getTaskId, examTask.getId());
-                    TFFlowApproveLog tfFlowApproveLog = tfFlowApproveLogService.getOne(tfFlowApproveLogQueryWrapper);
-                    if (Objects.isNull(tfFlowApproveLog)) {
-                        tfFlowApproveLog = new TFFlowApproveLog(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(flowId), examTask.getId(), sysUser.getId(), sysUser.getId());
-                    }
+        try {
+            if (redisUtil.lock(SystemConstant.REDIS_LOCK_FLOW_PREFIX + flowId, SystemConstant.REDIS_LOCK_FLOW_TIME_OUT)) {
+                Task task = taskService.createTaskQuery().processInstanceId(flowId).singleResult();
+                SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+                runtimeService.deleteProcessInstance(flowId, FlowGdykdxApproveSetupEnum.END.getTitle());
+                //流程审批
+                QueryWrapper<TFFlowApprove> tfFlowApproveQueryWrapper = new QueryWrapper<>();
+                tfFlowApproveQueryWrapper.lambda().eq(TFFlowApprove::getFlowId, Long.parseLong(flowId));
+                TFFlowApprove tfFlowApprove = tfFlowApproveService.getOne(tfFlowApproveQueryWrapper);
+                if (Objects.isNull(tfFlowApprove)) {
+                    tfFlowApprove = new TFFlowApprove(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(flowId), sysUser.getId(), FlowStatusEnum.END, sysUser.getId());
+                } else {
+                    tfFlowApprove.setStatus(FlowStatusEnum.END);
+                    tfFlowApprove.setSetup(FlowGdykdxApproveSetupEnum.END.getSetup());
+                    tfFlowApprove.updateInfo(sysUser.getId());
+                }
+                tfFlowApproveService.saveOrUpdate(tfFlowApprove);
+
+                //流程流水日志
+                QueryWrapper<ExamTask> examTaskQueryWrapper = new QueryWrapper<>();
+                examTaskQueryWrapper.lambda().eq(ExamTask::getFlowId, Long.parseLong(flowId));
+                ExamTask examTask = examTaskService.getOne(examTaskQueryWrapper);
+                TFFlowLog tfFlowLog = new TFFlowLog(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(flowId), examTask.getId(), sysUser.getId(), sysUser.getId(), FlowGdykdxApproveSetupEnum.END.getTitle());
+                tfFlowLog.setApproveOperation(FlowApproveOperationEnum.END);
+                tfFlowLog.setApproveSetup(FlowGdykdxApproveSetupEnum.END.getSetup());
+                tfFlowLogService.save(tfFlowLog);
+
+                if (Objects.nonNull(task)) {
+                    String processDefinitionId = historyService.createHistoricProcessInstanceQuery().processInstanceId(flowId).singleResult().getProcessDefinitionId();
+                    ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService).getDeployedProcessDefinition(processDefinitionId);
+                    //获取当前流程节点
+                    String currActivityId = task.getTaskDefinitionKey();
+                    BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId());
+                    FlowNode currFlow = (FlowNode) bpmnModel.getMainProcess().getFlowElement(currActivityId);
+                    if (currFlow instanceof UserTask) {
+                        UserTask userTask = (UserTask) currFlow;
+                        //广东医科大学流程
+                        if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)) {
+                            //流程审批记录
+                            QueryWrapper<TFFlowApproveLog> tfFlowApproveLogQueryWrapper = new QueryWrapper<>();
+                            tfFlowApproveLogQueryWrapper.lambda().eq(TFFlowApproveLog::getFlowId, Long.parseLong(flowId))
+                                    .eq(TFFlowApproveLog::getTaskId, examTask.getId());
+                            TFFlowApproveLog tfFlowApproveLog = tfFlowApproveLogService.getOne(tfFlowApproveLogQueryWrapper);
+                            if (Objects.isNull(tfFlowApproveLog)) {
+                                tfFlowApproveLog = new TFFlowApproveLog(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(flowId), examTask.getId(), sysUser.getId(), sysUser.getId());
+                            }
 
-                    FlowGdykdxApproveSetupEnum setupEnum = FlowGdykdxApproveSetupEnum.convertToInstance(userTask.getId());
-                    if (setupEnum == FlowGdykdxApproveSetupEnum.SUBMIT) {//命题
-                        tfFlowApproveLog.setStartId(sysUser.getId());
-                        tfFlowApproveLog.setRemark(FlowGdykdxApproveSetupEnum.SUBMIT.getTitle() + FlowApproveOperationEnum.END.getTitle());
-                    } else if (setupEnum == FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE) {//主任
-                        tfFlowApproveLog.setPrimaryApproveId(sysUser.getId());
-                        tfFlowApproveLog.setPrimaryApproveOperation(FlowApproveOperationEnum.END);
-                        tfFlowApproveLog.setPrimaryApproveRemark(FlowApproveOperationEnum.END.getTitle());
-                    } else if (setupEnum == FlowGdykdxApproveSetupEnum.SECOND_APPROVE) {//院长
-                        tfFlowApproveLog.setSecondApproveId(sysUser.getId());
-                        tfFlowApproveLog.setSecondApproveOperation(FlowApproveOperationEnum.END);
-                        tfFlowApproveLog.setSecondApproveRemark(FlowApproveOperationEnum.END.getTitle());
+                            FlowGdykdxApproveSetupEnum setupEnum = FlowGdykdxApproveSetupEnum.convertToInstance(userTask.getId());
+                            if (setupEnum == FlowGdykdxApproveSetupEnum.SUBMIT) {//命题
+                                tfFlowApproveLog.setStartId(sysUser.getId());
+                                tfFlowApproveLog.setRemark(FlowGdykdxApproveSetupEnum.SUBMIT.getTitle() + FlowApproveOperationEnum.END.getTitle());
+                            } else if (setupEnum == FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE) {//主任
+                                tfFlowApproveLog.setPrimaryApproveId(sysUser.getId());
+                                tfFlowApproveLog.setPrimaryApproveOperation(FlowApproveOperationEnum.END);
+                                tfFlowApproveLog.setPrimaryApproveRemark(FlowApproveOperationEnum.END.getTitle());
+                            } else if (setupEnum == FlowGdykdxApproveSetupEnum.SECOND_APPROVE) {//院长
+                                tfFlowApproveLog.setSecondApproveId(sysUser.getId());
+                                tfFlowApproveLog.setSecondApproveOperation(FlowApproveOperationEnum.END);
+                                tfFlowApproveLog.setSecondApproveRemark(FlowApproveOperationEnum.END.getTitle());
+                            }
+                            tfFlowApproveLog.updateInfo(sysUser.getId());
+                            tfFlowApproveLogService.saveOrUpdate(tfFlowApproveLog);
+                        }
                     }
-                    tfFlowApproveLog.updateInfo(sysUser.getId());
-                    tfFlowApproveLogService.saveOrUpdate(tfFlowApproveLog);
                 }
+
+                //命题任务修改
+                examTask.setFlowId(null);
+                examTask.setStatus(ExamStatusEnum.DRAFT);
+                examTask.updateInfo(sysUser.getId());
+                examTaskService.updateById(examTask);
+            } else {
+                throw ExceptionResultEnum.ERROR.exception("正在终止中,请稍候再试!");
             }
+        } catch (Exception e) {
+            e.printStackTrace();
+            if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
+        } finally {
+            redisUtil.releaseLock(SystemConstant.REDIS_LOCK_FLOW_PREFIX + flowId);
         }
-
-        //命题任务修改
-        examTask.setFlowId(null);
-        examTask.setStatus(ExamStatusEnum.DRAFT);
-        examTask.updateInfo(sysUser.getId());
-        examTaskService.updateById(examTask);
     }
 
     /**
@@ -434,9 +449,7 @@ public class ActivitiServiceImpl implements ActivitiService {
                 ResultUtil.error(e.getMessage());
             }
         } finally {
-            if (Objects.nonNull(flowTaskId)) {
-                redisUtil.releaseLock(SystemConstant.REDIS_LOCK_FLOW_TASK_PREFIX + flowTaskId);
-            }
+            redisUtil.releaseLock(SystemConstant.REDIS_LOCK_FLOW_TASK_PREFIX + flowTaskId);
         }
     }
 

+ 6 - 6
distributed-print-business/src/main/resources/mapper/ExamTaskMapper.xml

@@ -707,9 +707,9 @@
             <if test="schoolId != null and schoolId != ''">
                 and et.school_id = #{schoolId}
             </if>
-            <if test="orgId != null and orgId != ''">
-                and et.org_id = #{orgId}
-            </if>
+<!--            <if test="orgId != null and orgId != ''">-->
+<!--                and et.org_id = #{orgId}-->
+<!--            </if>-->
         </where>
         UNION all
         select
@@ -759,9 +759,9 @@
             <if test="schoolId != null and schoolId != ''">
                 and et.school_id = #{schoolId}
             </if>
-            <if test="orgId != null and orgId != ''">
-                and et.org_id = #{orgId}
-            </if>
+<!--            <if test="orgId != null and orgId != ''">-->
+<!--                and et.org_id = #{orgId}-->
+<!--            </if>-->
         </where>
     </select>
 

+ 6 - 6
distributed-print-business/src/main/resources/mapper/TFFlowMapper.xml

@@ -11,9 +11,9 @@
             <if test="schoolId != null and schoolId != ''">
                 and tff.school_id = #{schoolId}
             </if>
-            <if test="orgId != null and orgId != ''">
-                and tff.org_id = #{orgId}
-            </if>
+<!--            <if test="orgId != null and orgId != ''">-->
+<!--                and tff.org_id = #{orgId}-->
+<!--            </if>-->
         </where>
     </select>
 
@@ -54,9 +54,9 @@
             <if test="schoolId != null and schoolId != ''">
                 and tffal.school_id = #{schoolId}
             </if>
-            <if test="orgId != null and orgId != ''">
-                and tffal.org_id = #{orgId}
-            </if>
+<!--            <if test="orgId != null and orgId != ''">-->
+<!--                and tffal.org_id = #{orgId}-->
+<!--            </if>-->
             and tffal.enable = 1
         </where>
         order by

+ 9 - 18
distributed-print/src/main/java/com/qmth/distributed/print/api/TFFlowController.java

@@ -17,14 +17,12 @@ import com.qmth.distributed.print.business.service.TFFlowApproveLogService;
 import com.qmth.distributed.print.business.service.TFFlowService;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicAttachment;
-import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.FieldUniqueEnum;
 import com.qmth.teachcloud.common.enums.FlowApprovePassEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.common.service.BasicAttachmentService;
-import com.qmth.teachcloud.common.service.SysOrgService;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
@@ -39,8 +37,9 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
-import java.util.*;
-import java.util.stream.Collectors;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
 
 /**
  * <p>
@@ -137,9 +136,6 @@ public class TFFlowController {
         return ResultUtil.ok(tfFlowService.list(new Page<>(pageNumber, pageSize), name, SystemConstant.getHeadOrUserSchoolId(), sysUser.getOrgId()));
     }
 
-    @Resource
-    SysOrgService sysOrgService;
-
     @ApiOperation(value = "审批流程")
     @ApiResponses({@ApiResponse(code = 200, message = "常规信息", response = ResultUtil.class)})
     @RequestMapping(value = "/task/approve", method = RequestMethod.POST)
@@ -147,17 +143,12 @@ public class TFFlowController {
                               @ApiParam(value = "流程审批操作", required = false) @RequestParam(required = false) FlowApprovePassEnum approvePass,
                               @ApiParam(value = "流程审核意见", required = false) @RequestParam(required = false) String remark,
                               @ApiParam(value = "流程驳回节点", required = false) @RequestParam(required = false) Integer setup) {
-//        Map<String, Object> map = new HashMap<>();
-//        map.computeIfAbsent(SystemConstant.FLOW_TASK_ID, v -> taskId);
-//        map.computeIfAbsent(SystemConstant.APPROVE_OPERATION, v -> approvePass);
-//        map.computeIfAbsent(SystemConstant.APPROVE_REMARK, v -> remark);
-//        map.computeIfAbsent(SystemConstant.APPROVE_SETUP, v -> setup);
-//        activitiService.taskApprove(map);
-        List<SysOrg> sysOrgList = sysOrgService.findAllByOrgId(8L, new ArrayList<>());
-//        Set<Long> orgIds = sysOrgList.stream().map(s -> s.getParentId()).collect(Collectors.toSet());
-//        for (Long l : orgIds) {
-//            sysOrgList = sysOrgService.findAllByOrgId(l);
-//        }
+        Map<String, Object> map = new HashMap<>();
+        map.computeIfAbsent(SystemConstant.FLOW_TASK_ID, v -> taskId);
+        map.computeIfAbsent(SystemConstant.APPROVE_OPERATION, v -> approvePass);
+        map.computeIfAbsent(SystemConstant.APPROVE_REMARK, v -> remark);
+        map.computeIfAbsent(SystemConstant.APPROVE_SETUP, v -> setup);
+        activitiService.taskApprove(map);
         return ResultUtil.ok();
     }
 

+ 3 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -195,8 +195,10 @@ public class SystemConstant {
     public static final String APPROVE_OPERATION = "approveOperation";//流程节点
     public static final String FLOW_STATUS = "flowStatus";//流程状态
     public static final String APPROVE_REMARK = "approveRemark";//流程审批意见
-    public static final String REDIS_LOCK_FLOW_TASK_PREFIX = "redis:lock:flow:task";//流程节点锁
+    public static final String REDIS_LOCK_FLOW_TASK_PREFIX = "redis:lock:flow:task:";//流程节点锁
     public static final long REDIS_LOCK_FLOW_TASK_TIME_OUT = 60L * 2;
+    public static final String REDIS_LOCK_FLOW_PREFIX = "redis:lock:flow:";//流程节点锁
+    public static final long REDIS_LOCK_FLOW_TIME_OUT = 60L * 2;
 
     /**
      * 初始化附件文件路径

+ 9 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/SysOrgMapper.java

@@ -29,7 +29,15 @@ public interface SysOrgMapper extends BaseMapper<SysOrg> {
     List<SysUser> findUserByOrgType(@Param("schoolId") Long schoolId, @Param("orgId") Long orgId, @Param("orgTypeEnum") String orgTypeEnum);
 
     /**
-     * 递归树查询
+     * 递归树查询(同级及以上)
+     *
+     * @param orgId
+     * @return
+     */
+    List<SysOrg> findByConnectByParentId(@Param("orgId") Long orgId);
+
+    /**
+     * 递归树查询(同级及以下)
      *
      * @param orgId
      * @return

+ 3 - 3
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysOrgService.java

@@ -62,15 +62,15 @@ public interface SysOrgService extends IService<SysOrg> {
     List<SysUser> findUserByOrgType(Long schoolId, Long orgId, OrgTypeEnum orgTypeEnum);
 
     /**
-     * 根据orgId查找上属机构信息
+     * 递归树查询(同级及以上)
      *
      * @param orgId
      * @return
      */
-    List<SysOrg> findAllByOrgId(Long orgId, List<SysOrg> sysOrgList);
+    List<SysOrg> findByConnectByParentId(Long orgId);
 
     /**
-     * 递归树查询
+     * 递归树查询(同级及以下)
      *
      * @param orgId
      * @return

+ 4 - 15
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysOrgServiceImpl.java

@@ -255,29 +255,18 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
     }
 
     /**
-     * 根据orgId查找上属机构信息
+     * 递归树查询(同级及以上)
      *
      * @param orgId
      * @return
      */
     @Override
-    public List<SysOrg> findAllByOrgId(Long orgId, List<SysOrg> sysOrgList) {
-        SysOrg sysOrg = this.getById(orgId);
-        QueryWrapper<SysOrg> sysOrgQueryWrapper = new QueryWrapper<>();
-        sysOrgQueryWrapper.lambda().eq(SysOrg::getId, sysOrg.getParentId());
-        List<SysOrg> sysOrgDbList = this.list(sysOrgQueryWrapper);
-        Set<Long> orgIds = sysOrgDbList.stream().map(s -> s.getParentId()).collect(Collectors.toSet());
-        for (Long l : orgIds) {
-            if (Objects.nonNull(l)) {
-                sysOrgList.add(this.getById(orgId));
-                return this.findAllByOrgId(l, sysOrgList);
-            }
-        }
-        return sysOrgList;
+    public List<SysOrg> findByConnectByParentId(Long orgId) {
+        return sysOrgMapper.findByConnectByParentId(orgId);
     }
 
     /**
-     * 递归树查询
+     * 递归树查询(同级及以下)
      *
      * @param orgId
      * @return

+ 5 - 1
teachcloud-common/src/main/resources/mapper/SysOrgMapper.xml

@@ -22,8 +22,12 @@
         </where>
     </select>
 
+    <select id="findByConnectByParentId" resultType="com.qmth.teachcloud.common.entity.SysOrg">
+        SELECT su.* FROM (SELECT @a AS _id, (SELECT @a := so.parent_id FROM sys_org so WHERE so.id = _id) AS parent_id FROM (SELECT @a := #{orgId}) vars, sys_org h WHERE @a <![CDATA[ <> ]]> 0) temp JOIN sys_org su ON temp._id = su.id
+    </select>
+
     <select id="findByConnectByRootOrgId" resultType="com.qmth.teachcloud.common.entity.SysOrg">
-        SELECT * FROM sys_org so WHERE FIND_IN_SET(id, getRootChildId(#{orgId}));
+        SELECT so.* FROM sys_org so WHERE FIND_IN_SET(id, getRootChildId(#{orgId}))
     </select>
 
 </mapper>