/**
* Copyright © 2015-2020 JeePlus All rights reserved.
*/
package com.jeeplus.modules.act.web;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jeeplus.common.json.AjaxJson;
import com.jeeplus.common.utils.SpringContextHolder;
import com.jeeplus.common.websocket.service.system.SystemInfoSocketHandler;
import com.jeeplus.modules.act.service.ActModelService;
import com.jeeplus.modules.oa.entity.OaNotify;
import com.jeeplus.modules.oa.entity.OaNotifyRecord;
import com.jeeplus.modules.oa.service.OaNotifyService;
import com.jeeplus.modules.sg.managementcenter.activiti.entity.*;
import com.jeeplus.modules.sg.managementcenter.activiti.service.ConstructionService;
import com.jeeplus.modules.sg.managementcenter.activiti.service.DiscloseService;
import com.jeeplus.modules.sg.managementcenter.activiti.service.ProcessPersonnelService;
import com.jeeplus.modules.sg.managementcenter.activiti.service.UploadImagesService;
import com.jeeplus.modules.sg.managementcenter.activiti.utils.MyActiviUtils;
import com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProject;
import com.jeeplus.modules.sg.managementcenter.materialproject.entity.MaterialProject;
import com.jeeplus.modules.sg.managementcenter.materialproject.service.MaterialProjectService;
import com.jeeplus.modules.sg.managementcenter.project.service.ProjectService;
import com.jeeplus.modules.sg.materialmodule.activiti.entity.NonPower;
import com.jeeplus.modules.sg.materialmodule.activiti.service.MaterialModuleService;
import com.jeeplus.modules.sg.materialmodule.activiti.service.NonPowerService;
import com.jeeplus.modules.sg.picking.activiti.entity.PickApplication;
import com.jeeplus.modules.sg.picking.activiti.entity.ShowList;
import com.jeeplus.modules.sg.picking.activiti.service.PickIngService;
import com.jeeplus.modules.sg.settActivi.service.SettActiviService;
import com.jeeplus.modules.sys.service.SystemService;
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.HistoricTaskInstance;
import org.activiti.engine.impl.RepositoryServiceImpl;
import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
import org.activiti.engine.impl.pvm.PvmActivity;
import org.activiti.engine.impl.pvm.PvmTransition;
import org.activiti.engine.impl.pvm.process.ActivityImpl;
import org.activiti.engine.impl.pvm.process.ProcessDefinitionImpl;
import org.activiti.engine.impl.pvm.process.TransitionImpl;
import org.activiti.engine.impl.task.TaskDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.jeeplus.core.persistence.Page;
import com.jeeplus.core.web.BaseController;
import com.jeeplus.modules.act.entity.Act;
import com.jeeplus.modules.act.service.ActTaskService;
import com.jeeplus.modules.act.utils.ActUtils;
import com.jeeplus.modules.sys.utils.UserUtils;
/**
* 流程个人任务相关Controller
*
* @author jeeplus
* @version 2016-11-03
*/
@Controller
@RequestMapping(value = "${adminPath}/act/task")
public class ActTaskController extends BaseController {
@Autowired
private ActTaskService actTaskService;
@Autowired
private HistoryService historyService;
@Autowired
private RuntimeService runtimeService;
@Autowired
private RepositoryService repositoryService;
@Autowired
private TaskService taskService;
@Autowired
private ConstructionService constructionService;
@Autowired
private DiscloseService discloseService;
@Autowired
private UploadImagesService uploadImagesService;
@Autowired
private OaNotifyService oaNotifyService;
@Autowired
private NonPowerService nonPowerService;
@Autowired
private ProjectService projectService;
@Autowired
private ActModelService actModelService;
@Autowired
private PickIngService pickIngService;
@Autowired
private SystemService systemService;
@Autowired
private MaterialModuleService materialModuleService;
@Autowired
private SettActiviService settActiviService;
@Autowired
private MaterialProjectService materialProjectService;
/**
* 获取待办列表
*
* @return
*/
@RequestMapping(value = {"todo", ""})
public String todoList(Act act, HttpServletRequest request, HttpServletResponse response, Model model) throws Exception {
return "modules/bpm/task/todo/taskTodoList";
}
@ResponseBody
@RequestMapping(value = "todo/data")
public Map todoListData(Act act, HttpServletRequest request, HttpServletResponse response, Model model, String xmName) throws Exception {
Page> page = actTaskService.todoList(new Page>(request, response), act);
return getBootstrapData(page);
/* Page> page = actTaskService.newTodoList(new Page>(request, response), act, xmName);
Map map = new HashMap();
return getBootstrapData(page);*/
}
/**
* 获取已办任务
*
* @return
*/
@RequestMapping(value = "historic")
public String historicList(Act act, HttpServletRequest request, HttpServletResponse response, Model model) throws Exception {
return "modules/bpm/task/history/taskHistoricList";
}
@ResponseBody
@RequestMapping(value = "historic/data")
public Map historicListData(Act act, HttpServletRequest request, HttpServletResponse response, Model model) throws Exception {
Page> page = actTaskService.historicList(new Page>(request, response), act);
return getBootstrapData(page);
}
/**
* 获取我的申请列表
*
* @return
*/
@RequestMapping(value = "myApplyed")
public String myApplyedList(Act act, HttpServletResponse response, Model model) throws Exception {
return "modules/bpm/task/apply/taskMyAppledList";
}
@ResponseBody
@RequestMapping(value = "myApplyed/data")
public Map myApplyedListData(Act act, HttpServletRequest request, HttpServletResponse response, Model model) throws Exception {
Page page = actTaskService.getMyStartedProcIns(UserUtils.getUser(), new Page(request, response));
return getBootstrapData(page);
}
/**
* 获取流转历史列表
*
* @param startAct 开始活动节点名称
* @param endAct 结束活动节点名称
*/
@RequestMapping(value = "histoicFlow")
public String histoicFlow(Act act, String startAct, String endAct, Model model) {
if (StringUtils.isNotBlank(act.getProcInsId())) {
List histoicFlowList = actTaskService.histoicFlowList(act.getProcInsId(), startAct, endAct);
model.addAttribute("histoicFlowList", histoicFlowList);
}
return "modules/bpm/task/history/taskHistoricFlow";
}
/**
* 获取流程流向图
*
* @param startAct 开始活动节点名称
* @param endAct 结束活动节点名称
*/
@RequestMapping(value = "flowChart")
public String flowChart(Act act, String startAct, String endAct, Model model) {
if (StringUtils.isNotBlank(act.getProcInsId())) {
List histoicFlowList = actTaskService.histoicFlowList(act.getProcInsId(), startAct, endAct);
model.addAttribute("histoicFlowList", histoicFlowList);
}
return "modules/bpm/task/chart/taskFlowChart";
}
/**
* 获取流程列表
*
* @param category 流程分类
*/
@RequestMapping(value = "process")
public String processList(String category, HttpServletRequest request, HttpServletResponse response, Model model) {
Page