| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321 |
- package com.java110.common.smo.impl;
- import com.java110.core.base.smo.BaseServiceSMO;
- import com.java110.core.smo.audit.IAuditUserInnerServiceSMO;
- import com.java110.core.smo.complaint.IComplaintInnerServiceSMO;
- import com.java110.core.smo.purchaseApplyUser.IPurchaseApplyUserInnerServiceSMO;
- import com.java110.dto.PageDto;
- import com.java110.dto.auditMessage.AuditMessageDto;
- import com.java110.dto.auditUser.AuditUserDto;
- import com.java110.dto.purchaseApply.PurchaseApplyDto;
- import com.java110.entity.audit.AuditUser;
- import com.java110.utils.util.Assert;
- import com.java110.utils.util.DateUtil;
- import com.java110.utils.util.StringUtil;
- 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.history.HistoricTaskInstanceQuery;
- import org.activiti.engine.impl.identity.Authentication;
- import org.activiti.engine.query.Query;
- import org.activiti.engine.runtime.ProcessInstance;
- import org.activiti.engine.task.Comment;
- import org.activiti.engine.task.Task;
- import org.activiti.engine.task.TaskQuery;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RestController;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- @RestController
- public class PurchaseApplyUserInnerServiceSMOImpl extends BaseServiceSMO implements IPurchaseApplyUserInnerServiceSMO {
- @Autowired
- private ProcessEngine processEngine;
- @Autowired
- private RuntimeService runtimeService;
- @Autowired
- private TaskService taskService;
- @Autowired
- private IComplaintInnerServiceSMO complaintInnerServiceSMOImpl;
- @Autowired
- private IAuditUserInnerServiceSMO auditUserInnerServiceSMOImpl;
- /**
- * 启动流程
- *
- * @return
- */
- public PurchaseApplyDto startProcess(@RequestBody PurchaseApplyDto purchaseApplyDto) {
- //将信息加入map,以便传入流程中
- Map<String, Object> variables = new HashMap<String, Object>();
- variables.put("purchaseApplyDto", purchaseApplyDto);
- //variables.put("userId", purchaseApplyDto.getCurrentUserId());
- //开启流程
- ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("resourceEntry", purchaseApplyDto.getApplyOrderId(), variables);
- // //将得到的实例流程id值赋给之前设置的变量
- // String processInstanceId = processInstance.getId();
- // // System.out.println("流程开启成功.......实例流程id:" + processInstanceId);
- //
- // purchaseApplyDto.setProcessInstanceId(processInstanceId);
- // autoFinishFirstTask(purchaseApplyDto);
- return purchaseApplyDto;
- }
- /**
- * 自动提交第一步
- */
- private void autoFinishFirstTask(PurchaseApplyDto purchaseApplyDto) {
- AuditUserDto auditUserDto = new AuditUserDto();
- auditUserDto.setStoreId(purchaseApplyDto.getStoreId());
- auditUserDto.setObjCode("resourceEntry");
- auditUserDto.setAuditLink("809001");
- List<AuditUserDto> auditUserDtos = auditUserInnerServiceSMOImpl.queryAuditUsers(auditUserDto);
- if(auditUserDtos.size() == 0 || auditUserDtos == null){
- throw new IllegalArgumentException("未找的采购部门审核人员信息");
- }
- Task task = null;
- TaskQuery query = taskService.createTaskQuery().taskCandidateOrAssigned(auditUserDtos.get(0).getUserId()).active();
- List<Task> todoList = query.list();//获取申请人的待办任务列表
- for (Task tmp : todoList) {
- if (tmp.getProcessInstanceId().equals(purchaseApplyDto.getProcessInstanceId())) {
- task = tmp;//获取当前流程实例,当前申请人的待办任务
- break;
- }
- }
- Assert.notNull(task, "未找到当前用户任务userId = " + purchaseApplyDto.getCurrentUserId());
- purchaseApplyDto.setTaskId(task.getId());
- purchaseApplyDto.setAuditCode("10000");
- purchaseApplyDto.setAuditMessage("提交");
- completeTask(purchaseApplyDto);
- }
- /**
- * 查询用户任务数
- *
- * @param user
- * @return
- */
- public long getUserTaskCount(@RequestBody AuditUser user) {
- TaskService taskService = processEngine.getTaskService();
- TaskQuery query = taskService.createTaskQuery().processDefinitionKey("resourceEnter");
- query.taskAssignee(user.getUserId());
- return query.count();
- }
- /**
- * 获取用户任务
- *
- * @param user 用户信息
- */
- public List<PurchaseApplyDto> getUserTasks(@RequestBody AuditUser user) {
- TaskService taskService = processEngine.getTaskService();
- TaskQuery query = taskService.createTaskQuery().processDefinitionKey("resourceEnter");
- ;
- query.taskAssignee(user.getUserId());
- query.orderByTaskCreateTime().desc();
- List<Task> 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<>();
- Map<String, String> taskBusinessKeyMap = new HashMap<>();
- for (Task task : list) {
- 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());
- }
- if (complaintIds == null || complaintIds.size() == 0) {
- return new ArrayList<>();
- }
- //查询 投诉信息
- PurchaseApplyDto purchaseApplyDto = new PurchaseApplyDto();
- List<PurchaseApplyDto> purchaseApplyDtos = 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 purchaseApplyDtos;
- }
- /**
- * 查询用户任务数
- *
- * @param user
- * @return
- */
- public long getUserHistoryTaskCount(@RequestBody AuditUser user) {
- HistoryService historyService = processEngine.getHistoryService();
- // Query query = historyService.createHistoricTaskInstanceQuery()
- // .processDefinitionKey("complaint")
- // .taskAssignee(user.getUserId());
- HistoricTaskInstanceQuery historicTaskInstanceQuery = historyService.createHistoricTaskInstanceQuery()
- .processDefinitionKey("resourceEnter")
- .taskAssignee(user.getUserId());
- if(!StringUtil.isEmpty(user.getAuditLink()) && "START".equals(user.getAuditLink())){
- historicTaskInstanceQuery.taskName("resourceEnter");
- }else if(!StringUtil.isEmpty(user.getAuditLink()) && "AUDIT".equals(user.getAuditLink())){
- historicTaskInstanceQuery.taskName("resourceEnterDealUser");
- }
- Query query = historicTaskInstanceQuery;
- return query.count();
- }
- /**
- * 获取用户审批的任务
- *
- * @param user 用户信息
- */
- public List<PurchaseApplyDto> getUserHistoryTasks(@RequestBody AuditUser user) {
- HistoryService historyService = processEngine.getHistoryService();
- HistoricTaskInstanceQuery historicTaskInstanceQuery = historyService.createHistoricTaskInstanceQuery()
- .processDefinitionKey("resourceEnter")
- .taskAssignee(user.getUserId()) ;
- if(!StringUtil.isEmpty(user.getAuditLink()) && "START".equals(user.getAuditLink())){
- historicTaskInstanceQuery.taskName("resourceEnter");
- }else if(!StringUtil.isEmpty(user.getAuditLink()) && "AUDIT".equals(user.getAuditLink())){
- historicTaskInstanceQuery.taskName("resourceEnterDealUser");
- }
- Query query = historicTaskInstanceQuery.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 null;
- }
- public boolean completeTask(@RequestBody PurchaseApplyDto purchaseApplyDto) {
- TaskService taskService = processEngine.getTaskService();
- Task task = taskService.createTaskQuery().taskId(purchaseApplyDto.getTaskId()).singleResult();
- String processInstanceId = task.getProcessInstanceId();
- Authentication.setAuthenticatedUserId(purchaseApplyDto.getCurrentUserId());
- taskService.addComment(purchaseApplyDto.getTaskId(), processInstanceId, purchaseApplyDto.getAuditMessage());
- Map<String, Object> variables = new HashMap<String, Object>();
- variables.put("auditCode", purchaseApplyDto.getAuditCode());
- variables.put("currentUserId", purchaseApplyDto.getCurrentUserId());
- //taskService.setAssignee(complaintDto.getTaskId(),complaintDto.getCurrentUserId());
- //taskService.addCandidateUser(complaintDto.getTaskId(), complaintDto.getCurrentUserId());
- //taskService.claim(complaintDto.getTaskId(), complaintDto.getCurrentUserId());
- taskService.complete(purchaseApplyDto.getTaskId(), variables);
- taskService.setVariable(purchaseApplyDto.getTaskId(),"purchaseApplyDto",purchaseApplyDto);
- ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
- if (pi == null) {
- return true;
- }
- return false;
- }
- public List<AuditMessageDto> getAuditMessage(@RequestBody PurchaseApplyDto purchaseApplyDto) {
- TaskService taskService = processEngine.getTaskService();
- Task task = taskService.createTaskQuery().taskId(purchaseApplyDto.getTaskId()).singleResult();
- String processInstanceId = task.getProcessInstanceId();
- List<Comment> comments = taskService.getProcessInstanceComments(processInstanceId);
- List<AuditMessageDto> auditMessageDtos = new ArrayList<>();
- if (comments == null || comments.size() < 1) {
- return auditMessageDtos;
- }
- AuditMessageDto messageDto = null;
- for (Comment comment : comments) {
- messageDto = new AuditMessageDto();
- messageDto.setCreateTime(comment.getTime());
- messageDto.setUserId(comment.getUserId());
- messageDto.setMessage(comment.getFullMessage());
- }
- return auditMessageDtos;
- }
- 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;
- }
- }
|