mirror of
https://gitee.com/hhyykk/ipms-sjy.git
synced 2025-07-17 04:25:06 +08:00
完善工作流模型。工作流定义
This commit is contained in:
@ -1,6 +1,13 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow;
|
||||
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.FileResp;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.processdefinition.ProcessDefinitionPageReqVo;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.processdefinition.ProcessDefinitionRespVO;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.service.workflow.BpmProcessDefinitionService;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.activiti.api.process.runtime.ProcessRuntime;
|
||||
import org.activiti.engine.RepositoryService;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
@ -9,6 +16,8 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
// TODO @json:swagger 和 validation 的注解,后续要补全下哈。可以等 workflow 基本写的差不多之后
|
||||
@RestController
|
||||
@ -20,15 +29,30 @@ public class ProcessDefinitionController {
|
||||
|
||||
@Resource
|
||||
private ProcessRuntime processRuntime;
|
||||
@Resource
|
||||
private BpmProcessDefinitionService bpmProcessDefinitionService;
|
||||
|
||||
|
||||
@GetMapping(value = "/getStartForm")
|
||||
public CommonResult<String> getStartForm(@RequestParam("processKey") String processKey){
|
||||
//这样查似乎有问题??, 暂时写死
|
||||
// final ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().
|
||||
// processDefinitionKey(processKey).latestVersion().singleResult();
|
||||
// processRuntime.processDefinition(processDefinition.getId()).getFormKey();
|
||||
//这样查似乎有问题??, 暂时写死
|
||||
return CommonResult.success("/flow/leave/apply");
|
||||
}
|
||||
|
||||
@GetMapping ("/page")
|
||||
@ApiOperation(value = "流程定义分页数据")
|
||||
public CommonResult<PageResult<ProcessDefinitionRespVO>> pageList(ProcessDefinitionPageReqVo processDefinitionPageReqVo) {
|
||||
return CommonResult.success(bpmProcessDefinitionService.pageList(processDefinitionPageReqVo));
|
||||
}
|
||||
|
||||
@GetMapping ("/export")
|
||||
@ApiOperation(value = "流程定义的bpmnXml导出")
|
||||
public void pageList(@RequestParam String processDefinitionId, HttpServletResponse response) throws IOException {
|
||||
FileResp fileResp = bpmProcessDefinitionService.export(processDefinitionId);
|
||||
ServletUtils.writeAttachment(response, fileResp.getFileName(), fileResp.getFileByte());
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,20 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.processdefinition;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
/**
|
||||
* @author yunlong.li
|
||||
*/
|
||||
@Data
|
||||
@ToString(callSuper = true)
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ApiModel("流程定义分页 Request VO")
|
||||
public class ProcessDefinitionPageReqVo extends PageParam {
|
||||
@ApiModelProperty("流程名字")
|
||||
private String name;
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.processdefinition;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author yunlong.li
|
||||
*/
|
||||
@Data
|
||||
@ApiModel("流程定义数据返回 Request VO")
|
||||
public class ProcessDefinitionRespVO {
|
||||
|
||||
private String formKey;
|
||||
private String id;
|
||||
private String key;
|
||||
private String name;
|
||||
private Integer version;
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.bpm.convert.workflow;
|
||||
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.processdefinition.ProcessDefinitionRespVO;
|
||||
import org.activiti.engine.repository.ProcessDefinition;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
/**
|
||||
* @author yunlong.li
|
||||
*/
|
||||
@Mapper
|
||||
public interface ProcessDefinitionConvert {
|
||||
ProcessDefinitionConvert INSTANCE = Mappers.getMapper(ProcessDefinitionConvert.class);
|
||||
|
||||
ProcessDefinitionRespVO convert(ProcessDefinition processDefinition);
|
||||
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.bpm.service.workflow;
|
||||
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.FileResp;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.processdefinition.ProcessDefinitionPageReqVo;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.processdefinition.ProcessDefinitionRespVO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
||||
/**
|
||||
* 流程定义接口
|
||||
* @author yunlong.li
|
||||
*/
|
||||
public interface BpmProcessDefinitionService {
|
||||
/**
|
||||
* 流程定义分页
|
||||
* @param processDefinitionPageReqVo 分页入参
|
||||
* @return 分页model
|
||||
*/
|
||||
PageResult<ProcessDefinitionRespVO> pageList(ProcessDefinitionPageReqVo processDefinitionPageReqVo);
|
||||
|
||||
/**
|
||||
* 导出流程 bpmn 模型
|
||||
* @param processDefinitionId 分页入参
|
||||
* @return 分页model
|
||||
*/
|
||||
FileResp export(String processDefinitionId);
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.bpm.service.workflow.impl;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.FileResp;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.processdefinition.ProcessDefinitionPageReqVo;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.processdefinition.ProcessDefinitionRespVO;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.convert.workflow.ProcessDefinitionConvert;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.service.workflow.BpmProcessDefinitionService;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.activiti.api.process.runtime.ProcessRuntime;
|
||||
import org.activiti.bpmn.converter.BpmnXMLConverter;
|
||||
import org.activiti.bpmn.model.BpmnModel;
|
||||
import org.activiti.engine.RepositoryService;
|
||||
import org.activiti.engine.repository.ProcessDefinition;
|
||||
import org.activiti.engine.repository.ProcessDefinitionQuery;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 流程定义实现
|
||||
* @author yunlongn
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class BpmProcessDefinitionServiceImpl implements BpmProcessDefinitionService {
|
||||
|
||||
private final RepositoryService repositoryService;
|
||||
|
||||
private final ProcessRuntime processRuntime;
|
||||
|
||||
@Override
|
||||
public PageResult<ProcessDefinitionRespVO> pageList(ProcessDefinitionPageReqVo processDefinitionPageReqVo) {
|
||||
ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
|
||||
String likeName = processDefinitionPageReqVo.getName();
|
||||
if (StrUtil.isNotBlank(likeName)){
|
||||
processDefinitionQuery.processDefinitionNameLike("%"+likeName+"%");
|
||||
}
|
||||
List<ProcessDefinition> processDefinitions = processDefinitionQuery.orderByProcessDefinitionId().desc()
|
||||
.listPage((processDefinitionPageReqVo.getPageNo() - 1) * processDefinitionPageReqVo.getPageSize(),
|
||||
processDefinitionPageReqVo.getPageSize());
|
||||
final List<ProcessDefinitionRespVO> respVOList = processDefinitions.stream()
|
||||
.map(ProcessDefinitionConvert.INSTANCE::convert).collect(Collectors.toList());
|
||||
return new PageResult<>(respVOList, processDefinitionQuery.count());
|
||||
}
|
||||
|
||||
@Override
|
||||
public FileResp export(String processDefinitionId) {
|
||||
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
|
||||
byte[] bpmnBytes = new BpmnXMLConverter().convertToXML(bpmnModel);
|
||||
FileResp fileResp = new FileResp();
|
||||
fileResp.setFileName( "export");
|
||||
fileResp.setFileByte(bpmnBytes);
|
||||
return fileResp;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user