From b306d1106b915bb13fd7a02217ae9c65de2fd03d Mon Sep 17 00:00:00 2001 From: ws183 <1143478319@qq.com> Date: 星期一, 28 四月 2025 17:19:52 +0800 Subject: [PATCH] 新增质检页面附件上传 --- igds-basic/src/main/java/com/ld/igds/basic/controller/FileController.java | 240 ++++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 177 insertions(+), 63 deletions(-) diff --git a/igds-basic/src/main/java/com/ld/igds/basic/controller/FileController.java b/igds-basic/src/main/java/com/ld/igds/basic/controller/FileController.java index 7ba2429..95d231d 100644 --- a/igds-basic/src/main/java/com/ld/igds/basic/controller/FileController.java +++ b/igds-basic/src/main/java/com/ld/igds/basic/controller/FileController.java @@ -2,18 +2,26 @@ import com.ld.igds.basic.manager.FileManager; import com.ld.igds.data.PageResponse; + import lombok.extern.slf4j.Slf4j; + +import org.apache.commons.io.FileUtils; +import org.apache.commons.lang.time.DateUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + import java.io.*; import java.net.URLEncoder; +import java.util.Date; /** * 鏂囦欢涓婁紶鎺ュ彛 @@ -25,81 +33,187 @@ @RequestMapping("basic/file") public class FileController { - @Autowired - private FileManager fileManager; + @Autowired + private FileManager fileManager; - /** - * 闀夸紶 鍑哄叆搴撳浘鐗� - * - * @param file - * @param request - * @return - * @throws IOException - */ - @RequestMapping("/update-file") - public PageResponse<String> updateAreationPos( - @RequestParam(value = "file", required = true) MultipartFile file, - HttpServletRequest request) throws IOException { + /** + * 闀夸紶 鍑哄叆搴撳浘鐗� + * + * @param file + * @param request + * @return + * @throws IOException + */ + @RequestMapping("/update-file") + public PageResponse<String> updateAreationPos( + @RequestParam(value = "file", required = true) MultipartFile file, + HttpServletRequest request) throws IOException { - String plateNum = request.getParameter("plateNum"); + String plateNum = request.getParameter("plateNum"); - return fileManager.upLoadInoutImg(file, plateNum); - } + return fileManager.upLoadInoutImg(file, plateNum); + } + /** + * 涓嬭浇浠庝复鏃剁洰褰曚笅杞斤紝闇�瑕侀」鐩悕绉板拰褰撳墠缁勭粐 + * + * @param request + * @return + * @throws IOException + */ + @RequestMapping("/download-temp") + public int downloadTemp( + @RequestParam(value = "fileName", required = false) String fileName, + @RequestParam(value = "companyId", required = false) String companyId, + HttpServletRequest request, HttpServletResponse response) + throws IOException { - /** - * 涓嬭浇浠庝复鏃剁洰褰曚笅杞斤紝闇�瑕侀」鐩悕绉板拰褰撳墠缁勭粐 - * - * @param request - * @return - * @throws IOException - */ - @RequestMapping("/download-temp") - public int downloadTemp( - @RequestParam(value = "fileName", required = false) String fileName, - @RequestParam(value = "companyId", required = false) String companyId, - HttpServletRequest request, HttpServletResponse response) throws IOException { + if (StringUtils.isEmpty(fileName) || StringUtils.isEmpty(companyId)) { + response.sendError(404, "缂哄皯涓嬭浇鍙傛暟鏉′欢锛屾棤娉曟墽琛屼笅杞姐��"); + return 404; + } + File file = fileManager.getTempFilePath(fileName, companyId); - if (StringUtils.isEmpty(fileName) || StringUtils.isEmpty(companyId)) { - response.sendError(404, "缂哄皯涓嬭浇鍙傛暟鏉′欢锛屾棤娉曟墽琛屼笅杞姐��"); - return 404; - } - File file = fileManager.getTempFilePath(fileName, companyId); + if (!file.exists()) { + response.sendError(404, "娌℃湁鑾峰彇鍒伴渶瑕佷笅杞界殑鏂囦欢锛屽彲鑳藉凡琚垹闄�"); + return 404; + } - if (!file.exists()) { - response.sendError(404, "娌℃湁鑾峰彇鍒伴渶瑕佷笅杞界殑鏂囦欢锛屽彲鑳藉凡琚垹闄�"); - return 404; - } + response.setContentType("application/octet-stream"); + response.setHeader("content-type", "application/octet-stream"); + response.setHeader("Content-Length", String.valueOf(file.length())); + response.setHeader("Content-Disposition", "attachment;fileName=" + + URLEncoder.encode(fileName, "utf8")); + byte[] buffer = new byte[1024]; + OutputStream os; + try (FileInputStream fis = new FileInputStream(file); + BufferedInputStream bis = new BufferedInputStream(fis)) { + os = response.getOutputStream(); + int i = bis.read(buffer); + while (i != -1) { + os.write(buffer); + i = bis.read(buffer); + } - response.setContentType("application/octet-stream"); - response.setHeader("content-type", "application/octet-stream"); - response.setHeader("Content-Length", String.valueOf(file.length())); - response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(fileName, "utf8")); - byte[] buffer = new byte[1024]; + fis.close(); + bis.close(); + os.close(); + os.flush(); + } catch (Exception e) { + response.sendError(500, "鏂囦欢涓嬭浇鍑洪敊锛�" + e.getMessage()); - OutputStream os; - try (FileInputStream fis = new FileInputStream(file); - BufferedInputStream bis = new BufferedInputStream(fis)) { - os = response.getOutputStream(); - int i = bis.read(buffer); - while (i != -1) { - os.write(buffer); - i = bis.read(buffer); - } + log.error("------------鏂囦欢涓嬭浇澶辫触--{}", e); + return 500; + } - fis.close(); - bis.close(); - os.close(); - os.flush(); - } catch (Exception e) { - response.sendError(500, "鏂囦欢涓嬭浇鍑洪敊锛�" + e.getMessage()); + return 200; + } - log.error("------------鏂囦欢涓嬭浇澶辫触--{}", e); - return 500; - } + /** + * 鏂囦欢娴佽幏鍙栧浘鐗囨樉绀哄埌椤甸潰--閽堝浠撳唴鎶撴媿 + * + * @param fileName + * @param timeStr + * 鎶撴媿鐨勫勾鏈堟棩鏃跺垎绉� yyyyMMdd + * @param response + * @return + * @throws IOException + */ + @RequestMapping(value = "/get-snap-depot", method = RequestMethod.GET, produces = { "application/vnd.ms-excel;charset=UTF-8" }) + public String getDepotSnap(String fileName, String timeStr, + HttpServletResponse response) throws IOException { - return 200; - } + // 璁剧疆杩斿洖鍐呭鏍煎紡 + response.setContentType("image/jpeg/jpg/png/gif/bmp/tiff/svg"); + + String filePath; + // 鍒涘缓涓�涓緭鍏ユ祦 + InputStream in = null; + // 鍒涘缓杈撳嚭娴� + OutputStream os = null; + try { + if (null == fileName || null == timeStr) { + filePath = fileManager.getFailImg(); + }else{ + filePath = fileManager.getSnapFilePath(fileName, timeStr); + + File file = new File(filePath); + + if(file.exists()){ + log.debug("----鎶撴媿鍥剧墖鍦板潃-------{}", filePath); + }else{ + filePath = fileManager.getFailImg(); + log.debug("----鏈幏鍙栧埌鍥剧焊锛岄粯璁ゅ湴鍧�-------{}", filePath); + } + } + + // 鐢ㄨ鏂囦欢鍒涘缓涓�涓緭鍏ユ祦 + in = new FileInputStream(filePath); + // 鍒涘缓杈撳嚭娴� + os = response.getOutputStream(); + byte[] b = new byte[1024]; + while (in.read(b) != -1) { + os.write(b); + } + in.close(); + os.close(); + + return null; + + } catch (Exception e) { + e.printStackTrace(); + return null; + } finally { + if (null != in) { + in.close(); + } + if (null != os) { + os.close(); + } + } + } + + /** + * PDF鏂囦欢棰勮 + * @param response + */ + @RequestMapping("/show-pdf") + public void showFile(String fileTime, String fileName, String filePathType, HttpServletResponse response) throws Exception { + + if (!fileName.endsWith(".pdf")) { + return; + } + Date time = DateUtils.parseDate(fileTime, new String[]{"yy-MM-dd HH:mm:ss"}); + + String filePath = fileManager.getPathByType(filePathType, time); + if(StringUtils.isEmpty(filePath)){ + return; + } + + File file = new File(filePath, fileName); + try { + response.setHeader("Content-Disposition", "inline; filename*=UTF-8''" + URLEncoder.encode(file.getName(), "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + + ServletOutputStream os = null; + try { + os = response.getOutputStream(); + os.write(FileUtils.readFileToByteArray(file)); + os.flush(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + if (os != null) { + try { + os.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } } -- Gitblit v1.9.3