From 17d3a171569b150cae8c240e69e4969e0ae34b03 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 14 八月 2024 11:44:45 +0800
Subject: [PATCH] 最新版本

---
 server/system_service/src/main/java/com/doumee/core/utils/Constants.java                                              |  134 ++++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Platform.java                               |   21 +
 admin/src/components/business/OperaPlatformWindow.vue                                                                 |  142 +++++++++
 admin/src/api/platform/platform.js                                                                                    |   49 +++
 server/visits/admin_timer/src/main/resources/bootstrap.yml                                                            |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java                 |    1 
 server/visits/dmvisit_admin/src/main/resources/bootstrap.yml                                                          |    2 
 server/visits/admin_timer/src/main/java/com/doumee/api/HkPlatformTimerController.java                                 |   31 ++
 admin/src/views/platform/platform.vue                                                                                 |  143 +++++++++
 server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java                                        |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java                        |    2 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/HkSyncController.java                               |   29 +
 admin/src/components/common/SearchFormCollapse.vue                                                                    |   11 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java                            |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PlatformListInfoResponse.java |   17 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java                           |   20 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java        |    6 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java                                |    4 
 server/system_gateway/src/main/resources/application.yml                                                              |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWmsJobServiceImpl.java           |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPlatformsServiceImpl.java   |  231 +++++++++++++++
 21 files changed, 822 insertions(+), 34 deletions(-)

diff --git a/admin/src/api/platform/platform.js b/admin/src/api/platform/platform.js
new file mode 100644
index 0000000..be5bd9e
--- /dev/null
+++ b/admin/src/api/platform/platform.js
@@ -0,0 +1,49 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/visitsAdmin/cloudService/business/platform/page', data, {
+    trim: true
+  })
+}
+
+// 鍚屾
+export function syncPlatforms (data) {
+  return request.post('/visitsAdmin/cloudService/business/hksync/syncPlatforms', data)
+}
+// 鍚屾
+export function syncPlatformStatus (data) {
+  return request.post('/visitsAdmin/cloudService/business/hksync/syncPlatformStatus', data)
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+  return request.post('/visitsAdmin/cloudService/business/platform/exportExcel', data, {
+    trim: true,
+    download: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/visitsAdmin/cloudService/business/platform/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/visitsAdmin/cloudService/business/platform/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/visitsAdmin/cloudService/business/platform/delete/${id}`)
+}
+
+// 鎵归噺鍒犻櫎
+export function deleteByIdInBatch (ids) {
+  return request.get('/visitsAdmin/cloudService/business/platform/delete/batch', {
+    params: {
+      ids
+    }
+  })
+}
diff --git a/admin/src/components/business/OperaPlatformWindow.vue b/admin/src/components/business/OperaPlatformWindow.vue
new file mode 100644
index 0000000..753000b
--- /dev/null
+++ b/admin/src/components/business/OperaPlatformWindow.vue
@@ -0,0 +1,142 @@
+<template>
+  <GlobalWindow
+    :title="title"
+    :visible.sync="visible"
+    :confirm-working="isWorking"
+    @confirm="confirm"
+  >
+    <el-form :model="form" ref="form" :rules="rules">
+      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
+        <el-input v-model="form.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
+        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
+        <el-input v-model="form.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
+        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
+        <el-input v-model="form.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍚嶇О" prop="name">
+        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ悕绉�" v-trim/>
+      </el-form-item>
+      <el-form-item label="澶囨敞" prop="remark">
+        <el-input v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鐘舵�� 0鍚敤 1绂佺敤" prop="status">
+        <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 0鍚敤 1绂佺敤" v-trim/>
+      </el-form-item>
+      <el-form-item label="鎺掑簭鐮�" prop="sortnum">
+        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鎵�灞炴湀鍙板垎閽熺紪鐮侊紙g鍏宠仈platform_group)" prop="groupId">
+        <el-input v-model="form.groupId" placeholder="璇疯緭鍏ユ墍灞炴湀鍙板垎閽熺紪鐮侊紙g鍏宠仈platform_group)" v-trim/>
+      </el-form-item>
+      <el-form-item label="宸ヤ綔寮�濮嬫椂闂�" prop="startTime">
+        <el-input v-model="form.startTime" placeholder="璇疯緭鍏ュ伐浣滃紑濮嬫椂闂�" v-trim/>
+      </el-form-item>
+      <el-form-item label="宸ヤ綔缁撴潫鏃堕棿" prop="endTime">
+        <el-input v-model="form.endTime" placeholder="璇疯緭鍏ュ伐浣滅粨鏉熸椂闂�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍚屾椂浣滀笟鏁伴噺" prop="workingNum">
+        <el-input v-model="form.workingNum" placeholder="璇疯緭鍏ュ悓鏃朵綔涓氭暟閲�" v-trim/>
+      </el-form-item>
+      <el-form-item label="绛夊緟鏁欏ソ鏃堕棿(绉掞級" prop="wariCallTime">
+        <el-input v-model="form.wariCallTime" placeholder="璇疯緭鍏ョ瓑寰呮暀濂芥椂闂�(绉掞級" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍋滅暀瓒呮椂鎶ヨ鏃堕棿(绉掞級" prop="alermTime">
+        <el-input v-model="form.alermTime" placeholder="璇疯緭鍏ュ仠鐣欒秴鏃舵姤璀︽椂闂�(绉掞級" v-trim/>
+      </el-form-item>
+      <el-form-item label="鏈�鍚庝簨浠舵帹閫佹椂闂�" prop="lastEventTime">
+        <el-date-picker v-model="form.lastEventTime" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ渶鍚庝簨浠舵帹閫佹椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鐩戞帶鐐瑰悕绉帮紝澶氫釜鐢ㄨ嫳鏂囬�楀彿闅斿紑" prop="deviceNames">
+        <el-input v-model="form.deviceNames" placeholder="璇疯緭鍏ョ洃鎺х偣鍚嶇О锛屽涓敤鑻辨枃閫楀彿闅斿紑" v-trim/>
+      </el-form-item>
+      <el-form-item label="鏈堝彴灞忓箷鍚嶇О锛屽涓敤鑻辨枃閫楀彿闅斿紑" prop="screenName">
+        <el-input v-model="form.screenName" placeholder="璇疯緭鍏ユ湀鍙板睆骞曞悕绉帮紝澶氫釜鐢ㄨ嫳鏂囬�楀彿闅斿紑" v-trim/>
+      </el-form-item>
+      <el-form-item label="娴峰悍鏍囪瘑" prop="hkId">
+        <el-input v-model="form.hkId" placeholder="璇疯緭鍏ユ捣搴锋爣璇�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍏宠仈鎵跨鍏徃" prop="companys">
+        <el-input v-model="form.companys" placeholder="璇疯緭鍏ュ叧鑱旀壙绉熷叕鍙�" v-trim/>
+      </el-form-item>
+      <el-form-item label="X鍧愭爣" prop="xpos">
+        <el-input v-model="form.xpos" placeholder="璇疯緭鍏鍧愭爣" v-trim/>
+      </el-form-item>
+      <el-form-item label="Y鍧愭爣" prop="ypos">
+        <el-input v-model="form.ypos" placeholder="璇疯緭鍏鍧愭爣" v-trim/>
+      </el-form-item>
+      <el-form-item label="瀹藉害" prop="width">
+        <el-input v-model="form.width" placeholder="璇疯緭鍏ュ搴�" v-trim/>
+      </el-form-item>
+      <el-form-item label="楂樺害" prop="height">
+        <el-input v-model="form.height" placeholder="璇疯緭鍏ラ珮搴�" v-trim/>
+      </el-form-item>
+      <el-form-item label="瑙掑害" prop="angle">
+        <el-input v-model="form.angle" placeholder="璇疯緭鍏ヨ搴�" v-trim/>
+      </el-form-item>
+      <el-form-item label="娴峰悍鏍囪瘑鍚屾鏃堕棿" prop="hkData">
+        <el-date-picker v-model="form.hkData" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ捣搴锋爣璇嗗悓姝ユ椂闂�"></el-date-picker>
+      </el-form-item>
+    </el-form>
+  </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+export default {
+  name: 'OperaPlatformWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow },
+  data () {
+    return {
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: null,
+        creator: '',
+        createDate: '',
+        editor: '',
+        editDate: '',
+        isdeleted: '',
+        name: '',
+        remark: '',
+        status: '',
+        sortnum: '',
+        groupId: '',
+        startTime: '',
+        endTime: '',
+        workingNum: '',
+        wariCallTime: '',
+        alermTime: '',
+        lastEventTime: '',
+        deviceNames: '',
+        screenName: '',
+        hkId: '',
+        companys: '',
+        xpos: '',
+        ypos: '',
+        width: '',
+        height: '',
+        angle: '',
+        hkData: ''
+      },
+      // 楠岃瘉瑙勫垯
+      rules: {
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/platform/platform',
+      'field.id': 'id'
+    })
+  }
+}
+</script>
diff --git a/admin/src/components/common/SearchFormCollapse.vue b/admin/src/components/common/SearchFormCollapse.vue
index 5e602b8..771d38f 100644
--- a/admin/src/components/common/SearchFormCollapse.vue
+++ b/admin/src/components/common/SearchFormCollapse.vue
@@ -1,14 +1,21 @@
 <template>
   <div class="search-form-collapse" :class="{'collapse__hidden': !showMore}">
     <slot></slot>
-    <el-button v-if="!showMore" class="collapse__switch" @click="showMore = true">鏇村鏌ヨ...</el-button>
-    <el-button v-else class="collapse__switch" @click="showMore = false">鏀惰捣</el-button>
+    <el-button  v-if="needMore && !showMore" class="collapse__switch" @click="showMore = true">鏇村鏌ヨ...</el-button>
+    <el-button v-else-if="needMore && showMore" class="collapse__switch" @click="showMore = false">鏀惰捣</el-button>
   </div>
 </template>
 
 <script>
 export default {
   name: 'SearchFormCollapse',
+  props: {
+    needMore: {
+      type: Boolean,
+      required: false,
+      default: () => true
+    }
+  },
   data () {
     return {
       showMore: false
diff --git a/admin/src/views/platform/platform.vue b/admin/src/views/platform/platform.vue
new file mode 100644
index 0000000..19d6d74
--- /dev/null
+++ b/admin/src/views/platform/platform.vue
@@ -0,0 +1,143 @@
+<template>
+  <TableLayout :permissions="['business:platform:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <SearchFormCollapse slot="search-form" :need-more="false">
+      <el-form ref="searchForm" :model="searchForm" label-width="100px" inline>
+        <el-form-item label="" prop="name">
+          <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ユ湀鍙板悕绉�" @keypress.enter.native="search"></el-input>
+        </el-form-item>
+        <section>
+          <el-button type="primary" @click="search">鎼滅储</el-button>
+          <el-button @click="reset">閲嶇疆</el-button>
+        </section>
+      </el-form>
+    </SearchFormCollapse>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:hksync:platforms']">
+        <li><el-button type="primary" :loading="working" @click="syncData" icon="el-icon-plus" v-permissions="['business:hksync:platforms']">鍚屾</el-button></li>
+        <li><el-button type="primary" :loading="working1" @click="syncStatus" icon="el-icon-plus" v-permissions="['business:hksync:platforms']">鍚屾鐘舵��</el-button></li>
+      </ul>
+      <el-table
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+        @selection-change="handleSelectionChange"
+      >
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="name" label="鏈堝彴鍚嶇О" min-width="100px"></el-table-column>
+        <el-table-column prop="hkId" label="鏈堝彴缂栫爜" min-width="100px"></el-table-column>
+        <el-table-column prop="groupName" label="鎵�灞炴湀鍙扮粍" min-width="100px"></el-table-column>
+        <el-table-column prop="workingNum" label="鍚屾椂鍙彿杞﹁締鏁�" min-width="100px"></el-table-column>
+        <el-table-column prop="alermTime" label="鍋滅暀瓒呮椂鎶ヨ鏃堕棿(鍒嗛挓锛�" min-width="100px">
+          <template scope="{row}">{{row.alermTime?(row.alermTime/60):'-'}}</template>
+        </el-table-column>
+        <el-table-column prop="waitCallTime" label="浣滀笟瓒呮椂鎶ヨ鏃堕棿(鍒嗛挓锛�" min-width="100px">
+          <template scope="{row}"> {{row.waitCallTime?(row.alermTime/60):'-'}}</template>
+        </el-table-column>
+        <el-table-column prop="workRate" label="鏈堝彴浣滀笟鏁堢巼(涓囧彧/灏忔椂)" min-width="100px"></el-table-column>
+        <el-table-column prop="status" label="鐘舵��" min-width="100px"></el-table-column>
+        <el-table-column prop="broadcastName" label="鍏宠仈骞挎挱" min-width="100px"></el-table-column>
+        <el-table-column prop="ledName" label="鍏宠仈LED" min-width="100px"></el-table-column>
+        <el-table-column prop="hkDate" label="鍚屾鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column
+          v-if="containPermissions(['business:platform:update', 'business:platform:delete'])"
+          label="鎿嶄綔"
+          min-width="120"
+          fixed="right"
+        >
+          <template slot-scope="{row}">
+            <el-button type="text" @click="$refs.operaPlatformWindow.open('缂栬緫鏈堝彴淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:platform:update']">缂栬緫</el-button>
+            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:platform:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      >
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaPlatformWindow ref="operaPlatformWindow" @success="handlePageChange"/>
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import SearchFormCollapse from '@/components/common/SearchFormCollapse'
+import Pagination from '@/components/common/Pagination'
+import OperaPlatformWindow from '@/components/business/OperaPlatformWindow'
+import { syncDevices, updateEntranceById } from '@/api/business/device'
+import { syncPlatforms } from '@/api/platform/platform'
+export default {
+  name: 'Platform',
+  extends: BaseTable,
+  components: { SearchFormCollapse, TableLayout, Pagination, OperaPlatformWindow },
+  data () {
+    return {
+      // 鎼滅储
+      working: false,
+      working1: false,
+      searchForm: {
+        name: ''
+      }
+    }
+  },
+  created () {
+    this.config({
+      module: '鏈堝彴淇℃伅琛�',
+      api: '/platform/platform',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  },
+  methods: {
+    changeManufature (e, row) {
+      updateEntranceById({
+        id: row.id,
+        isEntrance: e
+      })
+    },
+    syncData () {
+      this.$dialog.actionConfirm('鎿嶄綔纭鎻愰啋', '鎮ㄧ‘璁ゅ悓姝ュ叏閮ㄤ俊鎭悧锛�')
+        .then(() => {
+          this.isWorking.working = true
+          this.api.syncPlatforms({})
+            .then(res => {
+              this.$tip.apiSuccess(res || '鍚屾鎴愬姛')
+              this.search()
+            })
+            .catch(e => {
+              this.$tip.apiFailed(e)
+            })
+            .finally(() => {
+              this.isWorking.working = false
+            })
+        })
+        .catch(() => {})
+    },
+    syncStatus () {
+      this.$dialog.actionConfirm('鎿嶄綔纭鎻愰啋', '鎮ㄧ‘璁ゅ悓姝ュ叏閮ㄤ俊鎭悧锛�')
+        .then(() => {
+          this.isWorking.working = true
+          this.api.syncPlatforms({})
+            .then(res => {
+              this.$tip.apiSuccess(res || '鍚屾鎴愬姛')
+              this.search()
+            })
+            .catch(e => {
+              this.$tip.apiFailed(e)
+            })
+            .finally(() => {
+              this.isWorking.working = false
+            })
+        })
+        .catch(() => {})
+    }
+  }
+}
+</script>
diff --git a/server/system_gateway/src/main/resources/application.yml b/server/system_gateway/src/main/resources/application.yml
index d3f483c..a5edc83 100644
--- a/server/system_gateway/src/main/resources/application.yml
+++ b/server/system_gateway/src/main/resources/application.yml
@@ -9,8 +9,8 @@
 spring:
   application:
     name: system_gateway
-  profiles:
-    active: dev
+#  profiles:
+#    active: dev
 
   # JSON杩斿洖閰嶇疆
   jackson:
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 da04b9a..8646006 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
@@ -107,7 +107,9 @@
     public static final String HK_NGINX_URL = "HK_NGINX_URL";
     public static  boolean DEALING_HK_SYNCPRIVILEGE= false;
     public static  boolean DEALING_HK_SYNCDEVICE = false;
+    public static  boolean DEALING_HK_SYNCPLATFORM = false;
     public static  boolean DEALING_HK_SYNCDEVICE_STATUS = false;
+    public static  boolean DEALING_HK_SYNCPLATFORM_STATUS = false;
     public static  boolean DEALING_HK_SYNCPARK = false;
     public static  boolean DEALING_HK_IMG = false;
     public static  boolean DEALING_HK_ORG = false;
@@ -899,5 +901,137 @@
         T reqJson =  mapper.readValue(json, clazz);
         return reqJson;
     }
+    /**
+     * 鍛樺伐淇℃伅缁存姢鎿嶄綔鍘嗗彶绫诲瀷 0瑙e喕 1鍐荤粨 2鎷夐粦 3鎭㈠ 4璁句负鎷滆浜� 5鍙栨秷鎷滆浜� 6璁句负楂樼骇瀹℃壒浜� 7鍙栨秷楂樼骇瀹℃壒浜� 8鎵嬪姩绂诲満 9鍒犻櫎 10鏇存柊 11鎺堟潈闂ㄧ鏉冮檺 12绂昏亴 13鎭㈠鍦ㄨ亴
+     */
+    public  enum UserActionType {
+        CANCEL_FREEZE(0, "瑙e喕","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愯В鍐汇��" ),
+        FREEZE(1, "鍐荤粨","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愬喕缁撱��" ),
+        BLACKLIST(2, "鎷夐粦","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愭媺榛戙��"),
+        CANCEL_BLACKLIST(3, "鎭㈠","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愮Щ鍑洪粦鍚嶅崟銆�" ),
+        CANVISIT(4, "璁句负鎷滆浜�","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愯涓烘嫓璁夸汉銆�" ),
+        CANCEL_VISIT(5, "鍙栨秷鎷滆浜�","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愬彇娑堟嫓璁夸汉銆�" ),
+        //缁繚閫氱煡
+        HIGHCHECKOR(6, "璁句负楂樼骇瀹℃壒浜�","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愯涓洪珮绾у鎵逛汉銆�" ),
+        CANCEL_HIGHCHECKOR(7, "鍙栨秷楂樼骇瀹℃壒浜�","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愬彇娑堥珮绾у鎵逛汉銆�" ),
+        LEVEL(8, "鎵嬪姩绂诲満","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愭墜鍔ㄧ鍦恒��" ),
+        DELETE(9, "鍒犻櫎","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愬垹闄ゃ��" ),
+        EDIT(10, "鏇存柊","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愭洿鏂般��" ),
+        AUTH_ROLE(11, "鎺堟潈闂ㄧ鏉冮檺","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愭巿鏉冮棬绂佹潈闄愩��" ),
+        WORK_OFF(12, "绂昏亴","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愮鑱屻�戞搷浣�" ),
+        WORK_ON(13, "鍦ㄨ亴","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愬湪鑱屻�戞搷浣�" ),
+        IMPORT_TRAIMETIME(14, "瀵煎叆鍩硅鏈夋晥","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愬鍏ュ煿璁湁鏁堛�戞搷浣�" ),
+        BE_HEAD(15, "璁句负涓荤","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愯涓轰富绠°�戞搷浣�" ),
+        NOT_HEAD(16, "鍙栨秷涓荤","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愬彇娑堜富绠°�戞搷浣�" ),
+        ;
 
+        // 鎴愬憳鍙橀噺
+        private int key;
+        private String name;
+        private String info;
+
+        // 鏋勯�犳柟娉�
+        UserActionType(int key, String name,String info ) {
+            this.key = key;
+            this.info = info;
+            this.name = name;
+        }
+        public static String getName(int index) {
+            for (UserActionType c : UserActionType.values()) {
+                if (c.getKey() == index) {
+                    return c.name;
+                }
+            }
+            return null;
+        }
+
+        public int getKey() {
+            return key;
+        }
+
+        public void setKey(int key) {
+            this.key = key;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public String getInfo() {
+            return info;
+        }
+
+        public void setInfo(String info) {
+            this.info = info;
+        }
+    }
+    /**
+     * 鍏宠仈瀵硅薄绫诲瀷
+     鍏宠仈瀵硅薄绫诲瀷 0浼佷笟钀ヤ笟鎵х収 1鐞嗚禂鎶ユ浜嬫晠瑙嗛鎴栧浘鐗� 2鐞嗚禂鍛樺伐鍏崇郴璇佹槑鏉愭枡 3鐞嗚禂闂ㄨ瘖璧勬枡 4鐞嗚禂浣忛櫌璧勬枡 5鐞嗚禂浼ゆ畫璧勬枡 6鐞嗚禂璧斾粯缁撴鏉愭枡 7浼佷笟韬唤璇佸彿 8淇濆崟鐢宠琛≒DF 9绛剧讲鍚庝繚鍗曠敵璇疯〃PDF 10浼佷笟绛剧珷 11鏈�缁堟姤鍗�
+     */
+    public  enum MultiFile{
+        HIDDEN_DANGER_SUBMIT(0, "闅愭偅闅忔墜鎷嶆彁鎶�", "闅愭偅闅忔墜鎷嶆彁鎶�"),
+        HIDDEN_DANGER_DEAL_BEFORE(1, "闅愭偅闅忔墜鎷嶅鐞嗗墠", "闅愭偅闅忔墜鎷嶅鐞嗗墠"),
+        HIDDEN_DANGER_DEAL_AFTER(2, "闅愭偅闅忔墜鎷嶅鐞嗗悗 ", "闅愭偅闅忔墜鎷嶅鐞嗗悗 "),
+        ;
+        // 鎴愬憳鍙橀噺
+        private String name;
+        private int key;
+        private String noteinfo;// 鎻忚堪
+
+        // 鏋勯�犳柟娉�
+        MultiFile(int key, String name, String noteinfo) {
+            this.name = name;
+            this.key = key;
+            this.noteinfo = noteinfo;
+        }
+
+        // 鏅�氭柟娉�
+        public static String getName(int index) {
+            for (MultiFile c : MultiFile.values()) {
+                if (c.getKey() == index) {
+                    return c.name;
+                }
+            }
+            return null;
+        }
+
+        // 鏅�氭柟娉�
+        public static String getInfo(int index) {
+            for (MultiFile c : MultiFile.values()) {
+                if (c.getKey() == index) {
+                    return c.noteinfo;
+                }
+            }
+            return null;
+        }
+
+        // get set 鏂规硶
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public int getKey() {
+            return key;
+        }
+
+        public void setKey(int key) {
+            this.key = key;
+        }
+
+        public String getNoteinfo() {
+            return noteinfo;
+        }
+
+
+
+    }
 }
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 6d0d8ea..54fb03b 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
@@ -28,6 +28,9 @@
     @ApiOperation("銆愯瀹㈢郴缁熴�戝畾鏃舵煡璇㈣澶囩姸鎬�")
     @GetMapping("/timer/device/getAscDeviceStatus")
      ApiResponse getAscDeviceStatus() ;
+    @ApiOperation("銆愯瀹㈢郴缁熴�戝畾鏃舵煡璇㈡湀鍙扮姸鎬�")
+    @GetMapping("/timer/platform/getPlatformStatus")
+     ApiResponse getPlatformStatus() ;
     @ApiOperation("銆愯瀹㈢郴缁熴�戝畾鏃朵笅杞芥捣搴风郴缁熷浘鐗囨暟鎹�")
     @GetMapping("/timer/image/downHKImgs")
      ApiResponse downHKImgs();
diff --git a/server/visits/admin_timer/src/main/java/com/doumee/api/HkPlatformTimerController.java b/server/visits/admin_timer/src/main/java/com/doumee/api/HkPlatformTimerController.java
new file mode 100644
index 0000000..dd7dfb6
--- /dev/null
+++ b/server/visits/admin_timer/src/main/java/com/doumee/api/HkPlatformTimerController.java
@@ -0,0 +1,31 @@
+package com.doumee.api;
+
+import com.doumee.core.haikang.model.param.request.PlatformStatusRequest;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.service.business.impl.hksync.HkSyncDeviceServiceImpl;
+import com.doumee.service.business.impl.hksync.HkSyncPlatformsServiceImpl;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2023/11/30 15:33
+ */
+@Api(tags = "璁惧瀹氭椂鍣ㄦ帴鍙�")
+@RestController
+@RequestMapping("/timer/platform")
+public class HkPlatformTimerController extends BaseController {
+    @Autowired
+    private HkSyncPlatformsServiceImpl hkSyncPlatformsService;
+    @ApiOperation("寮�鍚畾鏃舵煡璇㈡湀鍙扮姸鎬�")
+    @GetMapping("/getPlatformStatus")
+    public ApiResponse getPlatformStatus() {
+        hkSyncPlatformsService.getPlatformStatus(new PlatformStatusRequest());
+        return ApiResponse.success("寮�鍚畾鏃舵煡璇㈡湀鍙扮姸鎬佹垚鍔�");
+    }
+
+}
diff --git a/server/visits/admin_timer/src/main/resources/bootstrap.yml b/server/visits/admin_timer/src/main/resources/bootstrap.yml
index fb74d1e..efae338 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: test
+    active: dev
   application:
     name: visitsTimer
     # 瀹夊叏閰嶇疆
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/HkSyncController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/HkSyncController.java
index 54e296f..2af227f 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/HkSyncController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/HkSyncController.java
@@ -1,20 +1,14 @@
 package com.doumee.api.business;
 
 import com.doumee.core.annotation.pr.PreventRepeat;
-import com.doumee.core.haikang.model.param.request.AcsDeviceListRequest;
-import com.doumee.core.haikang.model.param.request.EventSubRequest;
-import com.doumee.core.haikang.model.param.request.ParkListRequest;
-import com.doumee.core.haikang.model.param.request.PrivilegeGroupRequest;
+import com.doumee.core.haikang.model.param.request.*;
 import com.doumee.core.haikang.model.param.request.event.acs.EventAcsRequest;
 import com.doumee.core.haikang.model.param.request.event.parks.EventParkRequest;
 import com.doumee.core.haikang.model.param.request.event.parks.EventPlatCarstatusRequest;
 import com.doumee.core.haikang.model.param.request.event.parks.EventPlatWorkstatusRequest;
 import com.doumee.core.haikang.model.param.request.event.visit.EventVisitRequest;
 import com.doumee.core.model.ApiResponse;
-import com.doumee.service.business.impl.hksync.HkSyncDeviceServiceImpl;
-import com.doumee.service.business.impl.hksync.HkSyncParkServiceImpl;
-import com.doumee.service.business.impl.hksync.HkSyncPrivilegeServiceImpl;
-import com.doumee.service.business.impl.hksync.HkSyncPushServiceImpl;
+import com.doumee.service.business.impl.hksync.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -42,7 +36,24 @@
     private HkSyncPrivilegeServiceImpl hkSyncPrivilegeService;
     @Autowired
     private HkSyncPushServiceImpl hkSyncPushService;
-
+    @Autowired
+    private HkSyncPlatformsServiceImpl hkSyncPlatformsService;
+    @PreventRepeat
+    @ApiOperation("銆愭捣搴枫�戝叏閲忓悓姝ユ湀鍙颁俊鎭帴鍙�")
+    @PostMapping("/syncPlatforms")
+    @RequiresPermissions("business:hksync:platforms")
+    public ApiResponse syncPlatforms(@RequestBody PlatformsListRequest param) {
+        String result = hkSyncPlatformsService.syncPlatforms(param);
+        return ApiResponse.success(result);
+    }
+    @PreventRepeat
+    @ApiOperation("銆愭捣搴枫�戝叏閲忓悓姝ユ湀鍙扮姸鎬佷俊鎭帴鍙�")
+    @PostMapping("/syncPlatformStatus")
+    @RequiresPermissions("business:hksync:platforms")
+    public ApiResponse syncPlatformStatus(@RequestBody PlatformStatusRequest param) {
+        String result = hkSyncPlatformsService.getPlatformStatus(param);
+        return ApiResponse.success(result);
+    }
     @PreventRepeat
     @ApiOperation("銆愭捣搴枫�戝叏閲忓悓姝ラ棬绂佽澶囨帴鍙�")
     @PostMapping("/syncDevices")
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java
index fa30516..256358f 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java
@@ -12,6 +12,7 @@
 import com.doumee.service.business.impl.hksync.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -27,6 +28,8 @@
 public class HkSyncCloudController extends BaseController {
 
     @Autowired
+    private HkSyncPlatformsServiceImpl hkSyncPlatformsService;
+    @Autowired
     private HkSyncDeviceServiceImpl hkSyncDeviceService;
     @Autowired
     private HkSyncParkServiceImpl hkSyncParkService;
@@ -36,7 +39,22 @@
     private HkSyncPushServiceImpl hkSyncPushService;
     @Autowired
     private HkSyncLoginAuthServiceImpl hkSyncLoginAuthService;
-
+    @PreventRepeat
+    @ApiOperation("銆愭捣搴枫�戝叏閲忓悓姝ユ湀鍙颁俊鎭帴鍙�")
+    @PostMapping("/syncPlatforms")
+    @CloudRequiredPermission("business:hksync:platforms")
+    public ApiResponse syncPlatforms(@RequestBody PlatformsListRequest param) {
+        String result = hkSyncPlatformsService.syncPlatforms(param);
+        return ApiResponse.success(result);
+    }
+    @PreventRepeat
+    @ApiOperation("銆愭捣搴枫�戝叏閲忓悓姝ユ湀鍙扮姸鎬佷俊鎭帴鍙�")
+    @PostMapping("/syncPlatformStatus")
+    @CloudRequiredPermission("business:hksync:platforms")
+    public ApiResponse syncPlatformStatus(@RequestBody PlatformStatusRequest param) {
+        String result = hkSyncPlatformsService.getPlatformStatus(param);
+        return ApiResponse.success(result);
+    }
     @PreventRepeat
     @ApiOperation("銆愭捣搴枫�戝叏閲忓悓姝ラ棬绂佽澶囨帴鍙�")
     @PostMapping("/syncDevices")
diff --git a/server/visits/dmvisit_admin/src/main/resources/bootstrap.yml b/server/visits/dmvisit_admin/src/main/resources/bootstrap.yml
index 86e11a3..9dc10e9 100644
--- a/server/visits/dmvisit_admin/src/main/resources/bootstrap.yml
+++ b/server/visits/dmvisit_admin/src/main/resources/bootstrap.yml
@@ -1,6 +1,6 @@
 spring:
   profiles:
-    active: test
+    active: dev
   application:
     name: visitsAdmin
     # 瀹夊叏閰嶇疆
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
index b1ea5b6..ef6947a 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
@@ -628,8 +628,8 @@
 	 * @param body
 	 * @return
 	 */
-	public static String platformStatus(String body) {
-		return startDoPostStringArtemis(HKConstants.InterfacePath.platformStatus,body);
+	public static String platformStatus(String param) {
+		return startDoPostStringArtemis(HKConstants.InterfacePath.platformStatus+"?platformIds="+param,null);
 	}
 	/**
 	 * 鑾峰彇鏈堝彴缁勪欢閰嶇疆鐨凩ED璁惧娓呭崟
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PlatformListInfoResponse.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PlatformListInfoResponse.java
index e4f2603..8af46c9 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PlatformListInfoResponse.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PlatformListInfoResponse.java
@@ -2,23 +2,22 @@
 
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 @Data
 public class PlatformListInfoResponse {
 
- private String  deviceIndexCode	;//String	false	璁惧鍞竴鏍囪瘑
-
-  private String  platformtId;//	String	false	鏈堝彴ID
+  private String  platformId;//	String	false	鏈堝彴ID
  private List<PlatformCameraInfoResponse> cameras;//	Array	false	鍏宠仈鐩戞帶鐐�
  
-  private String  cyNames;//	String	false	鍏宠仈鎵跨鍏徃
  private String  platformName;//	String	false	鏈堝彴鍚嶇О
+ private String  companyNames;//	String	false	鍏宠仈浣滀笟鍖�
 
  private String  createTime;//	Number	false	鍒涘缓鏃堕棿
- private Integer  x	;//Number	false	X鍧愭爣
- private Integer  y	;//Number	false	Y鍧愭爣
- private Integer  width;//	Number	false	瀹藉害
- private Integer  height;//	Number	false	闀垮害
- private Integer  angle;//	Number	false	瑙掑害
+ private BigDecimal  x	;//Number	false	X鍧愭爣
+ private BigDecimal  y	;//Number	false	Y鍧愭爣
+ private BigDecimal  width;//	Number	false	瀹藉害
+ private BigDecimal  height;//	Number	false	闀垮害
+ private BigDecimal angle;//	Number	false	瑙掑害
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
index 6f9f778..a4f6d22 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -1118,7 +1118,7 @@
     public  static  BaseResponse<BaseListPageResponse<PlatformStatusInfoResponse>>   platformStatus(PlatformStatusRequest param) {
         log.info("銆愭捣搴疯幏鍙栧叏閮ㄦ湀鍙颁俊鎭��================寮�濮�====" + JSONObject.toJSONString(param));
         try {
-            String res = HKTools.platformStatus(JSONObject.toJSONString(param));
+            String res = HKTools.platformStatus(param.getPlatformIds());
             TypeReference typeReference =
                     new TypeReference<BaseResponse<BaseListPageResponse<PlatformStatusInfoResponse>>>() {
                     };
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Platform.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Platform.java
index a871f6e..5dc5399 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Platform.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Platform.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.business.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.doumee.core.annotation.excel.ExcelColumn;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -80,9 +81,10 @@
     @ExcelColumn(name="鍚屾椂浣滀笟鏁伴噺")
     private Integer workingNum;
 
-    @ApiModelProperty(value = "绛夊緟鏁欏ソ鏃堕棿(绉掞級", example = "1")
-    @ExcelColumn(name="绛夊緟鏁欏ソ鏃堕棿(绉掞級")
-    private Integer wariCallTime;
+
+    @ApiModelProperty(value = "浣滀笟瓒呮椂鎶ヨ鏃堕棿(绉掞級", example = "1")
+    @ExcelColumn(name="浣滀笟瓒呮椂鎶ヨ鏃堕棿(绉掞級")
+    private Integer waitCallTime;
 
     @ApiModelProperty(value = "鍋滅暀瓒呮椂鎶ヨ鏃堕棿(绉掞級", example = "1")
     @ExcelColumn(name="鍋滅暀瓒呮椂鎶ヨ鏃堕棿(绉掞級")
@@ -104,6 +106,9 @@
     @ApiModelProperty(value = "娴峰悍鏍囪瘑")
     @ExcelColumn(name="娴峰悍鏍囪瘑")
     private String hkId;
+    @ApiModelProperty(value = "娴峰悍鏍囪瘑鍚屾鏃堕棿")
+    @ExcelColumn(name="娴峰悍鏍囪瘑鍚屾鏃堕棿")
+    private Date hkDate;
 
     @ApiModelProperty(value = "鍏宠仈鎵跨鍏徃")
     @ExcelColumn(name="鍏宠仈鎵跨鍏徃")
@@ -128,5 +133,15 @@
     @ApiModelProperty(value = "瑙掑害", example = "1")
     @ExcelColumn(name="瑙掑害")
     private BigDecimal angle;
+    @ApiModelProperty(value = "鏈堝彴浣滀笟鏁堢巼锛堜竾鏀�/灏忔椂锛�", example = "1")
+    @ExcelColumn(name="鏈堝彴浣滀笟鏁堢巼锛堜竾鏀�/灏忔椂锛�")
+    private BigDecimal workRate;
+
+    @ApiModelProperty(value = "骞挎挱鍚嶇О", example = "1")
+    @TableField(exist = false)
+    private String broadcastName;
+    @ApiModelProperty(value = "led鍚嶇О", example = "1")
+    @TableField(exist = false)
+    private String ledName;
 
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java
index 411c0b6..cbd7cb7 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java
@@ -62,6 +62,8 @@
     void syncUserData();
     void syncVistAppointData(Date date);
     void syncVehicleData();
+    String syncPlatforms(PlatformsListRequest param);
+    String getPlatformStatus(PlatformStatusRequest param);
     void syncVehicleUpdateData(Date date);
     void syncUserUpdateData(Date start, Date end);
 
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java
index cb3c94c..486115c 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java
@@ -106,7 +106,6 @@
                 .eq(pageWrap.getModel().getStartTime() != null, Platform::getStartTime, pageWrap.getModel().getStartTime())
                 .eq(pageWrap.getModel().getEndTime() != null, Platform::getEndTime, pageWrap.getModel().getEndTime())
                 .eq(pageWrap.getModel().getWorkingNum() != null, Platform::getWorkingNum, pageWrap.getModel().getWorkingNum())
-                .eq(pageWrap.getModel().getWariCallTime() != null, Platform::getWariCallTime, pageWrap.getModel().getWariCallTime())
                 .eq(pageWrap.getModel().getAlermTime() != null, Platform::getAlermTime, pageWrap.getModel().getAlermTime())
                 .ge(pageWrap.getModel().getLastEventTime() != null, Platform::getLastEventTime, Utils.Date.getStart(pageWrap.getModel().getLastEventTime()))
                 .le(pageWrap.getModel().getLastEventTime() != null, Platform::getLastEventTime, Utils.Date.getEnd(pageWrap.getModel().getLastEventTime()))
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 1c94748..eaf7f3a 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
@@ -106,8 +106,6 @@
                 .eq(pageWrap.getModel().getDriverName() != null, PlatformWmsJob::getDriverName, pageWrap.getModel().getDriverName())
                 .eq(pageWrap.getModel().getCarrierName() != null, PlatformWmsJob::getCarrierName, pageWrap.getModel().getCarrierName())
                 .eq(pageWrap.getModel().getCarryBillCode() != null, PlatformWmsJob::getCarryBillCode, pageWrap.getModel().getCarryBillCode())
-                .ge(pageWrap.getModel().getIoCreatedate() != null, PlatformWmsJob::getIoCreatedate, Utils.Date.getStart(pageWrap.getModel().getIoCreatedate()))
-                .le(pageWrap.getModel().getIoCreatedate() != null, PlatformWmsJob::getIoCreatedate, Utils.Date.getEnd(pageWrap.getModel().getIoCreatedate()))
                 .eq(pageWrap.getModel().getStatus() != null, PlatformWmsJob::getStatus, pageWrap.getModel().getStatus())
                 .ge(pageWrap.getModel().getCancelDate() != null, PlatformWmsJob::getCancelDate, Utils.Date.getStart(pageWrap.getModel().getCancelDate()))
                 .le(pageWrap.getModel().getCancelDate() != null, PlatformWmsJob::getCancelDate, Utils.Date.getEnd(pageWrap.getModel().getCancelDate()))
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
index 6ab5454..4209984 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
@@ -112,6 +112,12 @@
     }
     public  void syncVehicleData(){
     }
+    public  String syncPlatforms(PlatformsListRequest param){
+        return null;
+    }
+    public  String getPlatformStatus(PlatformStatusRequest param){
+        return null;
+    }
     @Override
     public  void syncVehicleUpdateData(Date date){
     }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPlatformsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPlatformsServiceImpl.java
new file mode 100644
index 0000000..fdefd55
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPlatformsServiceImpl.java
@@ -0,0 +1,231 @@
+package com.doumee.service.business.impl.hksync;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.haikang.model.HKConstants;
+import com.doumee.core.haikang.model.param.BaseListPageResponse;
+import com.doumee.core.haikang.model.param.BaseResponse;
+import com.doumee.core.haikang.model.param.request.*;
+import com.doumee.core.haikang.model.param.respose.*;
+import com.doumee.core.haikang.service.HKService;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DateUtil;
+import com.doumee.dao.business.DeviceMapper;
+import com.doumee.dao.business.PlatformMapper;
+import com.doumee.dao.business.model.Device;
+import com.doumee.dao.business.model.Platform;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 璁惧淇℃伅琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @date 2023/11/30 15:33
+ */
+@Service
+public class HkSyncPlatformsServiceImpl extends HkSyncBaseServiceImpl {
+
+    @Autowired
+    private PlatformMapper platformMapper;
+
+    /**
+     * 鍚屾娴峰悍鏈堝彴鏁版嵁
+     * @param param
+     * @return
+     */
+    @Override
+//    @Async
+    public String syncPlatforms(PlatformsListRequest param){
+        if(Constants.DEALING_HK_SYNCPLATFORM){
+            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鍚屾浠诲姟姝e湪鎵ц鍝︼紝璇风◢鍚庢煡鐪嬬粨鏋滐紒") ;
+        }
+        Constants.DEALING_HK_SYNCPLATFORM =true;
+        try {
+            List<Platform> deleteList = new ArrayList<>();
+            List<Platform> addList = new ArrayList<>();
+            List<Platform> editList = new ArrayList<>();
+            Date date = new Date();
+            //鏌ヨ鍏ㄩ儴闂ㄧ璁惧鏁版嵁
+            List<Platform> allList = platformMapper.selectList(null);
+            List<PlatformListInfoResponse> allHkList = getAllHkList(param);
+            /**
+             * 鑾峰彇澧炲垹鏀规暟鎹泦鍚�
+             */
+            getDataChangeList(allList,allHkList,addList,editList,deleteList,date);
+            if(deleteList.size()>0){
+                //閫昏緫鍒犻櫎
+                for(Platform d : deleteList){
+                    platformMapper.updateById(d);
+                }
+            }
+            if(addList.size()>0){
+                platformMapper.insert(addList);
+            }
+            if(editList.size()>0){
+                for(Platform d : editList){
+                    platformMapper.updateById(d);
+                }
+            }
+            return "鍚屾鏁版嵁锛氭柊澧炪��"+addList.size()+"銆戞潯锛屾洿鏂般��"+editList.size()+"銆戞潯锛屽垹闄ゃ��"+deleteList.size()+"銆戞潯";
+        }catch (Exception e){
+            e.printStackTrace();
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "鍚屾澶辫触锛�");
+        }finally {
+            Constants.DEALING_HK_SYNCPLATFORM =false;
+        }
+    }
+    @Override
+//    @Async
+    public String getPlatformStatus(PlatformStatusRequest param){
+        if(Constants.DEALING_HK_SYNCPLATFORM_STATUS){
+            return null;
+        }
+        Constants.DEALING_HK_SYNCPLATFORM_STATUS =true;
+        try {
+            List<Device> editList = new ArrayList<>();
+            Date date = new Date();
+            //鏌ヨ鍏ㄩ儴闂ㄧ璁惧鏁版嵁
+            List<PlatformStatusInfoResponse> allHkList = getAllHKStatusList(param);
+
+            if(allHkList.size()>0){
+                //鏇存柊鐘舵�� (鏈堝彴鐘舵�� 0-鏃犺溅 1-鏈夎溅 2-瓒呮椂鍋滈潬 3-閿欒鍋滈潬)
+                for(PlatformStatusInfoResponse d : allHkList){
+                    platformMapper.update(null,new UpdateWrapper<Platform>().lambda()
+                            .set(Platform::getStatus,d.getStatus())
+                            .set(Platform::getEditDate,date)
+                            .eq(Platform::getHkId,d.getPlatformtId()));
+                }
+            }
+        }catch (Exception e){
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "鍚屾璁惧鐘舵�佸け璐ワ紒");
+        }finally {
+            Constants.DEALING_HK_SYNCPLATFORM_STATUS =false;
+        }
+        return "鍚屾鎴愬姛";
+    }
+
+    private List<PlatformListInfoResponse> getAllHkList(PlatformsListRequest param) {
+        BaseResponse<BaseListPageResponse<PlatformListInfoResponse>> response = HKService.platformsList(param);
+        if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) || response.getData() ==null){
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
+        }
+
+        return response.getData().getList();
+    }
+
+    public  List<PlatformStatusInfoResponse>  getAllHKStatusList(PlatformStatusRequest param){
+            //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹�
+            BaseResponse<BaseListPageResponse<PlatformStatusInfoResponse>> response = HKService.platformStatus(param);
+            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) || response.getData() ==null){
+                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
+            }
+          return  response.getData().getList();
+
+    }
+
+
+    private AcsDeviceInfoResponse getDeviceByDoorid(String indexCode, List<AcsDeviceInfoResponse> allHkList ) {
+        if(allHkList!=null && allHkList.size()>0){
+            for(AcsDeviceInfoResponse info : allHkList){
+                if(StringUtils.equals(indexCode,info.getIndexCode())){
+                 return info;
+                }
+            }
+        }
+
+        return new AcsDeviceInfoResponse();
+    }
+    private void getDataChangeList(List<Platform> allList,
+                                   List<PlatformListInfoResponse> allHkList,
+                                   List<Platform> addList,
+                                   List<Platform> editList,
+                                   List<Platform> deleteList, Date date) {
+        if(allHkList!=null && allHkList.size()>0){
+            //鑾峰彇娴峰悍鍏ㄩ儴闂ㄧ缁勬暟鎹�
+            for(PlatformListInfoResponse device : allHkList){
+                Platform model = getExistedDevice(device,allList);
+                if(model !=null){
+                    //濡傛灉宸插瓨鍦紝鍒欐洿鏂版暟鎹�
+                    model =  initDataByHkData(model,device,date);
+                    editList.add(model);
+                }else{
+                    //濡傛灉涓嶅瓨鍦紝鍒欐柊澧炴暟鎹�
+                    model = new Platform();
+                    model =  initDataByHkData(model,device,date);
+                    addList.add(model);
+                }
+            }
+        }
+        //鍒ゆ柇鑾峰彇鍒犻櫎鐨勯棬绂佽澶囷紝閫昏緫鍒犻櫎
+        getDeleteList(allList,allHkList,deleteList,date);
+    }
+
+    /**
+     * 鍒濆鍖栨捣搴峰叆搴撴暟鎹�
+     * @param model
+     * @param device
+     * @param date
+     * @return
+     */
+    private Platform initDataByHkData(Platform model, PlatformListInfoResponse device,Date date ) {
+        model.setIsdeleted(Constants.ZERO);
+        model.setHkDate(date);
+        model.setHkId(device.getPlatformId());
+        model.setCreateDate(DateUtil.getISO8601DateByStr(device.getCreateTime()));
+        model.setName(device.getPlatformName());
+        model.setCompanys(device.getCompanyNames());
+        model.setAngle(device.getAngle());
+        model.setXpos(device.getX());
+        model.setYpos(device.getY());
+        model.setWidth(device.getWidth());
+        model.setHeight(device.getHeight());
+        model.setRemark(JSONObject.toJSONString(device));
+        return  model;
+    }
+
+
+
+    private Platform getExistedDevice(PlatformListInfoResponse device, List<Platform> allList) {
+        if(allList.size()>0){
+            for(Platform r : allList){
+                if(StringUtils.equals(r.getHkId(), device.getPlatformId())){
+                    //琛ㄧず鏈垹闄�
+                    return  r;
+                }
+            }
+        }
+        return  null;
+    }
+
+    private void getDeleteList(List<Platform> allList, List<PlatformListInfoResponse> allHkList,List<Platform> deleteList ,Date date) {
+        if(allList!=null && allList.size()>0){
+            for(Platform device : allList){
+                if(isDeletedData(device,allHkList)){
+                    device.setIsdeleted(Constants.ONE);
+                    device.setEditDate(date);
+                    deleteList.add(device);
+                }
+            }
+        }
+    }
+    private boolean isDeletedData(Platform device, List<PlatformListInfoResponse> allHkList) {
+        if(allHkList.size()>0){
+            for(PlatformListInfoResponse r : allHkList){
+                if(StringUtils.equals(device.getHkId(), r.getPlatformId())){
+                    //琛ㄧず鏈垹闄�
+                    return  false;
+                }
+            }
+        }
+        return  true;
+
+    }
+
+}

--
Gitblit v1.9.3