package org.jeecg.modules.dncFlow.controller;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiParam;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.shiro.SecurityUtils;
|
import org.flowable.bpmn.model.BpmnModel;
|
import org.flowable.engine.*;
|
import org.flowable.engine.history.HistoricActivityInstance;
|
import org.flowable.image.ProcessDiagramGenerator;
|
import org.flowable.task.api.Task;
|
import org.jeecg.common.api.vo.Result;
|
import org.jeecg.common.system.vo.LoginUser;
|
import org.jeecg.modules.dncFlow.entity.HisWorkTask;
|
import org.jeecg.modules.dncFlow.entity.WorkTaskData;
|
import org.jeecg.modules.dncFlow.entity.WorkTaskDataVo;
|
import org.jeecg.modules.dncFlow.service.IAssignFileStreamService;
|
import org.jeecg.modules.dncFlow.service.IHisWorkTaskService;
|
import org.jeecg.modules.dncFlow.service.IWorkTaskService;
|
import org.jeecg.modules.dncFlow.service.IWorkTaskServiceVo;
|
import org.jeecg.modules.dncFlow.vo.FlowMy;
|
import org.jeecg.modules.flowable.apithird.business.dto.FlowMyBusinessDto;
|
import org.jeecg.modules.flowable.apithird.business.service.impl.FlowMyBusinessServiceImpl;
|
import org.jeecg.modules.flowable.domain.dto.FlowTaskDto;
|
import org.jeecg.modules.flowable.service.IFlowTaskService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.io.OutputStream;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
@RestController
|
@RequestMapping("/nc/assign/flow")
|
@Slf4j
|
public class AssignFileStreamFlowController {
|
@Autowired
|
FlowMyBusinessServiceImpl flowMyBusinessService;
|
@Autowired
|
IWorkTaskService workTaskService;
|
@Autowired
|
IFlowTaskService flowTaskService;
|
@Autowired
|
IWorkTaskServiceVo workTaskServicevo;
|
@Autowired
|
IHisWorkTaskService hisWorkTaskService;
|
@Autowired
|
private TaskService taskService;
|
@Autowired
|
private RepositoryService repositoryService;
|
@Autowired
|
private HistoryService historyService;
|
@Autowired
|
private ProcessEngine processEngine;
|
@Autowired
|
private IAssignFileStreamService assignFileStreamService;
|
|
@GetMapping(value = "/list")
|
public Result<IPage<FlowMyBusinessDto>> queryPageList(FlowMyBusinessDto flowMyBusinessDto,
|
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
HttpServletRequest req) {
|
Page page = new Page(pageNo, pageSize);
|
IPage<FlowMyBusinessDto> pageList = flowMyBusinessService.getPageList(page, flowMyBusinessDto);
|
pageList.getRecords().forEach(item -> {
|
//去除[]
|
item.setTodoUsers(item.getTodoUsers().replaceAll("\\[", "").replaceAll("\\]", ""));
|
item.setTodoUsers(item.getTodoUsers().replaceAll("\"", ""));
|
item.setDoneUsers(item.getDoneUsers().replaceAll("\\[", "").replaceAll("\\]", ""));
|
item.setDoneUsers(item.getDoneUsers().replaceAll("\"", ""));
|
});
|
return Result.OK(pageList);
|
}
|
/*
|
* 获取所有任务列表
|
* */
|
@GetMapping(value = "/workTasklist")
|
public Result<IPage<WorkTaskData>> queryTaskPageList(WorkTaskData workTaskData,
|
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
HttpServletRequest req) {
|
List<WorkTaskData> list = workTaskService.queryAllworkTask();
|
IPage<WorkTaskData> pageList = new Page<>(pageNo, pageSize, list.size());
|
pageList.setRecords(list);
|
return Result.OK(pageList);
|
}
|
@ApiOperation(value = "获取待办列表", response = FlowTaskDto.class)
|
@GetMapping(value = "/todoList")
|
public Result todoList(@ApiParam(value = "当前页码", required = true) @RequestParam (name="pageNum", defaultValue="1") Integer pageNum,
|
@ApiParam(value = "每页条数", required = true) @RequestParam (name="pageSize", defaultValue="10") Integer pageSize) {
|
return flowTaskService.todoList(pageNum, pageSize);
|
}
|
@ApiOperation(value = "获取本身待办", response = FlowTaskDto.class)
|
@GetMapping(value = "/toTaskBySelf")
|
public Result<IPage<WorkTaskDataVo>> toTaskBySelf(FlowMy flowMy, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
|
Page page = new Page(pageNo, pageSize);
|
LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
flowMy.setUsername(user.getUsername());
|
return Result.OK(workTaskServicevo.toTaskBySelf(flowMy,page));
|
}
|
|
@ApiOperation(value = "获取已办任务", response = FlowTaskDto.class)
|
@GetMapping(value = "/finishedList")
|
public Result finishedList(@ApiParam(value = "当前页码", required = true) @RequestParam Integer pageNo,
|
@ApiParam(value = "每页条数", required = true) @RequestParam Integer pageSize) {
|
return flowTaskService.finishedList(pageNo, pageSize);
|
}
|
|
|
@ApiOperation(value = "获取工作流历史任务", response = FlowTaskDto.class)
|
@GetMapping(value = "/queryHisTaskList")
|
public Result<List<HisWorkTask>> queryHisTaskList(@RequestParam(name = "drapprovedataId") String drapprovedataId) {
|
return Result.OK(hisWorkTaskService.queryHisTaskList(drapprovedataId));
|
}
|
|
@ApiOperation(value = "审批任务-查看流程图")
|
@GetMapping("/diagramView")
|
public void showImages(@RequestParam(name = "taskId") String taskId, HttpServletResponse response) throws IOException {
|
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
String processDefinitionId = task.getProcessDefinitionId();
|
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
|
String processInstanceId = task.getProcessInstanceId();
|
List<HistoricActivityInstance> historyProcess = historyService.createHistoricActivityInstanceQuery()
|
.processInstanceId(processInstanceId)
|
.finished()
|
.list();
|
|
List<String> activityIds = new ArrayList<>();
|
List<String> flows = new ArrayList<>();
|
|
for (HistoricActivityInstance hi : historyProcess) {
|
String activityType = hi.getActivityType();
|
if (activityType.equals("sequenceFlow") || activityType.equals("exclusiveGateway")) {
|
flows.add(hi.getActivityId());
|
} else if (activityType.equals("userTask") || activityType.equals("startEvent")) {
|
activityIds.add(hi.getActivityId());
|
}
|
}
|
activityIds.add(task.getTaskDefinitionKey());
|
ProcessEngineConfiguration engConf = processEngine.getProcessEngineConfiguration();
|
ProcessDiagramGenerator processDiagramGenerator = engConf.getProcessDiagramGenerator();
|
|
InputStream in = processDiagramGenerator.generateDiagram(bpmnModel, "png", activityIds, flows,
|
engConf.getActivityFontName(), engConf.getLabelFontName(), engConf.getAnnotationFontName(),
|
engConf.getClassLoader(), 1.0, true);
|
|
OutputStream out = response.getOutputStream();
|
byte[] buf = new byte[1024];
|
int length = 0;
|
while ((length = in.read(buf)) != -1) {
|
out.write(buf, 0, length);
|
}
|
in.close();
|
out.close();
|
}
|
}
|