From 50e80ce86a51c04b82e75efbd76a50a0227d6db4 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期四, 07 十一月 2019 13:44:28 +0800
Subject: [PATCH] 优化
---
CommonService/src/main/java/com/java110/common/smo/impl/ComplaintUserInnerServiceSMOImpl.java | 164 ++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 152 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 08495be..ba10e06 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,24 @@
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.FeeDto;
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.HistoricActivityInstance;
+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 +45,9 @@
@Autowired
private TaskService taskService;
+ @Autowired
+ private IComplaintInnerServiceSMO complaintInnerServiceSMOImpl;
+
/**
* 鍚姩娴佺▼
@@ -48,6 +58,7 @@
//灏嗕俊鎭姞鍏ap,浠ヤ究浼犲叆娴佺▼涓�
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("complaintDto", complaintDto);
+ variables.put("userId", complaintDto.getCurrentUserId());
//寮�鍚祦绋�
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("complaint", complaintDto.getComplaintId(), variables);
//灏嗗緱鍒扮殑瀹炰緥娴佺▼id鍊艰祴缁欎箣鍓嶈缃殑鍙橀噺
@@ -55,8 +66,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);
+
}
/**
@@ -85,22 +118,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();
@@ -110,6 +215,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();
@@ -141,4 +250,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