liukangdong
2024-08-27 8bf846c4c3870d64a33cebc1c168421235af7707
Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmvisit
已添加14个文件
已修改40个文件
2188 ■■■■■ 文件已修改
admin/src/api/business/visits.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/platform/platformWaterGas.js 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaPlatformGasWindow.vue 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaPlatformOilWindow.vue 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaPlatformWaterWindow.vue 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/visits.vue 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/platform/gas.vue 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/platform/oil.vue 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/platform/platform.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/platform/water.vue 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/vehicle/cars.vue 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/db/business.platform_water_gas.permissions.sql 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/api/BaseController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/model/LoginUserInfo.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/Constants.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/service/system/SystemLoginService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformWaterGasController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitsController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformWaterGasCloudController.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/VisitsCloudController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/DriverPlatformController.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/PdaPlatformController.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java 148 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformWaterGasMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitsMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/ApproveDTO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Approve.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/ApproveTempl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformBooks.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWaterGas.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/PlatformBooksApplyDTO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/DriverHomeVO.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformWaterGasService.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InterfaceLogServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java 205 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformReasonServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWaterGasServiceImpl.java 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitReasonServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncLoginAuthServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/visits.js
@@ -61,3 +61,6 @@
export const createVisit = (data) => {
  return request.post('/visitsAdmin/cloudService/business/visits/createVisit', data)
}
export function visitResend (visitId) {
  return request.get(`/visitsAdmin/cloudService/business/visits/visitResend?visitId=${visitId}`)
}
admin/src/api/platform/platformWaterGas.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/visitsAdmin/cloudService/business/platformWaterGas/page', data, {
    trim: true
  })
}
export function allList (data) {
  return request.post('/visitsAdmin/cloudService/business/platformWaterGas/list', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/visitsAdmin/cloudService/business/platformWaterGas/exportExcel', data, {
    trim: true,
    download: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/visitsAdmin/cloudService/business/platformWaterGas/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/visitsAdmin/cloudService/business/platformWaterGas/updateById', data)
}
export function updateStatusById (data) {
  return request.post('/visitsAdmin/cloudService/business/platformWaterGas/updateStatusById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/visitsAdmin/cloudService/business/platformWaterGas/delete/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/visitsAdmin/cloudService/business/platformWaterGas/delete/batch', {
    params: {
      ids
    }
  })
}
admin/src/components/business/OperaPlatformGasWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,92 @@
<template>
  <GlobalWindow
    :title="title"
    width="50%"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="月份" prop="timeInfo">
        <el-date-picker
            v-model="form.timeInfo"
            format="yyyy-MM"
            value-format="yyyy-MM-dd HH:mm:ss"
            type="month"
        />
      </el-form-item>
      <el-form-item label="用气量(立方米):" prop="num" >
        <el-input type="number" v-model="form.num" placeholder="请输入用气量(立方米)" v-trim/>
      </el-form-item>
      <el-form-item label="说明:" prop="content">
        <el-input type="textarea"  v-model="form.content" placeholder="请输入说明" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import { allList } from '@/api/platform/platformGroup'
export default {
  name: 'OperaPlatformReasonWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      groupList: [],
      form: {
        id: null,
        content: null,
        num: null,
        timeInfo: '',
        type: 1
      },
      // éªŒè¯è§„则
      rules: {
        timeInfo: [{ required: true, message: '请输选择月份 ', trigger: 'blur' }],
        num: [{ required: true, message: '请输入用气量(吨) ', trigger: 'blur' }]
      }
    }
  },
  created () {
    this.config({
      api: '/platform/platformWaterGas',
      'field.id': 'id'
    })
  },
  methods: {
    /**
     * æ‰“开窗口
     * @title çª—口标题
     * @target ç¼–辑的对象
     */
    open (title, target) {
      this.title = title
      this.visible = true
      // æ–°å»º
      if (target == null) {
        this.$nextTick(() => {
          this.$refs.form.resetFields()
          this.form[this.configData['field.id']] = null
        })
        return
      }
      // ç¼–辑
      this.$nextTick(() => {
        for (const key in this.form) {
          this.form[key] = target[key]
        }
      })
    }
  }
}
</script>
<style scoped>
.labelTip{
  font-size: 12px;
  color: #666666;
}
</style>
admin/src/components/business/OperaPlatformOilWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
<template>
  <GlobalWindow
    :title="title"
    width="50%"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="车牌号:" prop="carCode" >
        <el-input type="text" v-model="form.carCode" placeholder="请输入车牌号" v-trim/>
      </el-form-item>
      <el-form-item label="月份" prop="timeInfo">
        <el-date-picker
            v-model="form.timeInfo"
            format="yyyy-MM"
            placeholder="请选择年月"
            value-format="yyyy-MM-dd HH:mm:ss"
            type="month"
        />
      </el-form-item>
      <el-form-item label="油耗(升):" prop="num" >
        <el-input type="number" v-model="form.num" placeholder="请输入油耗(升)" v-trim/>
      </el-form-item>
      <el-form-item label="说明:" prop="content">
        <el-input type="textarea"  v-model="form.content" placeholder="请输入说明" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import { allList } from '@/api/platform/platformGroup'
export default {
  name: 'OperaPlatformReasonWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      groupList: [],
      form: {
        id: null,
        carCode:null,
        content: null,
        num: null,
        timeInfo: '',
        type: 2
      },
      // éªŒè¯è§„则
      rules: {
        carCode: [{ required: true, message: '请输入车牌号 ', trigger: 'blur' }],
        timeInfo: [{ required: true, message: '请输选择月份 ', trigger: 'blur' }],
        num: [{ required: true, message: '请输入油耗(升) ', trigger: 'blur' }]
      }
    }
  },
  created () {
    this.config({
      api: '/platform/platformWaterGas',
      'field.id': 'id'
    })
  },
  methods: {
    /**
     * æ‰“开窗口
     * @title çª—口标题
     * @target ç¼–辑的对象
     */
    open (title, target) {
      this.title = title
      this.visible = true
      // æ–°å»º
      if (target == null) {
        this.$nextTick(() => {
          this.$refs.form.resetFields()
          this.form[this.configData['field.id']] = null
        })
        return
      }
      // ç¼–辑
      this.$nextTick(() => {
        for (const key in this.form) {
          this.form[key] = target[key]
        }
      })
    }
  }
}
</script>
<style scoped>
.labelTip{
  font-size: 12px;
  color: #666666;
}
</style>
admin/src/components/business/OperaPlatformWaterWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,92 @@
<template>
  <GlobalWindow
    :title="title"
    width="50%"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="月份" prop="timeInfo">
        <el-date-picker
            v-model="form.timeInfo"
            format="yyyy-MM"
            value-format="yyyy-MM-dd HH:mm:ss"
            type="month"
        />
      </el-form-item>
      <el-form-item label="用水量(吨):" prop="num" >
        <el-input type="number" v-model="form.num" placeholder="请输入用水量(吨)" v-trim/>
      </el-form-item>
      <el-form-item label="说明:" prop="content">
        <el-input type="textarea"  v-model="form.content" placeholder="请输入说明" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import { allList } from '@/api/platform/platformGroup'
export default {
  name: 'OperaPlatformReasonWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      groupList: [],
      form: {
        id: null,
        content: null,
        num: null,
        timeInfo: '',
        type:0
      },
      // éªŒè¯è§„则
      rules: {
        timeInfo: [{ required: true, message: '请输选择月份 ', trigger: 'blur' }],
        num: [{ required: true, message: '请输入用户量(吨) ', trigger: 'blur' }]
      }
    }
  },
  created () {
    this.config({
      api: '/platform/platformWaterGas',
      'field.id': 'id'
    })
  },
  methods: {
    /**
     * æ‰“开窗口
     * @title çª—口标题
     * @target ç¼–辑的对象
     */
    open (title, target) {
      this.title = title
      this.visible = true
      // æ–°å»º
      if (target == null) {
        this.$nextTick(() => {
          this.$refs.form.resetFields()
          this.form[this.configData['field.id']] = null
        })
        return
      }
      // ç¼–辑
      this.$nextTick(() => {
        for (const key in this.form) {
          this.form[key] = target[key]
        }
      })
    }
  }
}
</script>
<style scoped>
.labelTip{
  font-size: 12px;
  color: #666666;
}
</style>
admin/src/views/business/visits.vue
@@ -92,12 +92,13 @@
                <el-table-column
                    v-if="containPermissions(['business:visits:update', 'business:visits:delete'])"
                    label="操作"
                    min-width="100"
                    min-width="200"
                    fixed="right"
                >
                    <template slot-scope="{row}">
                      <el-button type="text" @click="departure(row.id)" v-permissions="['business:visits:level']" icon="el-icon-delete" style="color: red" v-if="row.status == 7">离厂</el-button>
                      <el-button type="text" @click="cancel(row.id)" v-permissions="['business:visits:cancel']" icon="el-icon-delete"   style="color: red" v-if="row.status == 5">取消预约</el-button>
                      <el-button type="text" @click="resend(row.id)" v-permissions="['business:visits:update']" icon="el-icon-edit"   v-if="row.status == 6">重新下发</el-button>
                        <!-- <el-button type="text" @click="$refs.OperaVisitsDesWindow.open('详情', row.id)" icon="el-icon-view">详情</el-button> -->
                        <el-button type="text" @click="handleDetail(row)" icon="el-icon-view">详情</el-button>
<!--                        <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:visits:delete']">查询审批结果</el-button>-->
@@ -177,7 +178,7 @@
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        level(id)
      level(id)
          .then(res => {
            this.page = 1
            this.getData()
@@ -192,7 +193,22 @@
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        visitCancel(id)
      visitCancel(id)
          .then(res => {
            this.page = 1
            this.getData()
          })
      }).catch(() => {
      })
    },
    resend (id) {
      this.$confirm('确定尝试重新洗发预约吗, æ˜¯å¦ç»§ç»­?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        this.api.visitResend(id)
          .then(res => {
            this.page = 1
            this.getData()
admin/src/views/platform/gas.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,116 @@
<template>
  <TableLayout :permissions="['business:platformwatergas:query']">
    <SearchFormCollapse slot="search-form" :need-more="false">
      <el-form ref="searchForm" :model="searchForm"  label-width="100px" inline >
          <el-form-item title="请选择年月时间" label="" prop="timeInfo" >
            <el-date-picker
                @change="search"
                v-model="searchForm.timeInfo"
                format="yyyy-MM"
                placeholder="请选择年月时间"
                value-format="yyyy-MM-dd HH:mm:ss"
                type="month"
            />
          </el-form-item>
        <section>
          <el-button type="primary" @click="search">搜索</el-button>
          <el-button @click="reset">重置</el-button>
        </section>
      </el-form>
    </SearchFormCollapse>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:platformwatergas:create','business:platformwatergas:delete','business:notice:exportExcel']">
        <li><el-button type="primary" @click="$refs.OperaPlatformGasWindow.open('新建用气')" icon="el-icon-plus" v-permissions="['business:platformwatergas:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:platformwatergas:delete']">删除</el-button></li>
        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:notice:exportExcel']" @click="exportExcel">导出</el-button>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="timeInfo" label="使用月份" fixed min-width="100px">
          <template slot-scope="{row}">
              {{(row.timeInfo || row.timeInfo.length >7 )?row.timeInfo.substr(0,7):'-'}}
          </template>
        </el-table-column>
        <el-table-column prop="num" label="用气量(立方米)" fixed min-width="150px"></el-table-column>
        <el-table-column prop="content" label="说明" min-width="120px"></el-table-column>
        <el-table-column prop="editDate" label="最近操作时间" min-width="140px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:platformwatergas:update', 'business:platformwatergas:delete'])"
          label="操作"
          align="center"
          min-width="150"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.OperaPlatformGasWindow.open('编辑用气', row)" icon="el-icon-edit" v-permissions="['business:platformwatergas:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:platformwatergas:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaPlatformGasWindow ref="OperaPlatformGasWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import SearchFormCollapse from '@/components/common/SearchFormCollapse'
import Pagination from '@/components/common/Pagination'
import OperaPlatformGasWindow from '@/components/business/OperaPlatformGasWindow'
import { allList } from '@/api/platform/platformGroup'
export default {
  name: 'Platform',
  extends: BaseTable,
  components: { SearchFormCollapse, TableLayout, Pagination, OperaPlatformGasWindow },
  data () {
    return {
      groupList: [],
      // æœç´¢
      working: false,
      working1: false,
      searchForm: {
        timeInfo: '',
        type: 1
      }
    }
  },
  created () {
    this.config({
      module: '用气信息表',
      api: '/platform/platformWaterGas',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
    this.loadGroupList()
  },
  methods: {
    loadGroupList () {
      allList({})
        .then(res => {
          this.groupList = res || []
        })
    },
    changeStatus (e, row) {
      this.api.updateStatusById({
        id: row.id,
        status: e
      })
    }
  }
}
</script>
admin/src/views/platform/oil.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,132 @@
<template>
  <TableLayout :permissions="['business:platformwatergas:query']">
    <SearchFormCollapse slot="search-form" :need-more="false">
      <el-form ref="searchForm" :model="searchForm"  label-width="100px" inline >
          <el-form-item title="请输入车牌号"  >
            <el-input v-model="searchForm.carCode" clearable placeholder="请输入车牌号" @keypress.enter.native="search"></el-input>
          </el-form-item>
          <el-form-item  label="使用时间:"  >
            <el-date-picker
                @change="search"
                v-model="searchForm.startTime"
                format="yyyy-MM"
                style="width: 140px"
                placeholder="开始时间"
                value-format="yyyy-MM-dd HH:mm:ss"
                type="month"
            />~
              <el-date-picker
                  @change="search"
                  v-model="searchForm.endTime"
                  format="yyyy-MM"
                  style="width: 140px"
                  placeholder="结束时间"
                  value-format="yyyy-MM-dd HH:mm:ss"
                  type="month"
              />
          </el-form-item>
        <section>
          <el-button type="primary" @click="search">搜索</el-button>
          <el-button @click="reset">重置</el-button>
        </section>
      </el-form>
    </SearchFormCollapse>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:platformwatergas:create','business:platformwatergas:delete','business:notice:exportExcel']">
        <li><el-button type="primary" @click="$refs.OperaPlatformOilWindow.open('新建油耗')" icon="el-icon-plus" v-permissions="['business:platformwatergas:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:platformwatergas:delete']">删除</el-button></li>
        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:notice:exportExcel']" @click="exportExcel">导出</el-button>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="carCode" label="车牌号" fixed min-width="150px"></el-table-column>
        <el-table-column prop="timeInfo" label="使用月份" fixed min-width="100px">
          <template slot-scope="{row}">
              {{(row.timeInfo || row.timeInfo.length >7 )?row.timeInfo.substr(0,7):'-'}}
          </template>
        </el-table-column>
        <el-table-column prop="num" label="油耗(升)" fixed min-width="150px"></el-table-column>
        <el-table-column prop="content" label="说明" min-width="120px"></el-table-column>
        <el-table-column prop="editDate" label="最近操作时间" min-width="140px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:platformwatergas:update', 'business:platformwatergas:delete'])"
          label="操作"
          align="center"
          min-width="150"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.OperaPlatformOilWindow.open('编辑油耗', row)" icon="el-icon-edit" v-permissions="['business:platformwatergas:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:platformwatergas:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaPlatformOilWindow ref="OperaPlatformOilWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import SearchFormCollapse from '@/components/common/SearchFormCollapse'
import Pagination from '@/components/common/Pagination'
import OperaPlatformOilWindow from '@/components/business/OperaPlatformOilWindow'
import { allList } from '@/api/platform/platformGroup'
export default {
  name: 'Platform',
  extends: BaseTable,
  components: { SearchFormCollapse, TableLayout, Pagination, OperaPlatformOilWindow },
  data () {
    return {
      groupList: [],
      // æœç´¢
      working: false,
      working1: false,
      searchForm: {
        carCode:'',
        startTime: '',
        endTime: '',
        type: 2
      }
    }
  },
  created () {
    this.config({
      module: '油耗信息表',
      api: '/platform/platformWaterGas',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
    this.loadGroupList()
  },
  methods: {
    loadGroupList () {
      allList({})
        .then(res => {
          this.groupList = res || []
        })
    },
    changeStatus (e, row) {
      this.api.updateStatusById({
        id: row.id,
        status: e
      })
    }
  }
}
</script>
admin/src/views/platform/platform.vue
@@ -66,7 +66,6 @@
            <span v-if="row.platformStatus == 3">错误停靠</span>
          </template>
        </el-table-column>
        <el-table-column prop="broadcastNames" label="关联广播" min-width="100px"></el-table-column>
        <el-table-column prop="ledNames" label="关联LED" min-width="100px"></el-table-column>
        <el-table-column prop="hkDate" label="同步时间" min-width="140px"></el-table-column>
admin/src/views/platform/water.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,117 @@
<template>
  <TableLayout :permissions="['business:platformwatergas:query']">
    <SearchFormCollapse slot="search-form" :need-more="false">
      <el-form ref="searchForm" :model="searchForm"  label-width="100px" inline>
          <el-form-item title="请选择年月时间" label=""   >
            <el-date-picker
                @change="search"
                clearable
                v-model="searchForm.timeInfo"
                format="yyyy-MM"
                placeholder="请选择年月时间"
                value-format="yyyy-MM-dd HH:mm:ss"
                type="month"
            />
          </el-form-item>
        <section>
          <el-button type="primary" @click="search">搜索</el-button>
          <el-button @click="reset">重置</el-button>
        </section>
      </el-form>
    </SearchFormCollapse>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:platformwatergas:create','business:platformwatergas:delete','business:notice:exportExcel']">
        <li><el-button type="primary" @click="$refs.OperaPlatformWaterWindow.open('新建用水')" icon="el-icon-plus" v-permissions="['business:platformwatergas:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:platformwatergas:delete']">删除</el-button></li>
        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:notice:exportExcel']" @click="exportExcel">导出</el-button>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="timeInfo" label="使用月份" fixed min-width="100px">
          <template slot-scope="{row}">
              {{(row.timeInfo || row.timeInfo.length >7 )?row.timeInfo.substr(0,7):'-'}}
          </template>
        </el-table-column>
        <el-table-column prop="num" label="用水量(吨)" fixed min-width="150px"></el-table-column>
        <el-table-column prop="content" label="说明" min-width="120px"></el-table-column>
        <el-table-column prop="editDate" label="最近操作时间" min-width="140px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:platformwatergas:update', 'business:platformwatergas:delete'])"
          label="操作"
          align="center"
          min-width="150"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.OperaPlatformWaterWindow.open('编辑用水', row)" icon="el-icon-edit" v-permissions="['business:platformwatergas:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:platformwatergas:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaPlatformWaterWindow ref="OperaPlatformWaterWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import SearchFormCollapse from '@/components/common/SearchFormCollapse'
import Pagination from '@/components/common/Pagination'
import OperaPlatformWaterWindow from '@/components/business/OperaPlatformWaterWindow'
import { allList } from '@/api/platform/platformGroup'
export default {
  name: 'Platform',
  extends: BaseTable,
  components: { SearchFormCollapse, TableLayout, Pagination, OperaPlatformWaterWindow },
  data () {
    return {
      groupList: [],
      // æœç´¢
      working: false,
      working1: false,
      searchForm: {
        timeInfo: '',
        type: 0
      }
    }
  },
  created () {
    this.config({
      module: '用水信息表',
      api: '/platform/platformWaterGas',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
    this.loadGroupList()
  },
  methods: {
    loadGroupList () {
      allList({})
        .then(res => {
          this.groupList = res || []
        })
    },
    changeStatus (e, row) {
      this.api.updateStatusById({
        id: row.id,
        status: e
      })
    }
  }
}
</script>
admin/src/views/vehicle/cars.vue
@@ -53,22 +53,22 @@
              <el-table-column prop="memberName" label="车主姓名"  min-width="100px"></el-table-column>
              <el-table-column prop="memberPhone" label="车主手机号" min-width="100px"></el-table-column>
              <el-table-column prop="companyName" label="车主组织" min-width="200px"></el-table-column>
                <el-table-column label="是否授权" align="center" min-width="100px">
                  <template slot-scope="{row}">
                    <span v-if="row.authStatus == 1" style="color: green">是</span>
                    <span v-else style="color: red">否</span>
                  </template>
                </el-table-column>
                <el-table-column prop="parksName" align="center" label="已授权停车场" min-width="200px">
                  <template slot-scope="{row}">
                    <div  v-if="row.parkBookList && row.parkBookList.length" >
                      <span v-for="item in row.parkBookList"  :key="item.id" style="display: block">
                        <span  :style="(item.hkStatus== 0?'color:#2080f7':(item.hkStatus== 1?'color:green':(item.hkStatus== 2?'color:red':'')))">【{{item.hkStatus== 0?'等待下发':(item.hkStatus== 1?'下发成功':(item.hkStatus== 2?'下发失败':''))}}】 </span>{{item.parksName}}
                      </span>
                    </div>
                    <span  v-if="row.parkBookList ==null ||row.parkBookList.length ==0">-</span>
                  </template>
                </el-table-column>
              <el-table-column label="是否授权" align="center" min-width="100px">
                <template slot-scope="{row}">
                  <span v-if="row.authStatus == 1" style="color: green">是</span>
                  <span v-else style="color: red">否</span>
                </template>
              </el-table-column>
              <el-table-column prop="parksName" align="center" label="已授权停车场" min-width="200px">
                <template slot-scope="{row}">
                  <div  v-if="row.parkBookList && row.parkBookList.length" >
                    <span v-for="item in row.parkBookList"  :key="item.id" style="display: block">
                      <span  :style="(item.hkStatus== 0?'color:#2080f7':(item.hkStatus== 1?'color:green':(item.hkStatus== 2?'color:red':'')))">【{{item.hkStatus== 0?'等待下发':(item.hkStatus== 1?'下发成功':(item.hkStatus== 2?'下发失败':''))}}】 </span>{{item.parksName}}
                    </span>
                  </div>
                  <span  v-if="row.parkBookList ==null ||row.parkBookList.length ==0">-</span>
                </template>
              </el-table-column>
              <el-table-column label="下发有效期" align="center" min-width="170px">
                <template slot-scope="{row}">
                  <div v-if="row.authStatus !=null && row.authStatus == 1 && row.parkBookList!=null && row.parkBookList.length>0">
@@ -116,7 +116,6 @@
import Pagination from '@/components/common/Pagination'
import OperaCarsWindow from '@/components/business/OperaCarsWindow'
import OperaCarAuthWindow from '@/components/business/OperaCarAuthWindow'
import { sync } from '@/api/business/cars'
export default {
  name: 'Cars',
  extends: BaseTable,
server/db/business.platform_water_gas.permissions.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:platformwatergas:create', '新建月台_用水用气信息记录表', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:platformwatergas:delete', '删除月台_用水用气信息记录表', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:platformwatergas:update', '修改月台_用水用气信息记录表', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:platformwatergas:query', '查询月台_用水用气信息记录表', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:platformwatergas:exportExcel', '导出月台_用水用气信息记录表(Excel)', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java
@@ -59,6 +59,7 @@
    public ApiResponse<String> login (@Validated @RequestBody LoginDTO dto, ServerWebExchange serverWebExchange) {
        try {
            ServerHttpRequest request = serverWebExchange.getRequest();
            dto.setCheckCode(true);
            LoginUserInfo user = systemLoginService.loginByPasswordNew(dto,request);
            String token = jwtTokenUtil.generateToken(user);
            return ApiResponse.success(token);
@@ -90,6 +91,24 @@
        }
    }
    @PreventRepeat(limit = 10, lockTime = 10000)
    @ApiOperation("司机登录")
    @PostMapping("/loginDriver")
    @LoginNoRequired
    public ApiResponse<String> loginDriver (@Validated @RequestBody LoginDTO dto, ServerWebExchange serverWebExchange) {
        try {
            ServerHttpRequest request = serverWebExchange.getRequest();
            dto.setCheckCode(false);
            LoginUserInfo user = systemLoginService.driverLogin(dto,request);
            String token = jwtTokenUtil.generateToken(user);
            return ApiResponse.success(token);
        }catch (BusinessException e){
            return ApiResponse.failed(e.getCode(),e.getMessage());
        }catch (Exception e){
            e.printStackTrace();
            return ApiResponse.failed(ResponseStatus.SERVER_ERROR);
        }
    }
    /**
     * åˆ·æ–°JWT令牌,用旧的令牌换新的令牌
server/system_service/src/main/java/com/doumee/api/BaseController.java
@@ -32,7 +32,7 @@
     * @author Eva.Caesar Liu
     * @date 2023/03/21 14:49
     */
    protected LoginUserInfo getLoginUser (String token) {
    public LoginUserInfo getLoginUser (String token) {
        if (token == null || token.isEmpty()) {
               return (LoginUserInfo)SecurityUtils.getSubject().getPrincipal();
//            throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"未登录");
server/system_service/src/main/java/com/doumee/core/model/LoginUserInfo.java
@@ -4,6 +4,7 @@
import com.doumee.dao.system.model.SystemPermission;
import com.doumee.dao.system.model.SystemRole;
import com.doumee.dao.system.model.SystemUser;
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.beans.BeanUtils;
@@ -59,15 +60,19 @@
        loginUserInfo.setCompany(company);
        // è®¾ç½®è§’色信息
        List<String> rs = new ArrayList<>();
        for (SystemRole role : roles) {
            rs.add(role.getCode());
        if(CollectionUtils.isNotEmpty(roles)){
            for (SystemRole role : roles) {
                rs.add(role.getCode());
            }
        }
        loginUserInfo.setSessionId(sessionId);
        loginUserInfo.setRoles(rs);
        // è®¾ç½®æƒé™ä¿¡æ¯
        List<String> pms = new ArrayList<>();
        for (SystemPermission permission : permissions) {
            pms.add(permission.getCode());
        if(CollectionUtils.isNotEmpty(permissions)){
            for (SystemPermission permission : permissions) {
                pms.add(permission.getCode());
            }
        }
        loginUserInfo.setPermissions(pms);
        return loginUserInfo;
server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -1,14 +1,16 @@
package com.doumee.core.utils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.doumee.core.model.LoginUserInfo;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import io.swagger.models.auth.In;
import org.apache.batik.util.Platform;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
import java.io.IOException;
import java.math.BigDecimal;
@@ -152,6 +154,11 @@
    // è¶…时预警配置
    public static final String TIMEOUT_WARNING = "TIMEOUT_WARNING";
    // FTP文件服务器资源访问地址
    //月台预约指南
    public static final String PLATFORM_BOOKING_TIPS = "PLATFORM_BOOKING_TIPS";
    //月台导览图
    public static final String PLATFORM_GUIDEMAP = "PLATFORM_GUIDEMAP";
    public static String getRandom6Num( ) {
        Random random = new Random();
@@ -453,6 +460,7 @@
    int cityUseCar = 3;//市内用车
    int unCityUseCar = 4;//市外用车
    int logisticsCarUse = 5;//物流车预约
    int reason = 6;//入园原因
}
@@ -466,6 +474,10 @@
    }else if(Constants.equalsInteger(approveType,Constants.approveObjectType.cityUseCar)
            ||Constants.equalsInteger(approveType,Constants.approveObjectType.unCityUseCar)){
        return Constants.noticesObjectType.useCar;
    }else if(Constants.equalsInteger(approveType,Constants.approveObjectType.logisticsCarUse)){
        return Constants.noticesObjectType.logisticsCarUse;
    }else if(Constants.equalsInteger(approveType, approveObjectType.reason)){
        return noticesObjectType.reason;
    }else {
        return Constants.noticesObjectType.system;
    }
@@ -481,6 +493,7 @@
    int dangerDeal = 3;//隐患处理
    int logisticsCarUse = 4;//物流车审批
    int system = 5;//系统消息
    int reason = 6;//入园原因
}
server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -1823,14 +1823,6 @@
    // StringUtil.getNotNullStr(request.getParameter(strParamName));
    // return getDateByString(strStr);
    // }
    /**
     * å¾—到当前日期,格式yyyy-MM-dd。
     *
     * @return String æ ¼å¼åŒ–的日期字符串
     */
    public static String getCurrDate() {
        return getFormattedDate(getDateByString(""));
    }
    /**
     * å¾—到当前日期,格式yyyy-MM-dd。
@@ -1897,6 +1889,17 @@
    }
    /**
     * å¾—到当前日期时间,格式为yyyy-MM-dd.
     *
     * @return String
     */
    public static String getCurrDate() {
        Timestamp date = new Timestamp(System.currentTimeMillis());
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        return formatter.format(date);
    }
    /**
     * å¾—到指定的日期,如一年三个月零九天后(以yyyy/MM/dd格式显示)参数为("yyyy/MM/dd",1,3,9)
     *
     * @param strFormat
server/system_service/src/main/java/com/doumee/service/system/SystemLoginService.java
@@ -23,6 +23,7 @@
    LoginUserInfo loginByPasswordNew (LoginDTO dto, ServerHttpRequest request);
    LoginUserInfo driverLogin(LoginDTO dto, ServerHttpRequest request);
    /**
     * æ ¹æ® openId登录
     * @param userId
server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
@@ -125,7 +125,7 @@
            loginLog.setOsInfo(Utils.User_Client.getOS(request));
        }
        loginLog.setServerIp(Utils.Server.getIP());
        if(isDebug == null  || !isDebug){
        if(isDebug == null  || !isDebug  && dto.getCheckCode()){
            // æ ¡éªŒéªŒè¯ç 
            try {
                captchaService.check(dto.getUuid(), dto.getCode());
@@ -171,6 +171,43 @@
    }
    @Override
    public LoginUserInfo driverLogin(LoginDTO dto, ServerHttpRequest request) {
        SystemLoginLog loginLog = new SystemLoginLog();
        loginLog.setLoginUsername(dto.getUsername());
        loginLog.setLoginTime(new Date());
        loginLog.setSystemVersion(systemVersion);
        loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp()));
        if(request!=null&&request.getHeaders()!=null && request.getHeaders().size()>0){
            loginLog.setIp(Utils.User_Client.getIP(request));
            loginLog.setPlatform(Utils.User_Client.getPlatform(request));
            loginLog.setClientInfo(Utils.User_Client.getBrowser(request));
            loginLog.setOsInfo(Utils.User_Client.getOS(request));
        }
        loginLog.setServerIp(Utils.Server.getIP());
        // æ ¹æ®ç”¨æˆ·åæŸ¥è¯¢ç”¨æˆ·å¯¹è±¡
        SystemUser queryDto = new SystemUser();
        queryDto.setUsername(dto.getUsername());
        queryDto.setDeleted(Boolean.FALSE);
        SystemUser user = systemUserService.findOne(queryDto);
        if (user == null) {
            throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
        }
        String pwd = Utils.Secure.encryptPassword(new String(dto.getPassword()), user.getSalt());
        // æ¯”较密码
        if( !StringUtils.equals(pwd, user.getPassword())){
            throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
        }
        Company company = new Company();
        if(Objects.nonNull(user.getCompanyId())){
            company = companyMapper.selectById(user.getCompanyId());
        }
        LoginUserInfo userInfo = LoginUserInfo.from(user, null, null,company,null);
        return  userInfo;
    }
    /**
     * å†…部人员 ä¸Ž å¸æœº æ ¹æ®code查询openId后进行登录接口
     * @return
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/PlatformWaterGasController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,90 @@
package com.doumee.api.business;
import com.doumee.api.BaseController;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageWrap;
import com.doumee.core.model.PageData;
import com.doumee.dao.business.model.PlatformWaterGas;
import com.doumee.service.business.PlatformWaterGasService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2024/08/26 16:22
 */
@Api(tags = "月台_用水用气信息记录表")
@RestController
@RequestMapping("/business/platformWaterGas")
public class PlatformWaterGasController extends BaseController {
    @Autowired
    private PlatformWaterGasService platformWaterGasService;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @RequiresPermissions("business:platformwatergas:create")
    public ApiResponse create(@RequestBody PlatformWaterGas platformWaterGas) {
        return ApiResponse.success(platformWaterGasService.create(platformWaterGas));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @RequiresPermissions("business:platformwatergas:delete")
    public ApiResponse deleteById(@PathVariable Integer id) {
        platformWaterGasService.deleteById(id);
        return ApiResponse.success(null);
    }
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @RequiresPermissions("business:platformwatergas:delete")
    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
        String [] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
        }
        platformWaterGasService.deleteByIdInBatch(idList);
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @RequiresPermissions("business:platformwatergas:update")
    public ApiResponse updateById(@RequestBody PlatformWaterGas platformWaterGas) {
        platformWaterGasService.updateById(platformWaterGas);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @RequiresPermissions("business:platformwatergas:query")
    public ApiResponse<PageData<PlatformWaterGas>> findPage (@RequestBody PageWrap<PlatformWaterGas> pageWrap) {
        return ApiResponse.success(platformWaterGasService.findPage(pageWrap));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @RequiresPermissions("business:platformwatergas:exportExcel")
    public void exportExcel (@RequestBody PageWrap<PlatformWaterGas> pageWrap, HttpServletResponse response) {
        ExcelExporter.build(PlatformWaterGas.class).export(platformWaterGasService.findPage(pageWrap).getRecords(), "月台_用水用气信息记录表", response);
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @RequiresPermissions("business:platformwatergas:query")
    public ApiResponse findById(@PathVariable Integer id) {
        return ApiResponse.success(platformWaterGasService.findById(id));
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitsController.java
@@ -77,6 +77,13 @@
        visitsService.visitCancel(visitId);
        return ApiResponse.success(null);
    }
    @ApiOperation("重新下发失败的预约")
    @GetMapping("/visitResend")
    @RequiresPermissions("business:visits:update")
    public ApiResponse   visitResend(@RequestParam Integer visitId) {
        visitsService.visitResend(visitId);
        return ApiResponse.success(null);
    }
    @ApiOperation("根据日期(starttime)同步访客数据")
    @PostMapping("/syncByDate")
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformCloudController.java
@@ -9,6 +9,7 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.Platform;
import com.doumee.service.business.PlatformJobService;
import com.doumee.service.business.PlatformService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -16,6 +17,7 @@
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
@@ -28,6 +30,9 @@
    @Autowired
    private PlatformService platformService;
    @Autowired
    private PlatformJobService platformJobService;
    @PreventRepeat
    @ApiOperation("新建")
@@ -77,6 +82,14 @@
        return ApiResponse.success(platformService.findPage(pageWrap));
    }
    @ApiOperation("根据月台组获取月台列表信息")
    @GetMapping("/listByGroupId")
    @CloudRequiredPermission("business:platform:query")
    public ApiResponse<List<Platform>> listByGroupId (@RequestParam Integer groupId, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
        return ApiResponse.success(platformJobService.getPlatformList(groupId,this.getLoginUser(token)));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @CloudRequiredPermission("business:platform:exportExcel")
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformWaterGasCloudController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
package com.doumee.cloud.admin;
import com.doumee.api.BaseController;
import com.doumee.config.annotation.CloudRequiredPermission;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.PlatformWaterGas;
import com.doumee.service.business.PlatformWaterGasService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2024/08/26 16:22
 */
@Api(tags = "月台_用水用气信息记录表")
@RestController
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/business/platformWaterGas")
public class PlatformWaterGasCloudController extends BaseController {
    @Autowired
    private PlatformWaterGasService platformWaterGasService;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @CloudRequiredPermission("business:platformwatergas:create")
    public ApiResponse create(@RequestBody PlatformWaterGas platformWaterGas,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        platformWaterGas.setLoginUserInfo(getLoginUser(token));
        return ApiResponse.success(platformWaterGasService.create(platformWaterGas));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @CloudRequiredPermission("business:platformwatergas:delete")
    public ApiResponse deleteById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        platformWaterGasService.deleteById(id,getLoginUser(token));
        return ApiResponse.success(null);
    }
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @CloudRequiredPermission("business:platformwatergas:delete")
    public ApiResponse deleteByIdInBatch(@RequestParam String ids,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        String [] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
        }
        platformWaterGasService.deleteByIdInBatch(idList,getLoginUser(token));
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @CloudRequiredPermission("business:platformwatergas:update")
    public ApiResponse updateById(@RequestBody PlatformWaterGas platformWaterGas,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        platformWaterGas.setLoginUserInfo(getLoginUser(token));
        platformWaterGasService.updateById(platformWaterGas);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @CloudRequiredPermission("business:platformwatergas:query")
    public ApiResponse<PageData<PlatformWaterGas>> findPage (@RequestBody PageWrap<PlatformWaterGas> pageWrap,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        return ApiResponse.success(platformWaterGasService.findPage(pageWrap));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @CloudRequiredPermission("business:platformwatergas:exportExcel")
    public void exportExcel (@RequestBody PageWrap<PlatformWaterGas> pageWrap, HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ExcelExporter.build(PlatformWaterGas.class).export(platformWaterGasService.findPage(pageWrap).getRecords(), "月台_用水用气信息记录表", response);
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @CloudRequiredPermission("business:platformwatergas:query")
    public ApiResponse findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        return ApiResponse.success(platformWaterGasService.findById(id));
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/VisitsCloudController.java
@@ -19,6 +19,7 @@
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -150,4 +151,13 @@
        visitsService.resetPassword(resetPasswordDTO);
        return ApiResponse.success("重置成功");
    }
    @ApiOperation("重新下发失败的预约")
    @GetMapping("/visitResend")
    @CloudRequiredPermission("business:visits:update")
    public ApiResponse   visitResend(@RequestParam Integer visitId) {
        visitsService.visitResend(visitId);
        return ApiResponse.success(null);
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/DriverPlatformController.java
@@ -1,17 +1,17 @@
package com.doumee.cloud.web;
import cn.hutool.http.useragent.Platform;
import com.doumee.api.BaseController;
import com.doumee.config.annotation.LoginNoRequired;
import com.doumee.config.annotation.LoginRequired;
import com.doumee.core.annotation.trace.Trace;
import com.doumee.core.model.ApiResponse;
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.DateUtil;
import com.doumee.dao.business.model.PlatformBooks;
import com.doumee.dao.business.model.PlatformJob;
import com.doumee.dao.business.model.Visits;
import com.doumee.dao.business.model.*;
import com.doumee.dao.web.reqeust.*;
import com.doumee.dao.web.response.DriverHomeVO;
import com.doumee.dao.web.response.LineUpVO;
@@ -27,6 +27,7 @@
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
 * Created by IntelliJ IDEA.
@@ -52,13 +53,24 @@
    @Autowired
    private PlatformBooksService platformBooksService;
    @Autowired
    private PlatformReasonService platformReasonService;
    @ApiOperation("入园原因")
    @GetMapping("/platformReasonList")
    public ApiResponse<List<PlatformReason>> platformReasonList (@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        List<PlatformReason> platformReasons = platformReasonService.findList(null);
        return ApiResponse.success(platformReasons);
    }
    @ApiOperation("司机首页信息")
    @GetMapping("/driverHome")
    public ApiResponse<DriverHomeVO> driverHome (@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        DriverHomeVO driverHomeVO = platformJobService.getDriverHome(getLoginUser(token).getMemberId());
        DriverHomeVO driverHomeVO = platformJobService.getDriverHome(getLoginUser(token));
        return ApiResponse.success(driverHomeVO);
    }
    @ApiOperation("查询可预约量")
    @PostMapping("/checkSurplusNum")
@@ -69,14 +81,18 @@
    @ApiOperation("物流车预约")
    @PostMapping("/apply")
    public ApiResponse<Integer> apply (@RequestBody PlatformBooksApplyDTO platformBooksApplyDTO , @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        platformBooksApplyDTO.setUserId(getLoginUser(token).getMemberId());
        LoginUserInfo loginUserInfo = getLoginUser(token);
        platformBooksApplyDTO.setUserId(loginUserInfo.getMemberId());
        platformBooksApplyDTO.setDriverId(loginUserInfo.getMemberId());
        return ApiResponse.success(platformBooksService.apply(platformBooksApplyDTO));
    }
    @ApiOperation("物流车预约记录")
    @PostMapping("/page")
    public ApiResponse<PageData<PlatformBooks>> findPage (@RequestBody PageWrap<PlatformBooks> pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        LoginUserInfo loginUserInfo = this.getLoginUser(token);
        pageWrap.getModel().setQueryDate(DateUtil.getBeforDay(new Date(),30));
        pageWrap.getModel().setDriverPhone(loginUserInfo.getMobile());
        return ApiResponse.success(platformBooksService.findPage(pageWrap));
    }
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/PdaPlatformController.java
@@ -8,10 +8,7 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.business.model.PlatformBooks;
import com.doumee.dao.business.model.PlatformGroup;
import com.doumee.dao.business.model.PlatformJob;
import com.doumee.dao.business.model.PlatformShowParam;
import com.doumee.dao.business.model.*;
import com.doumee.dao.web.reqeust.*;
import com.doumee.dao.web.response.DriverHomeVO;
import com.doumee.dao.web.response.LineUpVO;
@@ -54,10 +51,8 @@
    @Autowired
    private PlatformShowParamService platformShowParamService;
    @Autowired
    private PlatformService platformService;
    @ApiOperation("获取月台组信息")
    @ApiImplicitParams({
@@ -69,9 +64,16 @@
    }
    @ApiOperation("更新月台配置信息")
    @GetMapping("/updUserPlatformConfig")
    @PostMapping("/updUserPlatformConfig")
    public ApiResponse  updUserPlatformConfig (@RequestBody List<Integer> ids, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
        platformShowParamService.updUserConfig(ids,getLoginUser(token));
        return ApiResponse.success("操作成功");
    }
    @ApiOperation("修改禁启用状态")
    @PostMapping("/updPlatformStatus")
    public ApiResponse  updPlatformStatus (@RequestBody Platform platform, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
        platformService.updateStatusById(platform);
        return ApiResponse.success("操作成功");
    }
@@ -131,9 +133,6 @@
        platformJobService.platformInPark(jobOperateDTO);
        return ApiResponse.success("操作成功");
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
@@ -30,81 +30,81 @@
     * æŽ¥å£åœ°å€é›†åˆ
     */
    public interface InterfacePath{
//        String doorEvents = "/api/acs/v2/door/events";//门禁事件查询
//        String visitEvents = "/api/visitor/v1/event/turnover/search";//访客事件查询
        String parkCrossRecords = "/api/pms/v1/crossRecords/page";//停车场过程记录
        String rootOrg = "/api/resource/v1/org/rootOrg";//获取跟组织
        String orgAllList = "/api/resource/v1/org/orgList";//获取全量组织信息
        String userAllList = "/api/resource/v2/person/personList";//获取全量用户列表
        String personList = "/api/resource/v2/person/advance/personList";//查询人员列表v2
        String orgTimeRangeList = "/api/resource/v1/org/timeRange";//增量获取组织信息
        String userTimeRangeList = "/api/resource/v1/person/personList/timeRange";//增量获取用户列表
        String addBatchOrg = "/api/resource/v1/org/batch/add";//批量新增组织
        String delBatchOrg = "/api/resource/v1/org/batch/delete";//批量删除组织
        String editOrg = "/api/resource/v1/org/single/update";//修改组织
        String addUser = "/api/resource/v2/person/single/add";//添加人员
        String addBatchUser = "/api/resource/v1/person/batch/add";//批量添加人员
        String editUser = "/api/resource/v1/person/single/update";//修改人员
        String delBatchUser = "/api/resource/v1/person/batch/delete";//批量删除人员
        String addFace = "/api/resource/v1/face/single/add";//添加人脸
        String editFace = "/api/resource/v1/face/single/update";//修改人脸
        String delFace = "/api/resource/v1/face/single/delete";//删除人脸
        String acsDeviceList = "/api/resource/v2/acsDevice/search";//查询门禁设备列表v2
        String acsDeviceTimeRangeList = "/api/resource/v1/acsDevice/timeRange";//增量获取门禁设备数据
        String parkAddition = "/api/pms/v2/parkingSpace/reservations/addition";//车位预约v2
        String parkDeletion= "/api/pms/v1/parkingSpace/reservations/deletion";//车位取消预约v2
        String carChargeAddtion= "/api/pms/v1/car/charge";//固定车充值包期
        String carChargeDeletion= "/api/pms/v1/car/charge/deletion";//固定车取消包期
        String getParkList= "/api/resource/v1/park/parkList";//获取停车库列表
        String getEntranceList= "/api/resource/v1/entrance/entranceList";//获取出入口列表
        String visitAppiontment= "/api/visitor/v2/appointment";//访客预约v2
        String visitAppiontmentMDJ= "/api/visitor/v1/appointment/registration";//访客预约免登记v2
        String visitCancel= "/api/visitor/v1/appointment/cancel";//取消访客预约
        String visitOut= "/api/visitor/v1/visitor/out";//签离访客预约
        String facePicture= "/api/resource/v1/person/picture";//提取用户人脸照片
        String privilegeGroup= "/api/visitor/v1/privilege/group";//查询访客权限组
        String eventSub= "/api/eventService/v1/eventSubscriptionByEventTypes";//事件订阅
        String doorSearch= "/api/resource/v2/door/search";//查询门禁点列表v2
        String cancelEventSub= "/api/eventService/v1/eventUnSubscriptionByEventTypes";//取消事件订阅
        String visitPicture= "/api/visitor/v1/record/pictures";//获取访客记录中的图片
        String devicePicture= "/api/acs/v1/event/pictures";//获取门禁事件的图片
        String carPicture= "/api/pms/v1/image";//查询车辆抓拍图片
        String taskAddition= "/api/acps/v1/authDownload/task/addition";//创建下载任务_根据人员与设备通道指定下载
        String taskDataAddition= "/api/acps/v1/authDownload/data/addition";//下载任务中添加数据_根据人员与设备通道指定下载
        String taskStart= "/api/acps/v1/authDownload/task/start";//开始下载任务
        String taskProgressNum= "/api/acps/v1/authDownload/task/progress";//查詢下载任务进度
        String taskProgress= "/api/acps/v2/download_record/person/detail/search";//查询设备通道的人员权限下载详情总数v2
        String authItemList= "/api/acps/v1/auth_item/list/search";//查询权限条目列表
        String cardBingding= "/api/cis/v1/card/bindings";//批量开卡
        String cardDeletion= "/api/cis/v1/card/deletion";//卡片退卡
        String cardLoss= "/api/cis/v1/card/batch/loss";//批量挂失
        String cardUnloss= "/api/cis/v1/card/batch/unLoss";//批量解挂
        String taskPersoDetail= "/api/acps/v1/download_record/person/detail/search";//查询设备通道的人员权限下载详情
        String appointmentRecords= "/api/visitor/v2/appointment/records";//查询访客预约记录v2
        String visitingRecords= "/api/visitor/v2/visiting/records";//查询访客来访记录v2
        String vehicleList= "/api/resource/v2/vehicle/advance/vehicleList";//查询车辆列表v2
        String vehicleTimeRangeList= "/api/resource/v1/vehicle/timeRange";//增量获取车辆数据
        String facePictureCheck= "/api/frs/v1/face/picture/check";//人脸评分
        String acsDeviceStatus= "/api/nms/v1/online/acs_device/get";//获取门禁设备在线状态
        String tempCarInRecords= "/api/pms/v1/tempCarInRecords/page";//查询场内车停车信息
        String applyCTGT= "/api/lsm/ssoService/v1/applyCTGT";//根据用户标识获取客户端TGC接口
        String applyST= "/api/lsm/ssoService/v1/applyST";//根据登录标识TGC申请登录凭证ST接口
        String tokenLoginUrl= "/lsm/ssoService/v1/tokenLogin?token=${st}&service=${service}";//组件授权登录拼接地址
        String fetchAudioChannel= "/api/ibas/resource/v1/fetchAudioChannel";//1.1.4.1分页获取广播点
        String fetchAudioDevice= "/api/ibas/resource/v1/fetchAudioDevice";//1.1.4.2分页获取广播设备列表
        String fetchAudioChannelByDevice= "/api/ibas/resource/v1/fetchAudioChannelByDevice";//1.1.4.3根据设备信息获取广播点
        String ledRecords= "/api/v1/model/tb_led_info/records";//获取月台组件配置的LED设备清单
        String transparentchannel= "/api/v1/transparentchannel";//发送消息给LED
        String platformsList= "/api/platformService/v1/platforms";//获取全部月台信息
        String platformStatus= "/api/platformService/v1/platform/status";//获取月台状态
        String customBroadcast= "/api/ibas/v1/customBroadcast";//用于设置广播的自定播放和停止
        String iccmAppointment= "/api/iccm/v2/appointment";//iccm访客登记添加
        String iccmUpdateAppointment= "/api/iccm/v2/appointment/update";//iccm访客登记修改
        String iccmCancelAppointment= "/api/iccm/v1/appointment/cancel";//iccm访客登记修改
        String iccmAppointmentMDJ= "/api/iccm/v1/appointment/free/registration";//iccm访客预约免登记
//        String doorEvents = new String[]{"/api/acs/v2/door/events",""};//门禁事件查询
//        String visitEvents = new String[]{"/api/visitor/v1/event/turnover/search",""};//访客事件查询
        String[] parkCrossRecords =new String[]{"/api/pms/v1/crossRecords/page","停车场过程记录"};//停车场过程记录
        String[] rootOrg = new String[]{"/api/resource/v1/org/rootOrg","获取跟组织"};//获取跟组织
        String[] orgAllList = new String[]{"/api/resource/v1/org/orgList","获取全量组织信息"};//获取全量组织信息
        String[] userAllList = new String[]{"/api/resource/v2/person/personList","获取全量用户列表"};//获取全量用户列表
        String[] personList = new String[]{"/api/resource/v2/person/advance/personList","查询人员列表v2"};//查询人员列表v2
        String[] orgTimeRangeList = new String[]{"/api/resource/v1/org/timeRange","增量获取组织信息"};//增量获取组织信息
        String[] userTimeRangeList = new String[]{"/api/resource/v1/person/personList/timeRange","增量获取用户列表"};//增量获取用户列表
        String[] addBatchOrg = new String[]{"/api/resource/v1/org/batch/add","批量新增组织"};//批量新增组织
        String[] delBatchOrg = new String[]{"/api/resource/v1/org/batch/delete","批量删除组织"};//批量删除组织
        String[] editOrg = new String[]{"/api/resource/v1/org/single/update","修改组织"};//修改组织
        String[] addUser = new String[]{"/api/resource/v2/person/single/add","添加人员"};//添加人员
        String[] addBatchUser = new String[]{"/api/resource/v1/person/batch/add","批量添加人员"};//批量添加人员
        String[] editUser = new String[]{"/api/resource/v1/person/single/update","修改人员"};//修改人员
        String[] delBatchUser = new String[]{"/api/resource/v1/person/batch/delete","批量删除人员"};//批量删除人员
        String[] addFace = new String[]{"/api/resource/v1/face/single/add","添加人脸"};//添加人脸
        String[] editFace = new String[]{"/api/resource/v1/face/single/update","修改人脸"};//修改人脸
        String[] delFace = new String[]{"/api/resource/v1/face/single/delete","删除人脸"};//删除人脸
        String[] acsDeviceList = new String[]{"/api/resource/v2/acsDevice/search","查询门禁设备列表v2"};//查询门禁设备列表v2
        String[] acsDeviceTimeRangeList = new String[]{"/api/resource/v1/acsDevice/timeRange","增量获取门禁设备数据"};//增量获取门禁设备数据
        String[] parkAddition = new String[]{"/api/pms/v2/parkingSpace/reservations/addition","车位预约v2"};//车位预约v2
        String[] parkDeletion= new String[]{"/api/pms/v1/parkingSpace/reservations/deletion","车位取消预约v2"};//车位取消预约v2
        String[] carChargeAddtion= new String[]{"/api/pms/v1/car/charge","固定车充值包期"};//固定车充值包期
        String[] carChargeDeletion= new String[]{"/api/pms/v1/car/charge/deletion","固定车取消包期"};//固定车取消包期
        String[] getParkList= new String[]{"/api/resource/v1/park/parkList","获取停车库列表"};//获取停车库列表
        String[] getEntranceList= new String[]{"/api/resource/v1/entrance/entranceList","获取出入口列表"};//获取出入口列表
        String[] visitAppiontment= new String[]{"/api/visitor/v2/appointment","访客预约v2"};//访客预约v2
        String[] visitAppiontmentMDJ= new String[]{"/api/visitor/v1/appointment/registration","访客预约免登记v2"};//访客预约免登记v2
        String[] visitCancel= new String[]{"/api/visitor/v1/appointment/cancel","取消访客预约"};//取消访客预约
        String[] visitOut= new String[]{"/api/visitor/v1/visitor/out","签离访客预约"};//签离访客预约
        String[] facePicture= new String[]{"/api/resource/v1/person/picture","提取用户人脸照片"};//提取用户人脸照片
        String[] privilegeGroup= new String[]{"/api/visitor/v1/privilege/group","查询访客权限组"};//查询访客权限组
        String[] eventSub= new String[]{"/api/eventService/v1/eventSubscriptionByEventTypes","事件订阅"};//事件订阅
        String[] doorSearch= new String[]{"/api/resource/v2/door/search","查询门禁点列表v2"};//查询门禁点列表v2
        String[] cancelEventSub= new String[]{"/api/eventService/v1/eventUnSubscriptionByEventTypes","取消事件订阅"};//取消事件订阅
        String[] visitPicture= new String[]{"/api/visitor/v1/record/pictures","获取访客记录中的图片"};//获取访客记录中的图片
        String[] devicePicture= new String[]{"/api/acs/v1/event/pictures","获取门禁事件的图片"};//获取门禁事件的图片
        String[] carPicture= new String[]{"/api/pms/v1/image","查询车辆抓拍图片"};//查询车辆抓拍图片
        String[] taskAddition= new String[]{"/api/acps/v1/authDownload/task/addition","创建下载任务_根据人员与设备通道指定下载"};//创建下载任务_根据人员与设备通道指定下载
        String[] taskDataAddition= new String[]{"/api/acps/v1/authDownload/data/addition","下载任务中添加数据_根据人员与设备通道指定下载"};//下载任务中添加数据_根据人员与设备通道指定下载
        String[] taskStart= new String[]{"/api/acps/v1/authDownload/task/start","开始下载任务"};//开始下载任务
        String[] taskProgressNum= new String[]{"/api/acps/v1/authDownload/task/progress","查詢下载任务进度"};//查詢下载任务进度
        String[] taskProgress= new String[]{"/api/acps/v2/download_record/person/detail/search","查询设备通道的人员权限下载详情总数v2"};//查询设备通道的人员权限下载详情总数v2
        String[] authItemList= new String[]{"/api/acps/v1/auth_item/list/search","查询权限条目列表"};//查询权限条目列表
        String[] cardBingding= new String[]{"/api/cis/v1/card/bindings","批量开卡"};//批量开卡
        String[] cardDeletion= new String[]{"/api/cis/v1/card/deletion","卡片退卡"};//卡片退卡
        String[] cardLoss= new String[]{"/api/cis/v1/card/batch/loss","批量挂失"};//批量挂失
        String[] cardUnloss= new String[]{"/api/cis/v1/card/batch/unLoss","批量解挂"};//批量解挂
        String[] taskPersoDetail= new String[]{"/api/acps/v1/download_record/person/detail/search","查询设备通道的人员权限下载详情"};//查询设备通道的人员权限下载详情
        String[] appointmentRecords= new String[]{"/api/visitor/v2/appointment/records","查询访客预约记录v2"};//查询访客预约记录v2
        String[] visitingRecords= new String[]{"/api/visitor/v2/visiting/records","查询访客来访记录v2"};//查询访客来访记录v2
        String[] vehicleList= new String[]{"/api/resource/v2/vehicle/advance/vehicleList","查询车辆列表v2"};//查询车辆列表v2
        String[] vehicleTimeRangeList= new String[]{"/api/resource/v1/vehicle/timeRange","增量获取车辆数据"};//增量获取车辆数据
        String[] facePictureCheck= new String[]{"/api/frs/v1/face/picture/check","人脸评分"};//人脸评分
        String[] acsDeviceStatus= new String[]{"/api/nms/v1/online/acs_device/get","获取门禁设备在线状态"};//获取门禁设备在线状态
        String[] tempCarInRecords= new String[]{"/api/pms/v1/tempCarInRecords/page","查询场内车停车信息"};//查询场内车停车信息
        String[] applyCTGT= new String[]{"/api/lsm/ssoService/v1/applyCTGT","根据用户标识获取客户端TGC接口"};//根据用户标识获取客户端TGC接口
        String[] applyST= new String[]{"/api/lsm/ssoService/v1/applyST","根据登录标识TGC申请登录凭证ST接口"};//根据登录标识TGC申请登录凭证ST接口
        String[] tokenLoginUrl= new String[]{"/lsm/ssoService/v1/tokenLogin?token=${st}&service=${service}","组件授权登录拼接地址"};//组件授权登录拼接地址
        String[] fetchAudioChannel= new String[]{"/api/ibas/resource/v1/fetchAudioChannel","分页获取广播点"};//1.1.4.1分页获取广播点
        String[] fetchAudioDevice= new String[]{"/api/ibas/resource/v1/fetchAudioDevice","2分页获取广播设备列表"};//1.1.4.2分页获取广播设备列表
        String[] fetchAudioChannelByDevice= new String[]{"/api/ibas/resource/v1/fetchAudioChannelByDevice","3根据设备信息获取广播点"};//1.1.4.3根据设备信息获取广播点
        String[] ledRecords= new String[]{"/api/v1/model/tb_led_info/records","获取月台组件配置的LED设备清单"};//获取月台组件配置的LED设备清单
        String[] transparentchannel= new String[]{"/api/v1/transparentchannel","发送消息给LED"};//发送消息给LED
        String[] platformsList= new String[]{"/api/platformService/v1/platforms","获取全部月台信息"};//获取全部月台信息
        String[] platformStatus= new String[]{"/api/platformService/v1/platform/status","获取月台状态"};//获取月台状态
        String[] customBroadcast= new String[]{"/api/ibas/v1/customBroadcast","用于设置广播的自定播放和停止"};//用于设置广播的自定播放和停止
        String[] iccmAppointment= new String[]{"/api/iccm/v2/appointment/","iccm访客登记添加"};//iccm访客登记添加
        String[] iccmUpdateAppointment= new String[]{"/api/iccm/v2/appointment/update","iccm访客登记修改"};//iccm访客登记修改
        String[] iccmCancelAppointment= new String[]{"/api/iccm/v1/appointment/cancel","iccm访客登记修改"};//iccm访客登记修改
        String[] iccmAppointmentMDJ= new String[]{"/api/iccm/v1/appointment/free/registration","iccm访客预约免登记"};//iccm访客预约免登记
        String privilegIccmeGroup= "/api/iccm/v1/privilege/groups";//查询访客权限组
        String iccmAppointmentRecords= "/api/iccm/v2/appointment/records";//iccm查询已预约登记
        String[] privilegIccmeGroup= new String[]{"/api/iccm/v1/privilege/groups","查询访客权限组"};//查询访客权限组
        String[] iccmAppointmentRecords= new String[]{"/api/iccm/v2/appointment/records","iccm查询已预约登记"};//iccm查询已预约登记
    }
    /**
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
@@ -61,7 +61,7 @@
    }
    public static InterfaceLogService interfaceLogService = null;
    private static void saveInterfaceLog(String s, String result,Map<String, String> path) {
    private static void saveInterfaceLog(String s, String result,Map<String, String> path,String name) {
//        InterfaceLogService bean = SpringContextUtil.getBean(InterfaceLogService.class);
        if(interfaceLogService !=null){
            InterfaceLog hkMonitoryLogDO=new InterfaceLog();
@@ -70,7 +70,7 @@
            hkMonitoryLogDO.setIsdeleted(0);
            hkMonitoryLogDO.setRequest(s);
            hkMonitoryLogDO.setRepose(result);
            hkMonitoryLogDO.setName(path.get(HKConstants.https));
            hkMonitoryLogDO.setName("【安防平台】"+name);
            hkMonitoryLogDO.setUrl(HKConstants.https + ArtemisConfig.host+path.get(HKConstants.https));
            interfaceLogService.create(hkMonitoryLogDO);
        }
@@ -238,7 +238,7 @@
     */
    public static InputStream getFaceInputStream(String body)  throws  Exception{
        Map<String, String> path = getPath(HKConstants.InterfacePath.facePicture);
        Map<String, String> path = getPath(HKConstants.InterfacePath.facePicture[0]);
        //参数根据接口实际情况设置
        HttpResponse resp = ArtemisHttpUtil.doPostStringImgArtemis( path, body, null, null,"application/json",null);
        if (200==resp.getStatusLine().getStatusCode()) {
@@ -255,7 +255,7 @@
     * @return
     */
    public static InputStream getVisitPicture(String body)  throws  Exception{
        Map<String, String> path = getPath(HKConstants.InterfacePath.visitPicture);
        Map<String, String> path = getPath(HKConstants.InterfacePath.visitPicture[0]);
        //参数根据接口实际情况设置
        HttpResponse resp = ArtemisHttpUtil.doPostStringImgArtemis( path, body, null, null,"application/json",null);
        if (200==resp.getStatusLine().getStatusCode()) {
@@ -273,7 +273,7 @@
     */
    public static InputStream getDevicePicture(String body)  throws  Exception{
        Map<String, String> path = getPath(HKConstants.InterfacePath.devicePicture);
        Map<String, String> path = getPath(HKConstants.InterfacePath.devicePicture[0]);
        //参数根据接口实际情况设置
        HttpResponse resp = ArtemisHttpUtil.doPostStringImgArtemis( path, body, null, null,"application/json",null);
        if (200==resp.getStatusLine().getStatusCode()) {
@@ -292,7 +292,7 @@
     */
    public static InputStream getCarPicture(String body)  throws  Exception{
        Map<String, String> path = getPath(HKConstants.InterfacePath.carPicture);
        Map<String, String> path = getPath(HKConstants.InterfacePath.carPicture[0]);
        //参数根据接口实际情况设置
        HttpResponse resp = ArtemisHttpUtil.doPostStringImgArtemis( path, body, null, null,"application/json",null);
        if (200==resp.getStatusLine().getStatusCode()) {
@@ -369,20 +369,29 @@
        return  startDoPostStringArtemis(HKConstants.InterfacePath.visitCancel,body);
    }
    public static String startDoPostStringArtemis(String pathStr,String body){
        Map<String, String> path = getPath(pathStr);
    public static String startDoPostStringArtemis(String[] pathStr,String body ){
        Map<String, String> path = getPath(pathStr[0]);
        Map<String, String> header = new HashMap<>();
        header.put("tagId", UUID.randomUUID().toString().replace("-", ""));
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", header);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        saveInterfaceLog(body,result,path,pathStr[1]);
        return result;
    }
    public static String startDoPostStringArtemis(String pathStr,Map<String, String> querys,Map<String, String> header,String body){
        Map<String, String> path = getPath(pathStr);
    public static String startDoPostStringArtemis(String[] pathStr,String param,String body ){
        Map<String, String> path = getPath(pathStr[0]+StringUtils.defaultString(param,""));
        Map<String, String> header = new HashMap<>();
        header.put("tagId", UUID.randomUUID().toString().replace("-", ""));
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", header);// post请求application/json类型参数
        saveInterfaceLog(body,result,path,pathStr[1]);
        return result;
    }
    public static String startDoPostStringArtemis(String[] pathStr,Map<String, String> querys,Map<String, String> header,String body){
        Map<String, String> path = getPath(pathStr[0]);
        header.put("tagId", UUID.randomUUID().toString().replace("-", ""));
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, querys, null, "application/json", header);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        saveInterfaceLog(body,result,path,pathStr[1]);
        return result;
    }
@@ -655,7 +664,7 @@
     */
    public static String platformStatus(String param) {
        if(StringUtils.isNotBlank(param)){
            return startDoPostStringArtemis(HKConstants.InterfacePath.platformStatus+"?platformIds="+param,null);
            return startDoPostStringArtemis(HKConstants.InterfacePath.platformStatus,"?platformIds="+param,null);
        }else{
            return startDoPostStringArtemis(HKConstants.InterfacePath.platformStatus,null);
        }
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformWaterGasMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.doumee.dao.business;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.PlatformWaterGas;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2024/08/26 16:22
 */
public interface PlatformWaterGasMapper extends BaseMapper<PlatformWaterGas> {
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitsMapper.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.Visits;
import com.github.yulichang.base.MPJBaseMapper;
import java.util.List;
@@ -9,6 +10,6 @@
 * @author æ±Ÿè¹„蹄
 * @date 2023/11/30 15:33
 */
public interface VisitsMapper extends BaseMapper<Visits> {
public interface VisitsMapper extends MPJBaseMapper<Visits> {
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/ApproveDTO.java
@@ -18,7 +18,7 @@
    @ApiModelProperty(value = "关联业务主键")
    private Integer objId;
    @ApiModelProperty(value = "关联业务类型:0非施工人员访客申请 1非施工人员访客申请 2访客报备 3公车市内用车 4公车室外用车 5市公司物流车预约")
    @ApiModelProperty(value = "关联业务类型:0非施工人员访客申请 1非施工人员访客申请 2访客报备 3公车市内用车 4公车室外用车 5市公司物流车预约 6入园预约")
    private Integer objType;
    @ApiModelProperty(value = "2审批通过 3审批未通过")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Approve.java
@@ -117,8 +117,8 @@
    @ExcelColumn(name="是否修改目的地 0否 1是")
    private Integer addrParam;
    @ApiModelProperty(value = "关联业务类型:0非施工人员访客申请 1非施工人员访客申请 2访客报备 3公车市内用车 4公车室外用车 5市公司物流车预约", example = "1")
    @ExcelColumn(name="关联业务类型:0非施工人员访客申请 1非施工人员访客申请 2访客报备 3公车市内用车 4公车室外用车 5市公司物流车预约")
    @ApiModelProperty(value = "关联业务类型:0非施工人员访客申请 1非施工人员访客申请 2访客报备 3公车市内用车 4公车室外用车 5市公司物流车预约  6入园原因", example = "1")
    @ExcelColumn(name="关联业务类型:0非施工人员访客申请 1非施工人员访客申请 2访客报备 3公车市内用车 4公车室外用车 5市公司物流车预约  6入园原因")
    private Integer objType;
    @ApiModelProperty(value = "类型 0审批 1抄送", example = "1")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/ApproveTempl.java
@@ -52,8 +52,8 @@
    @ExcelColumn(name="备注")
    private String remark;
    @ApiModelProperty(value = "名称 0非施工人员访客申请 1施工人员访客申请 2访客报备 3公车市内用车 4公车室外用车 5市公司物流车预约", example = "1")
    @ExcelColumn(name="名称 0非施工人员访客申请 1施工人员访客申请 2访客报备 3公车市内用车 4公车室外用车 5市公司物流车预约")
    @ApiModelProperty(value = "名称 0非施工人员访客申请 1施工人员访客申请 2访客报备 3公车市内用车 4公车室外用车 5市公司物流车预约 6入园原因", example = "1")
    @ExcelColumn(name="名称 0非施工人员访客申请 1施工人员访客申请 2访客报备 3公车市内用车 4公车室外用车 5市公司物流车预约 6入园原因")
    private Integer type;
    @ApiModelProperty(value = "名称")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformBooks.java
@@ -136,6 +136,10 @@
    @TableField(exist = false)
    private String queryDate;
    @ApiModelProperty(value = "图片前缀")
    @TableField(exist = false)
    private String prefixUrl;
    @ApiModelProperty(value = "审批信息数据")
    @TableField(exist = false)
    private ApproveDataVO approveDateVO;
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java
@@ -264,7 +264,15 @@
    @ApiModelProperty(value = "前方排队数量", example = "1")
    @TableField(exist = false)
    private Long lineUpNum;
    private Integer lineUpNum;
    @ApiModelProperty(value = "预计等待时间", example = "1")
    @TableField(exist = false)
    private String waitTime;
    @ApiModelProperty(value = "预计完成时间", example = "1")
    @TableField(exist = false)
    private String finishTimeStr;
    @ApiModelProperty(value = "关联月台组编码(关联platform_group表)", example = "1")
    @TableField(exist = false)
@@ -278,6 +286,9 @@
    @TableField(exist = false)
    private BigDecimal getDistance;
    @ApiModelProperty(value = "月台作业效率(万支/小时)", hidden = true)
    @TableField(exist = false)
    private BigDecimal workRate;
    @ApiModelProperty(value = "业务触发时间  æ—¶é—´")
    @TableField(exist = false)
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWaterGas.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,85 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.core.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import java.math.BigDecimal;
/**
 * æœˆå°_用水用气信息记录表
 * @author æ±Ÿè¹„蹄
 * @date 2024/08/26 16:22
 */
@Data
@ApiModel("月台_用水用气信息记录表")
@TableName("`platform_water_gas`")
public class PlatformWaterGas  extends LoginUserModel {
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
    private Integer id;
    @ApiModelProperty(value = "创建人编码", example = "1")
    @ExcelColumn(name="创建人编码")
    private Integer creator;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name="创建时间")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码", example = "1")
    @ExcelColumn(name="更新人编码")
    private Integer editor;
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name="更新时间")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "1")
    @ExcelColumn(name="是否删除0否 1是")
    private Integer isdeleted;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name="备注")
    private String remark;
    @ApiModelProperty(value = "时间(年月)")
    @ExcelColumn(name="时间(年月)")
    private Date timeInfo;
    @ApiModelProperty(value = "排序码", example = "1")
    @ExcelColumn(name="排序码")
    private Integer sortnum;
    @ApiModelProperty(value = "类型 0用电 1用电 2油耗", example = "1")
    @ExcelColumn(name="类型 0用电 1用电 2油耗")
    private Integer type;
    @ApiModelProperty(value = "数量 (用电顿,用电度; æ²¹è€—L)", example = "1")
    @ExcelColumn(name="数量 (用电顿,用电度; æ²¹è€—L)")
    private BigDecimal num;
    @ApiModelProperty(value = "说明")
    @ExcelColumn(name="说明")
    private String content;
    @ApiModelProperty(value = "车牌号")
    @ExcelColumn(name="车牌号")
    private String carCode;
    @ApiModelProperty(value = "开始时间")
    @TableField(exist = false)
    private Date startTime;
    @ApiModelProperty(value = "开始时间")
    @TableField(exist = false)
    private Date endTime;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/PlatformBooksApplyDTO.java
@@ -19,6 +19,8 @@
@Api(tags = "入园预约申请信息" )
public class PlatformBooksApplyDTO {
    @ApiModelProperty(value = "主键 - ä¿®æ”¹ä½¿ç”¨")
    private Integer id;
    @ApiModelProperty(value = "合同号")
    private String contractNum;
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/DriverHomeVO.java
@@ -19,4 +19,11 @@
    @ApiModelProperty(value = "月台任务列表")
    private List<PlatformJob> platformJobList;
    @ApiModelProperty(value = "预约指南")
    private String bookingTips;
    @ApiModelProperty(value = "园区导览图")
    private String reservationMap;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java
@@ -112,6 +112,8 @@
    void createApproveFlow(Integer tempType,Integer businessId,Integer createMemberId);
    void createApproveForPlatfrom(Integer tempId,Integer businessId,Integer createMemberId);
    ApproveDataVO arrangeApprovedData(Integer businessId, Integer businessType, Integer memberId);
    void approved(ApproveDTO approveDTO);
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java
@@ -1,7 +1,9 @@
package com.doumee.service.business;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.Platform;
import com.doumee.dao.business.model.PlatformJob;
import com.doumee.dao.web.reqeust.JobDetailDTO;
import com.doumee.dao.web.reqeust.JobOperateDTO;
@@ -102,7 +104,7 @@
     */
    long count(PlatformJob platformJob);
    DriverHomeVO getDriverHome(Integer memberId);
    DriverHomeVO getDriverHome(LoginUserInfo loginUserInfo);
    /**
     * è·ç¦»ç­¾åˆ°
@@ -172,4 +174,12 @@
     */
    void finishWork(JobOperateDTO jobOperateDTO);
    /**
     * èŽ·å–æœˆå°ä¸‹çš„ä»»åŠ¡ä¿¡æ¯
     * @param groupId
     * @param loginUserInfo
     * @return
     */
    List<Platform> getPlatformList(Integer groupId, LoginUserInfo loginUserInfo);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformWaterGasService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,101 @@
package com.doumee.service.business;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.LoginUserModel;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.PlatformWaterGas;
import java.util.List;
/**
 * æœˆå°_用水用气信息记录表Service定义
 * @author æ±Ÿè¹„蹄
 * @date 2024/08/26 16:22
 */
public interface PlatformWaterGasService {
    /**
     * åˆ›å»º
     *
     * @param platformWaterGas å®žä½“对象
     * @return Integer
     */
    Integer create(PlatformWaterGas platformWaterGas);
    /**
     * ä¸»é”®åˆ é™¤
     *
     * @param id ä¸»é”®
     */
    void deleteById(Integer id);
    /**
     * åˆ é™¤
     *
     * @param platformWaterGas å®žä½“对象
     */
    void delete(PlatformWaterGas platformWaterGas);
    void deleteById(Integer id, LoginUserInfo user);
    /**
     * æ‰¹é‡ä¸»é”®åˆ é™¤
     *
     * @param ids ä¸»é”®é›†
     */
    void deleteByIdInBatch(List<Integer> ids);
    void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user);
    /**
     * ä¸»é”®æ›´æ–°
     *
     * @param platformWaterGas å®žä½“对象
     */
    void updateById(PlatformWaterGas platformWaterGas);
    /**
     * æ‰¹é‡ä¸»é”®æ›´æ–°
     *
     * @param platformWaterGass å®žä½“集
     */
    void updateByIdInBatch(List<PlatformWaterGas> platformWaterGass);
    /**
     * ä¸»é”®æŸ¥è¯¢
     *
     * @param id ä¸»é”®
     * @return PlatformWaterGas
     */
    PlatformWaterGas findById(Integer id);
    /**
     * æ¡ä»¶æŸ¥è¯¢å•条记录
     *
     * @param platformWaterGas å®žä½“对象
     * @return PlatformWaterGas
     */
    PlatformWaterGas findOne(PlatformWaterGas platformWaterGas);
    /**
     * æ¡ä»¶æŸ¥è¯¢
     *
     * @param platformWaterGas å®žä½“对象
     * @return List<PlatformWaterGas>
     */
    List<PlatformWaterGas> findList(PlatformWaterGas platformWaterGas);
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param pageWrap åˆ†é¡µå¯¹è±¡
     * @return PageData<PlatformWaterGas>
     */
    PageData<PlatformWaterGas> findPage(PageWrap<PlatformWaterGas> pageWrap);
    /**
     * æ¡ä»¶ç»Ÿè®¡
     *
     * @param platformWaterGas å®žä½“对象
     * @return long
     */
    long count(PlatformWaterGas platformWaterGas);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java
@@ -141,4 +141,6 @@
    void  visitCancel(Integer visitId);
    void resetPassword(ResetPasswordDTO resetPasswordDTO);
    void visitResend(Integer visitId);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
@@ -31,6 +31,7 @@
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import io.swagger.models.auth.In;
import javafx.application.Platform;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.xpath.operations.Bool;
@@ -388,6 +389,52 @@
    }
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void createApproveForPlatfrom(Integer tempId,Integer businessId,Integer createMemberId){
        //查询处理模板
        ApproveTempl approveTempl = approveTemplMapper.selectById(tempId);
        if(Objects.isNull(approveTempl)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到审批流配置模板");
        }
        //查询配置流程
        List<ApproveParam> approveParamAllList = approveParamMapper.selectList(new QueryWrapper<ApproveParam>()
                .lambda().eq(ApproveParam::getIsdeleted,Constants.ZERO)
                .eq(ApproveParam::getTemplId,approveTempl.getId())
                .orderByAsc(ApproveParam::getType)
                .orderByAsc(ApproveParam::getLevel)
        );
        if(Objects.isNull(approveParamAllList)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未配置审批流程");
        }
        //审批配置
        List<ApproveParam> approveParamList = approveParamAllList.stream().filter(i->i.getType().equals(Constants.ZERO)).collect(Collectors.toList());
        if(Objects.isNull(approveParamList)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未配置审批流程");
        }
        List<ApproveParam> approveCopyList = approveParamAllList.stream().filter(i->i.getType().equals(Constants.ONE)).collect(Collectors.toList());
        Member createMember = memberMapper.selectById(createMemberId);
        if(Objects.isNull(createMember)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"申请人组织信息异常");
        }
        List<Approve> approveList = new ArrayList<>();
        this.organizeApproveData(approveTempl,approveParamList,createMember,businessId,approveList);
        if(CollectionUtils.isEmpty(approveList)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审批流配置错误");
        }
        //处理抄送数据
        if(CollectionUtils.isNotEmpty(approveCopyList)){
            this.organizeApproveCopyData(approveTempl,approveCopyList,businessId,approveList);
        }
        approveJoinMapper.insert(approveList);
    }
    /**
     * ç»„织审批流数据
     * @param approveTempl
@@ -555,8 +602,17 @@
            jsonMap.put("eTime", "结束时间:" + DateUtil.DateToStr(carUseBook.getEndTime() , "yyyy-MM-dd HH:mm"));
            jsonMap.put("usrNum", StringUtils.isBlank(carUseBook.getMemberIds())?"乘车人数: 0人": "乘车人数: " +carUseBook.getMemberIds().split(",").length +"人");
            jsonMap.put("mdd", StringUtils.isBlank(carUseBook.getAddr())?"目的地: - ": "目的地:" +carUseBook.getAddr());
        }else {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED);
        }else if(Constants.equalsInteger(noticeType,Constants.noticesObjectType.reason)){
            //物流车预约
            PlatformBooks platformBooks = platformBooksMapper.selectById(businessId);
            if(Objects.isNull(platformBooks)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到业务数据信息");
            }
            title = "【物流车入园预约】申请人 - " + platformBooks.getDriverName();
            jsonMap.put("inType", "入库类型:"+(Constants.equalsInteger(platformBooks.getInType(),Constants.ZERO)?"整托盘":"件烟"));
            jsonMap.put("totalNum", "总运输量:"+platformBooks.getTotalNum()+"万支");
            jsonMap.put("arriveDate", "到场时间:" + DateUtil.DateToStr(platformBooks.getArriveDate() , "yyyy-MM-dd HH:mm"));
            jsonMap.put("carNum", "车牌照:"+platformBooks.getCarCodeFront());
        }
        return title;
    }
@@ -1345,7 +1401,7 @@
        }else if(approveDTO.getObjType().equals(Constants.approveObjectType.cityUseCar)||approveDTO.getObjType().equals(
                Constants.approveObjectType.unCityUseCar)){
            this.updDriver(approveDTO,approve,true);
        }else if(approveDTO.getObjType().equals(Constants.approveObjectType.logisticsCarUse)){
        }else if(approveDTO.getObjType().equals(Constants.approveObjectType.reason)){
            //物流车预约
            PlatformBooks platformBooks = platformBooksMapper.selectById(approveDTO.getObjId());
            if(Objects.isNull(platformBooks)){
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InterfaceLogServiceImpl.java
@@ -166,6 +166,6 @@
             days = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.HK_LOG_DEL_DAYS_LIMIT).getCode());
         }catch (Exception e){}
          interfaceLogMapper.delete(new UpdateWrapper<InterfaceLog>().lambda()
                  .apply("to_days(create_date)+"+days+" < to_days(now())") );
                  .apply("to_days(create_dat e)+"+days+" < to_days(now())") );
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -2002,6 +2002,7 @@
        systemUser.setUsername(registerDriverDTO.getPhone());
        systemUser.setRealname(registerDriverDTO.getName());
        systemUser.setMemberId(member.getId());
        systemUser.setMobile(registerDriverDTO.getPhone());
        systemUser.setSalt(salt);
        systemUser.setPassword(member.getPassward());
        systemUser.setStatus(Constants.ZERO);
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java
@@ -186,7 +186,7 @@
        }
        //查询每日配置的总预约量
        PlatformReason platformReason = platformReasonMapper.selectById(platformBooksCheckNumDTO.getReasonId());
        if(Objects.isNull(platformReason)|| Constants.equalsInteger(platformReason.getIsdeleted(),Constants.ZERO)){
        if(Objects.isNull(platformReason)|| !Constants.equalsInteger(platformReason.getIsdeleted(),Constants.ZERO)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"入园原因信息异常,请刷新重试");
        }
        List<PlatformBooks> platformBooksList = platformBooksMapper.selectList(new QueryWrapper<PlatformBooks>().lambda()
@@ -225,23 +225,15 @@
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        PlatformReason platformReason = platformReasonMapper.selectById(platformBooksApplyDTO.getReasonId());
        if(Objects.isNull(platformReason)|| Constants.equalsInteger(platformReason.getIsdeleted(),Constants.ZERO)){
        if(Objects.isNull(platformReason)|| !Constants.equalsInteger(platformReason.getIsdeleted(),Constants.ZERO)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"入园原因信息异常,请刷新重试");
        }
        ApproveTempl approveTempl = approveTemplMapper.selectOne(new QueryWrapper<ApproveTempl>().lambda()
                .eq(ApproveTempl::getIsdeleted,Constants.ZERO)
                .eq(ApproveTempl::getObjId,platformReason.getId())
                .last(" limit 1")
        );
        ApproveTempl approveTempl = approveTemplMapper.selectById(platformReason.getId());
        if(Objects.isNull(approveTempl)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未配置审批流,请联系管理员");
        }
        if(Constants.equalsInteger(platformBooksApplyDTO.getUserId(),platformBooksApplyDTO.getDriverId())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"人员信息匹配错误");
        }
        if(Objects.nonNull(platformReason.getLimitNum())&&platformReason.getLimitNum().compareTo(platformBooksApplyDTO.getTotalNum())>0){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"超出入园申请线质量");
        if(!Constants.equalsInteger(approveTempl.getIsdeleted(),Constants.ZERO)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审批流已停用,请联系管理员");
        }
        PlatformBooks platformBooks = new PlatformBooks();
        BeanUtils.copyProperties(platformBooksApplyDTO,platformBooks);
@@ -252,9 +244,45 @@
        platformBooksMapper.insert(platformBooks);
        //创建审批流信息
        approveService.createApproveFlow(5,platformBooks.getId(),platformBooks.getDriverId());
        approveService.createApproveForPlatfrom(platformReason.getApproveTemplId(),platformBooks.getId(),platformBooks.getDriverId());
        return platformBooks.getId();
    }
//    @Override
    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
    public Integer edit(PlatformBooksApplyDTO platformBooksApplyDTO){
        if(Objects.isNull(platformBooksApplyDTO)
                || Objects.isNull(platformBooksApplyDTO.getId())
                || StringUtils.isBlank(platformBooksApplyDTO.getContractNum())
                || Objects.isNull(platformBooksApplyDTO.getArriveDate())
                || Objects.isNull(platformBooksApplyDTO.getInType())
                || Objects.isNull(platformBooksApplyDTO.getTotalNum())
                || StringUtils.isBlank(platformBooksApplyDTO.getCarCodeFront())
                || StringUtils.isBlank(platformBooksApplyDTO.getCarCodeBack())
                || Objects.isNull(platformBooksApplyDTO.getDriverId())
                || StringUtils.isBlank(platformBooksApplyDTO.getDriverPhone())
                || StringUtils.isBlank(platformBooksApplyDTO.getDriverName())
                || StringUtils.isBlank(platformBooksApplyDTO.getTransportImg())
                || Objects.isNull(platformBooksApplyDTO.getReasonId())
                || StringUtils.isBlank(platformBooksApplyDTO.getInReason())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        PlatformBooks platformBooks = platformBooksMapper.selectById(platformBooksApplyDTO.getId());
        if(Objects.isNull(platformBooks)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(!Constants.equalsInteger(platformBooks.getStatus(),Constants.ZERO)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"业务状态已流转");
        }
        BeanUtils.copyProperties(platformBooksApplyDTO,platformBooks);
        platformBooks.setEditDate(new Date());
        platformBooksMapper.insert(platformBooks);
        return platformBooks.getId();
    }
    @Override
@@ -263,8 +291,12 @@
        if(Objects.isNull(model)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到预约记录");
        }
        String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
                systemDictDataBiz.queryByCode(Constants.FTP,Constants.PLATFORM).getCode();
        model.setPrefixUrl(prefixUrl);
        ApproveDataVO approveDataVO = approveService.arrangeApprovedData(id,
               5,
               6,
                memberId);
        model.setApproveDateVO(approveDataVO);
        List<Approve> approveList = approveDataVO.getApproveList();
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformGroupServiceImpl.java
@@ -6,19 +6,24 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.PlatformGroupMapper;
import com.doumee.dao.business.PlatformShowParamMapper;
import com.doumee.dao.business.join.PlatformJobJoinMapper;
import com.doumee.dao.business.join.PlatformJoinMapper;
import com.doumee.dao.business.model.Platform;
import com.doumee.dao.business.model.PlatformGroup;
import com.doumee.dao.business.model.PlatformJob;
import com.doumee.dao.business.model.PlatformShowParam;
import com.doumee.service.business.PlatformGroupService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.service.business.PlatformJobService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.java.Log;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -44,6 +49,9 @@
    @Autowired
    private PlatformShowParamMapper platformShowParamMapper;
    @Autowired
    private PlatformJobJoinMapper platformJobJoinMapper;
    @Override
    public Integer create(PlatformGroup platformGroup) {
@@ -206,7 +214,6 @@
                        .selectAll(Platform.class)
                        .select(" ( select count(1) from platform_job pj where t.id = pj.PLATFORM_ID and pj.STATUS = "+Constants.PlatformJobStatus.WORKING.getKey()+" ) as workStatus ")
                        .eq(Platform::getIsdeleted, Constants.ZERO)
                        .eq(Platform::getStatus, Constants.ZERO)
                        .eq(Objects.nonNull(queryType)&&!Constants.equalsInteger(queryType,Constants.ZERO),Platform::getStatus,Constants.ZERO)
        );
        //处理我的月台信息 æ˜¯å¦é…ç½®éšè—
@@ -240,4 +247,7 @@
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
@@ -4,6 +4,7 @@
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
@@ -12,6 +13,7 @@
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.*;
import com.doumee.dao.business.join.PlatformJobJoinMapper;
import com.doumee.dao.business.join.PlatformJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.web.reqeust.JobDetailDTO;
import com.doumee.dao.web.reqeust.JobOperateDTO;
@@ -33,6 +35,7 @@
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@@ -58,8 +61,9 @@
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private PlatformMapper platformMapper;
    private PlatformJoinMapper platformJoinMapper;
    @Autowired
    private PlatformLogMapper platformLogMapper;
@@ -69,6 +73,12 @@
    @Autowired
    private PlatformWmsDetailMapper platformWmsDetailMapper;
    @Autowired
    private PlatformGroupMapper platformGroupMapper;
    @Autowired
    private PlatformShowParamMapper platformShowParamMapper;
    @Override
@@ -131,9 +141,13 @@
    @Override
    public PageData<PlatformJob> findPage(PageWrap<PlatformJob> pageWrap) {
        IPage<PlatformJob> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<PlatformJob> queryWrapper = new QueryWrapper<>();
        MPJLambdaWrapper<PlatformJob> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        queryWrapper.lambda()
        queryWrapper
                .selectAll(PlatformJob.class)
                .selectAs(Platform::getName,PlatformJob::getPlatformName)
                .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
                .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                .eq(pageWrap.getModel().getId() != null, PlatformJob::getId, pageWrap.getModel().getId())
                .eq(pageWrap.getModel().getCreator() != null, PlatformJob::getCreator, pageWrap.getModel().getCreator())
                .ge(pageWrap.getModel().getCreateDate() != null, PlatformJob::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
@@ -216,13 +230,18 @@
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        PageData<PlatformJob> pageData = PageData.from(platformJobMapper.selectPage(page, queryWrapper));
        pageData.getRecords().forEach(i->{
       IPage<PlatformJob> platformJobIPage = platformJobJoinMapper.selectJoinPage(page,PlatformJob.class,queryWrapper);
        platformJobIPage.getRecords().forEach(i->{
            i.dealTime();
            this.getWmsJobData(i);
        });
        return pageData;
        return PageData.from(platformJobIPage);
//        PageData<PlatformJob> pageData = PageData.from(platformJobMapper.selectPage(page, queryWrapper));
//        pageData.getRecords().forEach(i->{
//            i.dealTime();
//            this.getWmsJobData(i);
//        });
//        return pageData;
    }
@@ -250,12 +269,60 @@
                platformWmsJob.setPlatformWmsDetailList(platformWmsDetailList);
                platformJob.setPlatformWmsJob(platformWmsJob);
            }
        }
        }
    }
    public void queryWaitNum(PlatformJob platformJob){
        if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())){
            //查询前方排队数量
            List<PlatformJob> lineUpNum =  platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda()
                    .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                    .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey()
                            ,Constants.PlatformJobStatus.IN_WAIT.getKey()
                            ,Constants.PlatformJobStatus.TRANSFERING.getKey())
                    .gt(PlatformJob::getSignDate,platformJob.getSignDate())
                    .eq(PlatformJob::getPlatformGroupId,platformJob.getPlatformGroupId())
                    .like(PlatformJob::getArriveDate,DateUtil.getDate(platformJob.getArriveDate(),"yyyy-MM-dd")));
            platformJob.setLineUpNum(lineUpNum.size());
            BigDecimal sumWorkRate = platformJob.getTotalNum();
            for (PlatformJob linePlatformJob:lineUpNum) {
                this.getWmsJobData(linePlatformJob);
                sumWorkRate = sumWorkRate.add(linePlatformJob.getTotalNum());
            }
            //计算预计等待时间
            List<Platform> platformList = platformJoinMapper.selectList(new QueryWrapper<Platform>().lambda().eq(Platform::getIsdeleted,Constants.ZERO).eq(Platform::getGroupId,platformJob.getPlatformGroupId()));
            BigDecimal workRate = platformList.stream().map(m->m.getWorkRate()).reduce(BigDecimal.ZERO,BigDecimal::add);
            if(sumWorkRate.compareTo(BigDecimal.ZERO) == Constants.ZERO|| workRate.compareTo(BigDecimal.ZERO)  == Constants.ZERO ){
                BigDecimal sumMinute = sumWorkRate.divide(workRate,1, RoundingMode.HALF_DOWN).multiply(BigDecimal.valueOf(60L));
                Integer sumMinuteInteger = sumMinute.intValue();
                Integer hours = sumMinuteInteger/60;
                Integer minus = sumMinuteInteger%60;
                String  waitTime = "预计等待:";
                if(!Constants.equalsInteger(hours,Constants.ZERO)){
                    waitTime = waitTime + hours + "小时";
                }
                if(!Constants.equalsInteger(hours,Constants.ZERO)){
                    waitTime = waitTime + minus + "分钟";
                }
                platformJob.setWaitTime(waitTime);
            }
        }else if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())){
            //查询最后开始任务的月台记录  æ—¥å¿—表  å› ä¸ºå­˜åœ¨å¼‚常挂起 è½¬ç§» ç­‰é—®é¢˜
            PlatformLog platformLog = platformLogMapper.selectOne(new QueryWrapper<PlatformLog>().lambda()
                    .eq(PlatformLog::getJobId,platformJob.getId())
                    .eq(PlatformLog::getObjType,Constants.PlatformJobStatus.WORKING.getKey())
                    .orderByDesc(PlatformLog::getCreateDate)
                    .last(" limit 1")
            );
            if(Objects.nonNull(platformLog)){
                BigDecimal sumMinute = platformJob.getTotalNum().divide(platformJob.getWorkRate(),1, RoundingMode.HALF_DOWN).multiply(BigDecimal.valueOf(60L));
                platformJob.setFinishTimeStr(DateUtil.DateToStr(DateUtil.afterMinutesDate(platformLog.getCreateDate(),sumMinute.intValue()),"HH:mm"));
            }
        }
    }
    @Override
    public long count(PlatformJob platformJob) {
        QueryWrapper<PlatformJob> wrapper = new QueryWrapper<>(platformJob);
@@ -264,17 +331,34 @@
    //TODO
    @Override
    public DriverHomeVO getDriverHome(Integer memberId){
    public DriverHomeVO getDriverHome(LoginUserInfo loginUserInfo){
        DriverHomeVO driverHomeVO = new DriverHomeVO();
        //TODO è½®æ’­å›¾
        List<PlatformJob> platformJobList =  platformJobMapper.selectList(new QueryWrapper<PlatformJob>()
                .lambda()
                .eq(PlatformJob::getDriverId,memberId)
//                        .like(PlatformJob::get)
                .orderByDesc(PlatformJob::getId));
        List<PlatformJob> platformJobList =  platformJobJoinMapper.selectJoinList(PlatformJob.class,new MPJLambdaWrapper<PlatformJob>()
                .selectAll(PlatformJob.class)
                .selectAs(Platform::getName,PlatformJob::getPlatformName)
                .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
                .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                .eq(PlatformJob::getDrivierPhone,loginUserInfo.getMobile())
                .like(PlatformJob::getArriveDate,DateUtil.getCurrDate())
                .orderByDesc(PlatformJob::getId)
        );
        for (PlatformJob platformJob:platformJobList) {
            //处理WSM数量
            this.getWmsJobData(platformJob);
            //查询前方排队数量
            this.queryWaitNum(platformJob);
        }
        driverHomeVO.setPlatformJobList(platformJobList);
        // å›­åŒºå¯¼è§ˆå›¾  å›¾ç‰‡
        driverHomeVO.setReservationMap(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.PLATFORM_GUIDEMAP).getCode());
        // é¢„约指南 æ–‡æœ¬
        driverHomeVO.setBookingTips(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.PLATFORM_BOOKING_TIPS).getCode());
        return driverHomeVO;
    }
@@ -369,18 +453,12 @@
            }
        }else if( Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())
                || Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.IN_WAIT.getKey())
        ){//查询排队情况
            Long lineUpNum =  platformJobMapper.selectCount(new QueryWrapper<PlatformJob>().lambda()
                    .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                    .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey()
                            ,Constants.PlatformJobStatus.IN_WAIT.getKey()
                            ,Constants.PlatformJobStatus.TRANSFERING.getKey())
                    .gt(PlatformJob::getSignDate,platformJob.getSignDate())
                    .like(PlatformJob::getArriveDate,DateUtil.getDate(platformJob.getArriveDate(),"yyyy-MM-dd")));
            platformJob.setLineUpNum(lineUpNum);
        ){
            //查询前方排队数量
            this.queryWaitNum(platformJob);
        }else if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())){
            //作业月台信息
            Platform platform = platformMapper.selectById(platformJob.getPlatformId());
            Platform platform = platformJoinMapper.selectById(platformJob.getPlatformId());
            if(Objects.nonNull(platform)){
                platformJob.setPlatformName(platform.getName());
            }
@@ -417,7 +495,7 @@
        );
        //获取所有月台组
        List<Integer> platformIdList = platformJobList.stream().map(m->m.getPlatformGroupId()).collect(Collectors.toList());
        List<Platform> platformList = platformMapper.selectList(new QueryWrapper<Platform>().lambda()
        List<Platform> platformList = platformJoinMapper.selectList(new QueryWrapper<Platform>().lambda()
                .eq(Platform::getIsdeleted,Constants.ZERO)
                .in(Platform::getId,platformIdList));
@@ -841,8 +919,79 @@
    }
    @Override
    public  List<Platform> getPlatformList(Integer groupId, LoginUserInfo loginUserInfo){
        //查询月台组下所有月台
        List<Platform> allPlatformList = platformJoinMapper.selectJoinList(Platform.class,
                new MPJLambdaWrapper<Platform>()
                        .selectAll(Platform.class)
                        .select(" ( select count(1) from platform_job pj where t.id = pj.PLATFORM_ID and pj.STATUS = "+Constants.PlatformJobStatus.WORKING.getKey()+" ) as workStatus ")
                        .eq(Platform::getIsdeleted, Constants.ZERO)
                        .eq(Platform::getStatus,Constants.ZERO)
                        .eq(Platform::getGroupId,groupId)
        );
        this.getPlatformShow(allPlatformList,loginUserInfo);
        for (Platform platform:allPlatformList) {
            this.getJobByPlatform(platform,loginUserInfo);
        }
        return allPlatformList;
    }
    /**
     * æŸ¥è¯¢æœˆå°çš„开启情况
     * @param allPlatformList
     * @param loginUserInfo
     */
    public void getPlatformShow(List<Platform> allPlatformList , LoginUserInfo loginUserInfo){
        //处理我的月台信息 æ˜¯å¦é…ç½®éšè—
        List<PlatformShowParam> platformShowParamList = platformShowParamMapper.selectList(new QueryWrapper<PlatformShowParam>()
                .lambda()
                .eq(PlatformShowParam::getIsdeleted, Constants.ZERO)
                .eq(PlatformShowParam::getMemberId,loginUserInfo.getMemberId())
        );
        //如果未配置该数据 åˆ™å…¨éƒ¨æ˜¾ç¤º
        if(CollectionUtils.isEmpty(platformShowParamList)){
            for (Platform platform:allPlatformList) {
                platform.setShowConfig(true);
            }
        }else{
            //根据配置显示数据
            for (PlatformShowParam platformShowParam:platformShowParamList) {
                for (Platform platform:allPlatformList) {
                    if(Constants.equalsInteger(platform.getId(),platformShowParam.getPlatformId())){
                        platform.setShowConfig(true);
                        break;
                    }
                }
            }
        }
    }
    /**
     * èŽ·å–æœˆå°ä¸‹çš„ä»»åŠ¡åˆ—è¡¨
     * @param platform
     * @param loginUserInfo
     */
    public void getJobByPlatform(Platform platform,LoginUserInfo loginUserInfo){
        List<PlatformJob> platformJobList =  platformJobJoinMapper.selectJoinList(PlatformJob.class,new MPJLambdaWrapper<PlatformJob>()
                .selectAll(PlatformJob.class)
                .selectAs(Platform::getName,PlatformJob::getPlatformName)
                .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
                .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                .eq(PlatformJob::getPlatformId,platform.getId())
                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                .eq(PlatformJob::getDrivierPhone,loginUserInfo.getMobile())
                .like(PlatformJob::getArriveDate, DateUtil.getCurrDate())
                .orderByDesc(PlatformJob::getId)
        );
        for (PlatformJob platformJob:platformJobList) {
            //处理WSM数量
            this.getWmsJobData(platformJob);
            //查询前方排队数量
            this.queryWaitNum(platformJob);
        }
        platform.setWorkJobList(platformJobList);
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformReasonServiceImpl.java
@@ -106,6 +106,7 @@
    @Override
    public List<PlatformReason> findList(PlatformReason platformReason) {
        QueryWrapper<PlatformReason> wrapper = new QueryWrapper<>(platformReason);
        wrapper.eq("isdeleted",Constants.ZERO);
        return platformReasonMapper.selectList(wrapper);
    }
  
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWaterGasServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,210 @@
package com.doumee.service.business.impl;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.LoginUserModel;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.PlatformWaterGasMapper;
import com.doumee.dao.business.model.PlatformReason;
import com.doumee.dao.business.model.PlatformWaterGas;
import com.doumee.service.business.PlatformWaterGasService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.util.CollectionUtils;
import java.util.Date;
import java.util.List;
/**
 * æœˆå°_用水用气信息记录表Service实现
 * @author æ±Ÿè¹„蹄
 * @date 2024/08/26 16:22
 */
@Service
public class PlatformWaterGasServiceImpl implements PlatformWaterGasService {
    @Autowired
    private PlatformWaterGasMapper platformWaterGasMapper;
    @Override
    public Integer create(PlatformWaterGas platformWaterGas) {
        if(platformWaterGas.getTimeInfo() ==null || platformWaterGas.getNum()==null
        ||(Constants.equalsInteger(platformWaterGas.getType(),Constants.TWO) && StringUtils.isBlank(platformWaterGas.getCarCode()))){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该年月数据已存在,请勿重新录入,可以尝试搜索后进行数据修改!");
        }
        if( platformWaterGasMapper.selectCount(new QueryWrapper<PlatformWaterGas>().lambda()
                .eq(PlatformWaterGas::getIsdeleted, Constants.ZERO)
                .apply("to_days(time_info) = to_days('"+ DateUtil.getPlusTime2(platformWaterGas.getTimeInfo()) +"')")
                .eq(Constants.equalsInteger(platformWaterGas.getType(),Constants.TWO),PlatformWaterGas::getCarCode,platformWaterGas.getCarCode()))>0){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该年月数据已存在,请勿重新录入,可以尝试搜索后进行数据修改!");
        }
        platformWaterGas.setIsdeleted(Constants.ZERO);
        platformWaterGas.setType(Constants.formatIntegerNum(platformWaterGas.getType()));
        platformWaterGas.setCreator(platformWaterGas.getLoginUserInfo().getId());
        platformWaterGas.setCreateDate(new Date());
        platformWaterGas.setEditDate(platformWaterGas.getCreateDate());
        platformWaterGas.setEditor(platformWaterGas.getCreator());
        platformWaterGasMapper.insert(platformWaterGas);
        return platformWaterGas.getId();
    }
    @Override
    public void deleteById(Integer id) {
        platformWaterGasMapper.deleteById(id);
    }
    @Override
    public void deleteById(Integer id, LoginUserInfo model) {
        PlatformWaterGas param = new PlatformWaterGas();
        param.setId(id);
        param.setIsdeleted(Constants.ONE);
        param.setEditor(model.getId());
        param.setEditDate(new Date());
        platformWaterGasMapper.updateById(param);
    }
    @Override
    public void delete(PlatformWaterGas platformWaterGas) {
        UpdateWrapper<PlatformWaterGas> deleteWrapper = new UpdateWrapper<>(platformWaterGas);
        platformWaterGasMapper.delete(deleteWrapper);
    }
    @Override
    public void deleteByIdInBatch(List<Integer> ids) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        platformWaterGasMapper.deleteBatchIds(ids);
    }
    @Override
    public void deleteByIdInBatch(List<Integer> ids, LoginUserInfo model) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        for(Integer id : ids){
            deleteById(id,model);
        }
    }
    @Override
    public void updateById(PlatformWaterGas platformWaterGas) {
        if(platformWaterGas.getTimeInfo() ==null
                || platformWaterGas.getId()==null
                || platformWaterGas.getNum()==null
                ||(Constants.equalsInteger(platformWaterGas.getType(),Constants.TWO) && StringUtils.isBlank(platformWaterGas.getCarCode()))){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该年月数据已存在,请勿重新录入,可以尝试搜索后进行数据修改!");
        }
        if( platformWaterGasMapper.selectCount(new QueryWrapper<PlatformWaterGas>().lambda()
                .eq(PlatformWaterGas::getIsdeleted, Constants.ZERO)
                .ne(PlatformWaterGas::getId,platformWaterGas.getId())
                .apply("to_days(time_info) = to_days('"+ DateUtil.getPlusTime2(platformWaterGas.getTimeInfo()) +"')")
                .eq(Constants.equalsInteger(platformWaterGas.getType(),Constants.TWO),PlatformWaterGas::getCarCode,platformWaterGas.getCarCode()))>0){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该年月数据已存在,请勿重新录入,可以尝试搜索后进行数据修改!");
        }
        platformWaterGas.setEditDate(new Date());
        platformWaterGas.setEditor(platformWaterGas.getLoginUserInfo().getId());
        platformWaterGasMapper.updateById(platformWaterGas);
    }
    @Override
    public void updateByIdInBatch(List<PlatformWaterGas> platformWaterGass) {
        if (CollectionUtils.isEmpty(platformWaterGass)) {
            return;
        }
        for (PlatformWaterGas platformWaterGas: platformWaterGass) {
            this.updateById(platformWaterGas);
        }
    }
    @Override
    public PlatformWaterGas findById(Integer id) {
        return platformWaterGasMapper.selectById(id);
    }
    @Override
    public PlatformWaterGas findOne(PlatformWaterGas platformWaterGas) {
        QueryWrapper<PlatformWaterGas> wrapper = new QueryWrapper<>(platformWaterGas);
        return platformWaterGasMapper.selectOne(wrapper);
    }
    @Override
    public List<PlatformWaterGas> findList(PlatformWaterGas platformWaterGas) {
        QueryWrapper<PlatformWaterGas> wrapper = new QueryWrapper<>(platformWaterGas);
        return platformWaterGasMapper.selectList(wrapper);
    }
    @Override
    public PageData<PlatformWaterGas> findPage(PageWrap<PlatformWaterGas> pageWrap) {
        IPage<PlatformWaterGas> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<PlatformWaterGas> queryWrapper = new QueryWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.lambda().eq(PlatformWaterGas::getId, pageWrap.getModel().getId());
        }
        if (pageWrap.getModel().getCreator() != null) {
            queryWrapper.lambda().eq(PlatformWaterGas::getCreator, pageWrap.getModel().getCreator());
        }
        if (pageWrap.getModel().getCreateDate() != null) {
            queryWrapper.lambda().ge(PlatformWaterGas::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.lambda().le(PlatformWaterGas::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
        }
        if (pageWrap.getModel().getEditor() != null) {
            queryWrapper.lambda().eq(PlatformWaterGas::getEditor, pageWrap.getModel().getEditor());
        }
        if (pageWrap.getModel().getEditDate() != null) {
            queryWrapper.lambda().ge(PlatformWaterGas::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.lambda().le(PlatformWaterGas::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
        }
        if (pageWrap.getModel().getIsdeleted() != null) {
            queryWrapper.lambda().eq(PlatformWaterGas::getIsdeleted, pageWrap.getModel().getIsdeleted());
        }
        if (pageWrap.getModel().getRemark() != null) {
            queryWrapper.lambda().eq(PlatformWaterGas::getRemark, pageWrap.getModel().getRemark());
        }
        if (pageWrap.getModel().getTimeInfo() != null) {
            queryWrapper.lambda().ge(PlatformWaterGas::getTimeInfo, Utils.Date.getStart(pageWrap.getModel().getTimeInfo()));
            queryWrapper.lambda().le(PlatformWaterGas::getTimeInfo, Utils.Date.getEnd(pageWrap.getModel().getTimeInfo()));
        }
        if (pageWrap.getModel().getSortnum() != null) {
            queryWrapper.lambda().eq(PlatformWaterGas::getSortnum, pageWrap.getModel().getSortnum());
        }
        if (pageWrap.getModel().getType() != null) {
            queryWrapper.lambda().eq(PlatformWaterGas::getType, pageWrap.getModel().getType());
        }
        if (pageWrap.getModel().getNum() != null) {
            queryWrapper.lambda().eq(PlatformWaterGas::getNum, pageWrap.getModel().getNum());
        }
        if (pageWrap.getModel().getContent() != null) {
            queryWrapper.lambda().eq(PlatformWaterGas::getContent, pageWrap.getModel().getContent());
        }
        if (pageWrap.getModel().getCarCode() != null) {
            queryWrapper.lambda().like(PlatformWaterGas::getCarCode, pageWrap.getModel().getCarCode());
        }
        if (pageWrap.getModel().getStartTime() != null) {
            queryWrapper.lambda().ge(PlatformWaterGas::getTimeInfo, pageWrap.getModel().getStartTime());
        }
        if (pageWrap.getModel().getEndTime() != null) {
            queryWrapper.lambda().le(PlatformWaterGas::getTimeInfo,  pageWrap.getModel().getEndTime());
        }
        queryWrapper.lambda().orderByDesc(PlatformWaterGas::getTimeInfo ,PlatformWaterGas::getCarCode);
        return PageData.from(platformWaterGasMapper.selectPage(page, queryWrapper));
    }
    @Override
    public long count(PlatformWaterGas platformWaterGas) {
        QueryWrapper<PlatformWaterGas> wrapper = new QueryWrapper<>(platformWaterGas);
        return platformWaterGasMapper.selectCount(wrapper);
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitReasonServiceImpl.java
@@ -139,4 +139,8 @@
        QueryWrapper<VisitReason> wrapper = new QueryWrapper<>(visitReason);
        return visitReasonMapper.selectCount(wrapper);
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -47,6 +47,7 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.service.business.impl.hksync.HkSyncVisitServiceImpl;
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
@@ -1386,6 +1387,40 @@
                .eq(Retention::getType,Constants.memberType.visitor)
                .eq(Retention::getMemberId,visits.getMemberId()));
    }
    @Override
    public  void visitResend(Integer visitId) {
        MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Visits.class);
        queryWrapper.selectAs(Member::getName,Visits::getReceptMemberName)
                .selectAs(Member::getHkId,Visits::getReceptMemberHkId)
                .leftJoin(Member.class,Member::getId,Visits::getReceptMemberId)
                .eq(Visits::getId,visitId)//未同步到海康
                .last("limit 1");
        Visits visits   = visitsMapper.selectJoinOne(Visits.class,queryWrapper);
        if(Objects.isNull(visits)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(!visits.getStatus().equals(Constants.VisitStatus.xfFail)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"访客记录状态错误,请刷新重试");
        }
        List<DeviceRole> roleList = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
                .eq(DeviceRole::getType, Constants.ONE));
        String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
                +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
      HkSyncVisitServiceImpl.getUpdateModelByResponseIccm(visits,new Date(),roleList,path);
      if(Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.xfSuccess)){
          //如果下发成功,
          visitsMapper.updateById(visits);
          if(Objects.isNull(visits.getParentId())){
              wxPlatNotice.sendVisitAuditTemplateNotice(visits,
                      systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_PREFIX).getCode(),
                      systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_AUDIT_VISIT).getCode());
          }
      }else{
          throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"重新下发会失败!");
      }
    }
    @Override
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncLoginAuthServiceImpl.java
@@ -79,7 +79,7 @@
                String st = result.getData().getST();
                try {
                    String serviceUrl =   systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_NGINX_URL).getCode()
                            +(HKConstants.InterfacePath.tokenLoginUrl.replace("${st}", st).replace("${service}", URLEncoder.encode(url, "UTF-8")));
                            +(HKConstants.InterfacePath.tokenLoginUrl[0].replace("${st}", st).replace("${service}", URLEncoder.encode(url, "UTF-8")));
//                    redisTemplate.opsForValue().set(Constants.REDIS_HK_TOKEN_KEY+param.getUsername()+param.getLabel(),serviceUrl,1, TimeUnit.HOURS);
                    return serviceUrl;
                }catch (Exception e){
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
@@ -421,7 +421,7 @@
        c.setHkStatus(Constants.ONE);
        c.setHkDate(date);
    }
    private void getUpdateModelByResponseIccm(  Visits c,Date date, List<DeviceRole> roleList,String path ) {
    public static void getUpdateModelByResponseIccm(  Visits c,Date date, List<DeviceRole> roleList,String path ) {
        String code = null;
        String id = null;
        String qrcode = null;
@@ -511,7 +511,7 @@
        request.setVisitorPermissionSet(getVisitPermissonRequest(roleList,c));
        return  request;
    }
    private IccmAppointmentMDJRequest getHkMDJRequestParamIccm(Visits c,List<DeviceRole> roleList,String path) {
    public static IccmAppointmentMDJRequest getHkMDJRequestParamIccm(Visits c,List<DeviceRole> roleList,String path) {
        IccmAppointmentMDJRequest request = new IccmAppointmentMDJRequest();
        IccmAppointmentVistorRequest info =getRequestInfoByVisitIccm(c,path);
        if(info == null ){
@@ -521,7 +521,7 @@
        request.setVisitStartTime(DateUtil.getISO8601Timestamp2(c.getStarttime()));
        request.setVisitEndTime(DateUtil.getISO8601Timestamp2(c.getEndtime()));
        request.setReceptionistId(c.getReceptMemberHkId());//被访人海康编码
        if(StringUtils.isNotBlank(c.getReason())){
       /* if(StringUtils.isNotBlank(c.getReason())){
            char[] charArray = c.getReason().toCharArray();
            int length = charArray.length;
            if(length>32){
@@ -529,7 +529,7 @@
            }else{
                request.setVisitPurpose(c.getReason());
            }
        }
        }*/
        request.setVisitorInfo(info);
        request.setVisitorPermissionSet(getVisitPermissonRequestIccm(roleList,c));
        return  request;
@@ -555,7 +555,7 @@
        }
        return  p;
    }
    private IccmPermissionSetRequest getVisitPermissonRequestIccm(List<DeviceRole> roleList, Visits c) {
    public static IccmPermissionSetRequest getVisitPermissonRequestIccm(List<DeviceRole> roleList, Visits c) {
        IccmPermissionSetRequest p = new IccmPermissionSetRequest();
        //获取权限组集合
        String[] roles = getHkRoles(c.getDoors(),roleList);
@@ -598,7 +598,7 @@
        request.setVisitorInfoList(infolist);
        return  request;
    }
    private IccmAppointmentRequest getHkRequestParaIccm(Visits c,List<DeviceRole> roleList,String path ) {
    public static  IccmAppointmentRequest getHkRequestParaIccm(Visits c,List<DeviceRole> roleList,String path ) {
        IccmAppointmentRequest request = new IccmAppointmentRequest();
        //申请人信息
        IccmAppointmentVistorRequest info =getRequestInfoByVisitIccm(c,path);
@@ -606,11 +606,11 @@
            //人脸为空,不能进行推送
            return  null;
        }
        request.setVisitStartTime(DateUtil.getISO8601Timestamp(c.getStarttime()));
        request.setVisitEndTime(DateUtil.getISO8601Timestamp(c.getEndtime()));
        request.setVisitStartTime(DateUtil.getISO8601Timestamp2(c.getStarttime()));
        request.setVisitEndTime(DateUtil.getISO8601Timestamp2(c.getEndtime()));
        request.setReceptionistId(c.getReceptMemberHkId());//被访人海康编码
        if(StringUtils.isNotBlank(c.getReason())){
      /*  if(StringUtils.isNotBlank(c.getReason())){
            char[] charArray = c.getReason().toCharArray();
            int length = charArray.length;
            if(length>32){
@@ -618,7 +618,7 @@
            }else{
                request.setVisitPurpose(c.getReason());
            }
        }
        }*/
        //获取权限组集合
        request.setVisitorPermissionSet(getVisitPermissonRequestIccm(roleList,c));
        List<IccmAppointmentVistorRequest> infolist = new ArrayList<>();
@@ -673,7 +673,7 @@
        return info;
    }
    private IccmAppointmentVistorRequest getRequestInfoByVisitIccm(Visits c,String path) {
    public static IccmAppointmentVistorRequest getRequestInfoByVisitIccm(Visits c,String path) {
        IccmAppointmentVistorRequest info = new IccmAppointmentVistorRequest();
        //人脸数据
        if(StringUtils.isBlank(c.getName())
@@ -720,7 +720,7 @@
        return info;
    }
    private String[] getHkRoles(String doors, List<DeviceRole> roleList) {
    public static String[] getHkRoles(String doors, List<DeviceRole> roleList) {
        if(StringUtils.isBlank(doors) || roleList.size()==0|| roleList.size()==0){
            return null;
        }