package com.test.activiti.service.impl;
import com.test.activiti.listener.MyExecutionListener;
import com.test.activiti.service.IMyAppService;
import com.test.common.core.page.TableDataInfo;
import com.test.system.domain.SysUser;
import com.google.common.collect.Lists;
import com.sun.javafx.collections.MappingChange;
import org.activiti.engine.HistoryService;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.runtime.ProcessInstance;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.activation.MailcapCommandMap;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class MyAppService implements IMyAppService {
@Autowired
private RepositoryService repositoryService;
@Autowired
private RuntimeService runtimeService;
@Autowired
private TaskService taskService;
@Autowired
private HistoryService historyService;
@Autowired
private MyExecutionListener myExecutionListener;
@Override
public TableDataInfo myApplyList(Integer pageNum, Integer pageSize) {
TableDataInfo tableDataInfo = new TableDataInfo();
Subject subject = SecurityUtils.getSubject();
SysUser principal = (SysUser) subject.getPrincipal();
//查询该用户的发起流程
List <HistoricProcessInstance> list = historyService.createHistoricProcessInstanceQuery()
.startedBy(principal.getUserName())
.listPage(pageNum - 1, pageSize);
Long count = historyService.createHistoricProcessInstanceQuery()
.startedBy(principal.getUserName())
.count();
List <Map <String, Object>> mapList = new ArrayList <>();
list.forEach(s -> {
Map <String, Object> map = new HashMap <>();
map.put("name", s.getStartUserId() + "的" + s.getProcessDefinitionName());
map.put("startTime", s.getStartTime());
map.put("id", s.getId());//
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
.processInstanceId(s.getId())
.singleResult();
if (processInstance == null) {
map.put("status", "已完成");
} else {
map.put("status", "执行中");
}
mapList.add(map);
});
tableDataInfo.setRows(mapList);
tableDataInfo.setTotal(count);
return tableDataInfo;
}
public static void main(String[] args) {
//使用com.google.guava包创建集合
List <String> list = Lists.newArrayList("1", "2", "3", "4");
//1、正常遍历
list.forEach(item -> System.out.println(item));
//2、根据条件遍历
list.forEach(item -> {
if ("2".equals(item)) {
System.out.println(item);
}
});
}
}