Java-Vue+ElementUI动态表格及数据显示

1.前端Vue画面

<!-- 昼夜作业量统计 -->
<template>
  <div class="app-container">
    <el-form
      :model="queryParams"
      ref="queryForm"
      v-show="showSearch"
      :inline="true"
      :rules="rules"
    >
    <el-form-item label="归属场站" prop="CZ">
        <el-select
          filterable
          clearable
          v-model="queryParams.CZ"
          placeholder=""
          style="width: 150px"
          size="small"
          :filter-method="getCzMethod"
          @focus="CzList = CzListAry"
        >
          <el-option
            v-for="CZ in CzList"
            :key="CZ.PRE_NUM"
            :label="CZ.PRE_NUM + ' ' + CZ.COMP_NO"
            :value="CZ.COMP_NO"
          />
        </el-select>
      </el-form-item>
      <el-form-item label="月份">
        <el-date-picker
          v-model="queryParams.month"
          size="small"
          style="width: 240px"
          type="month"
          value-format="yyyy-MM-dd HH:mm:ss"
        ></el-date-picker>
      </el-form-item>
      <el-form-item>
        <el-button
          type="primary"
          icon="el-icon-search"
          size="mini"
          @click="handleQuery"
          >搜索</el-button
        >
        <el-button
          icon="el-icon-refresh"
          type="info"
          size="mini"
          @click="resetQuery"
          >重置</el-button
        >
        <el-button
          type="primary"
          icon="el-icon-download"
          size="mini"
          @click="handleExport"
          >导出Excel</el-button
        >
      </el-form-item>
    </el-form>
    <el-table
      border
      :height="minHeight"
      id="testTable"
      v-loading="loading"
      :data="TableDataList.rows"
      :row-key="getRowKeys"
      stripe
      highlight-current-row
      fit
      ref="table"
      @selection-change="handleSelectionChange"
      :summary-method="getSummaries"
      :show-summary="true"
    >
      <el-table-column
        v-for="(item, index) in TableDataList.titleList"
        :key="item.order"
        :label="item.name"
        align="center"
        :prop="item.prop"
        show-overflow-tooltip
      >
        <el-table-column
          v-for="(item1, index1) in item.children" 
          :key="item1.order"
          :label="item1.name"
          align="center"
          :prop="item1.prop"
          show-overflow-tooltip
        >
          <el-table-column
            v-for="(item2, index2) in item1.children"
            :key="item2.order"
            :label="item2.name"
            align="center"
            :prop="item2.prop"
            show-overflow-tooltip
          >
            <el-table-column
              v-for="(item3, index3) in item2.children"
              :key="item3.order"
              :label="item3.name"
              align="center"
              :prop="item3.prop"
              show-overflow-tooltip
            />
            </el-table-column>
          </el-table-column>
        </el-table-column>
    </el-table>
    <!-- 分页 -->
    <pagination
      v-show="total > 0"
      :total="total"
      :page.sync="queryParams.pageNum"
      :limit.sync="queryParams.pageSize"
      @pagination="getList"
    />
  </div>
</template>

<script>
import { getCzList } from "@/api/zdBoxNo/zdBoxNo";
import { getDayAndNightOperationVolumeData } from "@/api/statistics/dayAndNightOperationVolume";
import {getOpLog,queryUserCzNo} from "@/api/index/index"
import FileSaver from "file-saver";
import * as XLSX from "xlsx";
export default {
  name: "DayAndNightOperationVolume",
  data() {
    return {
      minHeight: document.body.clientHeight - 260,
      // 遮罩层
      loading: true,
      // 选中数组
      ids: [],
      // 非单个禁用
      single: true,
      // 非多个禁用
      multiple: true,
      // 显示搜索条件
      showSearch: true,
      // 总条数
      total: 0,
      TableDataList: [],
      //场站列表
      CzList: [],
      CzListAry: [],
      // 查询参数
      queryParams: {
        pageNum: 1,
        pageSize: 20,
        CZ: '',
        month: (new Date()),
      },
      // 表单校验
      rules: {
        CZ: [
          { required: true, message: "归属场站不能为空", trigger: "blur" }
        ],
      },
    };
  },
  created() {
    this.getCzList();
    var map = {};
    map.fname =this.$route.path
    map.menuName ='昼夜作业量统计'
    map.img =window.location.href
    getOpLog(map).then((res) => {

    })
  },
  
  methods: {
    //加载场站
    getCzList() {
      getCzList()
        .then((response) => {
          this.CzList = this.CzListAry = response.message;
          this.loading = false;
        })
        .catch((err) => {
          this.loading = false;
        });
    },
    getCzMethod(val) {
      let ary = this.CzListAry;
      this.CzList = ary.filter(
        (item) =>
          item.PRE_NUM.includes(val.toUpperCase()) ||
          item.COMP_NO.includes(val.toUpperCase())
      );
      this.queryParams.CZ = val.toUpperCase();
    },
    handleExport() {
      this.exportExcel("昼夜作业量统计", "testTable");
    },
    exportExcel(filename, tableId) {
      var xlsxParam = { raw: true }; // 导出的内容只做解析,不进行格式转换
      var table = document.querySelector("#" + tableId).cloneNode(true);
      var wb = XLSX.utils.table_to_book(table, xlsxParam);
      /* 获取二进制字符进行输出 */
      var wbout = XLSX.write(wb, {
        bookType: "xlsx",
        bookSST: true,
        type: "array",
      });
      try {
        FileSaver.saveAs(
          new Blob([wbout], { type: "application/octet-stream" }),
          filename + ".xlsx"
        );
      } catch (e) {
        if (typeof console !== "undefined") {
          console.log(e, wbout);
        }
      }
      return wbout;
    },
    /** 查询角色列表 */
    getList() {
      this.loading = true;
      this.queryParams.type = 'DayAndNightOperationVolume'
      getDayAndNightOperationVolumeData(this.queryParams).then((response) => {
        this.TableDataList = response;
        this.total = response.total;
        this.loading = false;
      });
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.dateRange = [];
      this.loading = false;
      this.resetForm("queryForm");
      this.handleQuery();
    },
    // 多选框选中数据
    handleSelectionChange(selection) {
      this.ids = selection.map((item) => item.roleId);
      this.single = selection.length != 1;
      this.multiple = !selection.length;
    },
    getRowKeys(row) {
      return row.id;
    },

    //合计
    getSummaries(param) {
      const { columns, data } = param;
      const sums = [];
      columns.forEach((column, index) => {
        console.log("index=="+index)
        console.log("column== "+JSON.stringify(column))
          if (index === 0) {
              sums[index] = '合计:';
              return;
          }
          // 可以用index设置 因为项目会动态改变列 所以我用了name
          if (column.label == "总站" || column.label == "南站" || column.label == "北站" || column.label == "后辅区" || column.label == "疏港" || column.label == "集港" || column.label == "站调") {
            const values = data.map(item => Number(item[column.property]));
            if (!values.every(value => isNaN(value))) {
                sums[index] = values.reduce((prev, curr) => {
                    const value = Number(curr);
                    if (!isNaN(value)) {
                        return prev + (curr<0?0:curr);
                    } else {
                        return prev;
                    }
                  }, 0);
                  sums[index] = (sums[index]) + '';
              } else {
                  sums[index] = '';
            }
          }
      });
      return sums;
    },
  },
};
</script>

2.前端js

import request from '@/utils/request'
//获取列表数据
export function getDayAndNightOperationVolumeData(data) {
  return request({
    url: '/statisticsDataExample/getStatisticsData',
    method: 'post',
    data: data
  })
}

3.后端Controller

@ApiOperation(value = "数据查询", notes = "数据查询")
@PostMapping(value = "/getStatisticsData")
@ResponseBody
public AjaxResult getStatisticsData(@RequestBody String req) throws SQLException {
    try {
        //查询数据
        return iStatisticsDataExampleService.getStatisticsData(req);
    } catch (Exception e) {
        log.error(e.getMessage());
        return AjaxResult.error(e.getMessage());
    }
}

4.后端业务实现

@Override
public AjaxResult getStatisticsData(String req) throws SQLException {
    AjaxResult ajaxResult = AjaxResult.success();
    JSONObject jsonObject = JSONObject.parseObject(req);
    if(jsonObject.get("CZ")==null || jsonObject.get("CZ").toString().trim().length() == 0){
        return AjaxResult.error("请选择归属场站");
    }
    if(jsonObject.get("type")==null || jsonObject.get("type").toString().trim().length() == 0){
        return AjaxResult.error("统计入参异常,请联系管理员。");
    }

    //从存储过程中获取表头信息
    List<Title> titleList = new ArrayList<>();//表头
    Map<String, Object> titleMap = new HashMap<>();
    titleMap.put("CZ", jsonObject.get("CZ")==null?"":jsonObject.get("CZ").toString().trim());
    titleMap.put("type", jsonObject.get("type")==null?"":jsonObject.get("type").toString().trim());//统计类型
    Map<String,String> titilesMap = iStatisticsDataExampleMapper.getDynamicDataStatisticsTitiles(titleMap);
    String titleA = titilesMap.get("titleA").trim();
    String titleB = titilesMap.get("titleB").trim();
    String titleC = titilesMap.get("titleC").trim();
    String titleD = titilesMap.get("titleD").trim();
    titleList = getTitleList(titleA,titleB,titleC,titleD);

    //从存储过程中获取数据信息
    Connection connection = null;
    CallableStatement callableStatement = null;
    try {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

        connection = DriverManager.getConnection(data_url,data_name,data_password);
        //编写存储过程语句
        String sqlStr = "{call DynamicDataStatisticsData(?,?,?,?,?)}";
        //设置入参
        callableStatement = connection.prepareCall(sqlStr);
        callableStatement.setString(1,jsonObject.get("CZ")==null?"":jsonObject.get("CZ").toString().trim());//场站
        callableStatement.setString(2, jsonObject.get("type")==null?"":jsonObject.get("type").toString().trim());//统计类型
        if (jsonObject.get("month")!=null){
            String dateStr = jsonObject.get("month").toString().trim();
            dateStr = dateStr.substring(0,10);
            callableStatement.setString(3,dateStr);//月份
        }else{
            callableStatement.setString(3,null);//月份
        }
        callableStatement.setString(4,jsonObject.get("beginTime")==null?"":jsonObject.get("beginTime").toString().trim());//开始时间
        callableStatement.setString(5,jsonObject.get("endTime")==null?"":jsonObject.get("endTime").toString().trim());//截至时间
        //执行
        callableStatement.executeQuery();
        //获取查询结果
        ResultSet rs = callableStatement.getResultSet();
        //处理数据
        if (null != rs) {
            List<Map<String, Object>> list = new ArrayList<>();
            ResultSetMetaData metaData = rs.getMetaData(); // 获得列的结果
            List<String> colNameList=new ArrayList<String>();
            int cols_len = metaData.getColumnCount(); // 获取总的列数
            for (int i = 0; i < cols_len; i++) {
                colNameList.add(metaData.getColumnName(i+1));
            }
            while (rs.next()) {
                Map<String, Object> mapTMP=new HashMap<String, Object>();
                for(int i=0;i<cols_len;i++){
                    String key=colNameList.get(i);
                    Object value=rs.getString(colNameList.get(i));
                    mapTMP.put(key, value);
                }
                list.add(mapTMP);
            }
            //分页参数
            Integer pageNum = jsonObject.get("pageNum")==null?1:Integer.parseInt(jsonObject.get("pageNum").toString());
            Integer pageSize = jsonObject.get("pageSize")==null?10:Integer.parseInt(jsonObject.get("pageSize").toString());
            //截取分页数据
            List<Map<String,Object>> pageList = new ArrayList<>();
            if (list.size() > 0) {
                int currIdx = (pageNum > 1 ? (pageNum - 1) * pageSize : 0);
                for (int m = 0; m < pageSize && m < list.size() - currIdx; m++) {
                    Map<String,Object> data = list.get(currIdx + m);
                    pageList.add(data);
                }
            }

            exportList = pageList;
            total = Long.valueOf(list.size());

            ajaxResult.put("rows", pageList);
            ajaxResult.put("total", total);
            ajaxResult.put("titleList", titleList);
            return ajaxResult;
        }else{
            return AjaxResult.error("保存失败。");
        }
    } catch (Exception e) {
        e.printStackTrace();
        return AjaxResult.error("保存失败。");
    }finally{
        callableStatement.close();
        connection.close();
    }
}

//获取表头集合
public List<Title> getTitleList(String titleStrA,String titleStrB,String titleStrC,String titleStrD){
    //一级表头
    List<Title> titleListA = new ArrayList<>();
    if(titleStrA != null && titleStrA.trim().length() > 0 && !"[]".equals(titleStrA.trim())){
        JSONArray jsonArrayA = JSONArray.fromObject(titleStrA);
        for (Object objectA:jsonArrayA) {
            Title titleA = JSONObject.parseObject(objectA.toString(),Title.class);
            //二级表头
            List<Title> titleListB = new ArrayList<>();
            if(titleStrB != null && titleStrB.trim().length() > 0 && !"[]".equals(titleStrB.trim())){
                JSONArray jsonArrayB = JSONArray.fromObject(titleStrB);
                for (Object objectB:jsonArrayB) {
                    Title titleB = JSONObject.parseObject(objectB.toString(),Title.class);
                    //三级表头
                    List<Title> titleListC = new ArrayList<>();
                    if(titleStrC != null && titleStrC.trim().length() > 0 && !"[]".equals(titleStrC.trim())){
                        JSONArray jsonArrayC = JSONArray.fromObject(titleStrC);
                        for (Object objectC:jsonArrayC) {
                            Title titleC = JSONObject.parseObject(objectC.toString(),Title.class);
                            //四级表头
                            List<Title> titleListD = new ArrayList<>();
                            if(titleStrD != null && titleStrD.trim().length() > 0 && !"[]".equals(titleStrD.trim())){
                                JSONArray jsonArrayD = JSONArray.fromObject(titleStrD);
                                for (Object objectD:jsonArrayD) {
                                    Title titleD = JSONObject.parseObject(objectD.toString(),Title.class);
                                    if(titleD.getParentId().equals(titleC.getId())){
                                        titleListD.add(titleD);
                                    }
                                }
                                titleC.setChildren(titleListD);
                            }
                            if(titleC.getParentId().equals(titleB.getId())){
                                titleListC.add(titleC);
                            }
                        }
                        titleB.setChildren(titleListC);
                    }
                    if(titleB.getParentId().equals(titleA.getId())){
                        titleListB.add(titleB);
                    }
                }
                titleA.setChildren(titleListB);
            }
            titleListA.add(titleA);
        }
    }
    return titleListA;
}

5.获取动态配置表头的存储过程

--=====================================================================================
ALTER PROCEDURE [dbo].[DynamicDataStatisticsTitle](@CZ varchar(10)='',@type varchar(100))
as
begin
--一级表头
DECLARE @titleA VARCHAR(MAX)=''
--二级表头
DECLARE @titleB VARCHAR(MAX)=''
--三级表头
DECLARE @titleC VARCHAR(MAX)=''
--四级表头
DECLARE @titleD VARCHAR(MAX)=''
--月份表头
DECLARE @monthStr VARCHAR(20)=GETDATE()

--示例模板
if @CZ='00' 
	begin
-- 	SET @titleA='[]'
-- 	SET @titleB='[]'
-- 	SET @titleC='[]'
-- 	SET @titleD='[]'
		SET @titleA='[{"id":"A001","parentId":"","name":"一级表头1","order":"1"},{"id":"A002","parentId":"","name":"一级表头2","order":"2"},{"id":"A003","parentId":"","name":"一级表头3","order":"3"},{"id":"A004","parentId":"","name":"一级表头4","order":"4"},{"id":"A005","parentId":"","name":"一级表头5","order":"5"}]'
	SET @titleB='[{"id":"B001","parentId":"A001","name":"二级表头1","order":"1"},{"id":"B002","parentId":"A001","name":"二级表头2","order":"2"},{"id":"B003","parentId":"A002","name":"二级表头3","order":"3"},{"id":"B004","parentId":"A002","name":"二级表头4","order":"4"},{"id":"B005","parentId":"A003","name":"二级表头5","order":"5"},{"id":"B006","parentId":"A003","name":"二级表头6","order":"6"},{"id":"B007","parentId":"A004","name":"二级表头7","order":"7"},{"id":"B008","parentId":"A005","name":"二级表头8","order":"8"}]'
	SET @titleC='[{"id":"C001","parentId":"B001","name":"三级表头1","prop":"name","order":"1"},{"id":"C002","parentId":"B001","name":"三级表头2","prop":"name","order":"2"},{"id":"C003","parentId":"B002","name":"三级表头3","prop":"name","order":"3"},{"id":"C004","parentId":"B003","name":"三级表头4","prop":"name","order":"4"},{"id":"C005","parentId":"B003","name":"三级表头5","prop":"name","order":"5"},{"id":"C006","parentId":"B004","name":"三级表头6","prop":"name","order":"6"},{"id":"C007","parentId":"B005","name":"三级表头7","prop":"name","order":"7"},{"id":"C008","parentId":"B005","name":"三级表头8","prop":"name","order":"8"},{"id":"C009","parentId":"B006","name":"三级表头9","prop":"name","order":"9"},{"id":"C0010","parentId":"B007","name":"三级表头10","prop":"name","order":"10"},{"id":"C0011","parentId":"B007","name":"三级表头11","prop":"name","order":"11"},{"id":"C0012","parentId":"B008","name":"三级表头12","prop":"name","order":"12"}]'
	SET @titleD='[]'
	end
	else
	if @CZ='GLR'
	begin
		--昼夜作业量统计
		if @type='DayAndNightOperationVolume'
		begin
		
		SET @monthStr = MONTH(getDate())
		-- @titleA  一级表头
		SET @titleA='[{"id":"A001","parentId":"","name":"'+@monthStr+'月份每日昼夜作业量统计(标箱)","order":"1"}]'
		-- @titleB  二级表头
	SET @titleB='[{"id":"B001","parentId":"A001","name":"","order":"1"},{"id":"B002","parentId":"A001","name":"空箱盘存","order":"2"},	{"id":"B003","parentId":"A001","name":"重箱盘存","order":"3"},{"id":"B004","parentId":"A001","name":"堆场利用率","order":"4"},{"id":"B005","parentId":"A001","name":"","order":"5"},{"id":"B006","parentId":"A001","name":"","order":"6"},{"id":"B007","parentId":"A001","name":"","order":"7"}]'
	-- @titleC  三级表头
	SET @titleC='[	
	{"id":"C001","parentId":"B001","name":"编号","prop":"dateStr","order":"1"},
	{"id":"C002","parentId":"B002","name":"总站","prop":"kMainStation","order":"2"},
	{"id":"C003","parentId":"B002","name":"南站","prop":"kSouthStation","order":"3"},	
	{"id":"C004","parentId":"B002","name":"北站","prop":"kNorthStation","order":"4"},
	{"id":"C005","parentId":"B002","name":"后辅区","prop":"kPostsecondaryArea","order":"5"},	
	{"id":"C006","parentId":"B003","name":"总站","prop":"zMainStation","order":"6"},
	{"id":"C007","parentId":"B003","name":"南站","prop":"zSouthStation","order":"7"},	
	{"id":"C008","parentId":"B004","name":"总站","prop":"yardMainStation","order":"8"},
	{"id":"C009","parentId":"B004","name":"南站","prop":"yardSouthStation","order":"9"},	
	{"id":"C0010","parentId":"B004","name":"北站","prop":"yardNorthStation","order":"10"},
	{"id":"C0011","parentId":"B004","name":"后辅区","prop":"yardPostsecondaryArea","order":"11"},	
	{"id":"C0012","parentId":"B005","name":"疏港","prop":"openPort","order":"12"},
	{"id":"C0013","parentId":"B006","name":"集港","prop":"collectionPort","order":"13"},
	{"id":"C0014","parentId":"B007","name":"站调","prop":"stationModulation","order":"14"}
	]'
	-- @titleD  四级表头
	SET @titleD='[]'
		end
		else if @type='GLEmptyWeightTank'
		begin
		
		SET @monthStr = MONTH(getDate())
		-- @titleA  一级表头
		SET @titleA='[{"id":"A001","parentId":"","name":"'+@monthStr+'月份港陆空重箱操作数据统计","order":"1"}]'
		-- @titleB  二级表头
	SET @titleB='[{"id":"B001","parentId":"A001","name":"","order":"1"},{"id":"B002","parentId":"A001","name":"提箱出场","order":"2"},	{"id":"B003","parentId":"A001","name":"卸船进场","order":"3"},{"id":"B004","parentId":"A001","name":"重箱返场","order":"4"},{"id":"B005","parentId":"A001","name":"在场空箱盘存","order":"5"},{"id":"B006","parentId":"A001","name":"在场重箱盘存","order":"6"},{"id":"B007","parentId":"A001","name":"码头盘存","order":"7"},{"id":"B008","parentId":"A001","name":"","order":"8"}]'
	-- @titleC  三级表头
	SET @titleC='[
	{"id":"C001","parentId":"B001","name":"日期","prop":"dateStr","order":"1"},
	{"id":"C002","parentId":"B002","name":"20’","prop":"tx20","order":"2"},
	{"id":"C003","parentId":"B002","name":"40’","prop":"tx40","order":"3"},	
	{"id":"C004","parentId":"B002","name":"合计TEU","prop":"txTEU","order":"4"},
	{"id":"C005","parentId":"B003","name":"20’","prop":"xc20","order":"5"},	
	{"id":"C006","parentId":"B003","name":"40’","prop":"xc40","order":"6"},
	{"id":"C007","parentId":"B003","name":"合计TEU","prop":"xcTEU","order":"7"},	
	{"id":"C008","parentId":"B004","name":"20’","prop":"zx20","order":"8"},
	{"id":"C009","parentId":"B004","name":"40’","prop":"zx40","order":"9"},	
	{"id":"C0010","parentId":"B004","name":"合计TEU","prop":"zxTEU","order":"10"},
	{"id":"C0011","parentId":"B005","name":"20’","prop":"zckx20","order":"11"},	
	{"id":"C0012","parentId":"B005","name":"40’","prop":"zckx40","order":"12"},
	{"id":"C0013","parentId":"B005","name":"合计TEU","prop":"zckxTEU","order":"13"},
	{"id":"C0014","parentId":"B006","name":"20’","prop":"zczx20","order":"14"},	
	{"id":"C0015","parentId":"B006","name":"40’","prop":"zczx40","order":"15"},
	{"id":"C0016","parentId":"B006","name":"合计TEU","prop":"zczxTEU","order":"16"},
	{"id":"C0017","parentId":"B007","name":"20’","prop":"mtpc20","order":"17"},	
	{"id":"C0018","parentId":"B007","name":"40’","prop":"mtpc40","order":"18"},
	{"id":"C0019","parentId":"B007","name":"合计TEU","prop":"mtpcTEU","order":"19"},
	{"id":"C0020","parentId":"B008","name":"备注","prop":"rem","order":"20"}
	]'
	-- @titleD  四级表头
	SET @titleD='[]'
		end
	end
		SELECT @titleA as titleA,@titleB as titleB,@titleC as titleC,@titleD as titleD
end

6.获取动态对应数据的存储过程

ALTER PROCEDURE [dbo].[DynamicDataStatisticsData](@CZ varchar(10)='',@type varchar(100),@MONTH varchar(30)=NULL,@beginTime varchar(30)='',@endTime varchar(30)='')
as

begin
	if @CZ='00' 
	begin
		SELECT 1 as name FROM CUST  (NOLOCK) WHERE (CharIndex('CZ',LB)>0) OR (CharIndex('GK',LB)>0)
	end
	else
	if @CZ='GLR'
	begin
	
-- 			SELECT count(a.ET_NO) as NUM,convert(varchar(10),ISNULL(a.ET_DD, ''),120) as number
--       FROM T_STOCK a
-- 			WHERE 1=1
-- 			AND convert(varchar(10),a.ET_DD,120) LIKE '%2022-01-16%'
-- 			GROUP BY convert(varchar(10),ISNULL(a.ET_DD, ''),120)
	
	 --昼夜作业量统计
		if @type='DayAndNightOperationVolume'
		begin
			select 
			x.day as dateStr,
			t1.kMainStation,
			t2.kSouthStation,
			'1' kNorthStation,
			'1' kPostsecondaryArea,
			'1' zMainStation,
			'1' zSouthStation,
			'1' yardMainStation,
			'1' yardSouthStation,
			'1' yardNorthStation,
			'1' yardPostsecondaryArea,
			'1' openPort,
			'1' collectionPort,
			'1' stationModulation
			from 
			--获取每月的天数作为主表
			(
			select convert(varchar(10),dateadd(DAY,t2.number,t1.day),120) day 
			from (select substring(convert(varchar,ISNULL(@MONTH, GETDATE()),120),1,7)+'-01' day) t1,(select number from MASTER..spt_values WHERE TYPE='P' AND number>=0 and number<=31) t2
			where convert(varchar(10),dateadd(DAY,t2.number,t1.day),120) like substring(convert(varchar,ISNULL(@MONTH, GETDATE()),120),1,7)+'%' 
			) x 
			--依据每月的每天作为关联条件,获取空箱盘存-总站数据
			left JOIN (
				select ISNULL(count(BOX_NO), 0) as kMainStation,convert(varchar(10),ISNULL(L_MK_DD, ''),120) as day from T_STOCK GROUP BY convert(varchar(10),ISNULL(L_MK_DD, ''),120)
			) t1 on t1.day =  x.day
			--依据每月的每天作为关联条件,获取空箱盘存-南站数据
			left JOIN (
				select ISNULL(count(BOX_NO),0) as kSouthStation,convert(varchar(10),ISNULL(ET_DD, ''),120) as day from T_STOCK GROUP BY convert(varchar(10),ISNULL(ET_DD, ''),120)
			) t2 on t2.day =  x.day
			ORDER BY x.day

		end
		 --港陆空重箱操作统计
		else if @type='GLEmptyWeightTank'
		begin
			SELECT 
			'1' dateStr,
			'1' tx20,
			'1' tx40,
			'1' txTEU,
			'1' xc20,
			'1' xc40,
			'1' xcTEU,
			'1' zx20,
			'1' zx40,
			'1' zxTEU,
			'1' zckx20,
			'1' zckx40,
			'1' zckxTEU,
			'1' zczx20,
			'1' zczx40,
			'1' zczxTEU,
			'1' mtpc20,
			'1' mtpc40,
			'1' mtpcTEU,
			'1' rem
			FROM CUST (NOLOCK) WHERE (CharIndex('CZ',LB)>0) OR (CharIndex('GK',LB)>0)
		end
	end
end