lyfO_o
2022-11-22 bf5c4ee596773ad69b135949a7f40257251d7613
易制毒台账表头提交,具体数据无法查出
已修改1个文件
已添加2个文件
232 ■■■■■ 文件已修改
src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/AccountInAndOutService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/AccountInAndOutServiceImpl.java 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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) {
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) ;
}
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);
    }
}