From 3003ab05f20cacea2d1e7d9bd027d26b1813864e Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期三, 03 十二月 2025 09:35:45 +0800
Subject: [PATCH] 优化

---
 server/system_service/src/main/java/com/doumee/core/utils/Constants.java                                   |    5 
 server/visits/admin_timer/src/main/resources/bootstrap.yml                                                 |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java  |   15 
 admin/src/components/business/OperaJkIccardWindow.vue                                                      |    2 
 server/system_service/src/main/java/com/doumee/dao/business/model/Member.java                              |   38 ---
 admin/.env.production                                                                                      |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java    |   69 +++--
 admin/src/views/business/jkCabinetLogJiujing.vue                                                           |  138 +++++++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java |  205 ++++++++++++++--
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/JiandaoyunCloudController.java              |   10 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java          |    7 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetGrid.java               |   13 +
 admin/src/components/business/OperaCarUseBookWindow.vue                                                    |    4 
 admin/src/views/business/jkCabinetLog.vue                                                                  |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetInfoVO.java                  |    3 
 admin/.env.development                                                                                     |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinet.java                   |    5 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java     |   59 ++++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java        |   26 +-
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningEvent.java                |    2 
 server/visits/dmvisit_admin/src/main/resources/application.yml                                             |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/SyncCabinetDTO.java                |   22 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java          |    6 
 server/system_timer/src/main/resources/bootstrap.yml                                                       |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/SyncGridDTO.java                   |   23 +
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarUseBook.java                  |    2 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/cabinet/CabinetController.java              |   39 +++
 server/system_gateway/src/main/resources/application.yml                                                   |    2 
 admin/src/views/operation/serviceCar/apprRecord.vue                                                        |    4 
 29 files changed, 573 insertions(+), 141 deletions(-)

diff --git a/admin/.env.development b/admin/.env.development
index 78e33f9..f12a4db 100644
--- a/admin/.env.development
+++ b/admin/.env.development
@@ -3,9 +3,9 @@
 
 # VUE_APP_API_URL  = 'https://atwl.ahzyssl.com/zhyq_interface'
 
-VUE_APP_API_URL  = 'http://192.168.1.45:10010'
+# VUE_APP_API_URL  = 'http://192.168.1.45:10010'
 
-# VUE_APP_API_URL  = 'http://192.168.0.7/system_gateway'
+VUE_APP_API_URL  = 'http://192.168.0.7/system_gateway'
 
 # VUE_APP_API_URL  = 'http://127.0.0.1:10010'
 
diff --git a/admin/.env.production b/admin/.env.production
index c94f8af..64ee400 100644
--- a/admin/.env.production
+++ b/admin/.env.production
@@ -1,9 +1,13 @@
 # 鐢熶骇鐜閰嶇疆
 NODE_ENV = 'production'
 
+<<<<<<< HEAD
 # VUE_APP_API_URL = 'http://192.168.0.7/system_gateway'
 
 VUE_APP_API_URL = 'http://10.49.152.112/system_gateway'
+=======
+VUE_APP_API_URL  = 'http://10.49.152.112/system_gateway'
+>>>>>>> 6d07596890c54a8b7cdfd14d8ebd4b4e9acefecd
 
 VUE_APP_AMAP_KEY='045542fc5f436b75e6c911c5c84ff8cd'
 
diff --git a/admin/src/components/business/OperaCarUseBookWindow.vue b/admin/src/components/business/OperaCarUseBookWindow.vue
index 7c45a80..84fa81a 100644
--- a/admin/src/components/business/OperaCarUseBookWindow.vue
+++ b/admin/src/components/business/OperaCarUseBookWindow.vue
@@ -121,10 +121,10 @@
     <!--  -->
     <template v-slot:footer>
       <el-button @click="agreeOpen" type="primary"
-        v-if="model.approveDateVO != null && model.approveDateVO.canBeApproved != null && model.approveDateVO.canBeApproved == 1  && 1==2"
+        v-if="model.approveDateVO != null && model.approveDateVO.canBeApproved != null && model.approveDateVO.canBeApproved == 1   "
         class="status-red">鍚屾剰</el-button>
       <el-button @click="jectOpen" type="danger"
-        v-if="model.approveDateVO != null && model.approveDateVO.canBeApproved != null && model.approveDateVO.canBeApproved == 1  && 1==2">鎷掔粷</el-button>
+        v-if="model.approveDateVO != null && model.approveDateVO.canBeApproved != null && model.approveDateVO.canBeApproved == 1  ">鎷掔粷</el-button>
       <el-button @click="visible = false">杩斿洖</el-button>
     </template>
     <el-dialog append-to-body title="鍚屾剰鐢宠" style="text-align: center" class="dialogCl" :visible.sync="isShowProblem"
diff --git a/admin/src/components/business/OperaJkIccardWindow.vue b/admin/src/components/business/OperaJkIccardWindow.vue
index 3d9b329..c81726c 100644
--- a/admin/src/components/business/OperaJkIccardWindow.vue
+++ b/admin/src/components/business/OperaJkIccardWindow.vue
@@ -18,7 +18,7 @@
       </el-form-item>
       <el-form-item label="鍏宠仈鐢ㄦ埛" prop="memberId">
         <div style="width: 100%; display: flex; flex-direction: column;">
-          <el-select v-model="form.memberId" placeholder="璇烽�夋嫨">
+          <el-select v-model="form.memberId" placeholder="璇烽�夋嫨" filterable>
             <el-option v-for="(item, index) in userAll" :key="index" :label="item.name" :value="item.id"></el-option>
           </el-select>
           <span style="color: #999999; margin-top: 5px;">绯荤粺浼氶�氳繃IC鍏宠仈鐢ㄦ埛锛屼笌閽ュ寵鏌滀笂鐨勮溅杈嗙殑鍙告満/楠岃瘉浜哄憳淇℃伅杩涜鏍¢獙</span>
diff --git a/admin/src/views/business/jkCabinetLog.vue b/admin/src/views/business/jkCabinetLog.vue
index eee0af5..2cf58b5 100644
--- a/admin/src/views/business/jkCabinetLog.vue
+++ b/admin/src/views/business/jkCabinetLog.vue
@@ -105,6 +105,7 @@
         startDate: '',
         cabinetId: '',
         authType: '',
+        bizType: 1,
         memberName: '',
         status: ''
       },
diff --git a/admin/src/views/business/jkCabinetLogJiujing.vue b/admin/src/views/business/jkCabinetLogJiujing.vue
new file mode 100644
index 0000000..1d42aba
--- /dev/null
+++ b/admin/src/views/business/jkCabinetLogJiujing.vue
@@ -0,0 +1,138 @@
+<template>
+  <TableLayout :permissions="['business:jkcabinetlog:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="妫�娴嬫椂闂�" prop="date">
+        <el-date-picker
+          v-model="date"
+          @change="setDate"
+          type="daterange"
+          range-separator="鑷�"
+          start-placeholder="寮�濮嬫棩鏈�"
+          end-placeholder="缁撴潫鏃ユ湡"
+          format="yyyy 骞� MM 鏈� dd 鏃�"
+          value-format="yyyy-MM-dd">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="鎿嶄綔浜�" prop="memberName">
+        <el-input v-model="searchForm.memberName" placeholder="璇疯緭鍏�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="閽ュ寵鏌�" prop="cabinetId">
+        <el-select v-model="searchForm.cabinetId" placeholder="璇烽�夋嫨" @change="search">
+          <el-option
+            v-for="item in keysAll"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="鐘舵��" prop="status">
+        <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨" @change="search">
+          <el-option label="鍏ㄩ儴" value=""></el-option>
+          <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 type="primary" :loading="isWorking.export" v-permissions="['business:jkcabinetlog:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <el-table
+        :height="tableHeightNew"
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+      >
+        <el-table-column prop="createDate" label="妫�娴嬫椂闂�" min-width="100px"></el-table-column>
+        <el-table-column prop="memberName" label="妫�娴嬩汉" min-width="100px"></el-table-column>
+        <el-table-column prop="cabinetName" label="鎵�灞為挜鍖欐煖" min-width="100px"></el-table-column>
+        <el-table-column prop="keyInfo" label="妫�娴嬪唴瀹�" min-width="200px"></el-table-column>
+        <el-table-column label="鐘舵��" min-width="100px">
+          <template slot-scope="{row}">
+            <el-link :underline="false" v-if="row.status === 1">閫氳繃</el-link>
+            <el-link type="danger" :underline="false" v-if="row.status ===0">鏈�氳繃</el-link>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      >
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaJkCabinetLogWindow ref="operaJkCabinetLogWindow" @success="handlePageChange"/>
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaJkCabinetLogWindow from '@/components/business/OperaJkCabinetLogWindow'
+import { list } from '@/api/business/jkCabinet'
+export default {
+  name: 'JkCabinetLog',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaJkCabinetLogWindow },
+  data () {
+    return {
+      // 鎼滅储
+      searchForm: {
+        endDate: '',
+        startDate: '',
+        cabinetId: '',
+        authType: '',
+        bizType: 2,
+        memberName: '',
+        status: ''
+      },
+      date: [],
+      keysAll: []
+    }
+  },
+  created () {
+    this.config({
+      module: '閽ュ寵鏌滃紑鍏抽棬璁板綍',
+      api: '/business/jkCabinetLog',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+    this.getkeysAll()
+  },
+  methods: {
+    setDate(e) {
+      if (e && e.length > 1) {
+        this.searchForm.startDate = e[0]
+        this.searchForm.endDate = e[1]
+      } else {
+        this.searchForm.startDate = ''
+        this.searchForm.endDate = ''
+      }
+      this.search()
+    },
+    // 鎼滅储妗嗛噸缃�
+    reset () {
+      this.$refs.searchForm.resetFields()
+      this.date = []
+      this.searchForm.startDate = ''
+      this.searchForm.endDate = ''
+      this.search()
+    },
+    getkeysAll() {
+      list({})
+        .then(res => {
+          console.log(res)
+          this.keysAll = res
+        })
+    }
+  }
+}
+</script>
diff --git a/admin/src/views/operation/serviceCar/apprRecord.vue b/admin/src/views/operation/serviceCar/apprRecord.vue
index 43ef13b..8dfeda0 100644
--- a/admin/src/views/operation/serviceCar/apprRecord.vue
+++ b/admin/src/views/operation/serviceCar/apprRecord.vue
@@ -106,10 +106,10 @@
             <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.hasRole == 1 && 1==2" type="text" icon="el-icon-delete"
+            <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-if=" 1==2"
+            <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>
diff --git a/server/system_gateway/src/main/resources/application.yml b/server/system_gateway/src/main/resources/application.yml
index 90c91c1..dc6ba58 100644
--- a/server/system_gateway/src/main/resources/application.yml
+++ b/server/system_gateway/src/main/resources/application.yml
@@ -1,6 +1,6 @@
 # 椤圭洰淇℃伅閰嶇疆
 project:
-  name: 瀹夋嘲鐗╂祦璁垮绯荤粺
+  name: 鍏姟杞﹂挜鍖欐櫤鑳芥煖绠$悊绯荤粺
   version: 1.0.0
   env: development
 #  env: production
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 c6b8fa5..3726846 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
@@ -108,6 +108,7 @@
     // 璁垮鏉ヨ閰嶇疆
     public static final String VISIT_CONFIG = "VISIT_CONFIG";
     public static final String MEMBER_IMG = "MEMBER_IMG";
+    public static final String ACTIVATE = "ACTIVATE";
     public static final String PLATFORM_EVENT_IMG = "PLATFORM_EVENT_IMG";
     public static final String VISIT_NOTICE = "VISIT_NOTICE";
     public static final String TIME_OUT_CONFIG = "TIME_OUT_CONFIG";
@@ -130,6 +131,8 @@
     public static final String USE_CAR_TAKE_CARE = "USE_CAR_TAKE_CARE";
 
     public static final String PUSH_URL_KEYS = "PUSH_URL_KEYS";
+    public static final String CAR_SECRET = "CAR_SECRET";
+    public static final String SECRET = "SECRET";
 
 
 
@@ -1530,7 +1533,7 @@
 
     public  enum WarningConfig {
         ALARM_TEST(10002, "銆愰挜鍖欐煖銆戦厭绮炬祴璇曞紓甯�",0),
-        GRID_TIME_OUT_INFO(10003, "銆愰挜鍖欐煖銆戝紑闂ㄨ秴鏃舵湭鍏抽棴",0),
+        GRID_TIME_OUT_INFO(10003, "銆愰挜鍖欐煖銆戝紑闂ㄦ煖鏍兼湭鍏抽棴",0),
         KEY_TIME_OUT_BACK(10004, "銆愰挜鍖欐煖銆戦挜鍖欒秴鏃舵湭褰掕繕",0),
         ;
         // 鎴愬憳鍙橀噺
diff --git a/server/system_service/src/main/java/com/doumee/dao/business/model/Member.java b/server/system_service/src/main/java/com/doumee/dao/business/model/Member.java
index 19a68c3..f805fbf 100644
--- a/server/system_service/src/main/java/com/doumee/dao/business/model/Member.java
+++ b/server/system_service/src/main/java/com/doumee/dao/business/model/Member.java
@@ -130,99 +130,64 @@
     private String code;
     @ApiModelProperty(value = "璁垮骞撮緞")
     private Date birthday;
-
-
     @ApiModelProperty(value = "韬唤璇佸彿锛圡D4鍔犲瘑锛�")
     private String idcardNo;
     @ApiModelProperty(value = "淇敼鐨勮韩浠借瘉鍙� ")
     @TableField(exist = false)
     private String idcardNoNew;
-
-
     @ApiModelProperty(value = "璇佷欢绫诲瀷 0韬唤璇� 1娓境璇佷欢 2鎶ょ収", example = "1")
     private Integer idcardType;
     @ApiModelProperty(value = "鏄惁鏄墿娴佸徃鏈� 0涓嶆槸 1鏄�", example = "1")
     private Integer isDriver;
-
-
-
     @ApiModelProperty(value = "鐝 0鐧界彮 1澶滅彮")
     private Integer classes;
-
     @ApiModelProperty(value = "鐘舵�� 0姝e父 1绂佺敤 2鎷夐粦/鍐荤粨", example = "1")
     private Integer status;
-
     @ApiModelProperty(value = "娣诲姞浜虹紪鐮侊紙鑷叧鑱旓級", example = "1")
     private Integer parentId;
-
     @ApiModelProperty(value = "寰俊openid")
     private String openid;
-
     @ApiModelProperty(value = "椋炰功鏍囪瘑")
     private String fsId;
-
     @ApiModelProperty(value = "椋炰功鍚屾鐘舵�� 0鏈悓姝� 1宸插悓姝�", example = "1")
     private Integer fsStatus;
 
     @ApiModelProperty(value = "椋炰功鏈�杩戝悓姝ユ椂闂�")
     private Date fsDate;
-
     @ApiModelProperty(value = "娴峰悍鏍囪瘑", example = "1")
     private String hkId;
-
-
-
-
     @ApiModelProperty(value = "娴峰悍鏈�杩戝悓姝ユ椂闂�")
     private Date hkDate;
-
-
-
     @ApiModelProperty(value = "宀椾綅缂栫爜锛屽叧鑱攑ositionbiao", example = "1")
     private Integer positionId;
     @ApiModelProperty(value = "ERP鏍囪瘑", example = "1")
     private String erpId;
-
     @ApiModelProperty(value = "ERP鍚屾鏃堕棿")
     private Date erpDate;
-
     @ApiModelProperty(value = "ERP鍚屾鐘舵�� 0鏈悓姝� 1宸插悓姝�", example = "1")
     private Integer erpStatus;
-
     @ApiModelProperty(value = "閽夐拤鏍囪瘑", example = "1")
     private String ddId;
-
     @ApiModelProperty(value = "閽夐拤鍚屾鏃堕棿")
     private Date ddDate;
-
     @ApiModelProperty(value = "閽夐拤P鍚屾鐘舵�� 0鏈悓姝� 1宸插悓姝�", example = "1")
     private Integer ddStatus;
-
     @ApiModelProperty(value = "鐧婚檰瀵嗙爜")
     private String passward;
-
-
     @ApiModelProperty(value = "鏄惁楂樼骇瀹℃壒浜� 0鍚� 1鏄�", example = "1")
     private Integer highCheckor;
-
     @ApiModelProperty(value = "闂ㄧ瑙掕壊缂栫爜锛堝叧鑱攄evice_role),澶氫釜鑻辨枃閫楀彿闅斿紑", example = "1")
     private String roleId;
-
     @ApiModelProperty(value = "闂ㄧ瑙掕壊鎺堟潈鏃堕棿")
     private Date roleDate;
-
     @ApiModelProperty(value = "ERP缁勭粐缂栫爜")
     private String erpOrgId;
 
     @ApiModelProperty(value = "璁垮鍏徃鍚嶇О")
     private String visitCompanyName;
-
-
     @ApiModelProperty(value = "鏈�鍚庢搷浣滀汉")
     @TableField(exist = false)
     private String editorName;
-
-
     @ApiModelProperty(value = "缁勭粐绫诲瀷 0鍔冲姟鍏徃 1鍐呴儴缁勭粐 澶氫釜浠�,鍒嗗壊")
     @TableField(exist = false)
     private String companyTypes;
@@ -292,15 +257,12 @@
     @ApiModelProperty(value = "鍩硅寮�濮嬫椂闂�")
     @TableField(exist = false)
     private Date trainStartTime;
-
     @ApiModelProperty(value = "闂ㄧ缁勫悕绉伴泦鍚�")
     @TableField(exist = false)
     private List<String> roleNames;
-
     @ApiModelProperty(value = "鏄惁鏌ヨ鍥哄畾浜哄憳锛�0=鍚︼紱1=鏄�" )
     @TableField(exist = false)
     private Integer querySpecial;
-
     @ApiModelProperty(value = "鏄惁鏌ヨ閽ュ寵鏌滄牎楠屼汉鍛橈細0=鍚︼紱1=鏄�" )
     @TableField(exist = false)
     private Integer queryAuth;
diff --git a/server/system_timer/src/main/resources/bootstrap.yml b/server/system_timer/src/main/resources/bootstrap.yml
index 05a83ce..107b53b 100644
--- a/server/system_timer/src/main/resources/bootstrap.yml
+++ b/server/system_timer/src/main/resources/bootstrap.yml
@@ -1,6 +1,6 @@
 spring:
   profiles:
-    active: pro
+    active: dev
   application:
     name: systemTimer
     # 瀹夊叏閰嶇疆
diff --git a/server/visits/admin_timer/src/main/resources/bootstrap.yml b/server/visits/admin_timer/src/main/resources/bootstrap.yml
index b5b65b7..fb74d1e 100644
--- a/server/visits/admin_timer/src/main/resources/bootstrap.yml
+++ b/server/visits/admin_timer/src/main/resources/bootstrap.yml
@@ -1,6 +1,6 @@
 spring:
   profiles:
-    active: pro
+    active: test
   application:
     name: visitsTimer
     # 瀹夊叏閰嶇疆
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/JiandaoyunCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/JiandaoyunCloudController.java
index aa1e2fb..ca4b1fe 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/JiandaoyunCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/JiandaoyunCloudController.java
@@ -100,7 +100,7 @@
             Map<String, String> parameterMap = parseParameter(request.getQueryString());
             String nonce = parameterMap.get("nonce");
             String timestamp = parameterMap.get("timestamp");
-            String signature = getSignature(nonce, payload, LOCAl_SECRET, timestamp);
+            String signature = getSignature(nonce, payload, systemDictDataBiz.queryByCode(Constants.JDY_CONFIG,Constants.SECRET).getCode(), timestamp);
             log.error("銆愮畝閬撲簯銆� 鐢ㄨ溅鐢宠 =========nonce锛�"+nonce);
             log.error("銆愮畝閬撲簯銆� 鐢ㄨ溅鐢宠 =========timestamp锛�"+timestamp);
             log.error("銆愮畝閬撲簯銆� 鐢ㄨ溅鐢宠 =========payload锛�"+payload);
@@ -146,7 +146,10 @@
             Map<String, String> parameterMap = parseParameter(request.getQueryString());
             String nonce = parameterMap.get("nonce");
             String timestamp = parameterMap.get("timestamp");
-            String signature = getSignature(nonce, payload, LLCAL_CARINFO_SECRET, timestamp);
+            String signature = getSignature(nonce, payload,
+                    //LOCAl_SECRET
+                    systemDictDataBiz.queryByCode(Constants.JDY_CONFIG,Constants.CAR_SECRET).getCode()
+                    , timestamp);
             log.error("銆愮畝閬撲簯銆� 杞﹁締淇℃伅=========nonce锛�"+nonce);
             log.error("銆愮畝閬撲簯銆� 杞﹁締淇℃伅=========timestamp锛�"+timestamp);
             log.error("銆愮畝閬撲簯銆� 杞﹁締淇℃伅=========payload锛�"+payload);
@@ -198,11 +201,12 @@
 */
         String url = "https://lcdp.ahyc.com.cn:30443/api/v1/automation/tenant/6756636b8ff4da34799c9f92/hooks/69042b5d6d7269265c7732a41a461aec9135f0641f0156dc";
 //        String url = "https://api.jiandaoyun.com/api/v1/automation/tenant/6909b792324dc197821895d1/hooks/6909d0fbdb93690af97e41d1b068192dc4a9705aca3321e2";
+        //https://lcdp.ahyc.com.cn:30443/api/v1/automation/tenant/6756636b8ff4da34799c9f92/hooks/69042b5d6d7269265c7732a41a461aec9135f0641f0156dc
         JSONObject object = new JSONObject();
         object.put("create_date","20251104160000");
         object.put("start_date","20251104160000" );
         object.put("end_date", "20251204160000");
-        object.put("id","10000020251105");//
+        object.put("id","202511260016");//
         object.put("type",1);//0=棰嗙敤锛�1=褰掕繕
         String result = HttpsUtil.postJson(url,JSONObject.toJSONString(object));
         System.out.println(result);
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/cabinet/CabinetController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/cabinet/CabinetController.java
index cc05592..5c8dec6 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/cabinet/CabinetController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/cabinet/CabinetController.java
@@ -19,6 +19,7 @@
 import com.doumee.dao.business.vo.CabinetInfoVO;
 import com.doumee.dao.web.response.DriverHomeVO;
 import com.doumee.service.business.*;
+import com.doumee.service.business.impl.JkCabinetGridServiceImpl;
 import com.doumee.service.business.third.model.ApiResponse;
 import com.hikvision.artemis.sdk.config.ArtemisConfig;
 import io.swagger.annotations.Api;
@@ -53,6 +54,9 @@
     private JkCabinetGridService jkCabinetGridService;
 
     @Autowired
+    private JkCabinetLogService jkCabinetLogService;
+
+    @Autowired
     private JkInterfaceLogService interfaceLogService;
 
     @Autowired
@@ -60,6 +64,9 @@
 
     @Autowired
     private JkVersionService jkVersionService;
+
+    @Autowired
+    private JkCabinetGridServiceImpl impl;
 
     @LoginNoRequired
     @ApiOperation("鑾峰彇閽ュ寵鏌淎PK鏈�鏂扮増鏈�")
@@ -171,6 +178,7 @@
         return ApiResponse.success(jkCabinetGridList);
     }
 
+
     @LoginNoRequired
     @ApiOperation("寮�鍚煖鏍� - 鍙告満")
     @PostMapping("/openGridDriver")
@@ -205,6 +213,7 @@
     @PostMapping("/alcoholTestAlarm")
     public ApiResponse alcoholTestAlarm(@RequestBody AlcoholTestAlarmDTO dto) {
         jkCabinetGridService.alcoholTestAlarm(dto);
+        this.saveInterfaceLog(JSONObject.toJSONString(dto), null,"閰掔簿妫�娴嬪憡璀�","閰掔簿妫�娴嬪憡璀�");
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
 
@@ -215,8 +224,38 @@
     @PostMapping("/timeOutUnCloseAlarm")
     public ApiResponse timeOutUnCloseAlarm(@RequestBody TimeOutCloseGridDTO dto) {
         jkCabinetGridService.timeOutUnCloseAlarm(dto);
+        this.saveInterfaceLog(JSONObject.toJSONString(dto), null,"timeOutUnCloseAlarm","鏌滄牸寮�闂ㄨ秴鏃舵湭鍏抽棴鍛婅");
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
 
 
+    @LoginNoRequired
+    @ApiOperation("閽ュ寵鏌滃績璺虫帴鍙�")
+    @GetMapping("/heartbeat")
+    public ApiResponse heartbeat() {
+        return ApiResponse.success("閾炬帴鎴愬姛");
+    }
+
+
+    @LoginNoRequired
+    @ApiOperation("鍚屾鏌滄牸瀹為檯閽ュ寵鏁版嵁")
+    @PostMapping("/syncGridData")
+    public ApiResponse syncGridData(@RequestBody SyncCabinetDTO dto) {
+        jkCabinetGridService.syncGridData(dto);
+        this.saveInterfaceLog(JSONObject.toJSONString(dto), null,"syncGridData","鍚屾鏌滄牸瀹為檯閽ュ寵鏁版嵁");
+        return ApiResponse.success("鎿嶄綔鎴愬姛");
+    }
+
+
+    @LoginNoRequired
+    @ApiOperation("testTimeOutBackAlarm")
+    @GetMapping("/testTimeOutBackAlarm")
+    public ApiResponse testTimeOutBackAlarm() {
+        jkCabinetLogService.timeOutUnBackAlarm(impl);
+        return ApiResponse.success("鎿嶄綔鎴愬姛");
+    }
+
+
+
+
 }
diff --git a/server/visits/dmvisit_admin/src/main/resources/application.yml b/server/visits/dmvisit_admin/src/main/resources/application.yml
index fb04d85..d7e0db9 100644
--- a/server/visits/dmvisit_admin/src/main/resources/application.yml
+++ b/server/visits/dmvisit_admin/src/main/resources/application.yml
@@ -1,6 +1,6 @@
 # 椤圭洰淇℃伅閰嶇疆
 project:
-  name: 璁垮绯荤粺
+  name: 鍏姟杞﹂挜鍖欐櫤鑳芥煖绠$悊绯荤粺
   version: 1.0.0
   env: development
 #  env: production
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/SyncCabinetDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/SyncCabinetDTO.java
new file mode 100644
index 0000000..7ad5b46
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/SyncCabinetDTO.java
@@ -0,0 +1,22 @@
+package com.doumee.dao.business.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2025/10/11 16:01
+ */
+@Data
+public class SyncCabinetDTO {
+
+    @ApiModelProperty(value = "閽ュ寵鏌滅紪鍙�")
+    private String code;
+
+    @ApiModelProperty(value = "鏌滄牸淇℃伅")
+    private List<SyncGridDTO> gridDTOList;
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/SyncGridDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/SyncGridDTO.java
new file mode 100644
index 0000000..ec07de4
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/SyncGridDTO.java
@@ -0,0 +1,23 @@
+package com.doumee.dao.business.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2025/10/11 16:01
+ */
+@Data
+public class SyncGridDTO {
+
+    @ApiModelProperty(value = "鏉垮彿")
+    private String boardCode;
+
+    @ApiModelProperty(value = "閫氶亾鍙�")
+    private String channelCode;
+
+    @ApiModelProperty(value = "瀹為檯閽ュ寵缂栫爜")
+    private String actualLable;
+}
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 8add43f..5f58071 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
@@ -159,6 +159,8 @@
     @ApiModelProperty(value = "绠�閬撲簯涓氬姟涓婚敭")
     private String jdyId;
 
+    @ApiModelProperty(value = "绠�閬撲簯鍗曞彿")
+    private String jdyNo;
 
     @ApiModelProperty(value = "閽ュ寵棰嗗彇鐘舵�侊細0=寰呴鍙栵紱1=宸查鍙栵紱2=宸插綊杩橈紱")
     private Integer keyStatus;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinet.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinet.java
index 2c437fd..2fbd3f0 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinet.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinet.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.doumee.core.annotation.excel.ExcelColumn;
+import com.doumee.dao.system.model.Multifile;
 import com.doumee.service.business.third.model.LoginUserModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -163,5 +164,7 @@
     @TableField(exist = false)
     private List<String> authMemberIdList;
 
-
+    @ApiModelProperty(value = "婵�娲绘枃浠�")
+    @TableField(exist = false)
+    private Multifile activateFile;
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetGrid.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetGrid.java
index 0db643f..9bd9aa5 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetGrid.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetGrid.java
@@ -85,6 +85,9 @@
     @ExcelColumn(name="閫氶亾鍙�")
     private String channelCode;
 
+    @ApiModelProperty(value = "瀹為檯閽ュ寵缂栫爜锛堝锛�7B7A092F 锛�")
+    @ExcelColumn(name="瀹為檯閽ュ寵缂栫爜锛堝锛�7B7A092F 锛�")
+    private String actualLable;
 
     @ApiModelProperty(value = "缁戝畾鐘舵�� 0鏈粦瀹氾紱1宸茬粦瀹�", example = "1")
     @TableField(exist = false)
@@ -106,9 +109,13 @@
     @TableField(exist = false)
     private Integer carId;
 
-    @ApiModelProperty(value = "閽ュ寵鐘舵�� 0鏈粦瀹� 1鍦ㄤ綅 2鍊熷嚭 3缁翠慨淇濆吇", example = "1")
+    @ApiModelProperty(value = "閽ュ寵鐘舵�� 0鏈粦瀹� 1鍦ㄤ綅 2鍊熷嚭 3缁翠慨淇濆吇 4缁戝畾閿欒", example = "1")
     @TableField(exist = false)
     private Integer keyStatus;
+
+    @ApiModelProperty(value = "閿欒淇℃伅", example = "1")
+    @TableField(exist = false)
+    private String errInfo;
 
     @ApiModelProperty(value = "娲捐溅鐢宠鍗曚富閿�", example = "1")
     @TableField(exist = false)
@@ -118,4 +125,8 @@
     @TableField(exist = false)
     private Integer getKeyWay;
 
+    @ApiModelProperty(value = "瀹為檯閽ュ寵")
+    @TableField(exist = false)
+    private String actualCode;
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningEvent.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningEvent.java
index 3d58cfd..5a23f29 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningEvent.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningEvent.java
@@ -32,7 +32,7 @@
 
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
     //@ExcelColumn(name="鍒涘缓鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createDate;
 
     @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetInfoVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetInfoVO.java
index f4f9f59..c8176a1 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetInfoVO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetInfoVO.java
@@ -70,4 +70,7 @@
 
     @ApiModelProperty(value = "閰掔簿妫�娴嬮厤缃�")
     private CabinetConfigDataVO cabinetConfigDataVO;
+
+    @ApiModelProperty(value = "婵�娲绘枃浠跺湴鍧�")
+    private String activateFileUrl;
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java
index 73cc38d..fe50276 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java
@@ -150,5 +150,11 @@
 
     CabinetBoardDataVO getCabinetGridData();
 
+    /**
+     * 鍚屾鏌滄牸瀹為檯閽ュ寵缂栧彿
+     * @param dto
+     */
+    void syncGridData(SyncCabinetDTO dto);
+
 
 }
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 b0a619f..61bc24d 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
@@ -627,21 +627,21 @@
             //瀹℃壒閫氳繃锛屼絾鏄� 宸插埌鍙戣溅鏃堕棿锛屼笉鍙互鎾ら攢
             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.getMemberId())
-                    .eq(Approve::getObjId,carUseBook.getId())
-                    .eq(Approve::getObjType,carUseBook.getType()==0?3:4)
-                    .last("limit 1"));
-            if(approve!=null){
-                return Constants.ONE;
-            }
-        }
+//        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.getMemberId())
+//                    .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;
     }
 
@@ -657,16 +657,19 @@
         if(StringUtils.isEmpty(op)){
             return;
         }
-
-        JSONObject dataJSON = dataInfoJSON.getJSONObject("data");
-        String no = dataJSON.getString("no");
-        if(StringUtils.isEmpty(no)){
+        if(op.equals("data_test")){
             return;
         }
+        JSONObject dataJSON = dataInfoJSON.getJSONObject("data");
+        String id = dataJSON.getString("_id");
         if(op.equals("data_remove")){
             carUseBookJoinMapper.update(new UpdateWrapper<CarUseBook>().lambda()
                             .set(CarUseBook::getEditDate,DateUtil.getCurrDateTime())
-                    .set(CarUseBook::getIsdeleted,Constants.ONE).eq(CarUseBook::getJdyId,no));
+                    .set(CarUseBook::getIsdeleted,Constants.ONE).eq(CarUseBook::getJdyId,id));
+            return;
+        }
+        String no = dataJSON.getString("no");
+        if(StringUtils.isEmpty(no)){
             return;
         }
         Integer status = dataJSON.getInteger("flowState");
@@ -687,7 +690,8 @@
             carUseBook = new CarUseBook();
             carUseBook.setCreateDate(new Date());
             carUseBook.setEditDate(new Date());
-            carUseBook.setJdyId(no);
+            carUseBook.setJdyNo(no);
+            carUseBook.setJdyId(id);
         }else{
             carUseBook.setEditDate(new Date());
         }
@@ -699,14 +703,15 @@
                     .eq(Cars::getCode,carCode).last("limit 1"));
             carUseBook.setCarId(Objects.nonNull(cars)?cars.getId():null);
         }
-        carUseBook.setStartTime(StringUtils.isBlank(startDate)?null:DateUtil.getISO8601DateByStr(startDate));
-        carUseBook.setEndTime(StringUtils.isBlank(endDate)?null:DateUtil.getISO8601DateByStr(endDate));
+
+        carUseBook.setStartTime(StringUtils.isBlank(startDate)?null:DateUtil.getXMinuteAfterDate(DateUtil.getISO8601DateByStr(startDate),480));
+        carUseBook.setEndTime(StringUtils.isBlank(endDate)?null:DateUtil.getXMinuteAfterDate(DateUtil.getISO8601DateByStr(endDate),480));
         carUseBook.setTypeInfo(StringUtils.isBlank(typeInfo)?null:typeInfo);
-        carUseBook.setContent(StringUtils.isBlank(typeInfo)?null:reason);
-        carUseBook.setAddr(StringUtils.isBlank(typeInfo)?null:addr);
+        carUseBook.setContent(StringUtils.isBlank(reason)?null:reason);
+        carUseBook.setAddr(StringUtils.isBlank(addr)?null:addr);
         carUseBook.setStatus(Constants.TWO);
         JSONObject driverJSON = dataJSON.getJSONObject("driver");
-        if(!driverJSON.isEmpty()){
+        if(Objects.nonNull(driverJSON)){
             String driverName = driverJSON.getString("name");
             String driverUserName = driverJSON.getString("username");
             if(StringUtils.isNotBlank(driverUserName)){
@@ -717,7 +722,7 @@
             }
         }
         JSONObject createJSON = dataJSON.getJSONObject("creator");
-        if(!driverJSON.isEmpty()){
+        if(Objects.nonNull(createJSON)){
             String createName = createJSON.getString("name");
             String createUserName = createJSON.getString("username");
             if(StringUtils.isNotBlank(createUserName)){
@@ -729,13 +734,13 @@
         }
 
         JSONArray usersArray =   dataJSON.getJSONArray("users");
-        if(!usersArray.isEmpty()){
+        if(Objects.nonNull(usersArray)){
             String names = "";
             List<String> userDDIdList = new ArrayList<>();
             for (int i = 0; i < usersArray.size(); i++) {
                 JSONObject userJSON = usersArray.getJSONObject(i);
-                String name = createJSON.getString("name");
-                String userName = createJSON.getString("username");
+                String name = userJSON.getString("name");
+                String userName = userJSON.getString("username");
                 userDDIdList.add(userName);
                 names = names +
                         (StringUtils.isNotBlank(names)?",":"")
@@ -758,7 +763,7 @@
 
     @Override
     public List<InterestedListVO> getCarUseStatistics(Integer type){
-        List<String> weekDays = DateUtil.getBeforDaysByFormat(new Date(),Objects.isNull(type)||Constants.equalsInteger(type,Constants.ZERO)?7:15,"MM鏈坉d鏃�");
+        List<String> weekDays = DateUtil.getBeforDaysByFormat(new Date(),Objects.isNull(type)||Constants.equalsInteger(type,Constants.ZERO)?7:15,"MM-dd");
         MPJLambdaWrapper<CarUseBook> wrapper = new MPJLambdaWrapper<CarUseBook>()
                 .selectAll(CarUseBook.class)
                 .eq(CarUseBook::getIsdeleted, Constants.ZERO)
@@ -774,7 +779,7 @@
             vo.setNextNum(Constants.ZERO);
             if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(carUseBookList)) {
                 vo.setNum(
-                        carUseBookList.stream().filter(i->DateUtil.dateToString(i.getCreateDate(),"MM鏈坉d鏃�").equals(days))
+                        carUseBookList.stream().filter(i->DateUtil.dateToString(i.getCreateDate(),"MM-dd").equals(days))
                                 .collect(Collectors.toList()).size()
                 );
             }
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 bc14916..3012de6 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
@@ -727,6 +727,9 @@
         if(StringUtils.isEmpty(op)){
             return;
         }
+        if(op.equals("data_test")){
+            return;
+        }
         JSONObject dataJSON = dataInfoJSON.getJSONObject("data");
         String no = dataJSON.getString("_id");
         if(StringUtils.isEmpty(no)){
@@ -755,7 +758,7 @@
         cars.setCode(StringUtils.isBlank(carCode)?null:carCode);
         cars.setStatus(StringUtils.isNotBlank(status)&&StringUtils.equals(status,"鍙敤")?0:1);
         JSONObject driverJSON = dataJSON.getJSONObject("driver");
-        if(!driverJSON.isEmpty()){
+        if(Objects.nonNull(driverJSON)){
             String driverName = driverJSON.getString("name");
             String driverUserName = driverJSON.getString("username");
             if(StringUtils.isNotBlank(driverUserName)){
@@ -766,7 +769,7 @@
             }
         }
         JSONObject createJSON = dataJSON.getJSONObject("creator");
-        if(!createJSON.isEmpty()){
+        if(Objects.nonNull(createJSON)){
             String createName = createJSON.getString("name");
             String createUserName = createJSON.getString("username");
             if(StringUtils.isNotBlank(createUserName)){
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java
index 3f6f205..9f68973 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java
@@ -31,6 +31,7 @@
 import com.doumee.service.business.third.model.PageWrap;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.hikvision.artemis.sdk.config.ArtemisConfig;
+import com.sun.corba.se.impl.orbutil.concurrent.Sync;
 import io.swagger.models.auth.In;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -142,9 +143,9 @@
             //鏇存柊閽ュ寵鏌滀俊鎭�
             jkCabinetGridMapper.update(new UpdateWrapper<JkCabinetGrid>().lambda()
                     .set(JkCabinetGrid::getKeyId,jkCabinetGrid.getKeyId())
+                    .set(JkCabinetGrid::getActualLable,keysModel.getRfidLable())
                     .set(JkCabinetGrid::getEditor,loginUserInfo.getId())
                     .set(JkCabinetGrid::getEditDate,DateUtil.getCurrDateTime())
-                    .set(JkCabinetGrid::getEditDate, DateUtil.getCurrDateTime())
                     .eq(JkCabinetGrid::getId,jkCabinetGrid.getId()));
             //鏍囪閽ュ寵淇℃伅
             jkKeysMapper.update(new UpdateWrapper<JkKeys>().lambda()
@@ -201,8 +202,11 @@
                 .selectAll(JkCabinetGrid.class)
                 .selectAs(JkCabinet::getName,JkCabinetGrid::getCabinetName)
                 .selectAs(JkKeys::getRfidLable,JkCabinetGrid::getKeyCode)
+                .selectAs(JkKeys::getStatus,JkCabinetGrid::getKeyStatus)
+                .select("k.code",JkCabinetGrid::getActualCode)
                 .leftJoin(JkCabinet.class,JkCabinet::getId,JkCabinetGrid::getCabinetId)
                 .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
+                .leftJoin(" jk_keys k on k.RFID_LABLE = t.ACTUAL_LABLE ")
                 .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
                 .eq(Objects.nonNull(model.getCabinetId()),JkCabinetGrid::getCabinetId,model.getCabinetId())
                 .eq(Objects.nonNull(model.getStatus()),JkCabinetGrid::getStatus,model.getStatus())
@@ -215,6 +219,19 @@
         IPage<JkCabinetGrid> iPage = jkCabinetGridMapper.selectJoinPage(page,JkCabinetGrid.class,wrapper);
         for (JkCabinetGrid jkCabinetGrid:iPage.getRecords()) {
             jkCabinetGrid.setBindStatus(Objects.isNull(jkCabinetGrid.getKeyId())?Constants.ZERO:Constants.ONE);
+            jkCabinetGrid.setKeyStatus(Objects.isNull(jkCabinetGrid.getKeyStatus())?Constants.ZERO:jkCabinetGrid.getKeyStatus());
+            if(!Constants.equalsInteger(jkCabinetGrid.getKeyStatus(),Constants.ZERO)){
+                if(StringUtils.isBlank(jkCabinetGrid.getKeyCode())||StringUtils.isBlank(jkCabinetGrid.getActualLable())
+                        || !StringUtils.equals(jkCabinetGrid.getKeyCode(),jkCabinetGrid.getActualLable())){
+
+                    jkCabinetGrid.setKeyStatus(Constants.FOUR);
+                    if(StringUtils.isBlank(jkCabinetGrid.getActualCode())){
+                        jkCabinetGrid.setErrInfo("鏈煡閽ュ寵 寮傚父");
+                    }else{
+                        jkCabinetGrid.setErrInfo(jkCabinetGrid.getActualCode()+" 寮傚父");
+                    }
+                }
+            }
         }
         return PageData.from(iPage);
     }
@@ -256,6 +273,7 @@
                 //鏇存柊閽ュ寵鏌滀俊鎭�
                 jkCabinetGridMapper.update(new UpdateWrapper<JkCabinetGrid>().lambda()
                         .set(JkCabinetGrid::getKeyId,null)
+                        .set(JkCabinetGrid::getActualLable,null)
                         .set(JkCabinetGrid::getEditDate, DateUtil.getCurrDateTime())
                         .eq(JkCabinetGrid::getId,model.getId()));
                 JkKeys keysModel = jkKeysMapper.selectById(model.getKeyId());
@@ -274,6 +292,7 @@
             if(CollectionUtils.isNotEmpty(jkCabinetGridList)){
                 jkCabinetGridMapper.update(new UpdateWrapper<JkCabinetGrid>().lambda()
                         .set(JkCabinetGrid::getKeyId,null)
+                        .set(JkCabinetGrid::getActualLable,null)
                         .set(JkCabinetGrid::getEditDate, DateUtil.getCurrDateTime())
                         .in(JkCabinetGrid::getId,jkCabinetGridList.stream().map(i->i.getId()).collect(Collectors.toList())));
                 List<Integer> keyIdList = jkCabinetGridList.stream().filter(i->Objects.nonNull(i.getKeyId())).map(i->i.getKeyId()).collect(Collectors.toList());
@@ -485,27 +504,39 @@
                                 .set(JkKeys::getStatus,dto.getKeyStatus())
                                 .eq(JkKeys::getId,jkKeys.getId())
                         );
+                        if(Constants.equalsInteger(dto.getKeyStatus(),Constants.ONE)&&
+                                (StringUtils.isBlank(jkCabinetGrid.getActualLable())||!StringUtils.equals(jkCabinetGrid.getActualLable(),jkKeys.getRfidLable()))){
+                            //鏇存柊閽ュ寵瀹為檯缂栫爜
+                            jkCabinetGridMapper.update(null,new UpdateWrapper<JkCabinetGrid>().lambda()
+                                    .set(JkCabinetGrid::getActualLable,jkKeys.getRfidLable())
+                                    .eq(JkCabinetGrid::getId,jkCabinetGrid.getId())
+                            );
+                        }
                         //褰掕繕閽ュ寵/鍊熷嚭閽ュ寵 閮借鍘绘煡璇㈡渶鍚庝竴娆″紑闂ㄨ褰� 鑾峰彇鍏蜂綋鐨勫紑闂ㄧ殑鏂瑰紡 鏄殢杞�/娲捐溅/淇濇磥 璧嬩簣褰撳墠鍏抽棬璁板綍鍐� 濡傛灉鏄淳杞﹀崟鏁版嵁 闇�瑕佽皟璧风畝閬撲簯鎺ㄩ��
                         JkCabinetLog lastOutLog = jkCabinetLogMapper.selectOne(new QueryWrapper<JkCabinetLog>().lambda()
                                 .eq(JkCabinetLog::getKeyId,jkCabinetLog.getKeyId())
                                 .eq(JkCabinetLog::getType,Constants.ZERO)
+                                .orderByDesc(JkCabinetLog::getId)
                                 .last( "limit 1 "));
                         if(Objects.nonNull(lastOutLog)){
+                            jkCabinetLog.setOpenWay(lastOutLog.getOpenWay());
+                            jkCabinetLog.setCarUseBookId(lastOutLog.getCarUseBookId());
+
                             if(Objects.nonNull(lastOutLog.getCarUseBookId())) {
                                 CarUseBook carUseBook = carUseBookMapper.selectById(lastOutLog.getCarUseBookId());
-                                if (Objects.nonNull(carUseBook) && Constants.equalsInteger(carUseBook.getKeyStatus(), Constants.ZERO)) {
+                                if (Objects.nonNull(carUseBook)) {
                                     carUseBookMapper.update(new UpdateWrapper<CarUseBook>().lambda()
-                                            .set(CarUseBook::getKeyStatus, Constants.ONE)
+                                            .set(CarUseBook::getKeyStatus, Constants.equalsInteger(dto.getKeyStatus(),Constants.TWO)?Constants.ONE:Constants.TWO)
                                             .eq(CarUseBook::getId, carUseBook.getId())
                                     );
                                     //鎺ㄩ�佺畝閬撲簯 鏍囪涓氬姟鏁版嵁宸茶棰嗗彇閽ュ寵
                                     if (StringUtils.isNotBlank(carUseBook.getJdyId())) {
                                         JDYKeyUseByBookDTO jdyKeyUseByBookDTO = new JDYKeyUseByBookDTO();
                                         jdyKeyUseByBookDTO.setCreate_date(System.currentTimeMillis());
-                                        jdyKeyUseByBookDTO.setStart_date(Constants.equalsInteger(dto.getKeyStatus(),Constants.TWO)?System.currentTimeMillis():null);
+                                        jdyKeyUseByBookDTO.setStart_date(System.currentTimeMillis());
                                         jdyKeyUseByBookDTO.setEnd_date(Constants.equalsInteger(dto.getKeyStatus(),Constants.ONE)?System.currentTimeMillis():null);
                                         jdyKeyUseByBookDTO.setType(Constants.equalsInteger(dto.getKeyStatus(),Constants.TWO)?Constants.ZERO:Constants.ONE);
-                                        jdyKeyUseByBookDTO.setId(carUseBook.getJdyId());
+                                        jdyKeyUseByBookDTO.setId(carUseBook.getJdyNo());
                                         this.pushJDYKeyInfo(jdyKeyUseByBookDTO);
                                     }
                                 }
@@ -611,9 +642,21 @@
                                 .in(JkKeys::getStatus,Constants.TWO,Constants.THREE)
                                 .isNotNull(JkCabinetGrid::getKeyId)
                                 .apply("t1.car_id in ( select c.id from  cars c  where c.ISDELETED = 0 and  c.MEMBER_ID = "+dto.getMemberId()+" )")
-
                                 .orderByAsc(JkCabinetGrid::getCode)
                 );
+                for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
+                    JkCabinetLog log = jkCabinetLogMapper.selectOne(new QueryWrapper<JkCabinetLog>().lambda()
+                            .eq(JkCabinetLog::getGridId,jkCabinetGrid.getId())
+                            .eq(JkCabinetLog::getType,Constants.ZERO)
+                            .orderByDesc(JkCabinetLog::getId)
+                            .last("limit 1")
+                    );
+                    jkCabinetGrid.setGetKeyWay(Constants.ZERO);
+                    if(Objects.nonNull(log)){
+                        jkCabinetGrid.setGetKeyWay(log.getOpenWay());
+                        jkCabinetGrid.setCarUseBookId(log.getCarUseBookId());
+                    }
+                }
             }else{
                 //鍒ゆ柇褰撳墠鏃堕棿鏄惁澶勪簬淇濇磥鏃舵鍐�
                 String cleanConfig =  systemDictDataBiz.queryByCode(Constants.CABINET_CONFIG,Constants.CLEAN_TIME).getCode();
@@ -621,29 +664,66 @@
                 Boolean isCleanTime = Constants.betweenTimeConfig(cleanConfig);
                 List<Integer> girdIdList = new ArrayList<>();
                 //鏌ヨ鏍规嵁浠诲姟鍙互棰嗗彇鐨勬暟鎹�
+//                jkCabinetGridList = jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class,
+//                        new MPJLambdaWrapper<JkCabinetGrid>().selectAll(JkCabinetGrid.class)
+//                                .selectAs(JkKeys::getRfidLable,JkCabinetGrid::getKeyCode)
+//                                .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode)
+//                                .selectAs(JkKeys::getCarId,JkCabinetGrid::getCarId)
+//                                .selectAs(JkKeys::getStatus,JkCabinetGrid::getKeyStatus)
+//                                .selectAs(CarUseBook::getId,JkCabinetGrid::getCarUseBookId)
+//                                .select("1",JkCabinetGrid::getGetKeyWay)
+//                                .innerJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
+//                                .innerJoin(CarUseBook.class,CarUseBook::getCarCode,JkKeys::getCarCode)
+//                                .innerJoin(Cars.class,Cars::getCode,CarUseBook::getCarCode)
+//                                .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
+//                                .eq(CarUseBook::getIsdeleted,Constants.ZERO)
+//                                .eq(Cars::getIsdeleted,Constants.ZERO)
+//                                .eq(JkCabinetGrid::getWorkingStatus,Constants.ZERO)
+//                                .eq(JkCabinetGrid::getStatus,Constants.ZERO)
+//                                .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId())
+//                                .in(JkKeys::getStatus,Constants.ONE)
+//                                .eq(JkKeys::getRoleType,Constants.ONE)
+//                                .isNotNull(JkCabinetGrid::getKeyId)
+//                                .apply(" NOW() > DATE_SUB(t2.START_TIME, INTERVAL "+earlyConfig+" MINUTE) and now() < t2.end_time and t3.MEMBER_ID = "+dto.getMemberId()+" ")
+//                );
+
                 jkCabinetGridList = jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class,
                         new MPJLambdaWrapper<JkCabinetGrid>().selectAll(JkCabinetGrid.class)
                                 .selectAs(JkKeys::getRfidLable,JkCabinetGrid::getKeyCode)
                                 .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode)
                                 .selectAs(JkKeys::getCarId,JkCabinetGrid::getCarId)
                                 .selectAs(JkKeys::getStatus,JkCabinetGrid::getKeyStatus)
-                                .selectAs(CarUseBook::getId,JkCabinetGrid::getCarUseBookId)
                                 .select("1",JkCabinetGrid::getGetKeyWay)
                                 .innerJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
-                                .innerJoin(CarUseBook.class,CarUseBook::getCarCode,JkKeys::getCarCode)
-                                .innerJoin(Cars.class,Cars::getCode,CarUseBook::getCarCode)
+                                .innerJoin(Cars.class,Cars::getId,JkKeys::getCarId)
                                 .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
-                                .eq(CarUseBook::getIsdeleted,Constants.ZERO)
                                 .eq(Cars::getIsdeleted,Constants.ZERO)
                                 .eq(JkCabinetGrid::getWorkingStatus,Constants.ZERO)
                                 .eq(JkCabinetGrid::getStatus,Constants.ZERO)
                                 .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId())
                                 .in(JkKeys::getStatus,Constants.ONE)
                                 .eq(JkKeys::getRoleType,Constants.ONE)
+                                .eq(Cars::getMemberId,dto.getMemberId())
                                 .isNotNull(JkCabinetGrid::getKeyId)
-                                .apply("and NOW() > DATE_SUB(t2.START_TIME, INTERVAL "+earlyConfig+" MINUTE) and now() < t2.end_time and t3.MEMBER_ID = "+dto.getMemberId()+" )")
-
+                                .apply(" t2.code in ( select c.car_code from car_use_book c left join cars c1 on c.car_code = c1.code  where c.isdeleted = 0 and c1.isdeleted =0  and NOW() > DATE_SUB(c.START_TIME, INTERVAL "+earlyConfig+" MINUTE) and now() < c.end_time  and c1.MEMBER_ID = "+dto.getMemberId()+" ) ")
                 );
+
+                for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
+                    List<CarUseBook> carUseBookList = carUseBookMapper.selectJoinList(CarUseBook.class,new MPJLambdaWrapper<CarUseBook>()
+                                    .selectAll(CarUseBook.class)
+                                    .leftJoin(Cars.class,Cars::getCode,CarUseBook::getCarCode)
+                            .eq(CarUseBook::getIsdeleted,Constants.ZERO)
+                            .eq(Cars::getIsdeleted,Constants.ZERO)
+                            .eq(CarUseBook::getCarCode,jkCabinetGrid.getCarCode())
+                            .eq(Cars::getMemberId,dto.getMemberId())
+                            .apply("  NOW() > DATE_SUB(t.START_TIME, INTERVAL "+earlyConfig+" MINUTE) and now() < t.end_time  ")
+                    );
+                    if(CollectionUtils.isNotEmpty(carUseBookList)) {
+                        jkCabinetGrid.setCarUseBookId(carUseBookList.get(Constants.ZERO).getId());
+                    }
+                }
+
+
                 if(CollectionUtils.isNotEmpty(jkCabinetGridList)){
                     girdIdList = jkCabinetGridList.stream().map(i->i.getId()).collect(Collectors.toList());
                 }
@@ -662,7 +742,7 @@
                                     .eq(!isCleanTime,JkKeys::getRoleType,Constants.ZERO)
                                     .in(JkKeys::getStatus,Constants.ONE)
                                     .isNotNull(JkCabinetGrid::getKeyId)
-                                    .notIn(CollectionUtils.isNotEmpty(girdIdList),JkCabinetGrid::getId,jkCabinetGridList)
+                                    .notIn(CollectionUtils.isNotEmpty(girdIdList),JkCabinetGrid::getId,girdIdList)
                                     .apply("t1.car_id in ( select c.id from  cars c  where c.ISDELETED = 0 and  c.MEMBER_ID = "+dto.getMemberId()+" ) ")
                     )
                 );
@@ -788,7 +868,7 @@
                         return;
                     }
 
-                    String content = "銆愰挜鍖欐煖-"+jkCabinetGrid.getCabinetName()+"銆戜笅銆愭煖鏍�-"+jkCabinetGrid.getCode()+"銆戣秴鏃舵湭鍏抽棴";
+                    String content = "銆愰挜鍖欐煖-"+jkCabinetGrid.getCabinetName()+"銆戜笅銆愭煖鏍�-"+jkCabinetGrid.getCode()+"銆戞煖鏍兼湭鍏抽棴";
 
                     JkCabinet jkCabinet = jkCabinetMapper.selectById(dto.getCabinetId());
                     //瀛樺偍鎶ヨ寮傚父璁板綍
@@ -796,12 +876,12 @@
                     warningEvent.setCreateDate(new Date());
                     warningEvent.setCreator(Objects.nonNull(systemUser)?systemUser.getId():null);
                     warningEvent.setWarningId(warning.getId());
+                    warningEvent.setIsdeleted(Constants.ZERO);
                     warningEvent.setTitle(warningConfig.getInfo());
                     warningEvent.setContent(content );
                     warningEvent.setStatus(Constants.ZERO);
                     warningEvent.setRegion(Objects.nonNull(jkCabinet)&&StringUtils.isNotBlank(jkCabinet.getLocation())?jkCabinet.getLocation():"鏈煡浣嶇疆");
                     warningEventMapper.insert(warningEvent);
-
                     try {
                         // 瀛樺偍寮傚父閫氱煡鏃ュ織
                         WarningPush warningPush = new WarningPush();
@@ -834,9 +914,7 @@
                         warningEvent.setStatus(Constants.TWO);
                         warningEventMapper.updateById(warningEvent);
                     }
-
                 }
-
             }
         }
     }
@@ -878,8 +956,8 @@
                 //鏃犱换浣曡鍒� 鐩存帴璺宠繃
                 if(CollectionUtils.isEmpty(warningRuleDetails)){
                     return resultList;
-                }else if(!Constants.equalsInteger(warningRuleDetails.stream().filter(i->!i.getCode().equals(warningConfig.getKey())).collect(Collectors.toList()).size(),Constants.ZERO)){
-                    List<WarningRuleDetail> wList = warningRuleDetails.stream().filter(i->!i.getCode().equals(warningConfig.getKey())).collect(Collectors.toList());
+                }else if(!Constants.equalsInteger(warningRuleDetails.stream().filter(i->!i.getCode().equals(warningConfig.getKey()+"")).collect(Collectors.toList()).size(),Constants.ZERO)){
+                    List<WarningRuleDetail> wList = warningRuleDetails.stream().filter(i->!i.getCode().equals(warningConfig.getKey()+"")).collect(Collectors.toList());
                     //鑾峰彇鎵�鏈夊叾浠栨墍鏈変簨浠朵富閿俊鎭�
                     List<Integer> warningIdList = wList.stream().map(i->i.getWarningId()).collect(Collectors.toList());
                     Set<Integer> setWarningIdList = new HashSet<>(warningIdList);
@@ -887,25 +965,30 @@
                     List<WarningEvent> warningEventList = warningEventMapper.selectList(new QueryWrapper<WarningEvent>().lambda()
                             .eq(WarningEvent::getIsdeleted,Constants.ZERO)
                             .in(WarningEvent::getWarningId,setWarningIdList)
-                            .apply(" DATE_ADD(CREATE_DATE , INTERVAL "+warningRule.getIntervalSec()+" SECOND) > now() ")
+                            .apply(Objects.nonNull(warningRule.getIntervalSec())," DATE_ADD(CREATE_DATE , INTERVAL "+warningRule.getIntervalSec()+" SECOND) > now() ")
                     );
                     if(this.processWarnFlag(wList,warningEventList)){
                         resultList.add(ruleId);
                     };
                 }else{
-                    List<WarningRuleDetail> wList = warningRuleDetails.stream().filter(i->i.getCode().equals(warningConfig.getKey())).collect(Collectors.toList());
+                    List<WarningRuleDetail> wList = warningRuleDetails.stream().filter(i->i.getCode().equals(warningConfig.getKey()+"")).collect(Collectors.toList());
                     //鑾峰彇鏈浜嬩欢涓婚敭淇℃伅
                     List<Integer> warningIdList = wList.stream().map(i->i.getWarningId()).collect(Collectors.toList());
                     Set<Integer> setWarningIdList = new HashSet<>(warningIdList);
-                    //鑾峰彇鏃堕棿鍐呮墍鏈変簨浠朵俊鎭�
-                    List<WarningEvent> warningEventList = warningEventMapper.selectList(new QueryWrapper<WarningEvent>().lambda()
-                            .eq(WarningEvent::getIsdeleted,Constants.ZERO)
-                            .in(WarningEvent::getWarningId,setWarningIdList)
-                            .apply(" DATE_ADD(CREATE_DATE , INTERVAL "+warningRule.getIntervalSec()+" SECOND) > now() ")
-                    );
-                    if(this.processWarnFlag(wList,warningEventList)){
+                    if(Objects.isNull(warningRule.getIntervalSec())){
                         resultList.add(ruleId);
+                    }else{
+                        //鑾峰彇鏃堕棿鍐呮墍鏈変簨浠朵俊鎭�
+                        List<WarningEvent> warningEventList = warningEventMapper.selectList(new QueryWrapper<WarningEvent>().lambda()
+                                .eq(WarningEvent::getIsdeleted,Constants.ZERO)
+                                .in(WarningEvent::getWarningId,setWarningIdList)
+                                .apply(Objects.nonNull(warningRule.getIntervalSec())," DATE_ADD(CREATE_DATE , INTERVAL "+warningRule.getIntervalSec()+" SECOND) > now() ")
+                        );
+                        if(this.processWarnFlag(wList,warningEventList)){
+                            resultList.add(ruleId);
+                        }
                     }
+
                 } 
             }
             return resultList;
@@ -991,15 +1074,15 @@
 
                 String content = "";
                 if(Objects.nonNull(systemUser.getRealname())){
-                    content = content + systemUser.getRealname();
+                    content = content +"銆�"+ systemUser.getRealname()+"銆�";
                 }
                 if(Objects.nonNull(jkCabinet)){
-                    content = content + "浜�"+jkCabinet.getName()+"閽ュ寵鏌�";
+                    content = content + "浜庛��"+jkCabinet.getName()+"銆戦挜鍖欐煖";
                 }
                 content = content + "閰掔簿妫�娴嬪紓甯�";
-                if(Objects.nonNull(dto.getAlcoholNum())){
-                    content = content + "锛岄厭绮惧害鏁般��"+dto.getAlcoholNum()+"掳銆�";
-                }
+//                if(Objects.nonNull(dto.getAlcoholNum())){
+//                    content = content + "锛岄厭绮惧害鏁般��"+dto.getAlcoholNum()+"掳銆�";
+//                }
 
                 //瀛樺偍鎶ヨ寮傚父璁板綍
                 WarningEvent warningEvent = new WarningEvent();
@@ -1007,6 +1090,7 @@
                 warningEvent.setCreator(Objects.nonNull(systemUser)?systemUser.getId():null);
                 warningEvent.setWarningId(warning.getId());
                 warningEvent.setTitle(warningConfig.getInfo());
+                warningEvent.setIsdeleted(Constants.ZERO);
                 warningEvent.setContent(content );
                 warningEvent.setStatus(Constants.ZERO);
                 warningEvent.setRegion(Objects.nonNull(jkCabinet)&&StringUtils.isNotBlank(jkCabinet.getLocation())?jkCabinet.getLocation():"鏈煡浣嶇疆");
@@ -1097,4 +1181,59 @@
     }
 
 
+    @Override
+    public void syncGridData(SyncCabinetDTO dto){
+        if(Objects.isNull(dto)
+            ||StringUtils.isBlank(dto.getCode())
+            || CollectionUtils.isEmpty(dto.getGridDTOList())){
+            return;
+        }
+        List<JkCabinetGrid> jkCabinetGridList =
+                jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class, new MPJLambdaWrapper<JkCabinetGrid>()
+                        .selectAll(JkCabinetGrid.class)
+                        .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode)
+                        .selectAs(JkKeys::getRfidLable,JkCabinetGrid::getKeyCode)
+                        .selectAs(JkKeys::getStatus,JkCabinetGrid::getKeyStatus)
+                        .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
+                        .leftJoin(JkCabinet.class,JkCabinet::getId,JkCabinetGrid::getCabinetId)
+                        .eq(JkCabinet::getCode,dto.getCode())
+                        .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
+                        .isNotNull(JkCabinetGrid::getBoardCode)
+                        .isNotNull(JkCabinetGrid::getChannelCode)
+                        .orderByAsc(JkCabinetGrid::getCode)
+                );
+        if(CollectionUtils.isEmpty(jkCabinetGridList)){
+            return;
+        }
+        List<SyncGridDTO> gridDTOList = dto.getGridDTOList();
+        for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
+            List<SyncGridDTO> gridSyncList = gridDTOList.stream().filter(i->StringUtils.isNotBlank(i.getBoardCode())&&
+                    StringUtils.isNotBlank(i.getChannelCode())&&StringUtils.isNotBlank(i.getActualLable())&&i.getBoardCode().equals(jkCabinetGrid.getBoardCode())
+            && i.getChannelCode().equals(jkCabinetGrid.getChannelCode())).collect(Collectors.toList());
+            if(CollectionUtils.isEmpty(gridDTOList)){
+                continue;
+            }
+            SyncGridDTO syncGridDTO = gridSyncList.get(Constants.ZERO);
+            if(StringUtils.isBlank(jkCabinetGrid.getKeyCode())
+            || (!jkCabinetGrid.getKeyCode().equals(syncGridDTO.getActualLable())
+                    && !jkCabinetGrid.getActualLable().equals(syncGridDTO.getActualLable()))){
+                //鏇存柊鏁版嵁 鏍囪瀵瑰簲code
+                jkCabinetGridMapper.update(null,new UpdateWrapper<JkCabinetGrid>().lambda()
+                        .set(JkCabinetGrid::getActualLable,syncGridDTO.getActualLable())
+                        .eq(JkCabinetGrid::getId,jkCabinetGrid.getId())
+                );
+            }
+
+        }
+        
+        
+        
+    }
+    
+    
+    
+    
+    
+    
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java
index 8470d37..1639a1a 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java
@@ -252,15 +252,14 @@
                                 .last(" limit 1 ")
                         );
                     }
-
-                    String content = "銆愯溅杈�-"+jkCabinetLog.getCarCode()+"閽ュ寵銆戠敱+"+(StringUtils.isNotBlank(jkCabinetLog.getMemberName())?jkCabinetLog.getMemberName():"鏈煡浜哄憳")+"鍊熷嚭锛岃秴鏃舵湭褰掕繕";
-
+                    String content = "銆愯溅杈�-"+jkCabinetLog.getKeyInfo()+"閽ュ寵銆戠敱"+(StringUtils.isNotBlank(jkCabinetLog.getMemberName())?jkCabinetLog.getMemberName():"鏈煡浜哄憳")+"鍊熷嚭锛岃秴鏃舵湭褰掕繕";
                     //瀛樺偍鎶ヨ寮傚父璁板綍
                     WarningEvent warningEvent = new WarningEvent();
                     warningEvent.setCreateDate(new Date());
                     warningEvent.setCreator(Objects.nonNull(systemUser)?systemUser.getId():null);
                     warningEvent.setWarningId(warning.getId());
                     warningEvent.setTitle(warningConfig.getInfo());
+                    warningEvent.setIsdeleted(Constants.ZERO);
                     warningEvent.setContent(content );
                     warningEvent.setStatus(Constants.ZERO);
                     warningEvent.setRegion( StringUtils.isNotBlank(jkCabinetLog.getLocation())?jkCabinetLog.getLocation():"鏈煡浣嶇疆");
@@ -295,6 +294,10 @@
                         warningPushMapper.insert(warningPush);
                         warningEvent.setStatus(Constants.ONE);
                         warningEventMapper.updateById(warningEvent);
+                        jkCabinetLogMapper.update(null,new UpdateWrapper<JkCabinetLog>().lambda()
+                                .set(JkCabinetLog::getIsNotice,Constants.ONE)
+                                .eq(JkCabinetLog::getId,jkCabinetLog.getId())
+                        );
                     }catch (Exception e){
                         warningEvent.setStatus(Constants.TWO);
                         warningEventMapper.updateById(warningEvent);
@@ -356,7 +359,7 @@
 
     @Override
     public List<InterestedListVO> getKeyUseStatistics(Integer type){
-        List<String> weekDays = DateUtil.getBeforDaysByFormat(new Date(),Objects.isNull(type)||Constants.equalsInteger(type,Constants.ZERO)?7:15,"MM鏈坉d鏃�");
+        List<String> weekDays = DateUtil.getBeforDaysByFormat(new Date(),Objects.isNull(type)||Constants.equalsInteger(type,Constants.ZERO)?7:15,"MM-dd");
         MPJLambdaWrapper<JkCabinetLog> wrapper = new MPJLambdaWrapper<JkCabinetLog>()
                 .selectAll(JkCabinetLog.class)
                 .selectAs(Member::getName,JkCabinetLog::getMemberName)
@@ -386,11 +389,11 @@
             if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(jkCabinetLogs)) {
                 vo.setNum(
                         jkCabinetLogs.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.TWO)
-                                                &&DateUtil.dateToString(i.getCreateDate(),"MM鏈坉d鏃�").equals(days))
+                                                &&DateUtil.dateToString(i.getCreateDate(),"MM-dd").equals(days))
                                 .collect(Collectors.toList()).size()
                 );
                 vo.setNextNum(jkCabinetLogs.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.ONE)
-                                &&DateUtil.dateToString(i.getCreateDate(),"MM鏈坉d鏃�").equals(days))
+                                &&DateUtil.dateToString(i.getCreateDate(),"MM-dd").equals(days))
                         .collect(Collectors.toList()).size());
 
             }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java
index 7f25156..1292637 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java
@@ -12,6 +12,8 @@
 import com.doumee.dao.business.dao.MemberMapper;
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.business.vo.*;
+import com.doumee.dao.system.MultifileMapper;
+import com.doumee.dao.system.model.Multifile;
 import com.doumee.dao.system.model.SystemDictData;
 import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.service.business.third.model.PageData;
@@ -61,6 +63,9 @@
 
     @Autowired
     private MemberMapper memberMapper;
+
+    @Autowired
+    private MultifileMapper multifileMapper;
 
     @Override
     @Transactional(rollbackFor = {Exception.class,BusinessException.class})
@@ -113,6 +118,17 @@
         jkCabinet.setAuthMemberId(String.join(",",jkCabinet.getAuthMemberIdList()));
         jkCabinetMapper.insert(jkCabinet);
         this.createGrid(jkCabinet);
+
+        if(Objects.nonNull(jkCabinet.getActivateFile())){
+            Multifile multifile = jkCabinet.getActivateFile();
+            multifile.setCreateDate(new Date());
+            multifile.setEditDate(multifile.getCreateDate());
+            multifile.setIsdeleted(Constants.ZERO);
+            multifile.setObjId(jkCabinet.getId());
+            multifile.setObjType(Constants.FIVE);
+            multifileMapper.insert(multifile);
+        }
+
         return jkCabinet.getId();
     }
 
@@ -224,6 +240,23 @@
         jkCabinet.setManagerId(String.join(",",jkCabinet.getManagerIdList()));
         jkCabinet.setAuthMemberId(String.join(",",jkCabinet.getAuthMemberIdList()));
         jkCabinetMapper.updateById(jkCabinet);
+
+        multifileMapper.update(new UpdateWrapper<Multifile>().lambda()
+                .set(Multifile::getIsdeleted,Constants.ONE)
+                .eq(Multifile::getObjType,Constants.FIVE)
+                .eq(Multifile::getObjId,jkCabinet.getId())
+        );
+        if(Objects.nonNull(jkCabinet.getActivateFile())){
+            Multifile multifile = jkCabinet.getActivateFile();
+            multifile.setId(null);
+            multifile.setCreateDate(new Date());
+            multifile.setEditDate(multifile.getCreateDate());
+            multifile.setIsdeleted(Constants.ZERO);
+            multifile.setObjId(jkCabinet.getId());
+            multifile.setObjType(Constants.FIVE);
+            multifileMapper.insert(multifile);
+        }
+
     }
 
     @Override
@@ -274,6 +307,19 @@
                     jkCabinet.getAuthMemberId().split(",")
             ));
         }
+        Multifile multifile = multifileMapper.selectOne(new QueryWrapper<Multifile>()
+                .lambda()
+                .eq(Multifile::getObjType,Constants.FIVE)
+                .eq(Multifile::getObjId,jkCabinet.getId())
+                .eq(Multifile::getIsdeleted,Constants.ZERO)
+                .last(" limit 1 "));
+        if(Objects.nonNull(multifile)){
+            String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
+                    systemDictDataBiz.queryByCode(Constants.FTP,Constants.ACTIVATE).getCode();
+            multifile.setFileurlFull(prefixUrl + multifile.getFileurl());
+            jkCabinet.setActivateFile(multifile);
+        }
+
         return jkCabinet;
     }
 
@@ -585,6 +631,19 @@
                     categoryList.stream().map(i->i.getImgurlFull()).collect(Collectors.toList())
             );
         }
+
+
+        Multifile multifile = multifileMapper.selectOne(new QueryWrapper<Multifile>()
+                .lambda()
+                .eq(Multifile::getObjType,Constants.FIVE)
+                .eq(Multifile::getObjId,jkCabinet.getId())
+                .eq(Multifile::getIsdeleted,Constants.ZERO)
+                .last(" limit 1 "));
+        if(Objects.nonNull(multifile)&&StringUtils.isNotBlank(multifile.getFileurl())){
+            String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
+                    systemDictDataBiz.queryByCode(Constants.FTP,Constants.ACTIVATE).getCode();
+            cabinetInfoVO.setActivateFileUrl(prefixUrl + multifile.getFileurl());
+        }
         return cabinetInfoVO;
     }
 
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 dfd57cf..cdc2091 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
@@ -175,7 +175,7 @@
         Member insert = initAddMemberModel(member,loginUserInfo);
         //娴峰悍浜哄憳鏂板涓氬姟
         try {
-             if(dealHkUserBiz(insert)){
+//             if(dealHkUserBiz(insert)){
                 memberMapper.insert(insert);
                 //鍒涘缓绯荤粺鐧婚檰璐﹀彿锛堥粯璁ゆ棤浠讳綍瑙掕壊锛�
 //                if(Constants.equalsInteger(member.getCompanyType(),Constants.ONE)){
@@ -184,9 +184,9 @@
                     //澶勭悊鍩硅鏈夋晥鏈熶笟鍔�
                     dealTrainTIme(member,0,loginUserInfo);
 //                }
-            }else{
-                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃绋嶅悗閲嶈瘯锛�");
-            }
+//            }else{
+//                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃绋嶅悗閲嶈瘯锛�");
+//            }
         }catch (BusinessException e){
             //濡傛灉鍙戠敓寮傚父锛屽垹闄ゅ凡缁忓垱寤虹殑浜哄憳淇℃伅
             deleteHkUserBiz(new String[]{insert.getHkId()});
@@ -199,6 +199,7 @@
         }
         return insert;
     }
+
     public static SystemUser createSystemUser(Member insert,SystemDictDataBiz systemDictDataBiz) {
         SystemUser user = new SystemUser();
         // 鐢熸垚瀵嗙爜鐩�
@@ -397,9 +398,9 @@
         if(company == null || Constants.equalsInteger(company.getIsdeleted(),Constants.ONE)){
             throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ョ粍缁囦俊鎭凡琚垹闄わ紝璇峰埛鏂伴〉闈㈤噸璇曪紒");
         }
-        if(StringUtils.isBlank(company.getHkId())){
-            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ョ粍缁囦俊鎭湭鍚屾瀹夐槻骞冲彴锛岃鍏堝墠寰�銆愮粍缁囩鐞嗐�戣彍鍗曡繘琛岀淮鎶わ紒");
-        }
+//        if(StringUtils.isBlank(company.getHkId())){
+//            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ョ粍缁囦俊鎭湭鍚屾瀹夐槻骞冲彴锛岃鍏堝墠寰�銆愮粍缁囩鐞嗐�戣彍鍗曡繘琛岀淮鎶わ紒");
+//        }
         member.setHkOrgId(company.getHkId());
         member.setCompanyType(company.getType());
         if(Constants.equalsInteger(company.getType(),Constants.ONE)){
@@ -960,7 +961,7 @@
         updateMember.setEditor(loginUserInfo.getId());
         updateMember.setEditDate(new Date());
         //娴峰悍浜哄憳鏂板涓氬姟
-        if(dealHkUserForUpdateBiz(updateMember)){
+//        if(dealHkUserForUpdateBiz(updateMember)){
             updateMember.setHkId(null);
             updateMember.setAuthStatus(Constants.ZERO);
             memberMapper.update(null,new UpdateWrapper<Member>().lambda()
@@ -993,9 +994,9 @@
             cancelAllMemberEmpower(updateMember,memberRoleMapper,empowerMapper);
             //璁板綍鎿嶄綔鏃ュ織
             saveUserActionBiz(updateMember,loginUserInfo,Constants.UserActionType.EDIT,userActionJoinMapper,null);
-        }else{
-            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃绋嶅悗閲嶈瘯锛�");
-        }
+//        }else{
+//            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃绋嶅悗閲嶈瘯锛�");
+//        }
     }
 
     private void dealTrainTIme(Member updateMember, int i,LoginUserInfo loginUserInfo) {
@@ -1555,7 +1556,8 @@
                 .eq(pageWrap.getModel().getHkStatus()!=null,Member::getHkStatus,pageWrap.getModel().getHkStatus())
 
                 .orderByAsc(Company::getSortnum)
-                .orderByAsc(Position::getSortnum);
+                .orderByAsc(Position::getSortnum)
+                .orderByAsc(Member::getId);
 //                .orderByAsc(!Constants.equalsInteger(pageWrap.getModel().getIsdeleted(),Constants.ONE),Member::getPinyin)
 //                .orderByDesc(Constants.equalsInteger(pageWrap.getModel().getIsdeleted(),Constants.ONE),Member::getEditDate);
         if(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin())==DataSyncConfig.origin.erp){

--
Gitblit v1.9.3