From af5b6f3036c7d2810cc90d51e1f0c8b875c0b25a Mon Sep 17 00:00:00 2001 From: ruanqi Date: Thu, 23 Nov 2023 17:28:31 +0800 Subject: [PATCH] =?UTF-8?q?0412=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ftp/controller/SysFtpController.java | 35 +++--- .../modules/oss/service/SysOssService.java | 24 ++++ .../oss/service/impl/SysOssServiceImpl.java | 107 +++++++++++++++++- .../modules/taskmanage/dao/TaskDetailDao.java | 9 ++ .../service/impl/TaskDetailServiceImpl.java | 2 +- src/main/resources/application.yml | 3 +- .../mapper/taskmanage/TaskDatailDao.xml | 69 +++++++++++ 7 files changed, 227 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/heai/modules/ftp/controller/SysFtpController.java b/src/main/java/com/heai/modules/ftp/controller/SysFtpController.java index 94b6c81..bd26d2a 100644 --- a/src/main/java/com/heai/modules/ftp/controller/SysFtpController.java +++ b/src/main/java/com/heai/modules/ftp/controller/SysFtpController.java @@ -10,6 +10,7 @@ import com.heai.common.utils.ConfigConstant; import com.heai.common.utils.PageUtils; import com.heai.common.utils.R; import com.heai.common.utils.RandomUtil; +import com.heai.modules.factory.entity.TblBaseDataEntity; import com.heai.modules.ftp.util.FTPUtils; import com.heai.modules.oss.entity.SysOssEntity; import com.heai.modules.oss.service.SysOssService; @@ -28,10 +29,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileOutputStream; -import java.io.InputStream; -import java.io.OutputStream; +import java.io.*; import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.Date; @@ -167,22 +165,23 @@ public class SysFtpController extends AbstractController { @GetMapping("/downFtpFile/{id}") public void downFtpFile(@PathVariable("id") Long id, HttpServletResponse response){ -// SysOssEntity resultData =sysOssService.getById(id); -// String path = System.getProperty("user.dir"); -// File file = new File(path+"/"+resultData.getFileName()); -// FTPUtils.ftpDownload(resultData.getUrl(),resultData.getFileName(),file); -// HttpHeaders headers = new HttpHeaders(); -// headers.add("Cache-Control", "no-cache, no-store, must-revalidate"); -// headers.add("Content-Disposition", "attachment; filename=" + file.getName()); -// headers.add("Pragma", "no-cache"); -// headers.add("Expires", "0"); -// headers.add("Last-Modified", new Date().toString()); -// headers.add("ETag", String.valueOf(System.currentTimeMillis())); -// return ResponseEntity.ok().headers(headers).contentLength(file.length()).contentType(MediaType.parseMediaType("application/octet-stream")).body(new FileSystemResource(file)); -// //FTPUtils.downFile(response,"",resultData.getNewFileName(),resultData.getFileName()); - SysOssEntity resultData =sysOssService.getById(id); FTPUtils.downFile(response,resultData.getUrl(),resultData.getNewFileName(),resultData.getFileName()); } + /** + * @Description 赫艾ftp下载老失败 用固定路径试试 + * @Title downFtpFileNotFtp + * @param id +  * @param response + * @author rq + * @date 2023/11/23 10:47 + * @return void + * @throw + */ + @PostMapping(value = "/downFtpFileNotFtp") + public void downFtpFileNotFtp(@RequestParam("id") Long id, HttpServletResponse response) throws IOException { + sysOssService.downLoadObjectFile( id,response); + } + } diff --git a/src/main/java/com/heai/modules/oss/service/SysOssService.java b/src/main/java/com/heai/modules/oss/service/SysOssService.java index bf9eaac..ecb71ef 100644 --- a/src/main/java/com/heai/modules/oss/service/SysOssService.java +++ b/src/main/java/com/heai/modules/oss/service/SysOssService.java @@ -6,6 +6,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.heai.common.utils.PageUtils; import com.heai.modules.oss.entity.SysOssEntity; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.util.List; import java.util.Map; @@ -27,4 +30,25 @@ public interface SysOssService extends IService { * @date: 2022/9/22 10:02 */ List ossList(SysOssEntity params); + + /** + * @Description TODO + * @Title downLoadObjectFile + * @param + * @author rq + * @date 2023/4/3 15:40 + * @return void + * @throw + */ + void downLoadObjectFile(Long id , HttpServletResponse response) throws IOException; + /** + * @Description TODO + * @Title downLoadObjectFile + * @param + * @author rq + * @date 2023/4/3 15:40 + * @return void + * @throw + */ + void downLoadObjectFile2(Long id , HttpServletResponse response) throws IOException; } diff --git a/src/main/java/com/heai/modules/oss/service/impl/SysOssServiceImpl.java b/src/main/java/com/heai/modules/oss/service/impl/SysOssServiceImpl.java index b8f5bf8..476dc08 100644 --- a/src/main/java/com/heai/modules/oss/service/impl/SysOssServiceImpl.java +++ b/src/main/java/com/heai/modules/oss/service/impl/SysOssServiceImpl.java @@ -9,16 +9,22 @@ import com.heai.common.utils.Query; import com.heai.modules.oss.dao.SysOssDao; import com.heai.modules.oss.entity.SysOssEntity; import com.heai.modules.oss.service.SysOssService; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.*; import java.util.List; import java.util.Map; - +@Slf4j @Service("sysOssService") public class SysOssServiceImpl extends ServiceImpl implements SysOssService { - + @Value("${ftp.location}") + private String ftpLocation; @Override public PageUtils queryPage(Map params) { IPage page = this.page( @@ -34,4 +40,101 @@ public class SysOssServiceImpl extends ServiceImpl impl } + + + @Override + public void downLoadObjectFile(Long id, HttpServletResponse response) throws IOException { + //处理路径和名称 + // List getFileData = eamObjectMapper.getFileData(id); + SysOssEntity resultData =getById(id); + if(resultData == null){ + throw new RuntimeException("该文件不存在,请刷新列表"); + } + String fileAddress=ftpLocation+"/"+resultData.getUrl()+"/"+resultData.getNewFileName(); + fileAddress=fileAddress.replace("/","\\"); + log.info("下载文件地址:" + fileAddress); + File file = new File(fileAddress); + //读取缓存1kb + byte[] buffer = new byte[1024]; + FileInputStream fis = null; + BufferedInputStream bis = null; + FileOutputStream fos = null; + BufferedOutputStream bos = null; + response.setContentType("application/force-download;charset=utf-8"); + String encodedFileName = new String(resultData.getFileName().getBytes("gbk"), "iso8859-1"); + response.setHeader("Content-disposition", "attachment; filename=\"" + encodedFileName + "\""); + // log.info("下载文件名称:" + encodedFileName); + //response.setHeader("Content-disposition", "attachment; filename=" + new String(resultData.getFileName().getBytes("UTF-8"),"ISO-8859-1")); + // response.setHeader("Content-disposition", "attachment; filename=\"" + resultData.getFileName() + "\""); + try { + //读取文件 + fis = new FileInputStream(file); + //加缓存 + bis = new BufferedInputStream(fis); + //开始读取 + int i = bis.read(buffer); + //设置输出流 + ServletOutputStream os = response.getOutputStream(); + //开始循环读取 + while (i != -1) { + os.write(buffer, 0, i); + i = bis.read(buffer); + } + os.close(); + } catch (Exception e) { + throw new RuntimeException(e.getMessage()); + }finally { + if(bis != null) { + bis.close(); + } + if(fis != null) { + fis.close(); + } + + if(bos != null) { + bos.close(); + } + if(fos != null) { + fos.close(); + } + } + + } + + @Override + public void downLoadObjectFile2(Long id, HttpServletResponse response) throws IOException { + //处理路径和名称 + // List getFileData = eamObjectMapper.getFileData(id); + SysOssEntity resultData =getById(id); + if(resultData == null){ + throw new RuntimeException("该文件不存在,请刷新列表"); + } + String fileAddress=ftpLocation+"/"+resultData.getUrl()+"/"+resultData.getNewFileName(); + fileAddress=fileAddress.replace("/","\\"); + log.info("下载文件地址:" + fileAddress); + File file = new File(fileAddress); + try { + if (file.exists()) { + // 设置响应头 + response.setContentType("application/octet-stream"); + response.setHeader("Content-Disposition", "attachment; filename=" + resultData.getFileName()); + + // 读取文件并输出到响应流 + FileInputStream fis = new FileInputStream(file); + OutputStream os = response.getOutputStream(); + byte[] buffer = new byte[1024]; + int bytesRead; + while ((bytesRead = fis.read(buffer)) != -1) { + os.write(buffer, 0, bytesRead); + } + fis.close(); + os.close(); + } else { + throw new RuntimeException("该文件不存在!"); + } + } catch (Exception e) { + throw new RuntimeException(e.getMessage()); + } + + } } diff --git a/src/main/java/com/heai/modules/taskmanage/dao/TaskDetailDao.java b/src/main/java/com/heai/modules/taskmanage/dao/TaskDetailDao.java index 24a2abe..cfe0b41 100644 --- a/src/main/java/com/heai/modules/taskmanage/dao/TaskDetailDao.java +++ b/src/main/java/com/heai/modules/taskmanage/dao/TaskDetailDao.java @@ -29,6 +29,15 @@ public interface TaskDetailDao extends BaseMapper { */ List taskDetailList(TaskListVo params); + /** + * @author: sxm + * @description: 下达任务具体明细 + * @param [params] + * @return: java.util.List + * @date: 2022/10/6 18:46 + */ + List taskDetailListPC(TaskListVo params); + /** * @author: sxm * @description: 任务看板数据 diff --git a/src/main/java/com/heai/modules/taskmanage/service/impl/TaskDetailServiceImpl.java b/src/main/java/com/heai/modules/taskmanage/service/impl/TaskDetailServiceImpl.java index 93f3bc0..faad738 100644 --- a/src/main/java/com/heai/modules/taskmanage/service/impl/TaskDetailServiceImpl.java +++ b/src/main/java/com/heai/modules/taskmanage/service/impl/TaskDetailServiceImpl.java @@ -49,7 +49,7 @@ public class TaskDetailServiceImpl extends ServiceImpl taskDetailList(TaskListVo params) { - return this.baseMapper.taskDetailList(params); + return this.baseMapper.taskDetailListPC(params); } @Override diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 90083b0..7a4d2aa 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -78,4 +78,5 @@ ftp: ftpIp: '192.168.1.83' ftpPart: 21 ftpUser: 'xjftpUser' - ftpPwd: 'xjftp123' \ No newline at end of file + ftpPwd: 'xjftp123' + location: 'D:/FTPFiles' \ No newline at end of file diff --git a/src/main/resources/mapper/taskmanage/TaskDatailDao.xml b/src/main/resources/mapper/taskmanage/TaskDatailDao.xml index c448d61..f33612a 100644 --- a/src/main/resources/mapper/taskmanage/TaskDatailDao.xml +++ b/src/main/resources/mapper/taskmanage/TaskDatailDao.xml @@ -80,6 +80,75 @@ + + +