diff --git a/buildpackage/src/main/resources/application-lets.yml b/buildpackage/src/main/resources/application-lets.yml index 619d0cb6..ce7ecb8a 100644 --- a/buildpackage/src/main/resources/application-lets.yml +++ b/buildpackage/src/main/resources/application-lets.yml @@ -51,6 +51,11 @@ letsofs: appKey: 2097046829 secret: 35282f251476a3af4f00c7b36 +#report +report: + templatesurl: /Users/liuyang/workspaces/hzya/kangarooDataCenterV3/service/src/main/resources/template/TOCTOB正向流程导出模版.xlsx + tempFile: /Users/liuyang/workspaces/hzya/tempfile + #钉钉 DING: U8C_TEST_AGENTID: 3281181231 diff --git a/buildpackage/src/main/resources/application-letsprod.yml b/buildpackage/src/main/resources/application-letsprod.yml index f93f402c..ece1547f 100644 --- a/buildpackage/src/main/resources/application-letsprod.yml +++ b/buildpackage/src/main/resources/application-letsprod.yml @@ -43,6 +43,11 @@ letsofs: appKey: 2097046829 secret: 35282f251476a3af4f00c7b36 +#report +report: + templatesurl: D:\server\tempFile\TOCTOB正向流程导出模版.xlsx + tempFile: D:\server\tempFile + #钉钉 DING: U8C_TEST_AGENTID: 3281181231 diff --git a/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/outsourc/ConsignmachiningInTest.java b/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/outsourc/ConsignmachiningInTest.java index 6df6ef5e..560ede9a 100644 --- a/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/outsourc/ConsignmachiningInTest.java +++ b/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/outsourc/ConsignmachiningInTest.java @@ -27,7 +27,7 @@ public class ConsignmachiningInTest { @Test public void startImplement() { // String code = "LETS-RE2024082300000007"; - String code = "LETS-RE2024102200000018"; + String code = "LETS-RE2024103000000089"; consignmachiningIn.startImplement(code); // consignmachiningIn.startImplement("2024-09-24 13:49:15", "2024-09-24 13:49:17"); diff --git a/excelfile/-4230453427123371202.xlsx b/excelfile/-4230453427123371202.xlsx new file mode 100644 index 00000000..86d6d8a7 Binary files /dev/null and b/excelfile/-4230453427123371202.xlsx differ diff --git a/service/src/main/java/com/hzya/frame/report/lets/service/impl/TocofsSaleoutServiceImpl.java b/service/src/main/java/com/hzya/frame/report/lets/service/impl/TocofsSaleoutServiceImpl.java index 1a4ccc4a..4b4fa769 100644 --- a/service/src/main/java/com/hzya/frame/report/lets/service/impl/TocofsSaleoutServiceImpl.java +++ b/service/src/main/java/com/hzya/frame/report/lets/service/impl/TocofsSaleoutServiceImpl.java @@ -23,6 +23,7 @@ import com.hzya.frame.uuid.UUIDLong; import com.hzya.frame.web.entity.BaseResult; import com.hzya.frame.web.entity.JsonResultEntity; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.File; @@ -54,6 +55,7 @@ public class TocofsSaleoutServiceImpl extends BaseService tocofsSaleoutDetailedEntityList = (List) jsonResultEntity.getAttribute(); EasyExcel.write(excelFile[0], TocofsSaleoutDetailedDto.class).withTemplate(templateFileName).sheet().doWrite(tocofsSaleoutDetailedEntityList); + return BaseResult.getSuccessMessageEntity(excelFile[1]); } else if (businessType.equals("TOB_ORDER")) { List tobofsSaleoutDetailedEntityList = (List) jsonResultEntity.getAttribute(); EasyExcel.write(excelFile[0], TobofsSaleoutDetailedDto.class).withTemplate(templateFileName).sheet().doWrite(tobofsSaleoutDetailedEntityList); + return BaseResult.getSuccessMessageEntity(excelFile[1]); } else { return BaseResult.getFailureMessageEntity("查询失败,无法确定TOB、TOC!请选择:TOC_ORDER、或者TOB_ORDER!"); } @@ -187,13 +200,17 @@ public class TocofsSaleoutServiceImpl extends BaseService tocofsReturnGoodsDetailedDtos = iTocofsReturngoodsDetailedDao.queryEntityListBaseToc(tocofsSaleoutDetailedEntity); return BaseResult.getSuccessMessageEntity("查询成功", tocofsReturnGoodsDetailedDtos); - } else if (businessType.equals("TOB_ORDER")) { + } else if (businessType.equals("TOB_RETURN")) { //TOB退货 List tobofsReturnGoodsDetailedDtos = iTocofsReturngoodsDetailedDao.queryEntityListBaseTob(tocofsSaleoutDetailedEntity); return BaseResult.getSuccessMessageEntity("查询成功", tobofsReturnGoodsDetailedDtos); @@ -333,22 +351,30 @@ public class TocofsSaleoutServiceImpl extends BaseService tocofsSaleoutDetailedEntityList = (List) jsonResultEntity.getAttribute(); - EasyExcel.write(excelFile[0], TocofsSaleoutDetailedDto.class).withTemplate(templateFileName).sheet().doWrite(tocofsSaleoutDetailedEntityList); - } else if (businessType.equals("TOB_ORDER")) { - List tobofsSaleoutDetailedEntityList = (List) jsonResultEntity.getAttribute(); - EasyExcel.write(excelFile[0], TobofsSaleoutDetailedDto.class).withTemplate(templateFileName).sheet().doWrite(tobofsSaleoutDetailedEntityList); + if (businessType.equals("TOC_RETURN")) { + List tocofsSaleoutDetailedEntityList = (List) jsonResultEntity.getAttribute(); + EasyExcel.write(excelFile[0], TocofsReturnGoodsDetailedDto.class).withTemplate(templateFileName).sheet().doWrite(tocofsSaleoutDetailedEntityList); + return BaseResult.getSuccessMessageEntity(excelFile[1]); + } else if (businessType.equals("TOB_RETURN")) { + List tobofsSaleoutDetailedEntityList = (List) jsonResultEntity.getAttribute(); + EasyExcel.write(excelFile[0], TobofsReturnGoodsDetailedDto.class).withTemplate(templateFileName).sheet().doWrite(tobofsSaleoutDetailedEntityList); + return BaseResult.getSuccessMessageEntity(excelFile[1]); } else { return BaseResult.getFailureMessageEntity("查询失败,无法确定TOB、TOC!请选择:TOC_ORDER、或者TOB_ORDER!"); } diff --git a/webapp/src/main/java/com/hzya/frame/webapp/entrance/controler/EntranceController.java b/webapp/src/main/java/com/hzya/frame/webapp/entrance/controler/EntranceController.java index d2d0df3c..f9b3403c 100644 --- a/webapp/src/main/java/com/hzya/frame/webapp/entrance/controler/EntranceController.java +++ b/webapp/src/main/java/com/hzya/frame/webapp/entrance/controler/EntranceController.java @@ -13,7 +13,9 @@ import com.hzya.frame.web.entity.BaseResult; import com.hzya.frame.web.entity.JsonResultEntity; import com.hzya.frame.web.exception.BaseSystemException; 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.ibatis.annotations.Param; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -70,11 +72,13 @@ public class EntranceController { protected IFileDownloadService filedownloadService; @Resource protected ISysApplicationService sysApplicationService; + @RequestMapping(value = "/option") @ResponseBody public JsonResultEntity option(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception { return entranceService.doBusiness(servletRequest, servletResponse); } + //平台接口 @RequestMapping(value = "/platformInterface") @ResponseBody @@ -93,11 +97,11 @@ public class EntranceController { JsonResultEntity jsonResultEntity = null; logger.info("-------------------开始调用上传文件upload接口-------------------"); try { - jsonResultEntity = entranceService.fileUpload(file, entity,servletRequest,servletResponse); + jsonResultEntity = entranceService.fileUpload(file, entity, servletRequest, servletResponse); entity.setSuccess(true); } catch (Exception e) { entity.setFileFlag(false); - logger.error("文件上传失败"+e.getMessage()); + logger.error("文件上传失败" + e.getMessage()); } logger.info("-------------------结束调用上传文件upload接口-------------------"); @@ -115,7 +119,7 @@ public class EntranceController { JsonResultEntity jsonResultEntity = null; logger.info("-------------------开始调用上传文件upload接口-------------------"); try { - jsonResultEntity = entranceService.fileUpload(file, entity,servletRequest,servletResponse); + jsonResultEntity = entranceService.fileUpload(file, entity, servletRequest, servletResponse); } catch (Exception e) { jsonResultEntity = BaseResult.getFailureMessageEntity(e.getMessage()); } @@ -125,11 +129,11 @@ public class EntranceController { @RequestMapping(value = "/pluginfileUpload", method = RequestMethod.POST) @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; logger.info("-------------------开始调用上传插件附件upload接口-------------------"); try { - jsonResultEntity = entranceService.pluginfileUpload(file, entity,pluginPackageName,servletRequest,servletResponse); + jsonResultEntity = entranceService.pluginfileUpload(file, entity, pluginPackageName, servletRequest, servletResponse); } catch (Exception e) { jsonResultEntity = BaseResult.getFailureMessageEntity(e.getMessage()); } @@ -139,10 +143,10 @@ public class EntranceController { @ResponseBody @RequestMapping(value = "/pluginZipUpdate") - public JsonResultEntity pluginZipUpate(FileUploadDto fileUploadDto){ + public JsonResultEntity pluginZipUpate(FileUploadDto fileUploadDto) { JsonResultEntity jsonResultEntity = null; logger.info("-------------------开始调用插件更新接口-------------------"); - try{ + try { jsonResultEntity = entranceService.pluginZipUpate(fileUploadDto); } catch (Exception e) { jsonResultEntity = BaseResult.getFailureMessageEntity(e.getMessage()); @@ -152,13 +156,12 @@ public class EntranceController { } - - /** - * 根据文件保存的新名称下载文件 - * - * @param fileSaveName - * @return - */ + /** + * 根据文件保存的新名称下载文件 + * + * @param fileSaveName + * @return + */ @RequestMapping(value = "/option/fileDownload") public ResponseEntity fileDownload(String fileSaveName) { ResponseEntity responseEntity = null; @@ -174,17 +177,18 @@ public class EntranceController { responseEntity = new ResponseEntity(FileUtils.readFileToByteArray(fileDownloadEntity.getFile()), headers, HttpStatus.CREATED); } catch (Exception e) { - logger.error("文件下载失败"+e.getMessage()); + logger.error("文件下载失败" + e.getMessage()); } return responseEntity; } + /** * 根据文件保存的新名称下载文件 * * @return */ @RequestMapping(value = "/fileDownloadNew") - public ResponseEntity fileDownloadNew(String id) throws Exception { + public ResponseEntity fileDownloadNew(String id) throws Exception { ResponseEntity responseEntity = null; try { HttpHeaders headers = new HttpHeaders(); @@ -197,42 +201,65 @@ public class EntranceController { headers.setContentDispositionFormData("attachment", fileName); responseEntity = new ResponseEntity(FileUtils.readFileToByteArray(fileDownloadEntity.getFile()), headers, HttpStatus.CREATED); } catch (IOException e) { - logger.error("文件下载失败"+e.getMessage()); + logger.error("文件下载失败" + e.getMessage()); } catch (BaseSystemException e) { - logger.error("文件下载失败"+e.getMessage()); + logger.error("文件下载失败" + e.getMessage()); } return responseEntity; } + @RequestMapping(value = "/testOption") @ResponseBody - public EsbReturnEntity testOption(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception { - return entranceService.doTstsBusiness(servletRequest,servletResponse); + public EsbReturnEntity testOption(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception { + return entranceService.doTstsBusiness(servletRequest, servletResponse); } @RequestMapping(value = "/externalCallInterface") @ResponseBody - public JsonResultEntity externalCallInterface(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception { - return sysApplicationService.externalCallInterface(servletRequest,servletResponse); + public JsonResultEntity externalCallInterface(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception { + return sysApplicationService.externalCallInterface(servletRequest, servletResponse); } @RequestMapping(value = "/externalCallInterfaceResend") @ResponseBody - public JsonResultEntity externalCallInterfaceResend(SysMessageManageLogEntity resendLogEntity) throws Exception { - return sysApplicationService.externalCallInterfaceResend(resendLogEntity); + public JsonResultEntity externalCallInterfaceResend(SysMessageManageLogEntity resendLogEntity) throws Exception { + return sysApplicationService.externalCallInterfaceResend(resendLogEntity); } @RequestMapping(value = "/externalCallInterfaceToESB") @ResponseBody - public JsonResultEntity externalCallInterfaceToESB(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception { - return sysApplicationService.externalCallInterfaceToESB(servletRequest,servletResponse); + public JsonResultEntity externalCallInterfaceToESB(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception { + return sysApplicationService.externalCallInterfaceToESB(servletRequest, servletResponse); } @RequestMapping(value = "/erpSso") @ResponseBody - public String erpSso(HttpServletRequest request, HttpServletResponse response, String ticket) throws Exception { - response.sendRedirect(bipSsoService.erpSso(request,ticket)); + public String erpSso(HttpServletRequest request, HttpServletResponse response, String ticket) throws Exception { + response.sendRedirect(bipSsoService.erpSso(request, ticket)); 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()); + } + } } diff --git a/webapp/src/main/java/com/hzya/frame/webapp/entrance/util/FileDownloadUtil.java b/webapp/src/main/java/com/hzya/frame/webapp/entrance/util/FileDownloadUtil.java new file mode 100644 index 00000000..d073a241 --- /dev/null +++ b/webapp/src/main/java/com/hzya/frame/webapp/entrance/util/FileDownloadUtil.java @@ -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; + +/** + * 文件下载处理方法 + * + * @Author:liuyang + * @Package:com.hzya.frame.webapp.entrance.util + * @Project:kangarooDataCenter + * @name:FileDownloadUtil + * @Date:2024/7/19 17:08 + * @Filename:FileDownloadUtil + */ +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(); + } +} \ No newline at end of file