From 3201bba04baf50d368fbc4ac11658701e97a0a97 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期三, 05 三月 2025 09:59:05 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmvisit

---
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java                |   14 
 admin/src/views/business/visits.vue                                                                             |   12 
 admin/src/views/meeting/components/OperaBookingsDetailWindow.vue                                                |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java       |   19 
 server/system_timer/src/main/java/com/doumee/jobs/service/TimerBizSevice.java                                   |   28 
 server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/RoomsServiceImpl.java             |    7 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java         |   75 +++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java        |   46 +
 server/system_service/src/main/java/com/doumee/config/cloudfilter/LoginHandlerInterceptor.java                  |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java               |   26 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java      |   10 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWarnEventServiceImpl.java  |    1 
 admin/src/views/meeting/bookings.vue                                                                            |   14 
 admin/src/components/operation/HiddenDangerParam.vue                                                            |   11 
 admin/src/views/meeting/components/OperaRoomsWindow.vue                                                         |   10 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWmsJobServiceImpl.java     |    4 
 server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java          |  110 +++--
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerParamServiceImpl.java  |    8 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/CarEventDTO.java                      |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java                      |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Approve.java                          |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarEventServiceImpl.java           |   18 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java             |   32 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java          |   17 
 server/system_service/src/main/java/com/doumee/api/BaseController.java                                          |    9 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/RetentionServiceImpl.java          |   13 
 server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java                                  |    3 
 admin/src/views/meeting/rooms.vue                                                                               |    8 
 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/CarUseBook.java                       |    5 
 admin/src/components/business/OperaMemberWindow.vue                                                             |   27 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java  |   68 ++
 admin/src/views/platform/LogisticsRecord/subscribe.vue                                                          |    2 
 server/startsh/DBbackup.sh                                                                                      |   10 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CarEventVo.java                          |    2 
 admin/src/views/operation/serviceCar/apprRecord.vue                                                             |  174 +++++--
 server/system_service/src/main/java/com/doumee/core/utils/Constants.java                                        |    5 
 admin/src/views/business/reportRecord.vue                                                                       |  144 ++++--
 admin/src/layouts/TableLayout1.vue                                                                              |   10 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java                      |    1 
 server/system_service/src/main/java/com/doumee/service/timer/QuartzJobService.java                              |   11 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java      |    5 
 admin/src/components/common/Pagination.vue                                                                      |   14 
 admin/src/views/business/userActionOther.vue                                                                    |    8 
 server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Rooms.java                           |    3 
 server/system_service/src/main/java/com/doumee/dao/timer/scheduler/QuartzManage.java                            |   26 
 server/visits/admin_timer/src/main/java/com/doumee/api/HkVisitTimerController.java                              |    6 
 admin/src/views/task/visSubDetail.vue                                                                           |    2 
 admin/src/layouts/TableLayout.vue                                                                               |   13 
 admin/src/api/platform/index.js                                                                                 |    2 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java                   |    6 
 server/system_service/src/main/java/com/doumee/core/constants/ResponseStatus.java                               |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatConstants.java                      |    2 
 admin/src/views/business/device.vue                                                                             |   76 +++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformEventServiceImpl.java      |    3 
 admin/src/views/business/relativeMember.vue                                                                     |    6 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java             |   29 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java |   19 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDanger.java                     |   13 
 admin/src/views/business/internalMember.vue                                                                     |    6 
 admin/src/components/business/OperaCarsWindow.vue                                                               |   10 
 admin/src/views/operation/danger/record.vue                                                                     |   10 
 62 files changed, 898 insertions(+), 340 deletions(-)

diff --git a/admin/src/api/platform/index.js b/admin/src/api/platform/index.js
index e3194f8..f7f1afa 100644
--- a/admin/src/api/platform/index.js
+++ b/admin/src/api/platform/index.js
@@ -2,7 +2,7 @@
 
 // 鑾峰彇鏈堝彴缁勪俊鎭�
 export function getPlatformGroupList (data) {
-  return request.post('/visitsAdmin/cloudService/business/platform/getPlatformGroupList', data)
+  return request.post('/visitsAdmin/cloudService/business/platform/getPlatformGroupListNew', data)
 }
 // 鍙彿鍒楄〃
 export function platformCallList (data) {
diff --git a/admin/src/components/business/OperaCarsWindow.vue b/admin/src/components/business/OperaCarsWindow.vue
index 439e693..7e4a40f 100644
--- a/admin/src/components/business/OperaCarsWindow.vue
+++ b/admin/src/components/business/OperaCarsWindow.vue
@@ -22,8 +22,10 @@
       </el-form-item>
       <el-form-item label="閫夋嫨缁勭粐锛�" prop="groupId">
         <el-select v-model="form.groupId" @change="changeSel" clearable filterable placeholder="璇烽�夋嫨">
-          <el-option v-for="item in companyList" :key="item.id" :label="item.name" :value="item.id">
-          </el-option>
+          <template v-for="item in companyList">
+            <el-option  v-if="item.countNum && item.countNum>0" :key="item.id" :label="item.name" :value="item.id">
+            </el-option>
+          </template>
         </el-select>
       </el-form-item>
       <el-form-item label="閫夋嫨杞︿富锛�" prop="memberId">
@@ -148,8 +150,8 @@
     },
     getCompany() {
       companyGetList({
-        model: {},
-        capacity: 1000,
+        model: { },//鏈夊憳宸ョ殑鏁版嵁
+        capacity: 10000,
         page: 1,
       }).then(res => {
         this.companyList = res.records || []
diff --git a/admin/src/components/business/OperaMemberWindow.vue b/admin/src/components/business/OperaMemberWindow.vue
index fdc5fa7..2cc8ad5 100644
--- a/admin/src/components/business/OperaMemberWindow.vue
+++ b/admin/src/components/business/OperaMemberWindow.vue
@@ -5,8 +5,14 @@
         <el-input v-model="form.name" placeholder="璇疯緭鍏ュ鍚�" v-trim />
       </el-form-item>
       <el-form-item label="鎵�灞炵粍缁�" prop="companyId">
-        <el-cascader v-model="form.company" :options="department" @change="handleChangeCompany" :show-all-levels="false"
-          clearable filterable :props="departprops"></el-cascader>
+<!--        <el-cascader v-model="form.company" :options="department" @change="handleChangeCompany" :show-all-levels="false"
+          clearable filterable :props="departprops"></el-cascader>-->
+        <el-select v-model="form.companyId"  clearable filterable placeholder="璇烽�夋嫨">
+          <template v-for="item in companyList">
+            <el-option  v-if="item.countNum && item.countNum>0" :key="item.id" :label="item.companyNamePath" :value="item.id">
+            </el-option>
+          </template>
+        </el-select>
         <div style="font-size: 12px;color: #F56C6C">
           娉細浠呮敮鎸侀�夋嫨 銆恵{ companyType === 0 ? '鐩稿叧鏂圭粍缁�' : '鍐呴儴缁勭粐' }}銆�
         </div>
@@ -97,6 +103,7 @@
 import { checkMobile, validIdCardNo, validIdCardNoNew } from '@/utils/form'
 import { allList } from '@/api/business/position'
 import { upload } from '@/api/system/common'
+import {companyGetList} from "@/api/business/company";
 export default {
   name: 'OperaCompanyWindow',
   extends: BaseOpera,
@@ -124,6 +131,7 @@
       companyType: 0,
       department: [],
       positionList: [],
+      companyList: [],
       // 琛ㄥ崟鏁版嵁
       form: {
         id: null,
@@ -161,6 +169,16 @@
     })
   },
   methods: {
+    getCompany() {
+      companyGetList({
+        model: {type:this.companyType } ,
+        capacity: 10000,
+        page: 1,
+      }).then(res => {
+        this.companyList = res.records || []
+
+      })
+    },
     openCamera() {
       this.paisheModal = true
       this.isShowCamera = true
@@ -314,7 +332,8 @@
         faceImgFull: ''
       }
       this.companyType = companyType
-      this.getPositionList()
+      this.getCompany()
+      // this.getPositionList()
       // 鏂板缓
       if (target == null) {
         this.$nextTick(() => {
@@ -322,6 +341,8 @@
           this.form[this.configData['field.id']] = null
           this.form.company = []
         })
+
+        this.getCompany()
         return
       }
       // 缂栬緫
diff --git a/admin/src/components/common/Pagination.vue b/admin/src/components/common/Pagination.vue
index 61d5103..26d4093 100644
--- a/admin/src/components/common/Pagination.vue
+++ b/admin/src/components/common/Pagination.vue
@@ -38,3 +38,17 @@
   }
 }
 </script>
+<style lang="scss" scoped>
+.table-pagination {
+  padding: 16px 0;
+  text-align: left;
+  display: block;
+  z-index: 100;
+  width: -webkit-fill-available;
+  /* width: 80%; */
+  position: fixed;
+  bottom: 30px;
+  background-color: white;
+  margin-right: 50px;
+}
+</style>
diff --git a/admin/src/components/operation/HiddenDangerParam.vue b/admin/src/components/operation/HiddenDangerParam.vue
index babe186..ab8e973 100644
--- a/admin/src/components/operation/HiddenDangerParam.vue
+++ b/admin/src/components/operation/HiddenDangerParam.vue
@@ -151,7 +151,7 @@
     this.initData()
   },
   methods: {
-    
+
     initData () {
       allList({ type: 1 }).then(res => { // 绫诲瀷
         this.typeList = res || []
@@ -173,9 +173,12 @@
       const { companyId } = this.param
       this.$set(this.param, 'areaId', '')
       this.$set(this.param, 'checkUserId', '')
-      allList({ type: 0,companyId }).then(res => { // 浣嶇疆
-        this.addrList = res || []
-      })
+      this.addrList = []
+      if(companyId){
+        allList({ type: 0,companyId }).then(res => { // 浣嶇疆
+          this.addrList = res || []
+        })
+      }
     },
     changeArea (e) {
       const item = this.addrList.find(i => i.id === e)
diff --git a/admin/src/layouts/TableLayout.vue b/admin/src/layouts/TableLayout.vue
index 74eba3f..9a2e9b6 100644
--- a/admin/src/layouts/TableLayout.vue
+++ b/admin/src/layouts/TableLayout.vue
@@ -65,6 +65,9 @@
     padding-top: 0;
   }
 }
+.danger-column{
+  color: red;
+}
 // 澶撮儴
 .table-header {
   overflow: hidden;
@@ -108,7 +111,7 @@
 .table-content {
   padding: 0 16px;
   .table-wrap {
-    padding: 16px 16px 0 16px;
+    padding: 16px 16px 60px 16px;
     background: #fff;
     // 宸ュ叿鏍�
     .toolbar {
@@ -156,6 +159,14 @@
     .table-pagination {
       padding: 16px 0;
       text-align: left;
+      display: block;
+      z-index: 100;
+      width: -webkit-fill-available;
+      /* width: 80%; */
+      position: fixed;
+      bottom: 30px;
+      background-color: white;
+      margin-right: 50px;
     }
   }
 }
diff --git a/admin/src/layouts/TableLayout1.vue b/admin/src/layouts/TableLayout1.vue
index 56992b0..461cc85 100644
--- a/admin/src/layouts/TableLayout1.vue
+++ b/admin/src/layouts/TableLayout1.vue
@@ -112,7 +112,7 @@
     .table-content {
         /*padding: 0 16px;*/
         .table-wrap {
-            padding: 16px 16px 0 16px;
+            padding: 16px 16px 60px 16px;
             background: #fff;
             // 宸ュ叿鏍�
             .toolbar {
@@ -160,6 +160,14 @@
             .table-pagination {
                 padding: 16px 0;
                 text-align: left;
+              display: block;
+              z-index: 100;
+              width: -webkit-fill-available;
+              /* width: 80%; */
+              position: fixed;
+              bottom: 30px;
+              background-color: white;
+              margin-right: 50px;
             }
         }
     }
diff --git a/admin/src/views/business/device.vue b/admin/src/views/business/device.vue
index 987f067..1c1ff3c 100644
--- a/admin/src/views/business/device.vue
+++ b/admin/src/views/business/device.vue
@@ -1,4 +1,80 @@
 <template>
+    <TableLayout :permissions="['business:device:query']">
+        <!-- 鎼滅储琛ㄥ崟 -->
+        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+            <el-form-item label="闂ㄧ鐐瑰悕绉�" prop="doorName">
+                <el-input v-model="searchForm.doorName" placeholder="璇疯緭鍏ラ棬绂佺偣鍚嶇О" @keypress.enter.native="search"></el-input>
+            </el-form-item>
+            <el-form-item label="鍖哄煙鍚嶇О" prop="regionPathName">
+                <el-input v-model="searchForm.regionPathName" placeholder="璇疯緭鍏ュ尯鍩熷悕绉�" @keypress.enter.native="search"></el-input>
+            </el-form-item>
+            <el-form-item label="鏄惁鍥尯鍏ュ彛" prop="isEntrance">
+                <el-select v-model="searchForm.isEntrance" placeholder="璇烽�夋嫨">
+                    <el-option label="鏄�" value="1"></el-option>
+                    <el-option label="鍚�" value="0"></el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="鍦ㄧ嚎鐘舵��" prop="online">
+                <el-select v-model="searchForm.online" placeholder="璇烽�夋嫨" clearable>
+                    <el-option label="绂荤嚎" value="0"></el-option>
+                    <el-option label="鍦ㄧ嚎" value="1"></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>
+            <ul class="toolbar">
+                <li><el-button type="primary" @click="synchronousData">鍚屾</el-button></li>
+            </ul>
+            <el-table
+                v-loading="isWorking.search"
+                :data="tableData.list"
+                stripe
+            >
+              <el-table-column label="搴忓彿"  width="55" fixed><template slot-scope="scope" >{{scope.$index+1}}</template></el-table-column>
+              <el-table-column prop="name" label="璁惧鍚嶇О"></el-table-column>
+                <el-table-column prop="doorName" label="闂ㄧ鐐瑰悕绉�"></el-table-column>
+                <el-table-column prop="regionPathName" label="鍖哄煙鍚嶇О"></el-table-column>
+<!--
+                <el-table-column prop="doorNo" label="闂ㄧ鐐圭紪鍙�"></el-table-column>
+-->
+                <el-table-column prop="manufature" label="鍘傚晢"></el-table-column>
+                <el-table-column prop="online" label="鍦ㄧ嚎鐘舵��">
+                    <template slot-scope="{row}">
+                        <span v-if="row.online == 0">绂荤嚎</span>
+                        <span v-if="row.online == 1">鍦ㄧ嚎</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="ip" label="璁惧ip"></el-table-column>
+                <el-table-column prop="port" label="璁惧绔彛"></el-table-column>
+                <el-table-column label="鏄惁鍥尯鍏ュ彛">
+                    <template slot-scope="{row}">
+                        <el-switch
+                            @change="changeManufature($event, row)"
+                            v-model="row.isEntrance"
+                            active-color="#13ce66"
+                            inactive-color="#ff4949"
+                            :active-value="1"
+                            :inactive-value="0">
+                        </el-switch>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="no" width="200px" label="璁惧鍙�"></el-table-column>
+            </el-table>
+            <pagination
+                @size-change="handleSizeChange"
+                @current-change="handlePageChange"
+                :pagination="tableData.pagination"
+            >
+            </pagination>
+        </template>
+        <!-- 鏂板缓/淇敼 -->
+<!--        <OperaDeviceWindow ref="operaDeviceWindow" @success="handlePageChange"/>-->
+    </TableLayout>
   <TableLayout :permissions="['business:device:query']">
     <!-- 鎼滅储琛ㄥ崟 -->
     <div ref="QueryFormRef" slot="search-form">
diff --git a/admin/src/views/business/internalMember.vue b/admin/src/views/business/internalMember.vue
index cdd8f28..f7c1963 100644
--- a/admin/src/views/business/internalMember.vue
+++ b/admin/src/views/business/internalMember.vue
@@ -162,20 +162,20 @@
             <div v-else>-</div>
           </template>
         </el-table-column>
-        <el-table-column prop="code" label="宸ュ彿" min-width="100px"></el-table-column>
+<!--        <el-table-column prop="code" label="宸ュ彿" min-width="100px"></el-table-column>
         <el-table-column label="鍗$墖" min-width="80px">
           <template slot-scope="{row}">
             <el-button @click="$refs.cardOpeningRecord.open('寮�鍗¤褰�', row.id)" type="text">{{ row.memberCardCount ||
               '0' }}</el-button>
           </template>
-        </el-table-column>
+        </el-table-column>-->
         <el-table-column prop="editorName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
         <el-table-column prop="editDate" label="鏈�鍚庢搷浣滄椂闂�" min-width="150px"></el-table-column>
         <el-table-column
           v-if="containPermissions(['business:member:update', 'business:member:delete', 'business:empower:create'])"
           label="鎿嶄綔" min-width="280">
           <template slot-scope="{row}">
-            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaMemberWindow.open('缂栬緫鍛樺伐淇℃伅', row, department)"
+            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaMemberWindow.open('缂栬緫鍛樺伐淇℃伅', row, department,searchForm.companyType)"
               v-permissions="['business:empower:update']">缂栬緫</el-button>
             <el-button type="text" icon="el-icon-plus" @click="empower(row.id)"
               v-permissions="['business:empower:create']">閲嶆柊鎺堟潈</el-button>
diff --git a/admin/src/views/business/relativeMember.vue b/admin/src/views/business/relativeMember.vue
index abecc87..72b7d76 100644
--- a/admin/src/views/business/relativeMember.vue
+++ b/admin/src/views/business/relativeMember.vue
@@ -176,20 +176,20 @@
             <div v-else>-</div>
           </template>
         </el-table-column>
-        <el-table-column prop="code" label="宸ュ彿" min-width="100px"></el-table-column>
+<!--        <el-table-column prop="code" label="宸ュ彿" min-width="100px"></el-table-column>
         <el-table-column label="鍗$墖" min-width="80px">
           <template slot-scope="{row}">
             <el-button @click="$refs.cardOpeningRecord.open('寮�鍗¤褰�', row.id)" type="text">{{ row.memberCardCount ||
               '0' }}</el-button>
           </template>
-        </el-table-column>
+        </el-table-column>-->
         <el-table-column prop="editorName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
         <el-table-column prop="editDate" label="鏈�鍚庢搷浣滄椂闂�" min-width="150px"></el-table-column>
         <el-table-column
           v-if="containPermissions(['business:member:update', 'business:member:delete', 'business:empower:create'])"
           label="鎿嶄綔" min-width="280">
           <template slot-scope="{row}">
-            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaMemberWindow.open('缂栬緫鍛樺伐淇℃伅', row, department)"
+            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaMemberWindow.open('缂栬緫鍛樺伐淇℃伅', row, department,searchForm.companyType)"
               v-permissions="['business:empower:update']">缂栬緫</el-button>
             <el-button type="text" icon="el-icon-plus" @click="empower(row.id)"
               v-permissions="['business:empower:create']">閲嶆柊鎺堟潈</el-button>
diff --git a/admin/src/views/business/reportRecord.vue b/admin/src/views/business/reportRecord.vue
index aef500a..2776e4a 100644
--- a/admin/src/views/business/reportRecord.vue
+++ b/admin/src/views/business/reportRecord.vue
@@ -1,35 +1,77 @@
 <template>
-  <div class="main_app">
-
-    <div ref="QueryFormRef">
-      <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear" />
+  <div class="main_app" style="padding-bottom: 60px">
+    <QueryForm
+      v-model="filters"
+      :query-form-config="queryFormConfig"
+      @handleQuery="getList(1)"
+      @clear="clear"
+    />
+    <div class="query_btns" style="margin: 16px 0 0" v-permissions="['business:visits:create', 'business:visits:exportExcel']">
+      <el-button type="primary" @click="handleEdit()" icon="el-icon-plus" v-permissions="['business:visits:create']">鏂板缓</el-button>
+      <el-button type="primary" :loading="exLoading" @click="exportExcel" v-permissions="['business:visits:exportExcel']">瀵煎嚭</el-button>
     </div>
-    <div class="query_btns" style="margin: 16px 0 0"
-      v-permissions="['business:visits:create', 'business:visits:exportExcel']">
-      <el-button type="primary" @click="handleEdit()" icon="el-icon-plus"
-        v-permissions="['business:visits:create']">鏂板缓</el-button>
-      <el-button type="primary" :loading="exLoading" @click="exportExcel"
-        v-permissions="['business:visits:exportExcel']">瀵煎嚭</el-button>
-    </div>
-    <el-table :max-height="tableHeight" v-loading="loading" :data="dataList" stripe row-key="id" default-expand-all>
+    <el-table
+      v-loading="loading"
+      :data="dataList"
+      stripe
+      row-key="id"
+      default-expand-all
+    >
       <el-table-column type="selection" width="55" align="center"></el-table-column>
-      <el-table-column prop="carNos" label="鍏ュ洯杞﹁締" min-width="100px"></el-table-column>
-      <el-table-column prop="companyName" label="鍏徃鍚嶇О" min-width="100px"></el-table-column>
-      <el-table-column prop="name" label="鑱旂郴浜轰俊鎭�" min-width="100px"></el-table-column>
-      <el-table-column prop="phone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
-      <el-table-column prop="receptMemberName" label="琚浜�" min-width="100px"></el-table-column>
+      <el-table-column
+        prop="carNos"
+        label="鍏ュ洯杞﹁締"
+        min-width="100px"
+      ></el-table-column>
+      <el-table-column
+        prop="companyName"
+        label="鍏徃鍚嶇О"
+        min-width="100px"
+      ></el-table-column>
+      <el-table-column
+        prop="name"
+        label="鑱旂郴浜轰俊鎭�"
+        min-width="100px"
+      ></el-table-column>
+      <el-table-column
+        prop="phone"
+        label="鎵嬫満鍙�"
+        min-width="100px"
+      ></el-table-column>
+      <el-table-column
+        prop="receptMemberName"
+        label="琚浜�"
+        min-width="100px"
+      ></el-table-column>
       <el-table-column label="鎷滆鏃堕棿" min-width="160px">
         <template slot-scope="{ row }">
-          <span>璧凤細{{ row.starttime }}</span><br />
+          <span>璧凤細{{ row.starttime }}</span
+          ><br />
           <span>姝細{{ row.endtime }}</span>
         </template>
       </el-table-column>
-      <el-table-column prop="reason" label="鎷滆浜嬬敱" min-width="100"></el-table-column>
-      <el-table-column prop="status" fixed="right" label="鐘舵��" align="center" min-width="100">
+      <el-table-column
+        prop="reason"
+        label="鎷滆浜嬬敱"
+        min-width="100"
+      ></el-table-column>
+      <el-table-column
+        prop="status"
+        fixed="right"
+        label="鐘舵��"
+        align="center"
+        min-width="100"
+      >
         <template slot-scope="{ row }">
-          <span style="color: rgba(245, 154, 35, 0.996)" v-if="row.status === 0">寰呮彁浜ゅ鎵�</span>
-          <span v-if="row.status === 1" style="color: rgba(245, 154, 35, 0.996)">澶勭悊涓�</span>
-          <span v-if="row.status === 2" style="color: rgba(245, 154, 35, 0.996)">宸插悓鎰�</span>
+          <span style="color: rgba(245, 154, 35, 0.996)" v-if="row.status === 0"
+            >寰呮彁浜ゅ鎵�</span
+          >
+          <span v-if="row.status === 1" style="color: rgba(245, 154, 35, 0.996)"
+            >澶勭悊涓�</span
+          >
+          <span v-if="row.status === 2" style="color: rgba(245, 154, 35, 0.996)"
+            >宸插悓鎰�</span
+          >
           <span style="color: gray" v-if="row.status === 3">宸叉嫆缁�</span>
           <span v-if="row.status === 4" style="color: gray">鍙栨秷</span>
           <span v-if="row.status === 5" style="color: green">涓嬪彂鎴愬姛</span>
@@ -41,16 +83,21 @@
       </el-table-column>
       <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>
-          <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="handleDetail(row)"
+            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>
-    <pagination class="mt10" @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
+    <pagination
+      @size-change="handleSizeChange"
+      @current-change="getList"
+      :pagination="pagination"
+    />
     <ReportDetail v-if="isShowReport" ref="VisReportDetailRef" />
-    <OperaVisitsReportWindow @close="isShowEdit = false" @success="getList" v-if="isShowEdit"
-      ref="operaVisitsWindowRef" />
+    <OperaVisitsReportWindow @close="isShowEdit = false" @success="getList"  v-if="isShowEdit" ref="operaVisitsWindowRef" />
   </div>
 </template>
 
@@ -68,11 +115,10 @@
     Pagination,
     OperaVisitsReportWindow
   },
-  data() {
+  data () {
     return {
       isShowEdit: false,
       exLoading: false,
-      tableHeight: 400,
 
       isShowReport: false,
       activeTab: '0',
@@ -108,16 +154,11 @@
       total: 0
     }
   },
-  created() {
+  created () {
     this.getList()
   },
-  mounted() {
-    this.$nextTick(() => {
-      this.tableHeight = document.body.scrollHeight - this.$refs.QueryFormRef.offsetHeight - 300
-    })
-  },
   methods: {
-    exportExcel() {
+    exportExcel () {
       this.$dialog.exportConfirm('纭瀵煎嚭鍚楋紵')
         .then(() => {
           this.exLoading = true
@@ -137,13 +178,13 @@
             })
         })
     },
-    handleEdit() {
+    handleEdit () {
       this.isShowEdit = true
       this.$nextTick(() => {
         this.$refs.operaVisitsWindowRef.isShowModal = true
       })
     },
-    deleteById(row) {
+    deleteById (row) {
       this.$confirm('纭畾鍒犻櫎璇ヨ褰曞悧, 鏄惁缁х画?', '鎻愮ず', {
         confirmButtonText: '纭畾',
         cancelButtonText: '鍙栨秷',
@@ -158,7 +199,7 @@
       }).catch(() => {
       })
     },
-    handleDetail(row) {
+    handleDetail (row) {
       this.isShowReport = true
       this.$nextTick(() => {
         this.$nextTick(() => {
@@ -169,7 +210,7 @@
         })
       })
     },
-    getList(page) {
+    getList (page) {
       const { pagination, filters } = this
       pagination.page = page || pagination.page
       fetchList({
@@ -180,13 +221,13 @@
         this.pagination.total = res.total
       })
     },
-    clear() {
+    clear () {
       this.filters = {
         type: 2
       }
       this.getList(0)
     },
-    handleSizeChange(capacity) {
+    handleSizeChange (capacity) {
       this.pagination.capacity = capacity
       this.getList()
     }
@@ -194,4 +235,17 @@
 }
 </script>
 
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+.table-pagination {
+  padding: 16px 0;
+  text-align: left;
+  display: block;
+  z-index: 100;
+  width: -webkit-fill-available;
+  /* width: 80%; */
+  position: fixed;
+  bottom: 30px;
+  background-color: white;
+  margin-right: 50px;
+}
+</style>
diff --git a/admin/src/views/business/userActionOther.vue b/admin/src/views/business/userActionOther.vue
index 325800b..eea0a1c 100644
--- a/admin/src/views/business/userActionOther.vue
+++ b/admin/src/views/business/userActionOther.vue
@@ -28,10 +28,10 @@
                 :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-column prop="createName" align="center" width="150"  label="鎿嶄綔浜哄憳"></el-table-column>
+              <el-table-column  prop="typeName" align="center"  width="150" label="鎿嶄綔绫诲瀷" class-name="danger-column"/>
+              <el-table-column  prop="remark" label="鎿嶄綔鍐呭" min-width="900"/>
+              <el-table-column prop="createDate" align="center"  width="150" label="鎿嶄綔鏃堕棿"></el-table-column>
             </el-table>
             <pagination
                 @size-change="handleSizeChange"
diff --git a/admin/src/views/business/visits.vue b/admin/src/views/business/visits.vue
index a781692..0b360f4 100644
--- a/admin/src/views/business/visits.vue
+++ b/admin/src/views/business/visits.vue
@@ -90,20 +90,16 @@
             <span v-if="row.status === 9" style="color: gray">宸插け鏁�</span>
           </template>
         </el-table-column>
+        <el-table-column prop="remark" label="涓嬪彂澶囨敞" min-width="100px"></el-table-column>
         <el-table-column v-if="containPermissions(['business:visits:update', 'business:visits:delete'])" label="鎿嶄綔"
           min-width="200" fixed="right">
           <template slot-scope="{row}">
-            <el-button type="text" @click="departure(row.id)" icon="el-icon-delete" style="color: red"
-              v-if="row.status == 7">绂诲満</el-button>
             <!--           <el-button type="text" @click="cancel(row.id)" v-permissions="['business:visits:cancel']"
                       icon="el-icon-delete" style="color: red" v-if="row.status == 5">鍙栨秷棰勭害</el-button>-->
-            <el-button type="text" @click="resend(row.id)" v-permissions="['business:visits:update']"
-              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="resend(row.id)" v-permissions="['business:visits:update']" icon="el-icon-edit" v-if="row.status == 6">閲嶆柊涓嬪彂</el-button>
             <el-button type="text" @click="handleDetail(row)" icon="el-icon-view">璇︽儏</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>-->
+            <el-button type="text" @click="departure(row.id)" icon="el-icon-delete" style="color: red" v-if="row.status == 7">绂诲満</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>
diff --git a/admin/src/views/meeting/bookings.vue b/admin/src/views/meeting/bookings.vue
index 4cca73b..8b1fe08 100644
--- a/admin/src/views/meeting/bookings.vue
+++ b/admin/src/views/meeting/bookings.vue
@@ -104,17 +104,15 @@
           <template slot-scope="{ row }">
             <template>
               <el-button type="text" @click="$refs.operaBookingsDetailWindow.open('浼氳璇︽儏', row)">鏌ョ湅璇︽儏</el-button>
-              <el-button v-if="row.meetingStatus == '1' && row.creator === userInfo.id" type="text"
-                @click="$refs.operaBookingsWindow.open('缂栬緫浼氳棰勭害', row)">缂栬緫</el-button>
+              <el-button v-if=" (row.meetingStatus == '1' || row.meetingStatus == '4') &&row.creator === userInfo.id " type="text"  @click="$refs.operaBookingsWindow.open('缂栬緫浼氳棰勭害', row)">缂栬緫</el-button>
               <el-button type="text"
-                v-if="row.creator === userInfo.id && (row.meetingStatus == '1' || row.meetingStatus == '4')"
+                v-if="row.hasRole ==1 && (row.meetingStatus == '1' || row.meetingStatus == '4')"
                 @click="handleStart(row)">寮�濮�</el-button>
-              <el-button type="text" v-if="row.creator === userInfo.id && row.meetingStatus == '2'"
+              <el-button type="text" v-if=" row.hasRole ==1&& row.meetingStatus == '2'"
                 @click="handleEnd(row)">缁撴潫</el-button>
-              <el-button v-if="row.creator === userInfo.id && (row.meetingStatus == '1' || row.meetingStatus == '4')"
-                type="text" @click="cancelMeeting(row.id)">鎾ゅ洖</el-button>
+              <el-button v-if="row.hasRole ==1 && (row.meetingStatus == '1' || row.meetingStatus == '4')" type="text" @click="cancelMeeting(row.id)">鎾ゅ洖</el-button>
+              <el-button  type="text" @click="deleteById(row)" class="red" v-permissions="['business:bookings:delete']">鍒犻櫎</el-button>
             </template>
-            <!-- <el-button v-else type="text" @click="deleteById(row)" v-permissions="['business:bookings:delete']">鍒犻櫎</el-button> -->
           </template>
         </el-table-column>
       </el-table>
@@ -146,7 +144,7 @@
   data() {
     return {
       date: [],
-      userInfo: this.$store.state.userInfo,
+      // userInfo: this.$store.state.userInfo,
       // 鎼滅储
       searchForm: {
         roomId: '',
diff --git a/admin/src/views/meeting/components/OperaBookingsDetailWindow.vue b/admin/src/views/meeting/components/OperaBookingsDetailWindow.vue
index 2e7463d..1b0553b 100644
--- a/admin/src/views/meeting/components/OperaBookingsDetailWindow.vue
+++ b/admin/src/views/meeting/components/OperaBookingsDetailWindow.vue
@@ -21,13 +21,13 @@
         <div class="item-title">浼氳鍐呭</div>
         <div class="item-value">{{ form.content || "鏃�" }}</div>
       </div>
-      <div v-if="form.projectList.length" class="item">
+      <div v-if="form.projectList && form.projectList.length" class="item">
         <div class="">鏈嶅姟椤�</div>
         <div class="item-value">
           {{ form.projectList.map((item) => item.projectName).join(" | ") }}
         </div>
       </div>
-      <div class="item" v-if="form.fileList.length">
+      <div class="item" v-if="form.fileList && form.fileList.length">
         <div class="item-title">闄勪欢</div>
         <div>
           <FileLink
diff --git a/admin/src/views/meeting/components/OperaRoomsWindow.vue b/admin/src/views/meeting/components/OperaRoomsWindow.vue
index a9a6d58..f850a63 100644
--- a/admin/src/views/meeting/components/OperaRoomsWindow.vue
+++ b/admin/src/views/meeting/components/OperaRoomsWindow.vue
@@ -1,16 +1,19 @@
 <template>
   <GlobalAlertWindow v-loading="isUploading" :title="title" :visible.sync="visible" :confirm-working="isWorking"
     @confirm="confirm">
+    <p class="tip-warn" v-if="form.id"><i class="el-icon-warning"></i>鎿嶄綔璇存槑锛�<br>
+      <span style="color: #e75314">濡傛灉褰撳墠浼氳瀹ゅ瓨鍦ㄦ湭缁撴潫鐨勪細璁紝涓嶅厑璁告洿鏂板紑鏀炬椂闂村拰绮掑害鍒嗛挓锛屾彁浜ゅ悗寮�鏀炬椂闂村拰绮掑害鍒嗛挓淇敼涓嶇敓鏁堬紒</span>
+    </p>
     <el-form :model="form" ref="form" :rules="rules" label-width="120px" label-suffix="锛�">
       <el-form-item label="浼氳瀹ゅ悕绉�" prop="name">
         <el-input v-model="form.name" placeholder="璇疯緭鍏ヤ細璁鍚嶇О" :maxlength="10" v-trim />
       </el-form-item>
       <el-form-item label="寮�鏀炬椂闂�" prop="timeRange">
-        <el-time-picker is-range value-format="HH:mm" format="HH:mm" v-model="timeRange" range-separator="鑷�"
+        <el-time-picker is-range value-format="HH:mm" :disabled=" form.bookingNum && form.bookingNum>0" format="HH:mm" v-model="timeRange" range-separator="鑷�"
           start-placeholder="寮�濮嬫椂闂�" end-placeholder="缁撴潫鏃堕棿" placeholder="閫夋嫨鏃堕棿鑼冨洿" @change="selectRange"></el-time-picker>
       </el-form-item>
       <el-form-item label="绮掑害鍒嗛挓" prop="intervalTime">
-        <el-input v-model="form.intervalTime" type="number" placeholder="璇疯緭鍏ユ椂闂寸矑搴︼紙鍒嗛挓锛�" v-trim />
+        <el-input v-model="form.intervalTime" type="number"  :disabled="form.bookingNum && form.bookingNum>0" placeholder="璇疯緭鍏ユ椂闂寸矑搴︼紙鍒嗛挓锛�" v-trim />
       </el-form-item>
       <el-form-item label="瀹圭撼浜烘暟" prop="limitNum">
         <el-input v-model="form.limitNum" type="number" placeholder="璇疯緭鍏ュ绾充汉鏁�" v-trim />
@@ -111,7 +114,8 @@
         imgFullUrl: '',
         tips: '',
         status: 0,
-        intervalTime: 0
+        intervalTime: 0,
+        bookingNum: 0,
       },
       user: [],
       projectList: [],
diff --git a/admin/src/views/meeting/rooms.vue b/admin/src/views/meeting/rooms.vue
index 7e3b102..65f168b 100644
--- a/admin/src/views/meeting/rooms.vue
+++ b/admin/src/views/meeting/rooms.vue
@@ -5,7 +5,7 @@
       <el-form-item label="浼氳瀹ゅ悕绉�" prop="name">
         <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
       </el-form-item>
-      <el-form-item label="绠$悊鍛�" prop="sysList">
+<!--      <el-form-item label="绠$悊鍛�" prop="sysList">
         <el-select
           v-model="searchForm.sysList"
           filterable
@@ -20,10 +20,10 @@
             :value="item.id"
             :label="item.companyId?`${item.realname}-${item.companyName}`:item.realname"
             ></el-option>
-            <!-- :label="`${item.department.name}-${item.realname}`" -->
-          <!-- <el-option :key="1" :value="1" label="绂佺敤" /> -->
+            &lt;!&ndash; :label="`${item.department.name}-${item.realname}`" &ndash;&gt;
+          &lt;!&ndash; <el-option :key="1" :value="1" label="绂佺敤" /> &ndash;&gt;
         </el-select>
-      </el-form-item>
+      </el-form-item>-->
 
       <section>
         <el-button type="primary" @click="search">鎼滅储</el-button>
diff --git a/admin/src/views/operation/danger/record.vue b/admin/src/views/operation/danger/record.vue
index 5bb852b..5c45c1b 100644
--- a/admin/src/views/operation/danger/record.vue
+++ b/admin/src/views/operation/danger/record.vue
@@ -65,6 +65,7 @@
         <el-table-column prop="dutyCompanyName" show-overflow-tooltip label="璐d换閮ㄩ棬" min-width="150px"></el-table-column>
         <el-table-column prop="areaName" label="闅愭偅鍖哄煙" show-overflow-tooltip min-width="150px"></el-table-column>
         <el-table-column prop="categoryName" label="闅愭偅绫诲瀷" min-width="150px"></el-table-column>
+        <el-table-column prop="content" label="闂鎻忚堪" min-width="150px"></el-table-column>
         <el-table-column prop="memberName" label="鎻愭姤浜�" min-width="80px"></el-table-column>
         <el-table-column prop="companyName" show-overflow-tooltip label="鎵�灞炵粍缁�" min-width="150px"></el-table-column>
         <el-table-column prop="createDate" label="鎻愭姤鏃堕棿" min-width="150px"></el-table-column>
@@ -77,6 +78,15 @@
         </el-table-column>
         <el-table-column prop="editDate" label="鎿嶄綔鏃堕棿" min-width="150px"></el-table-column>
         <el-table-column label="鎿嶄綔" min-width="180" fixed="right">
+        <el-table-column prop="dealTime" label="澶勭悊鏃堕棿" min-width="150px"></el-table-column>
+<!--
+        <el-table-column prop="editDate" label="鏈�杩戞搷浣滄椂闂�" min-width="150px"></el-table-column>
+-->
+        <el-table-column
+            label="鎿嶄綔"
+            min-width="180"
+            fixed="right"
+        >
           <template slot-scope="{row}">
             <el-button type="text" icon="el-icon-edit"
               @click="$refs.OperaHiddenDangerWindow.open('闅愭偅闅忔墜鎷嶈鎯�', row)">鏌ョ湅璇︽儏</el-button>
diff --git a/admin/src/views/operation/serviceCar/apprRecord.vue b/admin/src/views/operation/serviceCar/apprRecord.vue
index 7eb4afa..571b12b 100644
--- a/admin/src/views/operation/serviceCar/apprRecord.vue
+++ b/admin/src/views/operation/serviceCar/apprRecord.vue
@@ -1,5 +1,5 @@
 <template>
-  <TableLayout :permissions="['business:empower:query']">
+  <TableLayout :permissions="['business:carusebook:query']">
     <!-- 鎼滅储琛ㄥ崟 -->
     <div ref="QueryFormRef" slot="search-form">
       <el-form ref="searchForm" :model="searchForm" label-width="100px" inline>
@@ -52,36 +52,70 @@
     </div>
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="[
-        'business:carusebook:create',
-        'business:carusebook:exportExcel',
-      ]">
+      <ul
+        class="toolbar"
+        v-permissions="[
+          'business:carusebook:create',
+          'business:carusebook:exportExcel',
+        ]"
+      >
         <li>
-          <el-button type="primary" @click="handleEdit" icon="el-icon-plus"
-            v-permissions="['business:carusebook:create']">鏂板缓</el-button>
+          <el-button
+            type="primary"
+            @click="handleEdit"
+            icon="el-icon-plus"
+            v-permissions="['business:carusebook:create']"
+            >鏂板缓</el-button
+          >
         </li>
         <li>
-          <el-button type="primary" @click="handleEx" v-permissions="['business:carusebook:exportExcel']">瀵煎嚭</el-button>
+          <el-button
+            type="primary"
+            @click="handleEx"
+            v-permissions="['business:carusebook:exportExcel']"
+            >瀵煎嚭</el-button
+          >
         </li>
       </ul>
       <el-table :max-height="tableHeight" 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="carCode" label="杞︾墝鍙�" min-width="100px"></el-table-column>
-        <el-table-column prop="memberName" label="鎻愭姤浜�" min-width="80px"></el-table-column>
-        <el-table-column prop="memberNames" label="涔樿溅浜�" min-width="180px"></el-table-column>
-        <el-table-column prop="companyName" label="鎵�灞炵粍缁�" min-width="150px"></el-table-column>
+        <el-table-column
+            prop="carCode"
+            label="杞︾墝鍙�"
+            min-width="100px"
+        ></el-table-column>
+        <el-table-column
+          prop="memberName"
+          label="鎻愭姤浜�"
+          min-width="80px"
+        ></el-table-column>
+        <el-table-column
+            prop="memberNames"
+            label="涔樿溅浜�"
+            min-width="180px"
+        ></el-table-column>
+        <el-table-column
+          prop="companyName"
+          label="鎵�灞炵粍缁�"
+          min-width="150px"
+        ></el-table-column>
         <el-table-column label="鐢ㄨ溅鏃堕棿" min-width="170px">
           <template slot-scope="{ row }">
-            <span v-if="row.startTime">璧�:{{ row.startTime.slice(0, 16) }}</span><br />
-            <span v-if="row.endTime">姝�:{{ row.endTime.slice(0, 16) }}</span>
+            <span v-if="row.startTime">璧�:{{ row.startTime.slice(0,16) }}</span
+            ><br />
+            <span v-if="row.endTime">姝�:{{ row.endTime.slice(0,16) }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="planUseDate" label="鍑哄彂鏃堕棿" min-width="150px">
-          <template slot-scope="{ row }">
-            <span v-if="row.planUseDate">{{ row.planUseDate.slice(0, 16) }}</span>
-          </template>
-        </el-table-column>
+        <el-table-column
+          prop="planUseDate"
+          label="鍑哄彂鏃堕棿"
+          min-width="150px"
+        >
+        <template slot-scope="{ row }">
+          <span v-if="row.planUseDate">{{ row.planUseDate.slice(0,16) }}</span>
+        </template>
+      </el-table-column>
         <el-table-column label="鐩殑鍦�" min-width="200px">
           <template slot-scope="{ row }">
             <span class="status-green" v-if="row.type === 0">銆愬競鍐呫��</span>
@@ -99,28 +133,59 @@
           </template>
         </el-table-column>
 
-        <el-table-column prop="createDate" label="鐢宠鏃堕棿" min-width="150px"></el-table-column>
-        <el-table-column prop="editDate" label="鎿嶄綔鏃堕棿" min-width="150px"></el-table-column>
-        <el-table-column label="鎿嶄綔" min-width="160" align="center" fixed="right">
+        <el-table-column
+          prop="createDate"
+          label="鐢宠鏃堕棿"
+          min-width="150px"
+        ></el-table-column>
+        <el-table-column
+          prop="editDate"
+          label="鎿嶄綔鏃堕棿"
+          min-width="150px"
+        ></el-table-column>
+        <el-table-column
+          label="鎿嶄綔"
+          min-width="180"
+          align="center"
+          fixed="right"
+        >
           <template slot-scope="{ row }">
-            <el-button type="text" icon="el-icon-edit"
-              @click="$refs.OperaDetailsWindow.open('鍏姟杞︾敵璇疯鎯�', row)">鏌ョ湅璇︽儏</el-button>
+            <el-button
+              type="text"
+              icon="el-icon-edit"
+              @click="$refs.OperaDetailsWindow.open('鍏姟杞︾敵璇疯鎯�', row)"
+              >鏌ョ湅璇︽儏</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 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>
+            <el-button style="color: red" v-if="row.hasRole ==1"  type="text"  icon="el-icon-delete"   @click="rowRevokeClick(row)" >鎾ら攢</el-button>
+            <!-- <el-button style="color: red"   v-if="(row.status === 0 && row.creator == userInfo.id)||((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"   v-permissions="['business:carusebook:delete']"  @click="deleteById(row)" >鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
-      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      >
       </pagination>
     </template>
     <!--  -->
     <el-dialog title="鐢ㄨ溅鎾ら攢" :visible.sync="isShowBack" width="520px">
-      <el-form :model="backParam" :rules="rules" ref="backForm" label-width="100px" class="demo-ruleForm">
+      <el-form
+        :model="backParam"
+        :rules="rules"
+        ref="backForm"
+        label-width="100px"
+        class="demo-ruleForm"
+      >
         <el-form-item label="璇存槑" prop="info">
-          <el-input type="textarea" :rows="4" v-model="backParam.info" placeholder="璇疯緭鍏ユ挙閿�璇存槑"></el-input>
+          <el-input
+            type="textarea"
+            :rows="4"
+            v-model="backParam.info"
+            placeholder="璇疯緭鍏ユ挙閿�璇存槑"
+          ></el-input>
         </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
@@ -128,7 +193,10 @@
         <el-button type="primary" @click="backSubmit">纭畾</el-button>
       </span>
     </el-dialog>
-    <OperaCarUseBookWindow ref="OperaDetailsWindow" @success="handlePageChange" />
+    <OperaCarUseBookWindow
+      ref="OperaDetailsWindow"
+      @success="handlePageChange"
+    />
     <OperaCarUseBookParamWindow ref="OperaParamWindow" @success="search" />
   </TableLayout>
 </template>
@@ -146,8 +214,9 @@
   name: 'Empower',
   extends: BaseTable,
   components: { TableLayout, Pagination, OperaCarUseBookWindow, OperaCarUseBookParamWindow },
-  data() {
+  data () {
     return {
+      // userInfo: this.$store.state.userInfo,
       // 鎼滅储
       searchForm: {
         memberName: '',
@@ -169,7 +238,7 @@
       }
     }
   },
-  created() {
+  created () {
     this.config({
       module: '鐢ㄨ溅鐢宠绠$悊',
       api: '/business/carUseBook',
@@ -177,16 +246,11 @@
       'field.main': 'id'
     })
     // this.search()
-    this.changeRadio('0')
+    this.changeRadio(0)
     this.loadParams()
   },
-  mounted() {
-    this.$nextTick(() => {
-      this.tableHeight = document.body.scrollHeight - this.$refs.QueryFormRef.offsetHeight - 300
-    })
-  },
   methods: {
-    rowRevokeClick(row) {
+    rowRevokeClick (row) {
       this.isShowBack = true
       this.backParam = {}
       this.$set(this.backParam, 'id', row.id)
@@ -194,14 +258,14 @@
         this.$refs.backForm.clearValidate()
       })
     },
-    backSubmit() {
+    backSubmit () {
       revokeById({ ...this.backParam }).then(res => {
         this.$tip.success('鎾ら攢鎴愬姛')
         this.isShowBack = false
         this.search()
       })
     },
-    handleEx() {
+    handleEx () {
       this.$dialog.exportConfirm('纭瀵煎嚭鍚楋紵')
         .then(() => {
           this.exLoading = true
@@ -238,10 +302,10 @@
       }
       this.search()
     },
-    handleEdit() {
+    handleEdit () {
       this.$refs.OperaParamWindow.open()
     },
-    loadParams() {
+    loadParams () {
       allList({
       })
         .then(res => {
@@ -262,19 +326,21 @@
         .finally(() => {
         })
     },
-    seleTime(e) {
-      this.searchForm.queryStartTime = e[0]
-      this.searchForm.queryEndTime = e[1]
+    seleTime (e) {
+      this.searchForm.queryStartTime = null
+      this.searchForm.queryEndTime = null
+      if (e != null && e.length >= 2) {
+        this.searchForm.queryStartTime = e[0]
+        this.searchForm.queryEndTime = e[1]
+      }
       this.searchForm.radio = null
       this.search()
     },
-    reset() {
+    reset () {
       this.$refs.searchForm.resetFields()
-      this.searchForm = {}
-      this.time = []
-      // this.searchForm.radio = '0'
-      // this.changeRadio('0')
-      this.search()
+      this.searchForm.radio = 0
+      this.changeRadio(0)
+      // this.search()
     }
   }
 }
diff --git a/admin/src/views/platform/LogisticsRecord/subscribe.vue b/admin/src/views/platform/LogisticsRecord/subscribe.vue
index 933b5b1..746db7f 100644
--- a/admin/src/views/platform/LogisticsRecord/subscribe.vue
+++ b/admin/src/views/platform/LogisticsRecord/subscribe.vue
@@ -41,7 +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>
+          <el-button  type="text" class="red" v-permissions="['business:platformbooks:delete']" @click="handleDel(scope.row)">鍒犻櫎</el-button>
         </template>
       </el-table-column>
     </el-table>
diff --git a/admin/src/views/task/visSubDetail.vue b/admin/src/views/task/visSubDetail.vue
index d9f19b2..c172862 100644
--- a/admin/src/views/task/visSubDetail.vue
+++ b/admin/src/views/task/visSubDetail.vue
@@ -37,7 +37,7 @@
               <div class="value">{{ info.carNos }}</div>
             </div>
             <div class="item">
-              <div class="label">鏂藉伐浜哄憳</div>
+              <div class="label">鏄惁娑夊強鏂藉伐浣滀笟</div>
               <div class="value">{{ info.type == "0" ? "鍚�" : "鏄�" }}</div>
             </div>
             <div class="item">
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 98927c3..55b465e 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
@@ -140,10 +140,16 @@
     @ApiModelProperty(value = "userId")
     @TableField(exist = false)
     private Integer userId ;
+    @ApiModelProperty(value = "鏄惁鍏锋湁鎿嶄綔鏉冮檺(寮�濮嬨�佺粨鏉熴�佹挙鍥烇級")
+    @TableField(exist = false)
+    private Integer  hasRole ;
 
     @ApiModelProperty(value = "鍙備細浜哄憳")
     @TableField(exist = false)
     private List<UserRel> sysList;
+    @ApiModelProperty(value = "浼氳瀹ょ鐞嗗憳")
+    @TableField(exist = false)
+    private List<UserRel> adminList;
 
     @ApiModelProperty(value = "鏈嶅姟椤圭洰")
     @TableField(exist = false)
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Rooms.java b/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Rooms.java
index 16dc743..eb49449 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Rooms.java
+++ b/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Rooms.java
@@ -112,6 +112,9 @@
     @ApiModelProperty(value = "鍥剧墖鍏ㄨ矾寰�")
     @TableField(exist = false)
     private String imgFullUrl;
+    @ApiModelProperty(value = "鏈粨鏉熶細璁褰曟暟")
+    @TableField(exist = false)
+    private Integer bookingNum;
 
     @ApiModelProperty(value = "闄勪欢鏂囦欢")
     @TableField(exist = false)
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 15bcc39..c861c15 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
@@ -42,6 +42,7 @@
 import com.doumee.service.business.ProjectsService;
 import com.doumee.service.system.SystemUserService;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.SecurityUtils;
 import org.springframework.beans.BeanUtils;
@@ -69,6 +70,7 @@
  * @date 2023/05/04 18:18
  */
 @Service
+@Slf4j
 public class BookingsServiceImpl implements BookingsService {
 
     @Value("${des_pwd}")
@@ -137,7 +139,7 @@
     public Integer create(Bookings bookings) {
         LoginUserInfo user = bookings.getLoginUserInfo();
         Rooms rooms = roomsMapper.selectById(bookings.getRoomId());
-        if(rooms==null ){
+        if(rooms==null||Constants.equalsInteger(rooms.getIsdeleted(),Constants.ONE) ){
             throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝璇ヤ細璁鏆傛椂鏃犳硶棰勭害");
         }
         bookings.setRoomName(rooms.getName());
@@ -183,7 +185,7 @@
                 s.setCreator(user.getId());
                 s.setObjId(bookings.getId());
                 s.setType(MeetConstants.TWO);
-                s.setObjType(MeetConstants.ZERO);
+                s.setObjType(Constants.MultiFile.MEETING_BOOKS.getKey());
                 multifileJoinMapper.insert(s);
             });
         }
@@ -230,7 +232,7 @@
         for (int i = 0; i < bookings.getBookingTimeList().size(); i++) {
             BookingTime s = bookings.getBookingTimeList().get(i);
             RoomTime roomTime = roomTimeJoinMapper.selectById(s.getTimeId());
-            if(Objects.isNull(roomTime)){
+            if(Objects.isNull(roomTime) ||Constants.equalsInteger(roomTime.getIsdeleted(),Constants.ONE)){
                 throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀛樺湪鏈煡璇㈠埌鐨勯厤缃棩鏈燂紝璇峰埛鏂伴噸璇�");
             }
             String endRoomTime = gsDate + " " + roomTime.getEndTime()+":00";
@@ -390,7 +392,7 @@
            Integer s=ids.get(i);
 
            Bookings bkjs = bookingsMapper.selectById(s);
-           if (Objects.isNull(bkjs)) {
+           if (Objects.isNull(bkjs)||Constants.equalsInteger(bkjs.getIsdeleted(),Constants.ONE)) {
                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鏈煡璇㈠埌棰勭害璁板綍");
            }
 
@@ -410,11 +412,14 @@
     @Transactional(rollbackFor = {BusinessException.class, Exception.class})
     public void updateById(Bookings bookings) {
         Bookings dbBookings = bookingsMapper.selectById(bookings.getId());
+        if(dbBookings==null ||Constants.equalsInteger(dbBookings.getIsdeleted(),Constants.ONE)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
         if(dbBookings.getStatus().equals(MeetConstants.ONE)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鏈鎿嶄綔澶辫触,棰勭害鐘舵�佸凡娴佽浆");
         }
         Rooms rooms = roomsMapper.selectById(dbBookings.getRoomId());
-        if(rooms==null ){
+        if(rooms==null||Constants.equalsInteger(rooms.getIsdeleted(),Constants.ONE) ){
             throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝璇ヤ細璁鏆傛椂鏃犳硶棰勭害");
         }
         bookings.setRoomName(rooms.getName());
@@ -490,7 +495,7 @@
         bookingsMapper.updateById(bookings);*/
 
         Bookings bookings = bookingsMapper.selectById(bs.getId());
-        if (Objects.isNull(bookings)) {
+        if (Objects.isNull(bookings)||Constants.equalsInteger(bookings.getIsdeleted(),Constants.ONE)) {
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鏈煡璇㈠埌棰勭害璁板綍");
         }
 
@@ -627,20 +632,31 @@
             //鍙備細浜哄憳鍒楄〃
             MPJLambdaWrapper<UserRel> urquery = new MPJLambdaWrapper<>();
             urquery.selectAll(UserRel.class);
+            urquery.eq(UserRel::getObjType, MeetConstants.ONE);
             urquery.eq(UserRel::getIsdeleted, MeetConstants.ZERO);
             urquery.eq(UserRel::getObjId, s.getId());
             urquery.select("(select REALNAME from system_user s where t.USER_ID = s.id and s.DELETED = 0  ) as realName");
             List<UserRel> userrelList = userRelJoinMapper.selectJoinList(UserRel.class, urquery);
             s.setSysList(userrelList);
+            //浼氳瀹ょ鐞嗗憳
+            MPJLambdaWrapper<UserRel> param = new MPJLambdaWrapper<>();
+            urquery.selectAll(UserRel.class);
+            urquery.eq(UserRel::getObjType, MeetConstants.ZERO);
+            urquery.eq(UserRel::getIsdeleted, MeetConstants.ZERO);
+            urquery.eq(UserRel::getObjId, s.getRoomId());
+            List<UserRel> adminList = userRelJoinMapper.selectJoinList(UserRel.class, urquery);
+            s.setAdminList(adminList);
 
-            //鏈嶅姟椤�
+            //鏌ヨ鏄惁鏈夋潈闄�
+            s.setHasRole(getHasRoleByParam(s,userInfo,adminList));
+          /*  //鏈嶅姟椤�
             MPJLambdaWrapper<ProjectRel> prquery = new MPJLambdaWrapper<>();
             prquery.selectAll(ProjectRel.class);
             prquery.eq(ProjectRel::getIsdeleted, MeetConstants.ZERO);
             prquery.eq(ProjectRel::getObjId, s.getId());
             prquery.select("(select p.name from meeting_projects p where t.PROJECT_ID = p.id and p.ISDELETED = 0  ) as projectName");
             List<ProjectRel> prList = projectRelJoinMapper.selectJoinList(ProjectRel.class, prquery);
-            s.setProjectList(prList);
+            s.setProjectList(prList);*/
 
             s.setFlag(MeetConstants.ZERO);
             if (System.currentTimeMillis() > s.getStartTime().getTime()) {
@@ -650,7 +666,19 @@
         });
         return PageData.from(result);
     }
-
+    public int getHasRoleByParam(Bookings s,LoginUserInfo userInfo,List<UserRel> adminList){
+        if(Constants.equalsInteger(userInfo.getId(),s.getCreator())  ){
+              return 1;
+        }
+        if(adminList!=null){
+            for(UserRel u : adminList){
+                if(Constants.equalsInteger(userInfo.getId(),u.getUserId())  ){
+                    return 1;
+                }
+            }
+        }
+        return  0;
+    }
     private void dealMeetingStatusByModel(Bookings s,Integer minute) {
         //浼氳鐘舵��: 1=鏈紑濮嬶紱2=杩涜涓紱3=宸茬粨鏉� ; 4=鍗冲皢寮�濮�; 5=宸叉挙閿�
         //status鐘舵�� 0宸查绾� 1宸叉挙閿� 2宸茬粨鏉�
@@ -1036,6 +1064,7 @@
                 throw new BusinessException(ResponseStatus.BAD_REQUEST);
             }
             Bookings bookings = bookingsMapper.selectOne(new QueryWrapper<Bookings>().lambda()
+                    .eq(Bookings::getIsdeleted,Constants.ZERO)
                     .eq(Bookings::getRoomId,bean.getRoomId())
                     .ge(Bookings::getEndTime,DateUtil.getPlusTime(bean.getEndTime()))
                     .le(Bookings::getStartTime,DateUtil.getPlusTime(bean.getStartTime()))
@@ -1068,9 +1097,9 @@
         //棰勭害浜�
         meetingDetailResponse.setBookingUser(systemUserService.findById(meetingDetailResponse.getBookingUserId()));
         //鏃堕棿娈靛垪琛�
-        meetingDetailResponse.setBookingTimeList(bookingTimeMapper.selectList(new QueryWrapper<BookingTime>()
-                .eq("BOOKING_ID", id)
-                .eq("ISDELETED", MeetConstants.ZERO)
+        meetingDetailResponse.setBookingTimeList(bookingTimeMapper.selectList(new QueryWrapper<BookingTime>().lambda()
+                .eq(BookingTime::getBookingId, id)
+                .eq(BookingTime::getIsdeleted, MeetConstants.ZERO)
         ));
         //鍙備細浜哄憳鍒楄〃
         List<UserResponse> userResponseList = systemUserService.getUserList(id);
@@ -1092,9 +1121,10 @@
             i.setPrefixUrl(projectsPath);
         });
         meetingDetailResponse.setProjectsResponseList(projectsResponseList);
-        List<Multifile> multiFileList = multifileMapper.selectList(new QueryWrapper<Multifile>()
-                .eq("OBJ_ID", id)
-                .eq("OBJ_TYPE", MeetConstants.ZERO)
+        List<Multifile> multiFileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda()
+                .eq(Multifile::getObjId, id)
+                .eq(Multifile::getObjType, Constants.MultiFile.MEETING_BOOKS.getKey())
+                .eq(Multifile::getIsdeleted, MeetConstants.ZERO)
         );
         multiFileList.forEach(i -> {
             i.setFileurlFull(projectsPath);
@@ -1102,10 +1132,10 @@
         //闄勪欢淇℃伅
         meetingDetailResponse.setMultiFileList(multiFileList);
         //浼氳瀹ょ鐞嗕汉鍛�
-        List<UserRel> userRelList = userRelMapper.selectList(new QueryWrapper<UserRel>()
-                .eq("ISDELETED",MeetConstants.ZERO)
-                .eq("OBJ_ID", meetingDetailResponse.getRoomId())
-                .eq("OBJ_TYPE",MeetConstants.ZERO)
+        List<UserRel> userRelList = userRelMapper.selectList(new QueryWrapper<UserRel>().lambda()
+                .eq(UserRel::getIsdeleted,MeetConstants.ZERO)
+                .eq(UserRel::getObjId, meetingDetailResponse.getRoomId())
+                .eq(UserRel::getObjType,MeetConstants.ZERO)
         );
         if(Constants.equalsInteger(sysUserId,meetingDetailResponse.getBookingUserId())){
             meetingDetailResponse.setIsAdmin(Constants.ONE);
@@ -1295,7 +1325,7 @@
                 .eq(UserRel::getObjType,Constants.ZERO)
                 .eq(UserRel::getUserId,businessOverDTO.getUserId()));
 
-        if (!bookings.getCreator().equals(businessOverDTO.getUserId()) && userRelList <= 0) {
+        if (!Constants.equalsInteger(bookings.getCreator(),businessOverDTO.getUserId()) && userRelList <= 0) {
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "闈炰綘鐨勯绾﹁褰�,鏃犳硶杩涜璇ユ搷浣�");
         }
         if(!Constants.equalsInteger(bookings.getStatus(),Constants.ZERO)){
@@ -1346,7 +1376,7 @@
         bookings.setEditDate(new Date());
         bookings.setEditor(businessOverDTO.getUserId());
         bookingsMapper.updateById(bookings);
-       /* //鏇存柊宸茬粨鏉熶絾鏈粨鏉熺殑浼氳淇℃伅涓哄凡缁撴潫
+         //鏇存柊宸茬粨鏉熶絾鏈粨鏉熺殑浼氳淇℃伅涓哄凡缁撴潫
         bookingsMapper.update(null,new UpdateWrapper<Bookings>()
                 .lambda()
                 .set(Bookings::getStatus,Constants.TWO)
@@ -1355,7 +1385,7 @@
                 .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())
-        );*/
+        );
 
     }
 
@@ -1390,23 +1420,6 @@
             response.setMultifileList(multifileList);
         }
 
-
-/*        //鏌ヨ浼氳鍒楄〃
-        List<MeetingListResponse> meetingList = bookingsMapper.meetingList(
-                new QueryWrapper<Bookings>()
-                .eq( "b.id", rooms.getId())
-                .eq("b.ISDELETED",MeetConstants.ZERO)
-                .eq("b.STATUS",MeetConstants.ZERO)
-                .eq("a.ISDELETED",MeetConstants.ZERO)
-                .eq("a.status",Constants.ZERO)
-                .ne("a.status",Constants.TWO)
-                .like("a.start_time",DateUtil.getCurrDate())
-                .apply(" not exists ( select 1  from  meeting_book mb where mb.END_TIME < now() and  mb.id = a.id and START_TIME_REAL is null  )   ")
-                .orderByAsc("a.start_time")
-        );
-        this.dealMeetingStatus(meetingList);
-        response.setMeetingListResponseList(meetingList);*/
-
         MPJLambdaWrapper<Bookings> queryWrapper = new MPJLambdaWrapper<Bookings>()
                  .selectAll(Bookings.class)
                  .selectAs(Rooms::getName, Bookings::getRoomName)
@@ -1416,14 +1429,15 @@
                  .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(Bookings::getStatus, MeetConstants.ZERO)
                  .eq(Rooms::getId, rooms.getId())
-                .apply("to_days(t.start_time) = to_days(now())")//瀛愭煡璇㈠綋澶╃殑
-                 .orderByDesc(Bookings::getStartTime);
+                 .apply("to_days(t.start_time) = to_days(now()) and t.end_time > now()")//瀛愭煡璇㈠綋澶╃殑
+                 .orderByAsc(Bookings::getStartTime);
         Integer minute =getNearStartMinut();
         List<Bookings> meetingList =bookingsMapper.selectJoinList(Bookings.class,queryWrapper);
+        List<MeetingListResponse> rList= new ArrayList<>();
         if(meetingList!=null){
-            response.setMeetingListResponseList(new ArrayList<>());
+            log.error(JSONObject.toJSONString(meetingList));
             for(Bookings s : meetingList){
                 dealMeetingStatusByModel(s,minute);
                 MeetingListResponse d = new MeetingListResponse();
@@ -1440,9 +1454,10 @@
                 d.setMeetingName(s.getName());
                 d.setRemark(s.getRemark());
                 d.setStartTime(s.getStartTime());
-                response.getMeetingListResponseList().add(d);
+                rList.add(d);
             }
         }
+        response.setMeetingListResponseList(rList);
         return response;
     }
 
@@ -1762,10 +1777,11 @@
         //鏌ヨ鏄惁澶勪簬浼氳涓�
         page.getRecords().forEach(j->{
             j.setPrefixUrl(path);
-            if(bookingsMapper.selectCount(new QueryWrapper<Bookings>()
+            if(bookingsMapper.selectCount(new QueryWrapper<Bookings>() .lambda()
+                    .eq(Bookings::getIsdeleted,Constants.ZERO)
                     .exists(" select 1 from meeting_user_rel u where u.OBJ_ID = meeting_book.id and  u.USER_ID = '"+j.getId()+"' and u.OBJ_TYPE = 1    ")
-                    .and(i -> i.between("START_TIME", pageWrap.getModel().getStartTime()+":00",pageWrap.getModel().getEndTime()+":00")
-                            .or().between("END_TIME", pageWrap.getModel().getStartTime()+":00",pageWrap.getModel().getEndTime()+":00")
+                    .and(i -> i.between(Bookings::getStartTime, pageWrap.getModel().getStartTime()+":00",pageWrap.getModel().getEndTime()+":00")
+                            .or().between(Bookings::getEndTime, pageWrap.getModel().getStartTime()+":00",pageWrap.getModel().getEndTime()+":00")
                     )
             )>Constants.ZERO){
                 j.setStatus(Constants.ONE);
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/RoomsServiceImpl.java b/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/RoomsServiceImpl.java
index 82efd00..0962f78 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/RoomsServiceImpl.java
+++ b/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/RoomsServiceImpl.java
@@ -387,6 +387,7 @@
 //                .set(Rooms::getStartTime, rooms.getStartTime())
                 .set(Rooms::getLimitNum, rooms.getLimitNum())
                 .set(Rooms::getTips, rooms.getTips())
+                .set(Rooms::getIntervalTime, rooms.getIntervalTime())
                 .set(Rooms::getImgurl, rooms.getImgurl())
                 .eq(Rooms::getId, rooms.getId()));
 
@@ -420,7 +421,7 @@
         rooms.setEndTime(DateUtil.formatDate(endtime.getTime(), "yyyy-MM-dd HH:mm:ss"));
 
 
-        //TODO 鏇存柊浼氳瀹ゆ椂闂存
+        //TODO鏇� 鏂颁細璁鏃堕棿娈�
         if (!Constants.equalsInteger(re, Constants.ONE)) {
             updateRoomTimes(rooms, user);
         }
@@ -491,9 +492,8 @@
         IPage<Rooms> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
         MPJLambdaWrapper<Rooms> queryWrapper = new MPJLambdaWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
-
         queryWrapper.selectAll(Rooms.class);
-
+        queryWrapper.select("(select count(a.id) from meeting_book a where a.room_id=t.id and a.isdeleted=0 and a.status=0)",Rooms::getBookingNum);
         queryWrapper.orderByDesc(Rooms::getCreateDate);
         queryWrapper.eq(Rooms::getIsdeleted, Constants.ZERO);
         queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getName()),Rooms::getName, pageWrap.getModel().getName());
@@ -501,7 +501,6 @@
         if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(pageWrap.getModel().getSysList())){
          //   queryWrapper.leftJoin(UserRel.class,UserRel::getObjId,Rooms::getId);
             List<Integer> collect = pageWrap.getModel().getSysList().stream().map(UserRel::getUserId).collect(Collectors.toList());
-
             queryWrapper.exists("select u.id from meeting_user_rel u where u.ISDELETED=0 and u.OBJ_ID =t.id and  u.USER_ID in (" +     StringUtils.strip(collect.toString(),"[]")+" )");
         }
 
diff --git a/server/startsh/DBbackup.sh b/server/startsh/DBbackup.sh
index 1ba1cc8..ad06f55 100644
--- a/server/startsh/DBbackup.sh
+++ b/server/startsh/DBbackup.sh
@@ -4,3 +4,13 @@
 # 鍒犻櫎7澶╁墠鐨勫浠芥暟鎹�
 find /usr/local/jars/dbbackup -name "antaiwuliu_*.sql" -type f -mtime +7 -exec rm {} \; > /dev/null 2>&1
 
+
+
+
+/usr/local/mysql/bin/mysqldump -h127.0.0.1 -uroot -pAtwl@2024 antaiwuliu > /usr/local/jars/dbbackup/antaiwuliu_0228JP.sql
+
+
+
+delete from platform_books where id not int (298,297,296,294,290,293)
+
+delete from platform_job a where not exist(select b.id from platform_books b where b.job_id=a.id and b.id in (298,297,296,294,290,293))
diff --git a/server/system_service/src/main/java/com/doumee/api/BaseController.java b/server/system_service/src/main/java/com/doumee/api/BaseController.java
index 6386efc..b335103 100644
--- a/server/system_service/src/main/java/com/doumee/api/BaseController.java
+++ b/server/system_service/src/main/java/com/doumee/api/BaseController.java
@@ -60,10 +60,17 @@
     }
 
     public List<Integer> getIdList(String ids){
+        if(StringUtils.isBlank(ids)){
+            return null;
+        }
         String [] idArray = ids.split(",");
         List<Integer> idList = new ArrayList<>();
         for (String id : idArray) {
-            idList.add(Integer.valueOf(id));
+            try {
+                idList.add(Integer.valueOf(id));
+            }catch (Exception e){
+
+            }
         }
         return idList;
     }
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 2a1305d..16072d0 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
@@ -88,7 +88,7 @@
                     }catch (Exception e){
                     }*/
                 } else {
-                    throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),request.getRequestURI()+"鏈櫥褰�");
+                    throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),request.getRequestURI()+"鏈櫥褰曪紝TOKEN缂哄け");
                 }
             }
         }else{
@@ -130,11 +130,11 @@
         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(),"鐢ㄦ埛鐧婚檰宸插け鏁堬紝璇烽噸鏂扮櫥闄嗭紒");
         }
+        stringRedisTemplate.expire(Constants.REDIS_TOKEN_KEY+token,this.expireTime, TimeUnit.MILLISECONDS);
         //鏉冮檺鍒ゆ柇------------
         return  user;
     }
diff --git a/server/system_service/src/main/java/com/doumee/core/constants/ResponseStatus.java b/server/system_service/src/main/java/com/doumee/core/constants/ResponseStatus.java
index 4796b3f..c39af5d 100644
--- a/server/system_service/src/main/java/com/doumee/core/constants/ResponseStatus.java
+++ b/server/system_service/src/main/java/com/doumee/core/constants/ResponseStatus.java
@@ -13,7 +13,7 @@
 public enum ResponseStatus {
     // 400寮�澶磋〃绀哄弬鏁伴敊璇�
     BAD_REQUEST(4000, "鍙傛暟閿欒"),
-    DATA_EMPTY(4001, "鎵句笉鍒扮洰鏍囨暟鎹�"),
+    DATA_EMPTY(4001, "鎵句笉鍒扮洰鏍囨暟鎹�,璇ヨ褰曚笉瀛樺湪鎴栧凡琚垹闄�"),
     DATA_EXISTS(4002, "璁板綍宸插瓨鍦�"),
     PWD_INCORRECT(4003, "瀵嗙爜涓嶆纭�"),
     VERIFICATION_CODE_INCORRECT(4004, "楠岃瘉鐮佷笉姝g‘鎴栧凡杩囨湡"),
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 2b7b0ad..95c9d88 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
@@ -752,6 +752,10 @@
         PT_FK(1,"鏅�氳瀹�"),
         NB_FK(2,"鍐呴儴浜哄憳"),
 
+        COMPANY_TYPE_REL(0,"鐩稿叧鏂圭粍缁�"),
+        COMPANY_TYPE_INTERNAL(1,"鍐呴儴浜哄憳"),
+        COMPANY_TYPE_FK(3,"璁垮"),
+
         /** 杩涘満绫诲瀷 **/
         OUT(0,"鍑�"),
         IN(1,"杩�");
@@ -1391,6 +1395,7 @@
         HIDDEN_DANGER_SUBMIT(0, "闅愭偅闅忔墜鎷嶆彁鎶�", "闅愭偅闅忔墜鎷嶆彁鎶�"),
         HIDDEN_DANGER_DEAL_BEFORE(1, "闅愭偅闅忔墜鎷嶅鐞嗗墠", "闅愭偅闅忔墜鎷嶅鐞嗗墠"),
         HIDDEN_DANGER_DEAL_AFTER(2, "闅愭偅闅忔墜鎷嶅鐞嗗悗 ", "闅愭偅闅忔墜鎷嶅鐞嗗悗 "),
+        MEETING_BOOKS(4, "浼氳鏂囦欢 ", "浼氳鏂囦欢 "),
         ;
         // 鎴愬憳鍙橀噺
         private String name;
diff --git a/server/system_service/src/main/java/com/doumee/dao/timer/scheduler/QuartzManage.java b/server/system_service/src/main/java/com/doumee/dao/timer/scheduler/QuartzManage.java
index 357ab0f..e19936c 100644
--- a/server/system_service/src/main/java/com/doumee/dao/timer/scheduler/QuartzManage.java
+++ b/server/system_service/src/main/java/com/doumee/dao/timer/scheduler/QuartzManage.java
@@ -41,9 +41,11 @@
     public CronTrigger getCronTrigger (Integer jobId){
         try {
             return (CronTrigger) this.scheduler.getTrigger(getTriggerKey(jobId)) ;
-        } catch (SchedulerException e){
-            throw new RuntimeException("getCronTrigger Fail",e) ;
+        }catch (Exception e){
+            e.printStackTrace();
+//            throw new RuntimeException("createJob Fail",e) ;
         }
+        return null;
     }
 
     /**
@@ -69,8 +71,9 @@
             scheduler.scheduleJob(jobDetail,trigger) ;
             // 鐘舵�佹牎楠�
             checkStop(quartzJob) ;
-        } catch (SchedulerException e){
-            throw new RuntimeException("createJob Fail",e) ;
+        } catch (Exception e){
+            e.printStackTrace();
+//            throw new RuntimeException("createJob Fail",e) ;
         }
     }
 
@@ -93,8 +96,9 @@
             scheduler.rescheduleJob(triggerKey, trigger);
             // 鐘舵�佹牎楠�
             checkStop(quartzJob) ;
-        } catch (SchedulerException e) {
-            throw new RuntimeException("updateJob Fail",e) ;
+        }catch (Exception e){
+            e.printStackTrace();
+//            throw new RuntimeException("createJob Fail",e) ;
         }
     }
 
@@ -128,8 +132,9 @@
             JobDataMap dataMap = new JobDataMap() ;
             dataMap.put(QuartzJob.JOB_PARAM_KEY,quartzJob);
             this.scheduler.triggerJob(getJobKey(quartzJob.getId()),dataMap);
-        } catch (SchedulerException e){
-            throw new RuntimeException("run Fail",e) ;
+        } catch (Exception e){
+            e.printStackTrace();
+//            throw new RuntimeException("createJob Fail",e) ;
         }
     }
 
@@ -141,8 +146,9 @@
             if(quartzJob.getState() != JobState.JOB_RUN.getStatus()){
                 this.scheduler.pauseJob(getJobKey(quartzJob.getId()));
             }
-        } catch (SchedulerException e){
-            throw new RuntimeException("pauseJob Fail",e) ;
+        } catch (Exception e){
+            e.printStackTrace();
+//            throw new RuntimeException("createJob Fail",e) ;
         }
     }
 
diff --git a/server/system_service/src/main/java/com/doumee/service/timer/QuartzJobService.java b/server/system_service/src/main/java/com/doumee/service/timer/QuartzJobService.java
index c765b7f..b2e0c19 100644
--- a/server/system_service/src/main/java/com/doumee/service/timer/QuartzJobService.java
+++ b/server/system_service/src/main/java/com/doumee/service/timer/QuartzJobService.java
@@ -41,6 +41,11 @@
      * 鏂板浠诲姟
      */
     public int insert(QuartzJob quartzJob) {
+        if(quartzJobMapper.selectCount(new QueryWrapper<QuartzJob>().lambda()
+                .eq(QuartzJob::getModule,quartzJob.getModule())
+                .eq(QuartzJob::getBeanName,quartzJob.getBeanName())) >0){
+            throw  new BusinessException(ResponseStatus.DATA_EXISTS);
+        }
         int flag = quartzJobMapper.insert(quartzJob) ;
         if (flag > 0){
             quartzManage.createJob(quartzJob) ;
@@ -52,6 +57,12 @@
      * 鏇存柊浠诲姟
      */
     public int update(QuartzJob quartzJob) {
+        if(quartzJobMapper.selectCount(new QueryWrapper<QuartzJob>().lambda()
+                .eq(QuartzJob::getModule,quartzJob.getModule())
+                .ne(QuartzJob::getId,quartzJob.getId())
+                .eq(QuartzJob::getBeanName,quartzJob.getBeanName())) >0){
+            throw  new BusinessException(ResponseStatus.DATA_EXISTS);
+        }
         int flag = quartzJobMapper.updateById(quartzJob);
         if (flag > 0){
             quartzManage.updateJob(quartzJob);
diff --git a/server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java b/server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java
index 3e0284d..c6b666b 100644
--- a/server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java
+++ b/server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java
@@ -73,6 +73,9 @@
     @ApiOperation("銆愯瀹㈢郴缁熴�戣瀹㈡暟鎹嵆灏嗚秴鏃堕璀�")
     @GetMapping("/timer/visit/visitTimeOut")
     ApiResponse visitTimeOut() ;
+    @ApiOperation("銆愯瀹㈢郴缁熴�戣瀹㈢敵璇峰緟瀹℃壒璁板綍鎴鏃堕棿宸茶繃鑷姩鍙栨秷棰勭害")
+    @GetMapping("/timer/visit/visitNoCheckCancel")
+    ApiResponse visitNoCheckCancel() ;
     @ApiOperation("銆愭暟瀛楀寲鏈堝彴銆戞湀鍙板仠闈犺秴鏃舵姤璀︿笟鍔�")
     @GetMapping("/timer/platformJob/platformJobTimer")
     ApiResponse platformJobTimer();
diff --git a/server/system_timer/src/main/java/com/doumee/jobs/service/TimerBizSevice.java b/server/system_timer/src/main/java/com/doumee/jobs/service/TimerBizSevice.java
index c427e2a..9fcb389 100644
--- a/server/system_timer/src/main/java/com/doumee/jobs/service/TimerBizSevice.java
+++ b/server/system_timer/src/main/java/com/doumee/jobs/service/TimerBizSevice.java
@@ -23,17 +23,23 @@
      */
     @PostConstruct
     public void init () {
-        LambdaQueryWrapper<QuartzJob> queryWrapper = new LambdaQueryWrapper<>() ;
-        queryWrapper.in(QuartzJob::getState, JobState.JOB_RUN.getStatus(),JobState.JOB_STOP.getStatus());
-        List<QuartzJob> jobList = quartzJobMapper.selectList(queryWrapper);
-        jobList.forEach(quartzJob -> {
-            CronTrigger cronTrigger = quartzManage.getCronTrigger(quartzJob.getId()) ;
-            if (Objects.isNull(cronTrigger)){
-                quartzManage.createJob(quartzJob);
-            } else {
-                quartzManage.updateJob(quartzJob);
-            }
-        });
+            LambdaQueryWrapper<QuartzJob> queryWrapper = new LambdaQueryWrapper<>() ;
+            queryWrapper.in(QuartzJob::getState, JobState.JOB_RUN.getStatus(),JobState.JOB_STOP.getStatus());
+            List<QuartzJob> jobList = quartzJobMapper.selectList(queryWrapper);
+            jobList.forEach(quartzJob -> {
+                try {
+                    CronTrigger cronTrigger = quartzManage.getCronTrigger(quartzJob.getId()) ;
+                    if (Objects.isNull(cronTrigger)){
+                        quartzManage.createJob(quartzJob);
+                    } else {
+                        quartzManage.updateJob(quartzJob);
+                    }
+                }catch (Exception e){
+                    e.printStackTrace();
+                }
+            });
+
+
     }
 
 }
diff --git a/server/visits/admin_timer/src/main/java/com/doumee/api/HkVisitTimerController.java b/server/visits/admin_timer/src/main/java/com/doumee/api/HkVisitTimerController.java
index c89eeb4..a4d39cd 100644
--- a/server/visits/admin_timer/src/main/java/com/doumee/api/HkVisitTimerController.java
+++ b/server/visits/admin_timer/src/main/java/com/doumee/api/HkVisitTimerController.java
@@ -65,5 +65,11 @@
         visitsService.syncTimeOutData();
         return ApiResponse.success("璁垮鍗冲皢瓒呮椂棰勮");
     }
+    @ApiOperation("寰呭鎵硅褰曡秴鏃惰嚜鍔ㄥ彇娑堥绾�")
+    @GetMapping("/visitNoCheckCancel")
+    public ApiResponse visitNoCheckCancel() {
+        visitsService.visitNoCheckCancel();
+        return ApiResponse.success("寰呭鎵硅褰曡秴鏃惰嚜鍔ㄥ彇娑堥绾�");
+    }
 
 }
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java
index c81a174..05737bd 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java
@@ -138,6 +138,12 @@
     public ApiResponse<List<PlatformGroup>>  getPlatformGroupList (@RequestBody PlatformDataDTO platformDataDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
         return ApiResponse.success(platformGroupService.getAllPlatformGroup(platformDataDTO,getLoginUser(token)));
     }
+    @ApiOperation("鑾峰彇鏈堝彴缁勪俊鎭�(骞冲彴绔級")
+    @PostMapping("/getPlatformGroupListNew")
+    @CloudRequiredPermission("business:platform:query")
+    public ApiResponse<List<PlatformGroup>>  getPlatformGroupListNew (@RequestBody PlatformDataDTO platformDataDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        return ApiResponse.success(platformGroupService.getAllPlatformGroup(platformDataDTO,getLoginUser(token)));
+    }
 
     @ApiOperation("鑾峰彇鏈堝彴浠诲姟淇℃伅")
     @GetMapping("/getPlatformWorkData")
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 c897310..0732768 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
@@ -75,7 +75,19 @@
     @GetMapping("/updateTotalNum")
     @CloudRequiredPermission("business:platformjob:update")
     public ApiResponse updateTotalNum(@RequestParam String ids,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
-        wmsService.computjobTotalNum(this.getIdList(ids));
+        List<Integer>  idList =this.getIdList(ids);
+        if(idList == null || idList.size()==0){
+            idList = new ArrayList<>();
+            PlatformJob param = new PlatformJob();
+            param.setIsdeleted(Constants.ZERO);
+            param.setOrigin(Constants.ONE);
+            List<PlatformJob> list= platformJobService.findList(param);
+
+            for(PlatformJob j :list){
+                idList.add(j.getId());
+            }
+        }
+        wmsService.computjobTotalNum(idList);
         return ApiResponse.success(null);
     }
 
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatConstants.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatConstants.java
index f558446..f5d6ad6 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatConstants.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatConstants.java
@@ -30,6 +30,8 @@
         String visitAuditSuccess = "visitAuditSuccess";
         //  瀹℃壒椹冲洖缁欑敵璇蜂汉锛氱敵璇峰凡琚┏鍥�
         String visitAuditFail = "visitAuditFail";
+        //鏂瑰彲鐢宠涓嬪彂澶辫触
+        String visitApplyHkFail = "visitApplyHkFail";
         // 缁欏鎵逛汉锛氱敵璇峰緟鎮ㄥ鎵�
         String visitWaitAudit = "visitWaitAudit";
     }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/CarEventDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/CarEventDTO.java
index 8b2fa0e..8821a42 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/CarEventDTO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/CarEventDTO.java
@@ -82,7 +82,6 @@
     private String personPhone;
 
     @ApiModelProperty(value = "浜哄憳绫诲瀷")
-    @ExcelColumn(name="浜哄憳绫诲瀷",index = 6,width = 10,valueMapping = "0=鍔冲姟璁垮;1=鏅�氳瀹�;2=鍐呴儴浜哄憳;")
     private Integer personType;
 
     @ApiModelProperty(value = "浜哄憳韬唤璇佸彿")
@@ -96,7 +95,8 @@
     private String visitCompanyName;
 
     @ApiModelProperty(value = "缁勭粐绫诲瀷锛�0=鐩稿叧鏂癸紱1=鍐呴儴")
-    private String companyType;
+    @ExcelColumn(name="浜哄憳绫诲瀷",index = 6,width = 10,valueMapping = "0=鐩稿叧鏂圭粍缁�;1=鍐呴儴浜哄憳;2=璁垮;")
+    private Integer companyType;
 
     @ApiModelProperty(value = "杞﹁締绫诲瀷 0鍐呴儴杞﹁締 1鐩稿叧鏂硅溅杈� 2璁垮杞﹁締 3鍐呰繍鐗╂祦杞� 4澶栧崗杞﹁締 5甯傚叕鍙稿嵏璐ц溅 ")
     private String carType;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Approve.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Approve.java
index b815882..36a8235 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Approve.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Approve.java
@@ -80,8 +80,8 @@
     @ExcelColumn(name="瀹℃壒澶囨敞")
     private String checkInfo;
 
-    @ApiModelProperty(value = "瀹℃壒浜�")
-    @ExcelColumn(name="瀹℃壒浜�")
+    @ApiModelProperty(value = "瀹為檯瀹℃壒浜�")
+    @ExcelColumn(name="瀹為檯瀹℃壒浜�")
     private String cheorId;
 
     @ApiModelProperty(value = "瀹℃壒鏃堕棿")
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarUseBook.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarUseBook.java
index df1c8d0..3376b70 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarUseBook.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarUseBook.java
@@ -183,4 +183,9 @@
     @ApiModelProperty(value = "瀹℃壒淇℃伅鏁版嵁")
     @TableField(exist = false)
     private ApproveDataVO approveDateVO;
+
+    @ApiModelProperty(value = "鏄惁鍏锋湁鎿嶄綔鏉冮檺(鎾ゅ洖锛�")
+    @TableField(exist = false)
+    private Integer  hasRole ;
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDanger.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDanger.java
index baf09d4..862e7ea 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDanger.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDanger.java
@@ -58,7 +58,7 @@
     private Integer areaId;
 
     @ApiModelProperty(value = "鐘舵�� 0寰呭鐞� 1宸插鐞� 2涓嶅鐞�", example = "1")
-    @ExcelColumn(name="澶勭悊缁撴灉" ,valueMapping ="0=0寰呭鐞�;1=宸插鐞�;2=涓嶅鐞�;",index = 5,width = 6)
+    @ExcelColumn(name="澶勭悊缁撴灉" ,valueMapping ="0=0寰呭鐞�;1=宸插鐞�;2=涓嶅鐞�;",index = 6,width = 6)
     private Integer status;
 
     @ApiModelProperty(value = "鐢宠澶勭悊浜虹紪鐮�(鍏宠仈member)", example = "1")
@@ -70,7 +70,7 @@
     private Integer cateId;
 
     @ApiModelProperty(value = "鎯呭喌璇存槑")
-//    @ExcelColumn(name="鎯呭喌璇存槑")
+    @ExcelColumn(name="闂鎻忚堪",index = 3,width = 20)
     private String content;
 
     @ApiModelProperty(value = "鎻愭姤浜虹紪鐮侊紙鍏宠仈member锛�", example = "1")
@@ -95,17 +95,18 @@
 
     @ApiModelProperty(value = "鐢宠浜哄鍚�", example = "1")
     @TableField(exist = false)
-    @ExcelColumn(name="鎻愭姤浜哄鍚�",index =3,width = 6)
+    @ExcelColumn(name="鎻愭姤浜哄鍚�",index =4,width = 6)
     private String memberName;
     @ApiModelProperty(value = "鐢宠浜烘墍灞炵粍缁囧悕绉�", example = "1")
     @TableField(exist = false)
-    @ExcelColumn(name="鎵�灞炵粍缁�",index = 4)
+    @ExcelColumn(name="鎵�灞炵粍缁�",index = 5,width = 15)
     private String companyName;
     @ApiModelProperty(value = "璐d换閮ㄩ棬鍚嶇О", example = "1")
     @TableField(exist = false)
     @ExcelColumn(name="璐d换閮ㄩ棬鍚嶇О",index = 0,width = 10)
     private String dutyCompanyName;
     @ApiModelProperty(value = "鐢宠浜烘墜鏈哄彿", example = "1")
+
     @TableField(exist = false)
 //    @ExcelColumn(name="鐢宠浜烘墜鏈哄彿")
     private String memberPhone;
@@ -144,12 +145,12 @@
 
     @ApiModelProperty(value = "鎻愭姤鏃堕棿")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @ExcelColumn(name="鎻愭姤鏃堕棿",index = 6,dateFormat = "yyyy-MM-dd HH:mm:ss",width = 18)
+    @ExcelColumn(name="鎻愭姤鏃堕棿",index = 7,dateFormat = "yyyy-MM-dd HH:mm:ss",width = 18)
     private Date submitTime;
 
     @ApiModelProperty(value = "澶勭悊鏃堕棿锛堟暣鏀�/閫�鍥炰娇鐢級")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @ExcelColumn(name="澶勭悊鏃堕棿",index = 7 ,dateFormat = "yyyy-MM-dd HH:mm:ss",width = 18)
+    @ExcelColumn(name="澶勭悊鏃堕棿",index = 8 ,dateFormat = "yyyy-MM-dd HH:mm:ss",width = 18)
     private Date dealTime;
 
     @ApiModelProperty(value = "闄勪欢淇℃伅")
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java
index 64f59a6..c9bbdcf 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java
@@ -425,6 +425,7 @@
     private Integer worktimeOutAlarmTime;
 
 
+
     public void dealTime(){
         if(Constants.equalsInteger(this.getStatus(),Constants.PlatformJobStatus.WAIT_CONFIRM.getKey())
                 || Constants.equalsInteger(this.getStatus(),Constants.PlatformJobStatus.WART_SIGN_IN.getKey()) ){
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CarEventVo.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CarEventVo.java
index c766c4c..6d93f74 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CarEventVo.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CarEventVo.java
@@ -14,7 +14,7 @@
     private String plateNos;
 
     @ApiModelProperty(value = "浜哄憳绫诲瀷")
-    @ExcelColumn(name="褰掑睘鐢ㄦ埛绫诲瀷")
+    @ExcelColumn(name="浜哄憳绫诲瀷")
     private String typeName;
 
     @ApiModelProperty(value = "濮撳悕")
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 3cfa501..3b9cfce 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
@@ -152,4 +152,5 @@
      * 鍗冲皢瓒呮椂閫氱煡
      */
     void syncTimeOutData();
+    void visitNoCheckCancel();
 }
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 ddb1602..f039bff 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
@@ -286,16 +286,16 @@
             carEventExcel.getRecords().stream().forEach(obj->{
                 CarEventVo vo = new CarEventVo();
                 vo.setEventTypeName(HKConstants.EventTypes.getName(obj.getEventType())) ;
-                if(null != obj.getPersonType()) {
-                    if(Constants.ZERO == obj.getPersonType()){
-                        vo.setTypeName(Constants.Status.LW_FK.getDes());
-                    }else if(Constants.ONE == obj.getPersonType()) {
-                        vo.setTypeName(Constants.Status.PT_FK.getDes());
-                    }else {
-                        vo.setTypeName(Constants.Status.NB_FK.getDes());
+                if(obj.getCompanyType() == null){
+                    obj.setCompanyType(Constants.THREE);
+                }
+                vo.setTypeName(Constants.Status.COMPANY_TYPE_FK.getDes());
+                if(null != obj.getCompanyType()) {
+                    if(Constants.ZERO == obj.getCompanyType()){
+                        vo.setTypeName(Constants.Status.COMPANY_TYPE_REL.getDes());
+                    }else if(Constants.ONE == obj.getCompanyType()) {
+                        vo.setTypeName(Constants.Status.COMPANY_TYPE_INTERNAL.getDes());
                     }
-                }else {
-                    vo.setTypeName("");
                 }
                 vo.setPlateNos(obj.getPlateNos());
                 vo.setPersonName(obj.getPersonName());
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 0712acb..4e77c13 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
@@ -36,6 +36,7 @@
 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.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -181,6 +182,7 @@
         queryWrapper.select("t1.name",CarUseBook::getMemberName);
         queryWrapper.leftJoin(Member.class,Member::getId,CarUseBook::getMemberId)
                 .eq(CarUseBook::getId,id)
+                .eq(CarUseBook::getIsdeleted,Constants.ZERO)
                 .last("limit 1"  );
         CarUseBook model = carUseBookMapper.selectJoinOne(CarUseBook.class,queryWrapper);
         if(model==null ||Constants.equalsInteger(Constants.ONE,model.getIsdeleted())){
@@ -246,15 +248,14 @@
                 .leftJoin(Member.class,Member::getId,CarUseBook::getDriverId)
                 .leftJoin("company t4 on t1.company_id=t4.id")
                 .eq(CarUseBook::getId,id)
+                .eq(CarUseBook::getIsdeleted,Constants.ZERO)
                 .last("limit 1"  );
         CarUseBook model = carUseBookMapper.selectJoinOne(CarUseBook.class,queryWrapper);
         if(Objects.isNull(model)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
-        ApproveDataVO approveDataVO = approveService.arrangeApprovedData(id,
-                Constants.equalsInteger(model.getType(),Constants.ZERO)?3:4,
-                memberId);
-        List<Approve> approveList = approveDataVO.getApproveList();
+        model.setApproveDateVO(getApproveDataVO(memberId,model));
+        List<Approve> approveList = model.getApproveDateVO().getApproveList();
         if(Constants.equalsInteger(model.getStatus(),Constants.FOUR)){
             String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
                     +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
@@ -277,7 +278,6 @@
             approve.setCheckDate(model.getCancelTime());
             approveList.add(approve);
         }
-        model.setApproveDateVO(approveDataVO);
 
         Notices notices = noticesJoinMapper.selectOne(new QueryWrapper<Notices>().lambda()
                 .eq(Notices::getObjId,id)
@@ -295,6 +295,13 @@
 
 
         return  model;
+    }
+
+    private ApproveDataVO getApproveDataVO( Integer memberId,CarUseBook model) {
+        ApproveDataVO approveDataVO = approveService.arrangeApprovedData(model.getId(),
+                Constants.equalsInteger(model.getType(),Constants.ZERO)?3:4,
+                memberId);
+        return approveDataVO;
     }
 
     @Override
@@ -374,8 +381,8 @@
 
                 .and(StringUtils.isNotBlank(pageWrap.getModel().getMemberName()), ms->ms.like(Member::getName,pageWrap.getModel().getMemberName())
                         .or().like(Member::getPhone,pageWrap.getModel().getMemberName()))
-                .ge(Objects.nonNull(pageWrap.getModel().getQueryStartTime()), CarUseBook::getPlanUseDate,pageWrap.getModel().getQueryStartTime())
-                .le(Objects.nonNull(pageWrap.getModel().getQueryEndTime()),CarUseBook::getPlanUseDate,pageWrap.getModel().getQueryEndTime())
+                .ge(Objects.nonNull(pageWrap.getModel().getQueryStartTime()), CarUseBook::getCreateDate,pageWrap.getModel().getQueryStartTime())
+                .le(Objects.nonNull(pageWrap.getModel().getQueryEndTime()),CarUseBook::getCreateDate,pageWrap.getModel().getQueryEndTime())
                 .orderByDesc(Visits::getCreateDate)
         ;
         for(PageWrap.SortData sortData: pageWrap.getSorts()) {
@@ -385,7 +392,13 @@
                 queryWrapper.orderByAsc(sortData.getProperty());
             }
         }
-        return PageData.from(carUseBookMapper.selectJoinPage(page, CarUseBook.class, queryWrapper));
+        PageData<CarUseBook> result =PageData.from(carUseBookMapper.selectJoinPage(page, CarUseBook.class, queryWrapper));
+        if(result!=null && result.getRecords()!=null){
+            for(CarUseBook carUseBook:result.getRecords()){
+                carUseBook.setHasRole(getHasBackRoleBiz(carUseBook,pageWrap.getModel().getLoginUserInfo()));
+            }
+        }
+        return result;
     }
 
     @Override
@@ -414,6 +427,7 @@
                         .selectAs(Member::getName,CarUseBook::getMemberName)
                         .selectAs(Member::getPhone,CarUseBook::getMemberMobile)
                         .leftJoin(Member.class,Member::getId,CarUseBook::getMemberId)
+                        .eq(CarUseBook::getIsdeleted,Constants.ZERO)
                         .eq(CarUseBook::getCarId,carUseBook.getCarId())
                         .in(CarUseBook::getStatus,0,1,2)
                         .apply(" ( " +
@@ -525,9 +539,12 @@
     @Override
     public void revoke(Integer id, String info, LoginUserInfo loginUserInfo){
        CarUseBook carUseBook = carUseBookMapper.selectById(id);
-       if(Objects.isNull(carUseBook)){
-           throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鐢ㄨ溅鐢宠淇℃伅");
-       }
+        if(Objects.isNull(carUseBook) || Constants.equalsInteger(carUseBook.getIsdeleted(),Constants.ONE)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鐢ㄨ溅鐢宠淇℃伅");
+        }
+        if(getHasBackRoleBiz(carUseBook,loginUserInfo) == Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝鏃犳潈闄愯鎾ら攢鎿嶄綔锛�");
+        }
        carUseBook.setCancelInfo(info);
        carUseBook.setCancelTime(new Date());
        carUseBook.setCancelStatus(Constants.ONE);
@@ -581,5 +598,41 @@
         }
     }
 
+    /**
+     * 鏌ヨ褰撳墠鐧婚檰鐢ㄦ埛鏄惁鍏锋湁閫�鍥炵敵璇风殑鏉冮檺
+     * 鐢宠浜哄彧鑳藉湪寰呭鏍镐箣鍓嶆挙閿�锛屾淳杞﹀憳鍙互鍦ㄥ緟瀹℃牳銆佸鏍镐腑銆佸鎵归�氳繃杩涜鎾ら攢
+     * @param carUseBook
+     * @param loginUserInfo
+     * @return
+     */
+    private int getHasBackRoleBiz(CarUseBook carUseBook, LoginUserInfo loginUserInfo) {
+        if(Constants.equalsInteger(carUseBook.getCreator(),loginUserInfo.getId())
+                && Constants.equalsInteger(carUseBook.getStatus(),Constants.ZERO)){
+            //鐢宠浜哄彲浠ユ挙閿�鑷繁鐢宠涓殑鐢宠璁板綍
+            return  Constants.ONE;
+        }
+        if(Constants.equalsInteger(carUseBook.getStatus(),Constants.TWO) && carUseBook.getStartTime()!=null
+                 && System.currentTimeMillis() >= carUseBook.getStartTime().getTime()){
+            //瀹℃壒閫氳繃锛屼絾鏄� 宸插埌鍙戣溅鏃堕棿锛屼笉鍙互鎾ら攢
+            return Constants.ZERO;
+        }
+        if(!(Constants.equalsInteger(carUseBook.getStatus(),Constants.ZERO))
+                ||Constants.equalsInteger(carUseBook.getStatus(),Constants.ONE)
+                ||Constants.equalsInteger(carUseBook.getStatus(),Constants.TWO)){
+            //瀹℃壒浜哄彲浠ユ挙閿� 鑷繁瀹℃壒鐨勭敵璇疯褰�
+            Approve approve = approveJoinMapper.selectOne(new QueryWrapper<Approve>().lambda()
+                    .eq(Approve::getIsdeleted,Constants.ZERO)
+                    .ge(Approve::getLevel,Constants.ZERO)
+                    .eq(Approve::getChekorId,loginUserInfo.getId())
+                    .eq(Approve::getObjId,carUseBook.getId())
+                    .eq(Approve::getObjType,carUseBook.getType()==0?3:4)
+                    .last("limit 1"));
+            if(approve!=null){
+                return Constants.ONE;
+            }
+        }
+        return Constants.ZERO;
+    }
+
 
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java
index 2612c9a..2c5ced4 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java
@@ -131,24 +131,25 @@
         }
         Date date = new Date();
         //鍒犻櫎宸叉巿鏉冧笅鍙戠殑鍖呮湡鎺堟潈
-        dealCancelBookBiz(car.getCode(),date);
-        Cars model = new Cars();
-        model.setEditDate(date);
-        model.setEdirot(user.getId());
-        model.setId(id);
-        model.setIsdeleted(Constants.ONE);
+        dealCancelBookBiz(car.getCode(),date,parkBookJoinMapper);
+//        Cars model = new Cars();
+//        model.setEditDate(date);
+//        model.setEdirot(user.getId());
+//        model.setId(id);
+//        model.setIsdeleted(Constants.ONE);
         carsMapper.update(null,new UpdateWrapper<Cars>().lambda()
-                .eq(Cars::getId,model.getId())
+                .eq(Cars::getId,id)
                 .set(Cars::getStartTime,null)
                 .set(Cars::getEndTime,null)
+                .set(Cars::getAuthTimeType,null)
                 .set(Cars::getAuthStatus,Constants.ZERO)
                 .set(Cars::getIsdeleted,Constants.ONE)
-                .set(Cars::getEditDate,model.getEditDate())
-                .set(Cars::getEdirot,model.getEdirot())
+                .set(Cars::getEditDate,date)
+                .set(Cars::getEdirot,user.getId())
         );
-        carsMapper.updateById(model);
+//        carsMapper.updateById(model);
     }
-    public   boolean  dealCancelBookBiz(String code,Date date){
+    public static    boolean  dealCancelBookBiz(String code,Date date,ParkBookMapper parkBookJoinMapper){
 
         List<ParkBook> parkBooks = parkBookJoinMapper.selectJoinList(ParkBook.class,new MPJLambdaWrapper<ParkBook>()
                 .selectAll(ParkBook.class )
@@ -310,7 +311,7 @@
         model.setHkStatus(Constants.ZERO);
         model.setRemark("");
         model.setAuthStatus(Constants.ZERO);
-        dealCancelBookBiz(car.getCode(),model.getEditDate());
+        dealCancelBookBiz(car.getCode(),model.getEditDate(),parkBookJoinMapper);
         carsMapper.update(null,new UpdateWrapper<Cars>().lambda()
                 .eq(Cars::getId,model.getId())
                 .set(Cars::getAuthStatus,Constants.ZERO)
@@ -321,6 +322,7 @@
                 .set(Cars::getEditDate,model.getEditDate())
                 .set(Cars::getEdirot,model.getEdirot())
                 .set(Cars::getMemberId,model.getMemberId())
+                .set(Cars::getAuthTimeType,null)
                 .set(Cars::getStartTime,null)
                 .set(Cars::getEndTime,null)
         );
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerParamServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerParamServiceImpl.java
index 67cda58..0a6c8e1 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerParamServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerParamServiceImpl.java
@@ -44,13 +44,13 @@
         if(loginUserInfo == null){
             loginUserInfo = model.getLoginUserInfo();
         }
-        if(hiddenDangerParamMapper.selectCount(new QueryWrapper<HiddenDangerParam>().lambda()
+      /*  if(hiddenDangerParamMapper.selectCount(new QueryWrapper<HiddenDangerParam>().lambda()
                 .eq(HiddenDangerParam::getType,model.getType())
                 .eq(HiddenDangerParam::getName,model.getName())
                 .eq(HiddenDangerParam::getIsdeleted,Constants.ZERO)
         )>Constants.ZERO){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ュ悕绉板凡瀛樺湪!");
-        }
+        }*/
         if(Constants.equalsInteger(model.getType(),Constants.ZERO)){
             //濡傛灉鏄尯鍩熼厤缃�
             if(model.getCompanyId() == null){
@@ -130,14 +130,14 @@
         if(hiddenDangerParam == null || Constants.equalsInteger(hiddenDangerParam.getIsdeleted(),Constants.ONE)){
             throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝璇ラ厤缃俊鎭笉瀛樺湪锛岃杩斿洖鍒锋柊椤甸潰閲嶈瘯锛�");
         }
-        if(hiddenDangerParamMapper.selectCount(new QueryWrapper<HiddenDangerParam>().lambda()
+    /*    if(hiddenDangerParamMapper.selectCount(new QueryWrapper<HiddenDangerParam>().lambda()
                 .eq(HiddenDangerParam::getType,model.getType())
                 .eq(HiddenDangerParam::getName,model.getName())
                 .eq(HiddenDangerParam::getIsdeleted,Constants.ZERO)
                 .ne(HiddenDangerParam::getId,model.getId())
         )>Constants.ZERO){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ュ悕绉板凡瀛樺湪!");
-        }
+        }*/
         if(Constants.equalsInteger(hiddenDangerParam.getType(),Constants.ZERO)){
             //濡傛灉鏄尯鍩熼厤缃�,鏍¢獙瀹夊叏鍛樹俊鎭槸鍚︽纭�
             if(model.getCompanyId() == null){
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 38577a8..6cafaea 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
@@ -334,7 +334,9 @@
                 .leftJoin("company t4 on t1.company_id=t4.id")
                 .leftJoin("company t5 on t2.company_id=t5.id");
         queryWrapper
-                .eq(HiddenDanger::getId, id).last("limit 1");
+                .eq(HiddenDanger::getId, id)
+                .eq(HiddenDanger::getIsdeleted, Constants.ZERO)
+                .last("limit 1");
 
         HiddenDanger model =  hiddenDangerMapper.selectJoinOne(HiddenDanger.class,queryWrapper);
         if(model ==null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
@@ -434,7 +436,10 @@
         if(userInfo!=null && userInfo.getCompanyIdList()!=null){
             if(  userInfo.getCompanyIdList().size() ==0){
                 //鍙兘鐪嬭嚜宸�
-                queryWrapper.eq(HiddenDanger::getCreator,userInfo.getId());
+                queryWrapper.and(w->{
+                    w.eq(HiddenDanger::getCreator,userInfo.getId()).or().
+                    eq(HiddenDanger::getCheckUserId,userInfo.getId());
+                });
             }else{
                 queryWrapper.in("t1.company_id" ,userInfo.getCompanyIdList());
             }
@@ -496,6 +501,9 @@
         hiddenDanger.setCheckDate(hiddenDanger.getEditDate());
         hiddenDangerMapper.updateById(hiddenDanger);
         HiddenDanger model = hiddenDangerMapper.selectById(hiddenDanger.getId());
+        if(Objects.isNull(model) ||Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY );
+        }
         HiddenDangerParam hiddenDangerCate = hiddenDangerParamMapper.selectById(model.getCateId());
         if(Objects.isNull(hiddenDangerCate)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌闅愭偅绫诲瀷");
@@ -568,7 +576,7 @@
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         HiddenDanger model = hiddenDangerMapper.selectById(hiddenDanger.getId());
-        if(Objects.isNull(model)){
+        if(Objects.isNull(model) ||Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌闅愭偅鏁版嵁");
         }
         if (!model.getStatus().equals(Constants.ZERO)) {
@@ -669,8 +677,9 @@
                 .selectAll(HiddenDanger.class)
                 .selectAs(Member::getName,HiddenDanger::getCheckorName)
                         .leftJoin(Member.class,Member::getId,HiddenDanger::getCheckUserId)
-                .eq(HiddenDanger::getId,hiddenDanger.getId()));
-        if(Objects.isNull(model)){
+                .eq(HiddenDanger::getId,hiddenDanger.getId())
+        );
+        if(Objects.isNull(model) ||Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌闅愭偅鏁版嵁");
         }
         if (!Constants.equalsInteger(model.getStatus(),Constants.ZERO)) {
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 98d1e14..e994fcc 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
@@ -126,6 +126,10 @@
     private TmsService tmsService;
     @Autowired
     private SystemUserMapper systemUserMapper;
+    @Autowired
+    private CarsMapper carsMapper;
+    @Autowired
+    private ParkBookMapper parkBookMapper;
 
     @Autowired
     @Lazy
@@ -579,11 +583,13 @@
     @Override
     @Transactional(rollbackFor = {BusinessException.class,Exception.class})
     public void deleteById(Integer id,LoginUserInfo loginUserInfo) {
+
+        Date date =new Date();
         Member member=new Member();
         member.setId(id);
         member.setIsdeleted(Constants.ONE);
         member.setEditor(loginUserInfo.getId());
-        member.setEditDate(new Date());
+        member.setEditDate(date);
         member.setHkStatus(Constants.ZERO);
         member.setRemark("浜哄憳宸插垹闄わ紝绛夊緟鍒犻櫎闂ㄧ鏉冮檺");
         memberMapper.updateById(member);
@@ -597,8 +603,30 @@
                 .set(SystemUser::getUpdateUser,member.getEditor())
                 .set(SystemUser::getUpdateTime,member.getEditDate())
         );
-
         saveUserActionBiz(member,loginUserInfo,Constants.UserActionType.DELETE,userActionJoinMapper,JSONObject.toJSONString(member));
+        List<Cars> carsList = carsMapper.selectList(new QueryWrapper<Cars>().lambda()
+                .eq(Cars::getMemberId,member.getId())
+                .eq(Cars::getIsdeleted,Constants.ONE)
+                .eq(Cars::getAuthStatus,Constants.ONE)//宸叉巿鏉冨寘鏈熺殑杞﹁締
+        );
+        if ((carsMapper!=null && carsList.size()>0)){
+            for(Cars car :carsList){
+               if(Constants.equalsInteger(car.getAuthStatus(),Constants.ZERO)){
+                   Cars model = new Cars();
+                   carsMapper.update(null,new UpdateWrapper<Cars>().lambda()
+                           .eq(Cars::getId,car.getId())
+                           .set(Cars::getStartTime,null)
+                           .set(Cars::getEndTime,null)
+                           .set(Cars::getAuthTimeType,null)
+                           .set(Cars::getAuthStatus,Constants.ZERO)
+                           .set(Cars::getEditDate,model.getEditDate())
+                           .set(Cars::getEdirot,model.getEdirot())
+                   );
+                   //鍒犻櫎宸叉巿鏉冧笅鍙戠殑鍖呮湡鎺堟潈
+                   CarsServiceImpl.dealCancelBookBiz(car.getCode(),date,parkBookMapper);
+               }
+            }
+        }
     }
 
 
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 f32e69e..3d63e57 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
@@ -141,7 +141,7 @@
         String[] params = new String[3];
         params[0] = user.getRealname();
         params[1]=DateUtil.getPlusTime2(date);
-        params[2]=model.getContractNum()+"-銆愬徃鏈猴細"+model.getDriverName()+" "+model.getDriverPhone()+"銆�-銆愯溅鐗屽ソ锛� "+model.getPlateNum()+"銆�";
+        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));
     }
@@ -195,6 +195,7 @@
     public PageData<PlatformBooks> findPage(PageWrap<PlatformBooks> pageWrap) {
         IPage<PlatformBooks> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
         QueryWrapper<PlatformBooks> queryWrapper = new QueryWrapper<>();
+        pageWrap.getModel().setIsdeleted(Constants.ZERO);
         Utils.MP.blankToNull(pageWrap.getModel());
         queryWrapper.lambda()
                 .eq(pageWrap.getModel().getId() != null, PlatformBooks::getId, pageWrap.getModel().getId())
@@ -262,6 +263,7 @@
         List<PlatformBooks> platformBooksList = platformBooksMapper.selectList(new QueryWrapper<PlatformBooks>().lambda()
                 .eq(PlatformBooks::getReasonId,platformBooksCheckNumDTO.getReasonId())
                 .ne(PlatformBooks::getStatus,Constants.THREE)
+                .eq(PlatformBooks::getIsdeleted,Constants.ZERO)
                 .like(PlatformBooks::getCreateDate, DateUtil.getDate(platformBooksCheckNumDTO.getArriveDate(),"yyyy-MM-dd"))
         );
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformBooksList)){
@@ -374,7 +376,7 @@
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"["+platformBooksApplyDTO.getCarCodeFront()+"]灞炰簬鍐呴儴杞﹁締锛屾棤娉曢绾�");
         };
         PlatformBooks platformBooks = platformBooksMapper.selectById(platformBooksApplyDTO.getId());
-        if(Objects.isNull(platformBooks)){
+        if(Objects.isNull(platformBooks)||Constants.equalsInteger(platformBooks.getIsdeleted(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
         if(!Constants.equalsInteger(platformBooks.getStatus(),Constants.ZERO)){
@@ -393,7 +395,7 @@
     @Override
     public PlatformBooks getDetail(Integer id,Integer memberId){
         PlatformBooks model = platformBooksMapper.selectById(id);
-        if(Objects.isNull(model)){
+        if(Objects.isNull(model)||Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌棰勭害璁板綍");
         }
         String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
@@ -454,7 +456,7 @@
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         PlatformBooks model = platformBooksMapper.selectById(revokeDTO.getId());
-        if(Objects.isNull(model)){
+        if(Objects.isNull(model)||Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌棰勭害璁板綍");
         }
         if(!(Constants.equalsInteger(model.getStatus(),Constants.ZERO)||Constants.equalsInteger(model.getStatus(),Constants.ONE))){
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformEventServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformEventServiceImpl.java
index aa187e8..ac815f0 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformEventServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformEventServiceImpl.java
@@ -222,6 +222,9 @@
             String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
                     systemDictDataBiz.queryByCode(Constants.FTP,Constants.PLATFORM_EVENT_IMG).getCode();
             for(PlatformEvent model : result.getRecords()){
+                if(StringUtils.isNotBlank(model.getPlateNo())){
+                    model.setPlateNo(model.getPlateNo().replace("钃�", "").replace("榛�", ""));
+                }
                 if(StringUtils.isNotBlank(model.getBackgroundImageDown())){
                     model.setBackgroundImageDown(prefixUrl + model.getBackgroundImageDown());
                 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java
index cebd0dd..4b2ede0 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java
@@ -297,6 +297,11 @@
                     || Constants.equalsInteger(i.getPlatformGroupId(),platform.getGroupId())
             ).collect(Collectors.toList());
             if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformJobs)){
+                for(PlatformJob i :platformJobList){
+                    if(Constants.equalsInteger(i.getOrigin(),Constants.ZERO)){
+                        i.setWmsContractNum(i.getContractNum());
+                    }
+                }
                 platformWorkVO.setWorkNum(
                         platformJobs.stream().filter(i->Constants.equalsInteger(i.getPlatformId(),platform.getId())  && Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())).collect(Collectors.toList()).size()
                 );
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 eb84711..056e600 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
@@ -1,6 +1,7 @@
 package com.doumee.service.business.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
@@ -168,7 +169,7 @@
         String[] params = new String[3];
         params[0] = user.getRealname();
         params[1]=DateUtil.getPlusTime2(date);
-        params[2]=job.getBillCode()+"-銆愬徃鏈猴細"+job.getDriverName()+" "+job.getDrivierPhone()+"銆�-銆愯溅鐗屽彿锛�"+job.getCarCodeFront()+"銆�";
+        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));
     }
@@ -365,7 +366,8 @@
                 .selectAs(Platform::getName,PlatformJob::getPlatformName)
                 .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
                 .selectAs(PlatformWmsJob::getCarrierName,PlatformJob::getCarrierName)
-                .select(" case when t.total_num is null  then ( select sum(pwd.IO_QTY) from platform_wms_detail pwd where pwd.JOB_ID = t.id  ) else t.total_num end ioQty ")
+                .select(" (select GROUP_CONCAT(distinct(tt.contract_num ))  from platform_wms_detail tt where tt.isdeleted=0 and tt.contract_num is not null   and  tt.job_id=t.id )as wmsContractNum")
+//                .select(" case when t.total_num is null  then ( select sum(pwd.IO_QTY) from platform_wms_detail pwd where pwd.JOB_ID = t.id  ) else t.total_num end ioQty ")
                 .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                 .leftJoin(PlatformWmsJob.class,PlatformWmsJob::getCarryBillCode,PlatformJob::getBillCode)
                 .leftJoin(PlatformBooks.class,PlatformBooks::getJobId,PlatformJob::getId)
@@ -402,7 +404,10 @@
         IPage<PlatformJob> platformJobIPage = platformJobJoinMapper.selectJoinPage(page,PlatformJob.class,queryWrapper);
         platformJobIPage.getRecords().forEach(i->{
             i.dealTime();
-            i.setTotalNum(i.getIoQty());
+            if(Constants.equalsInteger(i.getOrigin(),Constants.ZERO)){
+                i.setWmsContractNum(i.getContractNum());
+            }
+//            i.setTotalNum(i.getIoQty());
 //            this.getWmsJobData(i);
 //            this.queryWaitNum(i);
         });
@@ -583,7 +588,7 @@
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         PlatformJob platformJob = platformJobMapper.selectById(confirmTaskDTO.getId());
-        if(Objects.isNull(platformJob)){
+        if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
         if(!Constants.equalsInteger(platformJob.getStatus(),Constants.ZERO)){
@@ -619,7 +624,7 @@
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         PlatformJob platformJob = platformJobMapper.selectById(signInDTO.getJobId());
-        if(Objects.isNull(platformJob)){
+        if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
 
@@ -664,6 +669,7 @@
         }
         //鏌ヨ浠婃棩鏈�澶х殑绛惧埌鏁�
         List<PlatformJob> signList = platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda()
+                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                 .apply(" DATE(SIGN_DATE) = DATE(NOW()) and sign_date is not null  "));
         if(CollectionUtils.isEmpty(signList)){
             platformJob.setSignNum(Constants.ONE);
@@ -715,7 +721,7 @@
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         PlatformJob platformJob  = platformJobMapper.selectById(jobDetailDTO.getJobId());
-        if(Objects.isNull(platformJob)){
+        if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
         if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WART_SIGN_IN.getKey())){
@@ -875,7 +881,7 @@
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         PlatformJob platformJob = platformJobMapper.selectById(jobOperateDTO.getJobId());
-        if(Objects.isNull(platformJob)){
+        if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
         if(!Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())){
@@ -1114,7 +1120,7 @@
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         PlatformJob platformJob = platformJobMapper.selectById(jobOperateDTO.getJobId());
-        if(Objects.isNull(platformJob)){
+        if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
         if(!(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())
@@ -1132,6 +1138,7 @@
         //鏌ヨ鏈堝彴浠诲姟绛夊緟浣滀笟鏁伴噺
         if(platformJobMapper.selectCount(new QueryWrapper<PlatformJob>().lambda()
                 .eq(PlatformJob::getPlatformId,platform.getId())
+                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                 .in(PlatformJob::getStatus,Constants.PlatformJobStatus.CALLED.getKey(),Constants.PlatformJobStatus.WORKING.getKey())
         )>=platform.getWorkingNum()){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瓒呭嚭鏈堝彴鍙悓鏃朵綔涓氭暟閲廩"+platform.getWorkingNum()+"杈哴");
@@ -1261,7 +1268,7 @@
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         PlatformJob platformJob = platformJobMapper.selectById(jobOperateDTO.getJobId());
-        if(Objects.isNull(platformJob)){
+        if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
         if( !( Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())
@@ -1329,7 +1336,7 @@
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         PlatformJob platformJob = platformJobMapper.selectById(jobOperateDTO.getJobId());
-        if(Objects.isNull(platformJob)){
+        if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
 
@@ -1382,7 +1389,7 @@
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         PlatformJob platformJob = platformJobMapper.selectById(jobOperateDTO.getJobId());
-        if(Objects.isNull(platformJob)){
+        if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
         if(!Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())){
@@ -1433,7 +1440,7 @@
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         PlatformJob platformJob = platformJobMapper.selectById(jobOperateDTO.getJobId());
-        if(Objects.isNull(platformJob)){
+        if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
         if(!Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.CALLED.getKey())){
@@ -1499,7 +1506,7 @@
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         PlatformJob platformJob = platformJobMapper.selectById(jobOperateDTO.getJobId());
-        if(Objects.isNull(platformJob)){
+        if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
         if(! (Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())
@@ -1616,6 +1623,7 @@
            if(jobIds.size()>0){
                List<PlatformJob> list = platformJobMapper.selectJoinList(PlatformJob.class,new MPJLambdaWrapper<PlatformJob>()
                        .selectAll(PlatformJob.class)
+                       .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey())
                        .in(PlatformJob::getId,jobIds)
                );
@@ -1658,7 +1666,7 @@
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         PlatformJob platformJob = platformJobMapper.selectById(jobOperateDTO.getJobId());
-        if(Objects.isNull(platformJob)){
+        if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
         if(!Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.DONE.getKey())){
@@ -1702,6 +1710,7 @@
         PlatformJob platformJob =  platformJobMapper.selectOne(new QueryWrapper<PlatformJob>().lambda()
                 .eq(PlatformJob::getPlatformId,platformDevice.getPlatformId())
                 .eq(PlatformJob::getCarCodeBack,jobOperateDTO.getCarCodeBack())
+                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                 .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.CALLED.getKey())
                 .last(" limit 1 ")
         );
@@ -1913,6 +1922,7 @@
                 .select(" ( select pl.CREATE_DATE from platform_log pl where t.id = pl.obj_id and pl.OBJ_TYPE = "+Constants.PlatformJobLogType.WORKING.getKey()+" order by pl.CREATE_DATE desc  limit 1  ) as newStartDate  ")
                 .select(" ( select pl.CREATE_DATE from platform_log pl where t.id = pl.obj_id and pl.OBJ_TYPE = "+Constants.PlatformJobLogType.CALLED.getKey()+" order by pl.CREATE_DATE desc  limit 1  ) as newCallDate  ")
                 .select(" case when t.total_num is null  then ( select sum(pwd.IO_QTY) from platform_wms_detail pwd where pwd.JOB_ID = t.id  ) else t.total_num end ioQty ")
+                .select(" (select GROUP_CONCAT(distinct(tt.contract_num )) from platform_wms_detail tt where tt.isdeleted=0 and tt.contract_num is not null  and  tt.job_id=t.id )as wmsContractNum")
                 .selectAs(Platform::getName,PlatformJob::getPlatformName)
                 .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
                 .selectAs(PlatformWmsJob::getCarrierName,PlatformJob::getCarrierName)
@@ -1959,16 +1969,16 @@
         );
         //鏌ヨ浠婃棩瀹屾垚浠诲姟
         platformOrderNumByDateResponse.setDoneNum(
-                platformJobMapper.selectCount(new QueryWrapper<PlatformJob>().lambda()
+                platformJobMapper.selectCount(new MPJLambdaWrapper<PlatformJob>()
                         .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                         .like(PlatformJob::getDoneDate,queryDateStr)
-                        .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey())
+                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey()
+                                ,Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()
+                                ,Constants.PlatformJobStatus.LEAVED.getKey())
                 )
         );
         return platformOrderNumByDateResponse;
     }
-
-
 
     @Override
     public List<PlatformDataListResponse> platformWorkingDataList(PlatformDataListRequest param){
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWarnEventServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWarnEventServiceImpl.java
index f7816fe..dcadef0 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWarnEventServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWarnEventServiceImpl.java
@@ -107,6 +107,7 @@
                         .selectAs(Platform::getName,PlatformWarnEvent::getPlatformName)
                         .selectAs(Platform::getHkId,PlatformWarnEvent::getPlatfromHkId)
                         .leftJoin(Platform.class,Platform::getId,PlatformWarnEvent::getPlatformId)
+                        .orderByDesc(PlatformWarnEvent::getCreateDate)
                         .last(" limit 20 ")
         );
         List<PlatformWarnEventListResponse> list = new ArrayList<PlatformWarnEventListResponse>();
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWmsJobServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWmsJobServiceImpl.java
index a38e315..5753f76 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWmsJobServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWmsJobServiceImpl.java
@@ -108,7 +108,7 @@
             List<WmsJobContractVO> wmsJobContractVOList = new ArrayList<>();
             for (String ioCode:ioCodeSet) {
                 if(StringUtils.isBlank(ioCode)){
-                    continue;
+//                    continue;
                 }
                 WmsJobContractVO wmsJobContractVO = new WmsJobContractVO();
                 wmsJobContractVO.setContractCode(ioCode);
@@ -122,7 +122,7 @@
                         com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(wmsJobContractVO.getPlatformWmsDetailList())){
                     if(Constants.equalsInteger(platformWmsJob.getType(),Constants.ONE)){
                         if(Objects.isNull(wmsJobContractVO.getPlatformWmsDetailList().get(Constants.ZERO).getLockStatus())){
-                            wmsJobContractVO.setLockStatus(Constants.ZERO
+                                     wmsJobContractVO.setLockStatus(Constants.ZERO
                             );
                         }else{
                             wmsJobContractVO.setLockStatus(
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/RetentionServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/RetentionServiceImpl.java
index 4c625f1..a7b6d61 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/RetentionServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/RetentionServiceImpl.java
@@ -266,16 +266,13 @@
             for (Retention obj:retentionInfo.getRecords()) {
                 RetentionVo vo = new RetentionVo();
                 vo.setCompanyName(obj.getCompanyName());
+                vo.setTypeName(Constants.Status.COMPANY_TYPE_FK.getDes());
                 if(null != obj.getType()) {
-                    if(Constants.ZERO == obj.getType()){
-                        vo.setTypeName(Constants.Status.LW_FK.getDes());
-                    }else if(Constants.ONE == obj.getType()) {
-                        vo.setTypeName(Constants.Status.PT_FK.getDes());
-                    }else {
-                        vo.setTypeName(Constants.Status.NB_FK.getDes());
+                    if(Constants.ZERO == obj.getCompanyType()){
+                        vo.setTypeName(Constants.Status.COMPANY_TYPE_REL.getDes());
+                    }else if(Constants.ONE == obj.getCompanyType()) {
+                        vo.setTypeName(Constants.Status.COMPANY_TYPE_INTERNAL.getDes());
                     }
-                }else {
-                    vo.setTypeName("");
                 }
                 vo.setName(obj.getName());
                 vo.setPhone(obj.getPhone());
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 49118e4..2d7c9bf 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
@@ -412,7 +412,7 @@
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀹℃壒璁板綍宸插鐞�!");
         }
         Visits visits = visitsMapper.selectById(approve.getObjId());
-        if(Objects.isNull(visits)){
+        if(Objects.isNull(visits)||Constants.equalsInteger(visits.getIsdeleted(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
         if(!auditApproveDTO.getMemberId().equals(approve.getChekorId())){
@@ -977,6 +977,7 @@
         }
         //鏍规嵁鎵嬫満鍙峰拰韬唤璇佸彿鐮佹煡璇� 褰撳墠棰勭害鐨勬椂闂存槸鍚︿笌鍏朵粬棰勭害璁板綍鏈夊啿绐�
         if (visitsMapper.selectCount(new QueryWrapper<Visits>().lambda()
+                        .eq(Visits::getIsdeleted,Constants.ZERO)
                         .notIn(Visits::getStatus,Constants.VisitStatus.cancel
                                 ,Constants.VisitStatus.noPass
                                 ,Constants.VisitStatus.xfFail
@@ -1002,6 +1003,7 @@
      */
     private void isExsitNoOutVisisRecord(Member member) {
         Visits v = visitsMapper.selectOne(new QueryWrapper<Visits>().lambda()
+                .eq(Visits::getIsdeleted,Constants.ZERO)
                 .eq(Visits::getPhone, member.getPhone())
                 .eq(Visits::getStatus,Constants.VisitStatus.xfSuccess)
                 .last(" limit 1" )
@@ -1153,11 +1155,11 @@
         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())+"銆�";
+            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));
+            UserActionServiceImpl.saveUserActionBiz(user,id,Constants.UserActionType.VISIT_CAR_DEL,userActionMapper,date,params, JSONObject.toJSONString(model));
         }else{
-            params[2]=model.getCompanyName()+"-銆愯瀹細"+model.getName()+" "+model.getPhone()+"銆�-銆愭椂闂达細"+DateUtil.getPlusTime2(model.getStarttime())+"-"+DateUtil.getPlusTime2(model.getEndtime())+"銆�";
+            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));
         }
@@ -1882,6 +1884,25 @@
 
 
     }
+    @Override
+    public void visitNoCheckCancel(){
+        List<Visits> visitsList = visitsMapper.selectList(new QueryWrapper<Visits>().lambda()
+                .eq(Visits::getIsdeleted,Constants.ONE)
+                .eq(Visits::getStatus,Constants.VisitStatus.waitCheck)
+                .apply(" now() >=  ENDTIME ")
+        );
+        if(visitsList!=null){
+            Date date =new Date();
+            for(Visits s :visitsList){
+                    visitsMapper.update(null,new UpdateWrapper<Visits>().lambda()
+                            .set(Visits::getIsdeleted,Constants.VisitStatus.cancel)
+                            .set(Visits::getEditDate,date)
+                            .set(Visits::getRemark,"棰勭害鎴鏃堕棿宸茶繃鏈鎵癸紝绯荤粺鑷姩鍙栨秷")
+                            .eq(Visits::getId,s.getId()));
+             }
+        }
+
+    }
 
 
 }
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 f356c7c..b88c838 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
@@ -25,9 +25,13 @@
 import com.doumee.dao.business.model.Member;
 import com.doumee.dao.web.reqeust.SavePlatformWarnEventDTO;
 import com.doumee.service.business.impl.PlatformWarnEventServiceImpl;
+import com.doumee.service.business.third.TmsService;
+import com.doumee.service.business.third.model.request.TmsOrderInfoRequest;
+import com.doumee.service.business.third.model.response.TmsOrderInfoResponse;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.checkerframework.checker.units.qual.C;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -80,6 +84,8 @@
     private PlatformBroadcastLogMapper platformBroadcastLogMapper;
     @Autowired
     private PlatformJobMapper platformJobMapper;
+    @Autowired
+    private TmsService tmsService;
     @Autowired
     private PlatformWmsDetailMapper platformWmsDetailMapper;
     @Autowired
@@ -901,7 +907,7 @@
                                     Constants.PlatformJobStatus.TRANSFERING.getKey(),
                                     Constants.PlatformJobStatus.EXCEPTION.getKey()
                             )
-                    )==Constants.ZERO){
+                    )==Constants.ZERO){//濡傛灉娌¤繘琛屼腑浠诲姟
                         PlatformJob platformJob = platformJobMapper.selectOne(new QueryWrapper<PlatformJob>().lambda()
                                 .eq(PlatformJob::getCarCodeFront,event.getPlateNos())
                                 .eq(PlatformJob::getIsdeleted,Constants.ZERO)
@@ -913,18 +919,14 @@
                                 .last(" limit 1")
                         );
                         if(Objects.nonNull(platformJob)){
-                            platformJob.setStatus(Constants.PlatformJobStatus.WAIT_CALL.getKey());
-                            platformJob.setArriveDate(new Date());
-                            platformJob.setSingType(Constants.TWO);
-                            platformJob.setSignDate(new Date());
-                            List<PlatformJob> signList = platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda().apply(" DATE(SIGN_DATE) = DATE(NOW()) and sign_date is not null  "));
-                            if(CollectionUtils.isEmpty(signList)){
-                                platformJob.setSignNum(Constants.ONE);
-                            } else{
-                                int maxNumber = Collections.max(signList.stream().map(i->i.getSignNum()).collect(Collectors.toList()));
-                                platformJob.setSignNum(maxNumber + Constants.ONE);
+                            if(Constants.equalsInteger(platformJob.getType(),Constants.ONE)){
+                                //濡傛灉鏄嚜鏈夎溅瑁呰揣鑷姩绛惧埌
+                                jobAutoSignBiz(platformJob);
+                            }else  if(Constants.equalsInteger(platformJob.getType(),Constants.ZERO)){
+                                //濡傛灉鏄嚜鏈夎溅鍗歌揣 鏌ヨTMS鍚堝悓鐘舵�侊紝鍐冲畾鏄惁鑷姩绛惧埌
+                                checkTmsContractStatusBiz(platformJob);
                             }
-                            platformJobMapper.updateById(platformJob);
+
                         }
                     }
                 };
@@ -956,6 +958,48 @@
         return event;
     }
 
+    /**
+     * 锛涘鏋滄槸鍗歌揣浠诲姟锛岄渶瑕侀�氳繃TMS鎻愪緵鐨勨��2.2鍚堝悓鍒楄〃鎺ュ彛鈥濇帴鍙f煡璇㈣溅杈嗗搴旂殑鍚堝悓鐘舵�佹槸鍚︿负鍦ㄩ�旂姸鎬侊紙瀵瑰簲orderStatus鍊间负3/4/5/6锛夛紝
+     * 濡傛灉鏄嚜鍔ㄧ鍒帮紝鍚﹀垯涓嶈嚜鍔ㄧ鍒帮紱濡傛灉涓�涓溅杈嗗搴斿涓悎鍚屽彿锛屽垯鍙栬繍鍗曚笅浠讳竴鍚堝悓鏌ヨ瀵瑰簲鍦ㄩ�斾俊鎭�
+     * @param platformJob
+     */
+    private void checkTmsContractStatusBiz(PlatformJob platformJob) {
+        PlatformWmsDetail detail = platformWmsDetailMapper.selectOne(new QueryWrapper<PlatformWmsDetail>().lambda()
+                .eq(PlatformWmsDetail::getIsdeleted, Constants.ZERO)
+                .eq(PlatformWmsDetail::getJobId, platformJob.getId())
+                .isNotNull(PlatformWmsDetail::getContractNum)
+                .last("limit 1")
+        );
+        if(detail!=null && StringUtils.isNotBlank(detail.getContractNum())){
+            TmsOrderInfoRequest param = new TmsOrderInfoRequest();
+            param.setContractNumber(detail.getContractNum());
+            TmsOrderInfoResponse response = tmsService.orderInfo(param);
+            if(response!=null &&( StringUtils.equals(response.getOrderStatus(),"3")  )
+                ||StringUtils.equals(response.getOrderStatus(),"4")
+                ||StringUtils.equals(response.getOrderStatus(),"5")
+                ||StringUtils.equals(response.getOrderStatus(),"6")){
+                //濡傛灉鍚堝悓鍦ㄩ�旓紝鍒欒嚜鍔ㄧ鍒�
+                jobAutoSignBiz(platformJob);
+            }
+        }
+
+    }
+
+    private void jobAutoSignBiz(PlatformJob platformJob) {
+        platformJob.setStatus(Constants.PlatformJobStatus.WAIT_CALL.getKey());
+        platformJob.setArriveDate(new Date());
+        platformJob.setSingType(Constants.TWO);
+        platformJob.setSignDate(new Date());
+        List<PlatformJob> signList = platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda().apply(" DATE(SIGN_DATE) = DATE(NOW()) and sign_date is not null  "));
+        if(CollectionUtils.isEmpty(signList)){
+            platformJob.setSignNum(Constants.ONE);
+        } else{
+            int maxNumber = Collections.max(signList.stream().map(i->i.getSignNum()).collect(Collectors.toList()));
+            platformJob.setSignNum(maxNumber + Constants.ONE);
+        }
+        platformJobMapper.updateById(platformJob);
+    }
+
     private Retention getRetentionModelByParkRequest(EventParkInfoRequest request,CarEvent event) {
         Retention retention = new Retention();
         retention.setIsdeleted(Constants.ZERO);
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 8f2f689..e85c595 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
@@ -14,9 +14,11 @@
 import com.doumee.core.utils.DESUtil;
 import com.doumee.core.utils.DateUtil;
 import com.doumee.core.utils.ImageBase64Util;
+import com.doumee.core.wx.wxPlat.WxPlatConstants;
 import com.doumee.core.wx.wxPlat.WxPlatNotice;
 import com.doumee.dao.business.DeviceRoleMapper;
 import com.doumee.dao.business.RetentionMapper;
+import com.doumee.dao.business.WxNoticeConfigMapper;
 import com.doumee.dao.business.join.VisitsJoinMapper;
 import com.doumee.dao.business.model.DeviceRole;
 import com.doumee.dao.business.model.Member;
@@ -40,14 +42,19 @@
 public class HkSyncVisitServiceImpl extends HkSyncBaseServiceImpl {
     @Autowired
     private VisitsJoinMapper visitsMapper;
+
+
+
+    @Autowired
+    private WxPlatNotice wxPlatNotice;
+    @Autowired
+    private WxNoticeConfigMapper wxNoticeConfigMapper;
     @Autowired
     private RetentionMapper retentionMapper;
     @Autowired
     private SystemDictDataBiz systemDictDataBiz;
     @Autowired
     private DeviceRoleMapper deviceRoleMapper;
-    @Autowired
-    private WxPlatNotice wxPlatNotice;
     /**
      * 鍚屾娴峰悍璁垮淇℃伅鏄惁宸茬绂荤姸鎬�
      */
@@ -312,6 +319,14 @@
 //                getUpdateModelByResponse(c,date,roleList,path);
                 getUpdateModelByResponseIccm(c,date,roleList,path);
                 visitsMapper.updateById(c);
+                //缁欑敵璇蜂汉鍙戦�佸井淇″叕浼楀彿 涓嬪彂鏉冮檺澶辫触
+                if(StringUtils.isNotBlank(c.getOpenid()) && Constants.equalsInteger(c.getStatus(),Constants.VisitStatus.xfFail)){
+                    wxPlatNotice.sendVisitTemplateNotice(systemDictDataBiz,
+                            wxNoticeConfigMapper,c, WxPlatConstants.visitContent.visitApplyHkFail,
+                            systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(),
+                            Arrays.asList(c.getOpenid().split(","))
+                    );
+                }
             }
         }catch (Exception e){
             e.printStackTrace();
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 b5f6916..b04182f 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
@@ -310,8 +310,8 @@
             if(details.size()>0){
                 platformWmsDetailMapper.insert(details);
             }
+            list.setJobIdList(jobIdList);
             if(jobList.size()>0){
-                list.setJobIdList(jobIdList);
                 startEndNoticeToDriver(jobList);
             }
         }catch (Exception e){
@@ -495,7 +495,6 @@
                     job.setContractNum(param.getContractNum());
                     job.setDriverPhone(param.getDriverPhone());
                     job.setDriverName(param.getDriverName());
-//                    job.setOrigin(Constants.ONE);
                     platformWmsJobMapper.insert(job);
                 }
                 jobIdList.add(job.getId());
@@ -532,8 +531,8 @@
             if(details.size()>0){
                 platformWmsDetailMapper.insert(details);
             }
+            list.setJobIdList(jobIdList);
             if(jobList.size()>0){
-                list.setJobIdList(jobIdList);
                 startEndNoticeToDriver(jobList);
             }
         }catch (Exception e){
@@ -723,14 +722,14 @@
                     .eq(PlatformWmsDetail::getIsdeleted, Constants.ZERO));
             if(details!=null && details.size()>0){
                 for(PlatformWmsDetail d :details){
-                   num.add(Constants.formatBigdecimal(d.getIoQty()));
+                    num =  num.add(Constants.formatBigdecimal(d.getIoQty()));
                 }
-                platformJobMapper.update(null,new UpdateWrapper<PlatformJob>().lambda()
-                        .set(PlatformJob::getTotalNum,num)
-                        .eq(PlatformJob::getOrigin, Constants.ZERO)
-                        .eq(PlatformJob::getId, jobId));
-            }
 
+            }
+            platformJobMapper.update(null,new UpdateWrapper<PlatformJob>().lambda()
+                    .set(PlatformJob::getTotalNum,num)
+                    .eq(PlatformJob::getOrigin, Constants.ONE)
+                    .eq(PlatformJob::getId, jobId));
         }
     }
     /**

--
Gitblit v1.9.3