jiangping
2024-05-28 56d111945916746dd9a2486665bf3be6eb58bdf7
最新版本
已添加1个文件
已修改9个文件
536 ■■■■■ 文件已修改
admin/src/api/business/carUseBook.js 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaHiddenDangerWindow.vue 70 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/operation/danger/record.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/operation/serviceCar/apprRecord.vue 295 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/Constants.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/system/MultifileMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDanger.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerLogServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java 72 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/carUseBook.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/visitsAdmin/cloudService/business/carUseBook/page', data, {
    trim: true
  })
}
// æŸ¥è¯¢
export function findLogList (data) {
  return request.post('/visitsAdmin/cloudService/business/carUseBookLog/findList', data, {
    trim: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/visitsAdmin/cloudService/business/carUseBook/create', data)
}
export function transfercarUseBook (data) {
  return request.post('/visitsAdmin/cloudService/business/carUseBook/transfercarUseBook', data)
}
export function dealcarUseBook (data) {
  return request.post('/visitsAdmin/cloudService/business/carUseBook/dealcarUseBook', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/visitsAdmin/cloudService/business/carUseBook/updateById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/visitsAdmin/cloudService/business/carUseBook/delete/${id}`)
}
// æ ¹æ®ID查询
export function detail(id) {
  return request.get(`/visitsAdmin/cloudService/business/carUseBook/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/visitsAdmin/cloudService/business/carUseBook/delete/batch', {
    params: {
      ids
    }
  })
}
admin/src/components/business/OperaHiddenDangerWindow.vue
@@ -13,8 +13,8 @@
            <div class="time">提报时间:{{model.createDate}}</div>
          </div>
          <div class="right" v-if="model.status==0">待处理</div>
          <div class="right" v-if="model.status==1">已处理</div>
          <div class="right" v-if="model.status==2">已撤销</div>
          <div class="right"  style="background:#53b76f " v-if="model.status==1">已处理</div>
          <div class="right" style="background:#dc362e "  v-if="model.status==2">已退回</div>
        </div>
        <div class="info">
          <div class="title">隐患提报详情</div>
@@ -146,7 +146,7 @@
    <template   v-slot:footer>
      <el-button @click="isShowProblem = true"  type="primary"  v-if="model.status==0&& model.checkUserId == userInfo.memberId"  class="status-red">处理</el-button>
      <el-button type="primary" plain v-if="model.status==0 && model.checkUserId == userInfo.memberId" @click="handleTransfer">转交</el-button>
      <el-button @click="backDo"  v-if="model.status==0&& model.checkUserId == userInfo.memberId" type="danger"  >退回</el-button>
      <el-button @click="isBackProblem=true"  v-if="model.status==0&& model.checkUserId == userInfo.memberId" type="danger"  >退回</el-button>
      <el-button @click="visible=false">返回</el-button>
    </template>
@@ -186,8 +186,9 @@
        <el-form-item label="整改时间" prop="checkDate">
          <el-date-picker
              class="w300"
              type="date"
              placeholder="选择日期"
              type="datetime"
              value-format="yyyy-MM-dd HH:mm:ss"
              placeholder="选择整改时间"
              v-model="dealForm.checkDate"
          />
        </el-form-item>
@@ -220,16 +221,18 @@
    <el-dialog
        append-to-body
        title="隐患退回"
        class="dialogCl"
        :visible.sync="isBackProblem"
        width="480px"
        width="600px"
    >
      <el-form :model="backForm" :rules="rulesBack" ref="backForm" label-width="100px">
        <el-form-item label="退回时间" prop="checkDate">
          <el-date-picker
              class="w300"
              type="date"
              placeholder="选择日期"
              value-format="yyyy-MM-dd HH:mm:ss"
              type="datetime"
              placeholder="选择退回时间"
              v-model="backForm.checkDate"
          />
        </el-form-item>
@@ -303,10 +306,10 @@
      rulesBack: {
        checkDate: [
          { required: true, message: '请选择退回时间' }
        ],
        ]/*,
        dealBeforeFileList: [
          { required: true, message: '请上传整改前情况' }
        ]
        ]*/
      },
      memberList: [],
      transForm: {
@@ -345,8 +348,8 @@
          this.dealForm.dealAfterFileList.splice(index, 1)
        }
      } else if (type == 2) {
        if (this.backForm.dealAfterFileList != null && this.backForm.dealAfterFileList.length > index) {
          this.backForm.dealAfterFileList.splice(index, 1)
        if (this.backForm.dealBeforeFileList != null && this.backForm.dealBeforeFileList.length > index) {
          this.backForm.dealBeforeFileList.splice(index, 1)
        }
      }
    },
@@ -356,10 +359,9 @@
          this.dealForm.dealBeforeFileList = []
        }
        this.dealForm.dealBeforeFileList.push({
          id: this.model.id,
          fileurl: e.imgaddr,
          url: e.url,
          fileUrl: e.imgaddr,
          fileName: e.originname,
          name: e.originname,
          fileType: e.type
        })
      } else if (objType === 1) {
@@ -367,21 +369,19 @@
          this.dealForm.dealAfterFileList = []
        }
        this.dealForm.dealAfterFileList.push({
          id: this.model.id,
          fileUrl: e.imgaddr,
          fileurl: e.imgaddr,
          url: e.url,
          fileName: e.originname,
          name: e.originname,
          fileType: e.type
        })
      } else if (objType === 2) {
        if (this.backForm.dealAfterFileList == null) {
          this.backForm.dealAfterFileList = []
        if (this.backForm.dealBeforeFileList == null) {
          this.backForm.dealBeforeFileList = []
        }
        this.backForm.dealAfterFileList.push({
          id: this.model.id,
          fileUrl: e.imgaddr,
        this.backForm.dealBeforeFileList.push({
          fileurl: e.imgaddr,
          url: e.url,
          fileName: e.originname,
          name: e.originname,
          fileType: e.type
        })
      }
@@ -394,20 +394,20 @@
        }
        this.$dialog.actionConfirm('操作确认', '您确认提交该隐患处理情况吗?')
          .then(() => {
            this.transfering = true
            this.dealing = true
            this.api.dealHiddenDanger({
              id: this.dataId,
              status: 1,
              checkDate: this.dealForm.checkDate,
              dealTime: this.dealForm.checkDate,
              checkInfo: this.dealForm.checkInfo,
              dealBeforeFileList: this.dealForm.dealBeforeFileList,
              dealAfterFileList: this.dealForm.dealBeforeFileList
              dealAfterFileList: this.dealForm.dealAfterFileList
            })
              .then(res => {
                this.$tip.apiSuccess('转交成功')
                this.$tip.apiSuccess('处理成功')
                this.getDetail()
                this.getLogList()
                this.isShowTransfer = false
                this.isShowProblem = false
              })
              .catch(e => {
              })
@@ -424,19 +424,19 @@
        }
        this.$dialog.actionConfirm('操作确认', '您确认退回该隐患处理情况吗?')
          .then(() => {
            this.transfering = true
            this.dealing = true
            this.api.dealHiddenDanger({
              id: this.dataId,
              status: 0,
              checkDate: this.backForm.checkDate,
              status: 2,
              dealTime: this.backForm.checkDate,
              checkInfo: this.backForm.checkInfo,
              dealBeforeFileList: this.backForm.dealBeforeFileList
            })
              .then(res => {
                this.$tip.apiSuccess('转交成功')
                this.$tip.apiSuccess('退回成功')
                this.getDetail()
                this.getLogList()
                this.isShowTransfer = false
                this.isBackProblem = false
              })
              .catch(e => {
              })
@@ -692,7 +692,7 @@
          .icon2 {
            position: relative;
            z-index: 11;
            color: red;
            color: #dc362e;
            font-size: 24px;
          }
          .avatar {
admin/src/views/operation/danger/record.vue
@@ -6,10 +6,10 @@
        <el-input v-model="searchForm.memberName" placeholder="请输入姓名/手机号" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="提报人组织" prop="companyName">
        <el-input v-model="searchForm.companyName" placeholder="请输入" @keypress.enter.native="search"></el-input>
        <el-input v-model="searchForm.companyName" placeholder="请输入" clearable @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="隐患区域" prop="areaId">
        <el-select v-model="searchForm.areaId" placeholder="请选择隐患区域" @keypress.enter.native="search">
        <el-select v-model="searchForm.areaId" placeholder="请选择隐患区域" clearable  @change="search">
          <el-option
              v-for="item in areaList"
              :key="item.id"
@@ -19,13 +19,20 @@
        </el-select>
      </el-form-item>
      <el-form-item label="隐患类型" prop="cateId">
        <el-select v-model="searchForm.cateId" placeholder="请选择隐患类型" @keypress.enter.native="search">
        <el-select v-model="searchForm.cateId" placeholder="请选择隐患类型" clearable @change="search">
          <el-option
              v-for="item in cateList"
              :key="item.id"
              :label="item.name"
              :value="item.id">
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="状态" prop="status">
        <el-select v-model="searchForm.status"  @change="search" clearable placeholder="状态">
          <el-option label="待处理" value="0"></el-option>
          <el-option label="已处理" value="1"></el-option>
          <el-option label="已退出" value="2"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="提报时间" prop="startTime">
@@ -72,7 +79,7 @@
          <template slot-scope="{row}">
            <span class="status-blue"  v-if="row.status === 0">待处理</span>
            <span class="status-green"   v-if="row.status === 1">已处理</span>
            <span class="status-red"   v-if="row.status === 2">已撤销</span>
            <span class="status-red"   v-if="row.status === 2">已退回</span>
          </template>
        </el-table-column>
        <el-table-column prop="editDate" label="操作时间" min-width="150px"></el-table-column>
@@ -117,7 +124,8 @@
        queryStartTime: '',
        queryEndTime: '',
        areaId: null,
        cateId: null
        cateId: null,
        status:null
      },
      cateList: [],
      areaList: [],
admin/src/views/operation/serviceCar/apprRecord.vue
@@ -1,135 +1,206 @@
<template>
  <div class="main_app">
    <QueryForm
      v-model="filters"
      :query-form-config="queryFormConfig"
      @handleQuery="getList(1)"
      @clear="clear"
    />
    <el-table v-loading="loading" :data="list" stripe>
      <el-table-column
        prop="name"
        label="申请人"
        min-width="100"
        show-overflow-tooltip
      />
      <el-table-column
        prop="name"
        label="组织"
        min-width="100"
        show-overflow-tooltip
      />
      <el-table-column
        prop="name"
        label="车牌照"
        min-width="100"
        show-overflow-tooltip
      />
      <el-table-column
        prop="name"
        label="用车时间"
        min-width="80"
        show-overflow-tooltip
      />
      <el-table-column
        prop="name"
        label="出发时间"
        min-width="100"
        show-overflow-tooltip
      />
      <el-table-column
        prop="name"
        label="目的地类别"
        min-width="110"
        show-overflow-tooltip
      />
      <el-table-column
        prop="name"
        label="目的地"
        min-width="100"
        show-overflow-tooltip
      />
      <el-table-column
        prop="name"
        label="申请状态"
        min-width="80"
        show-overflow-tooltip
      />
      <el-table-column
        prop="name"
        label="操作"
        min-width="80"
        show-overflow-tooltip
  <TableLayout :permissions="['business:empower:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="申请人" prop="memberName">
        <el-input v-model="searchForm.memberName" placeholder="请输入姓名/手机号" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="申请人组织" prop="companyName">
        <el-input v-model="searchForm.companyName" placeholder="请输入申请人组织" clearable @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="车牌号" prop="carCode">
        <el-input v-model="searchForm.carCode" placeholder="请输入车牌号" clearable @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="状态" prop="status">
        <el-select v-model="searchForm.status"  @change="search" clearable placeholder="状态">
          <el-option label="申请中" value="0"></el-option>
          <el-option label="审核中" value="1"></el-option>
          <el-option label="审批通过" value="2"></el-option>
          <el-option label="审批不通过" value="3"></el-option>
          <el-option label="已取消" value="4"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="目的地类型" prop="type">
        <el-select v-model="searchForm.type"  @change="search" clearable placeholder="目的地类型">
          <el-option label="市内用车" value="0"></el-option>
          <el-option label="市外用车" value="1"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="出发时间" prop="startTime">
        <el-date-picker
            @change="seleTime"
            v-model="time"
            @keypress.enter.native="search"
            type="datetimerange"
            format="yyyy-MM-dd HH:mm:ss"
            value-format="yyyy-MM-dd HH:mm:ss"
            range-separator="至"
            start-placeholder="开始日期"
            end-placeholder="结束日期">
        </el-date-picker>
      </el-form-item>
      <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
        <el-radio-button label="0">当天</el-radio-button>
        <el-radio-button label="1">近7天</el-radio-button>
        <el-radio-button label="2">近30天</el-radio-button>
      </el-radio-group>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:empower:create', 'business:empower:delete']">
        <!--<li><el-button type="primary" v-permissions="['business:empower:exportExcel']" @click="exportExcel">导出</el-button></li> -->
      </ul>
      <el-table
          v-loading="isWorking.search"
          :data="tableData.list"
          stripe
          @selection-change="handleSelectionChange"
      >
        <template>
          <el-button type="text">查看详情</el-button>
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="memberName" label="提报人" min-width="80px"></el-table-column>
        <el-table-column prop="companyName" label="所属组织" min-width="150px"></el-table-column>
        <el-table-column prop="carCode" label="车牌号" min-width="100px"></el-table-column>
        <el-table-column label="用车时间" min-width="170px">
          <template slot-scope="{row}">
                <span>èµ·:{{row.startTime || ''}}</span><br>
                <span>æ­¢:{{row.endTime  || ''}}</span>
          </template>
        </el-table-column>
        <el-table-column prop="planUseDate" label="出发时间" min-width="150px"></el-table-column>
        <el-table-column label="目的地类型" min-width="100px">
          <template slot-scope="{row}">
            <span class="status-green" v-if="row.type === 0">市内用车</span>
            <span class="status-red"   v-if="row.type === 1">市外用车</span>
          </template>
        </el-table-column>
        <el-table-column prop="addr" label="目的地" min-width="200px"></el-table-column>
        <el-table-column label="状态" min-width="100px">
          <template slot-scope="{row}">
            <span class="status-blue"  v-if="row.status === 0">申请中</span>
            <span class="status-blue"  v-if="row.status === 1">待审批</span>
            <span class="status-green" v-if="row.status === 2">审批通过</span>
            <span class="status-red"   v-if="row.status === 3">审批不通过</span>
            <span class="status-red"   v-if="row.status === 4">已取消</span>
          </template>
        </el-table-column>
        <el-table-column prop="createDate" label="申请时间" min-width="150px"></el-table-column>
        <el-table-column prop="editDate" label="操作时间" min-width="150px"></el-table-column>
        <el-table-column
            label="操作"
            min-width="100"
            align="center"
            fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaHiddenDangerWindow.open('隐患随手拍详情',row)" >查看详情</el-button>
        </template>
      </el-table-column>
    </el-table>
    <pagination
      @size-change="handleSizeChange"
      @current-change="getList"
      :pagination="pagination"
    />
  </div>
          @current-change="handlePageChange"
          :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <OperaHiddenDangerWindow ref="OperaHiddenDangerWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import QueryForm from '@/components/common/QueryForm'
import OperaHiddenDangerWindow from '@/components/business/OperaHiddenDangerWindow'
import { timeForMat } from '@/utils/util'
import { allList } from '@/api/business/hiddenDangerParam'
export default {
  components: {
    Pagination,
    QueryForm
  },
  name: 'Empower',
  extends: BaseTable,
  components: { TableLayout, Pagination ,OperaHiddenDangerWindow},
  data () {
    return {
      filters: {},
      loading: false,
      queryFormConfig: {
        formItems: [
          {
            filed: 'name',
            type: 'input',
            label: '申请人姓名'
      // æœç´¢
      searchForm: {
        memberName: '',
        companyName: '',
        queryStartTime: '',
        queryEndTime: '',
        type: null,
        status:null
          },
          {
            filed: 'idCard',
            type: 'input',
            label: '车牌照'
          },
          {
            filed: 'name',
            type: 'select',
            label: '目的地类别',
            options: []
          },
          {
            filed: 'name',
            type: 'datetimerange',
            label: '出发时间',
            options: []
      cateList: [],
      areaList: [],
      time: []
          }
        ],
        online: true
      },
      pagination: {
        capacity: 10,
        page: 1
      },
      list: [],
      total: 0
    }
  created () {
    this.config({
      module: '用车申请管理',
      api: '/business/carUseBook',
      'field.id': 'id',
      'field.main': 'id'
    })
    // this.search()
    this.changeRadio('0')
    this.loadParams()
  },
  methods: {
    getList (page) { },
    clear () { },
    handleSizeChange (capacity) {
      this.pagination.capacity = capacity
    changeRadio (e) {
      this.searchForm.radio = e
      if (e === '0') {
        this.searchForm.queryStartTime = timeForMat(0)[0]
        this.searchForm.queryEndTime = timeForMat(0)[1]
        this.time = timeForMat(0)
      } else if (e === '1') {
        this.searchForm.queryStartTime = timeForMat(6)[0]
        this.searchForm.queryEndTime = timeForMat(6)[1]
        this.time = timeForMat(6)
      } else if (e === '2') {
        this.searchForm.queryStartTime = timeForMat(29)[0]
        this.searchForm.queryEndTime = timeForMat(29)[1]
        this.time = timeForMat(29)
      }
      this.search()
    },
    loadParams () {
      allList({
      })
          .then(res => {
            if (res != null && res.length) {
              res.forEach(item => {
                if (item && item.type != null && item.type === 0) {
                  this.areaList.push(item)
                }
                if (item && item.type != null && item.type === 1) {
                  this.cateList.push(item)
                }
              })
            }
          })
          .catch(e => {
            // this.$tip.apiFailed(e)
          })
          .finally(() => {
          })
    },
    seleTime (e) {
      this.searchForm.queryStartTime = e[0]
      this.searchForm.queryEndTime = e[1]
      this.searchForm.radio = null
      this.search()
    },
    reset () {
      this.$refs.searchForm.resetFields()
      this.searchForm.radio = '0'
      this.changeRadio('0')
      // this.search()
    }
  }
}
</script>
<style>
</style>
server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -299,14 +299,6 @@
         int invalid =9;
    }
    public interface multifileObjType{
        //0隐患现场情况 1隐患处理前情况 2隐患处理后情况 3隐患退回说明
        int zero = 0;
        int one = 1;
        int two = 2;
        int three = 3;
    }
    public interface EmpowerStatus{
        //一卡通授权下发状态 0待下发 1已下发 2下发成功   3已取消 4下发失败 5任务下载已结束
server/system_service/src/main/java/com/doumee/dao/system/MultifileMapper.java
@@ -3,10 +3,13 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.system.model.Multifile;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2023/05/04 18:18
 */
public interface MultifileMapper extends BaseMapper<Multifile> {
    void insertBatchSomeColumn(List<Multifile> fileList);
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDanger.java
@@ -84,7 +84,7 @@
    @ApiModelProperty(value = "处理说明")
    @ExcelColumn(name="处理说明")
    private String checklInfo;
    private String checkInfo;
    @ApiModelProperty(value = "处理人编码(关联member)", example = "1")
    @ExcelColumn(name="处理人编码(关联member)")
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java
@@ -165,11 +165,11 @@
        queryWrapper.select("t1.name",CarUseBook::getMemberName);
        queryWrapper.select("t1.phone",CarUseBook::getMemberPhone);
        queryWrapper.select("t2.name",CarUseBook::getDriverName);
        queryWrapper.select("t3.phone",CarUseBook::getDriverPhone);
        queryWrapper.select("t2.phone",CarUseBook::getDriverPhone);
        queryWrapper.select("t4.company_name_path",CarUseBook::getCompanyName);
        queryWrapper.leftJoin(Member.class,Member::getId,CarUseBook::getMemberId)
                .leftJoin("company t4 on t1.company_id=t4.id")
                .leftJoin(Member.class,Member::getId,CarUseBook::getDriverId)
                .leftJoin("company t4 on t1.company_id=t4.id")
                .eq(CarUseBook::getId,id)
                .last("limit 1"  );
        CarUseBook model = carUseBookMapper.selectJoinOne(CarUseBook.class,queryWrapper);
@@ -203,11 +203,11 @@
        queryWrapper.select("t1.name",CarUseBook::getMemberName);
        queryWrapper.select("t1.phone",CarUseBook::getMemberPhone);
        queryWrapper.select("t2.name",CarUseBook::getDriverName);
        queryWrapper.select("t3.phone",CarUseBook::getDriverPhone);
        queryWrapper.select("t2.phone",CarUseBook::getDriverPhone);
        queryWrapper.select("t4.company_name_path",CarUseBook::getCompanyName);
        queryWrapper.leftJoin(Member.class,Member::getId,CarUseBook::getMemberId)
                    .leftJoin("company t4 on t1.company_id=t4.id")
                    .leftJoin(Member.class,Member::getId,CarUseBook::getDriverId);
                    .leftJoin(Member.class,Member::getId,CarUseBook::getDriverId)
                    .leftJoin("company t4 on t1.company_id=t4.id");
        queryWrapper
                .eq(pageWrap.getModel().getId() != null, CarUseBook::getId, pageWrap.getModel().getId())
                .eq(pageWrap.getModel().getCreator() != null, CarUseBook::getCreator, pageWrap.getModel().getCreator())
@@ -243,6 +243,7 @@
                .eq(pageWrap.getModel().getAddr() != null, CarUseBook::getAddr, pageWrap.getModel().getAddr())
                .eq(pageWrap.getModel().getMemberId() != null, CarUseBook::getMemberId, pageWrap.getModel().getMemberId())
                .eq(pageWrap.getModel().getDriverId() != null, CarUseBook::getDriverId, pageWrap.getModel().getDriverId())
                .apply(pageWrap.getModel().getCompanyName() != null, "t4.company_name_path like '%"+pageWrap.getModel().getCompanyName()+"%'")
                .and(StringUtils.isNotBlank(pageWrap.getModel().getQueryDate()),
                        i->i.and(j->j.lt(CarUseBook::getStartTime,pageWrap.getModel().getQueryDate() +"00:00:00").gt(CarUseBook::getStartTime,pageWrap.getModel().getQueryDate() +"23:59:59"))
                        .or()
@@ -254,8 +255,8 @@
                )
                .and(StringUtils.isNotBlank(pageWrap.getModel().getMemberName()), ms->ms.like(Member::getName,pageWrap.getModel().getMemberName())
                        .or().like(Member::getPhone,pageWrap.getModel().getMemberName()))
                .ge(Objects.nonNull(pageWrap.getModel().getQueryStartTime()), Empower::getCreateDate,pageWrap.getModel().getQueryStartTime())
                .le(Objects.nonNull(pageWrap.getModel().getQueryEndTime()),Empower::getCreateDate,pageWrap.getModel().getQueryEndTime())
                .ge(Objects.nonNull(pageWrap.getModel().getQueryStartTime()), CarUseBook::getPlanUseDate,pageWrap.getModel().getQueryStartTime())
                .le(Objects.nonNull(pageWrap.getModel().getQueryEndTime()),CarUseBook::getPlanUseDate,pageWrap.getModel().getQueryEndTime())
                .orderByDesc(Visits::getCreateDate)
        ;
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerLogServiceImpl.java
@@ -126,14 +126,14 @@
            if(Objects.isNull(hiddenDanger)){
                return null;
            }
            if(hiddenDanger.getStatus().equals(Constants.ZERO)){
                //下一步处理人
            HiddenDangerLog newBean = new HiddenDangerLog();
            newBean.setCreateUserName("-");
            newBean.setCompanyName("-");
            newBean.setTitle("隐患处理");
            newBean.setAvatar("-");
            if(hiddenDanger.getStatus().equals(Constants.ZERO)){
                //下一步处理人
                SystemUser systemUser = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda().eq(SystemUser::getMemberId,hiddenDanger.getCheckUserId()));
                if(Objects.nonNull(systemUser)){
                    newBean.setCreateUserName(systemUser.getRealname());
@@ -143,8 +143,8 @@
                        newBean.setCompanyName(company.getCompanyNamePath());
                    }
                }
            }
            hiddenDangerLogList.add(newBean);
            }
            String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
                    +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
@@ -104,7 +104,7 @@
                multifile.setCreator(hiddenDanger.getCreator());
                multifile.setIsdeleted(Constants.ZERO);
                multifile.setObjId(hiddenDanger.getId());
                multifile.setObjType(Constants.multifileObjType.zero);
                multifile.setObjType(Constants.MultiFile.HIDDEN_DANGER_SUBMIT.getKey());
                multifile.setSortnum(i+1);
                multifileMapper.insert(multifile);
            }
@@ -260,7 +260,7 @@
                .eq(pageWrap.getModel().getMemberId() != null, HiddenDanger::getMemberId, pageWrap.getModel().getMemberId())
                .ge(pageWrap.getModel().getCheckDate() != null, HiddenDanger::getCheckDate, Utils.Date.getStart(pageWrap.getModel().getCheckDate()))
                .le(pageWrap.getModel().getCheckDate() != null, HiddenDanger::getCheckDate, Utils.Date.getEnd(pageWrap.getModel().getCheckDate()))
                .eq(pageWrap.getModel().getChecklInfo() != null, HiddenDanger::getChecklInfo, pageWrap.getModel().getChecklInfo())
                .eq(pageWrap.getModel().getCheckInfo() != null, HiddenDanger::getCheckInfo, pageWrap.getModel().getCheckInfo())
                .eq(pageWrap.getModel().getCheckUserId() != null, HiddenDanger::getCheckUserId, pageWrap.getModel().getCheckUserId())
                .eq(pageWrap.getModel().getAreaName() != null, HiddenDanger::getAreaName, pageWrap.getModel().getAreaName())
@@ -291,6 +291,25 @@
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void dealHiddenDanger(HiddenDanger hiddenDanger){
        isParamValid(hiddenDanger);
        dealFileBiz(hiddenDanger);
        hiddenDanger.setEditor(hiddenDanger.getLoginUserInfo().getId());
        hiddenDanger.setEditDate(new Date());
        hiddenDanger.setCheckDate(hiddenDanger.getEditDate());
        hiddenDangerMapper.updateById(hiddenDanger);
        //存储 æ“ä½œæ—¥å¿—
        HiddenDangerLog hiddenDangerLog = new HiddenDangerLog();
        hiddenDangerLog.setIsdeleted(Constants.ZERO);
        hiddenDangerLog.setCreateDate(new Date());
        hiddenDangerLog.setCreator(hiddenDanger.getEditor());
        hiddenDangerLog.setHiddenDangerId(hiddenDanger.getId());
        hiddenDangerLog.setContent(hiddenDanger.getCheckInfo());
        hiddenDangerLog.setTitle(hiddenDanger.getStatus().equals(Constants.ONE)?"隐患处理":"隐患退回");
        hiddenDangerLog.setObjType(hiddenDanger.getStatus().equals(Constants.ONE)?Constants.FOUR:Constants.TWO);
        hiddenDangerLogMapper.insert(hiddenDangerLog);
    }
    private void isParamValid(HiddenDanger hiddenDanger) {
        if(Objects.isNull(hiddenDanger)
            || Objects.isNull(hiddenDanger.getId())
            || Objects.isNull(hiddenDanger.getDealTime())
@@ -306,53 +325,66 @@
        if (!model.getStatus().equals(Constants.ZERO)) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"数据状态已流转!");
        }
        if (!model.getCheckUserId().equals(hiddenDanger.getEditor())) {
        if (!model.getCheckUserId().equals(hiddenDanger.getLoginUserInfo().getMemberId())) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"处理人非当前人员!");
        }
        if(!(hiddenDanger.getStatus().equals(Constants.ONE)||hiddenDanger.getStatus().equals(Constants.TWO))){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"数据状态错误!");
        }
        //整改前文件
    }
    private void dealFileBiz(HiddenDanger hiddenDanger) {//整改前文件
        List<Multifile> beforList = hiddenDanger.getDealBeforeFileList();
        List<Multifile> fileList = new ArrayList<>();
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(beforList)){
            boolean isTrue = false;
            for (int i = 0; i < beforList.size(); i++) {
                Multifile multifile = beforList.get(i);
                if(StringUtils.isBlank(multifile.getFileurl())){
                    continue;
                }
                multifile.setCreateDate(new Date());
                multifile.setCreator(hiddenDanger.getEditor());
                multifile.setIsdeleted(Constants.ZERO);
                multifile.setObjId(hiddenDanger.getId());
                multifile.setObjType(Constants.multifileObjType.one);
                multifile.setCreator(hiddenDanger.getLoginUserInfo().getId());
                multifile.setObjType(Constants.MultiFile.HIDDEN_DANGER_DEAL_BEFORE.getKey());
                multifile.setSortnum(i+1);
                multifileMapper.insert(multifile);
                fileList.add(multifile);
                isTrue=true;
            }
            if(hiddenDanger.getStatus().equals(Constants.ONE) && !isTrue){
                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,请按要求填写处理数据");
            }
        }
        if(hiddenDanger.getStatus().equals(Constants.ONE)){
            boolean isTrue = false;
            List<Multifile> afterList = hiddenDanger.getDealAfterFileList();
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(afterList)){
                for (int i = 0; i < afterList.size(); i++) {
                    Multifile multifile = afterList.get(i);
                    if(StringUtils.isBlank(multifile.getFileurl())){
                        continue;
                    }
                    multifile.setCreateDate(new Date());
                    multifile.setCreator(hiddenDanger.getEditor());
                    multifile.setIsdeleted(Constants.ZERO);
                    multifile.setCreator(hiddenDanger.getLoginUserInfo().getId());
                    multifile.setObjId(hiddenDanger.getId());
                    multifile.setObjType(Constants.multifileObjType.two);
                    multifile.setObjType(Constants.MultiFile.HIDDEN_DANGER_DEAL_AFTER.getKey());
                    multifile.setSortnum(i+1);
                    multifileMapper.insert(multifile);
                    fileList.add(multifile);
                    isTrue = true;
                }
            }
            if(isTrue){
                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,请按要求填写处理数据");
        }
        hiddenDanger.setEditor(hiddenDanger.getLoginUserInfo().getId());
        hiddenDanger.setEditDate(new Date());
        hiddenDangerMapper.updateById(hiddenDanger);
        //存储 æ“ä½œæ—¥å¿—
        HiddenDangerLog hiddenDangerLog = new HiddenDangerLog();
        hiddenDangerLog.setIsdeleted(Constants.ZERO);
        hiddenDangerLog.setCreateDate(new Date());
        hiddenDangerLog.setCreator(hiddenDanger.getCreator());
        hiddenDangerLog.setHiddenDangerId(hiddenDanger.getId());
        hiddenDangerLog.setTitle(hiddenDanger.getStatus().equals(Constants.ONE)?"隐患处理":"隐患退回");
        hiddenDangerLog.setObjType(hiddenDanger.getStatus().equals(Constants.ONE)?Constants.FOUR:Constants.TWO);
        hiddenDangerLogMapper.insert(hiddenDangerLog);
        }
        if(fileList.size()>0){
            multifileMapper.insertBatchSomeColumn(fileList);
        }
    }