From 4ba4ea4fcc559a746daf44f276867e97e580019e Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: 星期三, 15 一月 2025 16:56:09 +0800 Subject: [PATCH] update 升级warm-flow到1.6.0-m4 --- ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java | 57 +++++++++++++++++++++++++++------------------------------ 1 files changed, 27 insertions(+), 30 deletions(-) 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 4e72371..da547ef 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 @@ -3,22 +3,21 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; +import cn.hutool.core.io.IoUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.dom4j.Document; -import org.dom4j.io.OutputFormat; -import org.dom4j.io.XMLWriter; import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.json.utils.JsonUtils; 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.dto.DefJson; import org.dromara.warm.flow.core.enums.NodeType; import org.dromara.warm.flow.core.enums.PublishStatus; import org.dromara.warm.flow.core.service.DefService; @@ -42,6 +41,8 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -120,6 +121,7 @@ * @param id 娴佺▼瀹氫箟id */ @Override + @Transactional(rollbackFor = Exception.class) public boolean publish(Long id) { List<FlowNode> flowNodes = flowNodeMapper.selectList(new LambdaQueryWrapper<FlowNode>().eq(FlowNode::getDefinitionId, id)); List<String> errorMsg = new ArrayList<>(); @@ -143,16 +145,20 @@ * @param file 鏂囦欢 */ @Override - public boolean importXml(MultipartFile file, String category) { - try { - FlowCombine combine = defService.readXml(file.getInputStream()); - // 娴佺▼瀹氫箟 - Definition definition = combine.getDefinition(); - definition.setCategory(category); - defService.importFlow(combine); + @Transactional(rollbackFor = Exception.class) + public boolean importJson(MultipartFile file, String category) { + try (InputStream inputStream = file.getInputStream()) { + byte[] fileBytes = inputStream.readAllBytes(); + String fileContent = new String(fileBytes, StandardCharsets.UTF_8); + DefJson defJson = JsonUtils.parseObject(fileContent, DefJson.class); + defJson.setCategory(category); + defService.importDef(defJson); + } catch (IOException e) { + log.error("璇诲彇鏂囦欢娴侀敊璇�: {}", e.getMessage(), e); + throw new IllegalStateException("鏂囦欢璇诲彇澶辫触锛岃妫�鏌ユ枃浠跺唴瀹�", e); } catch (Exception e) { log.error("瀵煎叆娴佺▼瀹氫箟閿欒: {}", e.getMessage(), e); - throw new RuntimeException(e); + throw new IllegalStateException("瀵煎叆娴佺▼瀹氫箟澶辫触", e); } return true; } @@ -166,24 +172,15 @@ */ @Override public void exportDef(Long id, HttpServletResponse response) throws IOException { - Document document = defService.exportXml(id); - // 璁剧疆鐢熸垚xml鐨勬牸寮� - OutputFormat of = OutputFormat.createPrettyPrint(); - // 璁剧疆缂栫爜鏍煎紡 - of.setEncoding("UTF-8"); - of.setIndent(true); - of.setIndent(" "); - of.setNewlines(true); - - // 鍒涘缓涓�涓獂ml鏂囨。缂栬緫鍣� - XMLWriter writer = new XMLWriter(response.getOutputStream(), of); - writer.setEscapeText(false); + byte[] data = defService.exportJson(id).getBytes(StandardCharsets.UTF_8); + String filename = "workflow_export_" + DateUtils.dateTimeNow() + ".json"; + // 璁剧疆鍝嶅簲澶村拰鍐呭绫诲瀷 response.reset(); - response.setCharacterEncoding("UTF-8"); - response.setContentType("application/x-msdownload"); - response.setHeader("Content-Disposition", "attachment;"); - writer.write(document); - writer.close(); + response.setCharacterEncoding(StandardCharsets.UTF_8.name()); + response.setContentType("application/json"); + response.setHeader("Content-Disposition", "attachment; filename=" + filename); + response.addHeader("Content-Length", "" + data.length); + IoUtil.write(response.getOutputStream(), false, data); } /** -- Gitblit v1.9.3