From 247493f0980f703d163620ccc139b25927c28f8f Mon Sep 17 00:00:00 2001 From: lige <bestlige@outlook.com> Date: 星期二, 05 三月 2024 18:21:03 +0800 Subject: [PATCH] 文件服务器 --- ltkj-admin/src/main/java/com/ltkj/web/controller/app/ReportController.java | 129 +++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 123 insertions(+), 6 deletions(-) diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/app/ReportController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/app/ReportController.java index 1f5a29b..b8fc5c3 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/controller/app/ReportController.java +++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/app/ReportController.java @@ -2,15 +2,20 @@ import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.io.FileUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.ltkj.common.core.controller.BaseController; import com.ltkj.common.core.domain.AjaxResult; import com.ltkj.common.core.page.TableDataInfo; +import com.ltkj.common.utils.SecurityUtils; import com.ltkj.common.utils.StringUtils; import com.ltkj.framework.config.UserHoder; import com.ltkj.hosp.domain.*; import com.ltkj.hosp.service.*; +import com.ltkj.mall.mallOrderUtils.TjConstants; +import com.ltkj.web.config.pdfutils.PDFBinaryUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; @@ -21,13 +26,13 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import org.springframework.web.server.session.InMemoryWebSessionStore; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.net.URL; import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -236,6 +241,8 @@ return AjaxResult.success("璇ュ鎴峰湪娌℃湁浣撴椤圭洰鏁版嵁锛�"); } + + /** * 灏忕▼搴忕偣鍑讳綋妫�鎶ュ憡鏌ヨ璇︽儏,鏄剧ず韬珮浣撻噸浣撻噸鎸囨暟鏀剁缉鍘嬭垝寮犲帇 */ @@ -314,17 +321,127 @@ } + + + /** * 灏忕▼搴忕偣鍑讳笅杞芥姤鍛� */ @GetMapping("/downloadReport") @ApiOperation(value = "灏忕▼搴�-涓嬭浇鎶ュ憡") public AjaxResult downloadReport(@RequestParam @ApiParam(value = "浣撴鍙�") String tjNumber) { - Map<String, Object> map = new HashMap<>(); - return AjaxResult.success(map); + Map<String,String> res=new HashMap<>(); + LambdaQueryWrapper<TjReport> we = new LambdaQueryWrapper<>(); + we.eq(TjReport::getTjNumber, tjNumber); + we.eq(TjReport::getType, "浣撴鎶ュ憡"); + TjReport one = reportService.getOne(we); + if ("pdf".equals(one.getPrint())){ + res.put("flag","0"); + res.put("url",one.getPath()); + return AjaxResult.success(res); + }else if ("鎶ヨ〃".equals(one.getPrint())){ + res.put("flag","1"); + res.put("url",one.getPath()); + return AjaxResult.success(res); + }else { + return AjaxResult.error("鏆傛棤浣撴鎶ュ憡"); + } } + + @GetMapping("/preview/{flag}/{TjNumber}") + @ApiOperation(value = "涓嬭浇浣撴鎶ュ憡") + public void preview(HttpServletResponse response, @PathVariable("flag") boolean flag, @PathVariable("TjNumber") String tjNumber) { + //淇敼order琛ㄤ腑鐨勪笅杞芥姤鍛婃椂闂翠负褰撳墠鏃堕棿 +// LambdaUpdateWrapper<TjOrder> updateWrapper = new LambdaUpdateWrapper<>(); +// updateWrapper.eq(TjOrder::getTjNumber, tjNumber); +// updateWrapper.set(TjOrder::getPrintLastTime, new Date()); +// updateWrapper.set(TjOrder::getDownloadLastTime, new Date()); +// updateWrapper.set(TjOrder::getStatus, TjConstants.TJ_END); +// orderService.update(updateWrapper); + + + LambdaQueryWrapper<TjOrder> wq1 = new LambdaQueryWrapper<>(); + wq1.eq(TjOrder::getTjNumber, tjNumber); + TjOrder tjOrder = orderService.getOne(wq1); + + + LambdaQueryWrapper<TjCustomer> wq2 = new LambdaQueryWrapper<>(); + wq2.eq(TjCustomer::getCusId, tjOrder.getUserId()); + TjCustomer tjCustomer = customerService.getOne(wq2); + + + LambdaQueryWrapper<TjReport> we = new LambdaQueryWrapper<>(); + we.eq(TjReport::getTjNumber, tjNumber); + we.eq(TjReport::getType, "浣撴鎶ュ憡"); + TjReport one = reportService.getOne(we); + if (one == null) { + return; + } + final UUID uuid = UUID.randomUUID(); + final String substring = uuid.toString().substring(0, 5); + +// String userId = SecurityUtils.getLoginUser().getUsername(); + PDFBinaryUtil.base64StringToPDF(one.getReport(), FileUtil.mkdir(value).getPath() + "\\" +substring+ tjNumber + tjCustomer.getCusName() + "_浣撴鎶ュ憡.pdf"); + //String filePath = one.getPath(); + String filePath = value + "\\" +substring + tjNumber + tjCustomer.getCusName() + "_浣撴鎶ュ憡.pdf"; + File f = new File(filePath); + if (filePath.isEmpty()) { + System.out.println("鏂囦欢涓嶅瓨鍦紒"); + return; + } + BufferedInputStream br = null; + OutputStream out = null; + FileInputStream fileInputStream = null; + try { + fileInputStream = new FileInputStream(f); + br = new BufferedInputStream(fileInputStream); + byte[] bs = new byte[1024]; + int len = 0; + response.reset(); // 闈炲父閲嶈 + if (flag) { + // 鍦ㄧ嚎鎵撳紑鏂瑰紡 + URL u = new URL("file:///" + filePath); + //System.out.println(u); + String contentType = u.openConnection().getContentType(); + response.setContentType(contentType); + response.setHeader("Content-Disposition", "inline;filename=" + +substring+ tjNumber + ".pdf"); + } else { + // 绾笅杞芥柟寮� + response.setContentType("application/x-msdownload"); + response.setContentType("application/pdf;charset=utf-8"); + response.setHeader("Content-Disposition", "attachment;filename=" + +substring+ tjNumber + ".pdf"); + } + out = response.getOutputStream(); + while ((len = br.read(bs)) > 0) { + out.write(bs, 0, len); + } + out.flush(); + out.close(); + br.close(); + fileInputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + //System.out.println("pdf澶勭悊鏂囦欢寮傚父" + e); + } finally { + if (out != null) { + try { + out.close(); + br.close(); + fileInputStream.close(); + + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + + /** * 灏忕▼搴忔煡璇綋妫�鍘嗗彶鎶ュ憡鍒楄〃 */ -- Gitblit v1.8.0