From c98f5eee8777711610dfeaf85ad4b7a92d476e6a Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 07 五月 2025 18:53:01 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java    |    4 
 admin/src/views/business/reportRecord.vue                                                                |   13 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutRecordServiceImpl.java |   88 +-----
 admin/src/views/business/admissionStatistics.vue                                                         |  223 +++++++++++++-----
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/InoutRecordController.java             |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/InoutRecord.java               |   56 ++--
 admin/src/views/business/carStatistics.vue                                                               |  217 ++++++++++++-----
 server/visits/admin_timer/src/main/java/com/doumee/api/PlatformJobController.java                        |    5 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/InoutRecordCloudController.java         |    2 
 admin/src/views/index.vue                                                                                |    8 
 admin/src/views/vehicle/cars.vue                                                                         |    7 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java |   31 +-
 admin/src/views/business/retentionCars.vue                                                               |   25 -
 13 files changed, 407 insertions(+), 274 deletions(-)

diff --git a/admin/src/views/business/admissionStatistics.vue b/admin/src/views/business/admissionStatistics.vue
index 86ce112..0488658 100644
--- a/admin/src/views/business/admissionStatistics.vue
+++ b/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%;
                 }
             }
         }
diff --git a/admin/src/views/business/carStatistics.vue b/admin/src/views/business/carStatistics.vue
index eab7479..6ada707 100644
--- a/admin/src/views/business/carStatistics.vue
+++ b/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%;
                 }
             }
         }
diff --git a/admin/src/views/business/reportRecord.vue b/admin/src/views/business/reportRecord.vue
index 1925e01..2fad862 100644
--- a/admin/src/views/business/reportRecord.vue
+++ b/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 },
diff --git a/admin/src/views/business/retentionCars.vue b/admin/src/views/business/retentionCars.vue
index 815a2fa..0cdb7e7 100644
--- a/admin/src/views/business/retentionCars.vue
+++ b/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: []
diff --git a/admin/src/views/index.vue b/admin/src/views/index.vue
index 135d2c6..bdc4cd3 100644
--- a/admin/src/views/index.vue
+++ b/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 {
diff --git a/admin/src/views/vehicle/cars.vue b/admin/src/views/vehicle/cars.vue
index ba3dde6..a4fcc63 100644
--- a/admin/src/views/vehicle/cars.vue
+++ b/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()
         }
diff --git a/server/visits/admin_timer/src/main/java/com/doumee/api/PlatformJobController.java b/server/visits/admin_timer/src/main/java/com/doumee/api/PlatformJobController.java
index 614a051..1bf85a1 100644
--- a/server/visits/admin_timer/src/main/java/com/doumee/api/PlatformJobController.java
+++ b/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()+"");
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/InoutRecordController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/InoutRecordController.java
index 9198226..0a91512 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/InoutRecordController.java
+++ b/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鏌ヨ")
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/InoutRecordCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/InoutRecordCloudController.java
index 91bb15c..3cfc143 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/InoutRecordCloudController.java
+++ b/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鏌ヨ")
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/InoutRecord.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/InoutRecord.java
index 94aa98e..5caac5f 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/InoutRecord.java
+++ b/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 = "鍏宠仈浜哄憳缂栫爜锛堝叧鑱攎ember)", example = "1")
-    @ExcelColumn(name="鍏宠仈浜哄憳缂栫爜锛堝叧鑱攎ember)")
     private Integer memberId;
 
     @ApiModelProperty(value = "鍏宠仈浜哄憳缂栫爜锛堝叧鑱攃ars)", example = "1")
-    @ExcelColumn(name="鍏宠仈浜哄憳缂栫爜锛堝叧鑱攃ars)")
     private Integer carId;
 
     @ApiModelProperty(value = "鍏宠仈鍒嗙被缂栫爜锛堝叧鑱攃ategory)", example = "1")
-    @ExcelColumn(name="鍏宠仈鍒嗙被缂栫爜锛堝叧鑱攃ategory)")
     private Integer categoryId;
 
     @ApiModelProperty(value = "鍏宠仈鍒嗙被鍚嶇О")
-    @ExcelColumn(name="鍏宠仈鍒嗙被鍚嶇О")
+    @ExcelColumn(name="杞﹁締鍒嗙被",index = 6,width = 16)
     private String categoryName;
+
     @ApiModelProperty(value = "鍏宠仈鐖剁骇鍒嗙被缂栫爜锛堝叧鑱攃ategory)", example = "1")
-    @ExcelColumn(name="鍏宠仈鐖剁骇鍒嗙被缂栫爜锛堝叧鑱攃ategory)")
     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;
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutRecordServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutRecordServiceImpl.java
index 9a268c9..9f2e545 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutRecordServiceImpl.java
+++ b/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());
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java
index a5992cd..8dc8961 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java
+++ b/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());
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
index 17a669b..4f92786 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
+++ b/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;

--
Gitblit v1.9.3