guomengjiao 1 mese fa
parent
commit
8512d8f7fe

+ 26 - 31
modules/report/src/main/java/com/jeesite/modules/report/web/ResearchReportController.java

@@ -280,16 +280,14 @@ public class ResearchReportController extends BaseController {
 			StringBuffer sb = new StringBuffer();
 			sb.append(vo.getTitle());	//标题
 			sb.append("\r\r");
-			sb.append(convertMarket(vo.getMarketScale(), vo.getMarketDriven(), vo.getLang()));
-			sb.append("\r\r");
-			sb.append(Html2PlainTxtUtils.convert(vo.getReportScopeHtml()));	//研究范围
+			sb.append(Html2PlainTxtUtils.convert(convertMarket(vo.getReportScopeHtml(), vo.getMarketScale(), vo.getMarketDriven())));	//研究范围
 			sb.append("\r\r");
 			sb.append(Html2PlainTxtUtils.convert(vo.getDirectoryHtml()));		//正文目录
 			sb.append("\r\r");
 			sb.append(Html2PlainTxtUtils.convert(vo.getChartsHtml()));		//图表目录
 			response.setCharacterEncoding("utf-8");
 			response.setContentType("text/plain");
-			response.addHeader("Content-Disposition","attachment;filename="+new String(vo.getTitle().getBytes("gb2312"),"ISO8859-1")+".txt");
+			response.addHeader("Content-Disposition","attachment;filename="+encodedFileName(vo.getTitle())+".txt");
 
 			ServletOutputStream sos = response.getOutputStream();
 			BufferedOutputStream bos = new BufferedOutputStream(sos);
@@ -345,10 +343,9 @@ public class ResearchReportController extends BaseController {
 		List<ResearchReportDto> list = researchReportService.findListByIdArr(researchReport.getId());
 		String fileName = "调查报告" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
 		List<ResearchReportDto> listExcel = ListUtils.newArrayList();
-		String lineStr = System.lineSeparator();
 		if(!list.isEmpty()){
 			listExcel = list.stream().map(vo -> {
-				vo.setReportScopeHtml(convertExcelStr(convertMarket(vo.getMarketScale(), vo.getMarketDriven(), vo.getLang()) + lineStr + lineStr + Html2PlainTxtUtils.convert(vo.getReportScopeHtml())));
+				vo.setReportScopeHtml(convertExcelStr(Html2PlainTxtUtils.convert(convertMarket(vo.getReportScopeHtml(), vo.getMarketScale(), vo.getMarketDriven()))));
 				vo.setDirectoryHtml(convertExcelStr(Html2PlainTxtUtils.convert(vo.getDirectoryHtml())));
 				vo.setMarketType(convertMarketType(vo.getMarketType(), vo.getLang()));
 				vo.setChartsHtml(convertExcelStr(Html2PlainTxtUtils.convert(vo.getChartsHtml())));
@@ -380,7 +377,7 @@ public class ResearchReportController extends BaseController {
 	public void exportBatchTxt(ResearchReport researchReport,HttpServletResponse response){
 		try {
 			List<ResearchReport> list = researchReportService.findListByIds(researchReport.getId());
-			String fileName = list.get(0).getTitle();
+			String fileName = encodedFileName(list.get(0).getTitle());
 			if(list.size() > 1){
 				fileName = fileName+"等";
 			}
@@ -392,9 +389,7 @@ public class ResearchReportController extends BaseController {
 				StringBuffer sb = new StringBuffer();
 				sb.append(vo.getTitle());	//标题
 				sb.append("\r\r");
-				sb.append(convertMarket(vo.getMarketScale(), vo.getMarketDriven(), vo.getLang()));
-				sb.append("\r\r");
-				sb.append(Html2PlainTxtUtils.convert(vo.getReportScopeHtml()));	//研究范围
+				sb.append(Html2PlainTxtUtils.convert(convertMarket(vo.getReportScopeHtml(), vo.getMarketScale(), vo.getMarketDriven())));	//研究范围
 				sb.append("\r\r");
 				sb.append(Html2PlainTxtUtils.convert(vo.getDirectoryHtml()));		//正文目录
 				sb.append("\r\r");
@@ -433,10 +428,7 @@ public class ResearchReportController extends BaseController {
 			response.setCharacterEncoding("utf-8");
 			//response.setContentType("application/octet-stream");
 			response.setContentType("application/zip");
-			String encodedFileName = URLEncoder.encode(fileName, "UTF-8");
-
-			//response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("gb2312"), "ISO8859-1") + ".zip");
-			response.addHeader("Content-Disposition", "attachment;filename=" + encodedFileName + ".zip");
+			response.addHeader("Content-Disposition", "attachment;filename=" + fileName + ".zip");
 
 			zos.close();
 			bos.close();
@@ -447,29 +439,32 @@ public class ResearchReportController extends BaseController {
 		}
 	}
 
-	private String convertMarket(String marketScale, String marketDriven, String lang) {
-		if (StringUtils.isEmpty(marketScale) && StringUtils.isEmpty(marketDriven)) {
-			return "";
+	private String encodedFileName(String fileName) throws UnsupportedEncodingException {
+		return URLEncoder.encode(fileName, "UTF-8");
+	}
+
+	private String convertMarket(String html, String marketScale, String marketDriven) {
+		if (StringUtils.isEmpty(marketScale) && StringUtils.isEmpty(marketDriven) && StringUtils.isEmpty(html)) {
+			return html;
 		}
 		StringBuffer sb = new StringBuffer();
-		if (Constants.lang.ZH_CH.equals(lang)) {
-			sb.append(marketZH);
-		} else {
-			sb.append(marketEN);
-		}
-		sb.append("\\n");
 		if (StringUtils.isNotEmpty(marketScale)) {
-			sb.append("\\n");
-			sb.append(Html2PlainTxtUtils.convert(marketScale));
-			sb.append("\\n");
+			sb.append(marketScale);
 		}
 		if (StringUtils.isNotEmpty(marketDriven)) {
-			sb.append("\\n");
-			sb.append(Html2PlainTxtUtils.convert(marketDriven));
-			sb.append("\\n");
+			sb.append(marketDriven);
 		}
-		sb.append("\\n\\n");
-		return Html2PlainTxtUtils.convert(sb.toString());
+		// 解析 HTML
+		Document doc = Jsoup.parse(html);
+		Document.OutputSettings dos = new Document.OutputSettings().prettyPrint(false);
+		doc.outputSettings(dos);
+		// 获取所有 <p> 标签
+		Elements pTags = doc.select("p");
+		// 定位第一个 <p> 标签(索引从0开始)
+		Element secondPTag = pTags.get(0);
+		// 在第一个 <p> 标签前插入新内容
+		secondPTag.before(sb.toString());
+		return doc.html();
 	}
 
 	private String convertMarketType(String marketTypeValue, String lang) {