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; /** *

* 前端控制器 *

* * @author kimi * @since 2019-12-16 */ @RestController @RequestMapping("/flows") public class FlowsController { @Autowired IFlowsService flowsService; @Autowired RuntimeService runtimeService; @RequestMapping(value = "/{pageno}", method = RequestMethod.GET) public Result> getAll(@PathVariable int pageno, HttpServletRequest request) { String pageSize = request.getParameter("pageSize"); if (StringUtils.isEmpty(pageSize)) { pageSize = "15"; } EntityWrapper 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 menuPage = flowsService.selectPage(page, flowsEntityWrapper); List records = menuPage.getRecords(); List 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); } @RequestMapping(value = "closeByUser/{userId}", method = RequestMethod.GET) public Result closeByUser(@PathVariable String userId, HttpServletRequest request) { Wrapper user_id = new EntityWrapper().eq("user_id", userId); List flows = flowsService.selectList(user_id); for (Flows flow : flows) { closeById(flow.getId()); } return Result.success(null); } @RequestMapping(value = "close/{id}", method = RequestMethod.GET) public Result close(@PathVariable String id, HttpServletRequest request) { return closeById(id); } private Result closeById(@PathVariable String id) { Flows flows = flowsService.selectById(id); if (flows == null) { return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); } String workflowId = flows.getWorkflowId(); 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); } } }