From 55f9b16dcdaa97f4bc328f2ecb5096624d19c08e Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 25 一月 2024 10:46:16 +0800
Subject: [PATCH] 开发业务接口

---
 server/service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java |  263 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 259 insertions(+), 4 deletions(-)

diff --git a/server/service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java b/server/service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
index 2eb2d10..83268e3 100644
--- a/server/service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
+++ b/server/service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
@@ -17,8 +17,7 @@
 import org.springframework.core.annotation.AnnotationConfigurationException;
 
 import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.io.OutputStream;
+import java.io.*;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.net.URLEncoder;
@@ -313,7 +312,26 @@
 //        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
         // 瀛椾綋
         Font font = workbook.createFont();
-        font.setFontHeightInPoints((short)24);
+        font.setFontHeightInPoints((short)12);
+        font.setBold(true);
+        style.setFont(font);
+        // 璁剧疆杈规
+        configCellBorder(style);
+        cell.setCellStyle(style);
+    }
+    /**
+     * 閰嶇疆鍒楀ご鍗曞厓鏍�
+     */
+    private void configInfoCell (SXSSFWorkbook workbook, Cell cell,HorizontalAlignment p ) {
+        CellStyle style = workbook.createCellStyle();
+        style.setAlignment(p);
+        style.setVerticalAlignment(VerticalAlignment.CENTER);
+        // 璁剧疆鑳屾櫙
+        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+//        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+        // 瀛椾綋
+        Font font = workbook.createFont();
+        font.setFontHeightInPoints((short)12);
         font.setBold(true);
         style.setFont(font);
         // 璁剧疆杈规
@@ -440,6 +458,9 @@
             header1.createCell(3).setCellValue("淇濋櫓鐢熸晥姝㈡湡");
             header1.createCell(4).setCellValue("鎶曚繚浜烘暟");
             header1.createCell(5).setCellValue("鎬昏垂鐢紙鍏冿級");
+            for (int i = 0; i < 6; i++) {
+                configFirstCell(sxssfWorkbook,header1.getCell(i));
+            }
             Row header2 = sheet.createRow(2);
             header2.createCell(0).setCellValue(data.getCompanyName());
             header2.createCell(1).setCellValue(data.getSolutionsName());
@@ -458,6 +479,9 @@
             header4.createCell(3).setCellValue("韬唤璇佸彿");
             header4.createCell(4).setCellValue("娲鹃仯鍗曚綅");
             header4.createCell(5).setCellValue("鎵�灞炲伐绉�");
+            for (int i = 0; i < 6; i++) {
+                configFirstCell(sxssfWorkbook,header4.getCell(i));
+            }
             if(data.getApplyDetailList()!=null){
             // 鍒涘缓鏁版嵁璁板綍
                 for (int rowIndex = 0; rowIndex < data.getApplyDetailList().size(); rowIndex++) {
@@ -550,6 +574,9 @@
             header1.createCell(9).setCellValue("鍔犱繚浜烘暟");
             header1.createCell(10).setCellValue("鍑忎繚浜烘暟");
             header1.createCell(11).setCellValue("鏈熸湜鎵瑰崟鐢熸晥鏈�");
+            for (int i = 0; i < 12; i++) {
+                configFirstCell(sxssfWorkbook,header1.getCell(i));
+            }
             sheet.addMergedRegion(new CellRangeAddress(1  ,1,0,2));
             sheet.addMergedRegion(new CellRangeAddress(1  ,1,6,8));
 
@@ -571,7 +598,9 @@
             header2.createCell(6).setCellValue("鍑忎繚浜哄憳");
             sheet.addMergedRegion(new CellRangeAddress(3  ,3,0,5));
             sheet.addMergedRegion(new CellRangeAddress(3  ,3,6,11));
-
+            for (int i = 0; i < 12; i++) {
+                configFirstCell(sxssfWorkbook,header2.getCell(i));
+            }
             Row header4 = sheet.createRow(4);
             header4.createCell(0).setCellValue("搴忓彿");
             header4.createCell(1).setCellValue("鍛樺伐濮撳悕");
@@ -585,6 +614,9 @@
             header4.createCell(9).setCellValue("韬唤璇佸彿");
             header4.createCell(10).setCellValue("娲鹃仯鍗曚綅");
             header4.createCell(11).setCellValue("鎵�灞炲伐绉�");
+            for (int i = 0; i < 12; i++) {
+                configFirstCell(sxssfWorkbook,header4.getCell(i));
+            }
             int maxNum = data.getAddNum()>data.getDelNum()?data.getAddNum():data.getDelNum();
             // 鍒涘缓鏁版嵁璁板綍
             for (int rowIndex = 0; rowIndex <maxNum; rowIndex++) {
@@ -622,6 +654,128 @@
             }
         }
     }
+
+    /**
+     * 瀵煎嚭鍔犲噺淇濈敵璇疯鍗�
+     * @param data 鏁版嵁
+     * @param sheetName Sheet鍚嶇О
+     */
+    public String exportJiajianBaoExcelToPdf (ApplyChange data, String sheetName) {
+        SXSSFWorkbook sxssfWorkbook;
+        try {
+            sxssfWorkbook = new SXSSFWorkbook();
+            Sheet sheet = sxssfWorkbook.createSheet(sheetName);
+            sheet.createFreezePane(0, 1);
+            sheet.addMergedRegion(new CellRangeAddress(0   ,0,0,8));
+            Row title = sheet.createRow(0);
+            title.setHeight((short) 1000);
+            Cell c = title.createCell(0);
+            c.setCellValue(sheetName);
+            configFirstCell(sxssfWorkbook,c);
+            Row header1 = sheet.createRow(1);
+            header1.createCell(0).setCellValue("鎶曚繚浼佷笟");
+            header1.createCell(3).setCellValue("淇濋櫓鏂规");
+            header1.createCell(4).setCellValue("淇濆崟鍙�");
+            header1.createCell(5).setCellValue("淇濋櫓鐢熸晥璧锋湡");
+            header1.createCell(6).setCellValue("淇濋櫓鐢熸晥姝㈡湡");
+            header1.createCell(9).setCellValue("鍔犱繚浜烘暟");
+            header1.createCell(10).setCellValue("鍑忎繚浜烘暟");
+            header1.createCell(11).setCellValue("鏈熸湜鎵瑰崟鐢熸晥鏈�");
+            for (int i = 0; i < 12; i++) {
+                configFirstCell(sxssfWorkbook,header1.getCell(i));
+            }
+            sheet.addMergedRegion(new CellRangeAddress(1  ,1,0,2));
+            sheet.addMergedRegion(new CellRangeAddress(1  ,1,6,8));
+
+
+            Row header2 = sheet.createRow(2);
+            header2.createCell(0).setCellValue(data.getCompanyName());
+            header2.createCell(3).setCellValue(data.getSolutionsName());
+            header2.createCell(4).setCellValue(data.getApplyCode());
+            header2.createCell(5).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getStartTime()));
+            header2.createCell(6).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getEndTime()));
+            header2.createCell(9).setCellValue(data.getAddNum());
+            header2.createCell(10).setCellValue(data.getDelNum());
+            header2.createCell(11).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getValidTime()));
+            sheet.addMergedRegion(new CellRangeAddress(2 ,2,0,2));
+            sheet.addMergedRegion(new CellRangeAddress(2  ,2,6,8));
+            //绌虹櫧琛�
+            Row header3 = sheet.createRow(3);
+            header2.createCell(0).setCellValue("鍔犱繚浜哄憳");
+            header2.createCell(6).setCellValue("鍑忎繚浜哄憳");
+            sheet.addMergedRegion(new CellRangeAddress(3  ,3,0,5));
+            sheet.addMergedRegion(new CellRangeAddress(3  ,3,6,11));
+            for (int i = 0; i < 12; i++) {
+                configFirstCell(sxssfWorkbook,header2.getCell(i));
+            }
+            Row header4 = sheet.createRow(4);
+            header4.createCell(0).setCellValue("搴忓彿");
+            header4.createCell(1).setCellValue("鍛樺伐濮撳悕");
+            header4.createCell(2).setCellValue("鎬у埆");
+            header4.createCell(3).setCellValue("韬唤璇佸彿");
+            header4.createCell(4).setCellValue("娲鹃仯鍗曚綅");
+            header4.createCell(5).setCellValue("鎵�灞炲伐绉�");
+            header4.createCell(6).setCellValue("搴忓彿");
+            header4.createCell(7).setCellValue("鍛樺伐濮撳悕");
+            header4.createCell(8).setCellValue("鎬у埆");
+            header4.createCell(9).setCellValue("韬唤璇佸彿");
+            header4.createCell(10).setCellValue("娲鹃仯鍗曚綅");
+            header4.createCell(11).setCellValue("鎵�灞炲伐绉�");
+            for (int i = 0; i < 12; i++) {
+                configFirstCell(sxssfWorkbook,header4.getCell(i));
+            }
+            int maxNum = data.getAddNum()>data.getDelNum()?data.getAddNum():data.getDelNum();
+            // 鍒涘缓鏁版嵁璁板綍
+            for (int rowIndex = 0; rowIndex <maxNum; rowIndex++) {
+                ApplyChagneDetail addModel =  data.getAddDetailList().size()> rowIndex?data.getAddDetailList().get(rowIndex):null;
+                ApplyChagneDetail delModel =  data.getDelDetailList().size()> rowIndex?data.getDelDetailList().get(rowIndex):null;
+                Row header5 = sheet.createRow(rowIndex + 5);
+                if(addModel!=null){
+                    header5.createCell(0).setCellValue(rowIndex+1);
+                    header5.createCell(1).setCellValue(StringUtils.defaultString(addModel.getMemberName(),""));
+                    header5.createCell(2).setCellValue(Constants.equalsInteger(addModel.getSex(),0)?"鐢�":(Constants.equalsInteger(addModel.getSex(),1)?"濂�":"-"));
+                    header5.createCell(3).setCellValue(StringUtils.defaultString(addModel.getIdcardNo(),""));
+                    header5.createCell(4).setCellValue(StringUtils.defaultString(addModel.getDuName(),""));
+                    header5.createCell(5).setCellValue(StringUtils.defaultString(addModel.getWorkTypeName(),""));
+                }
+                if(delModel!=null){
+                    header5.createCell(6).setCellValue(rowIndex+1);
+                    header5.createCell(7).setCellValue(StringUtils.defaultString(delModel.getMemberName(),""));
+                    header5.createCell(8).setCellValue(Constants.equalsInteger(delModel.getSex(),0)?"鐢�":(Constants.equalsInteger(delModel.getSex(),1)?"濂�":"-"));
+                    header5.createCell(9).setCellValue(StringUtils.defaultString(delModel.getIdcardNo(),""));
+                    header5.createCell(10).setCellValue(StringUtils.defaultString(delModel.getDuName(),""));
+                    header5.createCell(11).setCellValue(StringUtils.defaultString(delModel.getWorkTypeName(),""));
+                }
+            }
+            int rowIndex = 4+data.getChangeDetailList().size();
+            Row header6= sheet.createRow(4+data.getChangeDetailList().size());
+            header6.createCell(0).setCellValue("鎶曚繚浼佷笟鐢虫槑:\n" +
+                    "1銆佸湪鐢宠涔︿笂濉啓鐨勪竴鍒囧唴瀹瑰睘瀹烇紝鍚﹀垯鏈紒涓氭壙鎷呬竴鍒囨硶寰嬭矗浠汇�俓n" +
+                    "2銆佺敱浜庡彉鏇村彈鐩婁汉浜х敓鐨勬硶寰嬬籂绾锋湰浼佷笟鎰挎壙鎷呬竴鍒囨硶寰嬭矗浠汇�俓n" +
+                    "3銆佹湰鐢宠琛ㄧ殑绛剧珷涓烘湰浼佷笟浜茶嚜绛剧讲锛屽鐢辨浜х敓鐨勬硶寰嬬籂绾锋湰浼佷笟鎰挎壙鎷呬竴鍒囨硶寰嬭矗浠汇�俓n");
+            configInfoCell(sxssfWorkbook,header6.getCell(0),HorizontalAlignment.LEFT);
+            sheet.addMergedRegion(new CellRangeAddress(rowIndex ,rowIndex,1,12));
+            Row header7= sheet.createRow(rowIndex+1);
+            header7.createCell(0).setCellValue("鎶曚繚浼佷笟绛剧珷 锛�                            \n" +"鏃ユ湡锛�     骞�     鏈�     鏃�    ");
+            sheet.addMergedRegion(new CellRangeAddress(rowIndex+1 ,rowIndex+1,1,12));
+            configInfoCell(sxssfWorkbook,header7.getCell(0),HorizontalAlignment.RIGHT);
+            //涓存椂缂撳啿鍖�
+            ByteArrayOutputStream out = new ByteArrayOutputStream();
+            //鍒涘缓涓存椂鏂囦欢
+            sxssfWorkbook.write(out);
+            byte [] bookByteAry = out.toByteArray();
+            InputStream     in = new ByteArrayInputStream(bookByteAry);
+            String tempPdf =System.getProperty("java.io.tmpdir")+File.separator+UUID.randomUUID().toString()+".pdf";
+            ExcelToPdfTool.excelToPdf(in,tempPdf);//杞琍DF
+            File f = new File(tempPdf);
+            if(f!=null && f.isFile()){
+                return tempPdf;
+            }
+        } catch (Exception e) {
+            // throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
+        }
+        return null;
+    }
     /**
      * 瀵煎嚭鍔犲噺淇濈敵璇疯鍗�
      * @param data 鏁版嵁
@@ -648,6 +802,9 @@
             header1.createCell(5).setCellValue("淇濋櫓鐢熸晥姝㈡湡");
             header1.createCell(6).setCellValue("鎹㈠巶浜烘暟");
             header1.createCell(7).setCellValue("鏈熸湜鎵瑰崟鐢熸晥鏈�");
+            for (int i = 0; i < 8; i++) {
+                configFirstCell(sxssfWorkbook,header1.getCell(i));
+            }
             sheet.addMergedRegion(new CellRangeAddress(1  ,1,1,2));
 
             Row header2 = sheet.createRow(2);
@@ -669,6 +826,9 @@
             header4.createCell(5).setCellValue("鍘熸墍鎵�灞炲伐绉�");
             header4.createCell(6).setCellValue("鏇存敼鍚庢淳閬e崟浣�");
             header4.createCell(7).setCellValue("鏇存敼鍚庢墍灞炲伐绉�");
+            for (int i = 0; i < 8; i++) {
+                configFirstCell(sxssfWorkbook,header4.getCell(i));
+            }
             // 鍒涘缓鏁版嵁璁板綍
             for (int rowIndex = 0; rowIndex <data.getChangeDetailList().size(); rowIndex++) {
                 ApplyChagneDetail addModel = data.getChangeDetailList().get(rowIndex);
@@ -696,6 +856,101 @@
             }
         }
     }
+    /**
+     * 瀵煎嚭鍔犲噺淇濈敵璇疯鍗�
+     * @param data 鏁版嵁
+     * @param sheetName Sheet鍚嶇О
+     */
+    public String exportChangeUnitExcelToPdf (ApplyChange data, String sheetName) {
+        SXSSFWorkbook sxssfWorkbook;
+        try {
+            sxssfWorkbook = new SXSSFWorkbook();
+            Sheet sheet = sxssfWorkbook.createSheet(sheetName);
+            sheet.createFreezePane(0, 1);
+            sheet.addMergedRegion(new CellRangeAddress(0   ,0,0,8));
+            Row title = sheet.createRow(0);
+            title.setHeight((short) 1000);
+            Cell c = title.createCell(0);
+            c.setCellValue(sheetName);
+            configFirstCell(sxssfWorkbook,c);
+            Row header1 = sheet.createRow(1);
+            header1.createCell(0).setCellValue("鎶曚繚浼佷笟");
+            header1.createCell(1).setCellValue("淇濋櫓鏂规");
+            header1.createCell(3).setCellValue("淇濆崟鍙�");
+            header1.createCell(4).setCellValue("淇濋櫓鐢熸晥璧锋湡");
+            header1.createCell(5).setCellValue("淇濋櫓鐢熸晥姝㈡湡");
+            header1.createCell(6).setCellValue("鎹㈠巶浜烘暟");
+            header1.createCell(7).setCellValue("鏈熸湜鎵瑰崟鐢熸晥鏈�");
+            for (int i = 0; i < 8; i++) {
+                configFirstCell(sxssfWorkbook,header1.getCell(i));
+            }
+            sheet.addMergedRegion(new CellRangeAddress(1  ,1,1,2));
+
+            Row header2 = sheet.createRow(2);
+            header2.createCell(0).setCellValue(data.getCompanyName());
+            header2.createCell(1).setCellValue(data.getSolutionsName());
+            header2.createCell(3).setCellValue(data.getApplyCode());
+            header2.createCell(4).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getStartTime()));
+            header2.createCell(5).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getEndTime()));
+            header2.createCell(6).setCellValue(data.getChangeNum());
+            header2.createCell(7).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getValidTime()));
+            sheet.addMergedRegion(new CellRangeAddress(2  ,2,1,2));
+
+            Row header4 = sheet.createRow(3);
+            header4.createCell(0).setCellValue("搴忓彿");
+            header4.createCell(1).setCellValue("鍛樺伐濮撳悕");
+            header4.createCell(2).setCellValue("鎬у埆");
+            header4.createCell(3).setCellValue("韬唤璇佸彿");
+            header4.createCell(4).setCellValue("鍘熸淳閬e崟浣�");
+            header4.createCell(5).setCellValue("鍘熸墍鎵�灞炲伐绉�");
+            header4.createCell(6).setCellValue("鏇存敼鍚庢淳閬e崟浣�");
+            header4.createCell(7).setCellValue("鏇存敼鍚庢墍灞炲伐绉�");
+            for (int i = 0; i < 8; i++) {
+                configFirstCell(sxssfWorkbook,header4.getCell(i));
+            }
+            // 鍒涘缓鏁版嵁璁板綍
+            for (int rowIndex = 0; rowIndex <data.getChangeDetailList().size(); rowIndex++) {
+                ApplyChagneDetail addModel = data.getChangeDetailList().get(rowIndex);
+                Row header5 = sheet.createRow(rowIndex + 4);
+                header5.createCell(0).setCellValue(rowIndex+1);
+                header5.createCell(1).setCellValue(StringUtils.defaultString(addModel.getMemberName(),""));
+                header5.createCell(2).setCellValue(Constants.equalsInteger(addModel.getSex(),0)?"鐢�":(Constants.equalsInteger(addModel.getSex(),1)?"濂�":"-"));
+                header5.createCell(3).setCellValue(StringUtils.defaultString(addModel.getIdcardNo(),""));
+                header5.createCell(4).setCellValue(StringUtils.defaultString(addModel.getOldDuName(),""));
+                header5.createCell(5).setCellValue(StringUtils.defaultString(addModel.getOldWorkTypeName(),""));
+                header5.createCell(6).setCellValue(StringUtils.defaultString(addModel.getDuName(),""));
+                header5.createCell(7).setCellValue(StringUtils.defaultString(addModel.getWorkTypeName(),""));
+            }
+            int rowIndex = 4+data.getChangeDetailList().size();
+            Row header6= sheet.createRow(4+data.getChangeDetailList().size());
+            header6.createCell(0).setCellValue("鎶曚繚浼佷笟鐢虫槑:\n" +
+                    "1銆佸湪鐢宠涔︿笂濉啓鐨勪竴鍒囧唴瀹瑰睘瀹烇紝鍚﹀垯鏈紒涓氭壙鎷呬竴鍒囨硶寰嬭矗浠汇�俓n" +
+                    "2銆佺敱浜庡彉鏇村彈鐩婁汉浜х敓鐨勬硶寰嬬籂绾锋湰浼佷笟鎰挎壙鎷呬竴鍒囨硶寰嬭矗浠汇�俓n" +
+                    "3銆佹湰鐢宠琛ㄧ殑绛剧珷涓烘湰浼佷笟浜茶嚜绛剧讲锛屽鐢辨浜х敓鐨勬硶寰嬬籂绾锋湰浼佷笟鎰挎壙鎷呬竴鍒囨硶寰嬭矗浠汇�俓n");
+            configInfoCell(sxssfWorkbook,header6.getCell(0),HorizontalAlignment.LEFT);
+            sheet.addMergedRegion(new CellRangeAddress(rowIndex ,rowIndex,1,8));
+            Row header7= sheet.createRow(rowIndex+1);
+            header7.createCell(0).setCellValue("鎶曚繚浼佷笟绛剧珷 锛�                            \n" +"鏃ユ湡锛�     骞�     鏈�     鏃�    ");
+            sheet.addMergedRegion(new CellRangeAddress(rowIndex+1 ,rowIndex+1,1,8));
+            configInfoCell(sxssfWorkbook,header7.getCell(0),HorizontalAlignment.RIGHT);
+            //涓存椂缂撳啿鍖�
+            ByteArrayOutputStream out = new ByteArrayOutputStream();
+            //鍒涘缓涓存椂鏂囦欢
+             sxssfWorkbook.write(out);
+            byte [] bookByteAry = out.toByteArray();
+            InputStream     in = new ByteArrayInputStream(bookByteAry);
+            String tempPdf =System.getProperty("java.io.tmpdir")+File.separator+UUID.randomUUID().toString()+".pdf";
+            ExcelToPdfTool.excelToPdf(in,tempPdf);//杞琍DF
+            File f = new File(tempPdf);
+            if(f!=null && f.isFile()){
+                return tempPdf;
+            }
+            return tempPdf;
+        } catch (Exception e) {
+           // throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
+        }
+        return null;
+    }
 
 
     @Data

--
Gitblit v1.9.3