k94314517
2025-05-07 9b74b477139659d69fcf321d160724aa1cd90ce0
Merge remote-tracking branch 'origin/master'
已添加2个文件
已修改14个文件
673 ■■■■ 文件已修改
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 | 历史
screen/src/views/FireFighting.vue 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/Constants.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/ResourcesByParamsRequest.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/ResourcesByParamsResponse.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/MonitorDataInfoVO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java 46 ●●●●● 补丁 | 查看 | 原始文档 | 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()
        }
screen/src/views/FireFighting.vue
@@ -351,11 +351,13 @@
const initWatergage = (id, item) => {
  const myChart = echarts.init(document.getElementById(id))
  var data_value = item.obj.value.replaceAll('Mpa', '')
  const startI = item.level.indexOf('-')
  const endI = item.level.indexOf('Mpa')
  let maxNum = item.level.slice(startI + 1, endI)
  let minNum = item.level.slice(0, startI)
  // let maxNum =
  // const startI = item.level.indexOf('-')
  // const endI = item.level.indexOf('Mpa')
  // let maxNum = item.level.slice(startI + 1, endI)
  // let minNum = item.level.slice(0, startI)
  let maxNum = item.max
  let minNum = item.min
  // let maxNum =
  const option = {
    barMaxWidth: 3,
    polar: {
@@ -517,10 +519,12 @@
}
const initLiquidlevel = (id, item) => {
  const myChart = echarts.init(document.getElementById(id))
  const startI = item.level.indexOf('-')
  const endI = item.level.indexOf('M')
  let maxNum = item.level.slice(startI + 1, endI)
  let minNum = item.level.slice(0, startI)
  // const startI = item.level.indexOf('-')
  // const endI = item.level.indexOf('M')
  // let maxNum = item.level.slice(startI + 1, endI)
  // let minNum = item.level.slice(0, startI)
  let maxNum = item.max
  let minNum = item.min
  let conNum = maxNum - minNum
  let acNum = item.obj.value.replaceAll('M', '')
  var data = (((acNum - minNum) / conNum) * 100).toFixed(0)
@@ -1119,7 +1123,7 @@
              white-space: nowrap;
              overflow: hidden;
              text-overflow: ellipsis;
            }
            .name {
@@ -1893,4 +1897,4 @@
  object-fit: cover;
  z-index: -1;
}
</style>
</style>
server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -151,6 +151,8 @@
    public static final String SCREEN_SEVENT_ARRIVAL_STARTDATE = "SCREEN_SEVENT_ARRIVAL_STARTDATE";
    public static final String EARLY_START_WX_NOTICE = "EARLY_START_WX_NOTICE";
    public static final String OVER_NOTICE_WX = "OVER_NOTICE_WX";
    public static final String PRESSURE_LEVEL_UNIT = "PRESSURE_LEVEL_UNIT";
    public static final String LIQUID_LEVEL_UNIT ="LIQUID_LEVEL_UNIT" ;
    public static  boolean DEALING_HK_SYNCPRIVILEGE= false;
    public static  boolean DEALING_HK_SYNCDEVICE = false;
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
@@ -628,6 +628,7 @@
        String[] regionDataRanking= new String[]{"/api/ecm/v1/energy/regionDataRanking","消防看板-4获取区域用量排名-能耗看板"};//消防看板-获取区域用量排名 - èƒ½è€—看板
        String[] energyTotal= new String[]{"/api/ecm/v1/energy/energyTotal","消防看板-4根据时间和时间维度获取园区能耗数据"};//消防看板-根据时间和时间维度获取园区能耗数据
        String[] findDeviceStatistics= new String[]{"/api/v1/device/findDeviceStatistics","分页查询设备的以及下属传感器数据的状态统计"};// åˆ†é¡µæŸ¥è¯¢è®¾å¤‡çš„以及下属传感器数据的状态统计
        String[] resourcesByParams= new String[]{"/api/irds/v2/resource/resourcesByParams","【海康消防看板】根据条件查询目录下有权限的资源列表"};// ã€æµ·åº·æ¶ˆé˜²çœ‹æ¿ã€‘根据条件查询目录下有权限的资源列表
        String[] iccmSignoff= new String[]{"/api/iccm/v1/signoff","iccm访客签离"};// iccm访客签离
    }
    /**
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
@@ -908,6 +908,14 @@
        return startDoPostStringArtemis(HKConstants.InterfacePath.findDeviceStatistics,body);
    }
    /**
     * ã€æµ·åº·æ¶ˆé˜²çœ‹æ¿ã€‘根据条件查询目录下有权限的资源列表
     * @param body
     * @return
     */
    public static String resourcesByParams(String body) {
        return startDoPostStringArtemis(HKConstants.InterfacePath.resourcesByParams,body);
    }
    /**
     *消防看板-4报警信息统计
     * @param body
     * @return
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/ResourcesByParamsRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
package com.doumee.core.haikang.model.param.request;
import com.alibaba.fastjson.JSONArray;
import com.doumee.core.haikang.model.param.BaseListPageRequest;
import lombok.Data;
/**
 *  {
 *     "name":"æ¶²",
 *     "regionIndexCodes": [
 *         "root000000"
 *     ],
 *     "isSubRegion": true,
 *     "resourceType": "fireSensor",
 *     "pageNo": 1,
 *     "pageSize": 20,
 *     "orderBy": "name",
 *     "orderType": "desc"
 *     }
 */
@Data
public class ResourcesByParamsRequest extends BaseListPageRequest {
private String name    ;//String    false    åç§°ï¼Œæ¨¡ç³Šæœç´¢ï¼Œæœ€å¤§é•¿åº¦32,若包含中文,最大长度指不超过按照指定编码的字节长度,即getBytes("utf-8").length
private String[]  regionIndexCodes;//    Array    false    åŒºåŸŸç¼–号,可以为空;String[],支持根据区域批量查询;区域编号个数<=1000个;单个长度<=64Byte;,可从[查询区域列表v2]@[软件产品-综合安防管理平台-API列表-资源目录-区域信息接口#查询区域列表v2]接口获取返回参数indexCode
private Boolean isSubRegion;//    Boolean    false    true时,搜索regionIndexCodes及其子孙区域的资源;false时,只搜索 regionIndexCodes的资源
private String resourceType    ;//String    true    èµ„源类型,详见[附录A.3 èµ„源类型/资源权限码]@[软件产品-综合安防管理平台-附录-附录A æ•°æ®å­—å…¸#附录A.3 èµ„源类型/资源权限码]此处的资源类型指设备资源,如门禁控制器、门禁点;注:资源iasDevice\reader\floor无需进行权限校验
private String[]  authCodes;//    Array    false    æƒé™ç é›†åˆï¼Œè¯¦è§[附录A.3 èµ„源类型/资源权限码]@[软件产品-综合安防管理平台-附录-附录A æ•°æ®å­—å…¸#附录A.3 èµ„源类型/资源权限码]
private String[]  capabilitySet;//    Array    false    è®¾å¤‡èƒ½åЛ集(含设备上的智能能力),详见[附录A.44 è®¾å¤‡èƒ½åЛ集]@[软件产品-综合安防管理平台-附录-附录A æ•°æ®å­—å…¸#附录A.44 è®¾å¤‡èƒ½åЛ集]
 private String orderBy;//    String    false    æŽ’序字段,注意:排序字段必须是查询条件,否则返回参数错误
private String orderType    ;//String    false    é™åºå‡åº,降序:desc å‡åºï¼šasc
private JSONArray expressions    ;//Array    false    æŸ¥è¯¢è¡¨è¾¾å¼
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/ResourcesByParamsResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.doumee.core.haikang.model.param.respose;
import lombok.Data;
import java.util.List;
@Data
public class ResourcesByParamsResponse {
     private String  indexCode    ;//String    false    é—¨ç¦ç‚¹å”¯ä¸€æ ‡è¯†
     private String  name;//String    false    é—¨ç¦ç‚¹åç§°
     private String  resourceType;//    String    false    èµ„源类型,详见[附录A.3 èµ„源类型/资源权限码]@[软件产品-综合安防管理平台-附录-附录A æ•°æ®å­—å…¸#附录A.3 èµ„源类型/资源权限码]
     private String  doorNo    ;//Number    false    é—¨ç¦ç‚¹ç¼–号
     private String  description;//    String    false    æè¿°
     private String  parentIndexCodes;//    String    false    çˆ¶çº§èµ„源编号
     private String  regionIndexCode;//    String    false    æ‰€å±žåŒºåŸŸå”¯ä¸€æ ‡è¯†
     private String  regionPath;//    String    false    æ‰€å±žåŒºåŸŸè·¯å¾„,由唯一标示组成,最大10级,格式: @根节点@子区域1@子区域2@
     private String  channelType    ;//String    false    é€šé“类型
     private String  channelNo;//    String    false    é€šé“号
     private String  installLocation;//    String    false    å®‰è£…位置
     private String  capabilitySet;//    String    false    è®¾å¤‡èƒ½åŠ›é›†ï¼Œè¯¦è§[附录A.44 è®¾å¤‡èƒ½åЛ集]@[软件产品-综合安防管理平台-附录-附录A æ•°æ®å­—å…¸#附录A.44 è®¾å¤‡èƒ½åЛ集]
     private String  controlOneId;//    String    false    ä¸€çº§æŽ§åˆ¶å™¨id
     private String  controlTwoId;//    String    false    äºŒçº§æŽ§åˆ¶å™¨id
     private String  readerInId;//    String    false    è¯»å¡å™¨1
     private String  readerOutId;//    String    false    è¯»å¡å™¨2
     private String  comId;//    String    false    ç»„件标志
     private String  createTime    ;//String    false    åˆ›å»ºæ—¶é—´
     private String  updateTime;//    String    false    æ›´æ–°æ—¶é—´
     private String fireproChannelMaxvalue;//":"3.5”
     private String fireproChannelMinValue;//": â€œ0.50".
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -1989,6 +1989,24 @@
        return  null;
    }
    /**
     *根据条件查询目录下有权限的资源列表
     * @return
     */
    public  static  BaseResponse<BaseListPageResponse<ResourcesByParamsResponse>>  resourcesByParams(ResourcesByParamsRequest param){
        log.info("【海康消防看板】根据条件查询目录下有权限的资源列表================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.resourcesByParams(JSONObject.toJSONString(param));
            TypeReference typeReference =
                    new TypeReference< BaseResponse<BaseListPageResponse<ResourcesByParamsResponse> >>(){};
            BaseResponse<BaseListPageResponse<ResourcesByParamsResponse> >   result = JSONObject.parseObject(res, typeReference.getType());
            logResult(result,"【海康消防看板】根据条件查询目录下有权限的资源列表");
            return  result;
        }catch (Exception e){
            log.error("【海康消防看板】根据条件查询目录下有权限的资源列表================失败====:\n"+ e.getMessage());
        }
        return  null;
    }
    /**
     *消防看板-4报警信息统计
     * @return
     */
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/MonitorDataInfoVO.java
@@ -25,6 +25,10 @@
    @ApiModelProperty(value = "小类编号")
    private String cateCode;
//    @ApiModelProperty(value = "阈值")
//    private String level;
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -1034,7 +1034,7 @@
                carrecord.setInOrOut(Constants.ZERO);
            }
            //车辆进入记录对应业务类型
            if(event.getCarType() ==null || event.getCarType().equals(Constants.RetentionCarType.other)){
            if(isCarInOrOutEvent(request) &&( event.getCarType() ==null || event.getCarType().equals(Constants.RetentionCarType.other))){
                //如果未识别到车型,不是固定车 ä¹Ÿä¸æ˜¯è´§è¿è½¦è¾†ï¼Œåˆ™æ£€æŸ¥æ˜¯å¦æ˜¯è®¿å®¢è½¦
                visitsList =  visitsMapper.selectList(new QueryWrapper<Visits>().lambda()
                                .eq(Visits::getCarNos,event.getPlateNos())
@@ -1089,7 +1089,7 @@
                    }
                }
            }
            if(carrecord.getInOrOut()!=null && event.getCarType() !=null && !event.getCarType().equals(Constants.RetentionCarType.fkCar)){
            if(isCarInOrOutEvent(request) && event.getCarType() !=null && !event.getCarType().equals(Constants.RetentionCarType.fkCar)){
                //录入非访客类型车辆进出记录
                dealNotFkCarMemberBiz(event,request,carrecord,retentionList,inoutDayCount,inoutRecordList);
            }
@@ -1097,6 +1097,14 @@
        return event;
    }
    private boolean isCarInOrOutEvent(EventParkInfoRequest request) {
        if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_IN.getKey() ||
                Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_OUT.getKey()){
            return  true;
        }
        return  false;
    }
    private void dealNotFkCarMemberBiz( CarEvent event ,EventParkInfoRequest request, InoutRecord carrecord,List<Retention> retentionList,InoutDayCount inoutDayCount,List<InoutRecord> inoutRecordList) {
        //录入非访客类型车辆进出记录
        carrecord.setCarBizType(event.getCarType()==null?Constants.RetentionCarType.other:event.getCarType());
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
@@ -647,6 +647,8 @@
    }
    /**
     * ã€æ¶ˆé˜²ç®¡æŽ§ã€‘看板-实时监测数据
     * æ¶²åŽ‹å›ºå®šå€¼ï¼š254001
     * æ°´åŽ‹å›ºå®šå€¼ï¼š253958
     * @return
     *
     */
@@ -665,6 +667,8 @@
        BaseResponse<BaseListPageResponse<MonitorDataSearchResponse>> response = HKService.minitorDataSearch(param);
        String pressure = systemDictDataBiz.queryByCode(Constants.WMS_PARAM,Constants.WMS_PRESSURE_LEVEL).getCode();
        String liquid = systemDictDataBiz.queryByCode(Constants.WMS_PARAM,Constants.WMS_LIQUID_LEVEL).getCode();
        String pressureUnit = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.PRESSURE_LEVEL_UNIT).getCode();
        String liquidUnit = systemDictDataBiz.queryByCode(Constants.WMS_PARAM,Constants.LIQUID_LEVEL_UNIT).getCode();
        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)
                && response.getData()!=null ) {
            List<MonitorDataSearchResponse> r = response.getData().getList();
@@ -672,7 +676,8 @@
                for(MonitorDataSearchResponse model : r){
                    MonitorDataVO m = new MonitorDataVO();
                    m.setName(model.getName());
                    m.setLevel(Constants.equalsInteger(model.getType(),60)?liquid:pressure);
//                    m.setLevel(Constants.equalsInteger(model.getType(),60)?liquid:pressure);
                    m.setLevel(getLevelDataByDeviceName(model.getName(),Constants.equalsInteger(model.getType(),60)?liquidUnit:pressureUnit));
                    m.setDataList(new ArrayList<>());
                    if(model.getValues()!=null){
                        List<MonitorDataInfoVO> dataList = new ArrayList<>();
@@ -686,7 +691,6 @@
                                    vm.setCateName(v.getMonitorSpecificName());
                                    vm.setCateCode(v.getMonitorTypeKey());
                                    vm.setTypeCode(v.getMonitorTypeCode());
                                    vm.setTypeName(v.getMonitorTypeName());
                                    dataList.add(vm);
                                }
                            }else{
@@ -711,6 +715,44 @@
        return  list;
    }
    private String getLevelDataByDeviceName(String name,String unit) {
        /**
         *   {
         *     "name":"æ¶²",
         *     "regionIndexCodes": [
         *         "root000000"
         *     ],
         *     "isSubRegion": true,
         *     "resourceType": "fireSensor",
         *     "pageNo": 1,
         *     "pageSize": 20,
         *     "orderBy": "name",
         *     "orderType": "desc"
         *     }
         */
        String r = "";
        ResourcesByParamsRequest param = new ResourcesByParamsRequest();
        param.setName(name);
        param.setIsSubRegion(Boolean.TRUE);
        param.setRegionIndexCodes(new String[]{"root000000"});
        param.setResourceType("fireSensor");
        param.setOrderType("desc");
        param.setOrderBy("name");
        param.setPageNo(1);
        param.setPageSize(20);
        BaseResponse<BaseListPageResponse<ResourcesByParamsResponse>> response = HKService.resourcesByParams(param);
        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)
                && response.getData()!=null ) {
            String min  = response.getData().getList().get(0).getFireproChannelMinValue();
            String max  = response.getData().getList().get(0).getFireproChannelMaxvalue();
            r  =StringUtils.defaultString(min,"-")+"~"+StringUtils.defaultString(max,"-") +unit;
        }
        return  r;
    }
    /**
     * ã€æ¶ˆé˜²ç®¡æŽ§ã€‘看板-告警处理分析集合