package process.service;
|
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpSession;
|
|
import org.activiti.engine.RepositoryService;
|
import org.activiti.engine.history.HistoricProcessInstance;
|
import org.activiti.engine.repository.ProcessDefinition;
|
|
import process.ProcessUser;
|
import process.service.writer.TodoTaskWriter;
|
|
import foundation.callable.Callable;
|
import foundation.data.Entity;
|
import foundation.persist.sql.NamedSQL;
|
import foundation.persist.sql.SQLRunner;
|
|
public class HistoryService<E> extends Service {
|
|
private HttpServletRequest request;
|
private org.activiti.engine.HistoryService historyService;
|
private HttpSession session;
|
private RepositoryService repositoryService;
|
|
public HistoryService(Callable context) throws Exception {
|
super(context);
|
request = context.getRequest();
|
session = request.getSession();
|
historyService = processEngine.getHistoryService();
|
repositoryService = processEngine.getRepositoryService();
|
|
}
|
|
@Override
|
public void call(String operator) throws Exception {
|
if ("getRunTask".equalsIgnoreCase(operator)) {
|
getRunTask();
|
}
|
else if ("getHistoryTask".equals(operator)) {
|
getHistoryTask();
|
}
|
else if ("getAllTask".equals(operator)) {
|
getAllTask();
|
}
|
|
}
|
|
private void getAllTask() {
|
ProcessUser user = (ProcessUser) session.getAttribute("user");
|
List<HistoricProcessInstance> TaskList = historyService.createHistoricProcessInstanceQuery().includeProcessVariables().list();
|
for (HistoricProcessInstance historicProcessInstance : TaskList) {
|
String processDefinitionId = historicProcessInstance.getProcessDefinitionId();
|
|
}
|
}
|
|
private void getTaskInfo() throws Exception {
|
|
ProcessUser user = (ProcessUser) session.getAttribute("user");
|
List<HistoricProcessInstance> unFinishedTaskList = historyService.createHistoricProcessInstanceQuery().list();
|
|
for (HistoricProcessInstance historicProcessInstance : unFinishedTaskList) {
|
|
String userId = historicProcessInstance.getStartUserId();
|
|
if (user.getId().equalsIgnoreCase(userId)) {
|
String businessKey = historicProcessInstance.getBusinessKey();
|
String processDefinitionId = historicProcessInstance.getProcessDefinitionId();
|
List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionId).desc().list();
|
for (ProcessDefinition processDefinition : list) {
|
String tablename = processDefinition.getKey();
|
NamedSQL namedSQL = NamedSQL.getInstance("getLineById");
|
namedSQL.setTableName("tablename");
|
namedSQL.setParam("fieldNameId", "id");
|
namedSQL.setParam("id", businessKey);
|
Entity entity = SQLRunner.getEntity(namedSQL);
|
|
}
|
|
}
|
|
|
}
|
// resultPool.addValue(myTaskList);
|
}
|
|
private void getHistoryTask() {
|
ProcessUser user = (ProcessUser) session.getAttribute("user");
|
List<HistoricProcessInstance> unFinishedTaskList = historyService.createHistoricProcessInstanceQuery().includeProcessVariables().finished().list();
|
List<Map<String, String>> result = new ArrayList<Map<String, String>>();
|
for (HistoricProcessInstance historicProcessInstance : unFinishedTaskList) {
|
String userId = historicProcessInstance.getStartUserId();
|
if (user.getId().equalsIgnoreCase(userId)) {
|
String processDefinitionId = historicProcessInstance.getProcessDefinitionId();
|
|
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionId).singleResult();
|
Map<String, String> singleTask = packageTaskInfo(new SimpleDateFormat("yyyy-MM-dd hh:mm"),historicProcessInstance, processDefinition);
|
singleTask.put("status", "已结束");
|
result.add(singleTask);
|
}
|
}
|
if (result.size()==0) {
|
resultPool.addValue("no history task");
|
}else {
|
resultPool.addValue("todoTask", result, new TodoTaskWriter());
|
}
|
}
|
|
private void getRunTask() {
|
ArrayList<HistoricProcessInstance> myTaskList = new ArrayList<HistoricProcessInstance>();
|
ProcessUser user = (ProcessUser) session.getAttribute("user");
|
List<HistoricProcessInstance> unFinishedTaskList = historyService.createHistoricProcessInstanceQuery().includeProcessVariables().unfinished().list();
|
|
for (HistoricProcessInstance historicProcessInstance : unFinishedTaskList) {
|
String userId = historicProcessInstance.getStartUserId();
|
if (user.getId().equalsIgnoreCase(userId)) {
|
myTaskList.add(historicProcessInstance);
|
}
|
}
|
resultPool.addValue(myTaskList);
|
}
|
private Map<String, String> packageTaskInfo(SimpleDateFormat sdf, HistoricProcessInstance historicProcessInstance, ProcessDefinition processDefinition) {
|
ProcessUser user = (ProcessUser)session.getAttribute("user");
|
Map<String, String> singleTask = new HashMap<String, String>();
|
singleTask.put("sid", );
|
singleTask.put("id", historicProcessInstance.getId());
|
singleTask.put("name", "已结束");
|
singleTask.put("createTime", sdf.format(historicProcessInstance.getStartTime()));
|
singleTask.put("pdname", processDefinition.getName());
|
singleTask.put("pdversion", Integer.toString(processDefinition.getVersion()));
|
singleTask.put("pid", processDefinition.getId());
|
return singleTask;
|
}
|
}
|