POI 导出复杂报表----------完整版(看这一篇就够了)

先看下截图:

poi 的jar 包我们用的比较老了 3.11 的 ,这是最终的代码效果

 

package tdh.platform.ofc.export.util;

import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.springframework.stereotype.Service;
import tdh.platform.ofc.dto.sale.CalcDataConfrimResponse;

import java.math.BigDecimal;
import java.util.List;
import java.util.Objects;

/**
 * <pre>
 * Description:
 * Copyright:	Copyright (c)2021
 * Company:		汇
 * Author:		
 * Version:		1.0
 * Created at:	2021/6/4 16:30
 * </pre>
 */
@Service
public class CalcDataConfirmExportUtil {

    public HSSFWorkbook export(List<CalcDataConfrimResponse> list) {

        // 声明String数组,并初始化元素(表头名称)
        //第一行表头字段,合并单元格时字段跨几列就将该字段重复几次
        String[] excelHeader0 =
                {
                        "       线路       ", "出发城市", "出发区域", "到达城市", "到达区域", "区——区(单边)", "规划里程",//非合并区域
                        "资源配置", "资源配置", "资源配置",

                        "签约客户本月业务", "签约客户本月业务", "签约客户本月业务", "签约客户本月业务", "签约客户本月业务"
                        , "签约客户本月业务", "签约客户本月业务", "签约客户本月业务", "签约客户本月业务",

                        "非签约客户业务", "非签约客户业务", "非签约客户业务", "非签约客户业务", "非签约客户业务"
                        , "非签约客户业务", "非签约客户业务", "非签约客户业务", "非签约客户业务",
                        "业务汇总", "业务汇总", "业务汇总", "业务汇总", "业务汇总", "业务汇总", "业务汇总",
                        "经营状况", "经营状况", "经营状况", "经营状况", "经营状况", "经营状况", "经营状况", "经营状况", "经营状况",
                        "           计划定制要求           ","","" // 合并区域
                };
        //  “0,2,0,0”  ===>  “起始行,截止行,起始列,截止列”
        String[] headnum0 = {"0,2,0,0", "0,2,1,1", "0,2,2,2", "0,2,3,3", "0,2,4,4", "0,2,5,5", "0,2,6,6",
                "0,0,7,9",
                "0,0,10,18",
                "0,0,19,27",
                "0,0,28,34",
                "0,0,35,43",
                "0,2,44,46"
        };

        //第二行表头字段,其中的空的双引号是为了补全表格边框
        String[] excelHeader1 = {
                "", "", "", "", "", "", "",
                "班组数", "车头数", "挂箱数",
                "签约均价", "签约均价", "签约均价",
                "环比变化",
                "发车数", "发车数", "发车数",
                "环比变化", "签约标准产值",
                "散客均价", "散客均价", "散客均价",
                "环比变化",
                "发车数", "发车数", "发车数",
                "环比变化", "非签约标准产值", "汇总均价", "环比变化", "总发车数", "环比变化", "线路不均衡性",
                "标准产值", "环比变化", "标准业务毛利", "标准业务毛利率", "车头兜底", "车头红利", "挂厢兜底额", "闲置亏损率",
                "经营性毛利", "经营性毛利率", "毛利额环比变化", "","",""
        };
        // 合并单元格
        String[] headnum1 = {"1,2,7,7", "1,2,8,8", "1,2,9,9",//班组、车头、挂箱
                "1,1,10,12",//签约均价
                "1,2,13,13",//环比变化
                "1,1,14,16",//发车数
                "1,2,17,17",//环比变化
                "1,2,18,18",//签约标准产值
                "1,1,19,21",//散客均价
                "1,2,22,22",//环比变化
                "1,1,23,25",//发车数
                "1,2,26,26",//环比变化
                "1,2,27,27",//非签约标准产值
                "1,2,28,28",//汇总均价
                "1,2,29,29",//环比变化
                "1,2,30,30",//总发车数
                "1,2,31,31",//环比变化
                "1,2,32,32",//线路不均衡性
                "1,2,33,33",//标准产值
                "1,2,34,34",//环比变化

                "1,2,35,35",//标准业务毛利
                "1,2,36,36",//标准业务毛利率
                "1,2,37,37",//车头兜底
                "1,2,38,38",//车头红利
                "1,2,39,39",//挂厢兜底额
                "1,2,40,40",//闲置亏损率
                "1,2,41,41",//经营性毛利
                "1,2,42,42",//经营性毛利率
                "1,2,43,43"//毛利额环比变化

        };

        //第三行表头字段
        String[] excelHeader2 = {
                "", "", "", "", "", "", "",
                "", "", "",
                "城市", "区域", "集团",
                "",
                "城市", "区域", "集团",
                "", "",//环比变化,签约标准产值
                "城市", "区域", "集团",
                "",
                "城市", "区域", "集团",
                "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "","",""
        };

        String[] headnum2 = {
                "3,3,10,10", "3,3,11,11", "3,3,12,12",
                "3,3,14,14", "3,3,15,15", "3,3,16,16",
                "3,3,19,19", "3,3,20,20", "3,3,21,21",
                "3,3,23,23", "3,3,24,24", "3,3,25,25"
        };

        // 声明一个工作簿
        HSSFWorkbook wb = new HSSFWorkbook();
        // 生成一个表格
        HSSFSheet sheet = wb.createSheet("预算提报");
        // 生成一种样式
        HSSFCellStyle style = wb.createCellStyle();
        // 设置样式
//        style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);
        style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        style.setBorderRight(HSSFCellStyle.BORDER_THIN);
        style.setBorderTop(HSSFCellStyle.BORDER_THIN);
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

        // 生成一种字体
        HSSFFont font = wb.createFont();
        // 设置字体
        font.setFontName("微软雅黑");
        // 设置字体大小
        font.setFontHeightInPoints((short) 12);
        // 字体加粗
        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
        // 在样式中引用这种字体
        style.setFont(font);

        // 生成并设置另一个样式
        HSSFCellStyle style2 = wb.createCellStyle();
//        style2.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);
        style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        style2.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        style2.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        style2.setBorderRight(HSSFCellStyle.BORDER_THIN);
        style2.setBorderTop(HSSFCellStyle.BORDER_THIN);
        style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

        // 生成另一种字体2
        HSSFFont font2 = wb.createFont();
        // 设置字体
        font2.setFontName("微软雅黑");
        // 设置字体大小
        font2.setFontHeightInPoints((short) 12);
        // 字体加粗
        // font2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
        // 在样式2中引用这种字体
        style2.setFont(font2);

        // 生成表格的第一行
        // 第一行表头
        HSSFRow row = sheet.createRow(0);
        for (int i = 0; i < excelHeader0.length; i++) {
            sheet.autoSizeColumn(i, true);// 根据字段长度自动调整列的宽度
            HSSFCell cell = row.createCell(i);
            cell.setCellValue(excelHeader0[i]);
            cell.setCellStyle(style);
            // System.out.println(excelHeader0[i]);
            if (i >= 0 && i <= 46) {
                for (int j = 0; j < excelHeader0.length; j++) {
                    // 从第j列开始填充
                    cell = row.createCell(j);
                    // 填充excelHeader1[j]第j个元素
                    cell.setCellValue(excelHeader0[j]);
                    cell.setCellStyle(style);
                }
            }

        }

        // 动态合并单元格
        for (int i = 0; i < headnum0.length; i++) {
            sheet.autoSizeColumn(i, true);
            String[] temp = headnum0[i].split(",");
            Integer startrow = Integer.parseInt(temp[0]);
            Integer overrow = Integer.parseInt(temp[1]);
            Integer startcol = Integer.parseInt(temp[2]);
            Integer overcol = Integer.parseInt(temp[3]);
            sheet.addMergedRegion(new CellRangeAddress(startrow, overrow, startcol, overcol));
        }

        // 第二行表头
        row = sheet.createRow(1);
        for (int i = 0; i < excelHeader1.length; i++) {
            sheet.autoSizeColumn(i, true);// 自动调整宽度
            HSSFCell cell = row.createCell(i);
            cell.setCellValue(excelHeader1[i]);
            cell.setCellStyle(style);

            if (i > 6 && i <= 46) {
                for (int j = 0; j < excelHeader1.length; j++) {
                    // 从第j+1列开始填充
                    cell = row.createCell(j);
                    // 填充excelHeader1[j]第j个元素
                    cell.setCellValue(excelHeader1[j]);
                    cell.setCellStyle(style);
                }
            }
        }

        // 动态合并单元格
        for (int i = 0; i < headnum1.length; i++) {
            sheet.autoSizeColumn(i, true);
            String[] temp = headnum1[i].split(",");
            Integer startrow = Integer.parseInt(temp[0]);
            Integer overrow = Integer.parseInt(temp[1]);
            Integer startcol = Integer.parseInt(temp[2]);
            Integer overcol = Integer.parseInt(temp[3]);
            sheet.addMergedRegion(new CellRangeAddress(startrow, overrow, startcol, overcol));
        }


        // 第三行表头
        row = sheet.createRow(2);
        for (int i = 0; i < excelHeader2.length; i++) {
            HSSFCell cell = row.createCell(i);
            cell.setCellValue(excelHeader2[i]);
            cell.setCellStyle(style);
            // System.out.println(excelHeader2[i]);
            sheet.autoSizeColumn(i, true);// 自动调整宽度

            if (i > 9 && i <= 46) {
                for (int j = 0; j < excelHeader2.length; j++) {
                    // 从第j+2列开始填充
                    cell = row.createCell(j);
                    // 填充excelHeader1[j]第j个元素
                    cell.setCellValue(excelHeader2[j]);
                    cell.setCellStyle(style);
                }
            }
        }
        // 动态合并单元格7
        for (int i = 0; i < headnum2.length; i++) {
            sheet.autoSizeColumn(i, true);
            String[] temp = headnum2[i].split(",");
            Integer startrow = Integer.parseInt(temp[0]);
            Integer overrow = Integer.parseInt(temp[1]);
            Integer startcol = Integer.parseInt(temp[2]);
            Integer overcol = Integer.parseInt(temp[3]);
            sheet.addMergedRegion(new CellRangeAddress(startrow, overrow, startcol, overcol));
        }

        // 第四行和第五行数据
        for (int i = 0; i < list.size(); i++) {
            row = sheet.createRow(i + 3);
            CalcDataConfrimResponse report = list.get(i);
            if (i == 0 || i == 1) {
                // 线路列
                HSSFCell cell = row.createCell(0);
                cell.setCellValue(report.getSumTitle());
                cell.setCellStyle(style2);
            } else {
                // 线路列
                HSSFCell cell = row.createCell(0);
                cell.setCellValue(report.getRoundTripManageRoute());
                cell.setCellStyle(style2);
            }
            // 出发城市
            HSSFCell cell1 = row.createCell(1);
            cell1.setCellValue(report.getDepartCtName());
            cell1.setCellStyle(style2);
            // 出发区域
            HSSFCell cell2 = row.createCell(2);
            cell2.setCellValue(report.getDepartAreaName());
            cell2.setCellStyle(style2);
            // 到达城市
            HSSFCell cell3 = row.createCell(3);
            cell3.setCellValue(report.getArriveCtName());
            cell3.setCellStyle(style2);
            // 到达区域
            HSSFCell cell4 = row.createCell(4);
            cell4.setCellValue(report.getArriveAreaName());
            cell4.setCellStyle(style2);
            // 区-区(单边)
            HSSFCell cell5 = row.createCell(5);
            cell5.setCellValue(report.getAreaToArea());
            cell5.setCellStyle(style2);
            // 规划里程
            HSSFCell cell6 = row.createCell(6);
            cell6.setCellValue(dataToBlank(report.getAreaToArea(),nullToBlank(report.getPlanMileage())));
            cell6.setCellStyle(style2);

            //班组数
            HSSFCell cell7 = row.createCell(7);
            cell7.setCellValue(dataToBlank(report.getAreaToArea(),nullToBlank(report.getShiftGroupNo())));
            cell7.setCellStyle(style2);

            //车头数
            HSSFCell cell8 = row.createCell(8);
            cell8.setCellValue(dataToBlank(report.getAreaToArea(),nullToBlank(report.getTruckNo())));
            cell8.setCellStyle(style2);
            //挂厢数
            HSSFCell cell9 = row.createCell(9);
            cell9.setCellValue(dataToBlank(report.getAreaToArea(),nullToBlank(report.getTrailerNo())));
            cell9.setCellStyle(style2);


            //城市
            HSSFCell cell10 = row.createCell(10);
            cell10.setCellValue(nullToBlank(report.getSignAvgPriceOfCity()));
            cell10.setCellStyle(style2);

            //区域
            HSSFCell cell11 = row.createCell(11);
            cell11.setCellValue(nullToBlank(report.getSignAvgPriceOfArea()));
            cell11.setCellStyle(style2);

            //集团
            HSSFCell cell12 = row.createCell(12);
            cell12.setCellValue(nullToBlank(report.getSignAvgPriceOfCompany()));
            cell12.setCellStyle(style2);

            //环比变化
            HSSFCell cell13 = row.createCell(13);
            cell13.setCellValue(nullToBlank(report.getSignAvgPriceRate()));
            cell13.setCellStyle(style2);

            //城市
            HSSFCell cell14 = row.createCell(14);
            cell14.setCellValue(nullToBlank(report.getSignDepartCountOfCity()));
            cell14.setCellStyle(style2);
            //区域
            HSSFCell cell15 = row.createCell(15);
            cell15.setCellValue(nullToBlank(report.getSignDepartCountOfArea()));
            cell15.setCellStyle(style2);

            //集团
            HSSFCell cell16 = row.createCell(16);
            cell16.setCellValue(nullToBlank(report.getSignDepartCountOfCompany()));
            cell16.setCellStyle(style2);

            //环比变化
            HSSFCell cell17 = row.createCell(17);
            cell17.setCellValue(nullToBlank(report.getSignDepartCountRate()));
            cell17.setCellStyle(style2);

            //签约标准产值
            HSSFCell cell18 = row.createCell(18);
            cell18.setCellValue(nullToBlank(report.getStandardIncomeOfSign()));
            cell18.setCellStyle(style2);

            //城市
            HSSFCell cell19 = row.createCell(19);
            cell19.setCellValue(nullToBlank(report.getGeneralAvgPriceOfCity()));
            cell19.setCellStyle(style2);

            //区域
            HSSFCell cell20 = row.createCell(20);
            cell20.setCellValue(nullToBlank(report.getGeneralAvgPriceOfArea()));
            cell20.setCellStyle(style2);

            //集团
            HSSFCell cell21 = row.createCell(21);
            cell21.setCellValue(nullToBlank(report.getGeneralAvgPriceOfCompany()));
            cell21.setCellStyle(style2);

            //环比变化
            HSSFCell cell22 = row.createCell(22);
            cell22.setCellValue(nullToBlank(report.getGeneralAvgPriceRate()));
            cell22.setCellStyle(style2);

            //城市
            HSSFCell cell23 = row.createCell(23);
            cell23.setCellValue(nullToBlank(report.getGeneralDepartCountOfCity()));
            cell23.setCellStyle(style2);

            //区域
            HSSFCell cell24 = row.createCell(24);
            cell24.setCellValue(nullToBlank(report.getGeneralDepartCountOfArea()));
            cell24.setCellStyle(style2);

            //集团
            HSSFCell cell25 = row.createCell(25);
            cell25.setCellValue(nullToBlank(report.getGeneralDepartCountOfCompany()));
            cell25.setCellStyle(style2);

            //环比变化
            HSSFCell cell26 = row.createCell(26);
            cell26.setCellValue(nullToBlank(report.getGeneralDepartCountRate()));
            cell26.setCellStyle(style2);

            //非签约标准产值
            HSSFCell cell27 = row.createCell(27);
            cell27.setCellValue(nullToBlank(report.getStandardIncomeOfUnSign()));
            cell27.setCellStyle(style2);

            //汇总均价
            HSSFCell cell28 = row.createCell(28);
            cell28.setCellValue(nullToBlank(report.getAllAvgPrice()));
            cell28.setCellStyle(style2);

            //环比变化
            HSSFCell cell29 = row.createCell(29);
            cell29.setCellValue(nullToBlank(report.getAllAvgPriceRate()));
            cell29.setCellStyle(style2);

            //总发车数
            HSSFCell cell30 = row.createCell(30);
            cell30.setCellValue(nullToBlank(report.getAllDepartCount()));
            cell30.setCellStyle(style2);

            //环比变化
            HSSFCell cell31 = row.createCell(31);
            cell31.setCellValue(nullToBlank(report.getAllDepartCountRate()));
            cell31.setCellStyle(style2);

            //线路不均衡性--------------
            HSSFCell cell32 = row.createCell(32);
            cell32.setCellValue(mergeCell(i,nullToBlank(report.getRouteBlance())));//线路不均衡性
            cell32.setCellStyle(style2);

            //标准产值
            HSSFCell cell33 = row.createCell(33);
            cell33.setCellValue(nullToBlank(report.getStandardIncome()));
            cell33.setCellStyle(style2);

            //环比变化
            HSSFCell cell34 = row.createCell(34);
            cell34.setCellValue(nullToBlank(report.getStandardIncomeRate()));
            cell34.setCellStyle(style2);

            //标准业务毛利
            HSSFCell cell35 = row.createCell(35);
            cell35.setCellValue(nullToBlank(report.getBizStandardProfit()));
            cell35.setCellStyle(style2);

            //标准业务毛利率
            HSSFCell cell36 = row.createCell(36);
            cell36.setCellValue(nullToBlank(report.getBizStandardProfitRate()));
            cell36.setCellStyle(style2);

            //车头兜底
            HSSFCell cell37 = row.createCell(37);
            cell37.setCellValue(nullToBlank(report.getPromiseTruckTotalCharge()));
            cell37.setCellStyle(style2);

            //车头红利
            HSSFCell cell38 = row.createCell(38);
            cell38.setCellValue(nullToBlank(report.getBonusTruckTotalCharge()));
            cell38.setCellStyle(style2);

            //挂厢兜底额
            HSSFCell cell39 = row.createCell(39);
            cell39.setCellValue(nullToBlank(report.getPromiseTrailerTotalCharge()));
            cell39.setCellStyle(style2);

            //闲置亏损率
            HSSFCell cell40 = row.createCell(40);
            cell40.setCellValue(nullToBlank(report.getIdleLossRate()));
            cell40.setCellStyle(style2);

            //经营性毛利
            HSSFCell cell41 = row.createCell(41);
            cell41.setCellValue(nullToBlank(report.getManageProfit()));
            cell41.setCellStyle(style2);

            //经营性毛利率
            HSSFCell cell42 = row.createCell(42);
            cell42.setCellValue(nullToBlank(report.getManageProfitRate()));
            cell42.setCellStyle(style2);

            //毛利额环比变化
            HSSFCell cell43 = row.createCell(43);
            cell43.setCellValue(nullToBlank(report.getManageProfitChange()));
            cell43.setCellStyle(style2);

            //定制计划要求-城市
            HSSFCell cell44 = row.createCell(44);
            cell44.setCellValue(report.getRemarkOfCity());
            cell44.setCellStyle(style2);

            //定制计划要求-区域
            HSSFCell cell45 = row.createCell(45);
            cell45.setCellValue(report.getRemarkOfArea());
            cell45.setCellStyle(style2);

            //定制计划要求-集团
            HSSFCell cell46 = row.createCell(46);
            cell46.setCellValue(report.getRemarkOfCompany());
            cell46.setCellStyle(style2);

            /**
             * 除去表头,再除去2行汇总,然后每写三行数据进行一次合并单元格第一次合并的时候对于整个sheet来说 开始行是5 结束行是7
             * ,此时的i 是 4  数据行开始是(2+3)从0开始第五行是4
             */
            if((i>3) && (i%3 == 1)){
                CellRangeAddress region = new CellRangeAddress(i+1, i+3, 32, 32);
                sheet.addMergedRegion(region);
            }
        }

        return wb;
    }


    public static String nullToBlank(BigDecimal obj){
        if(Objects.isNull(obj)){
            return "";
        }
        return obj.stripTrailingZeros().toPlainString();
    }

    /**
     * 设置规划里程、资源配置的(班组数、车头数、挂厢数)为空白单元格
     * @param areaToArea
     * @param mileageAndResource
     * @return
     */
    public static String dataToBlank(String areaToArea,String mileageAndResource){
        if(StringUtils.isNotBlank(areaToArea) && StringUtils.isNotBlank(mileageAndResource)){
            return "";
        }
        return mileageAndResource;
    }


    public static String mergeCell(int column,String routeBlance){
        if(column%3 == 2){
            return routeBlance;
        }
        return "";
    }


}

 

需要用到的对象属性,要提供setter getter 方法

public class CalcDataConfrimResponse extends CalcManageDataResponse {

    /**
     * 预算月
     */
    private String month;

    /**
     * 汇总标题
     */
    private String sumTitle;

    /**
     * 操作类型(已确认、待确认)
     */
    private String opType = "0";

    /**
     * 出发城市
     */
    private String departCtName;

    /**
     * 出发区域
     */
    private String departAreaName;

    /**
     * 到达城市
     */
    private String arriveCtName;

    /**
     * 到达区域
     */
    private String arriveAreaName;

    /**
     * 区到区单边
     */
    private String areaToArea;

    /**
     * 签约均价 城市
     */
    private BigDecimal signAvgPriceOfCity = BigDecimal.ZERO;

    /**
     * 签约均价 区域
     */
    private BigDecimal signAvgPriceOfArea = BigDecimal.ZERO;

    /**
     * 签约均价 公司
     */
    private BigDecimal signAvgPriceOfCompany = BigDecimal.ZERO;

    /**
     * 签约发车数 城市
     */
    private BigDecimal signDepartCountOfCity = BigDecimal.ZERO;

    /**
     * 签约发车数 区域
     */
    private BigDecimal signDepartCountOfArea = BigDecimal.ZERO;

    /**
     * 签约发车数 公司
     */
    private BigDecimal signDepartCountOfCompany = BigDecimal.ZERO;

    /**
     * 签约客户标准产值
     */
    private BigDecimal standardIncomeOfSign = BigDecimal.ZERO;

    /**
     * 签约客户标准产值 城市
     */
    private BigDecimal standardIncomeOfSignOfCity = BigDecimal.ZERO;

    /**
     * 签约客户标准产值 区域
     */
    private BigDecimal standardIncomeOfSignOfArea = BigDecimal.ZERO;

    /**
     * 签约客户标准产值 公司
     */
    private BigDecimal standardIncomeOfSignOfCompany = BigDecimal.ZERO;

    /**
     * 非签约均价 城市
     */
    private BigDecimal generalAvgPriceOfCity = BigDecimal.ZERO;

    /**
     * 非签约均价 区域
     */
    private BigDecimal generalAvgPriceOfArea = BigDecimal.ZERO;

    /**
     * 非签约均价 公司
     */
    private BigDecimal generalAvgPriceOfCompany = BigDecimal.ZERO;

    /**
     * 非签约发车数 城市
     */
    private BigDecimal generalDepartCountOfCity = BigDecimal.ZERO;

    /**
     * 非签约发车数 区域
     */
    private BigDecimal generalDepartCountOfArea = BigDecimal.ZERO;

    /**
     * 非签约发车数 公司
     */
    private BigDecimal generalDepartCountOfCompany = BigDecimal.ZERO;

    /**
     * 非签约客户标准产值
     */
    private BigDecimal standardIncomeOfUnSign = BigDecimal.ZERO;

    /**
     * 非签约客户标准产值 城市
     */
    private BigDecimal standardIncomeOfUnSignOfCity = BigDecimal.ZERO;

    /**
     * 非签约客户标准产值 区域
     */
    private BigDecimal standardIncomeOfUnSignOfArea = BigDecimal.ZERO;

    /**
     * 非签约客户标准产值 公司
     */
    private BigDecimal standardIncomeOfUnSignOfCompany = BigDecimal.ZERO;

    /**
     * 城市备注
     */
    private String remarkOfCity = "";

    /**
     * 区域备注
     */
    private String remarkOfArea = "";

    /**
     * 公司备注
     */
    private String remarkOfCompany = "";
public class CalcManageDataResponse {

    /**
     * 时间进度
     */
    private BigDecimal rateProgress = BigDecimal.ZERO;


    /**
     * ID 0 代表管理线路,不为0的时候代表单边管理线路
     */
    private Integer id;

    /**
     *管理线路Id
     */
    private Integer roundTripManageRouteId;
    /**
     * 管理线路
     */
    private String roundTripManageRoute;
    /**
     * 单边线路
     */
    private String singleManageRoute;
    /**
     * 规划里程
     */
    private BigDecimal planMileage = BigDecimal.ZERO;
    /**
     * 班组数
     */
    private BigDecimal shiftGroupNo = BigDecimal.ZERO;
    /**
     * 车头数
     */
    private BigDecimal truckNo;
    /**
     * 挂厢数
     */
    private BigDecimal trailerNo;


    /**
     * 线路效率
     */
    private BigDecimal routeEfficiency = BigDecimal.ZERO;
    /**
     * 线路效率
     */
    private BigDecimal tkEfficiency = BigDecimal.ZERO;



    /**
     * 签约均价
     */
    private BigDecimal signAvgPrice = BigDecimal.ZERO;
    /**
     * 签约均价环比变化
     */
    private BigDecimal signAvgPriceRate = BigDecimal.ZERO;
    /**
     * 签约发车数
     */
    private BigDecimal signDepartCount = BigDecimal.ZERO;

    /**
     * 签约发车数环比变化
     */
    private BigDecimal signDepartCountRate = BigDecimal.ZERO;




    /**
     * 散客均价
     */
    private BigDecimal generalAvgPrice = BigDecimal.ZERO;

    /**
     * 散客均价环比变化
     */
    private BigDecimal generalAvgPriceRate = BigDecimal.ZERO;
    /**
     * 散客发车数
     */
    private BigDecimal generalDepartCount = BigDecimal.ZERO;

    /**
     * 散客发车数环比变化
     */
    private BigDecimal generalDepartCountRate = BigDecimal.ZERO;





    /**
     * 汇总均价
     */
    private BigDecimal allAvgPrice = BigDecimal.ZERO;

    /**
     * 汇总均价环比变化
     */
    private BigDecimal allAvgPriceRate = BigDecimal.ZERO;
    /**
     * 汇总发车数
     */
    private BigDecimal allDepartCount = BigDecimal.ZERO;

    /**
     * 汇总发车数环比变化
     */
    private BigDecimal allDepartCountRate = BigDecimal.ZERO;
    /**
     * 线路不均衡性
     */
    private BigDecimal routeBlance = BigDecimal.ZERO;

    /**
     * 标准产值
     */
    private BigDecimal standardIncome = BigDecimal.ZERO;

    /**
     * 标准产值环比变化
     */
    private BigDecimal standardIncomeRate = BigDecimal.ZERO;




    /**
     * 标准业务毛利
     */
    private BigDecimal bizStandardProfit = BigDecimal.ZERO;
    /**
     * 业务毛利率
     */
    private BigDecimal bizStandardProfitRate = BigDecimal.ZERO;
    /**
     *车头兜底
     */
    private BigDecimal promiseTruckTotalCharge = BigDecimal.ZERO;
    /**
     *车头红利
     */
    private BigDecimal bonusTruckTotalCharge = BigDecimal.ZERO;
    /**
     *挂厢兜底额
     */
    private BigDecimal promiseTrailerTotalCharge = BigDecimal.ZERO;
    /**
     *闲置亏损率
     */
    private BigDecimal idleLossRate = BigDecimal.ZERO;
    /**
     *经营性毛利
     */
    private BigDecimal manageProfit = BigDecimal.ZERO;
    /**
     *经营性毛利率
     */
    private BigDecimal manageProfitRate = BigDecimal.ZERO;
    /**
     *毛利额环比变化
     */
    private BigDecimal manageProfitChange = BigDecimal.ZERO;

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值