Browse Source

汽运导出

zhangyuewww 2 years ago
parent
commit
db6edffb63

+ 12 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/controller/TranSettlementReportController.java

@@ -3,11 +3,13 @@ package com.yh.saas.plugin.yiliangyiyun.controller;
 
 
 import com.baomidou.mybatisplus.plugins.Page;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.yh.saas.plugin.yiliangyiyun.entity.ContractManagementInfo;
 import com.yh.saas.plugin.yiliangyiyun.entity.ContractManagementInfo;
+import com.yh.saas.plugin.yiliangyiyun.entity.PaymentManagement;
 import com.yh.saas.plugin.yiliangyiyun.entity.TranSettlementReport;
 import com.yh.saas.plugin.yiliangyiyun.entity.TranSettlementReport;
 import com.yh.saas.plugin.yiliangyiyun.service.ITranSettlementReportService;
 import com.yh.saas.plugin.yiliangyiyun.service.ITranSettlementReportService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -98,5 +100,15 @@ public class TranSettlementReportController {
     public String submitLogistics(@RequestBody TranSettlementReport tranSettlementReport) {
     public String submitLogistics(@RequestBody TranSettlementReport tranSettlementReport) {
         return tranSettlementReportService.submitLogistics(tranSettlementReport);
         return tranSettlementReportService.submitLogistics(tranSettlementReport);
     }
     }
+    /**
+     * 导出
+     *
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/export")
+    public void export(@RequestBody TranSettlementReport example, HttpServletResponse response) throws Exception {
+        tranSettlementReportService.export(example,response);
+    }
 }
 }
 
 

+ 3 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/ITranSettlementReportService.java

@@ -2,9 +2,11 @@ package com.yh.saas.plugin.yiliangyiyun.service;
 
 
 import com.baomidou.mybatisplus.plugins.Page;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.yh.saas.plugin.yiliangyiyun.entity.ContractManagementInfo;
 import com.yh.saas.plugin.yiliangyiyun.entity.ContractManagementInfo;
+import com.yh.saas.plugin.yiliangyiyun.entity.PaymentManagement;
 import com.yh.saas.plugin.yiliangyiyun.entity.TranSettlementReport;
 import com.yh.saas.plugin.yiliangyiyun.entity.TranSettlementReport;
 import com.baomidou.mybatisplus.service.IService;
 import com.baomidou.mybatisplus.service.IService;
 
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -58,6 +60,7 @@ public interface ITranSettlementReportService extends IService<TranSettlementRep
      * @param tranSettlementReport
      * @param tranSettlementReport
      */
      */
     String submitLogistics(TranSettlementReport tranSettlementReport);
     String submitLogistics(TranSettlementReport tranSettlementReport);
+    void export(TranSettlementReport tranSettlementReport, HttpServletResponse response) throws Exception;
 
 
 
 
 }
 }

+ 720 - 1
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/TranSettlementReportServiceImpl.java

@@ -2,6 +2,7 @@ package com.yh.saas.plugin.yiliangyiyun.service.impl;
 
 
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.alipay.sofa.runtime.api.annotation.SofaReference;
 import com.alipay.sofa.runtime.api.annotation.SofaReference;
+import com.aliyun.oss.OSSClient;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Lists;
@@ -22,14 +23,28 @@ import com.yh.saas.plugin.yiliangyiyun.exception.YExceptionEnum;
 import com.yh.saas.plugin.yiliangyiyun.mapper.TranSettlementReportMapper;
 import com.yh.saas.plugin.yiliangyiyun.mapper.TranSettlementReportMapper;
 import com.yh.saas.plugin.yiliangyiyun.service.*;
 import com.yh.saas.plugin.yiliangyiyun.service.*;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.yh.saas.plugin.yiliangyiyun.util.QRCodeUtil;
+import lombok.Getter;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.httpclient.util.DateUtil;
 import org.apache.commons.httpclient.util.DateUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.hssf.util.HSSFColor;
+import org.apache.poi.ss.usermodel.IndexedColors;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.util.CellRangeAddress;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.CollectionUtils;
 
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.net.URLDecoder;
 import java.text.DecimalFormat;
 import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.*;
@@ -44,6 +59,7 @@ import java.util.stream.Collectors;
  * @since 2021-08-27
  * @since 2021-08-27
  */
  */
 @Service
 @Service
+@Slf4j
 public class TranSettlementReportServiceImpl extends ServiceImpl<TranSettlementReportMapper, TranSettlementReport> implements ITranSettlementReportService {
 public class TranSettlementReportServiceImpl extends ServiceImpl<TranSettlementReportMapper, TranSettlementReport> implements ITranSettlementReportService {
 
 
     @Autowired
     @Autowired
@@ -64,8 +80,17 @@ public class TranSettlementReportServiceImpl extends ServiceImpl<TranSettlementR
     private IExpenseInfoService expenseInfoService;
     private IExpenseInfoService expenseInfoService;
     @Autowired
     @Autowired
     private IBatchReviewInfoService batchReviewInfoService;
     private IBatchReviewInfoService batchReviewInfoService;
+    @Value("${file-root-path}")
+    private String localPath;
     @Autowired
     @Autowired
-    private ICommonStaffService staffService;
+    private QRCodeUtil qrCodeUtil ;
+    @Autowired
+    private OSSClient ossClient;
+    @Value("${oss.endpoint.internal:}")
+    private String baseUrl;
+    @Getter
+    @Value("${oss.bucket.name:}")
+    private String bucket;
 
 
 
 
 
 
@@ -678,4 +703,698 @@ public class TranSettlementReportServiceImpl extends ServiceImpl<TranSettlementR
         return "ok";
         return "ok";
     }
     }
 
 
+    @Override
+    public void export(TranSettlementReport tranSettlementReport, HttpServletResponse response) throws Exception {
+
+
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+
+        // 1.Excel的头部信息
+        String headerTitle = "";
+
+        // 2.创建一个webbook 对应一个Excel文件
+        HSSFWorkbook wb = new HSSFWorkbook();
+
+        // 3.在webbook中添加一个sheet,对应Excel文件中的sheet
+        HSSFSheet sheet;
+
+        sheet = wb.createSheet("汽运结算信息");
+        headerTitle = "汽运结算信息";
+
+        // 4.设置打印参数
+        sheet.setMargin(HSSFSheet.TopMargin, (short) 1);// 页边距(上)
+        sheet.setMargin(HSSFSheet.BottomMargin, (short) 1);// 页边距(下)
+        sheet.setMargin(HSSFSheet.LeftMargin, (short) 1);// 页边距(左)
+        sheet.setMargin(HSSFSheet.RightMargin, (short) 1);// 页边距(右)
+
+        // 不显示网格
+        sheet.setDisplayGridlines(false);
+        // 设置水平居中
+        sheet.setHorizontallyCenter(true);
+
+        /**************** 数据行样式 start ****************/
+        HSSFFont fontTitle = wb.createFont();
+        fontTitle.setFontName("宋体");
+        fontTitle.setFontHeightInPoints((short) 14);
+        // 设置字体加粗
+        fontTitle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
+
+        HSSFFont fontComp = wb.createFont();
+        fontComp.setFontName("宋体");
+        fontComp.setFontHeightInPoints((short) 16);
+        // 设置字体加粗
+        fontComp.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
+
+        HSSFFont fontDetail = wb.createFont();
+        fontDetail.setFontName("宋体");
+        fontDetail.setFontHeightInPoints((short) 12);
+
+        HSSFFont fontDetail1 = wb.createFont();
+        fontDetail1.setFontName("宋体");
+        fontDetail1.setFontHeightInPoints((short) 12);
+        fontDetail1.setColor(HSSFColor.RED.index);
+
+        // title
+        HSSFCellStyle styleTitle = wb.createCellStyle();
+        // 指定单元格居中对齐
+        styleTitle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
+        // 指定单元格垂直居中对齐
+        styleTitle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
+        // 指定单元格自动换行
+        styleTitle.setWrapText(true);
+        // 设置单元格字体
+        styleTitle.setFont(fontTitle);
+        // 右边框
+        styleTitle.setBorderRight(HSSFCellStyle.BORDER_NONE);
+        // 左边框
+        styleTitle.setBorderLeft(HSSFCellStyle.BORDER_NONE);
+        // 上边框
+        styleTitle.setBorderTop(HSSFCellStyle.BORDER_NONE);
+        // 下边框
+        styleTitle.setBorderBottom(HSSFCellStyle.BORDER_NONE);
+
+        // title
+        HSSFCellStyle styleComp = wb.createCellStyle();
+        // 指定单元格居中对齐
+        styleComp.setAlignment(HSSFCellStyle.ALIGN_CENTER);
+        // 指定单元格垂直居中对齐
+        styleComp.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
+        // 指定单元格自动换行
+        styleComp.setWrapText(true);
+        // 设置单元格字体
+        styleComp.setFont(fontComp);
+        // 右边框
+        styleComp.setBorderRight(HSSFCellStyle.BORDER_NONE);
+        // 左边框
+        styleComp.setBorderLeft(HSSFCellStyle.BORDER_NONE);
+        // 上边框
+        styleComp.setBorderTop(HSSFCellStyle.BORDER_NONE);
+        // 下边框
+        styleComp.setBorderBottom(HSSFCellStyle.BORDER_NONE);
+
+        HSSFCellStyle styleInfo = wb.createCellStyle();
+        // 指定单元格居中对齐
+        styleInfo.setAlignment(HSSFCellStyle.ALIGN_LEFT);
+        // 指定单元格垂直居中对齐
+        styleInfo.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
+        // 指定单元格自动换行
+        styleInfo.setWrapText(true);
+        // 设置单元格字体
+        styleInfo.setFont(fontDetail);
+        // 右边框
+        styleInfo.setBorderRight(HSSFCellStyle.BORDER_NONE);
+        // 左边框
+        styleInfo.setBorderLeft(HSSFCellStyle.BORDER_NONE);
+        // 上边框
+        styleInfo.setBorderTop(HSSFCellStyle.BORDER_NONE);
+        // 下边框
+        styleInfo.setBorderBottom(HSSFCellStyle.BORDER_NONE);
+
+        HSSFCellStyle styleDetail = wb.createCellStyle();
+        // 指定单元格居中对齐
+        styleDetail.setAlignment(HSSFCellStyle.ALIGN_CENTER);
+        // 指定单元格垂直居中对齐
+        styleDetail.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
+        // 指定单元格自动换行
+        styleDetail.setWrapText(true);
+        // 设置单元格字体
+        styleDetail.setFont(fontDetail);
+        // 右边框
+        styleDetail.setBorderRight(HSSFCellStyle.BORDER_THIN);
+        // 左边框
+        styleDetail.setBorderLeft(HSSFCellStyle.BORDER_THIN);
+        // 上边框
+        styleDetail.setBorderTop(HSSFCellStyle.BORDER_THIN);
+        // 下styleDetailTitle
+        styleDetail.setBorderBottom(HSSFCellStyle.BORDER_THIN);
+
+        HSSFCellStyle styleDetail1 = wb.createCellStyle();
+        // 指定单元格居中对齐
+        styleDetail1.setAlignment(HSSFCellStyle.ALIGN_CENTER);
+        // 指定单元格垂直居中对齐
+        styleDetail1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
+        // 指定单元格自动换行
+        styleDetail1.setWrapText(true);
+        // 设置单元格字体
+        styleDetail1.setFont(fontDetail1);
+        // 右边框
+        styleDetail1.setBorderRight(HSSFCellStyle.BORDER_THIN);
+        // 左边框
+        styleDetail1.setBorderLeft(HSSFCellStyle.BORDER_THIN);
+        // 上边框
+        styleDetail1.setBorderTop(HSSFCellStyle.BORDER_THIN);
+        // 下styleDetailTitle
+        styleDetail1.setBorderBottom(HSSFCellStyle.BORDER_THIN);
+
+        HSSFCellStyle contextstyle = wb.createCellStyle();
+        // 指定单元格居中对齐
+        contextstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
+        // 指定单元格垂直居中对齐
+        contextstyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
+        // 指定单元格自动换行
+        contextstyle.setWrapText(true);
+        // 设置单元格字体
+        contextstyle.setFont(fontDetail);
+        // 右边框
+        contextstyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
+        // 左边框
+        contextstyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
+        // 上边框
+        contextstyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
+        // 下styleDetailTitle
+        contextstyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
+
+        HSSFCellStyle contextstyle1 = wb.createCellStyle();
+        // 指定单元格居中对齐
+        contextstyle1.setAlignment(HSSFCellStyle.ALIGN_CENTER);
+        // 指定单元格垂直居中对齐
+        contextstyle1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
+        // 指定单元格自动换行
+        contextstyle1.setWrapText(true);
+        // 设置单元格字体
+        contextstyle1.setFont(fontDetail1);
+        // 右边框
+        contextstyle1.setBorderRight(HSSFCellStyle.BORDER_THIN);
+        // 左边框
+        contextstyle1.setBorderLeft(HSSFCellStyle.BORDER_THIN);
+        // 上边框
+        contextstyle1.setBorderTop(HSSFCellStyle.BORDER_THIN);
+        // 下styleDetailTitle
+        contextstyle1.setBorderBottom(HSSFCellStyle.BORDER_THIN);
+
+        HSSFCellStyle styleDetailYellow = wb.createCellStyle();
+        // 指定单元格居中对齐
+        styleDetailYellow.setAlignment(HSSFCellStyle.ALIGN_CENTER);
+        // 指定单元格垂直居中对齐
+        styleDetailYellow.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
+        // 指定单元格自动换行
+        styleDetailYellow.setWrapText(true);
+        // 设置单元格字体
+        styleDetailYellow.setFont(fontDetail);
+        // 右边框
+        styleDetailYellow.setBorderRight(HSSFCellStyle.BORDER_THIN);
+        // 左边框
+        styleDetailYellow.setBorderLeft(HSSFCellStyle.BORDER_THIN);
+        // 上边框
+        styleDetailYellow.setBorderTop(HSSFCellStyle.BORDER_THIN);
+        // 下styleDetailTitle
+        styleDetailYellow.setBorderBottom(HSSFCellStyle.BORDER_THIN);
+        styleDetailYellow.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
+        styleDetailYellow.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
+
+
+        HSSFCellStyle styleDetailLeft = wb.createCellStyle();
+        // 指定单元格居中对齐
+        styleDetailLeft.setAlignment(HSSFCellStyle.ALIGN_LEFT);
+        // 指定单元格垂直居中对齐
+        styleDetailLeft.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
+        // 指定单元格自动换行
+        styleDetailLeft.setWrapText(true);
+        // 设置单元格字体
+        styleDetailLeft.setFont(fontDetail);
+        // 右边框
+        styleDetailLeft.setBorderRight(HSSFCellStyle.BORDER_THIN);
+        // 左边框
+        styleDetailLeft.setBorderLeft(HSSFCellStyle.BORDER_THIN);
+        // 上边框
+        styleDetailLeft.setBorderTop(HSSFCellStyle.BORDER_THIN);
+        // 下styleDetailTitle
+        styleDetailLeft.setBorderBottom(HSSFCellStyle.BORDER_THIN);
+        /**************** 数据行样式 end ****************/
+
+        // 设置列宽
+        sheet.setColumnWidth(0, 1 * 256 + 184);
+        sheet.setColumnWidth(1, "合同编号".getBytes().length*3*256);
+        sheet.setColumnWidth(2, "发货库".getBytes().length*25/10*256);
+        sheet.setColumnWidth(3, "发货日期".getBytes().length*2*256);
+        sheet.setColumnWidth(4, 12 * 256 + 184);
+        sheet.setColumnWidth(5, 12 * 256 + 184);
+        sheet.setColumnWidth(6, 12 * 256 + 184);
+        sheet.setColumnWidth(7, 12 * 256 + 184);
+        sheet.setColumnWidth(8, 12 * 256 + 184);
+        sheet.setColumnWidth(9, 12 * 256 + 184);
+        sheet.setColumnWidth(10, 12 * 256 + 184);
+        sheet.setColumnWidth(11, 12 * 256 + 184);
+        sheet.setColumnWidth(12, 12 * 256 + 184);
+        sheet.setColumnWidth(13, 12 * 256 + 184);
+        sheet.setColumnWidth(14, 12 * 256 + 184);
+        sheet.setColumnWidth(15, 12 * 256 + 184);
+        sheet.setColumnWidth(16, 12 * 256 + 184);
+        sheet.setColumnWidth(17, 12 * 256 + 184);
+        sheet.setColumnWidth(18, 12 * 256 + 184);
+        sheet.setColumnWidth(19, 12 * 256 + 184);
+        sheet.setColumnWidth(20, 12 * 256 + 184);
+        sheet.setColumnWidth(21, 12 * 256 + 184);
+        sheet.setColumnWidth(22, 12 * 256 + 184);
+        sheet.setColumnWidth(23, 1 * 256 + 184);
+
+        // 创建单元格对象
+        HSSFCell cell = null;
+
+        // 创建打印设置对象
+        HSSFPrintSetup ps = sheet.getPrintSetup();
+        // 打印方向,true:横向,false:纵向(默认)
+        ps.setLandscape(false);
+        // // 打印质量
+        // ps.setVResolution((short) 700)
+        // 设置缩放比例
+        ps.setScale((short) 80);
+        // 纸张类型
+        ps.setPaperSize(HSSFPrintSetup.A4_PAPERSIZE);
+
+
+        int rownum = 1;
+        HSSFRow row0 = sheet.createRow((int) rownum);
+        row0.setHeightInPoints(25);
+        cell = row0.createCell(1);
+        cell.setCellStyle(styleTitle);
+        cell.setCellValue("汽运结算信息");
+        sheet.addMergedRegion(new CellRangeAddress(rownum, rownum, (short) 1, (short) 22));
+        cell = row0.createCell(2);
+        cell.setCellStyle(styleTitle);
+        cell = row0.createCell(3);
+        cell.setCellStyle(styleTitle);
+        cell = row0.createCell(4);
+        cell.setCellStyle(styleTitle);
+        cell = row0.createCell(5);
+        cell.setCellStyle(styleTitle);
+        cell = row0.createCell(6);
+        cell.setCellStyle(styleTitle);
+        cell = row0.createCell(7);
+        cell.setCellStyle(styleTitle);
+        cell = row0.createCell(8);
+        cell.setCellStyle(styleTitle);
+        cell = row0.createCell(9);
+        cell.setCellStyle(styleTitle);
+        cell = row0.createCell(10);
+        cell.setCellStyle(styleTitle);
+        cell = row0.createCell(11);
+        cell.setCellStyle(styleTitle);
+        cell = row0.createCell(12);
+        cell.setCellStyle(styleTitle);
+        cell = row0.createCell(13);
+        cell.setCellStyle(styleTitle);
+        cell = row0.createCell(14);
+        cell.setCellStyle(styleTitle);
+        cell = row0.createCell(15);
+        cell.setCellStyle(styleTitle);
+        cell = row0.createCell(16);
+        cell.setCellStyle(styleTitle);
+        cell = row0.createCell(17);
+        cell.setCellStyle(styleTitle);
+        cell = row0.createCell(18);
+        cell.setCellStyle(styleTitle);
+        cell = row0.createCell(19);
+        cell.setCellStyle(styleTitle);
+        cell = row0.createCell(20);
+        cell.setCellStyle(styleTitle);
+        cell = row0.createCell(21);
+        cell.setCellStyle(styleTitle);
+        cell = row0.createCell(22);
+        cell.setCellStyle(styleTitle);
+        rownum++;
+
+
+        Float loadingWeightTotal = 0f;//装车净重合计
+        Float unloadingWeightTotal = 0f;//卸车净重合计
+        Double transportDamageTotal = 0d;//公司承担运损合计
+        Float lossWeightTotal = 0f;//损耗合计
+        Double actualLossTotal = 0d;//实际损耗合计
+        Float transportPriceTotal = 0f;//预计单价合计
+        Double settlementPriceTotal = 0d;//结算单价合计
+        Float settlementWeightTotal = 0f;//结算重量合计
+        Double cargoDamageTotal = 0d;//货损合计
+        String deductionAmount="";
+        Double serviceChargeTotal = 0d;//服务费合计
+        Double amountActuallyPaidTotal = 0d;//实付金额合计
+        Double taxPointTotal = 0d;//税点合计
+        Double totalPayableTotal = 0d;//合计应付合计
+        Float amountEdPayableTotal = 0f;//已付合计
+        Float amountNotPayableTotal = 0f;//未付合计
+        Float alreadyInvoiceTotal = 0f;//已开发票合计
+
+        for (int i = 0; i < tranSettlementReport.getTranSettlementReportList().size(); i++) {
+            TranSettlementReport tranSettlementReport1 = tranSettlementReport.getTranSettlementReportList().get(i);
+            transportDamageTotal = transportDamageTotal + (tranSettlementReport1.getTransportDamage()!=null?tranSettlementReport1.getTransportDamage():0d);
+            actualLossTotal = actualLossTotal + (tranSettlementReport1.getActualLoss()!=null?tranSettlementReport1.getActualLoss():0d);;
+            settlementPriceTotal = settlementPriceTotal + (tranSettlementReport1.getSettlementPrice()!=null?tranSettlementReport1.getSettlementPrice():0d);;
+            cargoDamageTotal =cargoDamageTotal + (tranSettlementReport1.getCargoDamage()!=null?tranSettlementReport1.getCargoDamage():0d);;
+            serviceChargeTotal = serviceChargeTotal + (tranSettlementReport1.getServiceCharge()!=null?tranSettlementReport1.getServiceCharge():0d);;
+            amountActuallyPaidTotal =amountActuallyPaidTotal + (tranSettlementReport1.getAmountActuallyPaid()!=null?tranSettlementReport1.getAmountActuallyPaid():0d);;
+            taxPointTotal = taxPointTotal + (tranSettlementReport1.getTaxPoint()!=null?tranSettlementReport1.getTaxPoint():0d);;
+            totalPayableTotal = totalPayableTotal + (tranSettlementReport1.getTotalPayable()!=null?tranSettlementReport1.getTotalPayable():0d);;
+            loadingWeightTotal =loadingWeightTotal + (tranSettlementReport1.getLoadingWeight()!=null?tranSettlementReport1.getLoadingWeight():0f);
+            unloadingWeightTotal =unloadingWeightTotal + (tranSettlementReport1.getUnloadingWeight()!=null?tranSettlementReport1.getUnloadingWeight():0f);
+            lossWeightTotal =lossWeightTotal + (tranSettlementReport1.getLossWeight()!=null?tranSettlementReport1.getLossWeight():0f);
+            transportPriceTotal =transportPriceTotal + (tranSettlementReport1.getTransportPrice()!=null?tranSettlementReport1.getTransportPrice():0f);
+            settlementWeightTotal =settlementWeightTotal + (tranSettlementReport1.getSettlementWeight()!=null?tranSettlementReport1.getSettlementWeight():0f);
+            if (tranSettlementReport1.getDeductionAmount()!=null){
+                deductionAmount =deductionAmount + tranSettlementReport1.getDeductionAmount();
+            }
+            amountEdPayableTotal =amountEdPayableTotal + (tranSettlementReport1.getAmountEdPayable()!=null?tranSettlementReport1.getAmountEdPayable():0f);
+            amountNotPayableTotal =amountNotPayableTotal +(tranSettlementReport1.getAmountNotPayable()!=null?tranSettlementReport1.getAmountNotPayable():0f);
+            alreadyInvoiceTotal =alreadyInvoiceTotal +( tranSettlementReport1.getAlreadyInvoice()!=null?tranSettlementReport1.getAlreadyInvoice():0f);
+
+        }
+
+        HSSFRow rowp = sheet.createRow((int)(rownum));
+        rowp.setHeightInPoints(20);
+        cell = rowp.createCell(1);
+        cell.setCellValue("合计");
+        cell.setCellStyle(styleDetail);
+        cell = rowp.createCell(2);
+        cell.setCellStyle(styleDetail);
+        cell = rowp.createCell(3);
+        cell.setCellStyle(styleDetail);
+        cell = rowp.createCell(4);
+        cell.setCellStyle(styleDetail);
+        cell = rowp.createCell(5);
+        cell.setCellValue(loadingWeightTotal);
+        cell.setCellStyle(contextstyle1);
+        cell = rowp.createCell(6);
+        cell.setCellValue(unloadingWeightTotal);
+        cell.setCellStyle(contextstyle1);
+        cell = rowp.createCell(7);
+        cell.setCellValue(transportDamageTotal);
+        cell.setCellStyle(contextstyle1);
+        cell = rowp.createCell(8);
+        cell.setCellValue(lossWeightTotal);
+        cell.setCellStyle(contextstyle1);
+        cell = rowp.createCell(9);
+        cell.setCellValue(actualLossTotal);
+        cell.setCellStyle(contextstyle1);
+        cell = rowp.createCell(10);
+        cell.setCellValue(transportPriceTotal);
+        cell.setCellStyle(contextstyle1);
+        cell = rowp.createCell(11);
+        cell.setCellValue(settlementPriceTotal);
+        cell.setCellStyle(contextstyle1);
+        cell = rowp.createCell(12);
+        cell.setCellValue(settlementWeightTotal);
+        cell.setCellStyle(contextstyle1);
+        cell = rowp.createCell(13);
+        cell.setCellValue(cargoDamageTotal);
+        cell.setCellStyle(contextstyle1);
+        cell = rowp.createCell(14);
+        cell.setCellValue(unloadingWeightTotal);
+        cell.setCellStyle(contextstyle1);
+        cell = rowp.createCell(15);
+        cell.setCellValue(serviceChargeTotal);
+        cell.setCellStyle(contextstyle1);
+        cell = rowp.createCell(16);
+        cell.setCellValue(amountActuallyPaidTotal);
+        cell.setCellStyle(contextstyle1);
+        cell = rowp.createCell(17);
+        cell.setCellValue(taxPointTotal);
+        cell.setCellStyle(contextstyle1);
+        cell = rowp.createCell(18);
+        cell.setCellValue(totalPayableTotal);
+        cell.setCellStyle(contextstyle1);
+        cell = rowp.createCell(19);
+        cell.setCellValue(amountEdPayableTotal);
+        cell.setCellStyle(contextstyle1);
+        cell = rowp.createCell(20);
+        cell.setCellValue(amountNotPayableTotal);
+        cell.setCellStyle(contextstyle1);
+        cell = rowp.createCell(21);
+        cell.setCellValue(alreadyInvoiceTotal);
+        cell.setCellStyle(contextstyle1);
+        cell = rowp.createCell(22);
+        cell.setCellStyle(styleDetail);
+        rownum++;
+
+        HSSFRow row1 = sheet.createRow((int) rownum);
+        row1.setHeightInPoints(30);
+        cell = row1.createCell(1);
+        cell.setCellValue("合同编号");
+        cell.setCellStyle(styleDetail);
+        cell = row1.createCell(2);
+        cell.setCellValue("发货库");
+        cell.setCellStyle(styleDetail);
+        cell = row1.createCell(3);
+        cell.setCellValue("发货时间");
+        cell.setCellStyle(styleDetail);
+        cell = row1.createCell(4);
+        cell.setCellValue("车牌号");
+        cell.setCellStyle(styleDetail);
+        cell = row1.createCell(5);
+        cell.setCellValue("装车净重(吨)");
+        cell.setCellStyle(styleDetail);
+        cell = row1.createCell(6);
+        cell.setCellValue("卸车净重(吨)");
+        cell.setCellStyle(styleDetail);
+        cell = row1.createCell(7);
+        cell.setCellValue("公司承担运损");
+        cell.setCellStyle(styleDetail);
+        cell = row1.createCell(8);
+        cell.setCellValue("损耗(吨)");
+        cell.setCellStyle(styleDetail);
+        cell = row1.createCell(9);
+        cell.setCellValue("实际损耗");
+        cell.setCellStyle(styleDetail);
+        cell = row1.createCell(10);
+        cell.setCellValue("预计单价(元/吨)");
+        cell.setCellStyle(styleDetail);
+        cell = row1.createCell(11);
+        cell.setCellValue("结算单价(元/吨)");
+        cell.setCellStyle(styleDetail);
+        cell = row1.createCell(12);
+        cell.setCellValue("结算重量(吨)");
+        cell.setCellStyle(styleDetail);
+        cell = row1.createCell(13);
+        cell.setCellValue("货损");
+        cell.setCellStyle(styleDetail);
+        cell = row1.createCell(14);
+        cell.setCellValue("扣款(元)");
+        cell.setCellStyle(styleDetail);
+        cell = row1.createCell(15);
+        cell.setCellValue("服务费(元)");
+        cell.setCellStyle(styleDetail);
+        cell = row1.createCell(16);
+        cell.setCellValue("实际金额(元)");
+        cell.setCellStyle(styleDetail);
+        cell = row1.createCell(17);
+        cell.setCellValue("税点(元)");
+        cell.setCellStyle(styleDetail);
+        cell = row1.createCell(18);
+        cell.setCellValue("合计应付(元)");
+        cell.setCellStyle(styleDetail);
+        cell = row1.createCell(19);
+        cell.setCellValue("已付金额(元)");
+        cell.setCellStyle(styleDetail);
+        cell = row1.createCell(20);
+        cell.setCellValue("未付金额(元)");
+        cell.setCellStyle(styleDetail);
+        cell = row1.createCell(21);
+        cell.setCellValue("已开发票(元)");
+        cell.setCellStyle(styleDetail);
+        cell = row1.createCell(22);
+        cell.setCellValue("付款日期");
+        cell.setCellStyle(styleDetail);
+        rownum++;
+
+        DecimalFormat decimalFormat=new DecimalFormat(".00");
+
+        // 详情信息
+        if (org.apache.commons.collections.CollectionUtils.isNotEmpty(tranSettlementReport.getTranSettlementReportList())) {
+            for (int i = 0; i < tranSettlementReport.getTranSettlementReportList().size(); i++) {
+                TranSettlementReport tranSettlementReport1 = tranSettlementReport.getTranSettlementReportList().get(i);
+                HSSFRow rowx = sheet.createRow((int) rownum);
+                rowx.setHeightInPoints(20);
+                cell = rowx.createCell(1);
+                cell.setCellValue(tranSettlementReport1.getContractNo());
+                cell.setCellStyle(styleDetail);
+                cell = rowx.createCell(2);
+                cell.setCellValue(editString(tranSettlementReport1.getStartAddress()));
+                cell.setCellStyle(styleDetail);
+                cell = rowx.createCell(3);
+                String date = addDateOneDay(tranSettlementReport1.getCreateDate());
+                cell.setCellValue(date);
+                cell.setCellStyle(styleDetail);
+                cell = rowx.createCell(4);
+                cell.setCellValue(editString(tranSettlementReport1.getCarNo()));
+                cell.setCellStyle(styleDetail);
+                cell = rowx.createCell(5);
+                cell.setCellValue(editFloat(tranSettlementReport1.getLoadingWeight()));
+                cell.setCellStyle(contextstyle);
+                cell = rowx.createCell(6);
+                cell.setCellValue(editFloat(tranSettlementReport1.getUnloadingWeight()));
+                cell.setCellStyle(contextstyle);
+                cell = rowx.createCell(7);
+                cell.setCellValue(editDouble(tranSettlementReport1.getTransportDamage()));
+                cell.setCellStyle(contextstyle);
+                cell = rowx.createCell(8);
+                cell.setCellValue(editFloat(tranSettlementReport1.getLossWeight()));
+                cell.setCellStyle(contextstyle);
+                cell = rowx.createCell(9);
+                cell.setCellValue(editDouble(tranSettlementReport1.getActualLoss()));
+                cell.setCellStyle(contextstyle);
+                cell = rowx.createCell(10);
+                cell.setCellValue(editFloat(tranSettlementReport1.getTransportPrice()));
+                cell.setCellStyle(contextstyle);
+                cell = rowx.createCell(11);
+                cell.setCellValue(editDouble(tranSettlementReport1.getSettlementPrice()));
+                cell.setCellStyle(contextstyle);
+                cell = rowx.createCell(12);
+                cell.setCellValue(editFloat(tranSettlementReport1.getSettlementWeight()));
+                cell.setCellStyle(contextstyle);
+                cell = rowx.createCell(13);
+                cell.setCellValue(editDouble(tranSettlementReport1.getCargoDamage()));
+                cell.setCellStyle(contextstyle);
+                HSSFDataFormat df = wb.createDataFormat(); // 此处设置数据格式
+                contextstyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0.00"));//保留两位小数点
+                HSSFDataFormat df1 = wb.createDataFormat(); // 此处设置数据格式
+                contextstyle1.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0.00"));//保留两位小数点
+                cell = rowx.createCell(14);
+                if(!StringUtils.isEmpty(tranSettlementReport1.getDeductionAmount())){
+                    cell.setCellValue(Double.parseDouble(tranSettlementReport1.getDeductionAmount()));
+                }
+                cell.setCellStyle(contextstyle);
+                cell = rowx.createCell(15);
+                cell.setCellValue(editDouble(tranSettlementReport1.getServiceCharge()));
+                cell.setCellStyle(contextstyle);
+                cell = rowx.createCell(16);
+                cell.setCellValue(editDouble(tranSettlementReport1.getAmountActuallyPaid()));
+                cell.setCellStyle(contextstyle);
+                cell = rowx.createCell(17);
+                cell.setCellValue(editDouble(tranSettlementReport1.getTaxPoint()));
+                cell.setCellStyle(contextstyle);
+                cell = rowx.createCell(18);
+                cell.setCellValue(editDouble(tranSettlementReport1.getTotalPayable()));
+                cell.setCellStyle(contextstyle);
+                cell = rowx.createCell(19);
+                cell.setCellValue(editFloat(tranSettlementReport1.getAmountEdPayable()));
+                cell.setCellStyle(contextstyle);
+                cell = rowx.createCell(20);
+                cell.setCellValue(editFloat(tranSettlementReport1.getAmountNotPayable()));
+                cell.setCellStyle(contextstyle);
+                cell = rowx.createCell(21);
+                cell.setCellValue(editFloat(tranSettlementReport1.getAlreadyInvoice()));
+                cell.setCellStyle(contextstyle);
+                cell = rowx.createCell(22);
+                String date1 = addDateOneDay(tranSettlementReport1.getPaymentDate() != null ? tranSettlementReport1.getPaymentDate() : new Date());
+                cell.setCellValue(date1);
+                cell.setCellStyle(styleDetail);
+                rownum++;
+            }
+
+        }
+
+
+        String path = null;
+        String tempPath = null;
+        String excelPath = null;
+
+        try {
+
+            // 取得绝对路径
+            tempPath = URLDecoder.decode((localPath), "utf-8");
+
+            // EXCEL路径
+            excelPath = "/web/temp/pay/" + DateUtil.formatDate(new Date(), DateUtils.DATE_FMT_YYYYMMDD_NS) + '/'
+                    + UUID.randomUUID().toString().replaceAll("-", "");
+
+            path = tempPath + excelPath + '/' + "合同信息"
+                    + ".xls";
+
+        } catch (Exception e) {
+            log.debug(e.getMessage());
+        }
+        // 下载
+        download(path, response, wb);
+
+    }
+    private String addDateOneDay(Date date) {
+        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+//        if (null == date) {
+//            return date;
+//        }
+//        Calendar c = Calendar.getInstance();
+//        c.setTime(date); // 设置当前日期
+//        c.add(Calendar.DATE, 1); // 日期加1天
+//        date = c.getTime();
+        return sdf.format(date);
+    }
+
+    /**
+     * 判断浮点数
+     *
+     * @param example
+     * @return
+     */
+    private Float editFloat(Float example) {
+        Float exampleOne = example != null ? example : 0f;
+        return exampleOne;
+    }
+    /**
+     * 判断浮点数
+     *
+     * @param example
+     * @return
+     */
+    private Double editDouble(Double example) {
+        Double exampleOne = example != null ? example : 0d;
+        return exampleOne;
+    }
+
+    /**
+     * 判断字符串
+     *
+     * @param example
+     * @return
+     */
+    private String editString(String example) {
+        String exampleOne = example != null ? example : "";
+        return exampleOne;
+    }
+
+    /**
+     * 下载
+     *
+     * @param path
+     * @param response
+     */
+    private void download(String path, HttpServletResponse response, Workbook wb) {
+
+        try {
+
+            // path是指欲下载的文件的路径。
+            File file = new File(path);
+            // 取得文件名。
+            String fileName = file.getName();
+            // 给文件名编码
+            fileName = new String(fileName.getBytes("GBK"), "ISO-8859-1");
+
+            response.setContentType("application/vnd.ms-excel");
+            response.addHeader("Content-Disposition", "attachment;filename=" + fileName);
+
+            // 定义byte输出流
+            ByteArrayOutputStream out = new ByteArrayOutputStream();
+
+            // 写导出文件
+            wb.write(out);
+
+            // 取得模板文件中的数据
+            byte[] result = out.toByteArray();
+
+            // 设置输出数据类型
+            response.setContentType("application/vnd.ms-excel");
+            // 设置输出数据长度
+            response.setContentLength(result.length);
+
+            // 设置文件名称
+            response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
+            // 将文件流输出到画面
+            response.getOutputStream().write(result);
+
+            out.flush();
+            out.close();
+
+        } catch (IOException ex) {
+            log.debug(ex.getMessage());
+        }
+
+    }
+
 }
 }