diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java index 7e10f6cc..6068ac1c 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java @@ -14,7 +14,13 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; import java.math.BigDecimal; +import java.net.URLEncoder; import java.util.*; import java.util.concurrent.TimeUnit; @@ -35,7 +41,7 @@ public class DepositoryRecordController { private MaterialService materialService; @Autowired - private CompanyService companyService; + private ExcelService excelService; @Autowired private RedisTemplate redisTemplateForHash; @Autowired @@ -1554,4 +1560,55 @@ public class DepositoryRecordController { } + // 用于下载待打印出库订单 + @GetMapping("/downloadOutRecord") + public void downloadOutRecord(@RequestParam Map map, HttpServletRequest request, HttpServletResponse response){ + String token = request.getHeader("user-token"); + if (token == null) { + token = (String) request.getSession().getAttribute("userToken"); + } + UserByPort userToken = AuthenticationTokenPool.getUserToken(token); + if(map.containsKey("id")){ + Integer id = ObjectFormatUtil.toInteger(map.get("id")); + List strings = excelService.writeExcelForPrint(id, 4, userToken); + List files = new ArrayList<>(); + for (String string : strings) { + File file = new File(string); + files.add(file); + } + ZipMultiFileUtil.zipDownload(response,"出库订单.zip",files); + ZipMultiFileUtil.deleteFile(files); + /*try { + + String path = "static/upload/materialTypeImport.xlsx"; + + String fileName = "materialTypeImport.xlsx"; + response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); + response.setContentType("content-type:octet-stream"); + *//* .getClassLoader() 方法是在静态文件路径添加一个/ *//* + InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(path); + OutputStream outputStream = response.getOutputStream(); + try { + byte[] buffer = new byte[1024]; + int len; + assert inputStream != null; + while ((len = inputStream.read(buffer)) != -1) { *//* 将流中内容写出去 .*//* + outputStream.write(buffer, 0, len); + } + }catch (IOException e){ + e.printStackTrace(); + }finally { + assert inputStream != null; + inputStream.close(); + outputStream.close(); + } + } catch (Exception e) { + e.printStackTrace(); + }*/ + }else{ + throw new MyException("缺少必要参数"); + } + } + + } diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/DownLoadFileController.java b/src/main/java/com/dreamchaser/depository_manage/controller/DownLoadFileController.java index 72f8df81..fb6a94a4 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/DownLoadFileController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/DownLoadFileController.java @@ -165,4 +165,6 @@ public class DownLoadFileController { + + } diff --git a/src/main/java/com/dreamchaser/depository_manage/service/ExcelService.java b/src/main/java/com/dreamchaser/depository_manage/service/ExcelService.java index 2a2bc69e..e1080ce2 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/ExcelService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/ExcelService.java @@ -5,6 +5,7 @@ import com.dreamchaser.depository_manage.exception.MyException; import com.dreamchaser.depository_manage.utils.ResultVo; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.util.List; public interface ExcelService { diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/ExcelServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/ExcelServiceImpl.java index fe2bc184..b5d377bd 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/ExcelServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/ExcelServiceImpl.java @@ -19,10 +19,13 @@ import com.dreamchaser.depository_manage.utils.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.io.File; +import java.io.IOException; import java.math.BigDecimal; import java.util.*; import java.util.concurrent.Future; @@ -436,6 +439,7 @@ public class ExcelServiceImpl implements ExcelService { public List writeExcelForPrint(Integer id, Integer pageSize, UserByPort userToken) { // 生成的表格名称列表 List fileNameList = new ArrayList<>(); + // 获取要打印的出库主单 ApplicationOutRecord record = depositoryRecordMapper.findApplicationOutRecordPById(id); // 获取要打印的所有子单 @@ -446,8 +450,9 @@ public class ExcelServiceImpl implements ExcelService { if (recordMinList.size() > pageSize) { pagesum = (int) Math.ceil(recordMinList.size() / (double) pageSize); } + // 读取表格模板 - String templateFileName = "D://PrintTemplate.xlsx"; + String templateFileName = "static/upload/PrintTemplate.xlsx"; // 待打印主数据列表 List data = ListUtils.newArrayList(); @@ -572,8 +577,15 @@ public class ExcelServiceImpl implements ExcelService { data.add(excelInfoByWrite); } // 生成的表格 - String fileName = "D://PrintTemplate" + System.currentTimeMillis() + ".xlsx"; - try (ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate(templateFileName).build()) { + String fileName = System.getProperty("java.io.tmpdir") + File.separator+"PrintTemplate" + System.currentTimeMillis() + ".xlsx"; + ClassPathResource classPathResourceForTemplate = new ClassPathResource(templateFileName); + File fileForTemplate = null; + try { + fileForTemplate = classPathResourceForTemplate.getFile(); + } catch (IOException e) { + e.printStackTrace(); + } + try (ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate(fileForTemplate).build()) { WriteSheet writeSheet = EasyExcel.writerSheet().build(); FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).build(); // 如果有多个list 模板上必须有{前缀.} 这里的前缀就是 data1,然后多个list必须用 FillWrapper包裹 diff --git a/src/main/resources/static/upload/PrintTemplate.xlsx b/src/main/resources/static/upload/PrintTemplate.xlsx index 3ba81511..3d96c02d 100644 Binary files a/src/main/resources/static/upload/PrintTemplate.xlsx and b/src/main/resources/static/upload/PrintTemplate.xlsx differ diff --git a/src/main/resources/templates/pages/application/form-step-look_back.html b/src/main/resources/templates/pages/application/form-step-look_back.html index 7be9cafb..2d1636b9 100644 --- a/src/main/resources/templates/pages/application/form-step-look_back.html +++ b/src/main/resources/templates/pages/application/form-step-look_back.html @@ -18,6 +18,7 @@
+ @@ -30,6 +31,7 @@ +
申请编号 123456
物料名称 @@ -123,6 +125,9 @@