feat(report): 添加销售报表导出功能

- 在 application-lets.yml 和 application-letsprod.yml 中添加报告相关配置
- 修改 TocofsSaleoutServiceImpl 中的导出逻辑,支持从配置文件读取模板路径
- 新增公共文件下载方法,用于处理导出文件下载
- 优化测试用例中的代码示例
This commit is contained in:
liuy 2024-11-04 17:47:29 +08:00
parent c01074d8e3
commit 34d46299a5
7 changed files with 163 additions and 45 deletions

View File

@ -51,6 +51,11 @@ letsofs:
appKey: 2097046829 appKey: 2097046829
secret: 35282f251476a3af4f00c7b36 secret: 35282f251476a3af4f00c7b36
#report
report:
templatesurl: /Users/liuyang/workspaces/hzya/kangarooDataCenterV3/service/src/main/resources/template/TOCTOB正向流程导出模版.xlsx
tempFile: /Users/liuyang/workspaces/hzya/tempfile
#钉钉 #钉钉
DING: DING:
U8C_TEST_AGENTID: 3281181231 U8C_TEST_AGENTID: 3281181231

View File

@ -43,6 +43,11 @@ letsofs:
appKey: 2097046829 appKey: 2097046829
secret: 35282f251476a3af4f00c7b36 secret: 35282f251476a3af4f00c7b36
#report
report:
templatesurl: D:\server\tempFile\TOCTOB正向流程导出模版.xlsx
tempFile: D:\server\tempFile
#钉钉 #钉钉
DING: DING:
U8C_TEST_AGENTID: 3281181231 U8C_TEST_AGENTID: 3281181231

View File

@ -27,7 +27,7 @@ public class ConsignmachiningInTest {
@Test @Test
public void startImplement() { public void startImplement() {
// String code = "LETS-RE2024082300000007"; // String code = "LETS-RE2024082300000007";
String code = "LETS-RE2024102200000018"; String code = "LETS-RE2024103000000089";
consignmachiningIn.startImplement(code); consignmachiningIn.startImplement(code);
// consignmachiningIn.startImplement("2024-09-24 13:49:15", "2024-09-24 13:49:17"); // consignmachiningIn.startImplement("2024-09-24 13:49:15", "2024-09-24 13:49:17");

Binary file not shown.

View File

@ -23,6 +23,7 @@ import com.hzya.frame.uuid.UUIDLong;
import com.hzya.frame.web.entity.BaseResult; import com.hzya.frame.web.entity.BaseResult;
import com.hzya.frame.web.entity.JsonResultEntity; import com.hzya.frame.web.entity.JsonResultEntity;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.File; import java.io.File;
@ -54,6 +55,7 @@ public class TocofsSaleoutServiceImpl extends BaseService<TocofsSaleoutEntity, S
@Override @Override
public JsonResultEntity queryToCSalesReport(JSONObject jsonObject) throws Exception { public JsonResultEntity queryToCSalesReport(JSONObject jsonObject) throws Exception {
Assert.notNull(jsonObject, "jsonObject不能为空");
JSONObject jsonStr = getstrObj("jsonStr", jsonObject); JSONObject jsonStr = getstrObj("jsonStr", jsonObject);
//提供两种模式查询模式 query导出模式 excel //提供两种模式查询模式 query导出模式 excel
@ -161,25 +163,36 @@ public class TocofsSaleoutServiceImpl extends BaseService<TocofsSaleoutEntity, S
} }
} }
@Value("${report.templatesurl}")
private String reportTemplatesurl;
@Override @Override
public JsonResultEntity exportToCSalesReportExcel(JSONObject jsonObject) throws Exception { public JsonResultEntity exportToCSalesReportExcel(JSONObject jsonObject) throws Exception {
Assert.notNull(jsonObject, "jsonObject不能为空"); Assert.notNull(jsonObject, "jsonObject不能为空");
jsonObject.put("qType", "excel");
String businessType = jsonObject.getString("businessType"); JSONObject jsonStr = getstrObj("jsonStr", jsonObject);
Assert.notNull(jsonStr, "jsonStr对象不能为空");
jsonStr.put("qType", "excel");
//覆盖一遍
jsonObject.put("jsonStr", jsonStr);
String businessType = jsonStr.getString("businessType");
Assert.notNull(businessType, "businessType不能为空!"); Assert.notNull(businessType, "businessType不能为空!");
JsonResultEntity jsonResultEntity = queryToCSalesReport(jsonObject); JsonResultEntity jsonResultEntity = queryToCSalesReport(jsonObject);
if (jsonResultEntity != null && jsonResultEntity.getAttribute() != null) { if (jsonResultEntity != null && jsonResultEntity.getAttribute() != null) {
InputStream templateFileName = this.getClass().getClassLoader().getResourceAsStream("template/TOCTOB正向流程导出模版.xlsx"); InputStream templateFileName = this.getClass().getClassLoader().getResourceAsStream(reportTemplatesurl);
String[] excelFile = createExcelFile(); String[] excelFile = createExcelFile();
if (businessType.equals("TOC_ORDER")) { if (businessType.equals("TOC_ORDER")) {
List<TocofsSaleoutDetailedDto> tocofsSaleoutDetailedEntityList = (List<TocofsSaleoutDetailedDto>) jsonResultEntity.getAttribute(); List<TocofsSaleoutDetailedDto> tocofsSaleoutDetailedEntityList = (List<TocofsSaleoutDetailedDto>) jsonResultEntity.getAttribute();
EasyExcel.write(excelFile[0], TocofsSaleoutDetailedDto.class).withTemplate(templateFileName).sheet().doWrite(tocofsSaleoutDetailedEntityList); EasyExcel.write(excelFile[0], TocofsSaleoutDetailedDto.class).withTemplate(templateFileName).sheet().doWrite(tocofsSaleoutDetailedEntityList);
return BaseResult.getSuccessMessageEntity(excelFile[1]);
} else if (businessType.equals("TOB_ORDER")) { } else if (businessType.equals("TOB_ORDER")) {
List<TobofsSaleoutDetailedDto> tobofsSaleoutDetailedEntityList = (List<TobofsSaleoutDetailedDto>) jsonResultEntity.getAttribute(); List<TobofsSaleoutDetailedDto> tobofsSaleoutDetailedEntityList = (List<TobofsSaleoutDetailedDto>) jsonResultEntity.getAttribute();
EasyExcel.write(excelFile[0], TobofsSaleoutDetailedDto.class).withTemplate(templateFileName).sheet().doWrite(tobofsSaleoutDetailedEntityList); EasyExcel.write(excelFile[0], TobofsSaleoutDetailedDto.class).withTemplate(templateFileName).sheet().doWrite(tobofsSaleoutDetailedEntityList);
return BaseResult.getSuccessMessageEntity(excelFile[1]);
} else { } else {
return BaseResult.getFailureMessageEntity("查询失败无法确定TOB、TOC请选择TOC_ORDER、或者TOB_ORDER"); return BaseResult.getFailureMessageEntity("查询失败无法确定TOB、TOC请选择TOC_ORDER、或者TOB_ORDER");
} }
@ -187,13 +200,17 @@ public class TocofsSaleoutServiceImpl extends BaseService<TocofsSaleoutEntity, S
return BaseResult.getFailureMessageEntity("生成TOC、TOB销售业务对应的Excel文件失败"); return BaseResult.getFailureMessageEntity("生成TOC、TOB销售业务对应的Excel文件失败");
} }
@Value("${report.tempFile}")
private String reportTempFile;
/** /**
* 2024年7月19日 11:11:55 生成新Excel文件的路径 * 2024年7月19日 11:11:55 生成新Excel文件的路径
* *
* @author liuyang * @author liuyang
*/ */
private String[] createExcelFile() { private String[] createExcelFile() {
String projectPath = System.getProperty("user.dir"); // String projectPath = System.getProperty("user.dir");
String projectPath = reportTempFile;
StringBuffer stringBuffer = new StringBuffer(); StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(projectPath); stringBuffer.append(projectPath);
@ -218,6 +235,7 @@ public class TocofsSaleoutServiceImpl extends BaseService<TocofsSaleoutEntity, S
@Override @Override
public JsonResultEntity queryToCReturnReport(JSONObject jsonObject) throws Exception { public JsonResultEntity queryToCReturnReport(JSONObject jsonObject) throws Exception {
// long startTime = System.currentTimeMillis(); // long startTime = System.currentTimeMillis();
Assert.notNull(jsonObject, "jsonObject不能为空");
JSONObject jsonStr = getstrObj("jsonStr", jsonObject); JSONObject jsonStr = getstrObj("jsonStr", jsonObject);
//提供两种模式查询模式 query导出模式 excel //提供两种模式查询模式 query导出模式 excel
@ -314,11 +332,11 @@ public class TocofsSaleoutServiceImpl extends BaseService<TocofsSaleoutEntity, S
PageInfo pageInfo = new PageInfo(tocofsSaleoutDetailedEntityPageAttribute); PageInfo pageInfo = new PageInfo(tocofsSaleoutDetailedEntityPageAttribute);
return BaseResult.getSuccessMessageEntity("查询成功", pageInfo); return BaseResult.getSuccessMessageEntity("查询成功", pageInfo);
} else if ("excel".equals(qType)) { } else if ("excel".equals(qType)) {
if (businessType.equals("TOC_ORDER")) { if (businessType.equals("TOC_RETURN")) {
//TOC退货 //TOC退货
List<TocofsReturnGoodsDetailedDto> tocofsReturnGoodsDetailedDtos = iTocofsReturngoodsDetailedDao.queryEntityListBaseToc(tocofsSaleoutDetailedEntity); List<TocofsReturnGoodsDetailedDto> tocofsReturnGoodsDetailedDtos = iTocofsReturngoodsDetailedDao.queryEntityListBaseToc(tocofsSaleoutDetailedEntity);
return BaseResult.getSuccessMessageEntity("查询成功", tocofsReturnGoodsDetailedDtos); return BaseResult.getSuccessMessageEntity("查询成功", tocofsReturnGoodsDetailedDtos);
} else if (businessType.equals("TOB_ORDER")) { } else if (businessType.equals("TOB_RETURN")) {
//TOB退货 //TOB退货
List<TobofsReturnGoodsDetailedDto> tobofsReturnGoodsDetailedDtos = iTocofsReturngoodsDetailedDao.queryEntityListBaseTob(tocofsSaleoutDetailedEntity); List<TobofsReturnGoodsDetailedDto> tobofsReturnGoodsDetailedDtos = iTocofsReturngoodsDetailedDao.queryEntityListBaseTob(tocofsSaleoutDetailedEntity);
return BaseResult.getSuccessMessageEntity("查询成功", tobofsReturnGoodsDetailedDtos); return BaseResult.getSuccessMessageEntity("查询成功", tobofsReturnGoodsDetailedDtos);
@ -333,22 +351,30 @@ public class TocofsSaleoutServiceImpl extends BaseService<TocofsSaleoutEntity, S
@Override @Override
public JsonResultEntity exportToCReturnReportExcel(JSONObject jsonObject) throws Exception { public JsonResultEntity exportToCReturnReportExcel(JSONObject jsonObject) throws Exception {
Assert.notNull(jsonObject, "jsonObject不能为空"); Assert.notNull(jsonObject, "jsonObject不能为空");
jsonObject.put("qType", "excel");
String businessType = jsonObject.getString("businessType"); JSONObject jsonStr = getstrObj("jsonStr", jsonObject);
Assert.notNull(businessType, "businessType不能为空!"); Assert.notNull(jsonStr, "jsonStr对象不能为空");
jsonStr.put("qType", "excel");
//覆盖一遍
jsonObject.put("jsonStr", jsonStr);
String businessType = jsonStr.getString("businesstype");
Assert.notNull(businessType, "businesstype不能为空!");
JsonResultEntity jsonResultEntity = queryToCReturnReport(jsonObject); JsonResultEntity jsonResultEntity = queryToCReturnReport(jsonObject);
if (jsonResultEntity != null && jsonResultEntity.getAttribute() != null) { if (jsonResultEntity != null && jsonResultEntity.getAttribute() != null) {
InputStream templateFileName = this.getClass().getClassLoader().getResourceAsStream("template/TOCTOB正向流程导出模版.xlsx"); InputStream templateFileName = this.getClass().getClassLoader().getResourceAsStream(reportTemplatesurl);
String[] excelFile = createExcelFile(); String[] excelFile = createExcelFile();
if (businessType.equals("TOC_ORDER")) { if (businessType.equals("TOC_RETURN")) {
List<TocofsSaleoutDetailedDto> tocofsSaleoutDetailedEntityList = (List<TocofsSaleoutDetailedDto>) jsonResultEntity.getAttribute(); List<TocofsReturnGoodsDetailedDto> tocofsSaleoutDetailedEntityList = (List<TocofsReturnGoodsDetailedDto>) jsonResultEntity.getAttribute();
EasyExcel.write(excelFile[0], TocofsSaleoutDetailedDto.class).withTemplate(templateFileName).sheet().doWrite(tocofsSaleoutDetailedEntityList); EasyExcel.write(excelFile[0], TocofsReturnGoodsDetailedDto.class).withTemplate(templateFileName).sheet().doWrite(tocofsSaleoutDetailedEntityList);
} else if (businessType.equals("TOB_ORDER")) { return BaseResult.getSuccessMessageEntity(excelFile[1]);
List<TobofsSaleoutDetailedDto> tobofsSaleoutDetailedEntityList = (List<TobofsSaleoutDetailedDto>) jsonResultEntity.getAttribute(); } else if (businessType.equals("TOB_RETURN")) {
EasyExcel.write(excelFile[0], TobofsSaleoutDetailedDto.class).withTemplate(templateFileName).sheet().doWrite(tobofsSaleoutDetailedEntityList); List<TobofsReturnGoodsDetailedDto> tobofsSaleoutDetailedEntityList = (List<TobofsReturnGoodsDetailedDto>) jsonResultEntity.getAttribute();
EasyExcel.write(excelFile[0], TobofsReturnGoodsDetailedDto.class).withTemplate(templateFileName).sheet().doWrite(tobofsSaleoutDetailedEntityList);
return BaseResult.getSuccessMessageEntity(excelFile[1]);
} else { } else {
return BaseResult.getFailureMessageEntity("查询失败无法确定TOB、TOC请选择TOC_ORDER、或者TOB_ORDER"); return BaseResult.getFailureMessageEntity("查询失败无法确定TOB、TOC请选择TOC_ORDER、或者TOB_ORDER");
} }

View File

@ -13,7 +13,9 @@ import com.hzya.frame.web.entity.BaseResult;
import com.hzya.frame.web.entity.JsonResultEntity; import com.hzya.frame.web.entity.JsonResultEntity;
import com.hzya.frame.web.exception.BaseSystemException; import com.hzya.frame.web.exception.BaseSystemException;
import com.hzya.frame.webapp.entrance.service.IEntranceService; import com.hzya.frame.webapp.entrance.service.IEntranceService;
import com.hzya.frame.webapp.entrance.util.FileDownloadUtil;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
import org.apache.ibatis.annotations.Param;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -70,11 +72,13 @@ public class EntranceController {
protected IFileDownloadService filedownloadService; protected IFileDownloadService filedownloadService;
@Resource @Resource
protected ISysApplicationService sysApplicationService; protected ISysApplicationService sysApplicationService;
@RequestMapping(value = "/option") @RequestMapping(value = "/option")
@ResponseBody @ResponseBody
public JsonResultEntity option(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception { public JsonResultEntity option(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception {
return entranceService.doBusiness(servletRequest, servletResponse); return entranceService.doBusiness(servletRequest, servletResponse);
} }
//平台接口 //平台接口
@RequestMapping(value = "/platformInterface") @RequestMapping(value = "/platformInterface")
@ResponseBody @ResponseBody
@ -93,11 +97,11 @@ public class EntranceController {
JsonResultEntity jsonResultEntity = null; JsonResultEntity jsonResultEntity = null;
logger.info("-------------------开始调用上传文件upload接口-------------------"); logger.info("-------------------开始调用上传文件upload接口-------------------");
try { try {
jsonResultEntity = entranceService.fileUpload(file, entity,servletRequest,servletResponse); jsonResultEntity = entranceService.fileUpload(file, entity, servletRequest, servletResponse);
entity.setSuccess(true); entity.setSuccess(true);
} catch (Exception e) { } catch (Exception e) {
entity.setFileFlag(false); entity.setFileFlag(false);
logger.error("文件上传失败"+e.getMessage()); logger.error("文件上传失败" + e.getMessage());
} }
logger.info("-------------------结束调用上传文件upload接口-------------------"); logger.info("-------------------结束调用上传文件upload接口-------------------");
@ -115,7 +119,7 @@ public class EntranceController {
JsonResultEntity jsonResultEntity = null; JsonResultEntity jsonResultEntity = null;
logger.info("-------------------开始调用上传文件upload接口-------------------"); logger.info("-------------------开始调用上传文件upload接口-------------------");
try { try {
jsonResultEntity = entranceService.fileUpload(file, entity,servletRequest,servletResponse); jsonResultEntity = entranceService.fileUpload(file, entity, servletRequest, servletResponse);
} catch (Exception e) { } catch (Exception e) {
jsonResultEntity = BaseResult.getFailureMessageEntity(e.getMessage()); jsonResultEntity = BaseResult.getFailureMessageEntity(e.getMessage());
} }
@ -125,11 +129,11 @@ public class EntranceController {
@RequestMapping(value = "/pluginfileUpload", method = RequestMethod.POST) @RequestMapping(value = "/pluginfileUpload", method = RequestMethod.POST)
@ResponseBody @ResponseBody
public JsonResultEntity pluginfileUpload(MultipartFile file, FileUploadDto entity,String pluginPackageName, ServletRequest servletRequest, ServletResponse servletResponse) { public JsonResultEntity pluginfileUpload(MultipartFile file, FileUploadDto entity, String pluginPackageName, ServletRequest servletRequest, ServletResponse servletResponse) {
JsonResultEntity jsonResultEntity = null; JsonResultEntity jsonResultEntity = null;
logger.info("-------------------开始调用上传插件附件upload接口-------------------"); logger.info("-------------------开始调用上传插件附件upload接口-------------------");
try { try {
jsonResultEntity = entranceService.pluginfileUpload(file, entity,pluginPackageName,servletRequest,servletResponse); jsonResultEntity = entranceService.pluginfileUpload(file, entity, pluginPackageName, servletRequest, servletResponse);
} catch (Exception e) { } catch (Exception e) {
jsonResultEntity = BaseResult.getFailureMessageEntity(e.getMessage()); jsonResultEntity = BaseResult.getFailureMessageEntity(e.getMessage());
} }
@ -139,10 +143,10 @@ public class EntranceController {
@ResponseBody @ResponseBody
@RequestMapping(value = "/pluginZipUpdate") @RequestMapping(value = "/pluginZipUpdate")
public JsonResultEntity pluginZipUpate(FileUploadDto fileUploadDto){ public JsonResultEntity pluginZipUpate(FileUploadDto fileUploadDto) {
JsonResultEntity jsonResultEntity = null; JsonResultEntity jsonResultEntity = null;
logger.info("-------------------开始调用插件更新接口-------------------"); logger.info("-------------------开始调用插件更新接口-------------------");
try{ try {
jsonResultEntity = entranceService.pluginZipUpate(fileUploadDto); jsonResultEntity = entranceService.pluginZipUpate(fileUploadDto);
} catch (Exception e) { } catch (Exception e) {
jsonResultEntity = BaseResult.getFailureMessageEntity(e.getMessage()); jsonResultEntity = BaseResult.getFailureMessageEntity(e.getMessage());
@ -152,13 +156,12 @@ public class EntranceController {
} }
/**
/** * 根据文件保存的新名称下载文件
* 根据文件保存的新名称下载文件 *
* * @param fileSaveName
* @param fileSaveName * @return
* @return */
*/
@RequestMapping(value = "/option/fileDownload") @RequestMapping(value = "/option/fileDownload")
public ResponseEntity<byte[]> fileDownload(String fileSaveName) { public ResponseEntity<byte[]> fileDownload(String fileSaveName) {
ResponseEntity<byte[]> responseEntity = null; ResponseEntity<byte[]> responseEntity = null;
@ -174,17 +177,18 @@ public class EntranceController {
responseEntity = new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(fileDownloadEntity.getFile()), headers, HttpStatus.CREATED); responseEntity = new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(fileDownloadEntity.getFile()), headers, HttpStatus.CREATED);
} catch (Exception e) { } catch (Exception e) {
logger.error("文件下载失败"+e.getMessage()); logger.error("文件下载失败" + e.getMessage());
} }
return responseEntity; return responseEntity;
} }
/** /**
* 根据文件保存的新名称下载文件 * 根据文件保存的新名称下载文件
* *
* @return * @return
*/ */
@RequestMapping(value = "/fileDownloadNew") @RequestMapping(value = "/fileDownloadNew")
public ResponseEntity<byte[]> fileDownloadNew(String id) throws Exception { public ResponseEntity<byte[]> fileDownloadNew(String id) throws Exception {
ResponseEntity<byte[]> responseEntity = null; ResponseEntity<byte[]> responseEntity = null;
try { try {
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
@ -197,42 +201,65 @@ public class EntranceController {
headers.setContentDispositionFormData("attachment", fileName); headers.setContentDispositionFormData("attachment", fileName);
responseEntity = new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(fileDownloadEntity.getFile()), headers, HttpStatus.CREATED); responseEntity = new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(fileDownloadEntity.getFile()), headers, HttpStatus.CREATED);
} catch (IOException e) { } catch (IOException e) {
logger.error("文件下载失败"+e.getMessage()); logger.error("文件下载失败" + e.getMessage());
} catch (BaseSystemException e) { } catch (BaseSystemException e) {
logger.error("文件下载失败"+e.getMessage()); logger.error("文件下载失败" + e.getMessage());
} }
return responseEntity; return responseEntity;
} }
@RequestMapping(value = "/testOption") @RequestMapping(value = "/testOption")
@ResponseBody @ResponseBody
public EsbReturnEntity testOption(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception { public EsbReturnEntity testOption(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception {
return entranceService.doTstsBusiness(servletRequest,servletResponse); return entranceService.doTstsBusiness(servletRequest, servletResponse);
} }
@RequestMapping(value = "/externalCallInterface") @RequestMapping(value = "/externalCallInterface")
@ResponseBody @ResponseBody
public JsonResultEntity externalCallInterface(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception { public JsonResultEntity externalCallInterface(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception {
return sysApplicationService.externalCallInterface(servletRequest,servletResponse); return sysApplicationService.externalCallInterface(servletRequest, servletResponse);
} }
@RequestMapping(value = "/externalCallInterfaceResend") @RequestMapping(value = "/externalCallInterfaceResend")
@ResponseBody @ResponseBody
public JsonResultEntity externalCallInterfaceResend(SysMessageManageLogEntity resendLogEntity) throws Exception { public JsonResultEntity externalCallInterfaceResend(SysMessageManageLogEntity resendLogEntity) throws Exception {
return sysApplicationService.externalCallInterfaceResend(resendLogEntity); return sysApplicationService.externalCallInterfaceResend(resendLogEntity);
} }
@RequestMapping(value = "/externalCallInterfaceToESB") @RequestMapping(value = "/externalCallInterfaceToESB")
@ResponseBody @ResponseBody
public JsonResultEntity externalCallInterfaceToESB(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception { public JsonResultEntity externalCallInterfaceToESB(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception {
return sysApplicationService.externalCallInterfaceToESB(servletRequest,servletResponse); return sysApplicationService.externalCallInterfaceToESB(servletRequest, servletResponse);
} }
@RequestMapping(value = "/erpSso") @RequestMapping(value = "/erpSso")
@ResponseBody @ResponseBody
public String erpSso(HttpServletRequest request, HttpServletResponse response, String ticket) throws Exception { public String erpSso(HttpServletRequest request, HttpServletResponse response, String ticket) throws Exception {
response.sendRedirect(bipSsoService.erpSso(request,ticket)); response.sendRedirect(bipSsoService.erpSso(request, ticket));
return null; return null;
} }
@Value("${report.tempFile}")
private String reportTempFile;
/**
* 公共文件文件下载
*/
@RequestMapping(value = "/option/downFilesBasedFileNameFileType")
public void downFilesBasedFileNameFileType(HttpServletRequest request, HttpServletResponse response, @Param("filename") String filename) {
try {
StringBuffer filePath = new StringBuffer();
filePath.append(reportTempFile);
filePath.append(File.separator);
filePath.append("excelfile");
filePath.append(File.separator);
filePath.append(filename);
//处理文件下载或者预览
FileDownloadUtil.downLoad(filePath.toString(), response, false, "附件下载.xlsx");
} catch (Exception e) {
e.printStackTrace();
logger.error("downFilesBasedFileNameFileType", e.getMessage());
}
}
} }

View File

@ -0,0 +1,55 @@
package com.hzya.frame.webapp.entrance.util;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.net.URL;
/**
* 文件下载处理方法
*
* @Authorliuyang
* @Packagecom.hzya.frame.webapp.entrance.util
* @ProjectkangarooDataCenter
* @nameFileDownloadUtil
* @Date2024/7/19 17:08
* @FilenameFileDownloadUtil
*/
public class FileDownloadUtil {
/**
* 加载打开文件
*
* @param filePath 文件地址
* @param response 响应对象
* @param isOnLine 是否在线打开
*/
public static void downLoad(String filePath, HttpServletResponse response, boolean isOnLine, String filename) throws Exception {
File f = new File(filePath);
if (!f.exists()) {
response.sendError(404, "File not found!");
return;
}
BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
byte[] buf = new byte[1024];
int len = 0;
response.reset(); //非常重要
if (isOnLine) { //在线打开方式
URL u = new URL("file:///" + filePath);
response.setContentType(u.openConnection().getContentType());
response.setHeader("Content-Disposition", "inline; filename=" + new String((filename).getBytes("UTF-8"), "ISO8859-1"));
//文件名应该编码成UTF-8
} else { //纯下载方式
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment; filename=" + new String(filename.getBytes("UTF-8"), "ISO8859-1"));
}
OutputStream out = response.getOutputStream();
while ((len = br.read(buf)) > 0) {
out.write(buf, 0, len);
}
br.close();
out.close();
}
}