jiangping
2024-08-26 e23a1db0b60437f17d09d65c65f8fd0c8a5d88c7
最新版本
已添加14个文件
已修改15个文件
1621 ■■■■■ 文件已修改
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_service/src/main/java/com/doumee/api/BaseController.java 2 ●●● 补丁 | 查看 | 原始文档 | 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/PlatformWaterGasCloudController.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/VisitsCloudController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | 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/model/PlatformWaterGas.java 85 ●●●●● 补丁 | 查看 | 原始文档 | 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/InterfaceLogServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | 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/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_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/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/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_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/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/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/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/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/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;
        }