wangliang 3 лет назад
Родитель
Сommit
3bc2d728a9
20 измененных файлов с 417 добавлено и 66 удалено
  1. 2 29
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/DirectorApproveListener.java
  2. 3 9
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/PresidentApproveListener.java
  3. 41 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/FlowTaskApprovePeopleAllResult.java
  4. 65 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/FlowTaskApprovePeopleResult.java
  5. 2 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TFFlowMapper.java
  6. 10 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ActivitiService.java
  7. 2 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TFFlowService.java
  8. 103 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ActivitiServiceImpl.java
  9. 3 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TFFlowServiceImpl.java
  10. 3 0
      distributed-print-business/src/main/resources/mapper/TFFlowMapper.xml
  11. 1 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java
  12. 10 6
      distributed-print/src/main/java/com/qmth/distributed/print/api/TFFlowController.java
  13. 1 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/WorkController.java
  14. 6 1
      distributed-print/src/main/resources/application-dev.properties
  15. 4 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/UserDto.java
  16. 41 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/params/ApproveUserResult.java
  17. 10 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/SysUserMapper.java
  18. 26 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysUserService.java
  19. 57 3
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java
  20. 27 8
      teachcloud-common/src/main/resources/mapper/SysUserMapper.xml

+ 2 - 29
distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/DirectorApproveListener.java

@@ -3,26 +3,15 @@ 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.bean.params.ApproveUserResult;
 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;
-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;
 
 /**
@@ -42,31 +31,15 @@ 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<>();
         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());
-        List<SysUser> sysUserList = sysUserService.filterFlowPrivilege(sysUser.getSchoolId(), orgIds, true);
+        List<ApproveUserResult> sysUserList = sysUserService.findByDirectorApprove(examTask.getCourseCode());
         List<String> ids = sysUserList.stream().map(s -> String.valueOf(s.getId())).collect(Collectors.toList());
         //添加或签的人员,一人通过即可进入下一环节
         delegateTask.addCandidateUsers(ids);

+ 3 - 9
distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/PresidentApproveListener.java

@@ -1,10 +1,8 @@
 package com.qmth.distributed.print.business.activiti;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
 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;
@@ -12,8 +10,8 @@ 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;
 
 /**
@@ -33,13 +31,9 @@ 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());
-        List<SysUser> sysUserList = sysUserService.filterFlowPrivilege(sysUser.getSchoolId(), orgIds, true);
+        List<ApproveUserResult> sysUserList = sysUserService.findByPresidentApprove(Arrays.asList(sysUser.getOrgId()));
         List<String> ids = sysUserList.stream().map(s -> String.valueOf(s.getId())).collect(Collectors.toList());
         //添加或签的人员,一人通过即可进入下一环节
         delegateTask.addCandidateUsers(ids);

+ 41 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/FlowTaskApprovePeopleAllResult.java

@@ -0,0 +1,41 @@
+package com.qmth.distributed.print.business.bean.result;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Description: 流程节点待审批人 result
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/8/16
+ */
+public class FlowTaskApprovePeopleAllResult implements Serializable {
+
+    @ApiModelProperty(value = "流程id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long flowId;
+
+    @ApiModelProperty(value = "流程审批人列表")
+    private List<FlowTaskApprovePeopleResult> approveUserList;
+
+    public Long getFlowId() {
+        return flowId;
+    }
+
+    public void setFlowId(Long flowId) {
+        this.flowId = flowId;
+    }
+
+    public List<FlowTaskApprovePeopleResult> getApproveUserList() {
+        return approveUserList;
+    }
+
+    public void setApproveUserList(List<FlowTaskApprovePeopleResult> approveUserList) {
+        this.approveUserList = approveUserList;
+    }
+}

+ 65 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/FlowTaskApprovePeopleResult.java

@@ -0,0 +1,65 @@
+package com.qmth.distributed.print.business.bean.result;
+
+import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Description: 流程节点待审批人 result
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/8/16
+ */
+public class FlowTaskApprovePeopleResult implements Serializable {
+
+    @ApiModelProperty(value = "流程步骤")
+    private Integer setup;
+
+    @ApiModelProperty(value = "是否审核,true:已审,false:未审")
+    private boolean approve;
+
+    @ApiModelProperty(value = "流程审批人")
+    private List<ApproveUserResult> approveUser;
+
+    public FlowTaskApprovePeopleResult() {
+
+    }
+
+    public FlowTaskApprovePeopleResult(Integer setup, List<ApproveUserResult> approveUser) {
+        this.setup = setup;
+        this.approveUser = approveUser;
+    }
+
+    public FlowTaskApprovePeopleResult(Integer setup, boolean approve, List<ApproveUserResult> approveUser) {
+        this.setup = setup;
+        this.approve = approve;
+        this.approveUser = approveUser;
+    }
+
+    public boolean isApprove() {
+        return approve;
+    }
+
+    public void setApprove(boolean approve) {
+        this.approve = approve;
+    }
+
+    public Integer getSetup() {
+        return setup;
+    }
+
+    public void setSetup(Integer setup) {
+        this.setup = setup;
+    }
+
+    public List<ApproveUserResult> getApproveUser() {
+        return approveUser;
+    }
+
+    public void setApproveUser(List<ApproveUserResult> approveUser) {
+        this.approveUser = approveUser;
+    }
+}

+ 2 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TFFlowMapper.java

@@ -36,7 +36,8 @@ public interface TFFlowMapper extends BaseMapper<TFFlow> {
      * @param startName
      * @param schoolId
      * @param orgId
+     * @param flowId
      * @return
      */
-    IPage<FlowApproveResult> flowApproveList(IPage<Map> iPage, @Param("startName") String startName, @Param("schoolId") Long schoolId, @Param("orgId") Long orgId);
+    IPage<FlowApproveResult> flowApproveList(IPage<Map> iPage, @Param("startName") String startName, @Param("schoolId") Long schoolId, @Param("orgId") Long orgId, @Param("flowId") Long flowId);
 }

+ 10 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ActivitiService.java

@@ -1,9 +1,8 @@
 package com.qmth.distributed.print.business.service;
 
+import com.qmth.distributed.print.business.bean.result.FlowTaskApprovePeopleAllResult;
 import com.qmth.distributed.print.business.bean.result.FlowTaskResult;
-import org.activiti.bpmn.model.FlowNode;
 import org.activiti.engine.runtime.ProcessInstance;
-import org.activiti.engine.task.Task;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
@@ -86,4 +85,13 @@ public interface ActivitiService {
      * 流程删除
      */
     public Boolean flowDelete();
+
+    /**
+     * 获取所有流程节点待审批人
+     *
+     * @param courseCode
+     * @param taskId
+     * @return
+     */
+    public FlowTaskApprovePeopleAllResult taskApproverAll(String courseCode, String taskId);
 }

+ 2 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TFFlowService.java

@@ -35,9 +35,10 @@ public interface TFFlowService extends IService<TFFlow> {
      * @param startName
      * @param schoolId
      * @param orgId
+     * @param flowId
      * @return
      */
-    public IPage<FlowApproveResult> flowApproveList(IPage<Map> iPage, String startName, Long schoolId, Long orgId);
+    public IPage<FlowApproveResult> flowApproveList(IPage<Map> iPage, String startName, Long schoolId, Long orgId, Long flowId);
 
     /**
      * 根据key查找流程

+ 103 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ActivitiServiceImpl.java

@@ -2,15 +2,22 @@ package com.qmth.distributed.print.business.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.boot.api.exception.ApiException;
+import com.qmth.distributed.print.business.bean.result.FlowApproveResult;
+import com.qmth.distributed.print.business.bean.result.FlowTaskApprovePeopleAllResult;
+import com.qmth.distributed.print.business.bean.result.FlowTaskApprovePeopleResult;
 import com.qmth.distributed.print.business.bean.result.FlowTaskResult;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.enums.ExamStatusEnum;
 import com.qmth.distributed.print.business.service.*;
+import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
 import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.*;
+import com.qmth.teachcloud.common.service.SysUserService;
 import com.qmth.teachcloud.common.util.RedisUtil;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
@@ -35,6 +42,7 @@ import javax.annotation.Resource;
 import java.io.File;
 import java.io.IOException;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @Description: activiti service impl
@@ -77,6 +85,9 @@ public class ActivitiServiceImpl implements ActivitiService {
     @Resource
     TFFlowService tfFlowService;
 
+    @Resource
+    SysUserService sysUserService;
+
     /**
      * 注册流程
      *
@@ -309,7 +320,7 @@ public class ActivitiServiceImpl implements ActivitiService {
                 }
                 String processInstanceId = task.getProcessInstanceId();
                 QueryWrapper<ExamTask> examTaskQueryWrapper = new QueryWrapper<>();
-                examTaskQueryWrapper.lambda().eq(ExamTask::getFlowId, Long.parseLong(task.getProcessInstanceId()));
+                examTaskQueryWrapper.lambda().eq(ExamTask::getFlowId, Long.parseLong(processInstanceId));
                 ExamTask examTask = examTaskService.getOne(examTaskQueryWrapper);
 
                 String processDefinitionId = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult().getProcessDefinitionId();
@@ -500,4 +511,95 @@ public class ActivitiServiceImpl implements ActivitiService {
         }
         return true;
     }
+
+    /**
+     * 获取所有流程节点待审批人
+     *
+     * @param courseCode
+     * @param taskId
+     * @return
+     */
+    @Override
+    public FlowTaskApprovePeopleAllResult taskApproverAll(String courseCode, String taskId) {
+        FlowTaskApprovePeopleAllResult flowTaskApprovePeopleAllResult = null;
+        List<FlowTaskApprovePeopleResult> flowTaskApprovePeopleResultList = null;
+        if (Objects.nonNull(taskId) && !Objects.equals(taskId, "")) {//说明从已审核的节点开始捞人
+            flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult();
+            flowTaskApprovePeopleResultList = new LinkedList();
+            Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
+            flowTaskApprovePeopleAllResult.setFlowId(Long.parseLong(task.getProcessInstanceId()));
+            if (Objects.isNull(task)) {
+                throw ExceptionResultEnum.ERROR.exception("流程任务为空");
+            }
+            //获取当前流程节点
+            TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
+            if (Objects.isNull(tfFlowApprove)) {
+                throw ExceptionResultEnum.ERROR.exception("未找到流程状态记录");
+            }
+            if (tfFlowApprove.getSetup() <= 0) {
+                throw ExceptionResultEnum.ERROR.exception("流程已结束或已终止");
+            }
+
+            QueryWrapper<ExamTask> examTaskQueryWrapper = new QueryWrapper<>();
+            examTaskQueryWrapper.lambda().eq(ExamTask::getFlowId, flowTaskApprovePeopleAllResult.getFlowId());
+            ExamTask examTask = examTaskService.getOne(examTaskQueryWrapper);
+
+            IPage<FlowApproveResult> flowApproveResultIPage = tfFlowService.flowApproveList(new Page<>(SystemConstant.PAGE_NUMBER, SystemConstant.PAGE_SIZE), null, SystemConstant.getHeadOrUserSchoolId(), null, flowTaskApprovePeopleAllResult.getFlowId());
+            FlowApproveResult flowApproveResult = null;
+            if (Objects.nonNull(flowApproveResultIPage) && flowApproveResultIPage.getRecords().size() > 0) {
+                flowApproveResult = flowApproveResultIPage.getRecords().get(0);
+            }
+            switch (tfFlowApprove.getSetup()) {
+                case 1:
+                    //获取教研室主任审批人
+                    List<ApproveUserResult> sysUserDirectorList = sysUserService.findByDirectorApprove(examTask.getCourseCode());
+                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup(), sysUserDirectorList));
+                    Set<Long> orgIds = sysUserDirectorList.stream().map(s -> s.getOrgId()).collect(Collectors.toSet());
+                    //获取院长审批人
+                    List<ApproveUserResult> sysUserPresidentList = sysUserService.findByPresidentApprove(new ArrayList<>(orgIds));
+                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SECOND_APPROVE.getSetup(), sysUserPresidentList));
+                    break;
+                case 2:
+                    if (Objects.nonNull(flowApproveResult)) {
+                        throw ExceptionResultEnum.ERROR.exception("未找到流程记录");
+                    }
+                    //获取命题已审
+                    List<ApproveUserResult> approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
+                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SUBMIT.getSetup(), true, approveUserMtResult));
+                    //获取院长审批人
+                    orgIds = approveUserMtResult.stream().map(s -> s.getOrgId()).collect(Collectors.toSet());
+                    sysUserPresidentList = sysUserService.findByPresidentApprove(new ArrayList<>(orgIds));
+                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SECOND_APPROVE.getSetup(), sysUserPresidentList));
+                    break;
+                case 3:
+                    if (Objects.nonNull(flowApproveResult)) {
+                        throw ExceptionResultEnum.ERROR.exception("未找到流程记录");
+                    }
+                    //获取命题已审
+                    approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
+                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SUBMIT.getSetup(), true, approveUserMtResult));
+                    //获取主任已审
+                    sysUserDirectorList = sysUserService.findById(flowApproveResult.getPrimaryApproveId());
+                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup(), true, sysUserDirectorList));
+                    break;
+                default:
+                    break;
+            }
+        } else {//获取整个节点审批人
+            if (Objects.isNull(courseCode) || Objects.equals(courseCode, "")) {
+                throw ExceptionResultEnum.ERROR.exception("课程编码为空");
+            }
+            flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult();
+            flowTaskApprovePeopleResultList = new LinkedList();
+            //获取教研室主任审批人
+            List<ApproveUserResult> sysUserDirectorList = sysUserService.findByDirectorApprove(courseCode);
+            flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup(), sysUserDirectorList));
+            Set<Long> orgIds = sysUserDirectorList.stream().map(s -> s.getOrgId()).collect(Collectors.toSet());
+            //获取院长审批人
+            List<ApproveUserResult> sysUserPresidentList = sysUserService.findByPresidentApprove(new ArrayList<>(orgIds));
+            flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SECOND_APPROVE.getSetup(), sysUserPresidentList));
+        }
+        flowTaskApprovePeopleAllResult.setApproveUserList(flowTaskApprovePeopleResultList);
+        return flowTaskApprovePeopleAllResult;
+    }
 }

+ 3 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TFFlowServiceImpl.java

@@ -49,11 +49,12 @@ public class TFFlowServiceImpl extends ServiceImpl<TFFlowMapper, TFFlow> impleme
      * @param startName
      * @param schoolId
      * @param orgId
+     * @param flowId
      * @return
      */
     @Override
-    public IPage<FlowApproveResult> flowApproveList(IPage<Map> iPage, String startName, Long schoolId, Long orgId) {
-        return tfFlowMapper.flowApproveList(iPage, startName, schoolId, orgId);
+    public IPage<FlowApproveResult> flowApproveList(IPage<Map> iPage, String startName, Long schoolId, Long orgId, Long flowId) {
+        return tfFlowMapper.flowApproveList(iPage, startName, schoolId, orgId, flowId);
     }
 
     /**

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

@@ -58,6 +58,9 @@
 <!--            <if test="orgId != null and orgId != ''">-->
 <!--                and tffal.org_id = #{orgId}-->
 <!--            </if>-->
+            <if test="flowId != null and flowId != ''">
+                and tffal.flow_id = #{flowId}
+            </if>
             and tffal.enable = 1
         </where>
         order by

+ 1 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java

@@ -54,6 +54,7 @@ import java.util.*;
 @Api(tags = "命题任务Controller")
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.exam}/task")
+@Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
 public class ExamTaskController {
 
     @Autowired

+ 10 - 6
distributed-print/src/main/java/com/qmth/distributed/print/api/TFFlowController.java

@@ -1,6 +1,5 @@
 package com.qmth.distributed.print.api;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.boot.api.annotation.Aac;
@@ -28,8 +27,6 @@ import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import io.swagger.annotations.*;
-import org.activiti.engine.RuntimeService;
-import org.activiti.engine.runtime.ProcessInstance;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.dao.DuplicateKeyException;
@@ -41,7 +38,6 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.annotation.Resource;
 import javax.validation.Valid;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 
@@ -56,7 +52,7 @@ import java.util.Objects;
 @Api(tags = "流程Controller")
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.flow}")
-//@Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
+@Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
 public class TFFlowController {
     private final static Logger log = LoggerFactory.getLogger(TFFlowController.class);
 
@@ -168,7 +164,7 @@ public class TFFlowController {
                                   @ApiParam(value = "页码", required = true) @RequestParam Integer pageNumber,
                                   @ApiParam(value = "数量", required = true) @RequestParam Integer pageSize) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        return ResultUtil.ok(tfFlowService.flowApproveList(new Page<>(pageNumber, pageSize), startName, SystemConstant.getHeadOrUserSchoolId(), sysUser.getOrgId()));
+        return ResultUtil.ok(tfFlowService.flowApproveList(new Page<>(pageNumber, pageSize), startName, SystemConstant.getHeadOrUserSchoolId(), sysUser.getOrgId(), null));
     }
 
     @ApiOperation(value = "流程审批记录逻辑删除")
@@ -198,4 +194,12 @@ public class TFFlowController {
     public Result taskAll(@ApiParam(value = "流程id", required = true) @RequestParam String flowId) {
         return ResultUtil.ok(activitiService.getTaskAll(flowId));
     }
+
+    @ApiOperation(value = "获取所有流程节点待审批人")
+    @ApiResponses({@ApiResponse(code = 200, message = "常规信息", response = ResultUtil.class)})
+    @RequestMapping(value = "/task/approver/people_all", method = RequestMethod.POST)
+    public Result taskApproverAll(@ApiParam(value = "课程编码", required = false) @RequestParam(required = false) String courseCode,
+                                  @ApiParam(value = "流程节点id", required = false) @RequestParam(required = false) String taskId) {
+        return ResultUtil.ok(activitiService.taskApproverAll(courseCode, taskId));
+    }
 }

+ 1 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/WorkController.java

@@ -31,7 +31,7 @@ import java.util.Objects;
 @Api(tags = "工作台Controller")
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.work}")
-//@Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
+@Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
 public class WorkController {
 
     @Resource

+ 6 - 1
distributed-print/src/main/resources/application-dev.properties

@@ -55,6 +55,11 @@ aliyun.oss.accessKeySecret=97aBLBfkQR5mzCiQa82yWLAH57eUd8
 aliyun.oss.bucket=teachcloud-test
 aliyun.oss.url=http://${aliyun.oss.bucket}.${aliyun.oss.name}
 
+com.qmth.fss.public.config=oss://key:secret@teachcloud-print-dev-public.oss-api.qmth.com.cn
+com.qmth.fss.public.server=http://oss-file.qmth.com.cn/teachcloud-print-dev-public
+com.qmth.fss.private.config=oss://key:secret@teachcloud-print-dev-private.oss-api.qmth.com.cn
+com.qmth.fss.private.server=http://oss-file.qmth.com.cn/teachcloud-print-dev-private
+
 #\u7CFB\u7EDF\u914D\u7F6E
 sys.config.oss=true
 sys.config.attachmentType=.xlsx,.xls,.doc,.docx,.pdf,.jpg,.jpeg,.png,.html,.zip,.mp3,.wav,.dll,.exe,.ftl,.bpmn,.xml
@@ -82,7 +87,7 @@ org.center.orgQueryApi=/api/open/org/query
 #com.qmth.api.uri-prefix=/aaa
 #\u7EDF\u8BA1\u9875\u9762\u914D\u7F6E
 com.qmth.api.metrics-endpoint=/metrics-count
-com.qmth.api.global-auth=true
+com.qmth.api.global-auth=false
 #com.qmth.api.global-strict=false
 #com.qmth.api.global-rate-limit=1/5s
 

+ 4 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/UserDto.java

@@ -26,6 +26,10 @@ public class UserDto {
 
     private List<BasicCourse> courses;
 
+    public void setCode(String code) {
+        this.code = code;
+    }
+
     public String getId() {
         return id;
     }

+ 41 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/params/ApproveUserResult.java

@@ -0,0 +1,41 @@
+package com.qmth.teachcloud.common.bean.params;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.OrgTypeEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 审批人 result
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/8/17
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ApproveUserResult extends SysUser implements Serializable {
+
+    @ApiModelProperty(value = "机构名称")
+    private String orgName;
+
+    @ApiModelProperty(value = "机构类型")
+    private OrgTypeEnum orgType;
+
+    public String getOrgName() {
+        return orgName;
+    }
+
+    public void setOrgName(String orgName) {
+        this.orgName = orgName;
+    }
+
+    public OrgTypeEnum getOrgType() {
+        return orgType;
+    }
+
+    public void setOrgType(OrgTypeEnum orgType) {
+        this.orgType = orgType;
+    }
+}

+ 10 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/SysUserMapper.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.teachcloud.common.bean.dto.BlurryUserDto;
 import com.qmth.teachcloud.common.bean.dto.UserDto;
+import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
 import com.qmth.teachcloud.common.entity.SysUser;
 import org.apache.ibatis.annotations.Param;
 
@@ -35,5 +36,13 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
      * @param filter
      * @return
      */
-    List<SysUser> filterFlowPrivilege(@Param("schoolId") Long schoolId, @Param("orgIds") Set<Long> orgIds, @Param("filter") Boolean filter);
+    List<ApproveUserResult> filterFlowPrivilege(@Param("schoolId") Long schoolId, @Param("orgIds") Set<Long> orgIds, @Param("filter") Boolean filter);
+
+    /**
+     * 根据id获取
+     *
+     * @param id
+     * @return
+     */
+    public List<ApproveUserResult> findById(@Param("id") Long id);
 }

+ 26 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysUserService.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.teachcloud.common.bean.dto.BlurryUserDto;
 import com.qmth.teachcloud.common.bean.dto.LoginDto;
 import com.qmth.teachcloud.common.bean.dto.UserDto;
+import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
 import com.qmth.teachcloud.common.bean.params.UserSaveParams;
 import com.qmth.teachcloud.common.entity.SysUser;
 import org.springframework.util.LinkedMultiValueMap;
@@ -71,7 +72,7 @@ public interface SysUserService extends IService<SysUser> {
      * @param filter
      * @return
      */
-    List<SysUser> filterFlowPrivilege(Long schoolId, Set<Long> orgIds, Boolean filter);
+    List<ApproveUserResult> filterFlowPrivilege(Long schoolId, Set<Long> orgIds, Boolean filter);
 
     /**
      * 执行批量导入用户逻辑
@@ -81,4 +82,28 @@ public interface SysUserService extends IService<SysUser> {
      * @return 结果
      */
     Map<String, Object> executeSysUserImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map) throws NoSuchAlgorithmException;
+
+    /**
+     * 获取教研室主任审批人
+     *
+     * @param courseCode
+     * @return
+     */
+    public List<ApproveUserResult> findByDirectorApprove(String courseCode);
+
+    /**
+     * 获取院长审批人
+     *
+     * @param orgIds
+     * @return
+     */
+    public List<ApproveUserResult> findByPresidentApprove(List<Long> orgIds);
+
+    /**
+     * 根据id获取
+     *
+     * @param id
+     * @return
+     */
+    public List<ApproveUserResult> findById(Long id);
 }

+ 57 - 3
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

@@ -11,6 +11,7 @@ import com.qmth.teachcloud.common.bean.dto.BlurryUserDto;
 import com.qmth.teachcloud.common.bean.dto.LoginDto;
 import com.qmth.teachcloud.common.bean.dto.UserDto;
 import com.qmth.teachcloud.common.bean.dto.excel.SysUserImportDto;
+import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
 import com.qmth.teachcloud.common.bean.params.UserSaveParams;
 import com.qmth.teachcloud.common.bean.result.UserBatchDisposeResult;
 import com.qmth.teachcloud.common.contant.SpringContextHolder;
@@ -226,9 +227,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
         List<SysOrg> sysOrgList = sysOrgService.findByConnectByRootOrgId(basicCourse.getTeachingRoomId());
         Set<Long> orgIds = sysOrgList.stream().map(s -> s.getId()).collect(Collectors.toSet());
-        List<SysUser> sysUserList = sysUserService.filterFlowPrivilege(schoolId, orgIds, false);
+        List<ApproveUserResult> sysUserList = sysUserService.filterFlowPrivilege(schoolId, orgIds, false);
         List<BlurryUserDto> blurryUserDtoList = new ArrayList<>();
-        for (SysUser sysUser : sysUserList) {
+        for (ApproveUserResult sysUser : sysUserList) {
             blurryUserDtoList.add(new BlurryUserDto(sysUser.getId(), sysUser.getRealName()));
         }
         return blurryUserDtoList;
@@ -470,7 +471,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
      * @return
      */
     @Override
-    public List<SysUser> filterFlowPrivilege(Long schoolId, Set<Long> orgIds, Boolean filter) {
+    public List<ApproveUserResult> filterFlowPrivilege(Long schoolId, Set<Long> orgIds, Boolean filter) {
         return sysUserMapper.filterFlowPrivilege(schoolId, orgIds, filter);
     }
 
@@ -529,6 +530,59 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return map;
     }
 
+    /**
+     * 获取教研室主任审批人
+     *
+     * @param courseCode
+     * @return
+     */
+    @Override
+    public List<ApproveUserResult> findByDirectorApprove(String courseCode) {
+        Long schoolId = SystemConstant.getHeadOrUserSchoolId();
+        QueryWrapper<BasicCourse> basicCourseQueryWrapper = new QueryWrapper<>();
+        basicCourseQueryWrapper.lambda().eq(BasicCourse::getSchoolId, schoolId)
+                .eq(BasicCourse::getCode, courseCode);
+        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());
+        return sysUserService.filterFlowPrivilege(schoolId, orgIds, true);
+    }
+
+    /**
+     * 获取院长审批人
+     *
+     * @param orgIds
+     * @return
+     */
+    @Override
+    public List<ApproveUserResult> findByPresidentApprove(List<Long> orgIds) {
+        Long schoolId = SystemConstant.getHeadOrUserSchoolId();
+        Set<SysOrg> sysOrgSet = new HashSet<>();
+        for (Long l : orgIds) {
+            sysOrgSet.addAll(sysOrgService.findByConnectByParentId(l));
+        }
+        Set<Long> orgIdsSet = sysOrgSet.stream().map(s -> s.getId()).collect(Collectors.toSet());
+        return sysUserService.filterFlowPrivilege(schoolId, orgIdsSet, true);
+    }
+
+    /**
+     * 根据id获取
+     *
+     * @param id
+     * @return
+     */
+    @Override
+    public List<ApproveUserResult> findById(Long id) {
+        return null;
+    }
+
     /**
      * 批量处理用户信息帮助类
      *

+ 27 - 8
teachcloud-common/src/main/resources/mapper/SysUserMapper.xml

@@ -116,15 +116,25 @@
         </where>
     </select>
 
-    <select id="filterFlowPrivilege" resultType="com.qmth.teachcloud.common.entity.SysUser">
+    <sql id="approveUserResultHeaderCommon">
         select
-            DISTINCT su.*
-        from
-            sys_user su
-        join sys_user_role sur on
-            sur.user_id = su.id
-        join sys_role_privilege srp on
-            srp.role_id = sur.role_id
+            DISTINCT su.id,
+            su.school_id as schoolId,
+            su.login_name as loginName,
+            su.real_name as realName,
+            su.code,
+            su.mobile_number as mobileNumber,
+            su.org_id as orgId,
+            so.name as orgName,
+            so.`type` as orgType
+            from sys_user su
+            join sys_user_role sur on sur.user_id = su.id
+            join sys_role_privilege srp on srp.role_id = sur.role_id
+            join sys_org so on so.id = su.org_id
+    </sql>
+
+    <select id="filterFlowPrivilege" resultType="com.qmth.teachcloud.common.bean.params.ApproveUserResult">
+        <include refid="approveUserResultHeaderCommon" />
         <if test="filter != null and filter != '' and filter == 1">
             join(
             select
@@ -148,4 +158,13 @@
                </if>
            </where>
     </select>
+
+    <select id="findById" resultType="com.qmth.teachcloud.common.bean.params.ApproveUserResult">
+        <include refid="approveUserResultHeaderCommon" />
+        <where>
+            <if test="id != null and id != ''">
+                and su.id = #{id}
+            </if>
+        </where>
+    </select>
 </mapper>