Bladeren bron

模板更新

guomengjiao 3 maanden geleden
bovenliggende
commit
964ef06b21

+ 30 - 37
modules/report/src/main/java/com/jeesite/modules/report/web/ResearchReportController.java

@@ -62,12 +62,6 @@ public class ResearchReportController extends BaseController {
 	@Resource
 	private ResearchReportAsyncService researchReportAsyncService;
 
-	@Value("${file.baseDir}")
-	private String basePath;
-	private static final String TEMP_PATH = "/temp";
-	private static final String marketZH = "市场概况";
-	private static final String marketEN = "Market Overview";
-
 	/**
 	 * 获取数据
 	 */
@@ -280,16 +274,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 +337,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 +371,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 +383,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 +422,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 +433,36 @@ 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 {
+		fileName = fileName.substring(0, Math.min(fileName.length(), 10));
+		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);
+		}
+		// 解析 HTML
+		Document doc = Jsoup.parse(html);
+		Document.OutputSettings dos = new Document.OutputSettings().prettyPrint(false);
+		doc.outputSettings(dos);
+		// 获取所有 <p> 标签
+		Elements pTags = doc.select("p");
+		// 确保至少存在两个 <p> 标签
+		if (pTags.size() >= 2) {
+			// 定位第二个 <p> 标签(索引从0开始)
+			Element secondPTag = pTags.get(1);
+			// 在第二个 <p> 标签后插入新内容
+			secondPTag.after(sb.toString());
 		}
-		sb.append("\\n\\n");
-		return Html2PlainTxtUtils.convert(sb.toString());
+		return doc.html();
 	}
 
 	private String convertMarketType(String marketTypeValue, String lang) {