Commit 42f04fbfe8fe813ce6b1bf7791156cd4bee5fef6

Authored by 房远帅
1 parent 1c2d0914

合同:支持导出excel

@@ -40,6 +40,7 @@ import com.lframework.xingyun.sc.service.customer.CustomerCreditService; @@ -40,6 +40,7 @@ import com.lframework.xingyun.sc.service.customer.CustomerCreditService;
40 import com.lframework.xingyun.sc.service.customer.CustomerDevelopPlanService; 40 import com.lframework.xingyun.sc.service.customer.CustomerDevelopPlanService;
41 import com.lframework.xingyun.sc.service.order.PurchaseOrderInfoService; 41 import com.lframework.xingyun.sc.service.order.PurchaseOrderInfoService;
42 import com.lframework.xingyun.sc.utils.LatexFormulaExcelExporterUtil; 42 import com.lframework.xingyun.sc.utils.LatexFormulaExcelExporterUtil;
  43 +import com.lframework.xingyun.sc.utils.ResponseUtil;
43 import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractDistributorStandardVo; 44 import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractDistributorStandardVo;
44 import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractDistributorStandardVo; 45 import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractDistributorStandardVo;
45 import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractDistributorStandardVo; 46 import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractDistributorStandardVo;
@@ -1132,7 +1133,8 @@ public class ContractDistributorStandardController extends DefaultBaseController @@ -1132,7 +1133,8 @@ public class ContractDistributorStandardController extends DefaultBaseController
1132 "contract-manage:processed-standard-contract:query" 1133 "contract-manage:processed-standard-contract:query"
1133 }) 1134 })
1134 @GetMapping("/printStandardContract") 1135 @GetMapping("/printStandardContract")
1135 - public void printStandardContract(@NotBlank(message = "合同不可为空") String id, HttpServletResponse response) throws IOException { 1136 + public void printStandardContract(@NotBlank(message = "合同不可为空") String id, String exportType,
  1137 + HttpServletResponse response) throws IOException {
1136 InvokeResult<GetContractDistributorStandardBo> result = get(id); 1138 InvokeResult<GetContractDistributorStandardBo> result = get(id);
1137 GetContractDistributorStandardBo data = result.getData(); 1139 GetContractDistributorStandardBo data = result.getData();
1138 1140
@@ -1306,31 +1308,43 @@ public class ContractDistributorStandardController extends DefaultBaseController @@ -1306,31 +1308,43 @@ public class ContractDistributorStandardController extends DefaultBaseController
1306 } 1308 }
1307 } 1309 }
1308 1310
1309 - // === 5. 调用 LibreOffice 转 PDF ===  
1310 - pdfFile = convertExcelToPdf(tempExcel); 1311 + if ("EXCEL".equalsIgnoreCase(exportType)) {
  1312 + ResponseUtil.setExcelResponseHead(response, data.getCode() + "_" + data.getBuyerName() + "-合同打印.xls");
  1313 + try (InputStream excelIn = new FileInputStream(tempExcel)) {
  1314 + byte[] buffer = new byte[8192];
  1315 + int len;
  1316 + while ((len = excelIn.read(buffer)) != -1) {
  1317 + response.getOutputStream().write(buffer, 0, len);
  1318 + }
  1319 + response.getOutputStream().flush();
  1320 + }
  1321 + } else {
  1322 + // === 5. 调用 LibreOffice 转 PDF ===
  1323 + pdfFile = convertExcelToPdf(tempExcel);
1311 1324
1312 - // === 6. 设置 PDF 响应头 ===  
1313 - String fileName = data.getCode() + "_" + data.getBuyerName() + "-合同打印.pdf";  
1314 - String encodedFileName;  
1315 - try {  
1316 - encodedFileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");  
1317 - } catch (UnsupportedEncodingException e) {  
1318 - // UTF-8 是标准编码,理论上不会抛出,但 Java 8 要求处理  
1319 - throw new RuntimeException("UTF-8 encoding not supported", e);  
1320 - }  
1321 - response.setContentType("application/pdf");  
1322 - response.setCharacterEncoding("UTF-8");  
1323 - response.setHeader("Content-Disposition", "attachment;filename=" + encodedFileName);  
1324 - response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");  
1325 -  
1326 - // === 7. 输出 PDF 到浏览器 ===  
1327 - try (InputStream pdfIn = new FileInputStream(pdfFile)) {  
1328 - byte[] buffer = new byte[8192];  
1329 - int len;  
1330 - while ((len = pdfIn.read(buffer)) != -1) {  
1331 - response.getOutputStream().write(buffer, 0, len); 1325 + // === 6. 设置 PDF 响应头 ===
  1326 + String fileName = data.getCode() + "_" + data.getBuyerName() + "-合同打印.pdf";
  1327 + String encodedFileName;
  1328 + try {
  1329 + encodedFileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
  1330 + } catch (UnsupportedEncodingException e) {
  1331 + // UTF-8 是标准编码,理论上不会抛出,但 Java 8 要求处理
  1332 + throw new RuntimeException("UTF-8 encoding not supported", e);
  1333 + }
  1334 + response.setContentType("application/pdf");
  1335 + response.setCharacterEncoding("UTF-8");
  1336 + response.setHeader("Content-Disposition", "attachment;filename=" + encodedFileName);
  1337 + response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
  1338 +
  1339 + // === 7. 输出 PDF 到浏览器 ===
  1340 + try (InputStream pdfIn = new FileInputStream(pdfFile)) {
  1341 + byte[] buffer = new byte[8192];
  1342 + int len;
  1343 + while ((len = pdfIn.read(buffer)) != -1) {
  1344 + response.getOutputStream().write(buffer, 0, len);
  1345 + }
  1346 + response.getOutputStream().flush();
1332 } 1347 }
1333 - response.getOutputStream().flush();  
1334 } 1348 }
1335 1349
1336 } catch (Exception e) { 1350 } catch (Exception e) {