Przeglądaj źródła

Merge remote-tracking branch 'origin/dev_v2.2.0' into dev_v2.2.0

caozixuan 3 lat temu
rodzic
commit
fa53402359

+ 60 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/DirectorApproveListener.java

@@ -1,11 +1,28 @@
 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.entity.BasicCourse;
+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.service.BasicCourseService;
+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 org.springframework.data.domain.Example;
 
+import javax.annotation.Resource;
 import java.util.Arrays;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 教研室主任审批
@@ -17,9 +34,51 @@ import java.util.Arrays;
 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;
+
+    /**
+     * 查找同级和以下人员
+     *
+     * @param delegateTask
+     */
     @Override
     public void notify(DelegateTask delegateTask) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        String flowId = delegateTask.getProcessInstanceId();
+        QueryWrapper<ExamTask> examTaskQueryWrapper = new QueryWrapper<>();
+        examTaskQueryWrapper.lambda().eq(ExamTask::getFlowId, Long.parseLong(flowId));
+        ExamTask examTask = examTaskService.getOne(examTaskQueryWrapper);
+
+        QueryWrapper<BasicCourse> basicCourseQueryWrapper = new QueryWrapper<>();
+        basicCourseQueryWrapper.lambda().eq(BasicCourse::getSchoolId, sysUser.getSchoolId())
+                .eq(BasicCourse::getCode, examTask.getCourseCode());
+        BasicCourse basicCourse = basicCourseService.getOne(basicCourseQueryWrapper);
+
+        if (Objects.isNull(basicCourse)) {
+            throw ExceptionResultEnum.ERROR.exception("课程数据为空");
+        }
+        if (Objects.isNull(basicCourse.getOrgId())) {
+            throw ExceptionResultEnum.ERROR.exception("课程机构为空");
+        }
+        List<SysOrg> sysOrgList = sysOrgService.findByConnectByRootOrgId(basicCourse.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("4", "8"));
+        delegateTask.addCandidateUsers(ids);
     }
 }

+ 5 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/PresidentApproveListener.java

@@ -17,6 +17,11 @@ import java.util.Arrays;
 public class PresidentApproveListener implements TaskListener {
     private final static Logger log = LoggerFactory.getLogger(PresidentApproveListener.class);
 
+    /**
+     * 查找同级和以上人员
+     *
+     * @param delegateTask
+     */
     @Override
     public void notify(DelegateTask delegateTask) {
         //添加或签的人员,一人通过即可进入下一环节

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

@@ -17,12 +17,14 @@ 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;
@@ -37,9 +39,8 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -136,6 +137,9 @@ 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)
@@ -143,12 +147,17 @@ 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);
+//        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);
+//        }
         return ResultUtil.ok();
     }
 

+ 8 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/SysOrgMapper.java

@@ -27,4 +27,12 @@ public interface SysOrgMapper extends BaseMapper<SysOrg> {
      * @return
      */
     List<SysUser> findUserByOrgType(@Param("schoolId") Long schoolId, @Param("orgId") Long orgId, @Param("orgTypeEnum") String orgTypeEnum);
+
+    /**
+     * 递归树查询
+     *
+     * @param orgId
+     * @return
+     */
+    List<SysOrg> findByConnectByRootOrgId(@Param("orgId") Long orgId);
 }

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

@@ -7,6 +7,7 @@ import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.OrgTypeEnum;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * <p>
@@ -61,10 +62,18 @@ public interface SysOrgService extends IService<SysOrg> {
     List<SysUser> findUserByOrgType(Long schoolId, Long orgId, OrgTypeEnum orgTypeEnum);
 
     /**
-     * 根据orgId查找属机构信息
+     * 根据orgId查找属机构信息
      *
      * @param orgId
      * @return
      */
-    List<SysOrg> findAllByOrgId(Long orgId);
+    List<SysOrg> findAllByOrgId(Long orgId, List<SysOrg> sysOrgList);
+
+    /**
+     * 递归树查询
+     *
+     * @param orgId
+     * @return
+     */
+    List<SysOrg> findByConnectByRootOrgId(Long orgId);
 }

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

@@ -122,6 +122,7 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
 
     /**
      * 校验各机构关系
+     *
      * @param org
      */
     private void checkOrgTree(SysOrg org) {
@@ -254,15 +255,35 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
     }
 
     /**
-     * 根据orgId查找属机构信息
+     * 根据orgId查找属机构信息
      *
      * @param orgId
      * @return
      */
     @Override
-    public List<SysOrg> findAllByOrgId(Long orgId) {
+    public List<SysOrg> findAllByOrgId(Long orgId, List<SysOrg> sysOrgList) {
+        SysOrg sysOrg = this.getById(orgId);
         QueryWrapper<SysOrg> sysOrgQueryWrapper = new QueryWrapper<>();
-        sysOrgQueryWrapper.lambda().eq(SysOrg::getParentId, orgId);
-        return this.list(sysOrgQueryWrapper);
+        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;
+    }
+
+    /**
+     * 递归树查询
+     *
+     * @param orgId
+     * @return
+     */
+    @Override
+    public List<SysOrg> findByConnectByRootOrgId(Long orgId) {
+        return sysOrgMapper.findByConnectByRootOrgId(orgId);
     }
 }

+ 7 - 3
teachcloud-common/src/main/resources/mapper/SysOrgMapper.xml

@@ -4,11 +4,11 @@
 
     <select id="findUserByOrgType" resultType="com.qmth.teachcloud.common.entity.SysUser">
         select
-            *
+        *
         from
-            sys_user su
+        sys_user su
         join sys_org so on
-            su.org_id = so.id
+        su.org_id = so.id
         <where>
             <if test="schoolId != null and schoolId != ''">
                 and so.school_id = #{schoolId}
@@ -22,4 +22,8 @@
         </where>
     </select>
 
+    <select id="findByConnectByRootOrgId" resultType="com.qmth.teachcloud.common.entity.SysOrg">
+        SELECT * FROM sys_org so WHERE FIND_IN_SET(id, getRootChildId(#{orgId}));
+    </select>
+
 </mapper>