| | |
| | | |
| | | |
| | | 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.SysMenu; |
| | | 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.service.ITUserService; |
| | | import com.sun.tools.javac.jvm.Code; |
| | | 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.RestController; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * <p> |
| | | * 前端控制器 |
| | | * </p> |
| | | * |
| | | * @description 流程实例业务接口 |
| | | * @author kimi |
| | | * @since 2019-12-16 |
| | | */ |
| | |
| | | public class FlowsController { |
| | | @Autowired |
| | | IFlowsService flowsService; |
| | | |
| | | @Autowired |
| | | ITUserService userService; |
| | | 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 = records.stream().map(flows -> flows.setBusinessTypeStr(flows.getBusinessType().toString()).setUserName(userService.selectById(flows.getUserId()).getUserName())).collect(Collectors.toList()); |
| | | 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); |
| | | |
| | | flowsService.aduitFinish(flows); |
| | | |
| | | 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); |
| | | } |
| | | |
| | | } |
| | | } |