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