|
@@ -1,28 +1,42 @@
|
|
|
package cn.iocoder.yudao.adminserver.modules.bpm.service.workflow.impl;
|
|
|
|
|
|
+import cn.hutool.core.io.IoUtil;
|
|
|
+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.model.ModelCreateVO;
|
|
|
+import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.model.ModelPageReqVo;
|
|
|
+import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.model.ModelRespVo;
|
|
|
import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.model.ModelUpdateVO;
|
|
|
import cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants;
|
|
|
import cn.iocoder.yudao.adminserver.modules.bpm.service.workflow.BpmModelService;
|
|
|
import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
|
|
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
|
|
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
|
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.activiti.api.runtime.shared.query.Pageable;
|
|
|
import org.activiti.bpmn.converter.BpmnXMLConverter;
|
|
|
import org.activiti.bpmn.model.BpmnModel;
|
|
|
import org.activiti.engine.RepositoryService;
|
|
|
import org.activiti.engine.repository.Deployment;
|
|
|
import org.activiti.engine.repository.Model;
|
|
|
+import org.activiti.engine.repository.ModelQuery;
|
|
|
+import org.activiti.engine.repository.ProcessDefinition;
|
|
|
import org.apache.commons.lang3.exception.ExceptionUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.ObjectUtils;
|
|
|
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
import javax.xml.stream.XMLInputFactory;
|
|
|
import javax.xml.stream.XMLStreamReader;
|
|
|
import java.io.ByteArrayInputStream;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.InputStream;
|
|
|
import java.io.InputStreamReader;
|
|
|
+import java.net.URLEncoder;
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
+import java.util.List;
|
|
|
import java.util.Optional;
|
|
|
|
|
|
/**
|
|
@@ -36,6 +50,19 @@ public class BpmModelServiceImpl implements BpmModelService {
|
|
|
|
|
|
private final RepositoryService repositoryService;
|
|
|
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PageResult<Model> pageList(ModelPageReqVo modelPageReqVo) {
|
|
|
+ ModelQuery modelQuery = repositoryService.createModelQuery();
|
|
|
+ String likeName = modelPageReqVo.getName();
|
|
|
+ if (StrUtil.isNotBlank(likeName)){
|
|
|
+ modelQuery.modelNameLike("%"+likeName+"%");
|
|
|
+ }
|
|
|
+ List<Model> models = modelQuery.orderByCreateTime().desc()
|
|
|
+ .listPage((modelPageReqVo.getPageNo() - 1) * modelPageReqVo.getPageSize(), modelPageReqVo.getPageSize());
|
|
|
+ return new PageResult<>(models, modelQuery.count());
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public CommonResult<String> newModel(ModelCreateVO modelCreateVO) {
|
|
|
try {
|
|
@@ -119,4 +146,28 @@ public class BpmModelServiceImpl implements BpmModelService {
|
|
|
throw ServiceExceptionUtil.exception(BpmErrorCodeConstants.BPMN_MODEL_ERROR);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public FileResp exportBpmnXml(String deploymentId) {
|
|
|
+
|
|
|
+ // 查询流程定义
|
|
|
+ ProcessDefinition pd = repositoryService.createProcessDefinitionQuery().deploymentId(deploymentId).singleResult();
|
|
|
+ if (ObjectUtils.isEmpty(pd)) {
|
|
|
+ throw ServiceExceptionUtil.exception(BpmErrorCodeConstants.BPMN_PROCESS_DEFINITION_NOT_EXISTS);
|
|
|
+ }
|
|
|
+ String resourceName = Optional.ofNullable(pd.getDiagramResourceName()).orElse(pd.getResourceName());
|
|
|
+ InputStream inputStream = repositoryService.getResourceAsStream(deploymentId,
|
|
|
+ resourceName);
|
|
|
+ FileResp fileResp = new FileResp();
|
|
|
+
|
|
|
+ fileResp.setFileName(String.format("%s.bpmn", Optional.ofNullable(pd.getName()).orElse("流程图")));
|
|
|
+ fileResp.setFileByte(IoUtil.readBytes(inputStream));
|
|
|
+ return fileResp;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CommonResult<String> deleteModel(String modelId) {
|
|
|
+ repositoryService.deleteModel(modelId);
|
|
|
+ return CommonResult.success("删除成功");
|
|
|
+ }
|
|
|
}
|