diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java index 2030f280c..dcda2ac54 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java @@ -143,8 +143,8 @@ public class FlwDefinitionController extends BaseController { @Log(title = "流程定义", businessType = BusinessType.IMPORT) @PostMapping("/importDef") @Transactional(rollbackFor = Exception.class) - public R importDef(MultipartFile file) { - return R.ok(iFlwDefinitionService.importXml(file)); + public R importDef(MultipartFile file, String category) { + return R.ok(iFlwDefinitionService.importXml(file, category)); } /** diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwDefinitionService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwDefinitionService.java index 7386db256..9141bbfa1 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwDefinitionService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwDefinitionService.java @@ -48,7 +48,7 @@ public interface IFlwDefinitionService { * @param file 文件 * @return 结果 */ - boolean importXml(MultipartFile file); + boolean importXml(MultipartFile file, String category); /** * 删除流程定义 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java index eff1201d7..c2bcece55 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java @@ -15,9 +15,15 @@ import org.dom4j.io.XMLWriter; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.core.utils.reflect.ReflectUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.warm.flow.core.dto.FlowCombine; +import org.dromara.warm.flow.core.entity.Definition; +import org.dromara.warm.flow.core.entity.Node; +import org.dromara.warm.flow.core.entity.Skip; import org.dromara.warm.flow.core.service.DefService; +import org.dromara.warm.flow.core.utils.FlowConfigUtil; import org.dromara.warm.flow.orm.entity.FlowDefinition; import org.dromara.warm.flow.orm.entity.FlowHisTask; import org.dromara.warm.flow.orm.mapper.FlowDefinitionMapper; @@ -85,9 +91,17 @@ public class FlwDefinitionServiceImpl implements IFlwDefinitionService { * @param file 文件 */ @Override - public boolean importXml(MultipartFile file) { + public boolean importXml(MultipartFile file, String category) { try { - defService.importXml(file.getInputStream()); + FlowCombine combine = FlowConfigUtil.readConfig(file.getInputStream()); + // 流程定义 + Definition definition = combine.getDefinition(); + definition.setCategory(category); + // 所有的流程节点 + List allNodes = combine.getAllNodes(); + // 所有的流程连线 + List allSkips = combine.getAllSkips(); + ReflectUtils.invoke(defService, "insertFlow", definition, allNodes, allSkips); } catch (Exception e) { log.error("导入流程定义错误: {}", e.getMessage(), e); throw new RuntimeException(e);