Browse Source

查询本公司任务

xuefy 3 years ago
parent
commit
5a9bc8bb92

+ 29 - 20
flowable/src/main/java/com/huyi/flowable/api/FlowProcess.java

@@ -53,9 +53,10 @@ public class FlowProcess extends FlowableConfig {
      * @param sessionUserId    发起人
      * @param name             流程实例名称
      * @param businessKey      业务表主键
+     * @param companyId        公司id
      * @return
      */
-    public ProcessInstance startFlow(String processId, Map<String, Object> paras, String sessionUserId, String name, String businessKey){
+    public ProcessInstance startFlow(String processId, Map<String, Object> paras, String sessionUserId, String name, String businessKey, String companyId){
         //设置流程实例的发起人是当前用户
         Authentication.setAuthenticatedUserId(sessionUserId);
         // 获取流程构造器
@@ -64,6 +65,7 @@ public class FlowProcess extends FlowableConfig {
         ProcessInstance instance = processInstanceBuilder.name(name)                            // 流程实例标题
                                 .processDefinitionId(processId)
                                 .variables(paras)
+                                .tenantId(companyId)
                                 .businessKey(businessKey)                                       // 业务表主键
                                 .start();                                                       // 启动(即创建)流程实例
         Authentication.setAuthenticatedUserId(null); // 这个方法最终使用一个ThreadLocal类型的变量进行存储,也就是与当前的线程绑定,所以流程实例启动完毕之后,需要设置为null,防止多线程的时候出问题。
@@ -116,10 +118,6 @@ public class FlowProcess extends FlowableConfig {
      * @return
      */
     public BaseResult getMyStartProcint(String userId, Map<String, Object> param, int pageNum, int pageSize){
-        HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService // 历史相关Service
-                .createHistoricProcessInstanceQuery()
-                .startedBy(userId)
-                .orderByProcessInstanceStartTime().desc();
         PageHelper.startPage(pageNum, pageSize);
         Map map = new HashMap();
         map.put("userId", userId);
@@ -134,21 +132,32 @@ public class FlowProcess extends FlowableConfig {
         baseResult.setTotal(hpis.getTotal());
 
         baseResult.setData(hpis);
-//        if (param.get("excutionName") != null && !"".equals(param.get("excutionName"))) {
-//            historicProcessInstanceQuery.processInstanceNameLike("%" + param.get("excutionName") + "%");
-//        }
-//        if (param.get("processDefName") != null && !"".equals(param.get("processDefName"))) {
-//            historicProcessInstanceQuery.processDefinitionName(String.valueOf(param.get("processDefName")));
-//        }
-//
-//        List<HistoricProcessInstance> list = historicProcessInstanceQuery.listPage((pageNum - 1)*pageSize, pageSize);
-//
-//        Long total = historyService // 历史相关Service
-//                .createHistoricProcessInstanceQuery()
-//                .startedBy(userId).count();
-//        BaseResult baseResult = new BaseResult();
-//        baseResult.setData(list);
-//        baseResult.setTotal(total);
+        return baseResult;
+    }
+
+    /**
+     * 本公司所有历史任务
+     * @param companyId
+     * @param param
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    public BaseResult getMyCompanyTask(String companyId, Map<String, Object> param, int pageNum, int pageSize){
+        PageHelper.startPage(pageNum, pageSize);
+        Map map = new HashMap();
+        map.put("companyId", companyId);
+        if (param.get("excutionName") != null && !"".equals(param.get("excutionName"))) {
+            map.put("excutionName",param.get("excutionName"));
+        }
+        if (param.get("processDefName") != null && !"".equals(param.get("processDefName"))) {
+            map.put("processDefName",param.get("processDefName"));
+        }
+        Page<Map> hpis = taskMapper.getMyCompanyTask(map);
+        BaseResult baseResult = new BaseResult();
+        baseResult.setTotal(hpis.getTotal());
+
+        baseResult.setData(hpis);
         return baseResult;
     }
 

+ 29 - 3
flowable/src/main/java/com/huyi/flowable/controller/FlowController.java

@@ -214,13 +214,15 @@ public class FlowController {
     @RequestMapping(value = "strartFlow")
     @ResponseBody
     @Log
-    public BaseResult strartFlow(@RequestParam String menuId,
+    public BaseResult strartFlow(HttpServletRequest request,
+                                 @RequestParam String menuId,
                                  @RequestParam String companyId,
                                  @RequestParam String businessKey,
                                  @RequestParam String sessionUserId,
                                  @RequestParam String name,
                                  @RequestParam(value = "paras") String paras
     ){
+        LoginUser loginUser = tokenService.getUser(request);
         BaseResult result = new BaseResult();
         Map<String, Object> m = new HashMap<>();
         m.put("menuId", menuId);
@@ -249,7 +251,7 @@ public class FlowController {
         paras = paras.replaceAll("\\:,", "\\:null,");
         Map<String, Object> p = JSONObject.fromObject(paras);
         String processId = String.valueOf(conf.get("procdefId"));
-        ProcessInstance processInstance = flowProcess.startFlow(processId, p, sessionUserId, name, businessKey);
+        ProcessInstance processInstance = flowProcess.startFlow(processId, p, sessionUserId, name, businessKey, loginUser.getSysUser().getCompanyId());
         return result;
     }
 
@@ -278,6 +280,30 @@ public class FlowController {
     }
 
     /**
+     * 本公司历史任务
+     * @param pageNum   页码
+     * @param pageSize  每页体术
+     * @return BaseResult
+     */
+    @RequestMapping(value = "myCompanyTask")
+    @ResponseBody
+    @Log
+    public BaseResult getMyCompanyTask(HttpServletRequest request,
+                                     @RequestParam(value = "excutionName", required = false) String excutionName,
+                                     @RequestParam(value = "processDefName", required = false) String processDefName,
+                                     @RequestParam("pageNum") int pageNum,
+                                     @RequestParam("pageSize") int pageSize) throws Exception{
+        LoginUser loginUser = tokenService.getUser(request);
+        Map<String, Object> param = new HashMap<>();
+        param.put("excutionName", excutionName);
+        param.put("processDefName", processDefName);
+        if (StringUtils.isEmpty(String.valueOf(loginUser.getSysUser().getStaffCode()))){
+            throw new Exception("暂无绑定员工");
+        }
+        return flowProcess.getMyCompanyTask(loginUser.getSysUser().getCompanyId(), param, pageNum, pageSize);
+    }
+
+    /**
      * 终止流程
      * @param processInstanceId 流程实例id
      * @param reason            终止原因
@@ -431,6 +457,7 @@ public class FlowController {
                                     HttpServletRequest request
     )
             throws Exception {
+        System.out.println(System.currentTimeMillis() + "===completeTask");
         // 修改表数据方案待定 TODO
         System.out.println(formData);
         LoginUser user = tokenService.getUser(request);
@@ -529,7 +556,6 @@ public class FlowController {
 
         // 查询意见
         List<Comment> commentEntityList = taskService.getProcessInstanceComments(processId);
-
         for (Map<String, Object> data : resList) {
             for (Comment comment : commentEntityList) {
                 System.out.println(comment.getTaskId() + "   " + data.get("id"));

+ 5 - 0
flowable/src/main/java/com/huyi/flowable/mapper/TaskMapper.java

@@ -23,5 +23,10 @@ public interface TaskMapper {
      * */
     Page<Map<String, Object>> selectMyStartProcint(Map<String, Object> param);
 
+    /**
+     * 本公司的历史任务
+     * */
+    Page<Map<String, Object>> getMyCompanyTask(Map<String, Object> param);
+
 
 }

+ 26 - 0
flowable/src/main/java/com/huyi/flowable/mapper/TaskMapper.xml

@@ -115,4 +115,30 @@
         </if>
         ORDER BY RES.START_TIME_ DESC
     </select>
+
+    <select id="getMyCompanyTask" resultType="hashmap" parameterType="java.util.Map">
+        SELECT
+        DISTINCT
+        RES.ID_                   id,
+        RES.NAME_                 name,
+        RES.START_TIME_           startTime,
+        RES.END_TIME_             endTime,
+        RES.DELETE_REASON_        deleteReason,
+        DEF.KEY_ AS               processDefKey,
+        DEF.NAME_ AS              processDefinitionName,
+        DEF.VERSION_ AS           processDefVersion,
+        DEF.DEPLOYMENT_ID_ AS     deploymentId
+        FROM
+        ACT_HI_PROCINST RES
+        LEFT OUTER JOIN ACT_RE_PROCDEF DEF
+        ON RES.PROC_DEF_ID_ = DEF.ID_
+        WHERE RES.TENANT_ID_ = #{companyId}
+        <if test = "excutionName != null and excutionName != ''">
+            AND RES.NAME_ LIKE concat('%', #{excutionName} ,'%')
+        </if>
+        <if test = "processDefName != null and processDefName != ''">
+            AND DEF.NAME_ like concat('%', #{processDefName} ,'%')
+        </if>
+        ORDER BY RES.START_TIME_ DESC
+    </select>
 </mapper>