package com.highdatas.mdm.controller;
|
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.baomidou.mybatisplus.mapper.Wrapper;
|
import com.baomidou.mybatisplus.plugins.Page;
|
import com.highdatas.mdm.entity.Flows;
|
import com.highdatas.mdm.entity.TUser;
|
import com.highdatas.mdm.pojo.ActivitiBusinessType;
|
import com.highdatas.mdm.pojo.ActivitiStatus;
|
import com.highdatas.mdm.pojo.CodeMsg;
|
import com.highdatas.mdm.pojo.Result;
|
import com.highdatas.mdm.service.IFlowsService;
|
import com.highdatas.mdm.util.DbUtils;
|
import org.activiti.engine.RuntimeService;
|
import org.activiti.engine.runtime.ProcessInstance;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* <p>
|
* 前端控制器
|
* </p>
|
* @description 流程实例业务接口
|
* @author kimi
|
* @since 2019-12-16
|
*/
|
@RestController
|
@RequestMapping("/flows")
|
public class FlowsController {
|
@Autowired
|
IFlowsService flowsService;
|
|
@Autowired
|
RuntimeService runtimeService;
|
|
/**
|
*
|
* @description: 分页获取流程实例
|
* @param pageno 页数
|
* @return: 流程实例
|
*
|
*/
|
@RequestMapping(value = "/{pageno}", method = RequestMethod.GET)
|
public Result<Page<Flows>> getAll(@PathVariable int pageno, HttpServletRequest request) {
|
//获取每页数据量
|
String pageSize = request.getParameter("pageSize");
|
if (StringUtils.isEmpty(pageSize)) {
|
pageSize = "15";
|
}
|
EntityWrapper<Flows> flowsEntityWrapper = new EntityWrapper<>();
|
//筛选-- 开启用户
|
String userId = request.getParameter("userId");
|
if (!StringUtils.isEmpty(userId)) {
|
flowsEntityWrapper.eq("user_id", userId);
|
}
|
//筛选--状态
|
String status = request.getParameter("status");
|
if (!StringUtils.isEmpty(status)) {
|
flowsEntityWrapper.eq("status", status);
|
}
|
Integer size = Integer.valueOf(pageSize);
|
Page page = new Page(pageno, size);
|
Page<Flows> menuPage = flowsService.selectPage(page, flowsEntityWrapper);
|
//获取分页后的流程实例
|
List<Flows> records = menuPage.getRecords();
|
List<Flows> recordsStr = new ArrayList<>();
|
for (Flows flows : records) {
|
//更新状态中文名给前端
|
flows.setBusinessTypeStr(flows.getBusinessType().toString());
|
TUser userById = DbUtils.getUserById(flows.getUserId());
|
//查询用户的名称给前端
|
flows.setUserName(userById.getUserName());
|
recordsStr.add(flows);
|
}
|
menuPage.setRecords(recordsStr);
|
return Result.success(menuPage);
|
}
|
/**
|
*
|
* @description: By 用户删除流程
|
* @param userId 用户id
|
* @return: 是否成功
|
*
|
*/
|
|
@RequestMapping(value = "closeByUser/{userId}", method = RequestMethod.GET)
|
public Result closeByUser(@PathVariable String userId, HttpServletRequest request) {
|
Wrapper<Flows> user_id = new EntityWrapper<Flows>().eq("user_id", userId);
|
//By user查询流程
|
List<Flows> flows = flowsService.selectList(user_id);
|
for (Flows flow : flows) {
|
//循环删除流程以及对应的流程信息
|
closeById(flow.getId());
|
}
|
return Result.success(null);
|
}
|
/**
|
*
|
* @description: 通过id删除流程
|
* @param id flows的id
|
* @return: 是否删除
|
*
|
*/
|
@RequestMapping(value = "close/{id}", method = RequestMethod.GET)
|
public Result close(@PathVariable String id, HttpServletRequest request) {
|
return closeById(id);
|
}
|
|
/**
|
*
|
* @description: 通过id删除流程
|
* @param id flows的id
|
* @return: 是否删除
|
*
|
*/
|
private Result closeById(@PathVariable String id) {
|
//通过id获取flow信息
|
Flows flows = flowsService.selectById(id);
|
if (flows == null) {
|
return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED);
|
}
|
//获取流程id
|
String workflowId = flows.getWorkflowId();
|
//获取activiti流程实例
|
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(workflowId).singleResult();
|
if (processInstance != null) {
|
//删除流程
|
runtimeService.deleteProcessInstance(workflowId,"终止流程");
|
}
|
//设置状态
|
flows.setStatus(ActivitiStatus.close);
|
if (!flows.getBusinessType().equals(ActivitiBusinessType.exists)) {
|
/*调起流程结束后的动作*/
|
flowsService.aduitFinish(flows);
|
}
|
//更新数据库信息
|
boolean update = flows.updateById();
|
if (update) {
|
return Result.success(flows);
|
}else {
|
return Result.error(CodeMsg.UPDATE_ERROR);
|
}
|
}
|
}
|