package org.jeecg.modules.activiti.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import org.activiti.engine.repository.Model; import org.apache.commons.lang3.StringUtils; import org.jeecg.modules.activiti.service.ReProcdefService; import org.jeecg.common.api.vo.Result; import org.jeecg.common.exception.JeecgBootException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.InputStream; import java.util.Map; /** * 流程管理 * * @author len * @date 2019/06/13 */ @RestController @RequestMapping("act/reprocdef") public class ReProcdefController { @Autowired private ReProcdefService reProcdefService; /** * 分页查询 * * @param req * 查询参数 * @return RestResponse */ @GetMapping("/list") public Result list(@RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) { IPage page = reProcdefService.queryPage( pageNo,pageSize,req); return Result.OK(page); } /** * 获取激活的流程 * * @return RestResponse */ @GetMapping("/list/active") public Result listActive(HttpServletRequest request) { return Result.OK(reProcdefService.listActive(request)); } /** * 读取资源,通过部署ID * * @param id * 流程定义ID * @param proInsId * 流程实例ID * @param resType * 资源类型(xml|image) * @param response * 响应 * @throws Exception * 读写流异常 */ @RequestMapping("/read") public void resourceRead(String id, String proInsId, String resType, HttpServletResponse response) throws Exception { InputStream resourceAsStream = reProcdefService.resourceRead(id, proInsId, resType); byte[] b = new byte[1024]; int len = -1; int lenEnd = 1024; while ((len = resourceAsStream.read(b, 0, lenEnd)) != -1) { response.getOutputStream().write(b, 0, len); } } /** * 部署流程文件 * * @param file * file * @return RestResponse */ @RequestMapping("/deploy") public Result deploy(MultipartFile file,HttpServletRequest request) { String exportDir = this.getClass().getResource("/").getPath(); String fileName = file.getOriginalFilename(); String msg = ""; if (StringUtils.isBlank(fileName)) { throw new JeecgBootException("请选择要部署的流程文件"); } else { try { msg = reProcdefService.deploy(exportDir, file, request); } catch (Exception e) { return Result.error(e.getMessage()); } } return Result.OK(msg); } /** * 转为模型 * * @param id * id * @return RestResponse */ @GetMapping("/convertToModel") public Result convertToModel(String id,HttpServletRequest request) { Model model = null; try { model = reProcdefService.convertToModel(id,request); } catch (Exception e) { return Result.error(e.getMessage()); } return Result.OK(model); } /** * 启动流程实例,通过processDefinitionId * * @param processDefinitionId * processDefinitionId * @return RestResponse */ @RequestMapping("/startProcessInstanceById") public Result startProcessInstanceById(String processDefinitionId) { try { reProcdefService.startProcessInstanceById(processDefinitionId); } catch (Exception e) { return Result.error(e.getMessage()); } return Result.OK(); } /** * 激活 / 挂起 * * @param state * @param id * @return */ @GetMapping("/update") public Result update(String id,int state) { String msg = reProcdefService.updateState(state, id); return Result.OK(msg); } /** * 批量删除部署的流程,级联删除流程实例 * * @param ids * 流程部署标识 * @return RestResponse */ @RequestMapping("/deleteBatchByIds") public Result deleteBatchByIds(@RequestParam("ids[]") String[] ids) { reProcdefService.deleteBatch(ids); return Result.OK(); } /** * 删除部署的流程,级联删除流程实例 * * @param deploymentId * 流程部署标识 * @return RestResponse */ @DeleteMapping("/deleteByDeploymentId") public Result deleteByDeploymentId(String deploymentId) { reProcdefService.deleteByDeploymentId(deploymentId); return Result.OK(); } }