From 8936415a62627e4552dc600e26d92039b26cedfa Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期四, 30 一月 2020 15:10:21 +0800
Subject: [PATCH] 加入费用项处理页面

---
 CommonService/src/main/java/com/java110/common/smo/impl/ComplaintUserInnerServiceSMOImpl.java |  161 +++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 149 insertions(+), 12 deletions(-)

diff --git a/CommonService/src/main/java/com/java110/common/smo/impl/ComplaintUserInnerServiceSMOImpl.java b/CommonService/src/main/java/com/java110/common/smo/impl/ComplaintUserInnerServiceSMOImpl.java
index 12fae14..cefd7b8 100644
--- a/CommonService/src/main/java/com/java110/common/smo/impl/ComplaintUserInnerServiceSMOImpl.java
+++ b/CommonService/src/main/java/com/java110/common/smo/impl/ComplaintUserInnerServiceSMOImpl.java
@@ -2,17 +2,22 @@
 
 
 import com.java110.core.base.smo.BaseServiceSMO;
-import com.java110.core.smo.complaint.IComplaintUserInnerServiceSMO;
+import com.java110.core.smo.complaint.IComplaintInnerServiceSMO;
+import com.java110.core.smo.complaintUser.IComplaintUserInnerServiceSMO;
 import com.java110.dto.PageDto;
 import com.java110.dto.auditMessage.AuditMessageDto;
 import com.java110.dto.complaint.ComplaintDto;
 import com.java110.entity.audit.AuditUser;
+import com.java110.utils.util.Assert;
+import org.activiti.engine.HistoryService;
 import org.activiti.engine.ProcessEngine;
 import org.activiti.engine.RuntimeService;
 import org.activiti.engine.TaskService;
+import org.activiti.engine.history.HistoricProcessInstance;
+import org.activiti.engine.history.HistoricTaskInstance;
 import org.activiti.engine.impl.identity.Authentication;
+import org.activiti.engine.query.Query;
 import org.activiti.engine.runtime.ProcessInstance;
-import org.activiti.engine.runtime.ProcessInstanceQuery;
 import org.activiti.engine.task.Comment;
 import org.activiti.engine.task.Task;
 import org.activiti.engine.task.TaskQuery;
@@ -38,6 +43,9 @@
     @Autowired
     private TaskService taskService;
 
+    @Autowired
+    private IComplaintInnerServiceSMO complaintInnerServiceSMOImpl;
+
 
     /**
      * 鍚姩娴佺▼
@@ -56,8 +64,30 @@
         // System.out.println("娴佺▼寮�鍚垚鍔�.......瀹炰緥娴佺▼id:" + processInstanceId);
 
         complaintDto.setProcessInstanceId(processInstanceId);
-
+        //绗竴涓妭鐐硅嚜鍔ㄦ彁浜�
+        autoFinishFirstTask(complaintDto);
         return complaintDto;
+    }
+
+    /**
+     * 鑷姩鎻愪氦绗竴姝�
+     */
+    private void autoFinishFirstTask(ComplaintDto complaintDto) {
+        Task task = null;
+        TaskQuery query = taskService.createTaskQuery().taskCandidateOrAssigned(complaintDto.getCurrentUserId()).active();
+        List<Task> todoList = query.list();//鑾峰彇鐢宠浜虹殑寰呭姙浠诲姟鍒楄〃
+        for (Task tmp : todoList) {
+            if (tmp.getProcessInstanceId().equals(complaintDto.getProcessInstanceId())) {
+                task = tmp;//鑾峰彇褰撳墠娴佺▼瀹炰緥锛屽綋鍓嶇敵璇蜂汉鐨勫緟鍔炰换鍔�
+                break;
+            }
+        }
+        Assert.notNull(task, "鏈壘鍒板綋鍓嶇敤鎴蜂换鍔serId = " + complaintDto.getCurrentUserId());
+        complaintDto.setTaskId(task.getId());
+        complaintDto.setAuditCode("10000");
+        complaintDto.setAuditMessage("鎻愪氦");
+        completeTask(complaintDto);
+
     }
 
     /**
@@ -86,22 +116,94 @@
         query.orderByTaskCreateTime().desc();
         List<Task> list = null;
         if (user.getPage() != PageDto.DEFAULT_PAGE) {
-            list = query.listPage(user.getPage(), user.getRow());
+            list = query.listPage((user.getPage() - 1) * user.getRow(), user.getRow());
         } else {
             list = query.list();
         }
 
-        List<ComplaintDto> complaintDtos = new ArrayList<>();
-
+        List<String> complaintIds = new ArrayList<>();
+        Map<String, String> taskBusinessKeyMap = new HashMap<>();
         for (Task task : list) {
-            String id = task.getId();
-            //System.out.println("tasks:" + JSONObject.toJSONString(task));
-            ComplaintDto complaintDto = (ComplaintDto) taskService.getVariable(id, "complaintDto");
-            complaintDto.setTaskId(id);
-            complaintDtos.add(complaintDto);
+            String processInstanceId = task.getProcessInstanceId();
+            //3.浣跨敤娴佺▼瀹炰緥锛屾煡璇�
+            ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
+            //4.浣跨敤娴佺▼瀹炰緥瀵硅薄鑾峰彇BusinessKey
+            String business_key = pi.getBusinessKey();
+            complaintIds.add(business_key);
+            taskBusinessKeyMap.put(business_key, task.getId());
         }
-        return complaintDtos;
+
+        if (complaintIds == null || complaintIds.size() == 0) {
+            return new ArrayList<>();
+        }
+
+        //鏌ヨ 鎶曡瘔淇℃伅
+        ComplaintDto complaintDto = new ComplaintDto();
+        complaintDto.setStoreId(user.getStoreId());
+        complaintDto.setCommunityId(user.getCommunityId());
+        complaintDto.setComplaintIds(complaintIds.toArray(new String[complaintIds.size()]));
+        List<ComplaintDto> tmpComplaintDtos = complaintInnerServiceSMOImpl.queryComplaints(complaintDto);
+
+        for (ComplaintDto tmpComplaintDto : tmpComplaintDtos) {
+            tmpComplaintDto.setTaskId(taskBusinessKeyMap.get(tmpComplaintDto.getComplaintId()));
+        }
+        return tmpComplaintDtos;
     }
+
+
+    /**
+     * 鏌ヨ鐢ㄦ埛浠诲姟鏁�
+     *
+     * @param user
+     * @return
+     */
+    public long getUserHistoryTaskCount(@RequestBody AuditUser user) {
+        HistoryService historyService = processEngine.getHistoryService();
+        Query query = historyService.createHistoricTaskInstanceQuery()
+                .processDefinitionKey("complaint")
+                .taskAssignee(user.getUserId());
+        return query.count();
+    }
+
+    /**
+     * 鑾峰彇鐢ㄦ埛瀹℃壒鐨勪换鍔�
+     *
+     * @param user 鐢ㄦ埛淇℃伅
+     */
+    public List<ComplaintDto> getUserHistoryTasks(@RequestBody AuditUser user) {
+        HistoryService historyService = processEngine.getHistoryService();
+        Query query = historyService.createHistoricTaskInstanceQuery()
+                .processDefinitionKey("complaint")
+                .taskAssignee(user.getUserId())
+                .orderByHistoricTaskInstanceStartTime()
+                .desc();
+
+        List<HistoricTaskInstance> list = null;
+        if (user.getPage() != PageDto.DEFAULT_PAGE) {
+            list = query.listPage((user.getPage() - 1) * user.getRow(), user.getRow());
+        } else {
+            list = query.list();
+        }
+
+        List<String> complaintIds = new ArrayList<>();
+        for (HistoricTaskInstance task : list) {
+            String processInstanceId = task.getProcessInstanceId();
+            //3.浣跨敤娴佺▼瀹炰緥锛屾煡璇�
+            HistoricProcessInstance pi = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
+            //4.浣跨敤娴佺▼瀹炰緥瀵硅薄鑾峰彇BusinessKey
+            String business_key = pi.getBusinessKey();
+            complaintIds.add(business_key);
+        }
+
+        //鏌ヨ 鎶曡瘔淇℃伅
+        ComplaintDto complaintDto = new ComplaintDto();
+        complaintDto.setStoreId(user.getStoreId());
+        complaintDto.setCommunityId(user.getCommunityId());
+        complaintDto.setComplaintIds(complaintIds.toArray(new String[complaintIds.size()]));
+        List<ComplaintDto> tmpComplaintDtos = complaintInnerServiceSMOImpl.queryComplaints(complaintDto);
+        return tmpComplaintDtos;
+    }
+
 
     public boolean completeTask(@RequestBody ComplaintDto complaintDto) {
         TaskService taskService = processEngine.getTaskService();
@@ -111,6 +213,10 @@
         taskService.addComment(complaintDto.getTaskId(), processInstanceId, complaintDto.getAuditMessage());
         Map<String, Object> variables = new HashMap<String, Object>();
         variables.put("auditCode", complaintDto.getAuditCode());
+        variables.put("currentUserId", complaintDto.getCurrentUserId());
+        //taskService.setAssignee(complaintDto.getTaskId(),complaintDto.getCurrentUserId());
+        //taskService.addCandidateUser(complaintDto.getTaskId(), complaintDto.getCurrentUserId());
+        //taskService.claim(complaintDto.getTaskId(), complaintDto.getCurrentUserId());
         taskService.complete(complaintDto.getTaskId(), variables);
 
         ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
@@ -142,4 +248,35 @@
     }
 
 
+    public ProcessEngine getProcessEngine() {
+        return processEngine;
+    }
+
+    public void setProcessEngine(ProcessEngine processEngine) {
+        this.processEngine = processEngine;
+    }
+
+    public RuntimeService getRuntimeService() {
+        return runtimeService;
+    }
+
+    public void setRuntimeService(RuntimeService runtimeService) {
+        this.runtimeService = runtimeService;
+    }
+
+    public TaskService getTaskService() {
+        return taskService;
+    }
+
+    public void setTaskService(TaskService taskService) {
+        this.taskService = taskService;
+    }
+
+    public IComplaintInnerServiceSMO getComplaintInnerServiceSMOImpl() {
+        return complaintInnerServiceSMOImpl;
+    }
+
+    public void setComplaintInnerServiceSMOImpl(IComplaintInnerServiceSMO complaintInnerServiceSMOImpl) {
+        this.complaintInnerServiceSMOImpl = complaintInnerServiceSMOImpl;
+    }
 }

--
Gitblit v1.8.0