|
|
@@ -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) {
|