From 84fd4e4fcb9e0862e1d6bd2a7c1f3110cfe72652 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期三, 13 十一月 2024 09:12:20 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmvisit

---
 server/system_service/src/main/java/com/doumee/core/utils/Constants.java                                       |    4 
 server/system_service/src/main/java/com/doumee/core/utils/SmsConstants.java                                    |    7 
 server/visits/dmvisit_admin/src/main/resources/bootstrap.yml                                                   |    2 
 server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/UserRel.java                        |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java      |    1 
 server/visits/admin_timer/src/main/java/com/doumee/api/HkSmsEmailTimerController.java                          |   30 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/SmsEmailService.java                   |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java        |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java           |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java       |    5 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformWorkDataVO.java |   10 
 server/system_service/src/main/java/com/doumee/dao/business/model/SmsEmail.java                                |    6 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java     |    1 
 admin/src/components/common/CommonHeader.vue                                                                   |    6 
 server/system_service/src/main/java/com/doumee/dao/business/model/SmsConfig.java                               |    0 
 admin/.env.development                                                                                         |    4 
 server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java         |   62 ++++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWmsDetail.java               |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java         |    2 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/ChangNeiDiaoduController.java                 |   30 --
 server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java                                        |    3 
 server/system_service/src/main/java/com/doumee/dao/business/dao/SmsConfigMapper.java                           |    2 
 server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java                                 |    5 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java          |   36 ++
 server/meeting/meeting_service/src/main/java/com/doumee/dao/business/UserRelMapper.java                        |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarUseBook.java                      |   69 +++--
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java       |  143 +++++++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsConfigServiceImpl.java         |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java            |    1 
 server/system_timer/src/main/java/com/doumee/api/timer/QuartzCloudController.java                              |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/BoardService.java                |    4 
 admin/src/views/operation/serviceCar/apprRecord.vue                                                            |  229 ++++++++++++++----
 32 files changed, 528 insertions(+), 149 deletions(-)

diff --git a/admin/.env.development b/admin/.env.development
index 6a875ee..8a58ac8 100644
--- a/admin/.env.development
+++ b/admin/.env.development
@@ -1,8 +1,8 @@
 # 寮�鍙戠幆澧冮厤缃�
 NODE_ENV = 'development'
 
-VUE_APP_API_URL  = 'http://localhost:10010'
+#VUE_APP_API_URL  = 'http://localhost:10010'
 # VUE_APP_API_URL  = 'http://192.168.0.103:10010'
 # VUE_APP_API_URL  = 'http://192.168.0.173/gateway_interface'
-# VUE_APP_API_URL  = 'http://10.50.250.253:8088/gateway_interface'
+ VUE_APP_API_URL  = 'http://10.50.250.253:8088/gateway_interface'
 
diff --git a/admin/src/components/common/CommonHeader.vue b/admin/src/components/common/CommonHeader.vue
index ca89668..da0ed18 100644
--- a/admin/src/components/common/CommonHeader.vue
+++ b/admin/src/components/common/CommonHeader.vue
@@ -32,8 +32,8 @@
     </div>
     <!-- 淇敼瀵嗙爜 -->
       <GlobalAlertWindow title="淇敼瀵嗙爜" :visible.sync="visible.changePwd"
-        :showClose="!userInfo.needChangePwd || userInfo.needChangePwd == '0'"
-        :showCancel="!userInfo.needChangePwd || userInfo.needChangePwd == '0'" @confirm="confirmChangePwd"
+        :showClose="userInfo && (!userInfo.needChangePwd || userInfo.needChangePwd == '0')"
+        :showCancel="userInfo && (!userInfo.needChangePwd || userInfo.needChangePwd == '0')" @confirm="confirmChangePwd"
         @close="visible.changePwd = false">
         <el-form :model="changePwdData.form" ref="changePwdDataForm" :rules="changePwdData.rules">
           <el-form-item label="鍘熷瀵嗙爜" prop="oldPwd" required>
@@ -114,7 +114,7 @@
   },
   mounted() {
     // needChangePwd 0 : 榛樿瀵嗙爜闇�瑕佷慨鏀癸紝1 涓嶉渶瑕�
-    if (!this.userInfo.needChangePwd || this.userInfo.needChangePwd == '0') {
+    if (userInfo &&(!this.userInfo.needChangePwd || this.userInfo.needChangePwd == '0')) {
       this.visible.changePwd = true
     }
   },
diff --git a/admin/src/views/operation/serviceCar/apprRecord.vue b/admin/src/views/operation/serviceCar/apprRecord.vue
index 921fd0e..b5b99b1 100644
--- a/admin/src/views/operation/serviceCar/apprRecord.vue
+++ b/admin/src/views/operation/serviceCar/apprRecord.vue
@@ -1,20 +1,43 @@
 <template>
   <TableLayout :permissions="['business:empower:query']">
     <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+    <el-form
+      ref="searchForm"
+      slot="search-form"
+      :model="searchForm"
+      label-width="100px"
+      inline
+    >
       <el-form-item label="鐢宠浜�" prop="memberName">
-        <el-input v-model="searchForm.memberName" placeholder="璇疯緭鍏ュ鍚�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
+        <el-input
+          v-model="searchForm.memberName"
+          placeholder="璇疯緭鍏ュ鍚�/鎵嬫満鍙�"
+          @keypress.enter.native="search"
+        ></el-input>
       </el-form-item>
       <el-form-item label="鐢宠浜虹粍缁�" prop="companyName">
-        <el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏ョ敵璇蜂汉缁勭粐" clearable
-          @keypress.enter.native="search"></el-input>
+        <el-input
+          v-model="searchForm.companyName"
+          placeholder="璇疯緭鍏ョ敵璇蜂汉缁勭粐"
+          clearable
+          @keypress.enter.native="search"
+        ></el-input>
       </el-form-item>
       <el-form-item label="杞︾墝鍙�" prop="carCode">
-        <el-input v-model="searchForm.carCode" placeholder="璇疯緭鍏ヨ溅鐗屽彿" clearable
-          @keypress.enter.native="search"></el-input>
+        <el-input
+          v-model="searchForm.carCode"
+          placeholder="璇疯緭鍏ヨ溅鐗屽彿"
+          clearable
+          @keypress.enter.native="search"
+        ></el-input>
       </el-form-item>
       <el-form-item label="鐘舵��" prop="status">
-        <el-select v-model="searchForm.status" @change="search" clearable placeholder="鐘舵��">
+        <el-select
+          v-model="searchForm.status"
+          @change="search"
+          clearable
+          placeholder="鐘舵��"
+        >
           <el-option label="鐢宠涓�" value="0"></el-option>
           <el-option label="瀹℃牳涓�" value="1"></el-option>
           <el-option label="瀹℃壒閫氳繃" value="2"></el-option>
@@ -23,18 +46,36 @@
         </el-select>
       </el-form-item>
       <el-form-item label="鐩殑鍦扮被鍨�" prop="type">
-        <el-select v-model="searchForm.type" @change="search" clearable placeholder="鐩殑鍦扮被鍨�">
+        <el-select
+          v-model="searchForm.type"
+          @change="search"
+          clearable
+          placeholder="鐩殑鍦扮被鍨�"
+        >
           <el-option label="甯傚唴鐢ㄨ溅" value="0"></el-option>
           <el-option label="甯傚鐢ㄨ溅" value="1"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item label="鍑哄彂鏃堕棿" prop="startTime">
-        <el-date-picker @change="seleTime" v-model="time" @keypress.enter.native="search" type="datetimerange"
-          format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" :default-time="['00:00:00', '23:59:59']"
-          range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡">
+        <el-date-picker
+          @change="seleTime"
+          v-model="time"
+          @keypress.enter.native="search"
+          type="datetimerange"
+          format="yyyy-MM-dd HH:mm:ss"
+          value-format="yyyy-MM-dd HH:mm:ss"
+          :default-time="['00:00:00', '23:59:59']"
+          range-separator="鑷�"
+          start-placeholder="寮�濮嬫棩鏈�"
+          end-placeholder="缁撴潫鏃ユ湡"
+        >
         </el-date-picker>
       </el-form-item>
-      <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
+      <el-radio-group
+        v-model="searchForm.radio"
+        size="small"
+        @input="changeRadio"
+      >
         <el-radio-button label="0">褰撳ぉ</el-radio-button>
         <el-radio-button label="1">杩�7澶�</el-radio-button>
         <el-radio-button label="2">杩�30澶�</el-radio-button>
@@ -46,35 +87,74 @@
     </el-form>
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="[
-        'business:carusebook:create',
-        'business:carusebook:exportExcel',
-      ]">
+      <ul
+        class="toolbar"
+        v-permissions="[
+          'business:carusebook:create',
+          'business:carusebook:exportExcel',
+        ]"
+      >
         <li>
-          <el-button type="primary" @click="handleEdit" icon="el-icon-plus"
-            v-permissions="['business:carusebook:create']">鏂板缓</el-button>
+          <el-button
+            type="primary"
+            @click="handleEdit"
+            icon="el-icon-plus"
+            v-permissions="['business:carusebook:create']"
+            >鏂板缓</el-button
+          >
         </li>
         <li>
-          <el-button type="primary" @click="handleEx" v-permissions="['business:carusebook:exportExcel']">瀵煎嚭</el-button>
+          <el-button
+            type="primary"
+            @click="handleEx"
+            v-permissions="['business:carusebook:exportExcel']"
+            >瀵煎嚭</el-button
+          >
         </li>
       </ul>
-      <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange">
+      <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="carCode" label="杞︾墝鍙�" min-width="100px"></el-table-column>
-        <el-table-column prop="memberName" label="鎻愭姤浜�" min-width="80px"></el-table-column>
-        <el-table-column prop="memberNames" label="涔樿溅浜哄憳" min-width="170px"></el-table-column>
-        <el-table-column prop="companyName" label="鎵�灞炵粍缁�" min-width="150px"></el-table-column>
+        <el-table-column
+            prop="carCode"
+            label="杞︾墝鍙�"
+            min-width="100px"
+        ></el-table-column>
+        <el-table-column
+          prop="memberName"
+          label="鎻愭姤浜�"
+          min-width="80px"
+        ></el-table-column>
+        <el-table-column
+          prop="companyName"
+          label="鎵�灞炵粍缁�"
+          min-width="150px"
+        ></el-table-column>
         <el-table-column label="鐢ㄨ溅鏃堕棿" min-width="170px">
           <template slot-scope="{ row }">
-            <span v-if="row.startTime">璧�:{{ row.startTime.slice(0, 16) }}</span><br />
-            <span v-if="row.endTime">姝�:{{ row.endTime.slice(0, 16) }}</span>
+            <span v-if="row.startTime">璧�:{{ row.startTime.slice(0,16) }}</span
+            ><br />
+            <span v-if="row.endTime">姝�:{{ row.endTime.slice(0,16) }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="planUseDate" label="鍑哄彂鏃堕棿" min-width="150px">
-          <template slot-scope="{ row }">
-            <span v-if="row.planUseDate">{{ row.planUseDate.slice(0, 16) }}</span>
-          </template>
-        </el-table-column>
+        <el-table-column
+            prop="memberNames"
+            label="涔樿溅浜�"
+            min-width="180px"
+        ></el-table-column>
+        <el-table-column
+          prop="planUseDate"
+          label="鍑哄彂鏃堕棿"
+          min-width="150px"
+        >
+        <template slot-scope="{ row }">
+          <span v-if="row.planUseDate">{{ row.planUseDate.slice(0,16) }}</span>
+        </template>
+      </el-table-column>
         <el-table-column label="鐩殑鍦�" min-width="200px">
           <template slot-scope="{ row }">
             <span class="status-green" v-if="row.type === 0">銆愬競鍐呫��</span>
@@ -92,28 +172,66 @@
           </template>
         </el-table-column>
 
-        <el-table-column prop="createDate" label="鐢宠鏃堕棿" min-width="150px"></el-table-column>
-        <el-table-column prop="editDate" label="鎿嶄綔鏃堕棿" min-width="150px"></el-table-column>
-        <el-table-column label="鎿嶄綔" min-width="160" align="center" fixed="right">
+        <el-table-column
+          prop="createDate"
+          label="鐢宠鏃堕棿"
+          min-width="150px"
+        ></el-table-column>
+        <el-table-column
+          prop="editDate"
+          label="鎿嶄綔鏃堕棿"
+          min-width="150px"
+        ></el-table-column>
+        <el-table-column
+          label="鎿嶄綔"
+          min-width="160"
+          align="center"
+          fixed="right"
+        >
           <template slot-scope="{ row }">
-            <el-button type="text" icon="el-icon-edit"
-              @click="$refs.OperaDetailsWindow.open('鍏姟杞︾敵璇疯鎯�', row)">鏌ョ湅璇︽儏</el-button>
+            <el-button
+              type="text"
+              icon="el-icon-edit"
+              @click="$refs.OperaDetailsWindow.open('鍏姟杞︾敵璇疯鎯�', row)"
+              >鏌ョ湅璇︽儏</el-button
+            >
             <!-- <el-button v-if="(row.status === 1 || row.status === 2) && new Date().getTime() < new Date(row.startTime).getTime()" type="text" icon="el-icon-delete" @click="rowRevokeClick(row)" >鎾ら攢</el-button> -->
-            <el-button v-if="
-              (row.status === 0 || row.status === 1 || row.status === 2) &&
-              new Date().getTime() < new Date(row.startTime).getTime()
-            " type="text" icon="el-icon-delete" @click="rowRevokeClick(row)">鎾ら攢</el-button>
+            <el-button
+              v-if="
+                (row.status === 0 || row.status === 1 || row.status === 2) &&
+                new Date().getTime() < new Date(row.startTime).getTime()
+              "
+              type="text"
+              icon="el-icon-delete"
+              @click="rowRevokeClick(row)"
+              >鎾ら攢</el-button
+            >
           </template>
         </el-table-column>
       </el-table>
-      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      >
       </pagination>
     </template>
     <!--  -->
     <el-dialog title="鐢ㄨ溅鎾ら攢" :visible.sync="isShowBack" width="520px">
-      <el-form :model="backParam" :rules="rules" ref="backForm" label-width="100px" class="demo-ruleForm">
+      <el-form
+        :model="backParam"
+        :rules="rules"
+        ref="backForm"
+        label-width="100px"
+        class="demo-ruleForm"
+      >
         <el-form-item label="璇存槑" prop="info">
-          <el-input type="textarea" :rows="4" v-model="backParam.info" placeholder="璇疯緭鍏ユ挙閿�璇存槑"></el-input>
+          <el-input
+            type="textarea"
+            :rows="4"
+            v-model="backParam.info"
+            placeholder="璇疯緭鍏ユ挙閿�璇存槑"
+          ></el-input>
         </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
@@ -121,7 +239,10 @@
         <el-button type="primary" @click="backSubmit">纭畾</el-button>
       </span>
     </el-dialog>
-    <OperaCarUseBookWindow ref="OperaDetailsWindow" @success="handlePageChange" />
+    <OperaCarUseBookWindow
+      ref="OperaDetailsWindow"
+      @success="handlePageChange"
+    />
     <OperaCarUseBookParamWindow ref="OperaParamWindow" @success="search" />
   </TableLayout>
 </template>
@@ -139,7 +260,7 @@
   name: 'Empower',
   extends: BaseTable,
   components: { TableLayout, Pagination, OperaCarUseBookWindow, OperaCarUseBookParamWindow },
-  data() {
+  data () {
     return {
       // 鎼滅储
       searchForm: {
@@ -162,7 +283,7 @@
       }
     }
   },
-  created() {
+  created () {
     this.config({
       module: '鐢ㄨ溅鐢宠绠$悊',
       api: '/business/carUseBook',
@@ -174,7 +295,7 @@
     this.loadParams()
   },
   methods: {
-    rowRevokeClick(row) {
+    rowRevokeClick (row) {
       this.isShowBack = true
       this.backParam = {}
       this.$set(this.backParam, 'id', row.id)
@@ -182,14 +303,14 @@
         this.$refs.backForm.clearValidate()
       })
     },
-    backSubmit() {
+    backSubmit () {
       revokeById({ ...this.backParam }).then(res => {
         this.$tip.success('鎾ら攢鎴愬姛')
         this.isShowBack = false
         this.search()
       })
     },
-    handleEx() {
+    handleEx () {
       this.$dialog.exportConfirm('纭瀵煎嚭鍚楋紵')
         .then(() => {
           this.exLoading = true
@@ -206,7 +327,7 @@
             })
         })
     },
-    changeRadio(e) {
+    changeRadio (e) {
       this.searchForm.radio = e
       if (e === '0') {
         this.searchForm.queryStartTime = timeForMat(0)[0]
@@ -223,10 +344,10 @@
       }
       this.search()
     },
-    handleEdit() {
+    handleEdit () {
       this.$refs.OperaParamWindow.open()
     },
-    loadParams() {
+    loadParams () {
       allList({
       })
         .then(res => {
@@ -247,13 +368,13 @@
         .finally(() => {
         })
     },
-    seleTime(e) {
+    seleTime (e) {
       this.searchForm.queryStartTime = e[0]
       this.searchForm.queryEndTime = e[1]
       this.searchForm.radio = null
       this.search()
     },
-    reset() {
+    reset () {
       this.$refs.searchForm.resetFields()
       this.searchForm.radio = '0'
       this.changeRadio('0')
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/UserRelMapper.java b/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/UserRelMapper.java
index df03abc..24ac919 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/UserRelMapper.java
+++ b/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/UserRelMapper.java
@@ -2,11 +2,12 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.doumee.dao.business.model.UserRel;
+import com.github.yulichang.base.MPJBaseMapper;
 
 /**
  * @author 姹熻箘韫�
  * @date 2023/05/04 18:18
  */
-public interface UserRelMapper extends BaseMapper<UserRel> {
+public interface UserRelMapper extends MPJBaseMapper<UserRel> {
 
 }
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/UserRel.java b/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/UserRel.java
index f4da2de..45e30e7 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/UserRel.java
+++ b/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/UserRel.java
@@ -67,6 +67,9 @@
     @ApiModelProperty(value = "鍙備細浜哄憳鍚嶇О")
     @TableField(exist = false)
     private String realName;
+    @ApiModelProperty(value = "鍙備細浜哄憳鎵嬫満鍙�")
+    @TableField(exist = false)
+    private String userPhone;
 
 
 
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java b/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java
index 3f39d61..f9994fd 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java
+++ b/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java
@@ -10,16 +10,15 @@
 import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
-import com.doumee.core.utils.Constants;
-import com.doumee.core.utils.DESUtil;
-import com.doumee.core.utils.DateUtil;
-import com.doumee.core.utils.Utils;
+import com.doumee.core.utils.*;
 import com.doumee.core.wx.MeetConstants;
 import com.doumee.core.wx.SendWxMessage;
 import com.doumee.dao.admin.request.BusinessOverDTO;
 import com.doumee.dao.admin.request.QrOpenDoorDto;
 import com.doumee.dao.admin.response.DevWgResponseParam;
 import com.doumee.dao.business.*;
+import com.doumee.dao.business.dao.SmsConfigMapper;
+import com.doumee.dao.business.dao.SmsEmailMapper;
 import com.doumee.dao.business.join.*;
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.business.vo.RoomStatisticsVo;
@@ -56,6 +55,7 @@
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.TemporalAdjusters;
 import java.util.*;
+import java.util.Date;
 import java.util.stream.Collectors;
 
 /**
@@ -71,6 +71,8 @@
     private String desPwd;
     @Autowired
     private BookingsMapper bookingsMapper;
+    @Autowired
+    private SmsConfigMapper smsConfigMapper;
     @Autowired
     private SystemUserMapper systemUserMapper;
     @Autowired
@@ -109,6 +111,8 @@
 
     @Autowired
     private NoticesJoinMapper noticesMapper;
+    @Autowired
+    private SmsEmailMapper smsEmailMapper;
 
     @Autowired
     private UserRelMapper userRelMapper;
@@ -126,6 +130,11 @@
     @Transactional(rollbackFor = {BusinessException.class, Exception.class})
     public Integer create(Bookings bookings) {
         LoginUserInfo user = bookings.getLoginUserInfo();
+        Rooms rooms = roomsMapper.selectById(bookings.getRoomId());
+        if(rooms==null ){
+            throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝璇ヤ細璁鏆傛椂鏃犳硶棰勭害");
+        }
+        bookings.setRoomName(rooms.getName());
         isCreateParamValid(bookings, user);
         bookings.setCreateDate(new Date());
         bookings.setCreator(user.getId());
@@ -140,7 +149,9 @@
         updateProjectRel(bookings, user);
         handleFile(bookings, user);
         //鍙戦�佷細璁绾︽垚鍔熼�氱煡
-        this.sendNotice(bookings, MeetConstants.TWO);
+        if(Constants.equalsInteger(bookings.getJoinNotice(),Constants.ZERO)){
+            this.sendNotice(bookings, MeetConstants.TWO);
+        }
         //鍙戦�佸井淇¤闃呴�氱煡
 //        sendWxMessage.bookingsReservation(systemUserMapper.selectById(bookings.getCreator()), bookings, roomsMapper.selectById(bookings.getRoomId()));
 
@@ -1294,22 +1305,52 @@
         //1銆佸弬涓庝細璁細鍙備笌浼氳鍗冲皢寮�濮�  缁欐瘡涓弬浼氫汉鍛樺彂閫佷細璁�氱煡骞朵笖缁欎細璁绾︿汉鍙戦�侀瀹氱殑浼氳鍗冲皢寮�濮� 濡傛灉棰勮浜轰篃鍙備笌浼氳锛屽垯浼氭湁2鏉′細璁�氱煡
         //2銆佷細璁瀹氭垚鍔燂紝缁欐墍鏈夊弬浼氫汉鍛樹笌棰勭害浜洪兘鍙戦��
         //3銆佷細璁彇娑� 浼氳鍙栨秷锛岀粰鎵�鏈夊弬浼氫汉鍛橀兘鍙戦��
-        List<UserRel> userRelList = userRelMapper.selectList(new QueryWrapper<UserRel>()
-                .eq("OBJ_TYPE", MeetConstants.ONE)
-                .eq("OBJ_ID", bookings.getId())
-                .eq("ISDELETED", MeetConstants.ZERO)
+        List<UserRel> userRelList = userRelMapper.selectJoinList(UserRel.class,new MPJLambdaWrapper<UserRel>()
+                .selectAll(UserRel.class)
+                .selectAs(SystemUser::getRealname,UserRel::getRealName)
+                .selectAs(SystemUser::getMobile,UserRel::getUserPhone)
+                .leftJoin(SystemUser.class,SystemUser::getId,UserRel::getUserId)
+                .eq(UserRel::getObjType, MeetConstants.ONE)
+                .eq(UserRel::getObjId, bookings.getId())
+                .eq(UserRel::getIsdeleted, MeetConstants.ZERO)
         );
+        List<SmsEmail> smsEmailList = new ArrayList<>();
         List<Notices> noticeList = new ArrayList<>();
+        SmsConfig smsConfig = null;
         Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.MEETING_START;
         if (sendType.equals(MeetConstants.THREE)){
             noticeObjectType = Constants.NoticeObjectType.MEETING_CACEL;
         }else   if (sendType.equals(MeetConstants.TWO)){
             noticeObjectType = Constants.NoticeObjectType.MEETING_BOOK_SUCCESS;
+            smsConfig   = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode,
+                    SmsConstants.meetingContent.meetingBookJoinUser)
+                    .eq(SmsConfig::getIsdeleted,Constants.ZERO)
+                    .last(" limit 1 "));
         }
         if(userRelList!=null && userRelList.size()>0){
             for (UserRel i : userRelList) {
                 Notices notices = new Notices(noticeObjectType,i.getId(),noticeObjectType.getInfo(), i.getUserId(), Constants.ZERO);
                 noticeList.add(notices);
+                if (smsConfig!=null && Constants.equalsInteger(smsConfig.getStatus(),Constants.ZERO)){
+                    SmsEmail smsEmail = new SmsEmail();
+                    //{鍙備細浜哄憳濮撳悕}锛屾偍濂斤紒鎮ㄦ湁涓�涓柊鐨勪細璁紝浼氳涓婚锛歿浼氳涓婚}锛屼細璁湴鐐癸細{浼氳瀹ゅ悕绉皚锛屼細璁椂闂达細{浼氳鏃堕棿娈祡锛岃鎸夋椂鍙傚姞
+                    String timeInfo =DateUtil.getFomartDate( bookings.getStartTime(),"MM/dd HH:mm")+"-"
+                            +DateUtil.getFomartDate( bookings.getEndTime(),"HH:mm");
+                    smsEmail.setPhone(i.getUserPhone());
+                    smsEmail.setRemark("绛夊緟鍙戦��");
+                    smsEmail.setStatus(Constants.TWO);//
+                    smsEmail.setIsdeleted(Constants.ZERO);
+                    smsEmail.setType(Constants.ZERO);
+                    smsEmail.setObjId(bookings.getId());
+                    smsEmail.setCreateDate(new Date());
+                    smsEmail.setTitle("浼氳瀹ょ敵璇峰弬浼氶�氱煡");
+                    smsEmail.setContent(StringUtils.defaultString(smsConfig.getContent(),"")
+                            .replace("{鍙備細浜哄憳濮撳悕}",StringUtils.defaultString(i.getRealName(),""))
+                            .replace("{浼氳涓婚}",StringUtils.defaultString(bookings.getName(),""))
+                            .replace("{浼氳瀹ゅ悕绉皚",StringUtils.defaultString(bookings.getRoomName(),""))
+                            .replace("{浼氳鏃堕棿娈祡",StringUtils.defaultString(timeInfo,"")));
+                    smsEmailList.add(smsEmail);
+                }
             }
         }
         //缁欏弬浼氫汉鍛樻彃鍏�
@@ -1318,6 +1359,9 @@
         if(noticeList.size()>0){
             noticesMapper.insert(noticeList);
         }
+        if(smsEmailList.size()>0){
+            smsEmailMapper.insert(smsEmailList);//寰呭彂鐭俊鏁版嵁
+        }
     }
 
 
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 3c04472..91918e1 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
@@ -304,10 +304,10 @@
         }
         int l = s.length();
         if(Constants.equalsInteger(l,7)){
-            return s.substring(0,3)+"***"+s.substring(l-1,l);
+            return s.substring(0,3)+"**"+s.substring(l-2,l);
         }
         if(l <= 8){
-            return s.substring(0,3)+"****"+s.substring(l-1,l);
+            return s.substring(0,3)+"***"+s.substring(l-2,l);
         }
         return s;
     }
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java b/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
index 5ca5eba..c03cf47 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -1283,6 +1283,9 @@
      * @return
      */
     public static Date getXMinuteAfterDate(Date date, int minute) {
+        if(date ==null){
+            date = new Date();
+        }
         Calendar now = Calendar.getInstance();
         now.setTime(date);
         now.set(Calendar.MINUTE, now.get(Calendar.MINUTE) + minute);
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/SmsConstants.java b/server/system_service/src/main/java/com/doumee/core/utils/SmsConstants.java
index ee933f0..12ea554 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/SmsConstants.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/SmsConstants.java
@@ -129,6 +129,13 @@
         //鐗╂祦杞﹂绾�-鏈堝彴鍋滈潬瓒呮椂锛堢粰鍙告満锛�
         String platformJobTimeOut = "platformJobTimeOut";
     }
+    /**
+     * 璁鐢宠
+     */
+    public interface meetingContent{
+        // meetingBookJoinUser	浼氳瀹ょ敵璇凤紙閫氱煡鍙備細浜猴級
+        String meetingBookJoinUser = "meetingBookJoinUser";
+    }
 
 
 
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/SmsConfigMapper.java b/server/system_service/src/main/java/com/doumee/dao/business/dao/SmsConfigMapper.java
similarity index 85%
rename from server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/SmsConfigMapper.java
rename to server/system_service/src/main/java/com/doumee/dao/business/dao/SmsConfigMapper.java
index 22910c9..4c5756d 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/SmsConfigMapper.java
+++ b/server/system_service/src/main/java/com/doumee/dao/business/dao/SmsConfigMapper.java
@@ -1,4 +1,4 @@
-package com.doumee.dao.business;
+package com.doumee.dao.business.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.doumee.dao.business.model.SmsConfig;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/SmsConfig.java b/server/system_service/src/main/java/com/doumee/dao/business/model/SmsConfig.java
similarity index 100%
rename from server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/SmsConfig.java
rename to server/system_service/src/main/java/com/doumee/dao/business/model/SmsConfig.java
diff --git a/server/system_service/src/main/java/com/doumee/dao/business/model/SmsEmail.java b/server/system_service/src/main/java/com/doumee/dao/business/model/SmsEmail.java
index f481b52..0d205a8 100644
--- a/server/system_service/src/main/java/com/doumee/dao/business/model/SmsEmail.java
+++ b/server/system_service/src/main/java/com/doumee/dao/business/model/SmsEmail.java
@@ -74,8 +74,8 @@
     @ExcelColumn(name="閭")
     private String email;
 
-    @ApiModelProperty(value = "鐘舵�� 0鏈娇鐢� 1宸蹭娇鐢�")
-    @ExcelColumn(name="鐘舵�� 0鏈娇鐢� 1宸蹭娇鐢�")
+    @ApiModelProperty(value = "鐘舵�� 0鏈娇鐢� 1宸蹭娇鐢� 2绛夊緟鍙戦��")
+    @ExcelColumn(name="鐘舵�� 0鏈娇鐢� 1宸蹭娇鐢� 2绛夊緟鍙戦��")
     private Integer status;
 
     @ApiModelProperty(value = "绫诲瀷 0鐭俊 1閭欢")
@@ -87,7 +87,7 @@
     private Integer objId;
 
     @ApiModelProperty(value = "鍏宠仈瀵硅薄绫诲瀷 0=楠岃瘉鐮侊紱1=璁垮涓氬姟锛�2=璁垮鎶ュ锛�3=闅愭偅闅忔墜鎷嶏紱4=鐢ㄨ溅鐢宠锛�5=浼氳瀹や俊鎭紱6=鐗╂祦杞﹂绾︼紱7=鐗╂祦杞︿綔涓�")
-    @ExcelColumn(name="鍏宠仈瀵硅薄绫诲瀷 0=楠岃瘉鐮侊紱1=璁垮涓氬姟锛�2=璁垮鎶ュ锛�3=闅愭偅闅忔墜鎷嶏紱4=鐢ㄨ溅鐢宠锛�5=浼氳瀹や俊鎭紱6=鐗╂祦杞﹂绾︼紱7=鐗╂祦杞︿綔涓�")
+    @ExcelColumn(name="鍏宠仈瀵硅薄绫诲瀷 0=楠岃瘉鐮侊紱1=璁垮涓氬姟锛�2=璁垮鎶ュ锛�3=闅愭偅闅忔墜鎷嶏紱4=鐢ㄨ溅鐢宠锛�5=浼氳瀹や俊鎭紱6=鐗╂祦杞﹂绾︼紱7=鐗╂祦杞︿綔涓�;8=浼氳瀹ょ敵璇�")
     private String objType;
 
     @ApiModelProperty(value = "闄勪欢闆嗗悎")
diff --git a/server/system_timer/src/main/java/com/doumee/api/timer/QuartzCloudController.java b/server/system_timer/src/main/java/com/doumee/api/timer/QuartzCloudController.java
index 2c355e0..0eb5cfe 100644
--- a/server/system_timer/src/main/java/com/doumee/api/timer/QuartzCloudController.java
+++ b/server/system_timer/src/main/java/com/doumee/api/timer/QuartzCloudController.java
@@ -31,6 +31,7 @@
     @PostMapping("/create")
     @CloudRequiredPermission("business:quartz:create")
     public ApiResponse  create(@RequestBody QuartzJob quartzJob ,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+          quartzJob.setState(Constants.ONE);
           quartzJobService.insert(quartzJob) ;
           return ApiResponse.success(null);
     }
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 33c91a4..cb818f9 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
@@ -18,7 +18,7 @@
     ApiResponse syncEmpowerDetailData();
     @ApiOperation("銆愯瀹㈢郴缁熴�戝畾鏃舵煡璇汉鍛樿澶囨巿鏉冧笅杞借繘搴�")
     @GetMapping("/timer/empower/syncEmpowerResultData")
-     ApiResponse syncEmpowerResultData() ;
+    ApiResponse syncEmpowerResultData();
     @ApiOperation("銆愯瀹㈢郴缁熴�戝畾鏃堕噸鏂颁笅鍙戝け璐ョ殑鎺堟潈鏁版嵁")
     @GetMapping("/timer/empower/syncEmpowerFailData")
      ApiResponse syncEmpowerFailData();
@@ -82,6 +82,9 @@
     @ApiOperation("銆愭暟瀛楀寲鏈堝彴銆戞湀鍙扮瓑寰呬綔涓氳秴鏃朵笟鍔�")
     @GetMapping("/timer/platformJob/platformJobWaitTimeOut")
     ApiResponse platformJobWaitTimeOut();
+    @ApiOperation("銆愮煭淇¢�氱煡銆戝畾鏃跺彂閫佺瓑寰呯煭淇′换鍔�")
+    @GetMapping("/timer/sms/sendWaitingSmsNotice")
+    ApiResponse sendWaitingSmsNotice();
 
 
 
diff --git a/server/visits/admin_timer/src/main/java/com/doumee/api/HkSmsEmailTimerController.java b/server/visits/admin_timer/src/main/java/com/doumee/api/HkSmsEmailTimerController.java
new file mode 100644
index 0000000..56271da
--- /dev/null
+++ b/server/visits/admin_timer/src/main/java/com/doumee/api/HkSmsEmailTimerController.java
@@ -0,0 +1,30 @@
+package com.doumee.api;
+
+import com.doumee.core.model.ApiResponse;
+import com.doumee.service.business.SmsEmailService;
+import com.doumee.service.business.impl.hksync.HkSyncDeviceServiceImpl;
+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/sms")
+public class HkSmsEmailTimerController extends BaseController {
+    @Autowired
+    private SmsEmailService smsEmailService;
+    @ApiOperation("寮�鍚畾鏃剁煭淇″彂閫佸畾鏃朵换鍔�")
+    @GetMapping("/sendWaitingSmsNotice")
+    public ApiResponse sendWaitingSmsNotice() {
+        smsEmailService.sendWaitingSmsNotice();
+        return ApiResponse.success("寮�鍚畾鏃剁煭淇″彂閫佸畾鏃朵换鍔℃垚鍔�");
+    }
+
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/ChangNeiDiaoduController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/ChangNeiDiaoduController.java
index 823f3fe..f125304 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/ChangNeiDiaoduController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/ChangNeiDiaoduController.java
@@ -103,22 +103,10 @@
     @ApiOperation("瀹炴椂浣滀笟鏁堢巼")
     @GetMapping("/workEfficiency")
     @ApiImplicitParams({
-            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "type", value = "鏌ヨ绫诲瀷锛�0=鍏ュ簱锛�1=鍑哄簱", required = true),
+            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "type", value = "鏌ヨ绫诲瀷锛�0=鍏ュ簱锛�1=鍑哄簱,榛樿 0", required = true),
     })
     public ApiResponse<List<WorkEfficiencyVO>> workEfficiency(@RequestParam Integer type) {
-        List<WorkEfficiencyVO> workEfficiencyVOList = new ArrayList<>();
-        Random random = new Random();
-        Integer totalWorkNum = 0;
-        for (int i = 8; i <= 20; i++) {
-            if(i%2==0){
-                WorkEfficiencyVO workEfficiencyVO = new WorkEfficiencyVO();
-                workEfficiencyVO.setWorkNum(200+random.nextInt(100));
-                totalWorkNum = totalWorkNum + workEfficiencyVO.getWorkNum();
-                workEfficiencyVO.setTotalWorkNum(totalWorkNum);
-                workEfficiencyVO.setWorkTime(StringUtils.leftPad(i+"",2,"0") +":00");
-                workEfficiencyVOList.add(workEfficiencyVO);
-            }
-        }
+        List<WorkEfficiencyVO> workEfficiencyVOList = boardService.workEfficiency(type);
         return ApiResponse.success(workEfficiencyVOList);
     }
 
@@ -129,19 +117,9 @@
     @ApiOperation("瀹炴椂鏈堝彴浣滀笟淇℃伅")
     @GetMapping("/platformWorkData")
     public ApiResponse<List<PlatformWorkDataVO>> platformWorkData() {
-        List<PlatformWorkDataVO> platformWorkDataVOList = new ArrayList<>();
-        Random random = new Random();
-        for (int i = 0; i < 3; i++) {
-            PlatformWorkDataVO platformDurationVO = new PlatformWorkDataVO();
-            platformDurationVO.setPlatformName(i+"_鏈堝彴鍚嶇О");
-            platformDurationVO.setCarNo("鐨朅8" + random.nextInt(9) + random.nextInt(9) + random.nextInt(9) + random.nextInt(9));
-            platformDurationVO.setWorkType(random.nextInt(1));
-            platformDurationVO.setWorkNum(100+random.nextInt(100));
-            platformDurationVO.setFinishTime(Long.valueOf(System.currentTimeMillis()/1000 + 200+random.nextInt(100)));
-            platformDurationVO.setStatus(random.nextInt(2));
-            platformWorkDataVOList.add(platformDurationVO);
-        }
+        List<PlatformWorkDataVO> platformWorkDataVOList  = boardService.platformWorkData();
         return ApiResponse.success(platformWorkDataVOList);
+
     }
 
 
diff --git a/server/visits/dmvisit_admin/src/main/resources/bootstrap.yml b/server/visits/dmvisit_admin/src/main/resources/bootstrap.yml
index 9dc10e9..2df12af 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: dev
+    active: pro
   application:
     name: visitsAdmin
     # 瀹夊叏閰嶇疆
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 4d0bb63..80beb58 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
@@ -25,117 +25,124 @@
 public class CarUseBook extends LoginUserModel {
     @TableId(type = IdType.AUTO)
     @ApiModelProperty(value = "涓婚敭", example = "1")
-    @ExcelColumn(name="涓婚敭")
+    //@ExcelColumn(name="涓婚敭")
     private Integer id;
 
     @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
-    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    //@ExcelColumn(name="鍒涘缓浜虹紪鐮�")
     private Integer creator;
 
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
-    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    //@ExcelColumn(name="鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鐢宠鏃堕棿",index =11,width = 10)
     private Date createDate;
 
     @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
-    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    //@ExcelColumn(name="鏇存柊浜虹紪鐮�")
     private Integer editor;
 
     @ApiModelProperty(value = "鏇存柊鏃堕棿")
-    @ExcelColumn(name="鏇存柊鏃堕棿")
+    //@ExcelColumn(name="鏇存柊鏃堕棿")
+    @ExcelColumn(name="鎿嶄綔鏃堕棿",index =12,width = 10)
       private Date editDate;
 
     @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
-    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    //@ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
     private Integer isdeleted;
 
     @ApiModelProperty(value = "澶囨敞")
-    @ExcelColumn(name="澶囨敞")
+    //@ExcelColumn(name="澶囨敞")
     private String remark;
 
     @ApiModelProperty(value = "杞︾墝鍙�")
-    @ExcelColumn(name="杞︾墝鍙�")
+    @ExcelColumn(name="杞︾墝鍙�",index =1,width = 8)
     private String carCode;
 
     @ApiModelProperty(value = "杞﹁締缂栫爜锛堝叧鑱攃ars)", example = "1")
-    @ExcelColumn(name="杞﹁締缂栫爜锛堝叧鑱攃ars)")
+    //@ExcelColumn(name="杞﹁締缂栫爜锛堝叧鑱攃ars)")
     private Integer carId;
 
     @ApiModelProperty(value = "寮�濮嬫椂闂�")
-    @ExcelColumn(name="寮�濮嬫椂闂�")
-//  
+    //@ExcelColumn(name="寮�濮嬫椂闂�")
+    @ExcelColumn(name="寮�濮嬫椂闂�",index =4,width = 10,dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date startTime;
 
     @ApiModelProperty(value = "缁撴潫鏃堕棿")
-    @ExcelColumn(name="缁撴潫鏃堕棿")
-//  
+    //@ExcelColumn(name="缁撴潫鏃堕棿")
+    @ExcelColumn(name="缁撴潫鏃堕棿",index =5,width = 10,dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date endTime;
 
     @ApiModelProperty(value = "棰勮鍑哄彂鏃堕棿")
-    @ExcelColumn(name="棰勮鍑哄彂鏃堕棿")
+    //@ExcelColumn(name="棰勮鍑哄彂鏃堕棿")
+    @ExcelColumn(name="鍑哄彂鏃堕棿",index =7,width = 10)
     private String planUseDate;
 
     @ApiModelProperty(value = "鐘舵�� 0鐢宠涓� 1瀹℃牳涓� 2瀹℃壒閫氳繃 3瀹℃壒涓嶉�氳繃  4宸插彇娑�", example = "1")
-    @ExcelColumn(name="鐘舵�� 0鐢宠涓� 1瀹℃牳涓� 2瀹℃壒閫氳繃 3瀹℃壒涓嶉�氳繃  4宸插彇娑�")
+    //@ExcelColumn(name="鐘舵�� 0鐢宠涓� 1瀹℃牳涓� 2瀹℃壒閫氳繃 3瀹℃壒涓嶉�氳繃  4宸插彇娑�")
+    @ExcelColumn(name="鐘舵��",index =10,width = 8,valueMapping = "0=鐢宠涓�;1=瀹℃牳涓�;2=瀹℃壒閫氳繃;3=瀹℃壒涓嶉�氳繃;4=宸叉挙閿�;")
     private Integer status;
 
     @ApiModelProperty(value = "瀹℃壒鏃堕棿(鏈�杩戜竴娆★級")
-    @ExcelColumn(name="瀹℃壒鏃堕棿(鏈�杩戜竴娆★級")
+    //@ExcelColumn(name="瀹℃壒鏃堕棿(鏈�杩戜竴娆★級")
     private Date checkDate;
 
     @ApiModelProperty(value = "瀹℃壒浜�(鏈�杩戜竴娆★級", example = "1")
-    @ExcelColumn(name="瀹℃壒浜�(鏈�杩戜竴娆★級")
+    //@ExcelColumn(name="瀹℃壒浜�(鏈�杩戜竴娆★級")
     private Integer checkUserId;
 
     @ApiModelProperty(value = "瀹℃壒澶囨敞(鏈�杩戜竴娆★級")
-    @ExcelColumn(name="瀹℃壒澶囨敞(鏈�杩戜竴娆★級")
+    //@ExcelColumn(name="瀹℃壒澶囨敞(鏈�杩戜竴娆★級")
     private String checkInfo;
 
     @ApiModelProperty(value = "鍙栨秷绫诲瀷 0鐢宠浜哄彇娑� 1娲捐溅鍛樻挙閿�")
-    @ExcelColumn(name="鍙栨秷绫诲瀷 0鐢宠浜哄彇娑� 1娲捐溅鍛樻挙閿�")
+    //@ExcelColumn(name="鍙栨秷绫诲瀷 0鐢宠浜哄彇娑� 1娲捐溅鍛樻挙閿�")
     private Integer cancelType;
 
     @ApiModelProperty(value = "鏄惁宸插彇娑� 0鏈彇娑� 1宸插彇娑�")
-    @ExcelColumn(name="鏄惁宸插彇娑� 0鏈彇娑� 1宸插彇娑�")
+    //@ExcelColumn(name="鏄惁宸插彇娑� 0鏈彇娑� 1宸插彇娑�")
     private Integer cancelStatus;
 
     @ApiModelProperty(value = "鍙栨秷鏃堕棿")
-    @ExcelColumn(name="鍙栨秷鏃堕棿")
+    //@ExcelColumn(name="鍙栨秷鏃堕棿")
     private Date cancelTime;
 
     @ApiModelProperty(value = "鍙栨秷浜�", example = "1")
-    @ExcelColumn(name="鍙栨秷浜�")
+    //@ExcelColumn(name="鍙栨秷浜�")
     private Integer cancelUser;
 
     @ApiModelProperty(value = "鍙栨秷澶囨敞")
-    @ExcelColumn(name="鍙栨秷澶囨敞")
+    //@ExcelColumn(name="鍙栨秷澶囨敞")
     private String cancelInfo;
 
     @ApiModelProperty(value = "鐩殑鍦扮被鍨� 0甯傚唴鐢ㄨ溅 1甯傚鐢ㄨ溅", example = "1")
-    @ExcelColumn(name="鐩殑鍦扮被鍨� 0甯傚唴鐢ㄨ溅 1甯傚鐢ㄨ溅")
+    //@ExcelColumn(name="鐩殑鍦扮被鍨� 0甯傚唴鐢ㄨ溅 1甯傚鐢ㄨ溅")
+    @ExcelColumn(name="鐩殑鍦扮被鍨�",index =8,width = 5,valueMapping = "0=甯傚唴鐢ㄨ溅;1=甯傚鐢ㄨ溅")
     private Integer type;
 
     @ApiModelProperty(value = "涔樿溅浜虹紪鐮侀泦鍚堬紝澶氫釜鑻辨枃閫楀彿闅斿紑", example = "1")
-    @ExcelColumn(name="涔樿溅浜虹紪鐮侀泦鍚堬紝澶氫釜鑻辨枃閫楀彿闅斿紑")
+    //@ExcelColumn(name="涔樿溅浜虹紪鐮侀泦鍚堬紝澶氫釜鑻辨枃閫楀彿闅斿紑")
     private String memberIds;
 
     @ApiModelProperty(value = "涔樿溅浜哄鍚嶉泦鍚堬紝澶氫釜鑻辨枃閫楀彿闅斿紑")
-    @ExcelColumn(name="涔樿溅浜哄鍚嶉泦鍚堬紝澶氫釜鑻辨枃閫楀彿闅斿紑")
+    //@ExcelColumn(name="涔樿溅浜哄鍚嶉泦鍚堬紝澶氫釜鑻辨枃閫楀彿闅斿紑")
+    @ExcelColumn(name="涔樿溅浜�",index =6,width = 10)
     private String memberNames;
 
     @ApiModelProperty(value = "鐢ㄨ溅浜嬬敱")
-    @ExcelColumn(name="鐢ㄨ溅浜嬬敱")
+    //@ExcelColumn(name="鐢ㄨ溅浜嬬敱")
     private String content;
 
     @ApiModelProperty(value = "鐩殑鍦�")
-    @ExcelColumn(name="鐩殑鍦�")
+    //@ExcelColumn(name="鐩殑鍦�")
+    @ExcelColumn(name="鐩殑鍦�",index =9,width = 10)
     private String addr;
 
     @ApiModelProperty(value = "鐢宠浜虹紪鐮�(鍏宠仈member)", example = "1")
-    @ExcelColumn(name="鐢宠浜虹紪鐮�(鍏宠仈member)")
+    //@ExcelColumn(name="鐢宠浜虹紪鐮�(鍏宠仈member)")
     private Integer memberId;
 
     @ApiModelProperty(value = "鍙告満缂栫爜锛堝叧鑱攎emberId锛�", example = "1")
-    @ExcelColumn(name="鍙告満缂栫爜锛堝叧鑱攎emberId锛�")
+    //@ExcelColumn(name="鍙告満缂栫爜锛堝叧鑱攎emberId锛�")
     private Integer driverId;
 
     @ApiModelProperty(value = "鍙告満濮撳悕", example = "1")
@@ -146,9 +153,11 @@
     private String driverPhone;
     @ApiModelProperty(value = "鐢宠浜哄鍚�", example = "1")
     @TableField(exist = false)
+    @ExcelColumn(name="鎻愭姤浜�",index =2,width = 8)
     private String memberName;
     @ApiModelProperty(value = "鐢宠浜烘墍灞炵粍缁囧悕绉�", example = "1")
     @TableField(exist = false)
+    @ExcelColumn(name="鎵�灞炵粍缁�",index =3,width = 20)
     private String companyName;
     @ApiModelProperty(value = "鐢宠浜烘墜鏈哄彿", example = "1")
     @TableField(exist = false)
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWmsDetail.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWmsDetail.java
index 872e112..0581eef 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWmsDetail.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWmsDetail.java
@@ -92,4 +92,7 @@
     @ApiModelProperty(value = "鏈堝垎缁勫悕绉�" ,hidden = true)
     @TableField(exist = false)
     private String groupName ;
+    @ApiModelProperty(value = "浣滀笟瀹屾垚鏃堕棿锛堟渶缁堟椂闂达級")
+    @TableField(exist = false)
+    private Date doneDate;
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformWorkDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformWorkDataVO.java
index 49416df..e03762f 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformWorkDataVO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/PlatformWorkDataVO.java
@@ -17,6 +17,10 @@
 
     @ApiModelProperty(value = "鏈堝彴鍚嶇О")
     private String platformName;
+    @ApiModelProperty(value = "鏈堝彴缂栫爜")
+    private Integer platformId;
+    @ApiModelProperty(value = "鏈堝彴鎺掑簭")
+    private Integer platformSort;
 
     @ApiModelProperty(value = "杞︾墝鍙�")
     private String carNo;
@@ -28,12 +32,14 @@
     private Integer workType;
 
     @ApiModelProperty(value = "浣滀笟鏃堕暱 鍗曚綅 鍒嗛挓")
-    private Integer workTime;
+    private Long workTime;
 
     @ApiModelProperty(value = "棰勮瀹屾垚鏃堕棿 鍗曚綅锛氭椂闂存埑")
     private Long finishTime;
+    @ApiModelProperty(value = "棰勮瀹屾垚鏃堕棿 鏍煎紡HH锛歮m")
+    private String finishTimeStr;
 
-    @ApiModelProperty(value = "鏈堝彴鐘舵�侊細0=浣滀笟涓紱1=绌洪棽涓紱2=浣滀笟瓒呮椂")
+    @ApiModelProperty(value = "鏈堝彴鐘舵�侊細0=浣滀笟涓紱1=绌洪棽涓紱2=浣滀笟瓒呮椂;3=鍙彿涓�")
     private Integer status;
 
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/SmsEmailService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/SmsEmailService.java
index ddb2af4..a7cc09d 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/SmsEmailService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/SmsEmailService.java
@@ -97,4 +97,5 @@
      */
     long count(SmsEmail smsEmail);
 
+    void sendWaitingSmsNotice();
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
index 78e572f..bbd683d 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
@@ -17,6 +17,7 @@
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.*;
 import com.doumee.dao.business.dao.CompanyMapper;
+import com.doumee.dao.business.dao.SmsConfigMapper;
 import com.doumee.dao.business.dao.SmsEmailMapper;
 import com.doumee.dao.business.dto.ApproveDTO;
 import com.doumee.dao.business.join.ApproveJoinMapper;
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 4730fa1..5ac6b06 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
@@ -8,6 +8,7 @@
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.*;
 import com.doumee.dao.business.*;
+import com.doumee.dao.business.dao.SmsConfigMapper;
 import com.doumee.dao.business.dao.SmsEmailMapper;
 import com.doumee.dao.business.join.ApproveJoinMapper;
 import com.doumee.dao.business.join.CarUseBookJoinMapper;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
index 4383839..31d94d1 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
@@ -16,6 +16,7 @@
 import com.doumee.core.utils.SmsConstants;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.*;
+import com.doumee.dao.business.dao.SmsConfigMapper;
 import com.doumee.dao.business.dao.SmsEmailMapper;
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.system.MultifileMapper;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java
index 9f757c2..c45522e 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java
@@ -11,6 +11,7 @@
 import com.doumee.core.utils.SmsConstants;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.*;
+import com.doumee.dao.business.dao.SmsConfigMapper;
 import com.doumee.dao.business.dao.SmsEmailMapper;
 import com.doumee.dao.business.join.ApproveJoinMapper;
 import com.doumee.dao.business.model.*;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
index 993262d..271cc27 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
@@ -18,6 +18,7 @@
 import com.doumee.core.tms.model.response.TmsLockStatusQueryResponse;
 import com.doumee.core.utils.*;
 import com.doumee.dao.business.*;
+import com.doumee.dao.business.dao.SmsConfigMapper;
 import com.doumee.dao.business.dao.SmsEmailMapper;
 import com.doumee.dao.business.join.PlatformJobJoinMapper;
 import com.doumee.dao.business.join.PlatformJoinMapper;
@@ -693,7 +694,7 @@
             }
         }
         platformJob.dealTime();
-        this.getWorkTime(platformJob);
+        this.getWorkTime(platformJob,platformLogMapper);
         this.getWmsJobData(platformJob);
         return platformJob;
     }
@@ -775,7 +776,7 @@
      * 鑾峰彇宸蹭綔涓氭椂闂�
      * @param platformJob
      */
-    public Long getWorkTime(PlatformJob platformJob){
+    public static Long getWorkTime(PlatformJob platformJob,PlatformLogMapper platformLogMapper){
         List<PlatformLog> platformLogList = platformLogMapper.selectList(new QueryWrapper<PlatformLog>()
                 .lambda().eq(PlatformLog::getIsdeleted,Constants.ZERO)
                 .eq(PlatformLog::getJobId,platformJob.getId())
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsConfigServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsConfigServiceImpl.java
index 3af599e..cd5f64f 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsConfigServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsConfigServiceImpl.java
@@ -3,7 +3,7 @@
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Utils;
-import com.doumee.dao.business.SmsConfigMapper;
+import com.doumee.dao.business.dao.SmsConfigMapper;
 import com.doumee.dao.business.model.SmsConfig;
 import com.doumee.service.business.SmsConfigService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
index 090d3b6..bc2311a 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
@@ -1,7 +1,6 @@
 package com.doumee.service.business.impl;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -9,13 +8,11 @@
 import com.doumee.biz.system.SystemDictDataBiz;
 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.BaseResponse;
-import com.doumee.core.haikang.service.HKService;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.*;
 import com.doumee.dao.business.*;
+import com.doumee.dao.business.dao.SmsConfigMapper;
 import com.doumee.dao.business.dao.SmsEmailMapper;
 import com.doumee.dao.business.model.*;
 import com.doumee.service.business.SmsEmailService;
@@ -27,7 +24,6 @@
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
-import java.net.URLEncoder;
 import java.util.*;
 import java.util.Date;
 
@@ -254,6 +250,32 @@
     public long count(SmsEmail smsEmail) {
         QueryWrapper<SmsEmail> wrapper = new QueryWrapper<>(smsEmail);
         return smsEmailMapper.selectCount(wrapper);
+    }
+    @Override
+    public void sendWaitingSmsNotice(){
+        LambdaQueryWrapper<SmsEmail> wrapper = new LambdaQueryWrapper<SmsEmail>()
+                .eq(SmsEmail::getIsdeleted,Constants.ZERO)
+                .eq(SmsEmail::getStatus,Constants.TWO);
+        List<SmsEmail> smsEmails = smsEmailMapper.selectList(wrapper);
+        if(smsEmails!=null && smsEmails.size()>0){
+            for(SmsEmail model : smsEmails){
+                if(model.getPhone() == null){
+                    model.setStatus(Constants.THREE);//鍙戦�佸け璐�
+                    model.setRemark("鎵嬫満鍙蜂负绌猴紝鍙栨秷浠诲姟鍙戦�侊紒");
+                }else{
+                    try {
+                        emayService.sendSmsByHk(model.getPhone(),model.getContent());
+                        model.setStatus(Constants.ONE);//鍙戦�佹垚鍔�
+                        model.setRemark("鐭俊浠诲姟鍙戦�佹垚鍔�");
+                    }catch (Exception e){
+                        model.setStatus(Constants.THREE);//鍙戦�佸け璐�
+                        model.setRemark("鐭俊浠诲姟鍙戦�佸け璐ワ紒"+e.getMessage());
+                    }
+                }
+                model.setEditDate(new Date());
+                smsEmailMapper.updateById(model);
+            }
+        }
     }
 
     /**
@@ -546,8 +568,6 @@
             smsEmail.setObjId(objId);
             smsEmailMapper.insert(smsEmail);
             emayService.sendSmsByHk(phone,content);
-
-
         }
     }
 
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
index 188a1d8..0a86005 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -28,6 +28,7 @@
 import com.doumee.dao.admin.response.PCWorkPlatformDataVO;
 import com.doumee.dao.business.*;
 import com.doumee.dao.business.dao.CompanyMapper;
+import com.doumee.dao.business.dao.SmsConfigMapper;
 import com.doumee.dao.business.dao.SmsEmailMapper;
 import com.doumee.dao.business.dto.ResetPasswordDTO;
 import com.doumee.dao.business.join.DeviceJoinMapper;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
index c55fe52..2e64ef8 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
@@ -14,11 +14,15 @@
 import com.doumee.core.haikang.model.param.respose.PageRegionInfoResponse;
 import com.doumee.core.haikang.model.param.respose.PageSensorStatusResponse;
 import com.doumee.core.haikang.service.HKService;
+import com.doumee.core.model.ApiResponse;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.DateUtil;
+import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.*;
 import com.doumee.dao.business.model.*;
+import com.doumee.dao.web.reqeust.SavePlatformWarnEventDTO;
 import com.doumee.dao.web.response.platformReport.*;
+import com.doumee.service.business.impl.PlatformJobServiceImpl;
 import com.doumee.service.business.third.BoardService;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import lombok.extern.slf4j.Slf4j;
@@ -26,6 +30,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -253,7 +258,7 @@
                 .in(PlatformJob::getStatus, Constants.PlatformJobStatus.DONE.getKey()
                         , Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()
                         , Constants.PlatformJobStatus.LEAVED.getKey())
-                .apply("to_days(t1.create_data) = to_days(now())")
+                .apply("to_days(t1.create_date) = to_days(now())")
                 .groupBy(PlatformGroup::getId)
         );
         if(jobList!=null){
@@ -274,6 +279,140 @@
         );
         carWorkSituationVO.setPlatformLogList(platformLogList);
         return carWorkSituationVO;
+    }
+
+    @Override
+    public  List<PlatformWorkDataVO> platformWorkData(){
+
+        List<PlatformWorkDataVO> platformWorkDataVOList = new ArrayList<>();
+        List<Platform> platformList = platformMapper.selectJoinList(Platform.class, new MPJLambdaWrapper<Platform>()
+                .selectAll( Platform.class)
+                .eq(Platform::getIsdeleted, Constants.ZERO)
+                .orderByAsc(Platform::getSortnum)
+        );
+        /**
+         *    WAIT_CONFIRM(0, "寰呯‘璁�","寰呯‘璁�" ),
+     *         WART_SIGN_IN(1, "寰呯鍒�","寰呯鍒�" ),
+     *         WAIT_CALL(2, "宸茬鍒�","宸茬鍒�"),
+     *         IN_WAIT(3, "鍏ュ洯绛夊緟","鍏ュ洯绛夊緟" ),
+     *         CALLED(4, "宸插彨鍙�","宸插彨鍙�" ),
+     *         WORKING(5, "浣滀笟涓�","浣滀笟涓�" ),
+     *         DONE(6, "浣滀笟瀹屾垚 ","浣滀笟瀹屾垚" ),
+     *         TRANSFERING(7, "杞Щ涓�","杞Щ涓�" ),
+     *         EXCEPTION(8, "寮傚父鎸傝捣","寮傚父鎸傝捣" ),
+     *         AUTHED_LEAVE(9, "宸叉巿鏉冪鍥�","宸叉巿鏉冪鍥�" ),
+     *         LEAVED(10, "宸茬鍥� ","宸茬鍥� " ),
+     *         OVER_NUMBER(11, "宸茶繃鍙�","宸茶繃鍙�" ),
+     *         CANCEL(12, "宸插彇娑�","宸插彇娑�" ),
+         */
+
+        if(platformList!=null && platformList.size()>0){
+            List<PlatformJob> jobList = platformJobMapper.selectJoinList(PlatformJob.class, new MPJLambdaWrapper<PlatformJob>()
+                    .selectAll( PlatformJob.class)
+                    .select("( select pl.CREATE_DATE from platform_log pl where t.id = pl.obj_id and pl.OBJ_TYPE = "+Constants.PlatformJobLogType.WORKING.getKey()+"  order by pl.CREATE_DATE desc  limit 1  ) as newStartDate")
+                    .select(" (select sum(ifnull(pl.IO_QTY , 0 ))   from platform_wms_detail pl  where   pl.job_id = t.id and pl.isdeleted=0 )",PlatformJob::getWorkNum)
+                    .apply("to_days(t.create_date) = to_days(now())")
+                    .eq(Platform::getIsdeleted, Constants.ZERO)
+                    .in(PlatformJob ::getStatus,new Integer[]{Constants.PlatformJobStatus.WORKING.getKey(),Constants.PlatformJobStatus.CALLED.getKey() })
+                    .orderByDesc(PlatformJob::getStatus ));
+            //鏈堝彴鐘舵�侊細0=浣滀笟涓紱1=绌洪棽涓紱2=浣滀笟瓒呮椂;3=鍙彿
+            for(Platform model : platformList){
+                PlatformWorkDataVO platformDurationVO = new PlatformWorkDataVO();
+                platformDurationVO.setPlatformName(model.getName());
+                platformDurationVO.setPlatformId(model.getId());
+                platformDurationVO.setPlatformSort(model.getSortnum());
+                PlatformJob job = getJobFromListById(model.getId(),jobList);
+                if(job != null){
+                    if(Constants.equalsInteger(job.getType(),Constants.ONE) || Constants.equalsInteger(job.getType(),Constants.THREE)){
+                        platformDurationVO.setWorkType(Constants.ONE);//濡傛灉鏄璐�
+                    }else{
+                        platformDurationVO.setWorkType(Constants.ZERO);//濡傛灉鏄嵏璐�
+                    }
+                    Integer workMinute = job.getWorkNum().multiply(new BigDecimal(60)).divide(model.getWorkRate(),0,BigDecimal.ROUND_HALF_UP).intValue();
+                    Date overDate = DateUtil.getXMinuteAfterDate(job.getNewStartDate(),workMinute + model.getWorkTimeoutAlarmTime());//棰勮瀹屾垚鏃堕棿
+                    platformDurationVO.setFinishTimeStr(DateUtil.DateToStr(overDate,"HH:mm"));
+
+                    platformDurationVO.setWorkNum(Constants.formatBigdecimal(job.getWorkNum()).intValue());
+                    platformDurationVO.setCarNo(job.getCarCodeFront());//杞︾墝鍙�
+                    if(Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.CALLED.getKey() )){
+                        platformDurationVO.setStatus(Constants.THREE); //鍙彿涓�
+                    }else{
+                        platformDurationVO.setStatus(Constants.ZERO); //浣滀笟涓�
+                        platformDurationVO.setWorkTime(PlatformJobServiceImpl.getWorkTime(job,platformLogMapper));//宸插伐浣滄椂闂�
+                        if(overDate.getTime() < System.currentTimeMillis() ){
+                            model.setStatus(Constants.TWO); //浣滀笟宸茶秴鏃�
+                        }
+                    }
+                }else{
+                    platformDurationVO.setStatus(Constants.ONE);//绌洪棽涓�
+                }
+                platformWorkDataVOList.add(platformDurationVO);
+            }
+        }
+        return  platformWorkDataVOList;
+    }
+
+    private PlatformJob getJobFromListById(Integer id, List<PlatformJob> jobList) {
+        if(jobList!=null){
+            for(PlatformJob job :jobList){
+                if(Constants.equalsInteger(job.getPlatformId(),id)){
+                    return  job;
+                }
+            }
+
+        }
+
+        return null;
+    }
+
+    /**
+     *
+     * @param type 鏌ヨ绫诲瀷锛�0=鍏ュ簱锛�1=鍑哄簱
+     * @return
+     */
+    @Override
+    public   List<WorkEfficiencyVO> workEfficiency(Integer type){
+        //浣滀笟绫诲瀷 0鑷湁杞﹀嵏璐� 1鑷湁杞﹁璐� 2澶栧崗杞﹀嵏璐� 3澶栧崗杞﹁璐� 4甯傚叕鍙稿鍗忚溅鍗歌揣
+        List<WorkEfficiencyVO> workEfficiencyVOList = new ArrayList<>();
+        List<PlatformWmsDetail> jobList = platformWmsDetailMapper.selectJoinList(PlatformWmsDetail.class, new MPJLambdaWrapper<PlatformWmsDetail>()
+                .selectAll( PlatformWmsDetail.class)
+                .selectAs( PlatformJob::getDoneDate,PlatformWmsDetail::getDoneDate)
+                .leftJoin(PlatformJob.class,PlatformJob::getId,PlatformWmsDetail::getJobId)
+                .eq(PlatformWmsDetail::getIsdeleted, Constants.ZERO)
+                .eq(PlatformJob::getIsdeleted, Constants.ZERO)
+                .in(Constants.equalsInteger(type,Constants.ZERO),PlatformJob::getType,new Integer[]{0,2,4})
+                .in(Constants.equalsInteger(type,Constants.ONE),PlatformJob::getType,new Integer[]{1,3})
+                .in(PlatformJob::getStatus, Constants.PlatformJobStatus.DONE.getKey()
+                        , Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()
+                        , Constants.PlatformJobStatus.LEAVED.getKey())
+                .apply("to_days(t1.create_date) = to_days(now())")
+        );
+        int curtotalNum = 0;
+        Date today =  Utils.Date.getStart(new Date());
+        long curTime=0, lastTime=0;
+        for (int i = 0; i < 8; i++) {
+            lastTime = curTime;//涓婃鐨勬椂闂�
+            int curHour = 8+(i*2);
+            long time = curHour*60*60*1000 + today.getTime();
+            WorkEfficiencyVO workEfficiencyVO = new WorkEfficiencyVO();
+            workEfficiencyVO.setWorkTime(curHour+":00");
+            if(jobList!=null && jobList.size()>0){
+                for(PlatformWmsDetail detail : jobList){
+                    if(detail.getDoneDate()!=null && detail.getDoneDate().getTime()<= time){
+                        //褰撳墠閲�
+                        if(detail.getDoneDate()!=null && detail.getDoneDate().getTime() > lastTime){
+                            //鍖洪棿鍊� 鍙栧疄杩�2灏忔椂鍐呯殑绱鍊�
+                            workEfficiencyVO.setWorkNum(Constants.formatIntegerNum(workEfficiencyVO.getWorkNum())+Constants.formatBigdecimal(detail.getIoQty()).intValue());
+                        }
+                        //绱Н閲�
+                        curtotalNum += Constants.formatBigdecimal(detail.getIoQty()).intValue();
+                    }
+                }
+            }
+            workEfficiencyVO.setTotalWorkNum(curtotalNum);//绱鍊�
+            workEfficiencyVOList.add(workEfficiencyVO);
+        }
+        return workEfficiencyVOList;
     }
     @Override
     public List<PlatformDurationVO> platformDuration(){
@@ -330,7 +469,7 @@
                 .selectAll(PlatformJob.class)
                 .select("count(id)" ,PlatformJob::getCountum)
                 .eq(PlatformJob::getIsdeleted,Constants.ZERO)
-                .apply("to_days(create_data) = to_days(now())" )
+                .apply("to_days(create_date) = to_days(now())" )
                 .groupBy(PlatformJob::getStatus )
         );
         if(jobList!=null){
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java
index a08a5ab..d6ce594 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java
@@ -13,6 +13,7 @@
 import com.doumee.core.wms.model.response.WmsBaseResponse;
 import com.doumee.core.wms.model.response.WmsInventoryDataResponse;
 import com.doumee.dao.business.*;
+import com.doumee.dao.business.dao.SmsConfigMapper;
 import com.doumee.dao.business.dao.SmsEmailMapper;
 import com.doumee.dao.business.model.*;
 
@@ -20,7 +21,6 @@
 import com.doumee.service.business.third.EmayService;
 import com.doumee.service.business.third.WmsService;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
-import io.swagger.models.auth.In;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/BoardService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/BoardService.java
index 3416950..727d217 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/BoardService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/BoardService.java
@@ -44,4 +44,8 @@
     List<PlatformWarnEvent> warningList(int limit);
 
     List<PlatformDurationVO> platformDuration();
+
+    List<WorkEfficiencyVO> workEfficiency(Integer type);
+
+    List<PlatformWorkDataVO> platformWorkData();
 }

--
Gitblit v1.9.3