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/service/business/impl/ApplyChangeServiceImpl.java |   60 ++++++++
 server/service/src/main/java/com/doumee/service/business/ApplyChangeService.java          |    4 
 server/service/src/main/java/com/doumee/service/business/third/SignService.java           |   48 ++++++
 server/service/src/main/java/com/doumee/core/annotation/excel/ExcelToPdfTool.java         |   15 ++
 server/company/src/main/java/com/doumee/api/business/ApplyChangeController.java           |   16 ++
 server/service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java          |  263 +++++++++++++++++++++++++++++++++++++
 6 files changed, 400 insertions(+), 6 deletions(-)

diff --git a/server/company/src/main/java/com/doumee/api/business/ApplyChangeController.java b/server/company/src/main/java/com/doumee/api/business/ApplyChangeController.java
index 699d0de..b8b2d70 100644
--- a/server/company/src/main/java/com/doumee/api/business/ApplyChangeController.java
+++ b/server/company/src/main/java/com/doumee/api/business/ApplyChangeController.java
@@ -84,16 +84,28 @@
     }
     @ApiOperation("瀵煎嚭鍔犲噺淇濊鎯呭崟")
     @PostMapping("/exportJiajianBaoExcel")
-    @RequiresPermissions("business:insuranceapply:exportExcel")
+    @RequiresPermissions("business:applychange:exportExcel")
     public void exportJiajianBaoExcel (@RequestBody ApplyChange model, HttpServletResponse response) {
         ExcelExporter.build(ApplyChange.class).exportJiajianBaoExcel(applyChangeService.exportJiajianBaoExcel(model),   response);
     }
     @ApiOperation("瀵煎嚭鎹㈠巶鐢宠璇︽儏鍗�")
     @PostMapping("/exportChangeUnitExcel")
-    @RequiresPermissions("business:insuranceapply:exportExcel")
+    @RequiresPermissions("business:applychange:exportExcel")
     public void exportChangeUnitExcel (@RequestBody ApplyChange model, HttpServletResponse response) {
         ExcelExporter.build(ApplyChange.class).exportChangeUnitExcel(applyChangeService.exportChangeUnitExcel(model),   response);
     }
+    @ApiOperation("鑾峰彇鍔犲噺淇濈绔犲湴鍧�")
+    @PostMapping("/getJiajianBaoSignLink")
+    @RequiresPermissions("business:applychange:sign")
+    public ApiResponse<String> getSignLinkJiajiabao (@RequestBody ApplyChange model, HttpServletResponse response) {
+        return ApiResponse.success( applyChangeService.getSignLinkJiajiabao(model));
+    }
+    @ApiOperation("鑾峰彇缂撳瓨鐢宠绛剧珷鍦板潃")
+    @PostMapping("/getChangeUnitSignLink")
+    @RequiresPermissions("business:applychange:sign")
+    public ApiResponse<String> getChangeUnitSignLink (@RequestBody ApplyChange model, HttpServletResponse response) {
+        return ApiResponse.success( applyChangeService.getSignLinkChangeUnit(model));
+    }
 
     @ApiOperation("鏍规嵁ID鏌ヨ")
     @GetMapping("/{id}")
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
diff --git a/server/service/src/main/java/com/doumee/core/annotation/excel/ExcelToPdfTool.java b/server/service/src/main/java/com/doumee/core/annotation/excel/ExcelToPdfTool.java
index 1e6d4e3..517deba 100644
--- a/server/service/src/main/java/com/doumee/core/annotation/excel/ExcelToPdfTool.java
+++ b/server/service/src/main/java/com/doumee/core/annotation/excel/ExcelToPdfTool.java
@@ -2,6 +2,8 @@
 import com.spire.xls.Workbook;
 import com.spire.xls.Worksheet;
 
+import java.io.InputStream;
+
 /**
  * Excel瀵煎嚭瀹炵幇
  * @author Eva.Caesar Liu
@@ -30,7 +32,20 @@
             //鍒涘缓Workbook 瀹炰緥骞跺姞杞界ず渚嬫枃妗�
             Workbook workbook = new Workbook();
             workbook.loadFromFile(inputExcelPath);
+            //杞崲鏃惰缃伐浣滆〃閫傚簲瀹藉害
+            workbook.getConverterSetting().setSheetFitToWidth(true);
 
+            //鑾峰彇绗竴涓伐浣滆〃
+            Worksheet worksheet = workbook.getWorksheets().get(0);
+
+            //淇濆瓨涓篜DF鏂囨。鏍煎紡
+            worksheet.saveToPdf(outputPdfPath);
+
+        }
+        public static void excelToPdf(InputStream is,String outputPdfPath) {
+            //鍒涘缓Workbook 瀹炰緥骞跺姞杞界ず渚嬫枃妗�
+            Workbook workbook = new Workbook();
+            workbook.loadFromStream(is);
             //杞崲鏃惰缃伐浣滆〃閫傚簲瀹藉害
             workbook.getConverterSetting().setSheetFitToWidth(true);
 
diff --git a/server/service/src/main/java/com/doumee/service/business/ApplyChangeService.java b/server/service/src/main/java/com/doumee/service/business/ApplyChangeService.java
index 0dbd51a..46f3def 100644
--- a/server/service/src/main/java/com/doumee/service/business/ApplyChangeService.java
+++ b/server/service/src/main/java/com/doumee/service/business/ApplyChangeService.java
@@ -112,4 +112,8 @@
     ApplyChange exportJiajianBaoExcel(ApplyChange model);
 
     ApplyChange exportChangeUnitExcel(ApplyChange model);
+
+    String getSignLinkJiajiabao(ApplyChange model);
+
+    String getSignLinkChangeUnit(ApplyChange model);
 }
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java
index 9264c44..d43ad88 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java
@@ -1,6 +1,8 @@
 package com.doumee.service.business.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.annotation.excel.ExcelExporter;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.model.LoginUserInfo;
@@ -21,6 +23,7 @@
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.doumee.service.business.third.SignService;
 import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import org.apache.commons.lang3.StringUtils;
@@ -56,6 +59,10 @@
     @Autowired
     private ApplyChangeJoinMapper applyChangeJoinMapper;
 
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
+    @Autowired
+    private SignService signService;
     @Autowired
     private ApplyChagneDetailJoinMapper applyChagneDetailJoinMapper;
 
@@ -946,6 +953,59 @@
         model.setChangeNum(model.getChangeDetailList().size());
         return model;
     }
+    /**
+     * 瀵煎嚭鎹㈠巶鐢宠琛�
+     * @param param
+     * @return
+     */
+    @Override
+    public  String  getSignLinkJiajiabao(ApplyChange param){
+        ApplyChange model = exportJiajianBaoExcel(param);
+        return  getOnlineSignLink(model);
+    }
+    /**
+     * 瀵煎嚭鎹㈠巶鐢宠琛�
+     * @param param
+     * @return
+     */
+    @Override
+    public  String  getSignLinkChangeUnit(ApplyChange param){
+        ApplyChange model = exportChangeUnitExcel(param);
+        return  getOnlineSignLink(model);
+    }
+
+    private String getOnlineSignLink(ApplyChange model) {
+        if(Objects.isNull(model) ||! Constants.equalsInteger(Constants.ZERO,model.getType())){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        if(!Constants.equalsInteger(Constants.ZERO,model.getStatus())){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝璇ョ敵璇风姸鎬佸凡娴佽浆锛屽綋鍓嶄笉鏀寔绛剧珷鎿嶄綔锛�");
+        }
+        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        Company company = user.getCompany();
+        if(company== null || StringUtils.isBlank( company.getEmail()) || !Constants.equalsInteger(company.getSignStatus(),Constants.ONE)){
+            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝浼佷笟灏氭湭鍏峰鍦ㄧ嚎绛剧珷鏉′欢锛岃鑱旂郴骞冲彴绠$悊鍛樼‘璁");
+        }
+
+        String fileUrl = ExcelExporter.build(ApplyChange.class).exportChangeUnitExcelToPdf(model,"缂撳瓨鐢宠琛�");
+        String notifyUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SIGN_DONE_NOTIFY_URL).getCode();
+        notifyUrl = notifyUrl.replace("${type}","0").replace("${id}",model.getId().toString());
+        String applyNo = signService.applySignLocalFile(company.getName(),fileUrl,company.getName(),company.getCode(),company.getEmail(),null,company.getSignId(),notifyUrl);
+        if(StringUtils.isBlank(applyNo) ){
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鑾峰彇鍦ㄧ嚎绛剧珷鍦板潃澶辫触锛岃绋嶅悗閲嶈瘯锛�");
+        }
+        String link = signService.signLink(applyNo,company.getEmail(),company.getCode());
+        if(StringUtils.isBlank(link) ){
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鑾峰彇鍦ㄧ嚎绛剧珷鍦板潃澶辫触锛岃绋嶅悗閲嶈瘯锛�");
+        }
+        ApplyChange update= new ApplyChange();
+        update.setId(model.getId());
+        update.setEditor(user.getId());
+        update.setEditDate(new Date());
+        update.setSignApplyNo(applyNo);
+        applyChangeMapper.updateById(update);
+        return  link;
+    }
 
 
     /**
diff --git a/server/service/src/main/java/com/doumee/service/business/third/SignService.java b/server/service/src/main/java/com/doumee/service/business/third/SignService.java
index bf22a3c..e2aabab 100644
--- a/server/service/src/main/java/com/doumee/service/business/third/SignService.java
+++ b/server/service/src/main/java/com/doumee/service/business/third/SignService.java
@@ -295,6 +295,54 @@
       return null;
 
     }
+    /**
+     * 鍙戣捣绛剧害
+     * @param name
+     * @param fileUrl
+     * @param file
+     * @param creditCoe
+     * @param email
+     * @param postionJson
+     */
+    public String applySignLocalFile(String name,String fullname,String file,String creditCoe,String email,String postionJson,String singId,String notifyUrl){
+      try {
+          String url=SERVICE_URL+"/v2/sign/applySign";
+          Map<String, Object>  params=bodyParams;
+          params.put("contractName",name); //鍚堝悓鍚嶇О
+          params.put("serverCa",1); //浣跨敤浜戣瘉涔�
+          params.put("file",new File(file));
+          params.put("dealType",5); //鎸囧畾鍚堝悓鏂囦欢绛剧讲鏂瑰紡 5 涓洪儴鍒嗚嚜鍔ㄧ
+          params.put("positionType",1); //鎸囧畾閫氳繃琛ㄥ崟鍩熸柟寮忚缃瀛椾綅缃�
+          params.put("fileType",0);
+          params.put("needQifengSign",1);
+          params.put("notifyUrl",notifyUrl);
+          JSONArray signatories=new JSONArray();
+          SignatoryReq sReq=new SignatoryReq();
+          sReq.setFullName(fullname); //浼佷笟濮撳悕
+          sReq.setIdentityType(11); //璇佷欢绫诲瀷
+          sReq.setIdentityCard(creditCoe);//钀ヤ笟鎵х収鍙�
+          sReq.setEmail(email); //鍦ㄥ悰瀛愮娉ㄥ唽璁よ瘉鐨勯偖绠�
+//        sReq.setChapteJson("[{\"page\":0,\"chaptes\":[{\"offsetX\":0.12,\"offsetY\":0.23}]},{\"page\":1,\"chaptes\":[{\"offsetX\":0.45,\"offsetY\":0.67}]}]");
+//          sReq.setChapteJson(postionJson);
+          sReq.setSearchKey(postionJson);
+          sReq.setSignId(singId);
+          sReq.setNoNeedVerify(1);
+          signatories.add(sReq);
+          params.put("signatories",signatories.toJSONString());
+          System.out.println(signatories.toJSONString());
+          String str= HttpClientUtils.init().getPost(url,null,params,true);
+          System.out.println(str);
+          saveInterfaceLog(url,"銆愮數瀛愮銆戝彂璧风绾�",JSONObject.toJSONString(params),str);
+          JSONObject json = JSONObject.parseObject(str);
+          if(json!=null && json.getBoolean("success")){
+              return  json.getString("data");
+          }
+      }catch (Exception e){
+
+      }
+      return null;
+
+    }
 
 
     /**

--
Gitblit v1.9.3