|
@@ -2,6 +2,7 @@ package com.yh.saas.plugin.yiliangyiyun.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.alipay.sofa.runtime.api.annotation.SofaReference;
|
|
|
+import com.aliyun.oss.OSSClient;
|
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
|
|
import com.baomidou.mybatisplus.plugins.Page;
|
|
|
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.service.*;
|
|
|
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.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.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
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.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
@@ -44,6 +59,7 @@ import java.util.stream.Collectors;
|
|
|
* @since 2021-08-27
|
|
|
*/
|
|
|
@Service
|
|
|
+@Slf4j
|
|
|
public class TranSettlementReportServiceImpl extends ServiceImpl<TranSettlementReportMapper, TranSettlementReport> implements ITranSettlementReportService {
|
|
|
|
|
|
@Autowired
|
|
@@ -64,8 +80,17 @@ public class TranSettlementReportServiceImpl extends ServiceImpl<TranSettlementR
|
|
|
private IExpenseInfoService expenseInfoService;
|
|
|
@Autowired
|
|
|
private IBatchReviewInfoService batchReviewInfoService;
|
|
|
+ @Value("${file-root-path}")
|
|
|
+ private String localPath;
|
|
|
@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";
|
|
|
}
|
|
|
|
|
|
+ @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());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|