jiangping
2025-05-07 c98f5eee8777711610dfeaf85ad4b7a92d476e6a
Merge remote-tracking branch 'origin/master'
已修改13个文件
681 ■■■■■ 文件已修改
admin/src/views/business/admissionStatistics.vue 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/carStatistics.vue 217 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/reportRecord.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/retentionCars.vue 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/index.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/vehicle/cars.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/admin_timer/src/main/java/com/doumee/api/PlatformJobController.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/InoutRecordController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/InoutRecordCloudController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/InoutRecord.java 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutRecordServiceImpl.java 88 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/admissionStatistics.vue
@@ -3,7 +3,7 @@
        <div class="main_head">
            <div class="main_head_title">
                <span>入园人员统计总览</span>
                <el-radio-group v-model="isGroupBy" size="mini" @change="getData(), getRataLists(), getReportLists()">
                <el-radio-group v-model="isGroupBy" @change="getData(), getRataLists(), getReportLists()">
                    <el-radio-button :label="0">按人次统计</el-radio-button>
                    <el-radio-button :label="1">按人员统计</el-radio-button>
                </el-radio-group>
@@ -42,18 +42,17 @@
            <div class="dept_wrap">
                <div class="title">
                    <span>人员分类统计</span>
                    <el-radio-group style="margin-left: 20px;" v-model="dateType" size="mini" @change="changeDateType">
                        <el-radio-button label="month">月</el-radio-button>
                        <el-radio-button label="year">年</el-radio-button>
                    <el-radio-group style="margin-left: 43px;" v-model="dateType" @change="changeDateType">
                        <el-radio-button label="month">月度</el-radio-button>
                        <el-radio-button label="year">年度</el-radio-button>
                    </el-radio-group>
                    <el-date-picker
                        v-model="value"
                        :type="dateType"
                        size="mini"
                        :clearable="false"
                        @change="getRataLists()"
                        :value-format="dateType === 'month' ? 'yyyy-MM' : 'yyyy'"
                        style="margin-left: 20px; width: 130px;"
                        style="margin-left: 10px; width: 130px;"
                        placeholder="请选择">
                    </el-date-picker>
                </div>
@@ -66,24 +65,23 @@
        <div class="main_table">
            <div class="main_table_list">
                <div class="title" style="display: flex; align-items: center; justify-content: space-between;">
                    <div>
                    <div style="display: flex; align-items: center;">
                        <span>入园人员统计表</span>
                        <el-radio-group style="margin-left: 20px;" v-model="radio" size="mini" @change="changeBB">
                            <el-radio-button label="month">月</el-radio-button>
                            <el-radio-button label="year">年</el-radio-button>
                        <el-radio-group style="margin-left: 43px;" v-model="radio" @change="changeBB">
                            <el-radio-button label="month">月度</el-radio-button>
                            <el-radio-button label="year">年度</el-radio-button>
                        </el-radio-group>
                        <el-date-picker
                            v-model="date1"
                            :type="radio"
                            :clearable="false"
                            size="mini"
                            @change="getReportLists()"
                            :value-format="radio === 'month' ? 'yyyy-MM' : 'yyyy'"
                            style="margin-left: 20px; width: 130px;"
                            style="margin-left: 10px; width: 130px;"
                            placeholder="请选择">
                        </el-date-picker>
                    </div>
                    <el-button type="primary" size="mini" style="margin-left: 20px;" @click="daochu">导出</el-button>
                    <el-button type="primary" icon="el-icon-upload2" style="margin-left: 20px;" @click="daochu">导出</el-button>
                </div>
                <div class="list_head">
                    <div class="list_head_item" v-for="(item, index) in column" :key="index">{{item}}</div>
@@ -216,10 +214,10 @@
        let option = {
          grid: {
            left: '5%',
            right: '10%',
            bottom: '0%',
            top: '20%',
            left: '0%',
            right: '5%',
            bottom: '10%',
            top: '10%',
            containLabel: true
          },
          tooltip: {
@@ -235,7 +233,48 @@
          series: [
            {
              data: datas,
              type: 'line'
              type: 'line',
              areaStyle: {
                normal: {
                  color: {
                    x: 0,
                    y: 0,
                    x2: 0,
                    y2: 1,
                    colorStops: [{
                      offset: 0,
                      color: '#207FF7' // 0% 处的颜色
                    }, {
                      offset: 1,
                      color: 'rgba(255,255,255,.2)' // 100% 处的颜色
                    }],
                    globalCoord: false // 缺省为 false
                  }
                }
              },
              lineStyle: { // 线条样式
                color: {
                  type: 'linear',
                  x: 0,
                  y: 0,
                  x2: 0,
                  y2: 1,
                  colorStops: [{
                    offset: 0, color: '#207FF7' // 0% 处的颜色
                  }, {
                    offset: 1, color: '#207FF7' // 100% 处的颜色
                  }]
                },
                width: 2 // 线条粗细
              },
              symbol: 'circle',
              symbolSize: 10,
              itemStyle: {
                borderWidth: 1,
                borderColor: '#fff',
                color: '#207FF7'
              },
              smooth: false
            }
          ]
        }
@@ -270,7 +309,24 @@
            {
              name: '访问来源',
              type: 'pie',
              radius: '55%',
              radius: ['34%', '50%'],
              labelLine: {
                normal: {
                  length: 30,
                  length2: 100,
                }
              },
              label: {
                formatter: "{a|{b}} {d}%",
                rich: {
                  a: {
                    color: '#333333',
                    fontSize: 14,
                    fontWeight: 500
                  }
                },
                padding: [0,-50,20,-100]
              },
              data: data
            }
          ]
@@ -322,21 +378,24 @@
        overflow-x: hidden;
        padding: 15px;
        box-sizing: border-box;
        background-color: #ffffff;
        background-color: #F4F7FC;
        .main_head {
            width: 100%;
            display: flex;
            align-items: center;
            flex-direction: column;
            margin-bottom: 20px;
            margin-bottom: 10px;
            background-color: #ffffff;
            padding: 20px;
            box-sizing: border-box;
            .main_head_title {
                width: 100%;
                display: flex;
                align-items: center;
                margin-bottom: 20px;
                span {
                    font-weight: 600;
                    font-size: 16px;
                    font-weight: 500;
                    font-size: 18px;
                    color: #222222;
                    margin-right: 30px;
                }
@@ -347,39 +406,40 @@
                align-items: center;
                justify-content: space-between;
                .blue {
                    border-left: 5px solid blue;
                    border-left: 8px solid #12BB8B;
                }
                .red {
                    border-left: 5px solid red;
                    border-left: 8px solid #F6CF46;
                }
                .yellow {
                    border-left: 5px solid yellow;
                    border-left: 8px solid #5DC9FB;
                }
                .orange {
                    border-left: 5px solid orange;
                    border-left: 8px solid #FF9E56;
                }
                .darkBlue {
                    border-left: 5px solid #0000a8;
                    border-left: 8px solid #6B6EFF;
                }
                .main_head_item {
                    width: 19%;
                    height: 70px;
                    height: 112px;
                    display: flex;
                    flex-direction: column;
                    align-items: center;
                    justify-content: center;
                    box-sizing: border-box;
                    border-radius: 5px;
                    background-color: #ffffff;
                    background-color: #F4F7FC;
                    span {
                        &:nth-child(1) {
                            font-size: 22px;
                            color: black;
                            font-weight: bold;
                            font-weight: 600;
                            font-size: 30px;
                            color: #222222;
                        }
                        &:nth-child(2) {
                            font-size: 16px;
                            color: black;
                            font-weight: 400;
                            font-size: 14px;
                            color: #222222;
                        }
                    }
                }
@@ -388,27 +448,31 @@
        .main_table {
            display: flex;
            align-items: center;
            align-items: start;
            justify-content: space-between;
            height: 300px;
            margin-top: 10px;
            .main_table_list {
                margin-left: 20px;
                background-color: #ffffff;
                padding: 20px;
                box-sizing: border-box;
                flex: 1;
                .title {
                    display: flex;
                    align-items: center;
                    span {
                        font-weight: 600;
                        font-size: 16px;
                        font-weight: 500;
                        font-size: 18px;
                        color: #222222;
                    }
                }
                .list_head {
                    width: 100%;
                    height: 35px;
                    height: 50px;
                    display: flex;
                    align-items: center;
                    background-color: #ececec;
                    background-color: #F7F7F7;
                    border-left: 1px solid #DFE2E8;
                    border-top: 1px solid #DFE2E8;
                    margin-top: 15px;
                    .list_head_item {
                        flex: 1;
@@ -418,20 +482,25 @@
                        justify-content: center;
                        font-size: 13px;
                        color: #222222;
                        font-weight: 500;
                        border-right: 1px solid #DFE2E8;
                    }
                }
                .table_box {
                    width: 100%;
                    height: 234px;
                    border-bottom: 1px solid #DFE2E8;
                    .list_content {
                        width: 100%;
                        height: 40px;
                        height: 50px;
                        display: flex;
                        align-items: center;
                        border-left: 1px solid #DFE2E8;
                        border-top: 1px solid #DFE2E8;
                        .list_head_item {
                            flex: 1;
                            height: 100%;
                            display: flex;
                            border-right: 1px solid #DFE2E8;
                            align-items: center;
                            justify-content: center;
                            font-size: 13px;
@@ -441,48 +510,64 @@
                }
            }
            .main_table_list1 {
                margin-left: 20px;
                width: 300px;
                margin-left: 10px;
                width: 520px;
                padding: 20px;
                box-sizing: border-box;
                flex-shrink: 0;
                background-color: #ffffff;
                .title {
                    font-weight: 600;
                    font-size: 16px;
                    font-weight: 500;
                    font-size: 18px;
                    color: #222222;
                }
                .list_head {
                    width: 100%;
                    height: 35px;
                    height: 50px;
                    display: flex;
                    align-items: center;
                    background-color: #ececec;
                    background-color: #F7F7F7;
                    border-left: 1px solid #DFE2E8;
                    border-top: 1px solid #DFE2E8;
                    margin-top: 15px;
                    .list_head_item {
                        flex: 1;
                        flex: 1.8;
                        height: 100%;
                        display: flex;
                        align-items: center;
                        justify-content: center;
                        font-size: 13px;
                        color: #222222;
                        font-weight: 500;
                        border-right: 1px solid #DFE2E8;
                        &:last-child {
                            flex: 1;
                        }
                    }
                }
                .table_box {
                    width: 100%;
                    height: 234px;
                    border-bottom: 1px solid #DFE2E8;
                    .list_content {
                        width: 100%;
                        height: 40px;
                        height: 50px;
                        display: flex;
                        align-items: center;
                        border-left: 1px solid #DFE2E8;
                        border-top: 1px solid #DFE2E8;
                        .list_head_item {
                            flex: 1;
                            flex: 1.8;
                            height: 100%;
                            display: flex;
                            align-items: center;
                            border-right: 1px solid #DFE2E8;
                            justify-content: center;
                            text-align: center;
                            font-size: 13px;
                            color: #222222;
                            &:last-child {
                                flex: 1;
                            }
                        }
                    }
                }
@@ -491,38 +576,42 @@
        .main_content {
            display: flex;
            align-items: center;
            justify-content: space-between;
            height: 400px;
            .title {
                font-weight: 600;
                font-size: 16px;
                font-weight: 500;
                font-size: 18px;
                color: #222222;
                /*margin-bottom: 20px;*/
                margin-top: 20px;
            }
            .type_wrap {
                flex: 11;
                flex-shrink: 0;
                height: calc(100% - 20px);
                flex: 1;
                height: 100%;
                background-color: #ffffff;
                padding: 20px;
                box-sizing: border-box;
                /*border-right: 12px solid #f7f7f7;*/
                .echart1 {
                    width: 100%;
                    height: calc(100% - 60px);
                    height: 100%;
                }
            }
            .dept_wrap {
                flex: 8;
                width: 520px;
                flex-shrink: 0;
                height: calc(100% - 20px);
                padding-left: 20px;
                height: 100%;
                background-color: #ffffff;
                padding: 20px;
                box-sizing: border-box;
                margin-left: 10px;
                .echart2 {
                    width: 100%;
                    height: calc(100% - 60px);
                    height: 100%;
                }
            }
        }
admin/src/views/business/carStatistics.vue
@@ -3,7 +3,7 @@
        <div class="main_head">
            <div class="main_head_title">
                <span>入园车辆统计总览</span>
                <el-radio-group v-model="isGroupBy" size="mini" @change="getData(), getRataLists(), getReportLists()">
                <el-radio-group v-model="isGroupBy" @change="getData(), getRataLists(), getReportLists()">
                    <el-radio-button :label="0">按车次统计</el-radio-button>
                    <el-radio-button :label="1">按车辆统计</el-radio-button>
                </el-radio-group>
@@ -42,14 +42,13 @@
            <div class="dept_wrap">
                <div class="title">
                    <span>车辆分类统计</span>
                    <el-radio-group style="margin-left: 20px;" v-model="dateType" size="mini" @change="changeDateType">
                        <el-radio-button label="month">月</el-radio-button>
                        <el-radio-button label="year">年</el-radio-button>
                    <el-radio-group style="margin-left: 20px;" v-model="dateType" @change="changeDateType">
                        <el-radio-button label="month">月度</el-radio-button>
                        <el-radio-button label="year">年度</el-radio-button>
                    </el-radio-group>
                    <el-date-picker
                        v-model="value"
                        :type="dateType"
                        size="mini"
                        :clearable="false"
                        @change="getRataLists()"
                        :value-format="dateType === 'month' ? 'yyyy-MM' : 'yyyy'"
@@ -66,16 +65,15 @@
        <div class="main_table">
            <div class="main_table_list">
                <div class="title" style="display: flex; align-items: center; justify-content: space-between;">
                    <div>
                    <div style="display: flex; align-items: center;">
                        <span>入园车辆统计表</span>
                        <el-radio-group style="margin-left: 20px;" v-model="radio" size="mini" @change="changeBB">
                            <el-radio-button label="month">月</el-radio-button>
                            <el-radio-button label="year">年</el-radio-button>
                        <el-radio-group style="margin-left: 20px;" v-model="radio" @change="changeBB">
                            <el-radio-button label="month">月度</el-radio-button>
                            <el-radio-button label="year">年度</el-radio-button>
                        </el-radio-group>
                        <el-date-picker
                            v-model="date1"
                            :type="radio"
                            size="mini"
                            :clearable="false"
                            @change="getReportLists()"
                            :value-format="radio === 'month' ? 'yyyy-MM' : 'yyyy'"
@@ -83,7 +81,7 @@
                            placeholder="请选择">
                        </el-date-picker>
                    </div>
                    <el-button type="primary" size="mini" style="margin-left: 20px;" @click="daochu">导出</el-button>
                    <el-button type="primary" style="margin-left: 20px;" icon="el-icon-upload2" @click="daochu">导出</el-button>
                </div>
                <div class="list_head">
                    <div class="list_head_item" v-for="(item, index) in column" :key="index">{{item}}</div>
@@ -227,9 +225,9 @@
            left: 'left'
          },
          grid: {
            left: '5%',
            right: '10%',
            bottom: '0%',
            left: '0%',
            right: '5%',
            bottom: '10%',
            top: '20%',
            containLabel: true
          },
@@ -243,7 +241,48 @@
          series: [
            {
              data: datas,
              type: 'line'
              type: 'line',
              areaStyle: {
                normal: {
                  color: {
                    x: 0,
                    y: 0,
                    x2: 0,
                    y2: 1,
                    colorStops: [{
                      offset: 0,
                      color: '#207FF7' // 0% 处的颜色
                    }, {
                      offset: 1,
                      color: 'rgba(255,255,255,.2)' // 100% 处的颜色
                    }],
                    globalCoord: false // 缺省为 false
                  }
                }
              },
              lineStyle: { // 线条样式
                color: {
                  type: 'linear',
                  x: 0,
                  y: 0,
                  x2: 0,
                  y2: 1,
                  colorStops: [{
                    offset: 0, color: '#207FF7' // 0% 处的颜色
                  }, {
                    offset: 1, color: '#207FF7' // 100% 处的颜色
                  }]
                },
                width: 2 // 线条粗细
              },
              symbol: 'circle',
              symbolSize: 10,
              itemStyle: {
                borderWidth: 1,
                borderColor: '#fff',
                color: '#207FF7'
              },
              smooth: false
            }
          ]
        }
@@ -278,7 +317,24 @@
            {
              name: '访问来源',
              type: 'pie',
              radius: '55%',
              radius: ['34%', '50%'],
              labelLine: {
                normal: {
                  length: 30,
                  length2: 100,
                }
              },
              label: {
                formatter: "{a|{b}} {d}%",
                rich: {
                  a: {
                    color: '#333333',
                    fontSize: 14,
                    fontWeight: 500
                  }
                },
                padding: [0,-50,20,-100]
              },
              data: data
            }
          ]
@@ -330,21 +386,24 @@
        overflow-x: hidden;
        padding: 15px;
        box-sizing: border-box;
        background-color: #ffffff;
        background-color: #F4F7FC;
        .main_head {
            width: 100%;
            display: flex;
            align-items: center;
            flex-direction: column;
            margin-bottom: 20px;
            margin-bottom: 10px;
            background-color: #ffffff;
            padding: 20px;
            box-sizing: border-box;
            .main_head_title {
                width: 100%;
                display: flex;
                align-items: center;
                margin-bottom: 20px;
                span {
                    font-weight: 600;
                    font-size: 16px;
                    font-weight: 500;
                    font-size: 18px;
                    color: #222222;
                    margin-right: 30px;
                }
@@ -355,39 +414,40 @@
                align-items: center;
                justify-content: space-between;
                .blue {
                    border-left: 5px solid blue;
                    border-left: 8px solid #12BB8B;
                }
                .red {
                    border-left: 5px solid red;
                    border-left: 8px solid #F6CF46;
                }
                .yellow {
                    border-left: 5px solid yellow;
                    border-left: 8px solid #5DC9FB;
                }
                .orange {
                    border-left: 5px solid orange;
                    border-left: 8px solid #FF9E56;
                }
                .darkBlue {
                    border-left: 5px solid #0000a8;
                    border-left: 8px solid #6B6EFF;
                }
                .main_head_item {
                    width: 19%;
                    height: 70px;
                    height: 112px;
                    display: flex;
                    flex-direction: column;
                    align-items: center;
                    justify-content: center;
                    box-sizing: border-box;
                    border-radius: 5px;
                    background-color: #ffffff;
                    background-color: #F4F7FC;
                    span {
                        &:nth-child(1) {
                            font-size: 22px;
                            color: black;
                            font-weight: bold;
                            font-weight: 600;
                            font-size: 30px;
                            color: #222222;
                        }
                        &:nth-child(2) {
                            font-size: 16px;
                            color: black;
                            font-weight: 400;
                            font-size: 14px;
                            color: #222222;
                        }
                    }
                }
@@ -396,27 +456,31 @@
        .main_table {
            display: flex;
            align-items: center;
            align-items: start;
            justify-content: space-between;
            height: 300px;
            margin-top: 10px;
            .main_table_list {
                margin-left: 20px;
                background-color: #ffffff;
                padding: 20px;
                box-sizing: border-box;
                flex: 1;
                .title {
                    display: flex;
                    align-items: center;
                    span {
                        font-weight: 600;
                        font-size: 16px;
                        font-weight: 500;
                        font-size: 18px;
                        color: #222222;
                    }
                }
                .list_head {
                    width: 100%;
                    height: 35px;
                    height: 50px;
                    display: flex;
                    align-items: center;
                    background-color: #ececec;
                    background-color: #F7F7F7;
                    border-left: 1px solid #DFE2E8;
                    border-top: 1px solid #DFE2E8;
                    margin-top: 15px;
                    .list_head_item {
                        flex: 1;
@@ -426,20 +490,25 @@
                        justify-content: center;
                        font-size: 13px;
                        color: #222222;
                        font-weight: 500;
                        border-right: 1px solid #DFE2E8;
                    }
                }
                .table_box {
                    width: 100%;
                    height: 234px;
                    border-bottom: 1px solid #DFE2E8;
                    .list_content {
                        width: 100%;
                        height: 40px;
                        height: 50px;
                        display: flex;
                        align-items: center;
                        border-left: 1px solid #DFE2E8;
                        border-top: 1px solid #DFE2E8;
                        .list_head_item {
                            flex: 1;
                            height: 100%;
                            display: flex;
                            border-right: 1px solid #DFE2E8;
                            align-items: center;
                            justify-content: center;
                            font-size: 13px;
@@ -449,48 +518,64 @@
                }
            }
            .main_table_list1 {
                margin-left: 20px;
                width: 300px;
                margin-left: 10px;
                width: 520px;
                padding: 20px;
                box-sizing: border-box;
                flex-shrink: 0;
                background-color: #ffffff;
                .title {
                    font-weight: 600;
                    font-size: 16px;
                    font-weight: 500;
                    font-size: 18px;
                    color: #222222;
                }
                .list_head {
                    width: 100%;
                    height: 35px;
                    height: 50px;
                    display: flex;
                    align-items: center;
                    background-color: #ececec;
                    background-color: #F7F7F7;
                    border-left: 1px solid #DFE2E8;
                    border-top: 1px solid #DFE2E8;
                    margin-top: 15px;
                    .list_head_item {
                        flex: 1;
                        flex: 1.8;
                        height: 100%;
                        display: flex;
                        align-items: center;
                        justify-content: center;
                        font-size: 13px;
                        color: #222222;
                        font-weight: 500;
                        border-right: 1px solid #DFE2E8;
                        &:last-child {
                           flex: 1;
                        }
                    }
                }
                .table_box {
                    width: 100%;
                    height: 234px;
                    border-bottom: 1px solid #DFE2E8;
                    .list_content {
                        width: 100%;
                        height: 40px;
                        height: 50px;
                        display: flex;
                        align-items: center;
                        border-left: 1px solid #DFE2E8;
                        border-top: 1px solid #DFE2E8;
                        .list_head_item {
                            flex: 1;
                            flex: 1.8;
                            height: 100%;
                            display: flex;
                            align-items: center;
                            border-right: 1px solid #DFE2E8;
                            justify-content: center;
                            text-align: center;
                            font-size: 13px;
                            color: #222222;
                            &:last-child {
                                flex: 1;
                            }
                        }
                    }
                }
@@ -499,38 +584,42 @@
        .main_content {
            display: flex;
            align-items: center;
            justify-content: space-between;
            height: 400px;
            .title {
                font-weight: 600;
                font-size: 16px;
                font-weight: 500;
                font-size: 18px;
                color: #222222;
                /*margin-bottom: 20px;*/
                margin-top: 20px;
            }
            .type_wrap {
                flex: 11;
                flex-shrink: 0;
                height: calc(100% - 20px);
                flex: 1;
                height: 100%;
                background-color: #ffffff;
                padding: 20px;
                box-sizing: border-box;
                /*border-right: 12px solid #f7f7f7;*/
                #echart1 {
                    width: 100%;
                    height: calc(100% - 60px);
                    height: 100%;
                }
            }
            .dept_wrap {
                flex: 8;
                width: 520px;
                flex-shrink: 0;
                height: calc(100% - 20px);
                padding-left: 20px;
                height: 100%;
                background-color: #ffffff;
                padding: 20px;
                box-sizing: border-box;
                margin-left: 10px;
                .echart_2 {
                    width: 100%;
                    height: calc(100% - 60px);
                    height: 100%;
                }
            }
        }
admin/src/views/business/reportRecord.vue
@@ -142,6 +142,11 @@
            filed: 'companyName',
            type: 'input',
            label: '公司名称'
          },
          {
            filed: 'date',
            type: 'daterange',
            label: '起始日期'
          }
        ],
        online: true
@@ -234,6 +239,14 @@
    },
    getList (page) {
      const { pagination, filters } = this
      console.log(filters)
      if (filters.date && filters.date.length === 2) {
        filters.queryStarttime = filters.date[0]
        filters.queryEndtime = filters.date[1]
      } else {
        filters.queryStarttime = ''
        filters.queryEndtime = ''
      }
      pagination.page = page || pagination.page
      fetchList({
        model: { ...filters },
admin/src/views/business/retentionCars.vue
@@ -11,16 +11,8 @@
      <el-form-item label="组织" prop="companyName">
        <el-input v-model="searchForm.companyName" placeholder="请输入组织名称" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="车辆类型" prop="carType">
        <el-select v-model="searchForm.carType" placeholder="请选择">
          <el-option label="内部车辆" value="0"></el-option>
          <el-option label="相关方车辆" value="1"></el-option>
          <el-option label="访客车辆" value="2"></el-option>
          <el-option label="内运物流车" value="3"></el-option>
          <el-option label="外协车辆" value="4"></el-option>
          <el-option label="市公司卸货车" value="5"></el-option>
          <el-option label="未登记车辆" value="6"></el-option>
        </el-select>
      <el-form-item label="车辆分类" prop="categoryName">
        <el-input v-model="searchForm.categoryName" placeholder="请输入车辆分类" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="起止时间" prop="startTime">
        <!-- <el-date-picker @change="seleTime" v-model="time" type="datetimerange" format="yyyy-MM-dd HH:mm:ss"
@@ -58,17 +50,7 @@
            <span>{{ row.companyName || row.visitCompanyName || '' }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="carType" label="车辆类型" min-width="100px">
          <template slot-scope="{ row }">
            <span v-if="row.carType == 0">内部车辆</span>
            <span v-else-if="row.carType == 1">相关方车辆</span>
            <span v-else-if="row.carType == 2">访客车辆</span>
            <span v-else-if="row.carType == 3">内运物流车</span>
            <span v-else-if="row.carType == 4">外协车辆</span>
            <span v-else-if="row.carType == 5">市公司卸货车</span>
            <span v-else-if="row.carType == 6">未登记车辆</span>
          </template>
        </el-table-column>
        <el-table-column prop="categoryName" label="车辆分类" min-width="100px"></el-table-column>
        <el-table-column prop="name" label="姓名" min-width="100px"></el-table-column>
        <el-table-column prop="phone" label="手机号" min-width="100px"></el-table-column>
        <!--        <el-table-column label="进场门禁" min-width="100px">
@@ -108,6 +90,7 @@
        keyWords: '',
        startTime: '',
        endTime: '',
        categoryName: '',
        radio: 0
      },
      time: []
admin/src/views/index.vue
@@ -359,11 +359,13 @@
        getAppHeaderNav(4).then(res => {
          window.open(res, '_blank')
        })
        return
      }
      if (item.name == '食堂消费入口') {
      if (item.name == '食堂消费') {
        getAppHeaderNav(6).then(res => {
          window.open(res, '_blank')
        })
        return
      }
      this.$router.push(item.path)
    },
@@ -678,7 +680,7 @@
            <div>${params[0].name}</div>
            <div style="display: flex;align-items: center;">
              <div style="width: 10px;height: 10px;border-radius: 50%;background-color: #6feef0;"></div>
              <span style="margin-left: 6px;">${params[0].value}</span>
              <span style="margin-left: 6px;">${params[0].value || 0}</span>
              <div>辆</div>
            </div>
          </div>
@@ -1128,7 +1130,7 @@
  width: 100%;
  height: 100%;
  overflow: auto;
  padding: 20px;
  padding: 20px 20px 40px 20px;
  padding-top: 92px;
  .home_header {
admin/src/views/vehicle/cars.vue
@@ -212,9 +212,10 @@
      this.$nextTick(() => {
        this.$refs.operaCarsWindow.open(str, row)
        if (row && row.id) {
          let form = { ...row, cateId: [] }
          if (row.catePId) { form.cateId.push(row.catePId) }
          if (row.cateId) { form.cateId.push(row.cateId) }
          // let form = { ...row, cateId: [] }
          let form = { ...row }
          // if (row.catePId) { form.cateId.push(row.catePId) }
          // if (row.cateId) { form.cateId.push(row.cateId) }
          this.$refs.operaCarsWindow.form = form
          this.$refs.operaCarsWindow.loadMember()
        }
server/visits/admin_timer/src/main/java/com/doumee/api/PlatformJobController.java
@@ -1,5 +1,6 @@
package com.doumee.api;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.service.business.third.model.ApiResponse;
import com.doumee.service.business.PlatformJobService;
import io.swagger.annotations.Api;
@@ -54,9 +55,11 @@
    }
    @PreventRepeat(interval = 2000)
    @ApiOperation("月台今日作业未完成通知定时")
    @GetMapping("/sendUnFinishNotice")
    public ApiResponse sendUnFinishNotice() {
    public synchronized ApiResponse sendUnFinishNotice() {
        log.error("========月台今日作业未完成通知定时============开始"+System.currentTimeMillis()+"");
        platformJobService.sendUnFinishNotice();
        log.error("========月台今日作业未完成通知定时============结束"+System.currentTimeMillis()+"");
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/InoutRecordController.java
@@ -78,7 +78,7 @@
    @PostMapping("/exportExcel")
    @RequiresPermissions("business:inoutrecord:exportExcel")
    public void exportExcel (@RequestBody PageWrap<InoutRecord> pageWrap, HttpServletResponse response) {
        ExcelExporter.build(InoutRecord.class).export(inoutRecordService.findPage(pageWrap).getRecords(), "出入场人次车次每日统计表", response);
        ExcelExporter.build(InoutRecord.class).export(inoutRecordService.findPage(pageWrap).getRecords(), "厂区进出记录", response);
    }
    @ApiOperation("根据ID查询")
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/InoutRecordCloudController.java
@@ -82,7 +82,7 @@
    @PostMapping("/exportExcel")
    @CloudRequiredPermission("business:inoutrecord:exportExcel")
    public void exportExcel (@RequestBody PageWrap<InoutRecord> pageWrap, HttpServletResponse response) {
        ExcelExporter.build(InoutRecord.class).export(inoutRecordService.findPage(pageWrap).getRecords(), "出入场人次车次每日统计表", response);
        ExcelExporter.build(InoutRecord.class).export(inoutRecordService.findPage(pageWrap).getRecords(), "出入场人次车次统计表_"+System.currentTimeMillis(), response);
    }
    @ApiOperation("根据ID查询")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/InoutRecord.java
@@ -23,68 +23,55 @@
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
    private Integer id;
    @ApiModelProperty(value = "创建人编码", example = "1")
    @ExcelColumn(name="创建人编码")
    private Integer creator;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name="创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ExcelColumn(name="创建时间",index = 9,width = 18,dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码", example = "1")
    @ExcelColumn(name="更新人编码")
    private Integer editor;
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name="更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "1")
    @ExcelColumn(name="是否删除0否 1是")
    private Integer isdeleted;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name="备注")
    @ExcelColumn(name="备注",index = 10,width = 16)
    private String remark;
    @ApiModelProperty(value = "对象类型 0车辆 1人员", example = "1")
    @ExcelColumn(name="对象类型 0车辆 1人员")
    private Integer type;
    @ApiModelProperty(value = "海康事件编码")
    @ExcelColumn(name="海康事件编码")
    private String hkEventId;
    @ApiModelProperty(value = "海康事件对象编码")
    @ExcelColumn(name="海康事件对象编码")
    private String hkId;
    @ApiModelProperty(value = "关联人员编码(关联member)", example = "1")
    @ExcelColumn(name="关联人员编码(关联member)")
    private Integer memberId;
    @ApiModelProperty(value = "关联人员编码(关联cars)", example = "1")
    @ExcelColumn(name="关联人员编码(关联cars)")
    private Integer carId;
    @ApiModelProperty(value = "关联分类编码(关联category)", example = "1")
    @ExcelColumn(name="关联分类编码(关联category)")
    private Integer categoryId;
    @ApiModelProperty(value = "关联分类名称")
    @ExcelColumn(name="关联分类名称")
    @ExcelColumn(name="车辆分类",index = 6,width = 16)
    private String categoryName;
    @ApiModelProperty(value = "关联父级分类编码(关联category)", example = "1")
    @ExcelColumn(name="关联父级分类编码(关联category)")
    private Integer categoryParentId;
    @ApiModelProperty(value = "关联分类名称")
    @ExcelColumn(name="关联分类名称")
    private String categoryParentName;
    @ApiModelProperty(value = "业务类型 业务类型 0=访客车辆-访客车辆 ;" +
@@ -92,48 +79,46 @@
            "2=wms市公司的预约入园车辆:货运车辆-市公司卸货车辆;" +
            "3=wms、安泰的预约入园车辆:货运车辆-加工烟卸货车辆 ;" +
            "4=wms安泰公务车:公务车-安泰物流公务用车;" +
            "5=wms安泰自有车:货运车辆-安泰物流货运车辆' ", example = "1")
    @ExcelColumn(name="车辆业务类型")
            "5=wms安泰自有车:货运车辆-安泰物流货运车辆;" +
            "6=未知车辆; ", example = "1")
//    @ExcelColumn(name="车辆业务类型",index = 5,width = 16,valueMapping = "0=访客车辆-访客车辆;1=货运车辆-外协运输车辆;2=货运车辆-市公司卸货车辆;3=货运车辆-加工烟卸货车辆;4=公务车-安泰物流公务用车;5=货运车辆-安泰物流货运车辆;6=未知车辆;")
    private Integer carBizType;
    @ApiModelProperty(value = "用户类型 0劳务访客 1普通访客 2内部员工 3车辆信息 4相关方人员 5货运司机 ", example = "1")
    @ExcelColumn(name="用户类型   0劳务访客 1普通访客 2内部员工 3车辆信息 4相关方人员 5货运司机 ")
    @ExcelColumn(name="用户类型",index = 3,width = 16,valueMapping = "0=劳务访客;1=普通访客;2=内部员工;3=车辆信息;4=相关方人员;5=货运司机;")
    private Integer memberType;
    @ApiModelProperty(value = "人员名称")
    @ExcelColumn(name="人员名称")
    @ExcelColumn(name="人员名称",index = 0,width = 16)
    private String memberName;
    @ApiModelProperty(value = "人员手机号")
    @ExcelColumn(name="人员手机号")
    @ExcelColumn(name="人员手机号",index = 1,width = 16)
    private String memberPhone;
    @ApiModelProperty(value = "组织名称")
    @ExcelColumn(name="组织名称")
    @ExcelColumn(name="组织名称",index = 2,width = 16)
    private String companyName;
    @ApiModelProperty(value = "关联组织编码")
    @ExcelColumn(name="关联组织编码")
    private Integer companyId;
    @ApiModelProperty(value = "车牌号")
    @ExcelColumn(name="车牌号")
    @ExcelColumn(name="车牌号",index = 4,width = 16)
    private String carCode;
    @ApiModelProperty(value = "关联对象类型 0车辆 1人员 2访客申请记录 3访客报备申请记录 4月台作业记录", example = "1")
    @ExcelColumn(name="关联对象类型 0车辆 1人员 2访客申请记录 3访客报备申请记录 4月台作业记录")
    private Integer objType;
    @ApiModelProperty(value = "统计日期(2024-10-12 00:00:00)")
    @ExcelColumn(name="统计日期(2024-10-12 00:00:00)")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date timeInfo;
    @ApiModelProperty(value = "关联对象编码", example = "1")
    @ExcelColumn(name="关联对象编码")
    private Integer objId;
    @ApiModelProperty(value = "进出类型 0进 1出", example = "1")
    @ExcelColumn(name="进出类型 0进 1出")
    @ExcelColumn(name="进出类型",index = 7,width = 10,valueMapping = "0=进;1=出;")
    private Integer inOrOut;
    @ApiModelProperty(value = "进出设备名称")
    @ExcelColumn(name="进出设备名称")
    @ExcelColumn(name="进出类型",index = 8,width = 10)
    private String deviceName;
    @ApiModelProperty(value = "人脸照片")
@@ -148,4 +133,15 @@
    @ApiModelProperty(value = "证件显示信息")
    @TableField(exist = false)
    private String memberCode;
    @ApiModelProperty(value = "创建时间 开始")
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date startDate;
    @ApiModelProperty(value = "创建时间 结束")
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endDate;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutRecordServiceImpl.java
@@ -11,6 +11,7 @@
import com.doumee.dao.business.dto.InParkDataDTO;
import com.doumee.dao.business.model.Category;
import com.doumee.dao.business.model.InoutRecord;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.vo.GeneralDataVO;
import com.doumee.dao.business.vo.InParkUserDataVO;
import com.doumee.service.business.InoutRecordService;
@@ -115,76 +116,25 @@
    @Override
    public PageData<InoutRecord> findPage(PageWrap<InoutRecord> pageWrap) {
        IPage<InoutRecord> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<InoutRecord> queryWrapper = new QueryWrapper<>();
        MPJLambdaWrapper<InoutRecord> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.lambda().eq(InoutRecord::getId, pageWrap.getModel().getId());
        }
        if (pageWrap.getModel().getCreator() != null) {
            queryWrapper.lambda().eq(InoutRecord::getCreator, pageWrap.getModel().getCreator());
        }
        if (pageWrap.getModel().getCreateDate() != null) {
            queryWrapper.lambda().ge(InoutRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.lambda().le(InoutRecord::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
        }
        if (pageWrap.getModel().getEditor() != null) {
            queryWrapper.lambda().eq(InoutRecord::getEditor, pageWrap.getModel().getEditor());
        }
        if (pageWrap.getModel().getEditDate() != null) {
            queryWrapper.lambda().ge(InoutRecord::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.lambda().le(InoutRecord::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
        }
        if (pageWrap.getModel().getIsdeleted() != null) {
            queryWrapper.lambda().eq(InoutRecord::getIsdeleted, pageWrap.getModel().getIsdeleted());
        }
        if (pageWrap.getModel().getRemark() != null) {
            queryWrapper.lambda().eq(InoutRecord::getRemark, pageWrap.getModel().getRemark());
        }
        if (pageWrap.getModel().getType() != null) {
            queryWrapper.lambda().eq(InoutRecord::getType, pageWrap.getModel().getType());
        }
        if (pageWrap.getModel().getHkEventId() != null) {
            queryWrapper.lambda().eq(InoutRecord::getHkEventId, pageWrap.getModel().getHkEventId());
        }
        if (pageWrap.getModel().getHkId() != null) {
            queryWrapper.lambda().eq(InoutRecord::getHkId, pageWrap.getModel().getHkId());
        }
        if (pageWrap.getModel().getMemberId() != null) {
            queryWrapper.lambda().eq(InoutRecord::getMemberId, pageWrap.getModel().getMemberId());
        }
        if (pageWrap.getModel().getCarId() != null) {
            queryWrapper.lambda().eq(InoutRecord::getCarId, pageWrap.getModel().getCarId());
        }
        if (pageWrap.getModel().getCategoryId() != null) {
            queryWrapper.lambda().eq(InoutRecord::getCategoryId, pageWrap.getModel().getCategoryId());
        }
        if (pageWrap.getModel().getCategoryName() != null) {
            queryWrapper.lambda().eq(InoutRecord::getCategoryName, pageWrap.getModel().getCategoryName());
        }
        if (pageWrap.getModel().getCarBizType() != null) {
            queryWrapper.lambda().eq(InoutRecord::getCarBizType, pageWrap.getModel().getCarBizType());
        }
        if (pageWrap.getModel().getMemberType() != null) {
            queryWrapper.lambda().eq(InoutRecord::getMemberType, pageWrap.getModel().getMemberType());
        }
        if (pageWrap.getModel().getMemberName() != null) {
            queryWrapper.lambda().eq(InoutRecord::getMemberName, pageWrap.getModel().getMemberName());
        }
        if (pageWrap.getModel().getCarCode() != null) {
            queryWrapper.lambda().eq(InoutRecord::getCarCode, pageWrap.getModel().getCarCode());
        }
        if (pageWrap.getModel().getObjType() != null) {
            queryWrapper.lambda().eq(InoutRecord::getObjType, pageWrap.getModel().getObjType());
        }
        if (pageWrap.getModel().getObjId() != null) {
            queryWrapper.lambda().eq(InoutRecord::getObjId, pageWrap.getModel().getObjId());
        }
        if (pageWrap.getModel().getInOrOut() != null) {
            queryWrapper.lambda().eq(InoutRecord::getInOrOut, pageWrap.getModel().getInOrOut());
        }
        if (pageWrap.getModel().getDeviceName() != null) {
            queryWrapper.lambda().eq(InoutRecord::getDeviceName, pageWrap.getModel().getDeviceName());
        }
        InoutRecord model = pageWrap.getModel();
        queryWrapper.selectAll(InoutRecord.class)
                .eq(InoutRecord::getIsdeleted,Constants.ZERO)
                .eq(Objects.nonNull(model.getType()),InoutRecord::getType, model.getType())
                .eq(Objects.nonNull(model.getInOrOut()),InoutRecord::getInOrOut, model.getInOrOut())
                .eq(Objects.nonNull(model.getObjType()),InoutRecord::getObjType, model.getObjType())
                .eq(Objects.nonNull(model.getCarBizType()),InoutRecord::getCarBizType, model.getCarBizType())
                .eq(Objects.nonNull(model.getMemberType()),InoutRecord::getMemberType, model.getMemberType())
                .ge(Objects.nonNull(model.getStartDate()),InoutRecord::getCreateDate, Utils.Date.getStart(model.getStartDate()))
                .le(Objects.nonNull(model.getEndDate()),InoutRecord::getCreateDate, Utils.Date.getEnd(model.getEndDate()))
                .and(StringUtils.isNotBlank(model.getCategoryName()),i->i.like(InoutRecord::getCategoryName,model.getCategoryName()).or().like(InoutRecord::getCategoryParentName,model.getCategoryName()))
                .and(StringUtils.isNotBlank(model.getMemberName()),i->i.like(InoutRecord::getMemberName,model.getMemberName()).or().like(InoutRecord::getMemberPhone,model.getMemberName()))
                .and(StringUtils.isNotBlank(model.getCarCode()),i->i.like(InoutRecord::getCarCode,model.getCarCode()).or().like(InoutRecord::getRemark,model.getCarCode()))
                .like(StringUtils.isNotBlank(model.getCompanyName()),InoutRecord::getCompanyName,model.getCompanyName())
                .like(StringUtils.isNotBlank(model.getDeviceName()),InoutRecord::getDeviceName,model.getDeviceName())
                .orderByDesc(InoutRecord::getId)
        ;
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java
@@ -292,7 +292,9 @@
                .eq(pageWrap.getModel().getYpos() != null, Platform::getYpos, pageWrap.getModel().getYpos())
                .eq(pageWrap.getModel().getWidth() != null, Platform::getWidth, pageWrap.getModel().getWidth())
                .eq(pageWrap.getModel().getHeight() != null, Platform::getHeight, pageWrap.getModel().getHeight())
                .eq(pageWrap.getModel().getAngle() != null, Platform::getAngle, pageWrap.getModel().getAngle());
                .eq(pageWrap.getModel().getAngle() != null, Platform::getAngle, pageWrap.getModel().getAngle())
                .orderByAsc(Platform::getSortnum)
        ;
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
@@ -1026,10 +1026,11 @@
        Date lastYear = DateUtil.addYearToDate(year,-1);//去年
        List<PlatformJob>  monthNum = platformJobMapper.selectJoinList(PlatformJob.class,
                    new MPJLambdaWrapper<PlatformJob>()
                        .selectAs(PlatformJob::getId,PlatformJob::getId)
                        .select(PlatformJob::getType,PlatformJob::getType)
                        .select(PlatformJob::getTotalNum,PlatformJob::getTotalNum)
                        .select(PlatformJob::getStatus,PlatformJob::getStatus)
                            .selectAs(PlatformJob::getId,PlatformJob::getId)
                            .selectAs(PlatformJob::getTotalNum,PlatformJob::getTotalNum)
                            .selectAs(PlatformJob::getDoneDate,PlatformJob::getDoneDate)
                            .select(PlatformJob::getStatus,PlatformJob::getStatus)
                            .select(PlatformJob::getType,PlatformJob::getType)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .in(PlatformJob::getType,Constants.ONE,Constants.THREE)
                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(),
@@ -1225,15 +1226,19 @@
        }
        if(CollectionUtils.isNotEmpty(jobList)){
            //获取任务数据
            List<String> jobDataList = list.stream().filter(i->Objects.nonNull(i.getDoneDate())).map(i->DateUtil.formatDate(i.getDoneDate(),"yyyy-MM-dd")).collect(Collectors.toList());
            for (String jobDate:jobDataList) {
                //过滤当天的数据
                List<PlatformJob> platformJobList = list.stream().
                        filter(i->jobDate.equals(DateUtil.formatDate(i.getDoneDate(),"yyyy-MM-dd"))).collect(Collectors.toList());
                if(CollectionUtils.isNotEmpty(platformJobList)){
                    //获取今天的
                    r = r.add(this.getDayTotalRata(getSumTotalByList(platformJobList,type,null),jobDate));
            List<String> jobDataList = jobList.stream().filter(i->Objects.nonNull(i.getDoneDate()))
                    .map(i->DateUtil.formatDate(i.getDoneDate(),"yyyy-MM-dd")).collect(Collectors.toList());
            if(CollectionUtils.isNotEmpty(jobDataList)){
                for (String jobDate:jobDataList) {
                    //过滤当天的数据
                    List<PlatformJob> platformJobList = list.stream().
                            filter(i->jobDate.equals(DateUtil.formatDate(i.getDoneDate(),"yyyy-MM-dd"))).collect(Collectors.toList());
                    if(CollectionUtils.isNotEmpty(platformJobList)){
                        //获取今天的
                        r = r.add(this.getDayTotalRata(getSumTotalByList(platformJobList,type,null),jobDate));
                    }
                }
                r = r.divide(new BigDecimal(Integer.toString(jobList.size())),2,BigDecimal.ROUND_HALF_UP);
            }
        }
        return r;
@@ -1245,7 +1250,7 @@
        //查询今日最早/最晚的作业数据
        List<PlatformLog> platformLogList = platformLogMapper.selectList(new QueryWrapper<PlatformLog>()
                .lambda()
                .apply(" ( to_days(param1) =  '"+today+"' or to_days(param2) =  '"+today+"' ) ")
                .apply(" (  DATE_FORMAT( param1 ,'%Y-%m-%d' ) =  '"+today+"' or DATE_FORMAT( param2 ,'%Y-%m-%d' )  =  '"+today+"' ) ")
        );
        if(totalAmount.compareTo(BigDecimal.ZERO)==0||CollectionUtils.isEmpty(platformLogList)){
            return BigDecimal.ZERO;