From bf5c4ee596773ad69b135949a7f40257251d7613 Mon Sep 17 00:00:00 2001 From: lyfO_o <764716047@qq.com> Date: 星期二, 22 十一月 2022 15:16:43 +0800 Subject: [PATCH] 易制毒台账表头提交,具体数据无法查出 --- src/main/java/com/nanometer/smartlab/service/AccountInAndOutServiceImpl.java | 212 +++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/nanometer/smartlab/service/AccountInAndOutService.java | 10 ++ src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java | 10 ++ 3 files changed, 230 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java b/src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java index d7d1c54..231bd26 100644 --- a/src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java +++ b/src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java @@ -22,6 +22,7 @@ import org.primefaces.model.LazyDataModel; import org.primefaces.model.SortOrder; import org.primefaces.model.StreamedContent; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.PropertySource; import org.springframework.context.annotation.Scope; @@ -176,6 +177,8 @@ private boolean isExpired; private Hashtable printTable; + @Autowired + private AccountInAndOutService accountInAndOutService; public Hashtable getPrintTable() { return printTable; @@ -2113,8 +2116,11 @@ public void onExportOutAndIn(){ - - + FacesContext currentInstance = FacesContext.getCurrentInstance(); + currentInstance.responseComplete(); + ExternalContext etx = currentInstance.getExternalContext(); + HttpServletResponse resp = (HttpServletResponse) etx.getResponse(); + accountInAndOutService.exportExcel(resp); } public HSSFWorkbook exportExcelNew(List<String> headerList, List<OpeWarehouseReserve> dataList) { diff --git a/src/main/java/com/nanometer/smartlab/service/AccountInAndOutService.java b/src/main/java/com/nanometer/smartlab/service/AccountInAndOutService.java new file mode 100644 index 0000000..8299356 --- /dev/null +++ b/src/main/java/com/nanometer/smartlab/service/AccountInAndOutService.java @@ -0,0 +1,10 @@ +package com.nanometer.smartlab.service; + +import javax.servlet.http.HttpServletResponse; +import java.io.UnsupportedEncodingException; + +public interface AccountInAndOutService { + + + void exportExcel(HttpServletResponse resp) ; +} diff --git a/src/main/java/com/nanometer/smartlab/service/AccountInAndOutServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/AccountInAndOutServiceImpl.java new file mode 100644 index 0000000..1794fd6 --- /dev/null +++ b/src/main/java/com/nanometer/smartlab/service/AccountInAndOutServiceImpl.java @@ -0,0 +1,212 @@ +package com.nanometer.smartlab.service; + +import com.nanometer.smartlab.exception.BusinessException; +import com.nanometer.smartlab.exception.ExceptionEnumCode; +import org.apache.poi.hssf.usermodel.*; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.apache.poi.ss.usermodel.IndexedColors; +import org.apache.poi.ss.usermodel.VerticalAlignment; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.ss.util.RegionUtil; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletResponse; +import java.io.OutputStream; +import java.net.URLEncoder; + + +@Service("accountInAndOutService") +public class AccountInAndOutServiceImpl implements AccountInAndOutService { + + + + @Override + public void exportExcel(HttpServletResponse resp) { + + try { + // 创建文档对象 + HSSFWorkbook wb = new HSSFWorkbook(); + // 创建sheet对象 + HSSFSheet sheet = wb.createSheet("出入库 台账"); + + sheet.setDefaultRowHeight((short) (20 * 20)); + + //设置字体 + HSSFFont headFont = wb.createFont(); + headFont.setFontName("宋体"); + headFont.setFontHeightInPoints((short) 11); + headFont.setBold(true); + HSSFFont bodyFont = wb.createFont(); + bodyFont.setFontName("宋体"); + bodyFont.setFontHeightInPoints((short) 10); + + + // 边框颜色和样式 + HSSFCellStyle defaultBorderStyle = wb.createCellStyle(); + defaultBorderStyle.setBorderBottom(BorderStyle.THIN); + defaultBorderStyle.setBottomBorderColor(IndexedColors.BLACK.index); + defaultBorderStyle.setBorderTop(BorderStyle.THIN); + defaultBorderStyle.setTopBorderColor(IndexedColors.BLACK.index); + defaultBorderStyle.setBorderLeft(BorderStyle.THIN); + defaultBorderStyle.setLeftBorderColor(IndexedColors.BLACK.index); + defaultBorderStyle.setBorderRight(BorderStyle.THIN); + defaultBorderStyle.setRightBorderColor(IndexedColors.BLACK.index); + + // 默认字体和剧中 + HSSFCellStyle defaultStyle = wb.createCellStyle(); + defaultStyle.setFont(bodyFont); + defaultStyle.setWrapText(true); + defaultStyle.setAlignment(HorizontalAlignment.CENTER); + defaultStyle.setVerticalAlignment(VerticalAlignment.CENTER); + + // 默认标题头部样式 + HSSFCellStyle defaultHeadStyle = wb.createCellStyle(); + defaultHeadStyle.setFont(headFont); + defaultHeadStyle.setWrapText(true); + defaultHeadStyle.setAlignment(HorizontalAlignment.CENTER); + defaultHeadStyle.setVerticalAlignment(VerticalAlignment.CENTER); + + // 固定列数和设置宽度 + int[] width = {10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}; + for (int columnIndex = 0; columnIndex < width.length; columnIndex++) { + sheet.setColumnWidth(columnIndex, width[columnIndex] * 256); + sheet.setDefaultColumnStyle(columnIndex, defaultBorderStyle); + } + + + // exc + // 0.数据准备 + + + // 1.创建表头 + this.createTableHead(sheet, defaultHeadStyle, defaultStyle, "", 0); + // 2.创建数据行 + // 过滤出数据 +// this.createTableBody(sheet, defaultHeadStyle, defaultStyle, 3); + + // 返回文件 + String filename = "2022年易制毒出入库台账.xlsx"; + resp.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); + resp.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8")); + OutputStream outputStream = resp.getOutputStream(); + wb.write(outputStream); + outputStream.flush(); + outputStream.close(); + } catch (Exception e) { + e.printStackTrace(); + throw new BusinessException(ExceptionEnumCode.PARAM_ERR, "系统导出失败,请联系管理员"); + } + + } + + + + + private void setBorder(CellRangeAddress region, HSSFSheet sheet){ + RegionUtil.setBorderBottom(BorderStyle.THIN, region, sheet); + RegionUtil.setBorderTop(BorderStyle.THIN, region, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, region, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, region, sheet); + } + + + private void createTableHead(HSSFSheet sheet, HSSFCellStyle defaultHeadStyle, HSSFCellStyle defaultStyle, String title, int i) { + + // 一月易制毒化学品出入库台账 + HSSFRow row0 = sheet.createRow(i); + HSSFCell cell00 = row0.createCell(i); + // 设置默认行高 不然 row 可以自定义 + + cell00.setCellStyle(defaultHeadStyle); + cell00.setCellValue("一月易制毒化学品出入库台账"); + CellRangeAddress cra = new CellRangeAddress(i, i, 0, 9); + setBorder(cra, sheet); + sheet.addMergedRegion(cra); + // 品名:乙醚(单位:L) + HSSFCell cell01 = row0.createCell(10); + cell01.setCellStyle(defaultStyle); + cell01.setCellValue("品名:乙醚(单位:L)"); + CellRangeAddress cra0 = new CellRangeAddress(i, i, 10, 13); + setBorder(cra0, sheet); + sheet.addMergedRegion(cra0); + // 换行 + HSSFRow row1 = sheet.createRow(i + 1); +// row1.setHeight((short) (20 * 20)); + // 日期 + HSSFCell cell10 = row1.createCell(0); + cell10.setCellStyle(defaultStyle); + cell10.setCellValue("日期"); + CellRangeAddress cra10 = new CellRangeAddress(i + 1, i + 2, 0, 0); + setBorder(cra10, sheet); + sheet.addMergedRegion(cra10); + // 入库 + HSSFCell cell11 = row1.createCell(1); + cell11.setCellStyle(defaultStyle); + cell11.setCellValue("入库"); + CellRangeAddress address = new CellRangeAddress(i + 1, i + 1, 1, 5); + setBorder(address, sheet); + sheet.addMergedRegion(address); + + // 出库 + HSSFCell cell12 = row1.createCell(6); + cell12.setCellStyle(defaultStyle); + cell12.setCellValue("出库"); + CellRangeAddress cra12 = new CellRangeAddress(i + 1, i + 1, 6, 11); + setBorder(cra12, sheet); + sheet.addMergedRegion(cra12); + + + // 库存数量 + HSSFCell cell13 = row1.createCell(12); + cell13.setCellStyle(defaultStyle); + cell13.setCellValue("库存数量"); + CellRangeAddress cra13 = new CellRangeAddress(i + 1, i + 2, 12, 13); + setBorder(cra13, sheet); + sheet.addMergedRegion(cra13); + + + HSSFRow row2 = sheet.createRow(i + 2); + // 入库数量 + HSSFCell cell21 = row2.createCell(1); + cell21.setCellStyle(defaultStyle); + cell21.setCellValue("入库数量"); + + // 入库单号 + HSSFCell cell22 = row2.createCell(2); + cell22.setCellStyle(defaultStyle); + cell22.setCellValue("入库单号"); + CellRangeAddress cra22 = new CellRangeAddress(i + 2, i + 2, 2, 4); + setBorder(cra22, sheet); + sheet.addMergedRegion(cra22); + + + // 保管员 + HSSFCell cell23 = row2.createCell(5); + cell23.setCellStyle(defaultStyle); + cell23.setCellValue("保管员"); + + // 出库数量 + HSSFCell cell24 = row2.createCell(6); + cell24.setCellStyle(defaultStyle); + cell24.setCellValue("出库数量"); + + + // 领料单号 + HSSFCell cell25 = row2.createCell(7); + cell25.setCellStyle(defaultStyle); + cell25.setCellValue("领料单号"); + CellRangeAddress cra25 = new CellRangeAddress(i + 2, i + 2, 7, 9); + setBorder(cra25, sheet); + sheet.addMergedRegion(cra25); + + // 经手人 + HSSFCell cell26 = row2.createCell(10); + cell26.setCellStyle(defaultStyle); + cell26.setCellValue("经手人"); + CellRangeAddress cra26 = new CellRangeAddress(i + 2, i + 2, 10, 11); + setBorder(cra26, sheet); + sheet.addMergedRegion(cra26); + } + +} -- Gitblit v1.9.2