From 21ffb032824db3c392f63d318d36efee33326b80 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 26 二月 2025 09:17:15 +0800
Subject: [PATCH] 最新版本541200007

---
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java                 |    2 
 admin/src/views/business/visits.vue                                                                              |   16 
 admin/src/views/business/retention.vue                                                                           |    6 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java        |   34 +
 admin/src/components/business/OperaHiddenDangerParamWindow.vue                                                   |    7 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java          |   33 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java         |   29 +
 server/system_service/src/main/java/com/doumee/config/cloudfilter/LoginHandlerInterceptor.java                   |    9 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/UserActionController.java                      |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceEventServiceImpl.java         |   30 -
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDangerParam.java                 |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java       |   33 +
 admin/src/views/business/retentionCars.vue                                                                       |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitEventServiceImpl.java          |    6 
 server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java           |  151 +++++-
 server/system_service/src/main/java/com/doumee/config/cloudfilter/CloudWebConfig.java                            |    8 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarEventServiceImpl.java            |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java              |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java           |   18 
 admin/src/api/business/visits.js                                                                                 |    2 
 server/meeting/meeting_service/src/main/java/com/doumee/dao/business/BookingsMapper.java                         |    4 
 server/visits/dmvisit_admin/src/main/resources/application.yml                                                   |    1 
 server/system_service/src/main/java/com/doumee/dao/business/dao/UserActionMapper.java                            |   13 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/UserActionServiceImpl.java          |   33 +
 server/system_gateway/src/main/java/com/doumee/config/CustomWebFilterConfig.java                                 |    4 
 server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Bookings.java                         |    6 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.java                         |   13 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformBooksCloudController.java               |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/join/DeviceJoinMapper.java                   |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java   |   78 +++
 admin/src/views/platform/LogisticsRecord/subscribe.vue                                                           |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java         |    5 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/UserActionCloudController.java                  |   11 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java                      |    3 
 admin/src/views/operation/serviceCar/apprRecord.vue                                                              |   12 
 admin/src/views/platform/LogisticsRecord/waybill.vue                                                             |    2 
 server/system_service/src/main/java/com/doumee/core/utils/Constants.java                                         |   69 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarUseBookService.java                   |    2 
 server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java                                      |    5 
 admin/src/views/business/reportRecord.vue                                                                        |   24 
 server/system_service/src/main/java/com/doumee/service/business/third/model/TMSContants.java                     |    8 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/VisitsCloudController.java                      |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java                       |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncNoticeServiceImpl.java |    2 
 admin/src/components/operation/OperCarUseBookParamWindow.vue                                                     |   59 +-
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java             |   21 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/UserActionService.java                   |    8 
 server/system_service/src/main/java/com/doumee/dao/business/dao/MemberMapper.java                                |    1 
 admin/src/views/business/userAction.vue                                                                          |   32 
 server/system_service/src/main/java/com/doumee/dao/business/model/UserAction.java                                |  101 ++++
 admin/src/views/business/visitEvent.vue                                                                          |   14 
 admin/src/views/business/userActionOther.vue                                                                     |   79 +++
 admin/src/views/business/carEvent.vue                                                                            |   20 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CarUseBookCloudController.java                  |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/RetentionCarsVO.java                      |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java                  |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformBooksService.java                |    2 
 admin/src/api/platform/index.js                                                                                  |   58 +-
 server/meeting/meeting_service/src/main/java/com/doumee/dao/web/response/RoomDetailResponse.java                 |    3 
 /dev/null                                                                                                        |   96 ----
 admin/src/components/business/OperaHiddenDangerWindow.vue                                                        |   15 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitEvent.java                        |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java              |   44 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java  |    3 
 server/system_gateway/src/main/resources/application.yml                                                         |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/join/UserActionJoinMapper.java               |    1 
 admin/src/views/business/deviceEvent.vue                                                                         |    9 
 admin/src/views/operation/danger/record.vue                                                                      |    4 
 68 files changed, 917 insertions(+), 367 deletions(-)

diff --git a/admin/src/api/business/visits.js b/admin/src/api/business/visits.js
index 4fc01fb..805d0db 100644
--- a/admin/src/api/business/visits.js
+++ b/admin/src/api/business/visits.js
@@ -23,7 +23,7 @@
 }
 // 绂诲満
 export function level (id) {
-  return request.get('/visitsAdmin/cloudService/business/staging/level?visitId=' +id)
+  return request.get('/visitsAdmin/cloudService/business/staging/level?visitId=' + id)
 }
 
 // 淇敼
diff --git a/admin/src/api/platform/index.js b/admin/src/api/platform/index.js
index 4e85937..e3194f8 100644
--- a/admin/src/api/platform/index.js
+++ b/admin/src/api/platform/index.js
@@ -1,128 +1,128 @@
 import request from '@/utils/request'
 
 // 鑾峰彇鏈堝彴缁勪俊鎭�
-export function getPlatformGroupList(data) {
+export function getPlatformGroupList (data) {
   return request.post('/visitsAdmin/cloudService/business/platform/getPlatformGroupList', data)
 }
 // 鍙彿鍒楄〃
-export function platformCallList(data) {
+export function platformCallList (data) {
   return request.post('/visitsAdmin/cloudService/business/platform/platformCallList', data)
 }
 //  鍏ュ洯鍙彿
-export function platformInPark(data) {
+export function platformInPark (data) {
   return request.post('/visitsAdmin/cloudService/business/platform/platformInPark', data)
 }
 // 鏈堝彴鍙彿
-export function platformCallNumber(data) {
+export function platformCallNumber (data) {
   return request.post('/visitsAdmin/cloudService/business/platform/platformCallNumber', data)
 }
 // 寮�濮嬩綔涓�
-export function platformBeginWork(data) {
+export function platformBeginWork (data) {
   return request.post('/visitsAdmin/cloudService/business/platform/beginWork', data)
 }
 // 瀹屾垚浣滀笟
-export function platformFinishWork(data) {
+export function platformFinishWork (data) {
   return request.post('/visitsAdmin/cloudService/business/platform/finishWork', data)
 }
 // 杩囧彿
-export function platformOverNumber(data) {
+export function platformOverNumber (data) {
   return request.post('/visitsAdmin/cloudService/business/platform/platformOverNumber', data)
 }
 // 寮傚父鎸傝捣
-export function platformErr(data) {
+export function platformErr (data) {
   return request.post('/visitsAdmin/cloudService/business/platform/platformErr', data)
 }
 // 寮傚父鎸傝捣
-export function platformMove(data) {
+export function platformMove (data) {
   return request.post('/visitsAdmin/cloudService/business/platform/platformMove', data)
 }
 // 鏈堝彴閰嶇疆
-export function updUserPlatformConfig(data) {
+export function updUserPlatformConfig (data) {
   return request.get('/visitsAdmin/cloudService/business/platform/updUserPlatformConfig?ids=' + data)
 }
 
 // 鏍规嵁鏈堝彴缁勮幏鍙栨湀鍙板垪琛ㄤ俊鎭�
-export function listByGroupId(id) {
+export function listByGroupId (id) {
   return request.get('/visitsAdmin/cloudService/business/platform/listByGroupId?groupId=' + id)
 }
 // 鏈堝彴鍒楄〃 缂栬緫
-export function PlatformEdit(data) {
+export function PlatformEdit (data) {
   return request.post('/visitsAdmin/cloudService/business/platform/updateById', data, {
     trim: true
   })
 }
 // 鏈堝彴鍒楄〃 鍒犻櫎
-export function PlatformDel(id) {
+export function PlatformDel (id) {
   return request.get('/visitsAdmin/cloudService/business/platform/delete/' + id, {
     trim: true
   })
 }
 // 鏈堝彴璋冨害涓績 鍒楄〃
-export function getPlatformJob(data) {
+export function getPlatformJob (data) {
   return request.post('/visitsAdmin/cloudService/business/platformJob/page', data, {
     trim: true
   })
 }
 // 杞﹁締鎺掗槦鎯呭喌
-export function platformLineUpPage(data) {
+export function platformLineUpPage (data) {
   return request.post('/visitsAdmin/cloudService/business/platform/platformLineUpPage', data, {
     trim: true
   })
 }
 
 // 鍏ュ洯鍘熷洜
-export function platformReasonList() {
+export function platformReasonList () {
   return request.get('/visitsAdmin/cloudService/business/platformBooks/platformReasonList')
 }
 // 鐗╂祦杞﹂绾�
-export function platformBooksApply(data) {
+export function platformBooksApply (data) {
   return request.post('/visitsAdmin/cloudService/business/platformBooks/apply', data)
 }
 // 鑾峰彇鏈堝彴缁� 绛夊緟涓庡紓甯告寕璧锋暟鎹�
-export function getPlatformGroupWork(id) {
+export function getPlatformGroupWork (id) {
   return request.get('/visitsAdmin/cloudService/business/platform/getPlatformGroupWork?platformGroupId=' + id)
 }
 // 鏈堝彴鍏ュ洯棰勭害 鍒嗛〉鍒楄〃
-export function platformBooksPage(data) {
+export function platformBooksPage (data) {
   return request.post('/visitsAdmin/cloudService/business/platformBooks/page', data)
 }
 // 鏈堝彴鍏ュ洯棰勭害 鍒楄〃瀵煎嚭
-export function platformBooksExport(data) {
+export function platformBooksExport (data) {
   return request.post('/visitsAdmin/cloudService/business/platformBooks/exportExcel', data, {
     trim: true,
     download: true
   })
 }
 // 鏈堝彴璋冨害浣滀笟浠诲姟 鍒嗛〉鍒楄〃
-export function platformJobPage(data) {
+export function platformJobPage (data) {
   return request.post('/visitsAdmin/cloudService/business/platformJob/page', data)
 }
 // 缁熻鏈堝彴浣滀笟浠诲姟 鍒嗛〉鍒楄〃
-export function platformLogPage(data) {
+export function platformLogPage (data) {
   return request.post('/visitsAdmin/cloudService/business/platformLog/page', data)
 }
 // 鏈堝彴浣滀笟缁熻 鍒嗛〉鍒楄〃
-export function platformWorkReportPage(data) {
+export function platformWorkReportPage (data) {
   return request.post('/visitsAdmin/cloudService/business/platform/platformWorkReportPage', data)
 }
 // 鏈堝彴璋冨害浣滀笟浠诲姟 鍒犻櫎
-export function platformJobDel(id) {
-  return request.get('/visitsAdmin/cloudService/business/platformJob/delete?id=' + id)
+export function platformJobDel (id) {
+  return request.get('/visitsAdmin/cloudService/business/platformJob/delete/' + id)
 }
 // 鏈堝彴杩愬崟璇︽儏
-export function platformWmsJobDetail(id) {
+export function platformWmsJobDetail (id) {
   return request.get('/visitsAdmin/cloudService/business/platformWmsJob/' + id)
 }
 // 鏈堝彴璋冨害浣滀笟浠诲姟 绛惧埌
-export function platformJobSign(data) {
+export function platformJobSign (data) {
   return request.post('/visitsAdmin/cloudService/business/platformJob/signIn', data)
 }
 // 鏈堝彴璋冨害浣滀笟浠诲姟 绂诲洯鎺堟潈
-export function platformPowerLevel(data) {
+export function platformPowerLevel (data) {
   return request.post('/visitsAdmin/cloudService/business/platform/powerLevel', data)
 }
 // 鏈堝彴璋冨害浣滀笟浠诲姟 鍒楄〃瀵煎嚭
-export function platformJobExport(data) {
+export function platformJobExport (data) {
   return request.post('/visitsAdmin/cloudService/business/platformJob/exportExcel', data, {
     trim: true,
     download: true
diff --git a/admin/src/components/business/OperaHiddenDangerParamWindow.vue b/admin/src/components/business/OperaHiddenDangerParamWindow.vue
index 87b9660..4b9a8a0 100644
--- a/admin/src/components/business/OperaHiddenDangerParamWindow.vue
+++ b/admin/src/components/business/OperaHiddenDangerParamWindow.vue
@@ -4,7 +4,7 @@
       <el-form-item label="鍚嶇О" prop="name">
         <el-input v-model="form.name" placeholder="璇疯緭鍏ュ悕绉�" v-trim />
       </el-form-item>
-      <el-form-item label="璐d换閮ㄩ棬" prop="companyId">
+      <el-form-item label="璐d换閮ㄩ棬" prop="companyId" v-if="form.type == 0">
         <el-select filterable clearable @change="() => loadMember(1)" v-model="form.companyId">
           <el-option v-for="op in department" :key="op.id" :label="op.name" :value="op.id"></el-option>
         </el-select>
@@ -84,6 +84,9 @@
         for (const key in this.form) {
           this.form[key] = target[key]
           this.form.type = type
+          if(type == 0){
+            this.loadMember(1)
+          }
           if (this.form.type == 0 && target.memberIds != null && target.memberIds != '') {
             const t = target.memberIds.split(',')
             this.form.memberIdList = []
@@ -105,7 +108,7 @@
     loadMember(flag) {
       if(flag && flag == 1){
         this.$set(this.form, 'memberIdList', null)
-      } 
+      }
       allList({
         type: 2,
         companyType: 1,
diff --git a/admin/src/components/business/OperaHiddenDangerWindow.vue b/admin/src/components/business/OperaHiddenDangerWindow.vue
index 694ad5b..fbaf9f4 100644
--- a/admin/src/components/business/OperaHiddenDangerWindow.vue
+++ b/admin/src/components/business/OperaHiddenDangerWindow.vue
@@ -161,9 +161,9 @@
           <el-select v-model="transForm.memberId" style="width: 300px"  filterable clearable placeholder="璇烽�夋嫨杞氦瀹夊叏鍛�">
             <el-option
                 v-for="item in memberList"
-                :key="item.id"
-                :label="item.name"
-                :value="item.id">
+                :key="item.memberId"
+                :label="item.companyName ? `${item.realname}-${item.companyName}` : item.realname"
+                :value="item.memberId">
             </el-option>
           </el-select>
         </el-form-item>
@@ -266,6 +266,7 @@
 import dayjs from 'dayjs'
 import { memberList } from '@/api/business/hiddenDangerParam'
 import { mapState } from 'vuex'
+import {findAllList as userList} from "@/api/system/user";
 export default {
   components: { GlobalWindow, upload },
   extends: BaseOpera,
@@ -539,9 +540,13 @@
       this.loadMemberList()
     },
     loadMemberList () {
-      memberList({}).then(res => {
+      userList({ queryParam: this.filterText, querySpecial: 1, type: 2, companyType: 1, workStatus: 0 })
+        .then(res => {
+          this.memberList = res || []
+        })
+      /*memberList({}).then(res => {
         this.memberList = res
-      })
+      })*/
     },
     reject () { },
     handleAvatarSuccess () { },
diff --git a/admin/src/components/operation/OperCarUseBookParamWindow.vue b/admin/src/components/operation/OperCarUseBookParamWindow.vue
index f4120a7..19c6d8b 100644
--- a/admin/src/components/operation/OperCarUseBookParamWindow.vue
+++ b/admin/src/components/operation/OperCarUseBookParamWindow.vue
@@ -29,7 +29,9 @@
         </el-form-item>
         <el-form-item label="涔樿溅浜哄憳" prop="memberIds">
           <el-select v-model="form.memberIds" multiple filterable placeholder="璇烽�夋嫨">
-            <el-option v-for="item in memberList" :key="item.id" :label="item.name" :value="item.id">
+            <el-option v-for="item in memberList"
+                       :key="item.memberId" :value="item.memberId"
+                       :label="item.companyName ? `${item.realname}-${item.companyName}` : item.realname" >
             </el-option>
           </el-select>
         </el-form-item>
@@ -186,12 +188,13 @@
 import { carCanReservationDate, carUseBookCraete, carUseBookList, detail } from '@/api/business/carUseBook'
 import { findTypeMemberInfo } from '@/api/business/memberCard'
 import dayjs from 'dayjs'
+import { findAllList as userList } from '@/api/system/user'
 
 export default {
   name: 'OperCarUseBookParamWindow',
   extends: BaseOpera,
   components: { GlobalWindow },
-  data() {
+  data () {
     return {
       // 琛ㄥ崟鏁版嵁
       isShowTime: false,
@@ -280,11 +283,11 @@
   //     immediate: true
   //   }
   // },
-  created() {
+  created () {
     this.initData()
   },
   methods: {
-    open() {
+    open () {
       this.title = '鏂板缓鍏姟杞︾敤杞︾敵璇�'
       this.form = {
         type: 0,
@@ -295,18 +298,18 @@
       })
       this.visible = true
     },
-    confirm() {
+    confirm () {
       const form = JSON.parse(JSON.stringify(this.form))
       this.$refs.formRef.validate((valid) => {
         const memberList = []
         form.memberIds.forEach(i => {
           this.memberList.forEach(item => {
-            if (i === item.id) {
+            if (i === item.memberId) {
               memberList.push(item)
             }
           })
         })
-        form.memberNames = memberList.map(i => i.name).join(',')
+        form.memberNames = memberList.map(i => i.realname).join(',')
         form.memberList = memberList
         form.memberIds = form.memberIds.join(',')
         form.startTime = form.startTime + ':00'
@@ -322,7 +325,7 @@
         }
       })
     },
-    openTime() {
+    openTime () {
       const { form } = this
       if (!form.carId) {
         return this.$tip.error('璇峰厛閫夋嫨杞﹁締')
@@ -337,7 +340,7 @@
         this.isShowShiwai = true
       }
     },
-    changeType() {
+    changeType () {
       this.$set(this.form, 'startTime', '')
       this.$set(this.form, 'endTime', '')
       this.$set(this.form, 'planUseDate', '')
@@ -345,7 +348,7 @@
         this.$refs.formRef.clearValidate()
       })
     },
-    clearTime() {
+    clearTime () {
       this.isShowShiwai = false
       this.$set(this.form, 'startTime', '')
       this.$set(this.form, 'endTime', '')
@@ -355,7 +358,7 @@
         }
       })
     },
-    subTime() {
+    subTime () {
       if (this.info && this.info.length > 0) return
       if (this.form.type === 0) {
         const selTimeList = this.timeList.filter(i => i.checked == '1')
@@ -380,7 +383,7 @@
       }
       console.log('form', this.form)
     },
-    datetimeClick(item, index) {
+    datetimeClick (item, index) {
       if (item.carUseBookId) {
         detail(
           item.carUseBookId
@@ -428,19 +431,19 @@
         this.selDatetime = ''
         this.selPastDatetime = ''
       } else {
-        let pastList = selTimeLists.filter(i => i.pastFlag)
-        if(pastList.length > 0){
+        const pastList = selTimeLists.filter(i => i.pastFlag)
+        if (pastList.length > 0) {
           this.selPastDatetime = '褰撳墠閫夋嫨鍖呭惈宸茬粡杩囧幓鏃堕棿锛岃纭鍚庡啀鎻愪氦锛�'
-        }else{
+        } else {
           this.selPastDatetime = ''
         }
         this.selDatetime = this.form.dateDay.slice(5) + ' ' + selTimeLists[0].startHours + '-' + selTimeLists[selTimeLists.length - 1].endHours
       }
     },
-    seletedDate(e) {
+    seletedDate (e) {
       this.gettimes()
     },
-    seletedShiwaiDate(str) {
+    seletedShiwaiDate (str) {
       const { form } = this
       if (str && str == 1) {
         this.$set(this.form, 'endTime', '')
@@ -448,9 +451,9 @@
 
       if (form.startTime && form.endTime) {
         this.selDatetime = form.startTime + ' - ' + form.endTime
-        if(new Date(form.startTime).getTime() < new Date().getTime()){
+        if (new Date(form.startTime).getTime() < new Date().getTime()) {
           this.selPastDatetime = '褰撳墠閫夋嫨鍖呭惈宸茬粡杩囧幓鏃堕棿锛岃纭鍚庡啀鎻愪氦锛�'
-        }else{
+        } else {
           this.selPastDatetime = ''
         }
         carUseBookList({
@@ -460,11 +463,11 @@
         }).then(res => {
           this.info = res || []
         })
-      }else{
+      } else {
         this.selPastDatetime = ''
       }
     },
-    gettimes() {
+    gettimes () {
       const { form } = this
       carCanReservationDate({
         dateDay: form.dateDay,
@@ -472,26 +475,29 @@
       }).then(res => {
         this.timeList = res || []
         this.timeList.forEach((i, j) => {
-          i.pastFlag = new Date().getTime() > new Date(i.startTime).getTime()          
+          i.pastFlag = new Date().getTime() > new Date(i.startTime).getTime()
           i.checked = '0',
           i.index = j
         })
-        
       })
     },
-    initData() {
+    initData () {
       getCarList({
         type: 0
       }).then(res => {
         this.carsList = res
       })
-      findTypeMemberInfo({
+      userList({ queryParam: this.filterText, querySpecial: 1, type: 2, companyType: 1, workStatus: 0 })
+        .then(res => {
+          this.memberList = res || []
+        })
+      /* findTypeMemberInfo({
         type: '2',
         companyType: 1,
         querySpecial: 1
       }).then(res => {
         this.memberList = res || []
-      })
+      }) */
     }
   }
 }
@@ -565,7 +571,6 @@
     border: #cccccc solid 1px;
     cursor: pointer;
   }
-
 
   .disable {
     color: #fff;
diff --git a/admin/src/views/business/carEvent.vue b/admin/src/views/business/carEvent.vue
index e411e85..bd9412a 100644
--- a/admin/src/views/business/carEvent.vue
+++ b/admin/src/views/business/carEvent.vue
@@ -54,6 +54,16 @@
         </li>
       </ul>
       <el-table v-loading="isWorking.search" :data="tableData.list" stripe>
+        <el-table-column prop="personName" label="濮撳悕" min-width="100px"></el-table-column>
+        <el-table-column prop="personPhone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
+        <el-table-column prop="personCompanyName" label="缁勭粐" min-width="100px"></el-table-column>
+        <el-table-column label="浜哄憳绫诲瀷" min-width="100px">
+          <template slot-scope="{ row }">
+            <span v-if="row.companyType == 0">鐩稿叧鏂圭粍缁�</span>
+            <span v-else-if="row.companyType == 1">鍐呴儴鍛樺伐</span>
+            <span v-else>璁垮</span>
+          </template>
+        </el-table-column>
         <el-table-column prop="plateNos" label="杞︾墝鍙�" min-width="100px"></el-table-column>
         <el-table-column prop="parkName" label="鍋滆溅搴撳悕绉�" min-width="100px"></el-table-column>
         <el-table-column prop="gateName" label="鍑哄叆鍙e悕绉�" min-width="100px"></el-table-column>
@@ -64,16 +74,6 @@
             <span v-if="row.inoutType === 1">绂诲洯</span>
           </template>
         </el-table-column>
-        <el-table-column label="浜哄憳绫诲瀷" min-width="100px">
-          <template slot-scope="{ row }">
-            <span v-if="row.companyType == 0">鐩稿叧鏂圭粍缁�</span>
-            <span v-else-if="row.companyType == 1">鍐呴儴鍛樺伐</span>
-            <span v-else>璁垮</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="personName" label="濮撳悕" min-width="100px"></el-table-column>
-        <el-table-column prop="personPhone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
-        <el-table-column prop="personCompanyName" label="缁勭粐" min-width="100px"></el-table-column>
         <el-table-column label="杞︾墝鎶撴媿鍥�" min-width="100px">
           <template slot-scope="{ row }">
             <div v-if="row.platePicUrl != null">
diff --git a/admin/src/views/business/deviceEvent.vue b/admin/src/views/business/deviceEvent.vue
index ae3cf86..02ad4f8 100644
--- a/admin/src/views/business/deviceEvent.vue
+++ b/admin/src/views/business/deviceEvent.vue
@@ -58,6 +58,10 @@
                         <span v-if="row.personType == null">澶栨潵璁垮</span>
                     </template>
 </el-table-column> -->
+        <el-table-column prop="personName" label="濮撳悕" min-width="100px"></el-table-column>
+        <el-table-column prop="personPhone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
+        <el-table-column prop="personIdcardDecode" label="璇佷欢鍙�" min-width="100px"></el-table-column>
+        <el-table-column prop="personCompanyName" label="缁勭粐" min-width="100px"></el-table-column>
         <el-table-column label="浜哄憳绫诲瀷" min-width="100px">
           <template slot-scope="{ row }">
             <span v-if="row.companyType == 0">鐩稿叧鏂圭粍缁�</span>
@@ -83,10 +87,7 @@
           </template>
         </el-table-column>
 
-        <el-table-column prop="personName" label="濮撳悕" min-width="100px"></el-table-column>
-        <el-table-column prop="personPhone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
-        <el-table-column prop="personIdcardDecode" label="璇佷欢鍙�" min-width="100px"></el-table-column>
-        <el-table-column prop="personCompanyName" label="缁勭粐" min-width="100px"></el-table-column>
+
 
       </el-table>
       <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
diff --git a/admin/src/views/business/reportRecord.vue b/admin/src/views/business/reportRecord.vue
index b5a71a7..f9a206d 100644
--- a/admin/src/views/business/reportRecord.vue
+++ b/admin/src/views/business/reportRecord.vue
@@ -81,14 +81,13 @@
           <span v-if="row.status === 9" style="color: gray">宸插け鏁�</span>
         </template>
       </el-table-column>
-      <el-table-column label="鎿嶄綔" align="center" width="100" fixed="right">
+      <el-table-column label="鎿嶄綔" align="center" width="180" fixed="right">
         <template slot-scope="{ row }">
           <el-button
             type="text"
             @click="handleDetail(row)"
-            v-permissions="['business:company:update']"
-            >鏌ョ湅璇︽儏</el-button
-          >
+            v-permissions="['business:company:update']">鏌ョ湅璇︽儏</el-button>
+          <el-button  type="text"  icon="el-icon-delete" @click="deleteById(row)" style="color: red" v-permissions="['business:visits:delete']">鍒犻櫎</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -108,7 +107,7 @@
 // import ReportDetail from './page-components/ReportDetail.vue'
 import ReportDetail from '@/views/task/visReportDetail.vue'
 import OperaVisitsReportWindow from '@/components/business/operaVisitsReportWindow.vue'
-import { fetchList, exportExcel } from '@/api/business/visits'
+import { fetchList, exportExcel, deleteById } from '@/api/business/visits'
 export default {
   components: {
     ReportDetail,
@@ -185,6 +184,21 @@
         this.$refs.operaVisitsWindowRef.isShowModal = true
       })
     },
+    deleteById (row) {
+      this.$confirm('纭畾鍒犻櫎璇ヨ褰曞悧, 鏄惁缁х画?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        deleteById(row.id)
+          .then(res => {
+            this.$message.success('鎿嶄綔鎴愬姛')
+            this.page = 1
+            this.getList()
+          })
+      }).catch(() => {
+      })
+    },
     handleDetail (row) {
       this.isShowReport = true
       this.$nextTick(() => {
diff --git a/admin/src/views/business/retention.vue b/admin/src/views/business/retention.vue
index 9755cc0..0be1f07 100644
--- a/admin/src/views/business/retention.vue
+++ b/admin/src/views/business/retention.vue
@@ -40,6 +40,9 @@
       </ul>
       <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange">
         <el-table-column type="selection" width="55"></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 prop="idcardDecode" label="韬唤璇佸彿" min-width="130px"></el-table-column>
         <el-table-column prop="companyName" label="缁勭粐" min-width="100px">
           <template slot-scope="{ row }">
             <span v-if="row.type === 2 || row.type === 0">{{
@@ -55,9 +58,6 @@
             <span v-else>璁垮</span>
           </template>
         </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 prop="idcardDecode" label="韬唤璇佸彿" min-width="130px"></el-table-column>
         <el-table-column label="杩涘満闂ㄧ" min-width="100px">
           <template slot-scope="{ row }">
             <!-- <span v-if="row.type === 1">-</span> -->
diff --git a/admin/src/views/business/retentionCars.vue b/admin/src/views/business/retentionCars.vue
index 227f7f0..0719476 100644
--- a/admin/src/views/business/retentionCars.vue
+++ b/admin/src/views/business/retentionCars.vue
@@ -19,6 +19,7 @@
           <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>
       <el-form-item label="璧锋鏃堕棿" prop="startTime">
@@ -61,6 +62,7 @@
             <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="name" label="濮撳悕" min-width="100px"></el-table-column>
diff --git a/admin/src/views/business/userAction.vue b/admin/src/views/business/userAction.vue
index bc51338..0f1a5d6 100644
--- a/admin/src/views/business/userAction.vue
+++ b/admin/src/views/business/userAction.vue
@@ -36,18 +36,25 @@
                 </el-select>
             </el-form-item>-->
             <el-form-item label="鎿嶄綔绫诲瀷" prop="type">
-                <el-select v-model="searchForm.type" placeholder="璇烽�夋嫨">
-                    <el-option label="瑙e喕" :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-option label="鍙栨秷楂樼骇瀹℃壒浜�" :value="7"></el-option>
-                    <el-option label="鎵嬪姩绂诲満" :value="8"></el-option>
-                    <el-option label="鍒犻櫎" :value="9"></el-option>
-                </el-select>
+              <el-select v-model="searchForm.type" placeholder="璇烽�夋嫨">
+                <el-option label="瑙e喕" :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-option label="鍙栨秷楂樼骇瀹℃壒浜�" :value="7"></el-option>
+                <el-option label="鎵嬪姩绂诲満" :value="8"></el-option>
+                <el-option label="鍒犻櫎" :value="9"></el-option>
+                <el-option label="鏇存柊" :value="10"></el-option>
+                <el-option label="鎺堟潈闂ㄧ鏉冮檺" :value="11"></el-option>
+                <el-option label="绂昏亴" :value="12"></el-option>
+                <el-option label="鍦ㄨ亴" :value="13"></el-option>
+                <el-option label="瀵煎叆鍩硅鏈夋晥鏈�" :value="14"></el-option>
+                <el-option label="璁句负涓荤" :value="15"></el-option>
+                <el-option label="鍙栨秷涓荤" :value="16"></el-option>
+              </el-select>
             </el-form-item>
             <section>
                 <el-button type="primary" @click="search">鎼滅储</el-button>
@@ -123,6 +130,7 @@
           companyName: '',
           memberType: '',
           mobile: '',
+          objType:0,
           beforeStatus: '',
           type: ''
         }
diff --git a/admin/src/views/business/userActionOther.vue b/admin/src/views/business/userActionOther.vue
new file mode 100644
index 0000000..325800b
--- /dev/null
+++ b/admin/src/views/business/userActionOther.vue
@@ -0,0 +1,79 @@
+<template>
+    <TableLayout :permissions="['business:useraction:query']">
+        <!-- 鎼滅储琛ㄥ崟 -->
+        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+            <el-form-item label="鎿嶄綔鍐呭" prop="createName">
+                <el-input v-model="searchForm.remark" placeholder="璇疯緭鍏ユ搷浣滃唴瀹�" @keypress.enter.native="search"></el-input>
+            </el-form-item>
+            <el-form-item label="鎿嶄綔绫诲瀷" prop="type">
+                <el-select v-model="searchForm.type" placeholder="璇烽�夋嫨">
+                    <el-option label="鍒犻櫎浼氳瀹ょ敵璇�" :value="17"></el-option>
+                    <el-option label="鍒犻櫎璁垮鐢宠" :value="18"></el-option>
+                    <el-option label="鍒犻櫎璁垮鎶ュ" :value="19"></el-option>
+                    <el-option label="鍒犻櫎鏈堝彴棰勭害浠诲姟" :value="20"></el-option>
+                    <el-option label="鍒犻櫎鍏溅鐢宠" :value="21"></el-option>
+                    <el-option label="鍒犻櫎瀹夋嘲鐗╂祦浣滀笟浠诲姟" :value="22"></el-option>
+                    <el-option label="鍒犻櫎闅愭偅闅忔墜鎷�" :value="23"></el-option>
+                </el-select>
+            </el-form-item>
+            <section>
+                <el-button type="primary" @click="search">鎼滅储</el-button>
+                <el-button @click="reset">閲嶇疆</el-button>
+            </section>
+        </el-form>
+        <!-- 琛ㄦ牸鍜屽垎椤� -->
+        <template v-slot:table-wrap>
+            <el-table
+                v-loading="isWorking.search"
+                :data="tableData.list"
+                stripe
+            >
+              <el-table-column prop="createName" label="鎿嶄綔浜哄憳"></el-table-column>
+              <el-table-column  prop="typeName" label="鎿嶄綔绫诲瀷" />
+              <el-table-column  prop="remark" label="鎿嶄綔鍐呭" width="900"/>
+              <el-table-column prop="createDate" label="鎿嶄綔鏃堕棿"></el-table-column>
+            </el-table>
+            <pagination
+                @size-change="handleSizeChange"
+                @current-change="handlePageChange"
+                :pagination="tableData.pagination"
+            >
+            </pagination>
+        </template>
+    </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+export default {
+  name: 'UserAction',
+  extends: BaseTable,
+  components: { TableLayout, Pagination },
+  data () {
+    return {
+      // 鎼滅储
+      searchForm: {
+        createName: '',
+        memberName: '',
+        companyName: '',
+        memberType: '',
+        mobile: '',
+        objType: 1,
+        beforeStatus: '',
+        type: ''
+      }
+    }
+  },
+  created () {
+    this.config({
+      module: '浜哄憳鎿嶄綔璁板綍鏃ュ織',
+      api: '/business/userAction',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  }
+}
+</script>
diff --git a/admin/src/views/business/visitEvent.vue b/admin/src/views/business/visitEvent.vue
index c53bf54..c01ecdc 100644
--- a/admin/src/views/business/visitEvent.vue
+++ b/admin/src/views/business/visitEvent.vue
@@ -18,6 +18,12 @@
                     <el-option label="璁垮閫氳" value="541200060"></el-option>
                 </el-select>
             </el-form-item>
+            <el-form-item label="杩涘嚭绫诲瀷" prop="inOrOut">
+                <el-select v-model="searchForm.inOrOut" placeholder="璇烽�夋嫨">
+                    <el-option label="杩�" value="0"></el-option>
+                    <el-option label="鍑�" value="1"></el-option>
+                </el-select>
+            </el-form-item>
             <el-form-item label="璧峰鏃堕棿" prop="carNo">
                 <el-date-picker
                     @change="seleTime"
@@ -58,6 +64,13 @@
                 <el-table-column prop="beVisitedPersonName" label="琚浜�" min-width="100px"></el-table-column>
                 <el-table-column prop="beVisitedPersonOrg" label="琚浜虹粍缁�" min-width="100px"></el-table-column>
                 <el-table-column prop="eventTypeName" label="浜嬩欢绫诲瀷" min-width="100px"></el-table-column>
+                <el-table-column prop="inOrOut" label="杩涘嚭绫诲瀷" min-width="100px">
+                  <template slot-scope="{row}">
+                    <span v-if="row.inOrOut == '0'">杩�</span>
+                    <span v-else-if="row.inOrOut == '1'">鍑�</span>
+                    <span v-else>-</span>
+                  </template>
+                </el-table-column>
                 <el-table-column label="鎶撴媿鍥�" min-width="100px">
                     <template slot-scope="{row}">
                         <el-image v-if="row.captureUrlFull!=null"
@@ -98,6 +111,7 @@
         startTime: '',
         endTime: '',
         eventType: '',
+        inOrOut: null,
         visitorWorkUint: '',
         radio: '0'
       },
diff --git a/admin/src/views/business/visits.vue b/admin/src/views/business/visits.vue
index bf7cde0..bfac6a3 100644
--- a/admin/src/views/business/visits.vue
+++ b/admin/src/views/business/visits.vue
@@ -96,7 +96,8 @@
               icon="el-icon-edit" v-if="row.status == 6">閲嶆柊涓嬪彂</el-button>
             <!-- <el-button type="text" @click="$refs.OperaVisitsDesWindow.open('璇︽儏', row.id)" icon="el-icon-view">璇︽儏</el-button> -->
             <el-button type="text" @click="handleDetail(row)" icon="el-icon-view">璇︽儏</el-button>
-            <!--                        <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:visits:delete']">鏌ヨ瀹℃壒缁撴灉</el-button>-->
+            <el-button  type="text"  icon="el-icon-delete" @click="deleteById(row)" style="color: red" v-permissions="['business:visits:delete']">鍒犻櫎</el-button>
+            <!-- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:visits:delete']">鏌ヨ瀹℃壒缁撴灉</el-button>-->
           </template>
         </el-table-column>
       </el-table>
@@ -164,15 +165,16 @@
       })
     },
     departure(id) {
-      this.$confirm('纭畾绂诲巶鍚�, 鏄惁缁х画?', '鎻愮ず', {
+      this.$confirm('纭畾杩涜绂诲満鎿嶄綔鍚楋紝璇ユ搷浣滀笉鍙�嗚璋ㄦ厧鎿嶄綔, 鏄惁缁х画?', '鎻愮ず', {
         confirmButtonText: '纭畾',
         cancelButtonText: '鍙栨秷',
         type: 'warning'
       }).then(() => {
-        level(id)
+        this.api.level(id)
           .then(res => {
+            this.$message.success('鎿嶄綔鎴愬姛')
             this.page = 1
-            this.getData()
+            this.search()
           })
       }).catch(() => {
 
@@ -184,10 +186,10 @@
         cancelButtonText: '鍙栨秷',
         type: 'warning'
       }).then(() => {
-        visitCancel(id)
+        this.api.visitCancel(id)
           .then(res => {
             this.page = 1
-            this.getData()
+            this.search()
           })
       }).catch(() => {
 
@@ -202,7 +204,7 @@
         this.api.visitResend(id)
           .then(res => {
             this.page = 1
-            this.getData()
+            this.search()
           })
       }).catch(() => {
 
diff --git a/admin/src/views/operation/danger/record.vue b/admin/src/views/operation/danger/record.vue
index 5b60581..a685a96 100644
--- a/admin/src/views/operation/danger/record.vue
+++ b/admin/src/views/operation/danger/record.vue
@@ -91,11 +91,12 @@
         <el-table-column prop="editDate" label="鎿嶄綔鏃堕棿" min-width="150px"></el-table-column>
         <el-table-column
             label="鎿嶄綔"
-            min-width="100"
+            min-width="180"
             fixed="right"
         >
           <template slot-scope="{row}">
             <el-button type="text" icon="el-icon-edit" @click="$refs.OperaHiddenDangerWindow.open('闅愭偅闅忔墜鎷嶈鎯�',row)" >鏌ョ湅璇︽儏</el-button>
+            <el-button  type="text"  icon="el-icon-delete" @click="deleteById(row)" style="color: red" v-permissions="['business:hiddendanger:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -132,7 +133,6 @@
         memberName: '',
         companyName: '',
         queryStartTime: '',
-        companyName: '',
         queryEndTime: '',
         areaId: null,
         cateId: null,
diff --git a/admin/src/views/operation/serviceCar/apprRecord.vue b/admin/src/views/operation/serviceCar/apprRecord.vue
index 784b850..7c6e24d 100644
--- a/admin/src/views/operation/serviceCar/apprRecord.vue
+++ b/admin/src/views/operation/serviceCar/apprRecord.vue
@@ -196,16 +196,8 @@
               >鏌ョ湅璇︽儏</el-button
             >
             <!-- <el-button v-if="(row.status === 1 || row.status === 2) && new Date().getTime() < new Date(row.startTime).getTime()" type="text" icon="el-icon-delete" @click="rowRevokeClick(row)" >鎾ら攢</el-button> -->
-            <el-button
-              v-if="
-                (row.status === 0 || row.status === 1 || row.status === 2) &&
-                new Date().getTime() < new Date(row.startTime).getTime()
-              "
-              type="text"
-              icon="el-icon-delete"
-              @click="rowRevokeClick(row)"
-              >鎾ら攢</el-button
-            >
+            <el-button style="color: red"   v-if="    (row.status === 0 || row.status === 1 || row.status === 2) && new Date().getTime() < new Date(row.startTime).getTime() "  type="text"  icon="el-icon-delete"   @click="rowRevokeClick(row)" >鎾ら攢</el-button>
+            <el-button  style="color: red" type="text"  icon="el-icon-delete"   @click="deleteById(row)" >鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
diff --git a/admin/src/views/platform/LogisticsRecord/subscribe.vue b/admin/src/views/platform/LogisticsRecord/subscribe.vue
index 7742256..a70d11c 100644
--- a/admin/src/views/platform/LogisticsRecord/subscribe.vue
+++ b/admin/src/views/platform/LogisticsRecord/subscribe.vue
@@ -41,6 +41,7 @@
         <template v-slot="scope">
           <el-button type="text" v-permissions="['business:platformbooks:detail']"
             @click="handleDetail(scope.row)">棰勭害璇︽儏</el-button>
+          <el-button  type="text" class="red" v-permissions="['business:platformjob:delete']" @click="handleDel(scope.row)">鍒犻櫎</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -144,7 +145,6 @@
       rules: {
         contractNum: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
         totalNum: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
-        driverName: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
         driverPhone: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
         carCodeFront: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
         carCodeBack: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
@@ -197,7 +197,7 @@
           }
         ],
         online: true
-      },
+      }
     }
   },
   created() {
diff --git a/admin/src/views/platform/LogisticsRecord/waybill.vue b/admin/src/views/platform/LogisticsRecord/waybill.vue
index a00a3da..4eaa9b7 100644
--- a/admin/src/views/platform/LogisticsRecord/waybill.vue
+++ b/admin/src/views/platform/LogisticsRecord/waybill.vue
@@ -190,7 +190,7 @@
       })
     },
     handleDel(row) {
-      this.$dialog.exportConfirm('纭鍒犻櫎鍚楋紵').then(() => {
+      this.$dialog.deleteConfirm('纭鍒犻櫎鍚楋紵').then(() => {
         platformJobDel(row.id).then(res => {
           Message.success('鍒犻櫎鎴愬姛')
           this.getList()
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/BookingsMapper.java b/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/BookingsMapper.java
index 9ddcb73..39eff3a 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/BookingsMapper.java
+++ b/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/BookingsMapper.java
@@ -102,7 +102,7 @@
             "SUM( CONVERT( (UNIX_TIMESTAMP(b.END_TIME) - UNIX_TIMESTAMP(b.START_TIME))/(60*60),DECIMAL(5,1))) c\n" +
             "FROM meeting_book b\n" +
             "LEFT JOIN meeting_rooms r ON r.ID = b.ROOM_ID \n" +
-            "WHERE DATE_FORMAT(b.START_TIME,'%Y') = #{yearNum} AND b.STATUS = 0 \n" +
+            "WHERE DATE_FORMAT(b.START_TIME,'%Y') = #{yearNum} AND b.STATUS in(0,2) \n" +
             "GROUP BY b.ROOM_ID , DATE_FORMAT(b.START_TIME,'%m')\n" +
             ") t) t1 GROUP BY t1.name")
     List<RoomStatisticsVo> getRoomStatistics(@Param("yearNum") Integer yearNum);
@@ -149,7 +149,7 @@
             "meeting_user_rel ur\n" +
             "LEFT JOIN `SYSTEM_USER` su ON ur.USER_ID = su.id \n" +
             "LEFT JOIN meeting_book b ON ur.OBJ_ID = b.id \n" +
-            "WHERE DATE_FORMAT(b.START_TIME,'%Y') = #{yearNum} AND b.STATUS = 0" +
+            "WHERE DATE_FORMAT(b.START_TIME,'%Y') = #{yearNum} AND b.STATUS in(0,2)" +
             "<if test='userId != null'>"+
             "and ur.USER_ID = #{userId}\n" +
             "</if>"+
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Bookings.java b/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Bookings.java
index e7f3cb8..98927c3 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Bookings.java
+++ b/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Bookings.java
@@ -202,5 +202,11 @@
     @ApiModelProperty(value = "浼氳瀹や富閿�")
     @TableField(exist = false)
     private Integer roomsId;
+    @ApiModelProperty(value = "浼氳瀹ゅ浘鐗�")
+    @TableField(exist = false)
+    private String imgurl;
 
+    @TableField(exist = false)
+    @ApiModelProperty(value = "鏂囦欢绫诲瀷")
+    private Integer fileType;
 }
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/dao/web/response/RoomDetailResponse.java b/server/meeting/meeting_service/src/main/java/com/doumee/dao/web/response/RoomDetailResponse.java
index fb3d551..0ccae3e 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/dao/web/response/RoomDetailResponse.java
+++ b/server/meeting/meeting_service/src/main/java/com/doumee/dao/web/response/RoomDetailResponse.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.web.response;
 
+import com.doumee.dao.business.model.Bookings;
 import com.doumee.dao.system.model.Multifile;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -35,5 +36,7 @@
 
     @ApiModelProperty(value = "浼氳鍒楄〃")
     private List<MeetingListResponse> meetingListResponseList;
+//    @ApiModelProperty(value = "浼氳鍒楄〃")
+//    private List<Bookings> meetingListResponseList;
 
 }
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java b/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java
index abe4c42..15bcc39 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java
+++ b/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java
@@ -1,5 +1,6 @@
 package com.doumee.service.business.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -7,6 +8,8 @@
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
+import com.doumee.dao.business.dao.MemberMapper;
+import com.doumee.dao.business.dao.UserActionMapper;
 import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
@@ -85,6 +88,8 @@
 
     @Autowired
     private RoomsMapper roomsMapper;
+    @Autowired
+    private UserActionMapper userActionMapper;
     @Autowired
     private ProjectRelJoinMapper projectRelJoinMapper;
     @Autowired
@@ -334,12 +339,39 @@
 
     @Override
     public void deleteById(Integer id,LoginUserInfo user) {
+        Bookings model = bookingsMapper.selectById(id);
+        if(model==null ||Constants.equalsInteger(Constants.ONE,model.getIsdeleted())) {
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+
+        Date date = new Date();
         Bookings bookings = new Bookings();
         bookings.setId(id);
         bookings.setIsdeleted(MeetConstants.ONE);
-        bookings.setEditDate(new Date());
+        bookings.setEditDate(date);
         bookings.setEditor(user.getId());
         bookingsMapper.updateById(bookings);
+
+        String[] params = new String[3];
+        params[0] = user.getRealname();
+        params[1]=DateUtil.getPlusTime2(date);
+        params[2]=model.getName()+"-銆愪細璁锛�"+model.getRoomName()+" 銆�-銆愭椂闂达細"+DateUtil.getPlusTime2(model.getStartTime())+"-"+DateUtil.getPlusTime2(model.getEndTime())+"銆�";
+        String info = Constants.UserActionType.MEET_BOOK_DEL.getInfo();
+        if(params!=null){
+            for (int i = 0; i < params.length; i++) {
+                info = info.replace("${param"+(i+1)+"}",params[i]);
+            }
+        }
+        UserAction userAction=new UserAction();
+        userAction.setIsdeleted(Constants.ZERO);
+        userAction.setCreateDate(date);
+        userAction.setCreator(user.getId());
+        userAction.setBeforeStatus(Constants.ZERO);
+        userAction.setType( Constants.UserActionType.MEET_BOOK_DEL.getKey());
+        userAction.setContent(JSONObject.toJSONString(model));
+        userAction.setRemark(info);
+        userAction.setMemberId(id+"");
+        userActionMapper.insert(userAction);
     }
 
     @Override
@@ -506,7 +538,7 @@
         queryWrapper.selectAs(Rooms::getName, Bookings::getRoomName);
         queryWrapper.selectAs(SystemUser::getRealname, Bookings::getRealName);
         queryWrapper.selectAs(Company::getName, Bookings::getDepartmentName);
-        queryWrapper.select(" CASE WHEN t.START_TIME_REAL IS NULL AND t.`STATUS` = 0 THEN 1  WHEN ( ( t.END_TIME < now()  AND t.`STATUS` = 0 ) or t.`STATUS` = 2 ) THEN 3 WHEN t.`STATUS` = 1 THEN 5 ELSE  2  END meetingStatus ");
+//        queryWrapper.select(" CASE WHEN t.START_TIME_REAL IS NULL AND t.`STATUS` = 0 THEN 1  WHEN ( ( t.END_TIME < now()  AND t.`STATUS` = 0 ) or t.`STATUS` = 2 ) THEN 3 WHEN t.`STATUS` = 1 THEN 5 ELSE  2  END meetingStatus ");
         queryWrapper.leftJoin(Rooms.class, Rooms::getId, Bookings::getRoomId);
         queryWrapper.leftJoin(SystemUser.class, SystemUser::getId, Bookings::getCreator);
         queryWrapper.leftJoin(Company.class,Company::getId,SystemUser::getCompanyId);
@@ -574,29 +606,9 @@
         SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm");
         SimpleDateFormat format1 = new SimpleDateFormat("HH:mm");
         IPage<Bookings> result = bookingsJoinMapper.selectJoinPage(page, Bookings.class, queryWrapper);
-
-        String configMinute = systemDictDataBiz.queryByCode(MeetConstants.SYSTEM, MeetConstants.EARLY_START).getCode();
-        Integer minute = StringUtils.isNotBlank(configMinute) ? Integer.valueOf(configMinute) : 120;
+        Integer minute =getNearStartMinut();
         result.getRecords().stream().forEach(s -> {
-
-            if(Constants.equalsInteger(s.getStatus(),Constants.ZERO)&&Constants.equalsInteger(s.getMeetingStatus(),Constants.ONE)){
-                //寮�濮嬪墠120鍒嗛挓 澶т簬褰撳墠鏃堕棿 鍒欐樉绀哄嵆灏嗗紑濮�
-                if(
-                        DateUtil.afterMinutesDate(s.getStartTime(),-minute).getTime()<=System.currentTimeMillis()
-                ){
-                    s.setMeetingStatus(4);
-                }
-            }
-
-
-            if(s.getMeetingStatus().equals(Constants.ZERO)){
-                if(s.getMeetingStatus()==Constants.ONE){
-                    //寮�濮嬪墠120鍒嗛挓 澶т簬褰撳墠鏃堕棿 鍒欐樉绀哄嵆灏嗗紑濮�
-                    if(DateUtil.afterMinutesDate(s.getStartTime(),-120).getTime()>System.currentTimeMillis()){
-                        s.setMeetingStatus(4);
-                    }
-                }
-            }
+            dealMeetingStatusByModel(s,minute);
             MPJLambdaWrapper<Multifile> bookquery = new MPJLambdaWrapper<>();
             bookquery.eq(Multifile::getIsdeleted, MeetConstants.ZERO);
             bookquery.eq(Multifile::getObjId, s.getId());
@@ -637,6 +649,32 @@
 
         });
         return PageData.from(result);
+    }
+
+    private void dealMeetingStatusByModel(Bookings s,Integer minute) {
+        //浼氳鐘舵��: 1=鏈紑濮嬶紱2=杩涜涓紱3=宸茬粨鏉� ; 4=鍗冲皢寮�濮�; 5=宸叉挙閿�
+        //status鐘舵�� 0宸查绾� 1宸叉挙閿� 2宸茬粨鏉�
+        if(Constants.equalsInteger(s.getStatus(),Constants.ONE)){
+            //宸叉挙閿�
+            s.setMeetingStatus(Constants.FIVE);
+        }else if(Constants.equalsInteger(s.getStatus(),Constants.TWO)){
+            //宸茬粨鏉�
+            s.setMeetingStatus(Constants.THREE);
+        }else if(Constants.equalsInteger(s.getStatus(),Constants.ZERO)){
+            //0宸查绾�
+            if(s.getStartTimeReal() ==null){
+                //濡傛灉鏈紑濮�
+                s.setMeetingStatus(Constants.ONE);
+                //寮�濮嬪墠120鍒嗛挓 澶т簬褰撳墠鏃堕棿 鍒欐樉绀哄嵆灏嗗紑濮�
+                if(DateUtil.afterMinutesDate(s.getStartTime(),-minute).getTime()<=System.currentTimeMillis()  ){
+                    s.setMeetingStatus(Constants.FOUR);//鍒欐樉绀哄嵆灏嗗紑濮�
+                }
+            }else{
+                //浼氳涓�
+                s.setMeetingStatus(Constants.TWO);
+            }
+        }
+
     }
 
     @Override
@@ -1192,9 +1230,9 @@
         if (System.currentTimeMillis() < bookings.getStartTimeReal().getTime()) {
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "浼氳鏈紑濮�,鏃犳硶杩涜缁撴潫锛屽闇�璇ユ搷浣滆浣跨敤鍙栨秷鍔熻兘");
         }
-        if (System.currentTimeMillis() > bookings.getEndTime().getTime()) {
+        /*if (System.currentTimeMillis() > bookings.getEndTime().getTime()) {
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "浼氳宸茬粨鏉燂紝鏃犳硶杩涜璇ユ搷浣�");
-        }
+        }*/
         if(!bookings.getStatus().equals(MeetConstants.ZERO)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鏈鎿嶄綔澶辫触,浼氳鐘舵�佸凡娴佽浆");
         }
@@ -1308,7 +1346,7 @@
         bookings.setEditDate(new Date());
         bookings.setEditor(businessOverDTO.getUserId());
         bookingsMapper.updateById(bookings);
-        //鏇存柊宸茬粨鏉熶絾鏈粨鏉熺殑浼氳淇℃伅涓哄凡缁撴潫
+       /* //鏇存柊宸茬粨鏉熶絾鏈粨鏉熺殑浼氳淇℃伅涓哄凡缁撴潫
         bookingsMapper.update(null,new UpdateWrapper<Bookings>()
                 .lambda()
                 .set(Bookings::getStatus,Constants.TWO)
@@ -1317,10 +1355,9 @@
                 .apply(" ( END_TIME < now() or ( END_TIME > now() and START_TIME < now() and START_TIME_REAL is null  ) )")
                 .eq(Bookings::getStatus,Constants.ZERO)
                 .eq(Bookings::getRoomId,bookings.getRoomId())
-        );
+        );*/
 
     }
-
 
     @Override
     public RoomDetailResponse getRoomDetail(Integer roomId){
@@ -1341,9 +1378,9 @@
         String prefix = systemDictDataBiz.queryByCode(MeetConstants.SYSTEM, MeetConstants.MEET_CODE_PREFIX).getCode() ;
         response.setPrefix(prefix);
 
+        String path = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH)
+                .getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode();
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
-            String path = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH)
-                    .getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode();
             String localPath = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_LOCAL_RESOURCE_PATH)
                     .getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode();
             for (Multifile multifile:multifileList) {
@@ -1353,7 +1390,8 @@
             response.setMultifileList(multifileList);
         }
 
-        //鏌ヨ浼氳鍒楄〃
+
+/*        //鏌ヨ浼氳鍒楄〃
         List<MeetingListResponse> meetingList = bookingsMapper.meetingList(
                 new QueryWrapper<Bookings>()
                 .eq( "b.id", rooms.getId())
@@ -1367,10 +1405,57 @@
                 .orderByAsc("a.start_time")
         );
         this.dealMeetingStatus(meetingList);
-        response.setMeetingListResponseList(meetingList);
+        response.setMeetingListResponseList(meetingList);*/
+
+        MPJLambdaWrapper<Bookings> queryWrapper = new MPJLambdaWrapper<Bookings>()
+                 .selectAll(Bookings.class)
+                 .selectAs(Rooms::getName, Bookings::getRoomName)
+                 .selectAs(Rooms::getImgurl, Bookings::getImgurl)
+                 .selectAs(Rooms::getFileType, Bookings::getFileType)
+                 .selectAs(SystemUser::getRealname, Bookings::getRealName)
+                 .leftJoin(Rooms.class, Rooms::getId, Bookings::getRoomId)
+                 .leftJoin(SystemUser.class, SystemUser::getId, Bookings::getCreator)
+                 .eq(Bookings::getIsdeleted, MeetConstants.ZERO)
+                 .eq(Bookings::getId, MeetConstants.ZERO)
+                 .eq(Rooms::getId, rooms.getId())
+                .apply("to_days(t.start_time) = to_days(now())")//瀛愭煡璇㈠綋澶╃殑
+                 .orderByDesc(Bookings::getStartTime);
+        Integer minute =getNearStartMinut();
+        List<Bookings> meetingList =bookingsMapper.selectJoinList(Bookings.class,queryWrapper);
+        if(meetingList!=null){
+            response.setMeetingListResponseList(new ArrayList<>());
+            for(Bookings s : meetingList){
+                dealMeetingStatusByModel(s,minute);
+                MeetingListResponse d = new MeetingListResponse();
+                d.setId(s.getId());
+                d.setRoomName(s.getRoomName());
+                d.setBookingUser(s.getRealName());
+                d.setMeetingStatus(s.getMeetingStatus());
+                d.setPrefixUrl(path);
+                d.setImgUrl(s.getImgurl());
+                d.setFileType(s.getFileType());
+                d.setMeetingDate(DateUtil.getShortTime(s.getStartTime()));//
+                //CONCAT(date_format(a.START_TIME,'%H:%i') , ' ~ ',date_format(a.END_TIME,'%H:%i')) as meetingTime
+                d.setMeetingTime(DateUtil.formatDate(s.getStartTime(),"HH:mm")+"~"+DateUtil.formatDate(s.getEndTime(),"HH:mm"));
+                d.setMeetingName(s.getName());
+                d.setRemark(s.getRemark());
+                d.setStartTime(s.getStartTime());
+                response.getMeetingListResponseList().add(d);
+            }
+        }
         return response;
     }
 
+    private Integer getNearStartMinut() {
+        String configMinute = systemDictDataBiz.queryByCode(MeetConstants.SYSTEM, MeetConstants.EARLY_START).getCode();
+        try {
+            return  StringUtils.isNotBlank(configMinute) ? Integer.valueOf(configMinute) : 120;
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+      return  120;
+    }
+
 
     public void dealMeetingStatus(List<MeetingListResponse> meetingResponseList){
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(meetingResponseList)){
diff --git a/server/system_gateway/src/main/java/com/doumee/config/CustomWebFilterConfig.java b/server/system_gateway/src/main/java/com/doumee/config/CustomWebFilterConfig.java
index ac43309..9e877a8 100644
--- a/server/system_gateway/src/main/java/com/doumee/config/CustomWebFilterConfig.java
+++ b/server/system_gateway/src/main/java/com/doumee/config/CustomWebFilterConfig.java
@@ -1,6 +1,5 @@
 package com.doumee.config;
 
-import com.doumee.config.GatewayFilterProperties;
 import com.doumee.config.jwt.JwtTokenUtil;
 import com.doumee.core.utils.Constants;
 import org.apache.commons.lang3.StringUtils;
@@ -10,7 +9,6 @@
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
-import org.springframework.http.server.reactive.ServerHttpResponse;
 import org.springframework.http.server.reactive.ServerHttpRequest;
 import org.springframework.util.AntPathMatcher;
 import org.springframework.util.PathMatcher;
@@ -41,7 +39,7 @@
                 if (StringUtils.isBlank(userInfo)) {
                     return unAuthorize(exchange);
                 }
-                jwtTokenUtil.refreshTokenTime(token,userInfo);
+                jwtTokenUtil.refreshTokenTime(token);
                 //鎶婃柊鐨� exchange鏀惧洖鍒拌繃婊ら摼
                 ServerHttpRequest request = exchange.getRequest().mutate().header(Constants.HEADER_USER_TOKEN, token).build();
                 ServerWebExchange newExchange = exchange.mutate().request(request).build();
diff --git a/server/system_gateway/src/main/resources/application.yml b/server/system_gateway/src/main/resources/application.yml
index 79ba0b9..8b56fd5 100644
--- a/server/system_gateway/src/main/resources/application.yml
+++ b/server/system_gateway/src/main/resources/application.yml
@@ -63,6 +63,7 @@
     enabled: true   #鏄惁寮�鍚疛WT鐧诲綍璁よ瘉鍔熻兘
     secret: fjkfaf;afa  # JWT绉侀挜锛岀敤浜庢牎楠孞WT浠ょ墝鐨勫悎娉曟��
     expiration: 1800000 #JWT浠ょ墝鐨勬湁鏁堟湡锛岀敤浜庢牎楠孞WT浠ょ墝鐨勫悎娉曟��
+#    expiration: 300000 #JWT浠ょ墝鐨勬湁鏁堟湡锛岀敤浜庢牎楠孞WT浠ょ墝鐨勫悎娉曟��
     header: JWTHeaderName #HTTP璇锋眰鐨凥eader鍚嶇О锛岃Header浣滀负鍙傛暟浼犻�扟WT浠ょ墝
     userParamName: username  #鐢ㄦ埛鐧诲綍璁よ瘉鐢ㄦ埛鍚嶅弬鏁板悕绉�
     pwdParamName: password  #鐢ㄦ埛鐧诲綍璁よ瘉瀵嗙爜鍙傛暟鍚嶇О
diff --git a/server/system_service/src/main/java/com/doumee/config/cloudfilter/CloudWebConfig.java b/server/system_service/src/main/java/com/doumee/config/cloudfilter/CloudWebConfig.java
index c8cf472..179623f 100644
--- a/server/system_service/src/main/java/com/doumee/config/cloudfilter/CloudWebConfig.java
+++ b/server/system_service/src/main/java/com/doumee/config/cloudfilter/CloudWebConfig.java
@@ -1,5 +1,7 @@
 package com.doumee.config.cloudfilter;
 
+import com.doumee.config.jwt.JwtProperties;
+import com.doumee.config.jwt.JwtTokenUtil;
 import com.doumee.core.utils.Constants;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.web.servlet.FilterRegistrationBean;
@@ -9,15 +11,19 @@
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
+import javax.annotation.Resource;
 import javax.servlet.Filter;
 
 @Configuration
 public class CloudWebConfig implements WebMvcConfigurer {
     @Autowired
     private RedisTemplate<String,Object> stringRedisTemplate;
+    @Resource
+    private JwtProperties jwtProperties;
     @Override
     public void addInterceptors(InterceptorRegistry registry) {
-        registry.addInterceptor(new LoginHandlerInterceptor(stringRedisTemplate))
+        registry.addInterceptor(new LoginHandlerInterceptor(stringRedisTemplate,
+                        jwtProperties==null || jwtProperties.getExpiration()==null?1800000l:jwtProperties.getExpiration()))
                 .addPathPatterns(Constants.CLOUD_SERVICE_URL_INDEX+"/**");
     }
 
diff --git a/server/system_service/src/main/java/com/doumee/config/cloudfilter/LoginHandlerInterceptor.java b/server/system_service/src/main/java/com/doumee/config/cloudfilter/LoginHandlerInterceptor.java
index 6100bdc..2a1305d 100644
--- a/server/system_service/src/main/java/com/doumee/config/cloudfilter/LoginHandlerInterceptor.java
+++ b/server/system_service/src/main/java/com/doumee/config/cloudfilter/LoginHandlerInterceptor.java
@@ -3,6 +3,8 @@
 import com.alibaba.fastjson.JSONObject;
 import com.doumee.config.annotation.CloudRequiredPermission;
 import com.doumee.config.annotation.LoginNoRequired;
+import com.doumee.config.jwt.JwtProperties;
+import com.doumee.config.jwt.JwtTokenUtil;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.service.business.third.model.LoginUserInfo;
@@ -12,6 +14,7 @@
 import org.springframework.web.method.HandlerMethod;
 import org.springframework.web.servlet.HandlerInterceptor;
 
+import javax.annotation.Resource;
 import javax.servlet.ServletInputStream;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
@@ -21,14 +24,17 @@
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 
 public class LoginHandlerInterceptor implements HandlerInterceptor {
 
     private RedisTemplate<String,Object> stringRedisTemplate;
+    private long expireTime;
 
 
     // 鐢变簬璇ョ被鏈氦缁檚pring绠$悊锛屽洜姝や笉鑳戒娇鐢ㄨ嚜鍔ㄨ閰嶇殑鏂瑰紡鑾峰彇RedisTemplate瀵硅薄
-    public LoginHandlerInterceptor(RedisTemplate<String,Object> stringRedisTemplate) {
+    public LoginHandlerInterceptor(RedisTemplate<String,Object> stringRedisTemplate,long expireTime) {
+        this.expireTime = expireTime;
         this.stringRedisTemplate = stringRedisTemplate;
     }
 
@@ -124,6 +130,7 @@
         if (StringUtils.isBlank(userinfo)) {
             throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鏈櫥褰�");
         }
+        stringRedisTemplate.expire(Constants.REDIS_TOKEN_KEY+token,this.expireTime, TimeUnit.MILLISECONDS);
         LoginUserInfo user = JSONObject.toJavaObject(JSONObject.parseObject(userinfo),LoginUserInfo.class );
         if(user ==null ){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛鐧婚檰宸插け鏁堬紝璇烽噸鏂扮櫥闄嗭紒");
diff --git a/server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java b/server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
index ca998e5..bd8d38a 100644
--- a/server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
+++ b/server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
@@ -240,7 +240,8 @@
      * @param token
      */
 
-    public void refreshTokenTime(String token,String usrerInfo) {
-        redisTemplate.opsForValue().set(Constants.REDIS_TOKEN_KEY+token,usrerInfo,jwtProperties.getExpiration(), TimeUnit.MILLISECONDS);
+    public void refreshTokenTime(String token ) {
+        redisTemplate.expire(Constants.REDIS_TOKEN_KEY+token,jwtProperties.getExpiration(), TimeUnit.MILLISECONDS);
+//        redisTemplate.opsForValue().set(Constants.REDIS_TOKEN_KEY+token,usrerInfo,jwtProperties.getExpiration(), TimeUnit.MILLISECONDS);
     }
 }
\ No newline at end of file
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
index 19f29d6..2b7b0ad 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -334,11 +334,12 @@
             return "";
         }
         int l = s.length();
-        if(Constants.equalsInteger(l,7)){
-            return s.substring(0,3)+"**"+s.substring(l-2,l);
-        }
-        if(l <= 8){
-            return s.substring(0,3)+"***"+s.substring(l-2,l);
+        if(l >= 7){
+            String tt = "";
+            for (int i = 0; i < l-6; i++) {
+                tt = tt+"*";
+            }
+            return s.substring(0,2)+tt+s.substring(l-4,l);
         }
         return s;
     }
@@ -417,6 +418,7 @@
          int selfTruck = 3;
          int outTruck = 4;
          int cityComTruck = 5;
+         int unknown = 6;
     }
 
 
@@ -676,14 +678,60 @@
     }
 
     public static void main(String[] args) {
-        getChinesePingyin("DDaa姹熻悕鐨勫瀵瑰");
+//        getChinesePingyin("DDaa姹熻悕鐨勫瀵瑰");
 //        System.out.println(DateUtil.getShortTime(new Date()));
 //        System.out.println( "2025-01-14 10:50:56".substring(0,10));
 //        System.out.println(Constants.checkCarNo("鐨朅A10991"));
 //        System.out.println(Constants.getVehiclePlateNo("婀楤140D17").getDescription());
 //        System.out.println(Constants.getVehiclePlateNo("瀹緼P0637").getDescription());
 
-        
+        System.out.println("<script> SELECT \n" +
+                "t1.REALNAME `REALNAME`,\n" +
+                "MAX(t1.`01`) `januaryCount`,\n" +
+                "MAX(t1.`02`) `februaryCount`,\n" +
+                "MAX(t1.`03`) `marchCount`,\n" +
+                "MAX(t1.`04`) `aprilCount`,\n" +
+                "MAX(t1.`05`) `mayCount`,\n" +
+                "MAX(t1.`06`) `juneCount`,\n" +
+                "MAX(t1.`07`) `julyCount`,\n" +
+                "MAX(t1.`08`) `augustCount`,\n" +
+                "MAX(t1.`09`) `septemberCount`,\n" +
+                "MAX(t1.`10`) `octoberCount`,\n" +
+                "MAX(t1.`11`) `novemberCount`,\n" +
+                "MAX(t1.`12`) `decemberCount`\n" +
+                "FROM(\n" +
+                "SELECT \n" +
+                "t.id,\n" +
+                "t.REALNAME,\n" +
+                "CASE  WHEN t.yue='01' THEN t.c ELSE 0 END AS `01`,\n" +
+                "CASE  WHEN t.yue='02' THEN t.c ELSE 0 END AS `02`,\n" +
+                "CASE  WHEN t.yue='03' THEN t.c ELSE 0 END AS `03`,\n" +
+                "CASE  WHEN t.yue='04' THEN t.c ELSE 0 END AS `04`,\n" +
+                "CASE  WHEN t.yue='05' THEN t.c ELSE 0 END AS `05`,\n" +
+                "CASE  WHEN t.yue='06' THEN t.c ELSE 0 END AS `06`,\n" +
+                "CASE  WHEN t.yue='07' THEN t.c ELSE 0 END AS `07`,\n" +
+                "CASE  WHEN t.yue='08' THEN t.c ELSE 0 END AS `08`,\n" +
+                "CASE  WHEN t.yue='09' THEN t.c ELSE 0 END AS `09`,\n" +
+                "CASE  WHEN t.yue='10' THEN t.c ELSE 0 END AS `10`,\n" +
+                "CASE  WHEN t.yue='11' THEN t.c ELSE 0 END AS `11`,\n" +
+                "CASE  WHEN t.yue='12' THEN t.c ELSE 0 END AS `12`  \n" +
+                "FROM   \n" +
+                "(SELECT \n" +
+                "su.id,\n" +
+                "su.REALNAME,\n" +
+                "DATE_FORMAT(b.START_TIME,'%m') yue,\n" +
+                "SUM(" +
+                "CONVERT( (UNIX_TIMESTAMP(b.END_TIME) - UNIX_TIMESTAMP(b.START_TIME))/(60*60), DECIMAL(5,1))) c\n" +
+                "FROM \n" +
+                "meeting_user_rel ur\n" +
+                "LEFT JOIN `SYSTEM_USER` su ON ur.USER_ID = su.id \n" +
+                "LEFT JOIN meeting_book b ON ur.OBJ_ID = b.id \n" +
+                "WHERE DATE_FORMAT(b.START_TIME,'%Y') = #{yearNum} AND b.STATUS = 0" +
+                "<if test='userId != null'>"+
+                "and ur.USER_ID = #{userId}\n" +
+                "</if>"+
+                "GROUP BY su.id, DATE_FORMAT(b.START_TIME,'%m')) t) t1 GROUP BY t1.id" +
+                "</script>");
     }
 
 
@@ -1282,6 +1330,13 @@
         IMPORT_TRAIMETIME(14, "瀵煎叆鍩硅鏈夋晥","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愬鍏ュ煿璁湁鏁堛�戞搷浣�" ),
         BE_HEAD(15, "璁句负涓荤","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愯涓轰富绠°�戞搷浣�" ),
         NOT_HEAD(16, "鍙栨秷涓荤","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愬彇娑堜富绠°�戞搷浣�" ),
+        MEET_BOOK_DEL(17, "鍒犻櫎浼氳瀹ょ敵璇�","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愬垹闄や細璁鐢宠銆戞搷浣�,瀵硅薄淇℃伅${param3}" ),
+        VISIT_DEL(18, "鍒犻櫎璁垮鐢宠","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愬垹闄よ瀹㈢敵璇枫��,瀵硅薄淇℃伅锛�${param3}" ),
+        VISIT_CAR_DEL(19, "鍒犻櫎璁垮鎶ュ","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愬垹闄よ瀹㈡姤澶囥��,瀵硅薄淇℃伅锛�${param3}" ),
+        PLATFROM_BOOK_DEL(20, "鍒犻櫎鏈堝彴棰勭害浠诲姟","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愬垹闄ゆ湀鍙伴绾︿换鍔°��,瀵硅薄淇℃伅锛�${param3}"  ),
+        CAR_BOOK_DEL(21, "鍒犻櫎鍏溅鐢宠","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愬垹闄ゅ叕杞︾敵璇枫��,瀵硅薄淇℃伅锛�${param3}"),
+        PLATFROM_JOB_DEL(22, "鍒犻櫎瀹夋嘲鐗╂祦浣滀笟浠诲姟","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愬垹闄ゅ畨娉扮墿娴佷綔涓氫换鍔°��,瀵硅薄淇℃伅锛�${param3}"  ),
+        HIDEN_DANGER_DEL(23, "鍒犻櫎闅愭偅闅忔墜鎷�","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愬垹闄ら殣鎮i殢鎵嬫媿銆�,瀵硅薄淇℃伅锛�${param3}"),
         ;
 
         // 鎴愬憳鍙橀噺
diff --git a/server/system_service/src/main/java/com/doumee/dao/business/dao/MemberMapper.java b/server/system_service/src/main/java/com/doumee/dao/business/dao/MemberMapper.java
index 6aaddf5..0ed41c3 100644
--- a/server/system_service/src/main/java/com/doumee/dao/business/dao/MemberMapper.java
+++ b/server/system_service/src/main/java/com/doumee/dao/business/dao/MemberMapper.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.business.dao;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.doumee.dao.business.model.Member;
 import com.github.yulichang.base.MPJBaseMapper;
 
diff --git a/server/system_service/src/main/java/com/doumee/dao/business/dao/UserActionMapper.java b/server/system_service/src/main/java/com/doumee/dao/business/dao/UserActionMapper.java
new file mode 100644
index 0000000..d83562a
--- /dev/null
+++ b/server/system_service/src/main/java/com/doumee/dao/business/dao/UserActionMapper.java
@@ -0,0 +1,13 @@
+package com.doumee.dao.business.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.UserAction;
+import com.github.yulichang.base.MPJBaseMapper;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2023/11/30 15:33
+ */
+public interface UserActionMapper extends MPJBaseMapper<UserAction> {
+
+}
diff --git a/server/system_service/src/main/java/com/doumee/dao/business/model/UserAction.java b/server/system_service/src/main/java/com/doumee/dao/business/model/UserAction.java
new file mode 100644
index 0000000..5888985
--- /dev/null
+++ b/server/system_service/src/main/java/com/doumee/dao/business/model/UserAction.java
@@ -0,0 +1,101 @@
+package com.doumee.dao.business.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.doumee.core.annotation.excel.ExcelColumn;
+import com.doumee.service.business.third.model.LoginUserModel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 浜哄憳淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @date 2023/11/30 15:33
+ */
+@Data
+@ApiModel("浜哄憳淇℃伅琛�")
+@TableName("`user_action`")
+public class UserAction extends LoginUserModel {
+
+        @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="鍒涘缓鏃堕棿")
+        private Date createDate;
+
+        @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+        @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+        private Integer editor;
+
+        @ApiModelProperty(value = "鏇存柊鏃堕棿")
+        @ExcelColumn(name="鏇存柊鏃堕棿")
+        private Date editDate;
+
+        @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+        @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+        private Integer isdeleted;
+
+        @ApiModelProperty(value = "澶囨敞")
+        @ExcelColumn(name="澶囨敞")
+        private String remark;
+        @ApiModelProperty(value = "淇敼璇︾粏鍐呭")
+        @ExcelColumn(name="淇敼璇︾粏鍐呭")
+        private String content;
+
+        @ApiModelProperty(value = "绫诲瀷 0瑙e喕 1鍐荤粨 2鎷夐粦 3鎭㈠ 4璁句负鎷滆浜� 5鍙栨秷鎷滆浜� 6璁句负楂樼骇瀹℃壒浜� 7鍙栨秷楂樼骇瀹℃壒浜� 8鎵嬪姩绂诲満 9鍒犻櫎浜哄憳 10鏇存柊浜哄憳", example = "1")
+        @ExcelColumn(name="绫诲瀷 0瑙e喕 1鍐荤粨 2鎷夐粦 3鎭㈠ 4璁句负鎷滆浜� 5鍙栨秷鎷滆浜� 6璁句负楂樼骇瀹℃壒浜� 7鍙栨秷楂樼骇瀹℃壒浜� 8鎵嬪姩绂诲満 9鍒犻櫎浜哄憳 10鏇存柊浜哄憳")
+        private Integer type;
+
+        @ApiModelProperty(value = "浜哄憳鎿嶄綔璁板綍鏃ュ織")
+        @ExcelColumn(name="浜哄憳鎿嶄綔璁板綍鏃ュ織")
+        private String memberId;
+
+        @ApiModelProperty(value = "鎿嶄綔鍓嶇姸鎬� 0瑙e喕 1鍐荤粨 2鎷夐粦 3鎭㈠ 4璁句负鎷滆浜� 5鍙栨秷鎷滆浜� 6璁句负楂樼骇瀹℃壒浜� 7鍙栨秷楂樼骇瀹℃壒浜� 8鎵嬪姩绂诲満 9鍒犻櫎", example = "1")
+        @ExcelColumn(name="鎿嶄綔鍓嶇姸鎬� 0瑙e喕 1鍐荤粨 2鎷夐粦 3鎭㈠ 4璁句负鎷滆浜� 5鍙栨秷鎷滆浜� 6璁句负楂樼骇瀹℃壒浜� 7鍙栨秷楂樼骇瀹℃壒浜� 8鎵嬪姩绂诲満 9鍒犻櫎")
+        private Integer beforeStatus;
+
+        @ApiModelProperty(value = "鎿嶄綔浜哄悕绉�", example = "1")
+        @TableField(exist = false)
+        private String createName;
+
+        @ApiModelProperty(value = "浜哄憳绫诲瀷锛�0鍔冲姟璁垮 1鏅�氳瀹�  2鍐呴儴浜哄憳", example = "1")
+        @TableField(exist = false)
+        private String memberType;
+
+        @ApiModelProperty(value = "鎿嶄綔瀵硅薄", example = "1")
+        @TableField(exist = false)
+        private String memberName;
+
+        @ApiModelProperty(value = "鍏徃鍚嶇О", example = "1")
+        @TableField(exist = false)
+        private String companyName;
+
+        @ApiModelProperty(value = "璁垮鍏徃鍚嶇О", example = "1")
+        @TableField(exist = false)
+        private String visitCompanyName;
+        @ApiModelProperty(value = "绫诲瀷鍚嶇О", example = "1")
+        @TableField(exist = false)
+        private String typeName;
+
+        @ApiModelProperty(value = "鎵嬫満鍙�", example = "1")
+        @TableField(exist = false)
+        private String mobile;
+        @ApiModelProperty(value = "鏌ヨ瀵硅薄绫诲瀷  0浜哄憳鎿嶄綔 1鍏朵粬涓氬姟鎿嶄綔", example = "1")
+        @TableField(exist = false)
+        private Integer objType;
+
+}
diff --git a/server/system_service/src/main/java/com/doumee/service/business/third/model/TMSContants.java b/server/system_service/src/main/java/com/doumee/service/business/third/model/TMSContants.java
index a764f54..171657c 100644
--- a/server/system_service/src/main/java/com/doumee/service/business/third/model/TMSContants.java
+++ b/server/system_service/src/main/java/com/doumee/service/business/third/model/TMSContants.java
@@ -8,12 +8,8 @@
 public class TMSContants {
 
     public interface InterfacePath {
-        String[] getSevenArrivalStatus = new String[]{"/tms/zhyt/getSevenArrivalStatus",  "銆怲MS銆戣繎7鏃ュ埌璐ф儏鍐�"};//TMS杩�7鏃ュ埌璐ф儏鍐垫帴鍙e湴鍧�
-        String[] getCurrentTransportationTask = new String[]{ "銆怲MS銆�/zhyt/getCurrentTransportationTask",  "銆怲MS銆戝綋鍓嶈繍杈撲换鍔�"};//TMS褰撳墠杩愯緭浠诲姟鎺ュ彛鍦板潃
         String[] getDistributionOfDeliveryLocations = new String[]{"/tms/zhyt/getDistributionOfDeliveryLocations",  "銆怲MS銆戝叏鍥藉埌璐у湴鍒嗗竷鏌ヨ鏌ヨ"};//TMS鍏ㄥ浗鍒拌揣鍦板垎甯冩煡璇㈡煡璇㈡帴鍙e湴鍧�
         String[] getRealTimeInventory = new String[]{"/tms/zhyt/getRealTimeInventory",  "銆怲MS銆戝疄鏃跺簱瀛樻煡璇�"};//TMS瀹炴椂搴撳瓨鏌ヨ鎺ュ彛鍦板潃
-        String[] getInboundOutbound = new String[]{"/tms/zhyt/getInboundOutbound",  "銆怲MS銆戝嚭鍏ュ簱璁板綍鏌ヨ"};//TMS鍑哄叆搴撹褰曟煡璇㈡帴鍙e湴鍧�
-        String[] getIntransitDetails = new String[]{"/tms/zhyt/getIntransitDetails",  "銆怲MS銆戝湪閫旀槑缁嗗垪琛�"};//TMS鍦ㄩ�旀槑缁嗗垪琛ㄦ帴鍙e湴鍧�
         String[] getOrderList = new String[]{"/tms/zhyt/getOrderList",  "銆怲MS銆戝悎鍚屽垪琛ㄦ煡璇�"};//TMS鍚堝悓鍒楄〃鏌ヨ鎺ュ彛鍦板潃
         String[] getTotalAndReportVehicleQty = new String[]{"/tms/zhyt/getTotalAndReportVehicleQty",  "銆怲MS銆戞煡璇�5涓巶鐨勮繍鍔涜祫婧愬埄鐢ㄦ儏鍐点��"};//鏌ヨ5涓巶鐨勮繍鍔涜祫婧愬埄鐢ㄦ儏鍐点��
         String[] getElecByContractNumberList = new String[]{"/tms/zhyt/getElecByContractNumberList",  "銆怲MS銆戝悎鍚屼笂閿佺姸鎬�"};//TMS鍚堝悓涓婇攣鐘舵�佹帴鍙e湴鍧�
@@ -29,6 +25,10 @@
         String[] driverStart = new String[]{"/tms/zhyt/driverStartAndArrival",  "銆怲MS銆戝徃鏈哄惎杩愩��"};//3.17鍙告満鍚繍
         String[] driverArrival = new String[]{"/tms/zhyt/driverStartAndArrival",  "銆怲MS銆戝徃鏈哄埌璐с��"};//3.18鍙告満鍒拌揣
         String[] getEmployeeList = new String[]{"/tms/zhyt/getEmployeeList",  "銆怲MS銆戣惀閿�浜哄憳淇℃伅瀹炴椂鏌ヨ銆�"};//3.19钀ラ攢浜哄憳淇℃伅瀹炴椂鏌ヨ
+        String[] getInboundOutbound = new String[]{"/tms/zhyt/getInboundOutbound",  "銆怲MS銆戝嚭鍏ュ簱璁板綍鏌ヨ"};//TMS鍑哄叆搴撹褰曟煡璇㈡帴鍙e湴鍧�
+        String[] getIntransitDetails = new String[]{"/tms/zhyt/getIntransitDetails",  "銆怲MS銆戝湪閫旀槑缁嗗垪琛�"};//TMS鍦ㄩ�旀槑缁嗗垪琛ㄦ帴鍙e湴鍧�
+        String[] getSevenArrivalStatus = new String[]{"/tms/zhyt/getSevenArrivalStatus",  "銆怲MS銆戣繎7鏃ュ埌璐ф儏鍐�"};//TMS杩�7鏃ュ埌璐ф儏鍐垫帴鍙e湴鍧�
+        String[] getCurrentTransportationTask = new String[]{ "銆怲MS銆�/zhyt/getCurrentTransportationTask",  "銆怲MS銆戝綋鍓嶈繍杈撲换鍔�"};//TMS褰撳墠杩愯緭浠诲姟鎺ュ彛鍦板潃
     }
 
     public  enum TopStatusLevel {
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/UserActionController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/UserActionController.java
index d39654a..cbddecc 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/UserActionController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/UserActionController.java
@@ -2,10 +2,11 @@
 
 import com.doumee.core.annotation.excel.ExcelExporter;
 import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.UserAction;
 import com.doumee.service.business.third.model.ApiResponse;
 import com.doumee.service.business.third.model.PageWrap;
 import com.doumee.service.business.third.model.PageData;
-import com.doumee.dao.business.model.UserAction;
 import com.doumee.service.business.UserActionService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CarUseBookCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CarUseBookCloudController.java
index df7abf9..9f271a0 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CarUseBookCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CarUseBookCloudController.java
@@ -53,7 +53,7 @@
     @GetMapping("/delete/{id}")
     @CloudRequiredPermission("business:carusebook:delete")
     public ApiResponse deleteById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
-        carUseBookService.deleteById(id);
+        carUseBookService.deleteById(id,this.getLoginUser(token));
         return ApiResponse.success(null);
     }
 
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformBooksCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformBooksCloudController.java
index 6fe59b6..8ba5ef2 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformBooksCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformBooksCloudController.java
@@ -54,8 +54,8 @@
     @ApiOperation("鏍规嵁ID鍒犻櫎")
     @GetMapping("/delete/{id}")
     @CloudRequiredPermission("business:platformbooks:delete")
-    public ApiResponse deleteById(@PathVariable Integer id) {
-        platformBooksService.deleteById(id);
+    public ApiResponse deleteById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        platformBooksService.deleteById(id,this.getLoginUser(token));
         return ApiResponse.success(null);
     }
 
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java
index 3943389..c897310 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java
@@ -53,7 +53,7 @@
     @GetMapping("/delete/{id}")
     @CloudRequiredPermission("business:platformjob:delete")
     public ApiResponse deleteById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
-        platformJobService.delete(id);
+        platformJobService.deleteById(id,this.getLoginUser(token));
         return ApiResponse.success(null);
     }
 
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/UserActionCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/UserActionCloudController.java
index 51d366c..bca0c47 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/UserActionCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/UserActionCloudController.java
@@ -4,11 +4,12 @@
 import com.doumee.config.annotation.CloudRequiredPermission;
 import com.doumee.core.annotation.excel.ExcelExporter;
 import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.UserAction;
 import com.doumee.service.business.third.model.ApiResponse;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
 import com.doumee.core.utils.Constants;
-import com.doumee.dao.business.model.UserAction;
 import com.doumee.service.business.UserActionService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -35,7 +36,7 @@
     @ApiOperation("鏂板缓")
     @PostMapping("/create")
     @CloudRequiredPermission("business:useraction:create")
-    public ApiResponse create(@RequestBody UserAction userAction,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+    public ApiResponse create(@RequestBody UserAction userAction, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
         return ApiResponse.success(userActionService.create(userAction));
     }
 
@@ -63,7 +64,7 @@
     @ApiOperation("鏍规嵁ID淇敼")
     @PostMapping("/updateById")
     @CloudRequiredPermission("business:useraction:update")
-    public ApiResponse updateById(@RequestBody UserAction userAction,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+    public ApiResponse updateById(@RequestBody UserAction userAction, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
         userActionService.updateById(userAction);
         return ApiResponse.success(null);
     }
@@ -71,14 +72,14 @@
     @ApiOperation("鍒嗛〉鏌ヨ")
     @PostMapping("/page")
     @CloudRequiredPermission("business:useraction:query")
-    public ApiResponse<PageData<UserAction>> findPage (@RequestBody PageWrap<UserAction> pageWrap,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+    public ApiResponse<PageData<UserAction>> findPage (@RequestBody PageWrap<UserAction> pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
         return ApiResponse.success(userActionService.findPage(pageWrap));
     }
 
     @ApiOperation("瀵煎嚭Excel")
     @PostMapping("/exportExcel")
     @CloudRequiredPermission("business:useraction:exportExcel")
-    public void exportExcel (@RequestBody PageWrap<UserAction> pageWrap, HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+    public void exportExcel (@RequestBody PageWrap<UserAction> pageWrap, HttpServletResponse response, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
         ExcelExporter.build(UserAction.class).export(userActionService.findPage(pageWrap).getRecords(), "浜哄憳鎿嶄綔璁板綍鏃ュ織", response);
     }
 
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/VisitsCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/VisitsCloudController.java
index a635e08..af20c8f 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/VisitsCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/VisitsCloudController.java
@@ -51,7 +51,7 @@
     @GetMapping("/delete/{id}")
     @CloudRequiredPermission("business:visits:delete")
     public ApiResponse deleteById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
-        visitsService.deleteById(id);
+        visitsService.deleteById(id,this.getLoginUser(token));
         return ApiResponse.success(null);
     }
 
diff --git a/server/visits/dmvisit_admin/src/main/resources/application.yml b/server/visits/dmvisit_admin/src/main/resources/application.yml
index 8e1a715..afdf5a4 100644
--- a/server/visits/dmvisit_admin/src/main/resources/application.yml
+++ b/server/visits/dmvisit_admin/src/main/resources/application.yml
@@ -74,6 +74,7 @@
     enabled: true   #鏄惁寮�鍚疛WT鐧诲綍璁よ瘉鍔熻兘
     secret: fjkfaf;afa  # JWT绉侀挜锛岀敤浜庢牎楠孞WT浠ょ墝鐨勫悎娉曟��
     expiration: 1800000 #JWT浠ょ墝鐨勬湁鏁堟湡锛岀敤浜庢牎楠孞WT浠ょ墝鐨勫悎娉曟��
+#    expiration: 300000 #JWT浠ょ墝鐨勬湁鏁堟湡锛岀敤浜庢牎楠孞WT浠ょ墝鐨勫悎娉曟��
     header: JWTHeaderName #HTTP璇锋眰鐨凥eader鍚嶇О锛岃Header浣滀负鍙傛暟浼犻�扟WT浠ょ墝
     userParamName: username  #鐢ㄦ埛鐧诲綍璁よ瘉鐢ㄦ埛鍚嶅弬鏁板悕绉�
     pwdParamName: password  #鐢ㄦ埛鐧诲綍璁よ瘉瀵嗙爜鍙傛暟鍚嶇О
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/UserActionMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/UserActionMapper.java
deleted file mode 100644
index f5d61e0..0000000
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/UserActionMapper.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.doumee.dao.business;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.doumee.dao.business.model.UserAction;
-
-/**
- * @author 姹熻箘韫�
- * @date 2023/12/14 13:57
- */
-public interface UserActionMapper extends BaseMapper<UserAction> {
-
-}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/join/DeviceJoinMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/join/DeviceJoinMapper.java
index 73bbfd7..9e5b5c5 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/join/DeviceJoinMapper.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/join/DeviceJoinMapper.java
@@ -1,7 +1,6 @@
 package com.doumee.dao.business.join;
 
 import com.doumee.dao.business.model.Device;
-import com.doumee.dao.business.model.UserAction;
 import com.github.yulichang.base.mapper.MPJJoinMapper;
 
 public interface DeviceJoinMapper extends MPJJoinMapper<Device> {
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/join/UserActionJoinMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/join/UserActionJoinMapper.java
index c166202..24a255f 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/join/UserActionJoinMapper.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/join/UserActionJoinMapper.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.business.join;
 
+import com.doumee.dao.business.model.Member;
 import com.doumee.dao.business.model.UserAction;
 import com.github.yulichang.base.mapper.MPJJoinMapper;
 
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDangerParam.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDangerParam.java
index 114e5ce..2bc7807 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDangerParam.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDangerParam.java
@@ -88,7 +88,7 @@
 //    @ExcelColumn(name="鎻愭姤浜虹紪鐮侊紙鍏宠仈member锛�")
     private Integer companyId;
 
-    @ApiModelProperty(value = "璐d换閮ㄩ棬缂栫爜", example = "1")
+    @ApiModelProperty(value = "璐d换閮ㄩ棬鍚嶇О", example = "1")
 //    @ExcelColumn(name="鎻愭姤浜虹紪鐮侊紙鍏宠仈member锛�")
     @TableField(exist = false)
     private String companyName;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.java
index 07466d5..6ef1553 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.java
@@ -54,25 +54,25 @@
     private String imgurl;
 
     @ApiModelProperty(value = "绫诲瀷 0鍔冲姟璁垮 1鏅�氳瀹� 2鍐呴儴鍛樺伐 3杞﹁締淇℃伅")
-    @ExcelColumn(name="浜哄憳绫诲瀷" ,index = 2, valueMapping="0=鍔冲姟璁垮;1=鏅�氳瀹�;2=鍐呴儴鍛樺伐;3=杞﹁締淇℃伅;",width = 8)
+    @ExcelColumn(name="浜哄憳绫诲瀷" ,index = 5, valueMapping="0=鍔冲姟璁垮;1=鏅�氳瀹�;2=鍐呴儴鍛樺伐;3=杞﹁締淇℃伅;",width = 8)
     private Integer type;
 
     @ApiModelProperty(value = "璁垮鍚嶇О")
-    @ExcelColumn(name="濮撳悕" ,index = 3,width = 6)
+    @ExcelColumn(name="濮撳悕" ,index = 1,width = 6)
     private String name;
 
     @ApiModelProperty(value = "璁垮骞撮緞")
     private Date birthday;
 
     @ApiModelProperty(value = "鎵嬫満鍙�")
-    @ExcelColumn(name="鎵嬫満鍙�" ,index = 4,width = 12)
+    @ExcelColumn(name="鎵嬫満鍙�" ,index = 2,width = 12)
     private String phone;
 
     @ApiModelProperty(value = "韬唤璇佸彿锛圡D4鍔犲瘑锛�")
     private String idcardNo;
 
     @ApiModelProperty(value = "璇佷欢鏄剧ず淇℃伅")
-    @ExcelColumn(name="韬唤璇佸彿" ,index = 5,width = 12)
+    @ExcelColumn(name="韬唤璇佸彿" ,index = 3,width = 12)
     private String idcardDecode;
 
     @ApiModelProperty(value = "宸ュ彿")
@@ -84,7 +84,7 @@
     @ApiModelProperty(value = "娴峰悍闂ㄧ鍚嶇О")
     @ExcelColumn(name="杩涘巶闂ㄧ" ,index = 6,width = 12)
     private String deviceName;
-    @ApiModelProperty(value = "杞﹁締绫诲瀷 0鍐呴儴杞﹁締 1鐩稿叧鏂硅溅杈� 2璁垮杞﹁締 3鍐呰繍鐗╂祦杞� 4澶栧崗杞﹁締 5甯傚叕鍙稿嵏璐ц溅 ")
+    @ApiModelProperty(value = "杞﹁締绫诲瀷 0鍐呴儴杞﹁締 1鐩稿叧鏂硅溅杈� 2璁垮杞﹁締 3鍐呰繍鐗╂祦杞� 4澶栧崗杞﹁締 5甯傚叕鍙稿嵏璐ц溅 6鏈櫥璁拌溅杈� ")
     private Integer carType  ;
     @ApiModelProperty(value = "娴峰悍闂ㄧ缂栫爜")
     private String deviceIndex;
@@ -138,7 +138,7 @@
     private String faceImgFull;
 
     @ApiModelProperty(value = "瀵煎嚭鍏徃鍚嶇О",hidden = true)
-    @ExcelColumn(name="鍏徃/缁勭粐" ,index = 1,width = 12)
+    @ExcelColumn(name="鍏徃/缁勭粐" ,index = 4,width = 12)
     @TableField(exist = false)
     public String excelCompanyName;
 
@@ -146,7 +146,6 @@
     @ApiModelProperty(value = "浜烘暟")
     @TableField(exist = false)
     private Integer num;
-
 
     @ApiModelProperty(value = "鏌ヨ浜哄憳绫诲瀷")
     @TableField(exist = false)
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/UserAction.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/UserAction.java
deleted file mode 100644
index e5d5b81..0000000
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/UserAction.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package com.doumee.dao.business.model;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.doumee.core.annotation.excel.ExcelColumn;
-import com.doumee.service.business.third.model.LoginUserModel;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-import java.util.Date;
-
-/**
- * 浜哄憳鎿嶄綔璁板綍鏃ュ織
- * @author 姹熻箘韫�
- * @date 2023/12/14 13:57
- */
-@Data
-@ApiModel("浜哄憳鎿嶄綔璁板綍鏃ュ織")
-@TableName("`user_action`")
-public class UserAction  extends LoginUserModel {
-
-    @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="鍒涘缓鏃堕棿")
-    private Date createDate;
-
-    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
-    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
-    private Integer editor;
-
-    @ApiModelProperty(value = "鏇存柊鏃堕棿")
-    @ExcelColumn(name="鏇存柊鏃堕棿")
-    private Date editDate;
-
-    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
-    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
-    private Integer isdeleted;
-
-    @ApiModelProperty(value = "澶囨敞")
-    @ExcelColumn(name="澶囨敞")
-    private String remark;
-    @ApiModelProperty(value = "淇敼璇︾粏鍐呭")
-    @ExcelColumn(name="淇敼璇︾粏鍐呭")
-    private String content;
-
-    @ApiModelProperty(value = "绫诲瀷 0瑙e喕 1鍐荤粨 2鎷夐粦 3鎭㈠ 4璁句负鎷滆浜� 5鍙栨秷鎷滆浜� 6璁句负楂樼骇瀹℃壒浜� 7鍙栨秷楂樼骇瀹℃壒浜� 8鎵嬪姩绂诲満 9鍒犻櫎 10鏇存柊", example = "1")
-    @ExcelColumn(name="绫诲瀷 0瑙e喕 1鍐荤粨 2鎷夐粦 3鎭㈠ 4璁句负鎷滆浜� 5鍙栨秷鎷滆浜� 6璁句负楂樼骇瀹℃壒浜� 7鍙栨秷楂樼骇瀹℃壒浜� 8鎵嬪姩绂诲満 9鍒犻櫎 10鏇存柊")
-    private Integer type;
-
-    @ApiModelProperty(value = "浜哄憳鎿嶄綔璁板綍鏃ュ織")
-    @ExcelColumn(name="浜哄憳鎿嶄綔璁板綍鏃ュ織")
-    private String memberId;
-
-    @ApiModelProperty(value = "鎿嶄綔鍓嶇姸鎬� 0瑙e喕 1鍐荤粨 2鎷夐粦 3鎭㈠ 4璁句负鎷滆浜� 5鍙栨秷鎷滆浜� 6璁句负楂樼骇瀹℃壒浜� 7鍙栨秷楂樼骇瀹℃壒浜� 8鎵嬪姩绂诲満 9鍒犻櫎", example = "1")
-    @ExcelColumn(name="鎿嶄綔鍓嶇姸鎬� 0瑙e喕 1鍐荤粨 2鎷夐粦 3鎭㈠ 4璁句负鎷滆浜� 5鍙栨秷鎷滆浜� 6璁句负楂樼骇瀹℃壒浜� 7鍙栨秷楂樼骇瀹℃壒浜� 8鎵嬪姩绂诲満 9鍒犻櫎")
-    private Integer beforeStatus;
-
-    @ApiModelProperty(value = "鎿嶄綔浜哄悕绉�", example = "1")
-    @TableField(exist = false)
-    private String createName;
-
-    @ApiModelProperty(value = "浜哄憳绫诲瀷锛�0鍔冲姟璁垮 1鏅�氳瀹�  2鍐呴儴浜哄憳", example = "1")
-    @TableField(exist = false)
-    private String memberType;
-
-    @ApiModelProperty(value = "鎿嶄綔瀵硅薄", example = "1")
-    @TableField(exist = false)
-    private String memberName;
-
-    @ApiModelProperty(value = "鍏徃鍚嶇О", example = "1")
-    @TableField(exist = false)
-    private String companyName;
-
-    @ApiModelProperty(value = "璁垮鍏徃鍚嶇О", example = "1")
-    @TableField(exist = false)
-    private String visitCompanyName;
-    @ApiModelProperty(value = "绫诲瀷鍚嶇О", example = "1")
-    @TableField(exist = false)
-    private String typeName;
-
-    @ApiModelProperty(value = "鎵嬫満鍙�", example = "1")
-    @TableField(exist = false)
-    private String mobile;
-
-}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitEvent.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitEvent.java
index 86eb3b4..e1c9f8a 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitEvent.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitEvent.java
@@ -160,7 +160,9 @@
     @TableField(exist = false)
     @ExcelColumn(name="浜嬩欢绫诲瀷",index = 8,width = 16)
     private String eventTypeName;
-
+    @ApiModelProperty(value = "杩涘嚭绫诲瀷 1,#杩涘嚭绫诲瀷锛�1杩涘叆2鍑哄幓")
+    @ExcelColumn(name="杩涘嚭绫诲瀷",index = 12,width = 8,valueMapping = "0=杩�;1=鍑�")
+    private String   inOrOut;// 1,#杩涘嚭绫诲瀷锛�1杩涘叆2鍑哄幓
     @ApiModelProperty(value = "鎶撴媿鍥緐ri瀹屾暣")
     @TableField(exist = false)
     private String captureUrlFull;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/RetentionCarsVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/RetentionCarsVO.java
index ca80d7d..a52d58f 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/RetentionCarsVO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/RetentionCarsVO.java
@@ -32,8 +32,8 @@
     private String carNo;
     @ApiModelProperty(value = "璁垮ID(鍏宠仈member)")
     private Integer memberId;
-    @ApiModelProperty(value = "杞﹁締绫诲瀷 0鍐呴儴杞﹁締 1鐩稿叧鏂硅溅杈� 2璁垮杞﹁締 3鍐呰繍鐗╂祦杞� 4澶栧崗杞﹁締 5甯傚叕鍙稿嵏璐ц溅 ")
-    @ExcelColumn(name="杞﹁締绫诲瀷" ,index = 3, valueMapping="0=鍐呴儴杞﹁締;1=鐩稿叧鏂硅溅杈�;2=璁垮杞﹁締;3=鍐呰繍鐗╂祦杞�;4=澶栧崗杞﹁締;5=甯傚叕鍙稿嵏璐ц溅;",width = 8)
+    @ApiModelProperty(value = "杞﹁締绫诲瀷 0鍐呴儴杞﹁締 1鐩稿叧鏂硅溅杈� 2璁垮杞﹁締 3鍐呰繍鐗╂祦杞� 4澶栧崗杞﹁締 5甯傚叕鍙稿嵏璐ц溅;6鏈櫥璁拌溅杈� ")
+    @ExcelColumn(name="杞﹁締绫诲瀷" ,index = 3, valueMapping="0=鍐呴儴杞﹁締;1=鐩稿叧鏂硅溅杈�;2=璁垮杞﹁締;3=鍐呰繍鐗╂祦杞�;4=澶栧崗杞﹁締;5=甯傚叕鍙稿嵏璐ц溅;6=鏈櫥璁拌溅杈�",width = 8)
     private Integer carType  ;
     @ApiModelProperty(value = "鍏徃缁勭粐")
     @ExcelColumn(name="鍏徃缁勭粐" ,index = 4,width = 12)
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java
index 0e8f480..2332bf0 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java
@@ -1,5 +1,6 @@
 package com.doumee.service.business;
 
+import com.doumee.dao.business.model.Member;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
 import com.doumee.dao.business.dto.ApproveDTO;
@@ -110,7 +111,7 @@
 
     InternalHomeVO getHomeDataPC(NoticesDTO noticesDTO);
 
-    void createApproveFlow(Integer tempType,Integer businessId,Integer createMemberId);
+    void createApproveFlow(Integer tempType, Integer businessId, Integer createMemberId, Member applyMember);
 
     void createApproveForPlatfrom(Integer tempId,Integer businessId,Integer createMemberId);
 
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarUseBookService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarUseBookService.java
index 7690fec..bc5f3aa 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarUseBookService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarUseBookService.java
@@ -22,7 +22,7 @@
      * @return Integer
      */
     Integer create(CarUseBook carUseBook)  throws Exception ;
-
+    void deleteById(Integer id,LoginUserInfo user);
     /**
      * 涓婚敭鍒犻櫎
      *
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformBooksService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformBooksService.java
index 9d9d314..5a4c9e9 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformBooksService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformBooksService.java
@@ -32,7 +32,7 @@
      * @param id 涓婚敭
      */
     void deleteById(Integer id);
-
+    void deleteById(Integer id,LoginUserInfo user);
     /**
      * 鍒犻櫎
      *
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java
index 644d624..7bf7502 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java
@@ -36,6 +36,7 @@
      * @param id 涓婚敭
      */
     void deleteById(Integer id);
+    void deleteById(Integer id,LoginUserInfo user);
 
     void delete(Integer id);
     /**
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/UserActionService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/UserActionService.java
index e73dc6f..22a3c1c 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/UserActionService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/UserActionService.java
@@ -1,8 +1,10 @@
 package com.doumee.service.business;
 
+import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.UserAction;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
-import com.doumee.dao.business.model.UserAction;
+
 import java.util.List;
 
 /**
@@ -61,7 +63,7 @@
      * @param id 涓婚敭
      * @return UserAction
      */
-    UserAction findById(Integer id);
+   UserAction findById(Integer id);
 
     /**
      * 鏉′欢鏌ヨ鍗曟潯璁板綍
@@ -69,7 +71,7 @@
      * @param userAction 瀹炰綋瀵硅薄
      * @return UserAction
      */
-    UserAction findOne(UserAction userAction);
+   UserAction findOne(UserAction userAction);
 
     /**
      * 鏉′欢鏌ヨ
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java
index 9157115..3cfa501 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java
@@ -46,6 +46,7 @@
      * @param id 涓婚敭
      */
     void deleteById(Integer id);
+    void deleteById(Integer id,LoginUserInfo user);
 
     /**
      * 鍒犻櫎
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
index 804ad0d..0c6509f 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
@@ -364,10 +364,11 @@
      * @param tempType 妯℃澘绫诲瀷  0闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 1鏂藉伐浜哄憳璁垮鐢宠 2璁垮鎶ュ 3鍏溅甯傚唴鐢ㄨ溅 4鍏溅瀹ゅ鐢ㄨ溅 5甯傚叕鍙哥墿娴佽溅棰勭害
      * @param businessId 涓氬姟涓婚敭 鏍规嵁 tempType
      * @param createMemberId 鎻愪氦娴佺▼浜哄憳
+     * @param applyMember 鐢宠浜哄璞★紙濡傛灉涓虹┖锛岄粯璁や负鎻愪氦浜猴級
      */
     @Override
     @Transactional(rollbackFor = {Exception.class,BusinessException.class})
-    public void createApproveFlow(Integer tempType,Integer businessId,Integer createMemberId){
+    public void createApproveFlow(Integer tempType,Integer businessId,Integer createMemberId,Member applyMember){
         //鏌ヨ澶勭悊妯℃澘
         ApproveTempl approveTempl = approveTemplMapper.selectOne(new QueryWrapper<ApproveTempl>().lambda()
                 .eq(ApproveTempl::getType,tempType)
@@ -394,18 +395,15 @@
         }
         List<ApproveParam> approveCopyList = approveParamAllList.stream().filter(i->i.getType().equals(Constants.ONE)).collect(Collectors.toList());
 
-        Member createMember = memberMapper.selectById(createMemberId);
+        Member createMember =    memberMapper.selectById(createMemberId);
         if(Objects.isNull(createMember)|| Objects.isNull(createMember.getCompanyId())){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鐢宠浜虹粍缁囦俊鎭紓甯�");
         }
         List<Approve> approveList = new ArrayList<>();
-
-        this.organizeApproveData(approveTempl,approveParamList,createMember,businessId,approveList);
-
+        this.organizeApproveData(approveTempl,approveParamList,createMember,applyMember,businessId,approveList);
         if(CollectionUtils.isEmpty(approveList)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀹℃壒娴侀厤缃敊璇�");
         }
-
         //澶勭悊鎶勯�佹暟鎹�
         if(CollectionUtils.isNotEmpty(approveCopyList)){
             this.organizeApproveCopyData(approveTempl,approveCopyList,businessId,approveList);
@@ -417,7 +415,7 @@
 
     @Override
     @Transactional(rollbackFor = {Exception.class,BusinessException.class})
-    public void createApproveForPlatfrom(Integer tempId,Integer businessId,Integer createMemberId){
+    public void createApproveForPlatfrom(Integer tempId,Integer businessId,Integer createMemberId ){
         //鏌ヨ澶勭悊妯℃澘
         ApproveTempl approveTempl = approveTemplMapper.selectById(tempId);
         if(Objects.isNull(approveTempl)){
@@ -446,7 +444,7 @@
         }
         List<Approve> approveList = new ArrayList<>();
 
-        this.organizeApproveData(approveTempl,approveParamList,createMember,businessId,approveList);
+        this.organizeApproveData(approveTempl,approveParamList,createMember,null,businessId,approveList);
 
         if(CollectionUtils.isEmpty(approveList)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀹℃壒娴侀厤缃敊璇�");
@@ -468,15 +466,18 @@
      * @param businessId
      * @param approveList
      */
-    public void organizeApproveData(ApproveTempl approveTempl,List<ApproveParam> approveParamList,Member createMember,Integer businessId,List<Approve> approveList){
+    public void organizeApproveData(ApproveTempl approveTempl,List<ApproveParam> approveParamList,Member createMember,Member applyMember,Integer businessId,List<Approve> approveList){
 
+        if(applyMember ==null){
+            applyMember = createMember;
+        }
         //鍒涘缓榛樿浜轰俊鎭�
         Approve createUserApprove = new Approve();
         createUserApprove.setRemark("鍙戣捣鐢宠");
         createUserApprove.setCreateDate(new Date());
         createUserApprove.setIsdeleted(Constants.ZERO);
         createUserApprove.setTemplatId(approveTempl.getId());
-        createUserApprove.setChekorId(createMember.getId());
+        createUserApprove.setChekorId(applyMember.getId());
         createUserApprove.setCheckDate(createUserApprove.getCreateDate());
         createUserApprove.setStatus(Constants.approveStatus.pass);
         createUserApprove.setTitle("鍙戣捣鐢宠");
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarEventServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarEventServiceImpl.java
index ed0fc43..ddb1602 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarEventServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarEventServiceImpl.java
@@ -335,7 +335,7 @@
                 CarEvent::getPlateNos,
                 pageWrap.getModel().getPlateNos())
 
-                .and(StringUtils.isNotBlank(pageWrap.getModel().getKeyWords()),i->i.like(Member::getPhone,pageWrap.getModel().getKeyWords()).or().like(Member::getPhone,
+                .and(StringUtils.isNotBlank(pageWrap.getModel().getKeyWords()),i->i.like(Member::getName,pageWrap.getModel().getKeyWords()).or().like(Member::getPhone,
                         pageWrap.getModel().getKeyWords()))
                 .like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()),
                         Company::getName,
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java
index 19e4391..0712acb 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java
@@ -1,8 +1,10 @@
 package com.doumee.service.business.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
+import com.doumee.dao.business.dao.UserActionMapper;
 import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
@@ -56,6 +58,8 @@
     @Autowired
     private CarUseBookMapper carUseBookMapper;
 
+    @Autowired
+    private UserActionMapper userActionMapper;
     @Autowired
     private CarUseBookJoinMapper carUseBookJoinMapper;
 
@@ -148,7 +152,7 @@
         }
         carUseBookMapper.insert(carUseBook);
         //鐢ㄨ溅鐢宠 瀹℃壒璁板綍鍒涘缓
-        approveService.createApproveFlow(carUseBook.getType()==0?3:4,carUseBook.getId(),carUseBook.getMemberId());
+        approveService.createApproveFlow(carUseBook.getType()==0?3:4,carUseBook.getId(),carUseBook.getMemberId(),null);
         //鍙戦�佸井淇″叕浼楀彿閫氱煡
         //鍙戦�佸井淇″叕浼楀彿閫氱煡
         WxPlatNotice wxPlatNotice = new WxPlatNotice();
@@ -168,7 +172,32 @@
     public void deleteById(Integer id) {
         carUseBookMapper.deleteById(id);
     }
-
+    @Override
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+    public  void deleteById(Integer id,LoginUserInfo user) {
+        Date date = new Date();
+        MPJLambdaWrapper<CarUseBook>  queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper.selectAll(CarUseBook.class);
+        queryWrapper.select("t1.name",CarUseBook::getMemberName);
+        queryWrapper.leftJoin(Member.class,Member::getId,CarUseBook::getMemberId)
+                .eq(CarUseBook::getId,id)
+                .last("limit 1"  );
+        CarUseBook model = carUseBookMapper.selectJoinOne(CarUseBook.class,queryWrapper);
+        if(model==null ||Constants.equalsInteger(Constants.ONE,model.getIsdeleted())){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        carUseBookMapper.update(null,new UpdateWrapper<CarUseBook>().lambda()
+                .set(CarUseBook::getIsdeleted,Constants.ONE)
+                .set(CarUseBook::getEditDate,date)
+                .set(CarUseBook::getEditor,user.getId())
+                .eq(CarUseBook::getId,id));
+        String[] params = new String[3];
+        params[0] = user.getRealname();
+        params[1]=DateUtil.getPlusTime2(date);
+        params[2]=model.getCarCode()+"-銆愪箻杞︿汉锛�"+model.getMemberNames()+" 銆�-銆愰绾︿汉锛�"+model.getMemberName()+"銆�-銆愭椂闂达細"+DateUtil.getPlusTime2(model.getStartTime())+"-"+DateUtil.getPlusTime2(model.getEndTime())+"銆�";
+        //璁板綍鍒犻櫎鏃ュ織
+        UserActionServiceImpl.saveUserActionBiz(user,id,Constants.UserActionType.CAR_BOOK_DEL,userActionMapper,date,params, JSONObject.toJSONString(model));
+    }
     @Override
     public void delete(CarUseBook carUseBook) {
         UpdateWrapper<CarUseBook> deleteWrapper = new UpdateWrapper<>(carUseBook);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceEventServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceEventServiceImpl.java
index 664c09c..5d8c2df 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceEventServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceEventServiceImpl.java
@@ -373,32 +373,18 @@
                 .selectAs(Company::getType,DeviceEventDTO::getCompanyType);
 
         queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getKeyWords()),w->
-                        w.like(Member::getName,pageWrap.getModel().getKeyWords()).or().like(Member::getPhone,pageWrap.getModel().getKeyWords()))
-
-
-                .eq( pageWrap.getModel().getQueryUserType()!=null&&Constants.equalsInteger(pageWrap.getModel().getQueryUserType(),Constants.ONE),
+                        w.like(Member::getName,pageWrap.getModel().getKeyWords()).or().like(Member::getPhone,pageWrap.getModel().getKeyWords()));
+        queryWrapper.eq( pageWrap.getModel().getQueryUserType()!=null&&Constants.equalsInteger(pageWrap.getModel().getQueryUserType(),Constants.ONE),
                         Company::getType, Constants.ZERO)
-
                 .isNull( pageWrap.getModel().getQueryUserType()!=null&&Constants.equalsInteger(pageWrap.getModel().getQueryUserType(),Constants.ZERO),
-                        Member::getCompanyId)
-
+                        Member::getId)
                 .eq( pageWrap.getModel().getQueryUserType()!=null&&Constants.equalsInteger(pageWrap.getModel().getQueryUserType(),Constants.TWO),
                         Company::getType, Constants.ONE)
-
-                .eq(Member::getIsdeleted,Constants.ZERO)
-
-                .eq(Objects.nonNull(pageWrap.getModel().getEventType()),
-                        DeviceEvent::getEventType,
-                        pageWrap.getModel().getEventType())
-                .like(Objects.nonNull(pageWrap.getModel().getCompanyName()),Company::getName,
-                        pageWrap.getModel().getCompanyName())
-                .ge(Objects.nonNull(pageWrap.getModel().getStartTime()),
-                        DeviceEvent::getCreateDate,
-                        pageWrap.getModel().getStartTime())
-                .le(Objects.nonNull(pageWrap.getModel().getEndTime()),
-                        DeviceEvent::getCreateDate,
-                        pageWrap.getModel().getEndTime())
-
+//                .eq(Member::getIsdeleted,Constants.ZERO)
+                .eq(Objects.nonNull(pageWrap.getModel().getEventType()),  DeviceEvent::getEventType, pageWrap.getModel().getEventType())
+                .like(Objects.nonNull(pageWrap.getModel().getCompanyName()),Company::getName, pageWrap.getModel().getCompanyName())
+                .ge(Objects.nonNull(pageWrap.getModel().getStartTime()), DeviceEvent::getCreateDate, pageWrap.getModel().getStartTime())
+                .le(Objects.nonNull(pageWrap.getModel().getEndTime()),  DeviceEvent::getCreateDate, pageWrap.getModel().getEndTime())
                 .orderByDesc(DeviceEvent::getCreateDate);
         queryWrapper.orderByDesc(DeviceEvent::getHappenTime);
         IPage<DeviceEventDTO> deviceEventDTOIPage = deviceEventJoinMapper.selectJoinPage(page, DeviceEventDTO.class, queryWrapper);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
index 5d6d27b..38577a8 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
@@ -8,6 +8,7 @@
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
+import com.doumee.dao.business.dao.UserActionMapper;
 import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
@@ -34,7 +35,6 @@
 import com.doumee.service.business.third.EmayService;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import org.apache.commons.lang3.StringUtils;
-import org.checkerframework.checker.units.qual.C;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -71,6 +71,8 @@
 
     @Autowired
     private HiddenDangerLogMapper hiddenDangerLogMapper;
+    @Autowired
+    private UserActionMapper userActionMapper;
 
 
     @Autowired
@@ -255,20 +257,21 @@
         if(Objects.isNull(model)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌闅愭偅鏁版嵁");
         }
-        if (!Constants.equalsInteger(model.getStatus(),Constants.ZERO)) {
+       /* if (!Constants.equalsInteger(model.getStatus(),Constants.ZERO)) {
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏁版嵁鐘舵�佸凡娴佽浆,璇峰埛鏂版煡鐪�!");
-        }
+        }*/
         HiddenDanger hiddenDanger  = new HiddenDanger();
         hiddenDanger.setIsdeleted(Constants.ONE);
         hiddenDanger.setId(id);
         hiddenDanger.setEditor(user.getId());
+        Date date =new Date();
 
-        hiddenDanger.setEditDate(new Date());
+        hiddenDanger.setEditDate(date);
         hiddenDangerMapper.updateById(hiddenDanger);
         //瀛樺偍 鎿嶄綔鏃ュ織
         HiddenDangerLog hiddenDangerLog = new HiddenDangerLog();
         hiddenDangerLog.setIsdeleted(Constants.ZERO);
-        hiddenDangerLog.setCreateDate(new Date());
+        hiddenDangerLog.setCreateDate(date);
         hiddenDangerLog.setCreator(hiddenDanger.getEditor());
         hiddenDangerLog.setEditDate(hiddenDangerLog.getCreateDate());
         hiddenDangerLog.setEditor(hiddenDanger.getCreator());
@@ -276,6 +279,13 @@
         hiddenDangerLog.setHiddenDangerId(hiddenDanger.getId());
         hiddenDangerLog.setObjType(Constants.FIVE);
         hiddenDangerLogMapper.insert(hiddenDangerLog);
+
+        String[] params = new String[3];
+        params[0] = user.getRealname();
+        params[1]=DateUtil.getPlusTime2(date);
+        params[2]=model.getAreaName()+"-銆�"+model.getContent()+"銆�";
+        //璁板綍鍒犻櫎鏃ュ織
+        UserActionServiceImpl.saveUserActionBiz(user,id,Constants.UserActionType.HIDEN_DANGER_DEL,userActionMapper,date,params,JSONObject.toJSONString(model));
     }
 
     @Override
@@ -403,6 +413,7 @@
         IPage<HiddenDanger> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
         MPJLambdaWrapper<HiddenDanger> queryWrapper = new MPJLambdaWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
+        pageWrap.getModel().setIsdeleted(Constants.ZERO);
         queryWrapper.selectAll(HiddenDanger.class)
                 .selectAs(HiddenDangerParam::getName,HiddenDanger::getCategoryName)
                 .select("t1.name", HiddenDanger::getMemberName)
@@ -505,12 +516,20 @@
                 .lambda()
                 .set(Notices::getReaded,Constants.ONE)
                 .set(Notices::getStatus,Constants.ONE)
+                .set(Notices::getInfo,hiddenDanger.getStatus().equals(Constants.ONE)?"宸叉暣鏀�":"宸查��鍥�")
                 .set(Notices::getParam2,hiddenDanger.getStatus())
                 .set(Notices::getParam4,hiddenDanger.getLoginUserInfo().getMemberId())
                 .eq(Notices::getObjId,hiddenDanger.getId())
                 .eq(Notices::getObjType,Constants.THREE)
-                .eq(Notices::getUserId,hiddenDanger.getLoginUserInfo().getMemberId())
-        );
+                .eq(Notices::getUserId,hiddenDanger.getLoginUserInfo().getMemberId()));
+        //鍙戣捣浜轰唬鍔炴爣棰樹慨鏀逛负澶勭悊缁撴灉
+        noticesJoinMapper.update(null,new UpdateWrapper<Notices>()
+                .lambda()
+                .set(Notices::getInfo,hiddenDanger.getStatus().equals(Constants.ONE)?"宸叉暣鏀�":"宸查��鍥�")
+                .set(Notices::getParam2,hiddenDanger.getStatus())
+                .eq(Notices::getObjId,hiddenDanger.getId())
+                .eq(Notices::getObjType,Constants.THREE)
+                .eq(Notices::getParam3,hiddenDanger.getMemberId().toString()) );
 
         SystemUser memberUser = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda()
                 .eq(SystemUser::getDeleted, Constants.ZERO)
@@ -561,6 +580,7 @@
         if(!(hiddenDanger.getStatus().equals(Constants.ONE)||hiddenDanger.getStatus().equals(Constants.TWO))){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏁版嵁鐘舵�侀敊璇�,璇峰埛鏂版煡鐪嬶紒");
         }
+        hiddenDanger.setMemberId(model.getMemberId());//鍙戣捣浜�
     }
 
     private void dealFileBiz(HiddenDanger hiddenDanger) {//鏁存敼鍓嶆枃浠�
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index e9173a9..98d1e14 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -968,7 +968,7 @@
 
     public static void saveUserActionBiz(Member updateMember,LoginUserInfo user, Constants.UserActionType type,UserActionJoinMapper userActionMapper,String content) {
         updateMember.setEditDate(updateMember.getEditDate()==null?new Date():updateMember.getEditDate());
-        UserAction userAction=new UserAction();
+       UserAction userAction=new UserAction();
         userAction.setIsdeleted(Constants.ZERO);
         userAction.setCreateDate(updateMember.getEditDate());
         userAction.setCreator(updateMember.getEditor());
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java
index 913db0d..f32e69e 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java
@@ -1,8 +1,10 @@
 package com.doumee.service.business.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
+import com.doumee.dao.business.dao.UserActionMapper;
 import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
@@ -58,6 +60,10 @@
 
     @Autowired
     private PlatformBooksMapper platformBooksMapper;
+    @Autowired
+    private UserActionMapper userActionMapper;
+    @Autowired
+    private PlatformJobMapper platformJobMapper;
 
     @Autowired
     private NoticesJoinMapper noticesJoinMapper;
@@ -113,7 +119,32 @@
     public void deleteById(Integer id) {
         platformBooksMapper.deleteById(id);
     }
-
+    @Override
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+    public void deleteById(Integer id,LoginUserInfo user) {
+        PlatformBooks model =findById(id);
+        if(model ==null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
+            throw  new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        Date date =new Date();
+        platformBooksMapper.update(null,new UpdateWrapper<PlatformBooks>().lambda()
+                .set(PlatformBooks::getIsdeleted,Constants.ONE)
+                .set(PlatformBooks::getEditDate,date)
+                .set(PlatformBooks::getEditor,user.getId())
+                .eq(PlatformBooks::getId,id));
+        platformJobMapper.update(null,new UpdateWrapper<PlatformJob>().lambda()
+                .set(PlatformJob::getIsdeleted,Constants.ONE)
+                .set(PlatformJob::getEditDate,new Date())
+                .set(PlatformJob::getEditor,user.getId())
+                .eq(PlatformJob::getBookId,id)
+                .eq(PlatformJob::getIsdeleted,Constants.ZERO));
+        String[] params = new String[3];
+        params[0] = user.getRealname();
+        params[1]=DateUtil.getPlusTime2(date);
+        params[2]=model.getContractNum()+"-銆愬徃鏈猴細"+model.getDriverName()+" "+model.getDriverPhone()+"銆�-銆愯溅鐗屽ソ锛� "+model.getPlateNum()+"銆�";
+        //璁板綍鍒犻櫎鏃ュ織
+        UserActionServiceImpl.saveUserActionBiz(user,id,Constants.UserActionType.PLATFROM_BOOK_DEL,userActionMapper,date,params, JSONObject.toJSONString(model));
+    }
     @Override
     public void delete(PlatformBooks platformBooks) {
         UpdateWrapper<PlatformBooks> deleteWrapper = new UpdateWrapper<>(platformBooks);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
index f49d098..eb84711 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
@@ -10,7 +10,7 @@
 import com.doumee.core.haikang.model.param.request.ParkReservationDelRequest;
 import com.doumee.core.haikang.model.param.respose.ParkReservationAddResponse;
 import com.doumee.core.haikang.service.HKService;
-import com.doumee.service.business.third.WmsService;
+import com.doumee.dao.business.dao.UserActionMapper;
 import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
@@ -75,6 +75,8 @@
 
     @Autowired
     private PlatformJobMapper platformJobMapper;
+    @Autowired
+    private UserActionMapper userActionMapper;
     @Autowired
     private TmsService tmsService;
 
@@ -147,6 +149,30 @@
 
 
     @Override
+    @Transactional(rollbackFor = {BusinessException.class})
+    public  void deleteById(Integer id,LoginUserInfo user) {
+        Date date = new Date();
+        PlatformJob job = platformJobMapper.selectById(id);
+        if(job==null ||Constants.equalsInteger(Constants.ONE,job.getIsdeleted())){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        if(! Constants.equalsInteger(Constants.PlatformJobStatus.CANCEL.getKey(),job.getStatus())){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝鍙兘鍒犻櫎宸插彇娑堢殑浣滀笟浠诲姟锛�");
+        }
+        platformJobMapper.update(null,new UpdateWrapper<PlatformJob>().lambda()
+                        .set(PlatformJob::getIsdeleted,Constants.ONE)
+                        .set(PlatformJob::getEditDate,date)
+                        .set(PlatformJob::getEditor,user.getId())
+                        .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.CANCEL.getKey())
+                        .eq(PlatformJob::getId,id));
+        String[] params = new String[3];
+        params[0] = user.getRealname();
+        params[1]=DateUtil.getPlusTime2(date);
+        params[2]=job.getBillCode()+"-銆愬徃鏈猴細"+job.getDriverName()+" "+job.getDrivierPhone()+"銆�-銆愯溅鐗屽彿锛�"+job.getCarCodeFront()+"銆�";
+        //璁板綍鍒犻櫎鏃ュ織
+        UserActionServiceImpl.saveUserActionBiz(user,id,Constants.UserActionType.PLATFROM_JOB_DEL,userActionMapper,date,params,JSONObject.toJSONString(job));
+    }
+    @Override
     public void delete(Integer id) {
         platformJobMapper.update(null,new UpdateWrapper<PlatformJob>().lambda()
                         .set(PlatformJob::getIsdeleted,Constants.ONE)
@@ -205,6 +231,7 @@
         IPage<PlatformJob> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
         MPJLambdaWrapper<PlatformJob> queryWrapper = new MPJLambdaWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
+        pageWrap.getModel().setIsdeleted(Constants.ZERO);
         queryWrapper
                 .selectAll(PlatformJob.class)
                 .selectAs(Platform::getName,PlatformJob::getPlatformName)
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/UserActionServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/UserActionServiceImpl.java
index eb83a8d..2ec7e2e 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/UserActionServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/UserActionServiceImpl.java
@@ -1,14 +1,16 @@
 package com.doumee.service.business.impl;
 
+import com.doumee.dao.business.dao.MemberMapper;
+import com.doumee.dao.business.dao.UserActionMapper;
+import com.doumee.dao.business.model.UserAction;
+import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.Utils;
-import com.doumee.dao.business.UserActionMapper;
 import com.doumee.dao.business.join.UserActionJoinMapper;
 import com.doumee.dao.business.model.Company;
 import com.doumee.dao.business.model.Member;
-import com.doumee.dao.business.model.UserAction;
 import com.doumee.dao.system.model.SystemUser;
 import com.doumee.service.business.UserActionService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -21,6 +23,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Objects;
 
@@ -77,7 +80,24 @@
             this.updateById(userAction);
         }
     }
-
+    public static void saveUserActionBiz(LoginUserInfo user, Integer bizId, Constants.UserActionType type, UserActionMapper userActionMapper, Date date, String[] params, String modelInfo) {
+        String info = type.getInfo();
+        if(params!=null){
+            for (int i = 0; i < params.length; i++) {
+                info = info.replace("${param"+(i+1)+"}",params[i]);
+            }
+        }
+       UserAction userAction=new UserAction();
+        userAction.setIsdeleted(Constants.ZERO);
+        userAction.setCreateDate(date);
+        userAction.setCreator(user.getId());
+        userAction.setBeforeStatus(Constants.ZERO);
+        userAction.setType(type.getKey());
+        userAction.setContent(modelInfo);
+        userAction.setRemark(info);
+        userAction.setMemberId(bizId+"");
+        userActionMapper.insert(userAction);
+    }
     @Override
     public UserAction findById(Integer id) {
         return userActionMapper.selectById(id);
@@ -100,7 +120,7 @@
         IPage<UserAction> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
         MPJLambdaWrapper<UserAction> queryWrapper = new MPJLambdaWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
-        UserAction queryModel =  pageWrap.getModel();
+       UserAction queryModel =  pageWrap.getModel();
         queryWrapper.selectAll(UserAction.class)
                 .leftJoin(Member.class,Member::getId,UserAction::getMemberId)
                 .leftJoin(Company.class,Company::getId,Member::getCompanyId)
@@ -114,6 +134,7 @@
                 .like(StringUtils.isNotBlank(queryModel.getCreateName()),SystemUser::getRealname,queryModel.getCreateName())
                 .like(StringUtils.isNotBlank(queryModel.getMemberName()),Member::getName,queryModel.getMemberName())
                 .like(StringUtils.isNotBlank(queryModel.getMobile()),Member::getPhone,queryModel.getMobile())
+                .like(StringUtils.isNotBlank(queryModel.getRemark()),Member::getPhone,queryModel.getRemark())
                 .and(StringUtils.isNotBlank(queryModel.getCompanyName()),
                         p-> p.like(Company::getName, queryModel.getCompanyName())
                                 .or()
@@ -121,6 +142,10 @@
                 .eq(!Objects.isNull(queryModel.getMemberType()),Member::getType,queryModel.getMemberType())
                 .eq(!Objects.isNull(queryModel.getBeforeStatus()),UserAction::getBeforeStatus,queryModel.getBeforeStatus())
                 .eq(!Objects.isNull(queryModel.getType()),UserAction::getType,queryModel.getType())
+                .ge(queryModel.getObjType() !=null &&queryModel.getObjType() == Constants.ZERO,UserAction::getType,Constants.UserActionType.CANCEL_FREEZE.getKey())
+                .le(queryModel.getObjType() !=null &&queryModel.getObjType() == Constants.ZERO,UserAction::getType,Constants.UserActionType.NOT_HEAD.getKey())
+                .ge(queryModel.getObjType() !=null &&queryModel.getObjType() == Constants.ONE,UserAction::getType,Constants.UserActionType.MEET_BOOK_DEL.getKey())
+                .le(queryModel.getObjType() !=null &&queryModel.getObjType() == Constants.ONE,UserAction::getType,Constants.UserActionType.HIDEN_DANGER_DEL.getKey())
                 .orderByDesc(UserAction::getCreateDate)
         ;
         IPage<UserAction> result =  userActionJoinMapper.selectJoinPage(page,UserAction.class,queryWrapper);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitEventServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitEventServiceImpl.java
index 93d9a0d..d8f00e9 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitEventServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitEventServiceImpl.java
@@ -172,6 +172,9 @@
         if (pageWrap.getModel().getIdNo() != null) {
             queryWrapper.lambda().eq(VisitEvent::getIdNo, pageWrap.getModel().getIdNo());
         }
+        if (pageWrap.getModel().getInOrOut() != null) {
+            queryWrapper.lambda().eq(VisitEvent::getInOrOut, pageWrap.getModel().getInOrOut());
+        }
         if (pageWrap.getModel().getBeVisitedPersonName() != null) {
             queryWrapper.lambda().eq(VisitEvent::getBeVisitedPersonName, pageWrap.getModel().getBeVisitedPersonName());
         }
@@ -275,6 +278,9 @@
                 .eq(Objects.nonNull(pageWrap.getModel().getEventType()),
                         VisitEvent::getEventType,
                         pageWrap.getModel().getEventType())
+                .eq(Objects.nonNull(pageWrap.getModel().getInOrOut()),
+                        VisitEvent::getInOrOut,
+                        pageWrap.getModel().getInOrOut())
                 .ge(StringUtils.isNotBlank(pageWrap.getModel().getStartTime()),
                         VisitEvent::getCreateDate,
                         pageWrap.getModel().getStartTime())
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
index d4a6aa1..49118e4 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -18,6 +18,7 @@
 import com.doumee.core.haikang.model.param.request.VisitAppointmentRequest;
 import com.doumee.core.haikang.model.param.respose.VisitAppointmentResponse;
 import com.doumee.core.haikang.service.HKService;
+import com.doumee.dao.business.dao.*;
 import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
@@ -27,10 +28,6 @@
 import com.doumee.dao.admin.response.InterestedListVO;
 import com.doumee.dao.admin.response.PCWorkPlatformDataVO;
 import com.doumee.dao.business.*;
-import com.doumee.dao.business.dao.CompanyMapper;
-import com.doumee.dao.business.dao.MemberMapper;
-import com.doumee.dao.business.dao.SmsConfigMapper;
-import com.doumee.dao.business.dao.SmsEmailMapper;
 import com.doumee.dao.business.dto.ResetPasswordDTO;
 import com.doumee.dao.business.join.DeviceJoinMapper;
 import com.doumee.dao.business.join.VisitsJoinMapper;
@@ -83,6 +80,8 @@
     private RetentionMapper retentionMapper;
     @Autowired
     private VisitsJoinMapper visitsMapper;
+    @Autowired
+    private UserActionMapper userActionMapper;
     @Autowired
     private ApproveMapper approveMapper;
     @Autowired
@@ -287,7 +286,7 @@
         }else if(dataSyncConfig.getVisitorDataOrigin().equals(Constants.ZERO)){
             visits.setStatus(Constants.VisitStatus.waitCheck);
             visitsMapper.updateById(visits);
-            approveService.createApproveFlow(visits.getType(),visits.getId(),visits.getReceptMemberId());
+            approveService.createApproveFlow(visits.getType(),visits.getId(),visits.getReceptMemberId(),member);
         }else{
             throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝鍙戣捣鎷滆瀹℃壒鐢宠澶辫触锛�");
         }
@@ -344,7 +343,7 @@
             }
         }
 
-        approveService.createApproveFlow(visits.getType(),visits.getId(),visits.getReceptMemberId());
+        approveService.createApproveFlow(visits.getType(),visits.getId(),visits.getReceptMemberId(),null);
         return visits.getId();
     }
 
@@ -1137,6 +1136,32 @@
     public void deleteById(Integer id) {
         visitsMapper.deleteById(id);
     }
+    @Override
+    @Transactional(rollbackFor ={BusinessException.class,Exception.class})
+    public  void deleteById(Integer id,LoginUserInfo user) {
+        Visits model = visitsMapper.selectById(id);
+        if(model ==null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
+            throw  new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        Date date = new Date();
+        visitsMapper.update(null,new UpdateWrapper<Visits>().lambda()
+                .set(Visits::getIsdeleted,Constants.ONE)
+                .set(Visits::getEditDate,new Date())
+                .set(Visits::getEditor,user.getId())
+                .eq(Visits::getId,id));
+        String[] params = new String[3];
+        params[0] = user.getRealname();
+        params[1]=DateUtil.getPlusTime2(date);
+        if(Constants.equalsInteger(model.getType(),Constants.TWO)){
+            params[2]=model.getCarNos()+"-銆愬崟浣嶏細"+model.getCompanyName()+" "+model.getName()+" "+model.getPhone()+"銆�-銆愭椂闂达細"+DateUtil.getPlusTime2(model.getStarttime())+"-"+DateUtil.getPlusTime2(model.getEndtime())+"銆�";
+            //璁板綍鍒犻櫎璁垮鎶ュ鏃ュ織
+            UserActionServiceImpl.saveUserActionBiz(user,id,Constants.UserActionType.VISIT_DEL,userActionMapper,date,params, JSONObject.toJSONString(model));
+        }else{
+            params[2]=model.getCompanyName()+"-銆愯瀹細"+model.getName()+" "+model.getPhone()+"銆�-銆愭椂闂达細"+DateUtil.getPlusTime2(model.getStarttime())+"-"+DateUtil.getPlusTime2(model.getEndtime())+"銆�";
+            //璁板綍鍒犻櫎璁垮鐢宠鏃ュ織
+            UserActionServiceImpl.saveUserActionBiz(user,id,Constants.UserActionType.VISIT_DEL,userActionMapper,date,params, JSONObject.toJSONString(model));
+        }
+    }
 
     @Override
     public void delete(Visits visits) {
@@ -1180,6 +1205,7 @@
         queryWrapper.leftJoin("Member t3 on t.CREATE_MEMBER_ID=t3.id");
 
         queryWrapper.eq(Visits::getId,id);
+        queryWrapper.eq(Visits::getIsdeleted,Constants.ZERO);
         Visits result = visitsJoinMapper.selectJoinOne(Visits.class,queryWrapper);
 
         if(result!=null){
@@ -1190,6 +1216,8 @@
                 List<DeviceRole> deviceRoleList= deviceRoleMapper.selectList(deviceQuery);
                 result.setDeviceRoleList(deviceRoleList);
             }
+        }else{
+            throw  new BusinessException(ResponseStatus.DATA_EMPTY);
         }
 
         MPJLambdaWrapper<Visits> visitQuery = new MPJLambdaWrapper<>();
@@ -1373,7 +1401,7 @@
     @Override
     public VisitDetailVO getVisitDetail(Integer id,Integer memberId){
         Visits visits = visitsMapper.selectById(id);
-        if(Objects.isNull(visits)){
+        if(Objects.isNull(visits) || Constants.equalsInteger(visits.getIsdeleted(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
         Member member = memberMapper.selectById(visits.getReceptMemberId());
@@ -1501,7 +1529,7 @@
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
         if(!visits.getStatus().equals(Constants.VisitStatus.signin)){
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁垮璁板綍鐘舵�侀敊璇紝璇峰埛鏂伴噸璇�");
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浠呮敮鎸併�愭嫓璁夸腑銆戠姸鎬佽繘琛岃绂诲満鎿嶄綔锛岃鍒锋柊閲嶈瘯");
         }
         VisitAppointmentOutRequest request = new VisitAppointmentOutRequest();
         request.setOrderId(visits.getHkId());
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncNoticeServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncNoticeServiceImpl.java
index c487008..9b0200c 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncNoticeServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncNoticeServiceImpl.java
@@ -72,7 +72,7 @@
             while (hasNext){
                 //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹�
                 GetTodoListRequest param = new GetTodoListRequest();
-                param.setComId("dfe");
+//                param.setComId("dfe");//鎺ュ叏閮ㄧ殑浠e姙
                 param.setUserId(username);
                 param.setStatus(1);//鍙煡寰呭鐞嗙殑鏁版嵁
                 param.setPageNo(curPage);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
index a3da3de..f356c7c 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -460,7 +460,6 @@
      *  鏍规嵁璁垮鎺ㄩ�佽瀹㈣褰曠紪鐮侊紝澶勭悊璁垮璁板綍銆佸湪鍦轰汉鍛樼瓑淇℃伅
      */
     private void dealVisitDataByRequstIccm(EventVisitIccmInfoRequest request, List<Integer> delRetentionLis, List<Retention> retentionList,  InoutDayCount inoutDayCount) {
-
         EventVisitIccmDataRequest model = request.getData();
         EventVisitIccmInvoiceParamRequest data =  request.getData().getVisitorInvoices();
         MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>();
@@ -479,7 +478,7 @@
             updateVistis.setId(visits.getId());
             if (Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.VISIT_SIGN_ICCM_IN.getKey()) {
                 //濡傛灉鏄瀹㈢櫥璁帮紝褰曞叆浜哄憳鐨勫湪鍦烘暟鎹褰�
-//                retentionList.add(getRetentionModelByVisitRequest(visits, request.getHappenTime(),request.getSrcType()));
+                //retentionList.add(getRetentionModelByVisitRequest(visits, request.getHappenTime(),request.getSrcType()));
                 //鏉ヨ鏃堕棿
                 if(Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.xfSuccess)){
                     inoutDayCount.setSigninVisitorNum(Constants.formatIntegerNum(inoutDayCount.getSigninVisitorNum())+1);
@@ -502,6 +501,7 @@
                     updateVistis.setOutType(Constants.ZERO);
                     updateVistis.setOutInfo("璁垮姝e父绛剧");
                 }
+                delRetentionLis.add(visits.getMemberId());
             }else{
                 //濡傛灉浜哄憳淇℃伅瀛樺湪锛屽垏鏄瀹㈤�氳锛屽垯鍒犻櫎涔嬪墠鐨勬墍鏈夎繘鍦烘暟鎹紙鏃犺姝ゆ鎺ㄩ�佹槸杩涘巶杩樻槸鍑哄満鎺ㄩ�佷簨浠讹級
                 delRetentionLis.add(visits.getMemberId());
@@ -561,6 +561,15 @@
         event.setCreateDate(DateUtil.getISO8601DateByStr2(request.getHappenTime()));
         if(event.getCreateDate() == null){
             event.setCreateDate(new Date());
+        }
+        if (Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.VISIT_SIGN_ICCM_PASS.getKey())  {
+            //濡傛灉鏄瀹㈤�氳浜嬩欢,杩涘叆杩涘嚭浜嬩欢
+            if(request.getData()!=null&&request.getData().getParamValues()!=null &&
+                    StringUtils.equals(request.getData().getParamValues().getInOrOut(),"0")){
+                event.setInOrOut("0");//杩�
+            }else{
+                event.setInOrOut("1");//鍑�
+            }
         }
         event.setVisitorWorkUint(detail.getUnit());
         event.setVisitorId(detail.getVisitorId());
@@ -816,7 +825,7 @@
         event.setEventCmd(request.getData().getEventCmd());
         event.setCardNo(request.getData().getCardNo());
         event.setCarAttributeName(request.getData().getCarAttributeName());
-
+        event.setCarType(Constants.RetentionCarType.unknown);//榛樿鏈櫥璁拌溅杈�
         if(request.getData().getInResult()!=null && request.getData().getInResult().getRlsResult() !=null ){
             //鏀捐鏂瑰紡
             event.setReleaseWay(request.getData().getInResult().getRlsResult().getReleaseWay());
@@ -1076,13 +1085,24 @@
                         .selectAs(Platform::getName,PlatformJob::getPlatformName)
                         .selectAs(Platform::getLedContent,PlatformJob::getLedContent)
                         .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
-//                        .eq(StringUtils.equals(status.getStockStatus(),"front"),PlatformJob::getCarCodeFront,status.getPlateNo() )//鍓嶈溅鐗屽彿
 //                        .eq(!StringUtils.equals(status.getStockStatus(),"front"),PlatformJob::getCarCodeBack,status.getPlateNo() )//鍚庤溅鐗屽彿
+//                        .eq(StringUtils.equals(status.getStockStatus(),"front"),PlatformJob::getCarCodeFront,status.getPlateNo() )//鍓嶈溅鐗屽彿
                         .eq(PlatformJob::getIsdeleted,Constants.ZERO )
                         .eq(PlatformJob::getPlatformId,model.getPlatformId() )
                         .orderByDesc(PlatformJob::getCallDate)
                         .last("limit 1 "));
                 if(job == null){
+                    if(StringUtils.equals(status.getMotionStatus(),"enter")){
+                        //濡傛灉鏈堝彴褰撳墠娌′綔涓氾紝鐩存帴鎻愮ず杞﹁締鍋滈敊
+                        Platform platform = platformMapper.selectJoinOne(Platform.class, new MPJLambdaWrapper<Platform>()
+                                .selectAll(Platform.class)
+                                .eq(Platform::getIsdeleted,Constants.ZERO )
+                                .eq(PlatformJob::getId,model.getPlatformId() )
+                                .last("limit 1 "));
+                        if(platform!=null){
+                            dealCarsAndPlatformErrorBiz(platform,status);
+                        }
+                    }
                     continue;//濡傛灉浣滀笟涓虹┖锛岃烦杩囧鐞�
                 }
                 PlatformJob update = new PlatformJob();
@@ -1330,6 +1350,56 @@
             platformBroadcastLogMapper.insert(logList);
         }
     }
+    private void dealCarsAndPlatformErrorBiz( Platform model, EventPlatformCarsStatusInfoRequest status) {
+        //澶勭悊杞﹁締杩涘叆閿欒鏈堝彴涓氬姟閫昏緫
+        SavePlatformWarnEventDTO savePlatformWarnEventDTO = new SavePlatformWarnEventDTO();
+        savePlatformWarnEventDTO.setPlatformJobId(model.getId());
+        savePlatformWarnEventDTO.setPlatformId(model.getId());
+        savePlatformWarnEventDTO.setCarCode(status.getPlateNo());
+        savePlatformWarnEventDTO.setEventType(Constants.PlatformWarnEvent.STOP_ERROR.getKey());
+        platformWarnEventService.savePlatformWarnEvent(savePlatformWarnEventDTO);
+
+        int speed = 13;
+        try {
+            speed = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.LED_CONTENT_SPEED).getCode());
+        }catch (Exception e){
+
+        }
+        List<PlatformDevice> deviceList = platformDeviceMapper.selectList(new QueryWrapper<PlatformDevice>().lambda()
+                .eq(PlatformDevice::getPlatformId,model.getId())
+                .eq(PlatformDevice::getIsdeleted,Constants.ZERO));
+        if(deviceList ==null || deviceList.size() == 0){
+            return;
+        }
+        String content =Constants.PlatformLedContent.WRONG_IN.getInfo();
+        content = content.replace("${param2}",model.getName());
+        content = content.replace("${param}",status.getPlateNo());
+        List<String> broadcastList = new ArrayList<>();
+        List<String> ledList = new ArrayList<>();
+        String bNames = "";
+        List<PlatformBroadcastLog> logList = new ArrayList<>();
+        for(PlatformDevice device : deviceList){
+            if(StringUtils.isBlank(device.getHkId())){
+                continue;
+            }
+            if(Constants.equalsInteger(device.getType(),Constants.TWO)){
+                //濡傛灉鏄箍鎾偣
+                bNames += device.getName()+";";
+                broadcastList.add(device.getHkId());
+            }
+        }
+        if(broadcastList.size()>0){
+            PlatformJob job = new PlatformJob();
+            job.setId(-1);
+            job.setCarCodeFront(status.getPlateNo());
+            job.setPlatformId(model.getId());
+            PlatformBroadcastLog log = dealBroadcastBiz(job,broadcastList,bNames,Constants.PlatformBroadcastContent.WRONG_IN.getInfo().replace("${param}",status.getPlateNo()));
+            logList.add(log);
+        }
+        if(logList.size()>0){
+            platformBroadcastLogMapper.insert(logList);
+        }
+    }
 
     /**
      * 骞挎挱閫氱煡
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
index af95672..8f2f689 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
@@ -187,12 +187,13 @@
                     // 瀵圭浉搴旂姸鎬佷笅鐨勬暟鎹繘琛屻�愬凡绛剧銆戝鐞�
                     if(!Constants.equalsInteger(c.getStatus(),Constants.VisitStatus.signout)){
                         Visits update = new Visits();
-                        //宸插け鏁�
+                        //宸茬绂�
                         update.setStatus(Constants.VisitStatus.signout);
                         update.setEditDate(date);
                         update.setId(c.getId());
                         update.setInDate(DateUtil.getISO8601DateByStr2(data.getVisitStartTime()));
                         update.setOutDate(DateUtil.getISO8601DateByStr2(data.getVisitEndTime()));
+                        update.setOutInfo(model.getVisitorStatus().equals(5)?"杩囨湡鑷姩绛剧":"鏌ヨ宸茬绂�");
                         update.setRemark("宸茬绂�");
                         visitsMapper.updateById(update);
 
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 9a41523..4f503c5 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
@@ -1739,11 +1739,11 @@
                 .eq(Visits::getIsdeleted,Constants.ZERO)
                 .apply("to_days(create_date)=to_days(now())")
                 .in(Visits::getStatus,Constants.VisitStatus.pass,Constants.VisitStatus.xfSuccess )));//寰呰闂�
-        result.setWaitVisitNum(visitsJoinMapper.selectCount(new MPJLambdaWrapper<Visits>()
+        result.setRegisterVisitNum(visitsJoinMapper.selectCount(new MPJLambdaWrapper<Visits>()
                 .eq(Visits::getIsdeleted,Constants.ZERO)
                 .apply("to_days(create_date)=to_days(now())")
                 .in(Visits::getStatus,Constants.VisitStatus.signout,Constants.VisitStatus.signin )));//宸茬櫥璁�
-        result.setWaitVisitNum(visitsJoinMapper.selectCount(new MPJLambdaWrapper<Visits>()
+        result.setLevelNum(visitsJoinMapper.selectCount(new MPJLambdaWrapper<Visits>()
                 .eq(Visits::getIsdeleted,Constants.ZERO)
                 .apply("to_days(create_date)=to_days(now())")
                 .in(Visits::getStatus,Constants.VisitStatus.signout )));//宸茬绂�
@@ -1791,6 +1791,7 @@
                 result.getVisitRetentionDataList().add(t);
             });
         }
+        result.setRetentionNum(result.getVisitRetentionDataList().size());
         return result;
 
     }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java
index b166f8f..b5f6916 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java
@@ -373,8 +373,16 @@
     private void dealCarPlatformAndDriverInfo(PlatformJob job,int type) {
         //鏌ヨ杞﹁締鏄惁鑷湁杞︼紝浠ュ強jobNum琛ㄧず浣嗘眰浣滀笟鏁伴噺锛堥潪宸茬鍥殑浣滀笟鏁�)
         Cars car = carsMapper.selectOne(new QueryWrapper<Cars>()
-                .select("*,(select count(1) from platform_job b where b.plate_num='"+job.getCarCodeFront()+"' and b.status in("+
-                        Constants.PlatformJobStatus.LEAVED.getKey()+")) as jobNum")
+                .select("*,(select count(1) from platform_job b where b.plate_num='"+job.getCarCodeFront()+"' " +
+                        "and b.status in("+
+                        Constants.PlatformJobStatus.WART_SIGN_IN.getKey()+","+
+                        Constants.PlatformJobStatus.WART_SIGN_IN.getKey()+","+
+                        Constants.PlatformJobStatus.WAIT_CALL.getKey()+","+
+                        Constants.PlatformJobStatus.IN_WAIT.getKey()+","+
+                        Constants.PlatformJobStatus.CALLED.getKey()+","+
+                        Constants.PlatformJobStatus.TRANSFERING.getKey()+","+
+                        Constants.PlatformJobStatus.EXCEPTION.getKey()+","+
+                        Constants.PlatformJobStatus.WORKING.getKey()+")) as jobNum")
                 .lambda()
                 .eq(Cars::getIsdeleted,Constants.ZERO)
                 .eq(Cars::getType,Constants.ONE)
@@ -383,8 +391,10 @@
             //濡傛灉鏄嚜鏈夌墿娴佽溅
             job.setType(type==0?Constants.platformJobType.zycxh:Constants.platformJobType.zyczh);//鑷湁杞﹀嵏璐�/瑁呰揣
             job.setCarCodeBack(job.getCarCodeFront());//鑷湁杞﹂粯璁ゅ墠鍚庤溅鐗屼竴鏍�
-            if(retentionMapper.selectCount(new QueryWrapper<Retention>().lambda().eq(Retention::getType,Constants.THREE)
-                    .eq(Retention::getCarNo,car.getCode()))>Constants.ZERO && car.getJobNum() == 0){
+            if(job.getType() ==Constants.platformJobType.zyczh
+                    && retentionMapper.selectCount(new QueryWrapper<Retention>().lambda().eq(Retention::getType,Constants.THREE)
+                    .eq(Retention::getCarNo,car.getCode()))>Constants.ZERO
+                    && car.getJobNum() == 0){
                 //濡傛灉杞﹁締鍦ㄥ洯
                 job.setStatus(Constants.PlatformJobStatus.WAIT_CALL.getKey());//鍦ㄥ洯鏃犱綔涓氱姸鎬侊紝鍒欒嚜鍔ㄣ�愬凡绛惧埌銆戝鐞�
                 job.setArriveDate(new Date());

--
Gitblit v1.9.3