jiangping
2025-02-27 10c28ce3d0b384584c77ce9111a66a0641250752
最新版本541200007
已修改51个文件
596 ■■■■ 文件已修改
admin/src/api/platform/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaCarsWindow.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaMemberWindow.vue 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/operation/HiddenDangerParam.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/layouts/TableLayout.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/layouts/TableLayout1.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/device.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/internalMember.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/relativeMember.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/visits.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/meeting/bookings.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/meeting/components/OperaBookingsDetailWindow.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/meeting/components/OperaRoomsWindow.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/meeting/rooms.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/operation/danger/record.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/task/visSubDetail.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Bookings.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Rooms.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/RoomsServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/api/BaseController.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/config/cloudfilter/LoginHandlerInterceptor.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/Constants.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/timer/scheduler/QuartzManage.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/service/timer/QuartzJobService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_timer/src/main/java/com/doumee/jobs/service/TimerBizSevice.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/admin_timer/src/main/java/com/doumee/api/HkVisitTimerController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatConstants.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/CarEventDTO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDanger.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CarEventVo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarEventServiceImpl.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerParamServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformEventServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWarnEventServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWmsJobServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/RetentionServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/platform/index.js
@@ -2,7 +2,7 @@
// 获取月台组信息
export function getPlatformGroupList (data) {
  return request.post('/visitsAdmin/cloudService/business/platform/getPlatformGroupList', data)
  return request.post('/visitsAdmin/cloudService/business/platform/getPlatformGroupListNew', data)
}
// 叫号列表
export function platformCallList (data) {
admin/src/components/business/OperaCarsWindow.vue
@@ -22,8 +22,10 @@
      </el-form-item>
      <el-form-item label="选择组织:" prop="groupId">
        <el-select v-model="form.groupId" @change="changeSel" clearable filterable placeholder="请选择">
          <el-option v-for="item in companyList" :key="item.id" :label="item.name" :value="item.id">
          </el-option>
          <template v-for="item in companyList">
            <el-option  v-if="item.countNum && item.countNum>0" :key="item.id" :label="item.name" :value="item.id">
            </el-option>
          </template>
        </el-select>
      </el-form-item>
      <el-form-item label="选择车主:" prop="memberId">
@@ -148,8 +150,8 @@
    },
    getCompany() {
      companyGetList({
        model: {},
        capacity: 1000,
        model: { },//有员工的数据
        capacity: 10000,
        page: 1,
      }).then(res => {
        this.companyList = res.records || []
admin/src/components/business/OperaMemberWindow.vue
@@ -5,8 +5,14 @@
        <el-input v-model="form.name" placeholder="请输入姓名" v-trim />
      </el-form-item>
      <el-form-item label="所属组织" prop="companyId">
        <el-cascader v-model="form.company" :options="department" @change="handleChangeCompany" :show-all-levels="false"
          clearable filterable :props="departprops"></el-cascader>
<!--        <el-cascader v-model="form.company" :options="department" @change="handleChangeCompany" :show-all-levels="false"
          clearable filterable :props="departprops"></el-cascader>-->
        <el-select v-model="form.companyId"  clearable filterable placeholder="请选择">
          <template v-for="item in companyList">
            <el-option  v-if="item.countNum && item.countNum>0" :key="item.id" :label="item.companyNamePath" :value="item.id">
            </el-option>
          </template>
        </el-select>
        <div style="font-size: 12px;color: #F56C6C">
          注:仅支持选择 【{{ companyType === 0 ? '相关方组织' : '内部组织' }}】
        </div>
@@ -97,6 +103,7 @@
import { checkMobile, validIdCardNo, validIdCardNoNew } from '@/utils/form'
import { allList } from '@/api/business/position'
import { upload } from '@/api/system/common'
import {companyGetList} from "@/api/business/company";
export default {
  name: 'OperaCompanyWindow',
  extends: BaseOpera,
@@ -124,6 +131,7 @@
      companyType: 0,
      department: [],
      positionList: [],
      companyList: [],
      // 表单数据
      form: {
        id: null,
@@ -161,6 +169,16 @@
    })
  },
  methods: {
    getCompany() {
      companyGetList({
        model: {type:this.companyType } ,
        capacity: 10000,
        page: 1,
      }).then(res => {
        this.companyList = res.records || []
      })
    },
    openCamera() {
      this.paisheModal = true
      this.isShowCamera = true
@@ -314,7 +332,8 @@
        faceImgFull: ''
      }
      this.companyType = companyType
      this.getPositionList()
      this.getCompany()
      // this.getPositionList()
      // 新建
      if (target == null) {
        this.$nextTick(() => {
@@ -322,6 +341,8 @@
          this.form[this.configData['field.id']] = null
          this.form.company = []
        })
        this.getCompany()
        return
      }
      // 编辑
admin/src/components/operation/HiddenDangerParam.vue
@@ -151,7 +151,7 @@
    this.initData()
  },
  methods: {
    initData () {
      allList({ type: 1 }).then(res => { // 类型
        this.typeList = res || []
@@ -173,9 +173,12 @@
      const { companyId } = this.param
      this.$set(this.param, 'areaId', '')
      this.$set(this.param, 'checkUserId', '')
      allList({ type: 0,companyId }).then(res => { // 位置
        this.addrList = res || []
      })
      this.addrList = []
      if(companyId){
        allList({ type: 0,companyId }).then(res => { // 位置
          this.addrList = res || []
        })
      }
    },
    changeArea (e) {
      const item = this.addrList.find(i => i.id === e)
admin/src/layouts/TableLayout.vue
@@ -108,7 +108,7 @@
.table-content {
  padding: 0 16px;
  .table-wrap {
    padding: 16px 16px 0 16px;
    padding: 16px 16px 60px 16px;
    background: #fff;
    // 工具栏
    .toolbar {
@@ -156,6 +156,14 @@
    .table-pagination {
      padding: 16px 0;
      text-align: left;
      display: block;
      z-index: 100;
      width: -webkit-fill-available;
      /* width: 80%; */
      position: fixed;
      bottom: 30px;
      background-color: white;
      margin-right: 50px;
    }
  }
}
admin/src/layouts/TableLayout1.vue
@@ -112,7 +112,7 @@
    .table-content {
        /*padding: 0 16px;*/
        .table-wrap {
            padding: 16px 16px 0 16px;
            padding: 16px 16px 60px 16px;
            background: #fff;
            // 工具栏
            .toolbar {
@@ -160,6 +160,14 @@
            .table-pagination {
                padding: 16px 0;
                text-align: left;
              display: block;
              z-index: 100;
              width: -webkit-fill-available;
              /* width: 80%; */
              position: fixed;
              bottom: 30px;
              background-color: white;
              margin-right: 50px;
            }
        }
    }
admin/src/views/business/device.vue
@@ -39,7 +39,9 @@
              <el-table-column prop="name" label="设备名称"></el-table-column>
                <el-table-column prop="doorName" label="门禁点名称"></el-table-column>
                <el-table-column prop="regionPathName" label="区域名称"></el-table-column>
<!--
                <el-table-column prop="doorNo" label="门禁点编号"></el-table-column>
-->
                <el-table-column prop="manufature" label="厂商"></el-table-column>
                <el-table-column prop="online" label="在线状态">
                    <template slot-scope="{row}">
admin/src/views/business/internalMember.vue
@@ -159,20 +159,20 @@
            <div v-else>-</div>
          </template>
        </el-table-column>
        <el-table-column prop="code" label="工号" min-width="100px"></el-table-column>
<!--        <el-table-column prop="code" label="工号" min-width="100px"></el-table-column>
        <el-table-column label="卡片" min-width="80px">
          <template slot-scope="{row}">
            <el-button @click="$refs.cardOpeningRecord.open('开卡记录', row.id)" type="text">{{ row.memberCardCount ||
              '0'}}</el-button>
          </template>
        </el-table-column>
        </el-table-column>-->
        <el-table-column prop="editorName" label="操作人" min-width="100px"></el-table-column>
        <el-table-column prop="editDate" label="最后操作时间" min-width="150px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:member:update', 'business:member:delete', 'business:empower:create'])"
          label="操作" min-width="280"  >
          <template slot-scope="{row}">
            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaMemberWindow.open('编辑员工信息', row, department)"
            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaMemberWindow.open('编辑员工信息', row, department,searchForm.companyType)"
              v-permissions="['business:empower:update']">编辑</el-button>
            <el-button type="text" icon="el-icon-plus" @click="empower(row.id)"
              v-permissions="['business:empower:create']">重新授权</el-button>
admin/src/views/business/relativeMember.vue
@@ -171,20 +171,20 @@
            <div v-else>-</div>
          </template>
        </el-table-column>
        <el-table-column prop="code" label="工号" min-width="100px"></el-table-column>
<!--        <el-table-column prop="code" label="工号" min-width="100px"></el-table-column>
        <el-table-column label="卡片" min-width="80px">
          <template slot-scope="{row}">
            <el-button @click="$refs.cardOpeningRecord.open('开卡记录', row.id)" type="text">{{ row.memberCardCount ||
              '0' }}</el-button>
          </template>
        </el-table-column>
        </el-table-column>-->
        <el-table-column prop="editorName" label="操作人" min-width="100px"></el-table-column>
        <el-table-column prop="editDate" label="最后操作时间" min-width="150px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:member:update', 'business:member:delete', 'business:empower:create'])"
          label="操作" min-width="280"  >
          <template slot-scope="{row}">
            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaMemberWindow.open('编辑员工信息', row, department)"
            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaMemberWindow.open('编辑员工信息', row, department,searchForm.companyType)"
              v-permissions="['business:empower:update']">编辑</el-button>
            <el-button type="text" icon="el-icon-plus" @click="empower(row.id)"
              v-permissions="['business:empower:create']">重新授权</el-button>
admin/src/views/business/visits.vue
@@ -61,7 +61,7 @@
            <span v-else>-</span>
          </template>
        </el-table-column>
        <el-table-column label="施工人员" min-width="100px">
        <el-table-column label="是否涉及施工作业" min-width="100px">
          <template slot-scope="{row}">
            <span v-if="row.type == 0">否</span>
            <span v-if="row.type == 1">是</span>
admin/src/views/meeting/bookings.vue
@@ -101,14 +101,14 @@
          <template slot-scope="{ row }">
            <template>
              <el-button type="text" @click="$refs.operaBookingsDetailWindow.open('会议详情', row)">查看详情</el-button>
              <el-button v-if="row.meetingStatus == '1' && row.creator === userInfo.id" type="text"
              <el-button v-if="row.meetingStatus == '1' &&row.creator === userInfo.id " type="text"
                @click="$refs.operaBookingsWindow.open('编辑会议预约', row)">编辑</el-button>
              <el-button type="text"
                v-if="row.creator === userInfo.id && (row.meetingStatus == '1' || row.meetingStatus == '4')"
                v-if="row.hasRole ==1 && (row.meetingStatus == '1' || row.meetingStatus == '4')"
                @click="handleStart(row)">开始</el-button>
              <el-button type="text" v-if="row.creator === userInfo.id && row.meetingStatus == '2'"
              <el-button type="text" v-if=" row.hasRole ==1&& row.meetingStatus == '2'"
                @click="handleEnd(row)">结束</el-button>
              <el-button v-if="row.creator === userInfo.id && (row.meetingStatus == '1' || row.meetingStatus == '4')"
              <el-button v-if="row.hasRole ==1 && (row.meetingStatus == '1' || row.meetingStatus == '4')"
                type="text" @click="cancelMeeting(row.id)">撤回</el-button>
            </template>
            <!-- <el-button v-else type="text" @click="deleteById(row)" v-permissions="['business:bookings:delete']">删除</el-button> -->
admin/src/views/meeting/components/OperaBookingsDetailWindow.vue
@@ -21,13 +21,13 @@
        <div class="item-title">会议内容</div>
        <div class="item-value">{{ form.content || "无" }}</div>
      </div>
      <div v-if="form.projectList.length" class="item">
      <div v-if="form.projectList && form.projectList.length" class="item">
        <div class="">服务项</div>
        <div class="item-value">
          {{ form.projectList.map((item) => item.projectName).join(" | ") }}
        </div>
      </div>
      <div class="item" v-if="form.fileList.length">
      <div class="item" v-if="form.fileList && form.fileList.length">
        <div class="item-title">附件</div>
        <div>
          <FileLink
admin/src/views/meeting/components/OperaRoomsWindow.vue
@@ -1,16 +1,19 @@
<template>
  <GlobalAlertWindow v-loading="isUploading" :title="title" :visible.sync="visible" :confirm-working="isWorking"
    @confirm="confirm">
    <p class="tip-warn" v-if="form.id"><i class="el-icon-warning"></i>操作说明:<br>
      <span style="color: #e75314">如果当前会议室存在未结束的会议,不允许更新开放时间和粒度分钟,提交后开放时间和粒度分钟修改不生效!</span>
    </p>
    <el-form :model="form" ref="form" :rules="rules" label-width="120px" label-suffix=":">
      <el-form-item label="会议室名称" prop="name">
        <el-input v-model="form.name" placeholder="请输入会议室名称" :maxlength="10" v-trim />
      </el-form-item>
      <el-form-item label="开放时间" prop="timeRange">
        <el-time-picker is-range value-format="HH:mm" format="HH:mm" v-model="timeRange" range-separator="至"
        <el-time-picker is-range value-format="HH:mm" :disabled=" form.bookingNum && form.bookingNum>0" format="HH:mm" v-model="timeRange" range-separator="至"
          start-placeholder="开始时间" end-placeholder="结束时间" placeholder="选择时间范围" @change="selectRange"></el-time-picker>
      </el-form-item>
      <el-form-item label="粒度分钟" prop="intervalTime">
        <el-input v-model="form.intervalTime" type="number" placeholder="请输入时间粒度(分钟)" v-trim />
        <el-input v-model="form.intervalTime" type="number"  :disabled="form.bookingNum && form.bookingNum>0" placeholder="请输入时间粒度(分钟)" v-trim />
      </el-form-item>
      <el-form-item label="容纳人数" prop="limitNum">
        <el-input v-model="form.limitNum" type="number" placeholder="请输入容纳人数" v-trim />
@@ -111,7 +114,8 @@
        imgFullUrl: '',
        tips: '',
        status: 0,
        intervalTime: 0
        intervalTime: 0,
        bookingNum: 0,
      },
      user: [],
      projectList: [],
admin/src/views/meeting/rooms.vue
@@ -5,7 +5,7 @@
      <el-form-item label="会议室名称" prop="name">
        <el-input v-model="searchForm.name" placeholder="请输入名称" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="管理员" prop="sysList">
<!--      <el-form-item label="管理员" prop="sysList">
        <el-select
          v-model="searchForm.sysList"
          filterable
@@ -20,10 +20,10 @@
            :value="item.id"
            :label="item.companyId?`${item.realname}-${item.companyName}`:item.realname"
            ></el-option>
            <!-- :label="`${item.department.name}-${item.realname}`" -->
          <!-- <el-option :key="1" :value="1" label="禁用" /> -->
            &lt;!&ndash; :label="`${item.department.name}-${item.realname}`" &ndash;&gt;
          &lt;!&ndash; <el-option :key="1" :value="1" label="禁用" /> &ndash;&gt;
        </el-select>
      </el-form-item>
      </el-form-item>-->
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
admin/src/views/operation/danger/record.vue
@@ -78,6 +78,7 @@
        <el-table-column prop="dutyCompanyName" label="责任部门" min-width="150px"></el-table-column>
        <el-table-column prop="areaName" label="隐患区域" min-width="150px"></el-table-column>
        <el-table-column prop="categoryName" label="隐患类型" min-width="150px"></el-table-column>
        <el-table-column prop="content" label="问题描述" min-width="150px"></el-table-column>
        <el-table-column prop="memberName" label="提报人" min-width="80px"></el-table-column>
        <el-table-column prop="companyName" label="所属组织" min-width="150px"></el-table-column>
        <el-table-column prop="createDate" label="提报时间" min-width="150px"></el-table-column>
@@ -88,7 +89,10 @@
            <span class="status-red"   v-if="row.status === 2">已退回</span>
          </template>
        </el-table-column>
        <el-table-column prop="editDate" label="操作时间" min-width="150px"></el-table-column>
        <el-table-column prop="dealTime" label="处理时间" min-width="150px"></el-table-column>
<!--
        <el-table-column prop="editDate" label="最近操作时间" min-width="150px"></el-table-column>
-->
        <el-table-column
            label="操作"
            min-width="180"
admin/src/views/task/visSubDetail.vue
@@ -37,7 +37,7 @@
              <div class="value">{{ info.carNos }}</div>
            </div>
            <div class="item">
              <div class="label">施工人员</div>
              <div class="label">是否涉及施工作业</div>
              <div class="value">{{ info.type == "0" ? "否" : "是" }}</div>
            </div>
            <div class="item">
server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Bookings.java
@@ -140,10 +140,16 @@
    @ApiModelProperty(value = "userId")
    @TableField(exist = false)
    private Integer userId ;
    @ApiModelProperty(value = "是否具有操作权限(开始、结束、撤回)")
    @TableField(exist = false)
    private Integer  hasRole ;
    @ApiModelProperty(value = "参会人员")
    @TableField(exist = false)
    private List<UserRel> sysList;
    @ApiModelProperty(value = "会议室管理员")
    @TableField(exist = false)
    private List<UserRel> adminList;
    @ApiModelProperty(value = "服务项目")
    @TableField(exist = false)
server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Rooms.java
@@ -112,6 +112,9 @@
    @ApiModelProperty(value = "图片全路径")
    @TableField(exist = false)
    private String imgFullUrl;
    @ApiModelProperty(value = "未结束会议记录数")
    @TableField(exist = false)
    private Integer bookingNum;
    @ApiModelProperty(value = "附件文件")
    @TableField(exist = false)
server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java
@@ -42,6 +42,7 @@
import com.doumee.service.business.ProjectsService;
import com.doumee.service.system.SystemUserService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
@@ -69,6 +70,7 @@
 * @date 2023/05/04 18:18
 */
@Service
@Slf4j
public class BookingsServiceImpl implements BookingsService {
    @Value("${des_pwd}")
@@ -627,20 +629,31 @@
            //参会人员列表
            MPJLambdaWrapper<UserRel> urquery = new MPJLambdaWrapper<>();
            urquery.selectAll(UserRel.class);
            urquery.eq(UserRel::getObjType, MeetConstants.ONE);
            urquery.eq(UserRel::getIsdeleted, MeetConstants.ZERO);
            urquery.eq(UserRel::getObjId, s.getId());
            urquery.select("(select REALNAME from system_user s where t.USER_ID = s.id and s.DELETED = 0  ) as realName");
            List<UserRel> userrelList = userRelJoinMapper.selectJoinList(UserRel.class, urquery);
            s.setSysList(userrelList);
            //会议室管理员
            MPJLambdaWrapper<UserRel> param = new MPJLambdaWrapper<>();
            urquery.selectAll(UserRel.class);
            urquery.eq(UserRel::getObjType, MeetConstants.ZERO);
            urquery.eq(UserRel::getIsdeleted, MeetConstants.ZERO);
            urquery.eq(UserRel::getObjId, s.getRoomId());
            List<UserRel> adminList = userRelJoinMapper.selectJoinList(UserRel.class, urquery);
            s.setAdminList(adminList);
            //服务项
            //查询是否有权限
            s.setHasRole(getHasRoleByParam(s,userInfo,adminList));
          /*  //服务项
            MPJLambdaWrapper<ProjectRel> prquery = new MPJLambdaWrapper<>();
            prquery.selectAll(ProjectRel.class);
            prquery.eq(ProjectRel::getIsdeleted, MeetConstants.ZERO);
            prquery.eq(ProjectRel::getObjId, s.getId());
            prquery.select("(select p.name from meeting_projects p where t.PROJECT_ID = p.id and p.ISDELETED = 0  ) as projectName");
            List<ProjectRel> prList = projectRelJoinMapper.selectJoinList(ProjectRel.class, prquery);
            s.setProjectList(prList);
            s.setProjectList(prList);*/
            s.setFlag(MeetConstants.ZERO);
            if (System.currentTimeMillis() > s.getStartTime().getTime()) {
@@ -650,7 +663,19 @@
        });
        return PageData.from(result);
    }
    public int getHasRoleByParam(Bookings s,LoginUserInfo userInfo,List<UserRel> adminList){
        if(Constants.equalsInteger(userInfo.getId(),s.getCreator())  ){
              return 1;
        }
        if(adminList!=null){
            for(UserRel u : adminList){
                if(Constants.equalsInteger(userInfo.getId(),u.getUserId())  ){
                    return 1;
                }
            }
        }
        return  0;
    }
    private void dealMeetingStatusByModel(Bookings s,Integer minute) {
        //会议状态: 1=未开始;2=进行中;3=已结束 ; 4=即将开始; 5=已撤销
        //status状态 0已预约 1已撤销 2已结束
@@ -1295,7 +1320,7 @@
                .eq(UserRel::getObjType,Constants.ZERO)
                .eq(UserRel::getUserId,businessOverDTO.getUserId()));
        if (!bookings.getCreator().equals(businessOverDTO.getUserId()) && userRelList <= 0) {
        if (!Constants.equalsInteger(bookings.getCreator(),businessOverDTO.getUserId()) && userRelList <= 0) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "非你的预约记录,无法进行该操作");
        }
        if(!Constants.equalsInteger(bookings.getStatus(),Constants.ZERO)){
@@ -1346,7 +1371,7 @@
        bookings.setEditDate(new Date());
        bookings.setEditor(businessOverDTO.getUserId());
        bookingsMapper.updateById(bookings);
       /* //更新已结束但未结束的会议信息为已结束
         //更新已结束但未结束的会议信息为已结束
        bookingsMapper.update(null,new UpdateWrapper<Bookings>()
                .lambda()
                .set(Bookings::getStatus,Constants.TWO)
@@ -1355,7 +1380,7 @@
                .apply(" ( END_TIME < now() or ( END_TIME > now() and START_TIME < now() and START_TIME_REAL is null  ) )")
                .eq(Bookings::getStatus,Constants.ZERO)
                .eq(Bookings::getRoomId,bookings.getRoomId())
        );*/
        );
    }
@@ -1390,23 +1415,6 @@
            response.setMultifileList(multifileList);
        }
/*        //查询会议列表
        List<MeetingListResponse> meetingList = bookingsMapper.meetingList(
                new QueryWrapper<Bookings>()
                .eq( "b.id", rooms.getId())
                .eq("b.ISDELETED",MeetConstants.ZERO)
                .eq("b.STATUS",MeetConstants.ZERO)
                .eq("a.ISDELETED",MeetConstants.ZERO)
                .eq("a.status",Constants.ZERO)
                .ne("a.status",Constants.TWO)
                .like("a.start_time",DateUtil.getCurrDate())
                .apply(" not exists ( select 1  from  meeting_book mb where mb.END_TIME < now() and  mb.id = a.id and START_TIME_REAL is null  )   ")
                .orderByAsc("a.start_time")
        );
        this.dealMeetingStatus(meetingList);
        response.setMeetingListResponseList(meetingList);*/
        MPJLambdaWrapper<Bookings> queryWrapper = new MPJLambdaWrapper<Bookings>()
                 .selectAll(Bookings.class)
                 .selectAs(Rooms::getName, Bookings::getRoomName)
@@ -1416,14 +1424,15 @@
                 .leftJoin(Rooms.class, Rooms::getId, Bookings::getRoomId)
                 .leftJoin(SystemUser.class, SystemUser::getId, Bookings::getCreator)
                 .eq(Bookings::getIsdeleted, MeetConstants.ZERO)
                 .eq(Bookings::getId, MeetConstants.ZERO)
                 .eq(Bookings::getStatus, MeetConstants.ZERO)
                 .eq(Rooms::getId, rooms.getId())
                .apply("to_days(t.start_time) = to_days(now())")//子查询当天的
                 .orderByDesc(Bookings::getStartTime);
                 .apply("to_days(t.start_time) = to_days(now()) and t.end_time > now()")//子查询当天的
                 .orderByAsc(Bookings::getStartTime);
        Integer minute =getNearStartMinut();
        List<Bookings> meetingList =bookingsMapper.selectJoinList(Bookings.class,queryWrapper);
        List<MeetingListResponse> rList= new ArrayList<>();
        if(meetingList!=null){
            response.setMeetingListResponseList(new ArrayList<>());
            log.error(JSONObject.toJSONString(meetingList));
            for(Bookings s : meetingList){
                dealMeetingStatusByModel(s,minute);
                MeetingListResponse d = new MeetingListResponse();
@@ -1440,9 +1449,10 @@
                d.setMeetingName(s.getName());
                d.setRemark(s.getRemark());
                d.setStartTime(s.getStartTime());
                response.getMeetingListResponseList().add(d);
                rList.add(d);
            }
        }
        response.setMeetingListResponseList(rList);
        return response;
    }
server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/RoomsServiceImpl.java
@@ -387,6 +387,7 @@
//                .set(Rooms::getStartTime, rooms.getStartTime())
                .set(Rooms::getLimitNum, rooms.getLimitNum())
                .set(Rooms::getTips, rooms.getTips())
                .set(Rooms::getIntervalTime, rooms.getIntervalTime())
                .set(Rooms::getImgurl, rooms.getImgurl())
                .eq(Rooms::getId, rooms.getId()));
@@ -420,7 +421,7 @@
        rooms.setEndTime(DateUtil.formatDate(endtime.getTime(), "yyyy-MM-dd HH:mm:ss"));
        //TODO 更新会议室时间段
        //TODO更 新会议室时间段
        if (!Constants.equalsInteger(re, Constants.ONE)) {
            updateRoomTimes(rooms, user);
        }
@@ -491,9 +492,8 @@
        IPage<Rooms> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<Rooms> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        queryWrapper.selectAll(Rooms.class);
        queryWrapper.select("(select count(a.id) from meeting_book a where a.room_id=t.id and a.isdeleted=0 and a.status=0)",Rooms::getBookingNum);
        queryWrapper.orderByDesc(Rooms::getCreateDate);
        queryWrapper.eq(Rooms::getIsdeleted, Constants.ZERO);
        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getName()),Rooms::getName, pageWrap.getModel().getName());
@@ -501,7 +501,6 @@
        if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(pageWrap.getModel().getSysList())){
         //   queryWrapper.leftJoin(UserRel.class,UserRel::getObjId,Rooms::getId);
            List<Integer> collect = pageWrap.getModel().getSysList().stream().map(UserRel::getUserId).collect(Collectors.toList());
            queryWrapper.exists("select u.id from meeting_user_rel u where u.ISDELETED=0 and u.OBJ_ID =t.id and  u.USER_ID in (" +     StringUtils.strip(collect.toString(),"[]")+" )");
        }
server/system_service/src/main/java/com/doumee/api/BaseController.java
@@ -60,10 +60,17 @@
    }
    public List<Integer> getIdList(String ids){
        if(StringUtils.isBlank(ids)){
            return null;
        }
        String [] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
            try {
                idList.add(Integer.valueOf(id));
            }catch (Exception e){
            }
        }
        return idList;
    }
server/system_service/src/main/java/com/doumee/config/cloudfilter/LoginHandlerInterceptor.java
@@ -88,7 +88,7 @@
                    }catch (Exception e){
                    }*/
                } else {
                    throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),request.getRequestURI()+"未登录");
                    throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),request.getRequestURI()+"未登录,TOKEN缺失");
                }
            }
        }else{
@@ -130,11 +130,11 @@
        if (StringUtils.isBlank(userinfo)) {
            throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"未登录");
        }
        stringRedisTemplate.expire(Constants.REDIS_TOKEN_KEY+token,this.expireTime, TimeUnit.MILLISECONDS);
        LoginUserInfo user = JSONObject.toJavaObject(JSONObject.parseObject(userinfo),LoginUserInfo.class );
        if(user ==null ){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户登陆已失效,请重新登陆!");
        }
        stringRedisTemplate.expire(Constants.REDIS_TOKEN_KEY+token,this.expireTime, TimeUnit.MILLISECONDS);
        //权限判断------------
        return  user;
    }
server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -752,6 +752,10 @@
        PT_FK(1,"普通访客"),
        NB_FK(2,"内部人员"),
        COMPANY_TYPE_REL(0,"相关方组织"),
        COMPANY_TYPE_INTERNAL(1,"内部人员"),
        COMPANY_TYPE_FK(3,"访客"),
        /** 进场类型 **/
        OUT(0,"出"),
        IN(1,"进");
server/system_service/src/main/java/com/doumee/dao/timer/scheduler/QuartzManage.java
@@ -41,9 +41,11 @@
    public CronTrigger getCronTrigger (Integer jobId){
        try {
            return (CronTrigger) this.scheduler.getTrigger(getTriggerKey(jobId)) ;
        } catch (SchedulerException e){
            throw new RuntimeException("getCronTrigger Fail",e) ;
        }catch (Exception e){
            e.printStackTrace();
//            throw new RuntimeException("createJob Fail",e) ;
        }
        return null;
    }
    /**
@@ -69,8 +71,9 @@
            scheduler.scheduleJob(jobDetail,trigger) ;
            // 状态校验
            checkStop(quartzJob) ;
        } catch (SchedulerException e){
            throw new RuntimeException("createJob Fail",e) ;
        } catch (Exception e){
            e.printStackTrace();
//            throw new RuntimeException("createJob Fail",e) ;
        }
    }
@@ -93,8 +96,9 @@
            scheduler.rescheduleJob(triggerKey, trigger);
            // 状态校验
            checkStop(quartzJob) ;
        } catch (SchedulerException e) {
            throw new RuntimeException("updateJob Fail",e) ;
        }catch (Exception e){
            e.printStackTrace();
//            throw new RuntimeException("createJob Fail",e) ;
        }
    }
@@ -128,8 +132,9 @@
            JobDataMap dataMap = new JobDataMap() ;
            dataMap.put(QuartzJob.JOB_PARAM_KEY,quartzJob);
            this.scheduler.triggerJob(getJobKey(quartzJob.getId()),dataMap);
        } catch (SchedulerException e){
            throw new RuntimeException("run Fail",e) ;
        } catch (Exception e){
            e.printStackTrace();
//            throw new RuntimeException("createJob Fail",e) ;
        }
    }
@@ -141,8 +146,9 @@
            if(quartzJob.getState() != JobState.JOB_RUN.getStatus()){
                this.scheduler.pauseJob(getJobKey(quartzJob.getId()));
            }
        } catch (SchedulerException e){
            throw new RuntimeException("pauseJob Fail",e) ;
        } catch (Exception e){
            e.printStackTrace();
//            throw new RuntimeException("createJob Fail",e) ;
        }
    }
server/system_service/src/main/java/com/doumee/service/timer/QuartzJobService.java
@@ -41,6 +41,11 @@
     * 新增任务
     */
    public int insert(QuartzJob quartzJob) {
        if(quartzJobMapper.selectCount(new QueryWrapper<QuartzJob>().lambda()
                .eq(QuartzJob::getModule,quartzJob.getModule())
                .eq(QuartzJob::getBeanName,quartzJob.getBeanName())) >0){
            throw  new BusinessException(ResponseStatus.DATA_EXISTS);
        }
        int flag = quartzJobMapper.insert(quartzJob) ;
        if (flag > 0){
            quartzManage.createJob(quartzJob) ;
@@ -52,6 +57,12 @@
     * 更新任务
     */
    public int update(QuartzJob quartzJob) {
        if(quartzJobMapper.selectCount(new QueryWrapper<QuartzJob>().lambda()
                .eq(QuartzJob::getModule,quartzJob.getModule())
                .ne(QuartzJob::getId,quartzJob.getId())
                .eq(QuartzJob::getBeanName,quartzJob.getBeanName())) >0){
            throw  new BusinessException(ResponseStatus.DATA_EXISTS);
        }
        int flag = quartzJobMapper.updateById(quartzJob);
        if (flag > 0){
            quartzManage.updateJob(quartzJob);
server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java
@@ -73,6 +73,9 @@
    @ApiOperation("【访客系统】访客数据即将超时预警")
    @GetMapping("/timer/visit/visitTimeOut")
    ApiResponse visitTimeOut() ;
    @ApiOperation("【访客系统】访客申请待审批记录截止时间已过自动取消预约")
    @GetMapping("/timer/visit/visitNoCheckCancel")
    ApiResponse visitNoCheckCancel() ;
    @ApiOperation("【数字化月台】月台停靠超时报警业务")
    @GetMapping("/timer/platformJob/platformJobTimer")
    ApiResponse platformJobTimer();
server/system_timer/src/main/java/com/doumee/jobs/service/TimerBizSevice.java
@@ -23,17 +23,23 @@
     */
    @PostConstruct
    public void init () {
        LambdaQueryWrapper<QuartzJob> queryWrapper = new LambdaQueryWrapper<>() ;
        queryWrapper.in(QuartzJob::getState, JobState.JOB_RUN.getStatus(),JobState.JOB_STOP.getStatus());
        List<QuartzJob> jobList = quartzJobMapper.selectList(queryWrapper);
        jobList.forEach(quartzJob -> {
            CronTrigger cronTrigger = quartzManage.getCronTrigger(quartzJob.getId()) ;
            if (Objects.isNull(cronTrigger)){
                quartzManage.createJob(quartzJob);
            } else {
                quartzManage.updateJob(quartzJob);
            }
        });
            LambdaQueryWrapper<QuartzJob> queryWrapper = new LambdaQueryWrapper<>() ;
            queryWrapper.in(QuartzJob::getState, JobState.JOB_RUN.getStatus(),JobState.JOB_STOP.getStatus());
            List<QuartzJob> jobList = quartzJobMapper.selectList(queryWrapper);
            jobList.forEach(quartzJob -> {
                try {
                    CronTrigger cronTrigger = quartzManage.getCronTrigger(quartzJob.getId()) ;
                    if (Objects.isNull(cronTrigger)){
                        quartzManage.createJob(quartzJob);
                    } else {
                        quartzManage.updateJob(quartzJob);
                    }
                }catch (Exception e){
                    e.printStackTrace();
                }
            });
    }
}
server/visits/admin_timer/src/main/java/com/doumee/api/HkVisitTimerController.java
@@ -65,5 +65,11 @@
        visitsService.syncTimeOutData();
        return ApiResponse.success("访客即将超时预警");
    }
    @ApiOperation("待审批记录超时自动取消预约")
    @GetMapping("/visitNoCheckCancel")
    public ApiResponse visitNoCheckCancel() {
        visitsService.visitNoCheckCancel();
        return ApiResponse.success("待审批记录超时自动取消预约");
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java
@@ -138,6 +138,12 @@
    public ApiResponse<List<PlatformGroup>>  getPlatformGroupList (@RequestBody PlatformDataDTO platformDataDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
        return ApiResponse.success(platformGroupService.getAllPlatformGroup(platformDataDTO,getLoginUser(token)));
    }
    @ApiOperation("获取月台组信息(平台端)")
    @PostMapping("/getPlatformGroupListNew")
    @CloudRequiredPermission("business:platform:query")
    public ApiResponse<List<PlatformGroup>>  getPlatformGroupListNew (@RequestBody PlatformDataDTO platformDataDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
        return ApiResponse.success(platformGroupService.getAllPlatformGroup(platformDataDTO,getLoginUser(token)));
    }
    @ApiOperation("获取月台任务信息")
    @GetMapping("/getPlatformWorkData")
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java
@@ -75,7 +75,19 @@
    @GetMapping("/updateTotalNum")
    @CloudRequiredPermission("business:platformjob:update")
    public ApiResponse updateTotalNum(@RequestParam String ids,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
        wmsService.computjobTotalNum(this.getIdList(ids));
        List<Integer>  idList =this.getIdList(ids);
        if(idList == null || idList.size()==0){
            idList = new ArrayList<>();
            PlatformJob param = new PlatformJob();
            param.setIsdeleted(Constants.ZERO);
            param.setOrigin(Constants.ONE);
            List<PlatformJob> list= platformJobService.findList(param);
            for(PlatformJob j :list){
                idList.add(j.getId());
            }
        }
        wmsService.computjobTotalNum(idList);
        return ApiResponse.success(null);
    }
server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatConstants.java
@@ -30,6 +30,8 @@
        String visitAuditSuccess = "visitAuditSuccess";
        //  审批驳回给申请人:申请已被驳回
        String visitAuditFail = "visitAuditFail";
        //方可申请下发失败
        String visitApplyHkFail = "visitApplyHkFail";
        // 给审批人:申请待您审批
        String visitWaitAudit = "visitWaitAudit";
    }
server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/response/CarEventDTO.java
@@ -82,7 +82,6 @@
    private String personPhone;
    @ApiModelProperty(value = "人员类型")
    @ExcelColumn(name="人员类型",index = 6,width = 10,valueMapping = "0=劳务访客;1=普通访客;2=内部人员;")
    private Integer personType;
    @ApiModelProperty(value = "人员身份证号")
@@ -96,7 +95,8 @@
    private String visitCompanyName;
    @ApiModelProperty(value = "组织类型:0=相关方;1=内部")
    private String companyType;
    @ExcelColumn(name="人员类型",index = 6,width = 10,valueMapping = "0=相关方组织;1=内部人员;2=访客;")
    private Integer companyType;
    @ApiModelProperty(value = "车辆类型 0内部车辆 1相关方车辆 2访客车辆 3内运物流车 4外协车辆 5市公司卸货车 ")
    private String carType;
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDanger.java
@@ -58,7 +58,7 @@
    private Integer areaId;
    @ApiModelProperty(value = "状态 0待处理 1已处理 2不处理", example = "1")
    @ExcelColumn(name="处理结果" ,valueMapping ="0=0待处理;1=已处理;2=不处理;",index = 5,width = 6)
    @ExcelColumn(name="处理结果" ,valueMapping ="0=0待处理;1=已处理;2=不处理;",index = 6,width = 6)
    private Integer status;
    @ApiModelProperty(value = "申请处理人编码(关联member)", example = "1")
@@ -70,7 +70,7 @@
    private Integer cateId;
    @ApiModelProperty(value = "情况说明")
//    @ExcelColumn(name="情况说明")
    @ExcelColumn(name="问题描述",index = 3,width = 20)
    private String content;
    @ApiModelProperty(value = "提报人编码(关联member)", example = "1")
@@ -95,17 +95,18 @@
    @ApiModelProperty(value = "申请人姓名", example = "1")
    @TableField(exist = false)
    @ExcelColumn(name="提报人姓名",index =3,width = 6)
    @ExcelColumn(name="提报人姓名",index =4,width = 6)
    private String memberName;
    @ApiModelProperty(value = "申请人所属组织名称", example = "1")
    @TableField(exist = false)
    @ExcelColumn(name="所属组织",index = 4)
    @ExcelColumn(name="所属组织",index = 5,width = 15)
    private String companyName;
    @ApiModelProperty(value = "责任部门名称", example = "1")
    @TableField(exist = false)
    @ExcelColumn(name="责任部门名称",index = 0,width = 10)
    private String dutyCompanyName;
    @ApiModelProperty(value = "申请人手机号", example = "1")
    @TableField(exist = false)
//    @ExcelColumn(name="申请人手机号")
    private String memberPhone;
@@ -144,12 +145,12 @@
    @ApiModelProperty(value = "提报时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelColumn(name="提报时间",index = 6,dateFormat = "yyyy-MM-dd HH:mm:ss",width = 18)
    @ExcelColumn(name="提报时间",index = 7,dateFormat = "yyyy-MM-dd HH:mm:ss",width = 18)
    private Date submitTime;
    @ApiModelProperty(value = "处理时间(整改/退回使用)")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelColumn(name="处理时间",index = 7 ,dateFormat = "yyyy-MM-dd HH:mm:ss",width = 18)
    @ExcelColumn(name="处理时间",index = 8 ,dateFormat = "yyyy-MM-dd HH:mm:ss",width = 18)
    private Date dealTime;
    @ApiModelProperty(value = "附件信息")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java
@@ -425,6 +425,7 @@
    private Integer worktimeOutAlarmTime;
    public void dealTime(){
        if(Constants.equalsInteger(this.getStatus(),Constants.PlatformJobStatus.WAIT_CONFIRM.getKey())
                || Constants.equalsInteger(this.getStatus(),Constants.PlatformJobStatus.WART_SIGN_IN.getKey()) ){
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CarEventVo.java
@@ -14,7 +14,7 @@
    private String plateNos;
    @ApiModelProperty(value = "人员类型")
    @ExcelColumn(name="归属用户类型")
    @ExcelColumn(name="人员类型")
    private String typeName;
    @ApiModelProperty(value = "姓名")
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java
@@ -152,4 +152,5 @@
     * 即将超时通知
     */
    void syncTimeOutData();
    void visitNoCheckCancel();
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarEventServiceImpl.java
@@ -286,16 +286,16 @@
            carEventExcel.getRecords().stream().forEach(obj->{
                CarEventVo vo = new CarEventVo();
                vo.setEventTypeName(HKConstants.EventTypes.getName(obj.getEventType())) ;
                if(null != obj.getPersonType()) {
                    if(Constants.ZERO == obj.getPersonType()){
                        vo.setTypeName(Constants.Status.LW_FK.getDes());
                    }else if(Constants.ONE == obj.getPersonType()) {
                        vo.setTypeName(Constants.Status.PT_FK.getDes());
                    }else {
                        vo.setTypeName(Constants.Status.NB_FK.getDes());
                if(obj.getCompanyType() == null){
                    obj.setCompanyType(Constants.THREE);
                }
                vo.setTypeName(Constants.Status.COMPANY_TYPE_FK.getDes());
                if(null != obj.getCompanyType()) {
                    if(Constants.ZERO == obj.getCompanyType()){
                        vo.setTypeName(Constants.Status.COMPANY_TYPE_REL.getDes());
                    }else if(Constants.ONE == obj.getCompanyType()) {
                        vo.setTypeName(Constants.Status.COMPANY_TYPE_INTERNAL.getDes());
                    }
                }else {
                    vo.setTypeName("");
                }
                vo.setPlateNos(obj.getPlateNos());
                vo.setPersonName(obj.getPersonName());
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java
@@ -131,24 +131,25 @@
        }
        Date date = new Date();
        //删除已授权下发的包期授权
        dealCancelBookBiz(car.getCode(),date);
        Cars model = new Cars();
        model.setEditDate(date);
        model.setEdirot(user.getId());
        model.setId(id);
        model.setIsdeleted(Constants.ONE);
        dealCancelBookBiz(car.getCode(),date,parkBookJoinMapper);
//        Cars model = new Cars();
//        model.setEditDate(date);
//        model.setEdirot(user.getId());
//        model.setId(id);
//        model.setIsdeleted(Constants.ONE);
        carsMapper.update(null,new UpdateWrapper<Cars>().lambda()
                .eq(Cars::getId,model.getId())
                .eq(Cars::getId,id)
                .set(Cars::getStartTime,null)
                .set(Cars::getEndTime,null)
                .set(Cars::getAuthTimeType,null)
                .set(Cars::getAuthStatus,Constants.ZERO)
                .set(Cars::getIsdeleted,Constants.ONE)
                .set(Cars::getEditDate,model.getEditDate())
                .set(Cars::getEdirot,model.getEdirot())
                .set(Cars::getEditDate,date)
                .set(Cars::getEdirot,user.getId())
        );
        carsMapper.updateById(model);
//        carsMapper.updateById(model);
    }
    public   boolean  dealCancelBookBiz(String code,Date date){
    public static    boolean  dealCancelBookBiz(String code,Date date,ParkBookMapper parkBookJoinMapper){
        List<ParkBook> parkBooks = parkBookJoinMapper.selectJoinList(ParkBook.class,new MPJLambdaWrapper<ParkBook>()
                .selectAll(ParkBook.class )
@@ -310,7 +311,7 @@
        model.setHkStatus(Constants.ZERO);
        model.setRemark("");
        model.setAuthStatus(Constants.ZERO);
        dealCancelBookBiz(car.getCode(),model.getEditDate());
        dealCancelBookBiz(car.getCode(),model.getEditDate(),parkBookJoinMapper);
        carsMapper.update(null,new UpdateWrapper<Cars>().lambda()
                .eq(Cars::getId,model.getId())
                .set(Cars::getAuthStatus,Constants.ZERO)
@@ -321,6 +322,7 @@
                .set(Cars::getEditDate,model.getEditDate())
                .set(Cars::getEdirot,model.getEdirot())
                .set(Cars::getMemberId,model.getMemberId())
                .set(Cars::getAuthTimeType,null)
                .set(Cars::getStartTime,null)
                .set(Cars::getEndTime,null)
        );
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerParamServiceImpl.java
@@ -44,13 +44,13 @@
        if(loginUserInfo == null){
            loginUserInfo = model.getLoginUserInfo();
        }
        if(hiddenDangerParamMapper.selectCount(new QueryWrapper<HiddenDangerParam>().lambda()
      /*  if(hiddenDangerParamMapper.selectCount(new QueryWrapper<HiddenDangerParam>().lambda()
                .eq(HiddenDangerParam::getType,model.getType())
                .eq(HiddenDangerParam::getName,model.getName())
                .eq(HiddenDangerParam::getIsdeleted,Constants.ZERO)
        )>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该名称已存在!");
        }
        }*/
        if(Constants.equalsInteger(model.getType(),Constants.ZERO)){
            //如果是区域配置
            if(model.getCompanyId() == null){
@@ -130,14 +130,14 @@
        if(hiddenDangerParam == null || Constants.equalsInteger(hiddenDangerParam.getIsdeleted(),Constants.ONE)){
            throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该配置信息不存在,请返回刷新页面重试!");
        }
        if(hiddenDangerParamMapper.selectCount(new QueryWrapper<HiddenDangerParam>().lambda()
    /*    if(hiddenDangerParamMapper.selectCount(new QueryWrapper<HiddenDangerParam>().lambda()
                .eq(HiddenDangerParam::getType,model.getType())
                .eq(HiddenDangerParam::getName,model.getName())
                .eq(HiddenDangerParam::getIsdeleted,Constants.ZERO)
                .ne(HiddenDangerParam::getId,model.getId())
        )>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该名称已存在!");
        }
        }*/
        if(Constants.equalsInteger(hiddenDangerParam.getType(),Constants.ZERO)){
            //如果是区域配置,校验安全员信息是否正确
            if(model.getCompanyId() == null){
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
@@ -434,7 +434,10 @@
        if(userInfo!=null && userInfo.getCompanyIdList()!=null){
            if(  userInfo.getCompanyIdList().size() ==0){
                //只能看自己
                queryWrapper.eq(HiddenDanger::getCreator,userInfo.getId());
                queryWrapper.and(w->{
                    w.eq(HiddenDanger::getCreator,userInfo.getId()).or().
                    eq(HiddenDanger::getCheckUserId,userInfo.getId());
                });
            }else{
                queryWrapper.in("t1.company_id" ,userInfo.getCompanyIdList());
            }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -126,6 +126,10 @@
    private TmsService tmsService;
    @Autowired
    private SystemUserMapper systemUserMapper;
    @Autowired
    private CarsMapper carsMapper;
    @Autowired
    private ParkBookMapper parkBookMapper;
    @Autowired
    @Lazy
@@ -579,11 +583,13 @@
    @Override
    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
    public void deleteById(Integer id,LoginUserInfo loginUserInfo) {
        Date date =new Date();
        Member member=new Member();
        member.setId(id);
        member.setIsdeleted(Constants.ONE);
        member.setEditor(loginUserInfo.getId());
        member.setEditDate(new Date());
        member.setEditDate(date);
        member.setHkStatus(Constants.ZERO);
        member.setRemark("人员已删除,等待删除门禁权限");
        memberMapper.updateById(member);
@@ -597,8 +603,30 @@
                .set(SystemUser::getUpdateUser,member.getEditor())
                .set(SystemUser::getUpdateTime,member.getEditDate())
        );
        saveUserActionBiz(member,loginUserInfo,Constants.UserActionType.DELETE,userActionJoinMapper,JSONObject.toJSONString(member));
        List<Cars> carsList = carsMapper.selectList(new QueryWrapper<Cars>().lambda()
                .eq(Cars::getMemberId,member.getId())
                .eq(Cars::getIsdeleted,Constants.ONE)
                .eq(Cars::getAuthStatus,Constants.ONE)//已授权包期的车辆
        );
        if ((carsMapper!=null && carsList.size()>0)){
            for(Cars car :carsList){
               if(Constants.equalsInteger(car.getAuthStatus(),Constants.ZERO)){
                   Cars model = new Cars();
                   carsMapper.update(null,new UpdateWrapper<Cars>().lambda()
                           .eq(Cars::getId,car.getId())
                           .set(Cars::getStartTime,null)
                           .set(Cars::getEndTime,null)
                           .set(Cars::getAuthTimeType,null)
                           .set(Cars::getAuthStatus,Constants.ZERO)
                           .set(Cars::getEditDate,model.getEditDate())
                           .set(Cars::getEdirot,model.getEdirot())
                   );
                   //删除已授权下发的包期授权
                   CarsServiceImpl.dealCancelBookBiz(car.getCode(),date,parkBookMapper);
               }
            }
        }
    }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformEventServiceImpl.java
@@ -222,6 +222,9 @@
            String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
                    systemDictDataBiz.queryByCode(Constants.FTP,Constants.PLATFORM_EVENT_IMG).getCode();
            for(PlatformEvent model : result.getRecords()){
                if(StringUtils.isNotBlank(model.getPlateNo())){
                    model.setPlateNo(model.getPlateNo().replace("蓝", "").replace("黄", ""));
                }
                if(StringUtils.isNotBlank(model.getBackgroundImageDown())){
                    model.setBackgroundImageDown(prefixUrl + model.getBackgroundImageDown());
                }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java
@@ -297,6 +297,11 @@
                    || Constants.equalsInteger(i.getPlatformGroupId(),platform.getGroupId())
            ).collect(Collectors.toList());
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformJobs)){
                for(PlatformJob i :platformJobList){
                    if(Constants.equalsInteger(i.getOrigin(),Constants.ZERO)){
                        i.setWmsContractNum(i.getContractNum());
                    }
                }
                platformWorkVO.setWorkNum(
                        platformJobs.stream().filter(i->Constants.equalsInteger(i.getPlatformId(),platform.getId())  && Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())).collect(Collectors.toList()).size()
                );
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
@@ -1,6 +1,7 @@
package com.doumee.service.business.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
@@ -365,7 +366,8 @@
                .selectAs(Platform::getName,PlatformJob::getPlatformName)
                .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
                .selectAs(PlatformWmsJob::getCarrierName,PlatformJob::getCarrierName)
                .select(" case when t.total_num is null  then ( select sum(pwd.IO_QTY) from platform_wms_detail pwd where pwd.JOB_ID = t.id  ) else t.total_num end ioQty ")
                .select(" (select GROUP_CONCAT(distinct(tt.contract_num ))  from platform_wms_detail tt where tt.isdeleted=0 and tt.contract_num is not null   and  tt.job_id=t.id )as wmsContractNum")
//                .select(" case when t.total_num is null  then ( select sum(pwd.IO_QTY) from platform_wms_detail pwd where pwd.JOB_ID = t.id  ) else t.total_num end ioQty ")
                .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                .leftJoin(PlatformWmsJob.class,PlatformWmsJob::getCarryBillCode,PlatformJob::getBillCode)
                .leftJoin(PlatformBooks.class,PlatformBooks::getJobId,PlatformJob::getId)
@@ -402,7 +404,10 @@
        IPage<PlatformJob> platformJobIPage = platformJobJoinMapper.selectJoinPage(page,PlatformJob.class,queryWrapper);
        platformJobIPage.getRecords().forEach(i->{
            i.dealTime();
            i.setTotalNum(i.getIoQty());
            if(Constants.equalsInteger(i.getOrigin(),Constants.ZERO)){
                i.setWmsContractNum(i.getContractNum());
            }
//            i.setTotalNum(i.getIoQty());
//            this.getWmsJobData(i);
//            this.queryWaitNum(i);
        });
@@ -1913,6 +1918,7 @@
                .select(" ( select pl.CREATE_DATE from platform_log pl where t.id = pl.obj_id and pl.OBJ_TYPE = "+Constants.PlatformJobLogType.WORKING.getKey()+" order by pl.CREATE_DATE desc  limit 1  ) as newStartDate  ")
                .select(" ( select pl.CREATE_DATE from platform_log pl where t.id = pl.obj_id and pl.OBJ_TYPE = "+Constants.PlatformJobLogType.CALLED.getKey()+" order by pl.CREATE_DATE desc  limit 1  ) as newCallDate  ")
                .select(" case when t.total_num is null  then ( select sum(pwd.IO_QTY) from platform_wms_detail pwd where pwd.JOB_ID = t.id  ) else t.total_num end ioQty ")
                .select(" (select GROUP_CONCAT(distinct(tt.contract_num )) from platform_wms_detail tt where tt.isdeleted=0 and tt.contract_num is not null  and  tt.job_id=t.id )as wmsContractNum")
                .selectAs(Platform::getName,PlatformJob::getPlatformName)
                .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
                .selectAs(PlatformWmsJob::getCarrierName,PlatformJob::getCarrierName)
@@ -1959,16 +1965,16 @@
        );
        //查询今日完成任务
        platformOrderNumByDateResponse.setDoneNum(
                platformJobMapper.selectCount(new QueryWrapper<PlatformJob>().lambda()
                platformJobMapper.selectCount(new MPJLambdaWrapper<PlatformJob>()
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .like(PlatformJob::getDoneDate,queryDateStr)
                        .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey())
                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey()
                                ,Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()
                                ,Constants.PlatformJobStatus.LEAVED.getKey())
                )
        );
        return platformOrderNumByDateResponse;
    }
    @Override
    public List<PlatformDataListResponse> platformWorkingDataList(PlatformDataListRequest param){
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWarnEventServiceImpl.java
@@ -107,6 +107,7 @@
                        .selectAs(Platform::getName,PlatformWarnEvent::getPlatformName)
                        .selectAs(Platform::getHkId,PlatformWarnEvent::getPlatfromHkId)
                        .leftJoin(Platform.class,Platform::getId,PlatformWarnEvent::getPlatformId)
                        .orderByDesc(PlatformWarnEvent::getCreateDate)
                        .last(" limit 20 ")
        );
        List<PlatformWarnEventListResponse> list = new ArrayList<PlatformWarnEventListResponse>();
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWmsJobServiceImpl.java
@@ -108,7 +108,7 @@
            List<WmsJobContractVO> wmsJobContractVOList = new ArrayList<>();
            for (String ioCode:ioCodeSet) {
                if(StringUtils.isBlank(ioCode)){
                    continue;
//                    continue;
                }
                WmsJobContractVO wmsJobContractVO = new WmsJobContractVO();
                wmsJobContractVO.setContractCode(ioCode);
@@ -122,7 +122,7 @@
                        com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(wmsJobContractVO.getPlatformWmsDetailList())){
                    if(Constants.equalsInteger(platformWmsJob.getType(),Constants.ONE)){
                        if(Objects.isNull(wmsJobContractVO.getPlatformWmsDetailList().get(Constants.ZERO).getLockStatus())){
                            wmsJobContractVO.setLockStatus(Constants.ZERO
                                     wmsJobContractVO.setLockStatus(Constants.ZERO
                            );
                        }else{
                            wmsJobContractVO.setLockStatus(
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/RetentionServiceImpl.java
@@ -266,16 +266,13 @@
            for (Retention obj:retentionInfo.getRecords()) {
                RetentionVo vo = new RetentionVo();
                vo.setCompanyName(obj.getCompanyName());
                vo.setTypeName(Constants.Status.COMPANY_TYPE_FK.getDes());
                if(null != obj.getType()) {
                    if(Constants.ZERO == obj.getType()){
                        vo.setTypeName(Constants.Status.LW_FK.getDes());
                    }else if(Constants.ONE == obj.getType()) {
                        vo.setTypeName(Constants.Status.PT_FK.getDes());
                    }else {
                        vo.setTypeName(Constants.Status.NB_FK.getDes());
                    if(Constants.ZERO == obj.getCompanyType()){
                        vo.setTypeName(Constants.Status.COMPANY_TYPE_REL.getDes());
                    }else if(Constants.ONE == obj.getCompanyType()) {
                        vo.setTypeName(Constants.Status.COMPANY_TYPE_INTERNAL.getDes());
                    }
                }else {
                    vo.setTypeName("");
                }
                vo.setName(obj.getName());
                vo.setPhone(obj.getPhone());
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -1882,6 +1882,25 @@
    }
    @Override
    public void visitNoCheckCancel(){
        List<Visits> visitsList = visitsMapper.selectList(new QueryWrapper<Visits>().lambda()
                .eq(Visits::getIsdeleted,Constants.ONE)
                .eq(Visits::getStatus,Constants.VisitStatus.waitCheck)
                .apply(" now() >=  ENDTIME ")
        );
        if(visitsList!=null){
            Date date =new Date();
            for(Visits s :visitsList){
                    visitsMapper.update(null,new UpdateWrapper<Visits>().lambda()
                            .set(Visits::getIsdeleted,Constants.VisitStatus.cancel)
                            .set(Visits::getEditDate,date)
                            .set(Visits::getRemark,"预约截止时间已过未审批,系统自动取消")
                            .eq(Visits::getId,s.getId()));
             }
        }
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -25,9 +25,13 @@
import com.doumee.dao.business.model.Member;
import com.doumee.dao.web.reqeust.SavePlatformWarnEventDTO;
import com.doumee.service.business.impl.PlatformWarnEventServiceImpl;
import com.doumee.service.business.third.TmsService;
import com.doumee.service.business.third.model.request.TmsOrderInfoRequest;
import com.doumee.service.business.third.model.response.TmsOrderInfoResponse;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.checkerframework.checker.units.qual.C;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -80,6 +84,8 @@
    private PlatformBroadcastLogMapper platformBroadcastLogMapper;
    @Autowired
    private PlatformJobMapper platformJobMapper;
    @Autowired
    private TmsService tmsService;
    @Autowired
    private PlatformWmsDetailMapper platformWmsDetailMapper;
    @Autowired
@@ -901,7 +907,7 @@
                                    Constants.PlatformJobStatus.TRANSFERING.getKey(),
                                    Constants.PlatformJobStatus.EXCEPTION.getKey()
                            )
                    )==Constants.ZERO){
                    )==Constants.ZERO){//如果没进行中任务
                        PlatformJob platformJob = platformJobMapper.selectOne(new QueryWrapper<PlatformJob>().lambda()
                                .eq(PlatformJob::getCarCodeFront,event.getPlateNos())
                                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
@@ -913,18 +919,14 @@
                                .last(" limit 1")
                        );
                        if(Objects.nonNull(platformJob)){
                            platformJob.setStatus(Constants.PlatformJobStatus.WAIT_CALL.getKey());
                            platformJob.setArriveDate(new Date());
                            platformJob.setSingType(Constants.TWO);
                            platformJob.setSignDate(new Date());
                            List<PlatformJob> signList = platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda().apply(" DATE(SIGN_DATE) = DATE(NOW()) and sign_date is not null  "));
                            if(CollectionUtils.isEmpty(signList)){
                                platformJob.setSignNum(Constants.ONE);
                            } else{
                                int maxNumber = Collections.max(signList.stream().map(i->i.getSignNum()).collect(Collectors.toList()));
                                platformJob.setSignNum(maxNumber + Constants.ONE);
                            if(Constants.equalsInteger(platformJob.getType(),Constants.ONE)){
                                //如果是自有车装货自动签到
                                jobAutoSignBiz(platformJob);
                            }else  if(Constants.equalsInteger(platformJob.getType(),Constants.ZERO)){
                                //如果是自有车卸货 查询TMS合同状态,决定是否自动签到
                                checkTmsContractStatusBiz(platformJob);
                            }
                            platformJobMapper.updateById(platformJob);
                        }
                    }
                };
@@ -956,6 +958,48 @@
        return event;
    }
    /**
     * ;如果是卸货任务,需要通过TMS提供的“2.2合同列表接口”接口查询车辆对应的合同状态是否为在途状态(对应orderStatus值为3/4/5/6),
     * 如果是自动签到,否则不自动签到;如果一个车辆对应多个合同号,则取运单下任一合同查询对应在途信息
     * @param platformJob
     */
    private void checkTmsContractStatusBiz(PlatformJob platformJob) {
        PlatformWmsDetail detail = platformWmsDetailMapper.selectOne(new QueryWrapper<PlatformWmsDetail>().lambda()
                .eq(PlatformWmsDetail::getIsdeleted, Constants.ZERO)
                .eq(PlatformWmsDetail::getJobId, platformJob.getId())
                .isNotNull(PlatformWmsDetail::getContractNum)
                .last("limit 1")
        );
        if(detail!=null && StringUtils.isNotBlank(detail.getContractNum())){
            TmsOrderInfoRequest param = new TmsOrderInfoRequest();
            param.setContractNumber(detail.getContractNum());
            TmsOrderInfoResponse response = tmsService.orderInfo(param);
            if(response!=null &&( StringUtils.equals(response.getOrderStatus(),"3")  )
                ||StringUtils.equals(response.getOrderStatus(),"4")
                ||StringUtils.equals(response.getOrderStatus(),"5")
                ||StringUtils.equals(response.getOrderStatus(),"6")){
                //如果合同在途,则自动签到
                jobAutoSignBiz(platformJob);
            }
        }
    }
    private void jobAutoSignBiz(PlatformJob platformJob) {
        platformJob.setStatus(Constants.PlatformJobStatus.WAIT_CALL.getKey());
        platformJob.setArriveDate(new Date());
        platformJob.setSingType(Constants.TWO);
        platformJob.setSignDate(new Date());
        List<PlatformJob> signList = platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda().apply(" DATE(SIGN_DATE) = DATE(NOW()) and sign_date is not null  "));
        if(CollectionUtils.isEmpty(signList)){
            platformJob.setSignNum(Constants.ONE);
        } else{
            int maxNumber = Collections.max(signList.stream().map(i->i.getSignNum()).collect(Collectors.toList()));
            platformJob.setSignNum(maxNumber + Constants.ONE);
        }
        platformJobMapper.updateById(platformJob);
    }
    private Retention getRetentionModelByParkRequest(EventParkInfoRequest request,CarEvent event) {
        Retention retention = new Retention();
        retention.setIsdeleted(Constants.ZERO);
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
@@ -14,9 +14,11 @@
import com.doumee.core.utils.DESUtil;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.ImageBase64Util;
import com.doumee.core.wx.wxPlat.WxPlatConstants;
import com.doumee.core.wx.wxPlat.WxPlatNotice;
import com.doumee.dao.business.DeviceRoleMapper;
import com.doumee.dao.business.RetentionMapper;
import com.doumee.dao.business.WxNoticeConfigMapper;
import com.doumee.dao.business.join.VisitsJoinMapper;
import com.doumee.dao.business.model.DeviceRole;
import com.doumee.dao.business.model.Member;
@@ -40,14 +42,19 @@
public class HkSyncVisitServiceImpl extends HkSyncBaseServiceImpl {
    @Autowired
    private VisitsJoinMapper visitsMapper;
    @Autowired
    private WxPlatNotice wxPlatNotice;
    @Autowired
    private WxNoticeConfigMapper wxNoticeConfigMapper;
    @Autowired
    private RetentionMapper retentionMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private DeviceRoleMapper deviceRoleMapper;
    @Autowired
    private WxPlatNotice wxPlatNotice;
    /**
     * 同步海康访客信息是否已签离状态
     */
@@ -312,6 +319,14 @@
//                getUpdateModelByResponse(c,date,roleList,path);
                getUpdateModelByResponseIccm(c,date,roleList,path);
                visitsMapper.updateById(c);
                //给申请人发送微信公众号 下发权限失败
                if(StringUtils.isNotBlank(c.getOpenid()) && Constants.equalsInteger(c.getStatus(),Constants.VisitStatus.xfFail)){
                    wxPlatNotice.sendVisitTemplateNotice(systemDictDataBiz,
                            wxNoticeConfigMapper,c, WxPlatConstants.visitContent.visitApplyHkFail,
                            systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(),
                            Arrays.asList(c.getOpenid().split(","))
                    );
                }
            }
        }catch (Exception e){
            e.printStackTrace();
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java
@@ -310,8 +310,8 @@
            if(details.size()>0){
                platformWmsDetailMapper.insert(details);
            }
            list.setJobIdList(jobIdList);
            if(jobList.size()>0){
                list.setJobIdList(jobIdList);
                startEndNoticeToDriver(jobList);
            }
        }catch (Exception e){
@@ -495,7 +495,6 @@
                    job.setContractNum(param.getContractNum());
                    job.setDriverPhone(param.getDriverPhone());
                    job.setDriverName(param.getDriverName());
//                    job.setOrigin(Constants.ONE);
                    platformWmsJobMapper.insert(job);
                }
                jobIdList.add(job.getId());
@@ -532,8 +531,8 @@
            if(details.size()>0){
                platformWmsDetailMapper.insert(details);
            }
            list.setJobIdList(jobIdList);
            if(jobList.size()>0){
                list.setJobIdList(jobIdList);
                startEndNoticeToDriver(jobList);
            }
        }catch (Exception e){
@@ -723,14 +722,14 @@
                    .eq(PlatformWmsDetail::getIsdeleted, Constants.ZERO));
            if(details!=null && details.size()>0){
                for(PlatformWmsDetail d :details){
                   num.add(Constants.formatBigdecimal(d.getIoQty()));
                    num =  num.add(Constants.formatBigdecimal(d.getIoQty()));
                }
                platformJobMapper.update(null,new UpdateWrapper<PlatformJob>().lambda()
                        .set(PlatformJob::getTotalNum,num)
                        .eq(PlatformJob::getOrigin, Constants.ZERO)
                        .eq(PlatformJob::getId, jobId));
            }
            }
            platformJobMapper.update(null,new UpdateWrapper<PlatformJob>().lambda()
                    .set(PlatformJob::getTotalNum,num)
                    .eq(PlatformJob::getOrigin, Constants.ONE)
                    .eq(PlatformJob::getId, jobId));
        }
    }
    /**