|
@@ -1,7 +1,8 @@
|
|
|
package com.ruoyi.system.service.impl;
|
|
|
|
|
|
-import java.io.ByteArrayInputStream;
|
|
|
-import java.io.IOException;
|
|
|
+import java.io.OutputStream;
|
|
|
+import java.io.StringReader;
|
|
|
+import java.net.URLEncoder;
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
import java.util.Base64;
|
|
|
import java.util.List;
|
|
@@ -13,6 +14,18 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.ruoyi.system.mapper.BpmProcessMapper;
|
|
|
import com.ruoyi.system.service.IBpmProcessService;
|
|
|
+import org.w3c.dom.Document;
|
|
|
+import org.xml.sax.InputSource;
|
|
|
+
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import javax.xml.parsers.DocumentBuilder;
|
|
|
+import javax.xml.parsers.DocumentBuilderFactory;
|
|
|
+import javax.xml.transform.OutputKeys;
|
|
|
+import javax.xml.transform.Transformer;
|
|
|
+import javax.xml.transform.TransformerFactory;
|
|
|
+import javax.xml.transform.dom.DOMSource;
|
|
|
+import javax.xml.transform.stream.StreamResult;
|
|
|
|
|
|
/**
|
|
|
* 流程定义Service业务层处理
|
|
@@ -63,6 +76,9 @@ public class BpmProcessServiceImpl implements IBpmProcessService {
|
|
|
bpmProcess.setCreateTime(DateUtils.getNowDate());
|
|
|
bpmProcess.setCreateBy(SecurityUtils.getUsername());
|
|
|
bpmProcess.setProcessVersion(0L);
|
|
|
+
|
|
|
+ System.err.println(bpmProcess.getProcessXmlContent().getBytes(StandardCharsets.UTF_8).toString());
|
|
|
+
|
|
|
return bpmProcessMapper.insertBpmProcess(bpmProcess);
|
|
|
}
|
|
|
|
|
@@ -117,4 +133,34 @@ public class BpmProcessServiceImpl implements IBpmProcessService {
|
|
|
bpmProcess.setProcessVersion(1L); // 设置为历史版本,备份状态
|
|
|
return bpmProcessMapper.insertBpmProcess(bpmProcess);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void export(Long processId,String fileType, HttpServletRequest request, HttpServletResponse response) {
|
|
|
+ BpmProcess process = bpmProcessMapper.selectBpmProcessByProcessId(processId);
|
|
|
+ String fileName = process.getProcessName()+"."+fileType;
|
|
|
+ try {
|
|
|
+ DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
|
|
|
+ DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
|
|
|
+ Document doc = dBuilder.parse(new InputSource(new StringReader(process.getProcessXmlContent())));
|
|
|
+ // 规范化XML结构
|
|
|
+ doc.getDocumentElement().normalize();
|
|
|
+ // 创建转换器以生成XML
|
|
|
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();
|
|
|
+ Transformer transformer = transformerFactory.newTransformer();
|
|
|
+ transformer.setOutputProperty(OutputKeys.INDENT, "yes");
|
|
|
+ DOMSource source = new DOMSource(doc);
|
|
|
+ // 创建输出流,将XML写入响应
|
|
|
+ OutputStream outputStream = response.getOutputStream();
|
|
|
+ response.setContentType("application/xml");
|
|
|
+ String encodedFileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.toString());
|
|
|
+ response.setHeader("Content-Disposition", "attachment; filename="+encodedFileName);
|
|
|
+ // 将XML写入响应输出流
|
|
|
+ StreamResult result = new StreamResult(outputStream);
|
|
|
+ transformer.transform(source, result);
|
|
|
+ System.out.println("XML file downloaded");
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|