소스 검색

工作流分页及条件查询

yuedefeng 6 년 전
부모
커밋
7c19c8a8f9

+ 103 - 0
src/main/java/com/common/workflow/service/activiti/ActivitiService.java

@@ -18,6 +18,7 @@ import javax.servlet.http.HttpServletResponse;
 
 import com.common.workflow.service.dto.ActiHistoricTaskDTO;
 import com.common.workflow.service.dto.ActiMyTaskDTO;
+import com.common.workflow.service.dto.ActiPageResultDTO;
 import com.common.workflow.web.rest.vm.ActiCompleteVM;
 import com.common.workflow.web.rest.vm.MultiActiCompleteVM;
 import com.common.workflow.web.rest.vm.MultiOrgAuditVM;
@@ -71,6 +72,24 @@ public class ActivitiService {
         return processInstance.getProcessInstanceId();
     }
 
+    /**
+     * 启动流程
+     * @param businessKey 业务id
+     */
+    public String startProcesses(String processKey, String businessKey, String userNames, String result, String type, String supplierName) {
+
+        Map<String, Object> variables = new HashMap<String, Object>();
+        variables.put("businessKey", businessKey);
+        variables.put("recorder", userNames);
+        variables.put("result", result);
+        variables.put("type", type);
+        variables.put("supplierName", supplierName);
+
+        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processKey, variables);
+        System.out.println("流程启动成功,流程id:"+processInstance.getId());
+        return processInstance.getProcessInstanceId();
+    }
+
     /**
      *
      * <p>描述: 根据工作流Key, 用户id, 业务表Key 查询待办任务列表</p>
@@ -234,6 +253,41 @@ public class ActivitiService {
         return myTaskDTOS;
     }
 
+    public ActiPageResultDTO findAllTypePagingTasksWithCreateTimeByUserId(String userId, int pageIndex, int pageSize, String wfName, String type, String supplierName) {
+        TaskQuery taskQuery = taskService.createTaskQuery().taskCandidateOrAssigned(userId);
+        //按工作流名称查询
+        if (!wfName.isEmpty()) {
+            taskQuery = taskQuery.processDefinitionKeyIn(Arrays.asList(wfName.split(",")));
+        }
+        //按分类查询
+        if (!type.isEmpty()) {
+            taskQuery = taskQuery.processVariableValueEquals("type", type);
+        }
+        //按供应商名称查询
+        if (!supplierName.isEmpty()) {
+            taskQuery = taskQuery.processVariableValueLikeIgnoreCase("supplierName", "%"+supplierName +"%");
+        }
+        long taskTotal = taskQuery.count();
+
+        List<ActiMyTaskDTO> myTaskDTOS = new ArrayList<>();
+        List<Task> resultTasks = taskQuery.orderByTaskCreateTime().desc().listPage((pageIndex-1)*pageSize, pageSize);
+
+        for (Task myTask : resultTasks) {
+            ActiMyTaskDTO myTaskDTO = new ActiMyTaskDTO();
+            myTaskDTO.setProcessDefinitionId(myTask.getProcessDefinitionId());
+            myTaskDTO.setBusinessKey(taskService.getVariable(myTask.getId(), "businessKey").toString());
+            myTaskDTO.setWorkflowId(myTask.getProcessInstanceId());
+            myTaskDTO.setCreateTime(myTask.getCreateTime().getTime());
+            myTaskDTO.setTaskName(myTask.getName());
+            myTaskDTOS.add(myTaskDTO);
+        }
+
+        ActiPageResultDTO pageResultDTO = new ActiPageResultDTO();
+        pageResultDTO.setTotal(taskTotal);
+        pageResultDTO.setTaskDTOList(myTaskDTOS);
+        return pageResultDTO;
+    }
+
     /**
      *
      * <p>描述: 根据工作流Key 和 用户id查询已办任务列表</p>
@@ -301,6 +355,55 @@ public class ActivitiService {
 
     }
 
+    public ActiPageResultDTO findAllTypePagingTaskHistWithCreateTimeByUserId(String userId, int pageIndex, int pageSize, String wfName, String type, String supplierName) {
+        HistoricTaskInstanceQuery taskInstanceQuery = historyService.createHistoricTaskInstanceQuery().taskAssignee(userId);
+        //按工作流名称查询
+        if (!wfName.isEmpty()) {
+            taskInstanceQuery = taskInstanceQuery.processDefinitionKeyIn(Arrays.asList(wfName.split(",")));
+        }
+        //按分类查询
+        if (!type.isEmpty()) {
+            taskInstanceQuery = taskInstanceQuery.processVariableValueEquals("type", type);
+        }
+        //按供应商名称查询
+        if (!supplierName.isEmpty()) {
+            taskInstanceQuery = taskInstanceQuery.processVariableValueLike("supplierName", supplierName);
+        }
+        //查询总条数
+        long taskTotal = taskInstanceQuery.count();
+        //查询分页
+        List<HistoricTaskInstance>  hisTaskList = taskInstanceQuery.orderByTaskCreateTime().desc()
+            .listPage((pageIndex-1)*pageSize, pageSize);
+        List<ActiMyTaskDTO> myTaskDTOS = new ArrayList<>();
+
+        for (HistoricTaskInstance myTask : hisTaskList) {
+            ActiMyTaskDTO myTaskDTO = new ActiMyTaskDTO();
+
+            myTaskDTO.setProcessDefinitionId(myTask.getProcessDefinitionId());
+            myTaskDTO.setTaskName(myTask.getName());
+            myTaskDTO.setWorkflowId(myTask.getProcessInstanceId());
+            myTaskDTO.setCreateTime(myTask.getCreateTime().getTime());
+
+            List<HistoricVariableInstance> varList = historyService.createHistoricVariableInstanceQuery()
+                .processInstanceId(myTask.getProcessInstanceId())
+                .list();
+
+            for(HistoricVariableInstance hisvar : varList) {
+                if (hisvar.getVariableName().equals("businessKey")) {
+                    myTaskDTO.setBusinessKey(hisvar.getValue().toString());
+                    break;
+                }
+            }
+            myTaskDTOS.add(myTaskDTO);
+        }
+
+        ActiPageResultDTO pageResultDTO = new ActiPageResultDTO();
+        pageResultDTO.setTotal(taskTotal);
+        pageResultDTO.setTaskDTOList(myTaskDTOS);
+        return pageResultDTO;
+    }
+
+
 
     /**
      * 查询当前用户的待办任务

+ 18 - 0
src/main/java/com/common/workflow/service/dto/ActiMyTaskDTO.java

@@ -4,6 +4,8 @@ package com.common.workflow.service.dto;
  * Created by gyue on 2019-05-28.
  */
 public class ActiMyTaskDTO {
+    private String processDefinitionId;
+    private String taskName;
     private String businessKey;
     private String workflowId;
     private long createTime;
@@ -31,4 +33,20 @@ public class ActiMyTaskDTO {
     public void setWorkflowId(String workflowId) {
         this.workflowId = workflowId;
     }
+
+    public String getProcessDefinitionId() {
+        return processDefinitionId;
+    }
+
+    public void setProcessDefinitionId(String processDefinitionId) {
+        this.processDefinitionId = processDefinitionId;
+    }
+
+    public String getTaskName() {
+        return taskName;
+    }
+
+    public void setTaskName(String taskName) {
+        this.taskName = taskName;
+    }
 }

+ 28 - 0
src/main/java/com/common/workflow/service/dto/ActiPageResultDTO.java

@@ -0,0 +1,28 @@
+package com.common.workflow.service.dto;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by gyue on 2019-07-18.
+ */
+public class ActiPageResultDTO {
+    private long total = 0;
+    private List<ActiMyTaskDTO> taskDTOList = new ArrayList();
+
+    public long getTotal() {
+        return total;
+    }
+
+    public void setTotal(long total) {
+        this.total = total;
+    }
+
+    public List<ActiMyTaskDTO> getTaskDTOList() {
+        return taskDTOList;
+    }
+
+    public void setTaskDTOList(List<ActiMyTaskDTO> taskDTOList) {
+        this.taskDTOList = taskDTOList;
+    }
+}

+ 24 - 4
src/main/java/com/common/workflow/web/rest/ActivitiResource.java

@@ -3,10 +3,8 @@ package com.common.workflow.web.rest;
 import com.common.workflow.service.activiti.ActivitiService;
 import com.common.workflow.service.dto.ActiHistoricTaskDTO;
 import com.common.workflow.service.dto.ActiMyTaskDTO;
-import com.common.workflow.web.rest.vm.ActiCompleteVM;
-import com.common.workflow.web.rest.vm.ActiMyTaskVM;
-import com.common.workflow.web.rest.vm.ActiProcessVM;
-import com.common.workflow.web.rest.vm.MultiActiCompleteVM;
+import com.common.workflow.service.dto.ActiPageResultDTO;
+import com.common.workflow.web.rest.vm.*;
 import org.activiti.engine.task.Task;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -39,6 +37,13 @@ public class ActivitiResource {
         String processInstanceId = activitiService.startProcesses(actiVm.getProcessKey(), actiVm.getBusinessKey(), actiVm.getUserNames(), actiVm.getResult());
         return ResponseEntity.ok(processInstanceId);
     }
+    @PostMapping("/start-process-bytype")
+    public ResponseEntity<String> startProcessByType(@Valid @RequestBody ActiProcessVM actiVm) {
+        String processInstanceId = activitiService.startProcesses(
+            actiVm.getProcessKey(), actiVm.getBusinessKey(), actiVm.getUserNames(), actiVm.getResult(), actiVm.getType(), actiVm.getSupplierName()
+        );
+        return ResponseEntity.ok(processInstanceId);
+    }
 
     @PostMapping("/task-complete")
     public ResponseEntity<String> taskComplete(@Valid @RequestBody ActiCompleteVM actiVm) {
@@ -63,12 +68,27 @@ public class ActivitiResource {
         return ResponseEntity.ok(actiMyTaskDTOS);
     }
 
+
     @PostMapping("/my-finished-tasks-with-time")
     public ResponseEntity<List<ActiMyTaskDTO>> findTaskHistWithCreateTimeByUserId(@Valid @RequestBody ActiMyTaskVM actiVm) {
         List<ActiMyTaskDTO> actiMyTaskDTOS = activitiService.findTaskHistWithCreateTimeByUserId(actiVm.getProcessKey(), actiVm.getUserId());
         return ResponseEntity.ok(actiMyTaskDTOS);
     }
 
+    @PostMapping("/my-all-type-paging-tasks-with-time")
+    public ResponseEntity<ActiPageResultDTO> getAllTypePagingTasksWithTime(@Valid @RequestBody ActiMyPagingTaskVM actiVm) {
+        ActiPageResultDTO pageResultDTO = activitiService.findAllTypePagingTasksWithCreateTimeByUserId(
+            actiVm.getUserId(), actiVm.getPageIndex(), actiVm.getPageSize(), actiVm.getWfName(), actiVm.getType(), actiVm.getSupplierName() );
+        return ResponseEntity.ok(pageResultDTO);
+    }
+
+    @PostMapping("/my-all-type-paging-finished-tasks-with-time")
+    public ResponseEntity<ActiPageResultDTO> findAllTypePagingTaskHistWithCreateTimeByUserId(@Valid @RequestBody ActiMyPagingTaskVM actiVm) {
+        ActiPageResultDTO pageResultDTO = activitiService.findAllTypePagingTaskHistWithCreateTimeByUserId(
+            actiVm.getUserId(), actiVm.getPageIndex(), actiVm.getPageSize(), actiVm.getWfName(), actiVm.getType(), actiVm.getSupplierName() );
+        return ResponseEntity.ok(pageResultDTO);
+    }
+
     @PostMapping("/my-tasks-finished")
     public ResponseEntity<String> getMyTasksFinished(@Valid @RequestBody ActiMyTaskVM actiVm) {
         String businessKeys = activitiService.findTaskHistByUserId(actiVm.getProcessKey(), actiVm.getUserId());

+ 61 - 0
src/main/java/com/common/workflow/web/rest/vm/ActiMyPagingTaskVM.java

@@ -0,0 +1,61 @@
+package com.common.workflow.web.rest.vm;
+
+/**
+ * Created by gyue on 2019-07-18.
+ */
+public class ActiMyPagingTaskVM {
+    private String userId;
+    private int pageIndex;
+    private int pageSize;
+    private String wfName;
+    private String type;
+    private String supplierName;
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public int getPageIndex() {
+        return pageIndex;
+    }
+
+    public void setPageIndex(int pageIndex) {
+        this.pageIndex = pageIndex;
+    }
+
+    public int getPageSize() {
+        return pageSize;
+    }
+
+    public void setPageSize(int pageSize) {
+        this.pageSize = pageSize;
+    }
+
+    public String getWfName() {
+        return wfName;
+    }
+
+    public void setWfName(String wfName) {
+        this.wfName = wfName;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getSupplierName() {
+        return supplierName;
+    }
+
+    public void setSupplierName(String supplierName) {
+        this.supplierName = supplierName;
+    }
+}

+ 20 - 0
src/main/java/com/common/workflow/web/rest/vm/ActiProcessVM.java

@@ -13,6 +13,10 @@ public class ActiProcessVM {
 
     private String result;
 
+    private String type;
+
+    private String supplierName;
+
     private String ProcessInstanceId;
 
     public String getProcessKey() {
@@ -54,4 +58,20 @@ public class ActiProcessVM {
     public void setResult(String result) {
         this.result = result;
     }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getSupplierName() {
+        return supplierName;
+    }
+
+    public void setSupplierName(String supplierName) {
+        this.supplierName = supplierName;
+    }
 }

+ 1 - 1
src/main/resources/config/application-dev.yml

@@ -37,7 +37,7 @@ spring:
     datasource:
         type: com.zaxxer.hikari.HikariDataSource
         # url: jdbc:mysql://60.30.245.229:3306/activiti?useUnicode=true&characterEncoding=utf8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC
-        url: jdbc:mysql://47.92.212.59:3306/activiti?useUnicode=true&characterEncoding=utf8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC
+        url: jdbc:mysql://47.92.212.59:3306/activiti-supplier?useUnicode=true&characterEncoding=utf8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC
         username: root
         password: zks123456
         hikari: