jiangping
2025-06-30 2d15fa034660d03a84c1d51928ab28b9219f16f8
最新版本541200007
已添加11个文件
已修改2个文件
975 ■■■■■ 文件已修改
admin/src/api/business/companyDocuments.js 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaCompanyDocumentsWindow.vue 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/common/uploadProgress.vue 211 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/companyDocuments.vue 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/inoutRecord.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/db/business.company_documents.permissions.sql 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CompanyDocumentsController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CompanyDocumentsCloudController.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CompanyDocumentsMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CompanyDocuments.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDangerParam.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CompanyDocumentsService.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyDocumentsServiceImpl.java 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/companyDocuments.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/business/companyDocuments/page', data, {
    trim: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/business/companyDocuments/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/business/companyDocuments/updateById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/companyDocuments/delete/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/business/companyDocuments/delete/batch', {
    params: {
      ids
    }
  })
}
admin/src/components/business/OperaCompanyDocumentsWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
<template>
  <GlobalWindow
    :title="title"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="资料名称" prop="name">
        <el-input v-model="form.name" placeholder="请输入资料名称" v-trim/>
      </el-form-item>
      <el-form-item label="资料类型" prop="categoryId">
        <el-input v-model="form.categoryId" placeholder="请输入责任部门编码(关联company)" v-trim/>
      </el-form-item>
      <el-form-item label="责任部门" prop="companyId">
        <el-input v-model="form.companyId" placeholder="请输入责任部门编码(关联company)" v-trim/>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input v-model="form.sortnum" placeholder="请输入排序码" v-trim/>
      </el-form-item>
      <el-form-item label="附件地址" prop="fileurl">
        <el-input v-model="form.fileurl" 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'
export default {
  name: 'OperaCompanyDocumentsWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        name: '',
        remark: '',
        status: '',
        sortnum: '',
        fileurl: '',
        fileName: '',
        fileSize: '',
        categoryId: '',
        companyId: '',
        content: ''
      },
      // éªŒè¯è§„则
      rules: {
      }
    }
  },
  created () {
    this.config({
      api: '/business/companyDocuments',
      'field.id': 'id'
    })
  }
}
</script>
admin/src/components/common/uploadProgress.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,211 @@
<template>
    <div class="file">
        <div class="file_list">
            <div class="file_list_item" :style="{width: width, height: height}" v-for="(item, index) in list" :key="index">
                <div class="dele" @click="deleItem(index)">
                    <i class="el-icon-close"></i>
                </div>
                <img :src="item.url" v-if="fileType(item.url) === 'img'" />
                <video controls autoplay :src="item.url" v-else></video>
            </div>
            <div class="file_list_item" :style="{width: width, height: height, cursor: 'pointer'}" @click="$refs.file.click()">
                <i class="el-icon-plus"></i>
            </div>
        </div>
        <div style="display: block;">
          <input type="file" ref="file" :accept="accept" @change="getFile" />
<!--          <progress id="progressBar" value="0" max="100" ></progress>-->
<!--          <span id="status">0%</span>-->
        </div>
    </div>
</template>
<script>
import axios from 'axios'
export default {
  props: {
    width: {
      type: String,
      default: '90px'
    },
    height: {
      type: String,
      default: '90px'
    },
    list: {
      type: Array,
      // eslint-disable-next-line vue/require-valid-default-prop
      default: []
    },
    accept: {
      type: String,
      default: ''
    },
    folder: {
      type: String,
      default: ''
    }
  },
  data () {
    return {
      loading:null,
      uuid: null,
      timer: null,
      message:'开始上传',
      uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/upload',
      uploadProgressUrl: process.env.VUE_APP_API_PREFIX + '/public'
    }
  },
  methods: {
    fileType (url) {
      if (url.indexOf('.mp4') !== -1) {
        return 'video'
      } else {
        return 'img'
      }
    },
    getFile (e) {
      if (e.target && e.target.files.length > 0) {
        var that = this
        const config = {
          onUploadProgress: function (progressEvent) {
            console.log(progressEvent)
            const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total)
            // document.getElementById('progressBar').value = percentCompleted
            // document.getElementById('status').textContent = '准备' + percentCompleted + '%'
            that.loading.setText('上传中【 ' + percentCompleted + ' ã€‘%')
          },
          headers: {
            'Content-Type': 'multipart/form-data'
          }
        }
        this.loading = this.$loading({
          lock: true,
          text: '上传中,请等待',
          spinner: 'el-icon-loading',
          customClass: 'loadingclz',
          background: 'rgba(0, 0, 0, 0.7)'
        })
        this.$emit('loading')
        const formdate = new FormData()
        this.uuid = this.generateUUID().replaceAll('-', '')
        formdate.append('file', e.target.files[0])
        formdate.append('folder', this.folder)
        formdate.append('uuid', this.uuid)
        axios.post(this.uploadImgUrl, formdate, config)
          .then(res => {
            if(res.data.data == null || res.data.data.imgaddr == null){
              this.$message.error('数据上传失败!')
            }else{
              this.$emit('success', res.data.data)
            }
          })
          .catch(e => {
            if(this.timer){
              clearInterval(this.timer)
            }
            this.$message.error(e)
          })
          .finally(() => {
            if(this.timer){
              clearInterval(this.timer)
            }
            that.loading.close()
            this.$refs.file.value = null
          })
        this.startProgress()
      }
    },
    startProgress () {
    },
    generateUUID () {
      return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
        const r = (Math.random() * 16) | 0
        const v = c === 'x' ? r : (r & 0x3) | 0x8
        return v.toString(16)
      })
    },
    deleItem (index) {
      this.$emit('dele', index)
    }
  }
}
</script>
<style>
  .loadingclz {
    .el-loading-text{
      font-size: 18px  !important;
      color: #2977f8 !important;
    }
   .el-loading-spinner i {
      color: #2977f8 !important;
    }
  }
</style>
<style lang="scss" scoped>
    .file {
        /*width: 100%;*/
        /*height: 90px;*/
      padding: 10px;
      box-sizing: border-box;
      display: flex;
      align-items: center;
      justify-content: space-between;
      position: relative;
      margin-bottom: 10px;
      /* margin-right: 20px; */
       /* margin: 10px 0;*/
        input {
            opacity: 0;
        }
        .file_list {
            width: 100%;
            height: 100%;
            display: flex;
            align-items: center;
            flex-wrap: wrap;
            .file_list_item {
                display: flex;
                flex-direction: column;
                align-items: center;
                justify-content: center;
                overflow: hidden;
                border-radius: 5px;
                border: 1px solid #d5d5d5;
                margin-left: 15px;
                position: relative;
                &:first-child {
                    margin: 0 !important;
                }
                .dele {
                    position: absolute;
                    right: 0;
                    top: 0;
                    width: 20px;
                    height: 20px;
                    background: red;
                    display: flex;
                    align-items: center;
                    justify-content: center;
                    cursor: pointer;
                    .el-icon-close {
                        color: #ffffff;
                        font-size: 19px;
                    }
                }
                .el-icon-plus {
                    font-size: 30px;
                    color: black;
                }
                img {
                    width: 100%;
                }
                video {
                    width: 100%;
                    height: 100%;
                }
            }
        }
    }
</style>
admin/src/views/business/companyDocuments.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,102 @@
<template>
  <TableLayout :permissions="['business:companydocuments:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="资料名称" prop="name">
        <el-input v-model="searchForm.name" placeholder="请输入资料名称" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="管理部门" prop="companyName">
        <el-input v-model="searchForm.companyName" clearable placeholder="请输入管理部门" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="资料类型" prop="categoryId">
        <el-input v-model="searchForm.categoryId" clearable placeholder="请选择资料类型" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <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:companydocuments:create', 'business:companydocuments:delete']">
        <li><el-button type="primary" @click="$refs.operaCompanyDocumentsWindow.open('新增资料')" icon="el-icon-plus" v-permissions="['business:companydocuments:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:companydocuments:delete']">删除</el-button></li>
      </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="name" label="资料名称" min-width="150px"></el-table-column>
        <el-table-column prop="categoryName" label="资料类型" min-width="100px"></el-table-column>
        <el-table-column prop="content" label="附件描述" min-width="200px"></el-table-column>
        <el-table-column prop="companyName" label="管理部门" min-width="150px"></el-table-column>
        <el-table-column prop="sortnum" label="排序码(倒序)" min-width="100px"></el-table-column>
        <el-table-column prop="createDate" label="创建时间" min-width="150px"></el-table-column>
        <el-table-column prop="creatorName" label="创建人" min-width="100px"></el-table-column>
<!--    <el-table-column prop="fileName" label="附件名称" min-width="100px"></el-table-column>
        <el-table-column prop="fileSize" label="附件大小" min-width="100px"></el-table-column>-->
        <el-table-column
          v-if="containPermissions(['business:companydocuments:update', 'business:companydocuments:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaCompanyDocumentsWindow.open('编辑资料', row)" icon="el-icon-edit" v-permissions="['business:companydocuments:update']">编辑</el-button>
            <el-button type="text" v-if="row.fileurlFull" @click="download(row)" icon="el-icon-download" v-permissions="['business:companydocuments:download']">下载</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:companydocuments:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaCompanyDocumentsWindow ref="operaCompanyDocumentsWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaCompanyDocumentsWindow from '@/components/business/OperaCompanyDocumentsWindow'
export default {
  name: 'CompanyDocuments',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaCompanyDocumentsWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        name: '',
        categoryId: '',
        companyId: ''
      }
    }
  },
  created () {
    this.config({
      module: '资料管理',
      api: '/business/companyDocuments',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  },
  methods:{
    download(row){
      if(row.fileurlFull){
        window.open(row.fileurlFull)
      }
    }
  }
}
</script>
admin/src/views/business/inoutRecord.vue
@@ -68,8 +68,7 @@
                     @click="exportExcel">导出</el-button>
        </li>
      </ul>
      <el-table
          :height="tableHeightNew"
      <el-table :height="tableHeightNew+10"
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
@@ -141,7 +140,7 @@
export default {
  name: 'InoutRecord',
  extends: BaseTable,
  components: {  TableLayout, Pagination, OperaInoutRecordWindow },
  components: { TableLayout, Pagination, OperaInoutRecordWindow },
  data () {
    return {
      // æœç´¢
server/db/business.company_documents.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:companydocuments: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:companydocuments: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:companydocuments: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:companydocuments: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:companydocuments:exportExcel', '导出隐患区域配置类型信息表(Excel)', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CompanyDocumentsController.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.dao.business.model.CompanyDocuments;
import com.doumee.service.business.CompanyDocumentsService;
import com.doumee.service.business.third.model.ApiResponse;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
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 2025/06/27 16:01
 */
@Api(tags = "隐患区域配置类型信息表")
@RestController
@RequestMapping("/business/companyDocuments")
public class CompanyDocumentsController extends BaseController {
    @Autowired
    private CompanyDocumentsService companyDocumentsService;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @RequiresPermissions("business:companydocuments:create")
    public ApiResponse create(@RequestBody CompanyDocuments companyDocuments) {
        return ApiResponse.success(companyDocumentsService.create(companyDocuments));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @RequiresPermissions("business:companydocuments:delete")
    public ApiResponse deleteById(@PathVariable Integer id) {
        companyDocumentsService.deleteById(id,this.getLoginUser(null));
        return ApiResponse.success(null);
    }
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @RequiresPermissions("business:companydocuments: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));
        }
        companyDocumentsService.deleteByIdInBatch(idList,this.getLoginUser(null));
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @RequiresPermissions("business:companydocuments:update")
    public ApiResponse updateById(@RequestBody CompanyDocuments companyDocuments) {
        companyDocumentsService.updateById(companyDocuments);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @RequiresPermissions("business:companydocuments:query")
    public ApiResponse<PageData<CompanyDocuments>> findPage (@RequestBody PageWrap<CompanyDocuments> pageWrap) {
        return ApiResponse.success(companyDocumentsService.findPage(pageWrap));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @RequiresPermissions("business:companydocuments:exportExcel")
    public void exportExcel (@RequestBody PageWrap<CompanyDocuments> pageWrap, HttpServletResponse response) {
        ExcelExporter.build(CompanyDocuments.class).export(companyDocumentsService.findPage(pageWrap).getRecords(), "隐患区域配置类型信息表", response);
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @RequiresPermissions("business:companydocuments:query")
    public ApiResponse findById(@PathVariable Integer id) {
        return ApiResponse.success(companyDocumentsService.findById(id));
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CompanyDocumentsCloudController.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.utils.Constants;
import com.doumee.dao.business.model.CompanyDocuments;
import com.doumee.service.business.CompanyDocumentsService;
import com.doumee.service.business.third.model.ApiResponse;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
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 2025/06/27 16:01
 */
@Api(tags = "隐患区域配置类型信息表")
@RestController
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/business/companyDocuments")
public class CompanyDocumentsCloudController extends BaseController {
    @Autowired
    private CompanyDocumentsService companyDocumentsService;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @CloudRequiredPermission("business:companydocuments:create")
    public ApiResponse create(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@RequestBody CompanyDocuments companyDocuments) {
        companyDocuments.setLoginUserInfo(this.getLoginUser(token));
        return ApiResponse.success(companyDocumentsService.create(companyDocuments));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @CloudRequiredPermission("business:companydocuments:delete")
    public ApiResponse deleteById(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@PathVariable Integer id) {
        companyDocumentsService.deleteById(id,this.getLoginUser(token));
        return ApiResponse.success(null);
    }
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @CloudRequiredPermission("business:companydocuments:delete")
    public ApiResponse deleteByIdInBatch(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@RequestParam String ids) {
        String [] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
        }
        companyDocumentsService.deleteByIdInBatch(idList,this.getLoginUser(token));
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @CloudRequiredPermission("business:companydocuments:update")
    public ApiResponse updateById(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@RequestBody CompanyDocuments companyDocuments) {
        companyDocuments.setLoginUserInfo(this.getLoginUser(token));
        companyDocumentsService.updateById(companyDocuments);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @CloudRequiredPermission("business:companydocuments:query")
    public ApiResponse<PageData<CompanyDocuments>> findPage (@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@RequestBody PageWrap<CompanyDocuments> pageWrap) {
        return ApiResponse.success(companyDocumentsService.findPage(pageWrap));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @CloudRequiredPermission("business:companydocuments:exportExcel")
    public void exportExcel (@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@RequestBody PageWrap<CompanyDocuments> pageWrap, HttpServletResponse response) {
        ExcelExporter.build(CompanyDocuments.class).export(companyDocumentsService.findPage(pageWrap).getRecords(), "隐患区域配置类型信息表", response);
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @CloudRequiredPermission("business:companydocuments:query")
    public ApiResponse findById(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@PathVariable Integer id) {
        return ApiResponse.success(companyDocumentsService.findById(id));
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CompanyDocumentsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.doumee.dao.business;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.CompanyDocuments;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2025/06/27 16:01
 */
public interface CompanyDocumentsMapper extends BaseMapper<CompanyDocuments> {
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CompanyDocuments.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
package com.doumee.dao.business.model;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.service.business.third.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;
/**
 * é𐿂£åŒºåŸŸé…ç½®ç±»åž‹ä¿¡æ¯è¡¨
 * @author æ±Ÿè¹„蹄
 * @date 2025/06/27 16:01
 */
@Data
@ApiModel("隐患区域配置类型信息表")
@TableName("`company_documents`")
public class CompanyDocuments  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="创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码", example = "1")
    @ExcelColumn(name="更新人编码")
    private Integer editor;
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name="更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "1")
    @ExcelColumn(name="是否删除0否 1是")
    private Integer isdeleted;
    @ApiModelProperty(value = "名称")
    @ExcelColumn(name="名称")
    private String name;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name="备注")
    private String remark;
    @ApiModelProperty(value = "状态 0启用 1禁用", example = "1")
    @ExcelColumn(name="状态 0启用 1禁用")
    private Integer status;
    @ApiModelProperty(value = "排序码", example = "1")
    @ExcelColumn(name="排序码")
    private Integer sortnum;
    @ApiModelProperty(value = "附件地址")
    @ExcelColumn(name="附件地址")
    private String fileurl;
    @ApiModelProperty(value = "附件名称")
    @ExcelColumn(name="附件名称")
    private String fileName;
    @ApiModelProperty(value = "附件大小(bytes)", example = "1")
    @ExcelColumn(name="附件大小(bytes)")
    private Long fileSize;
    @ApiModelProperty(value = "分类编码(关联category)", example = "1")
    @ExcelColumn(name="分类编码(关联category)")
    private Integer categoryId;
    @ApiModelProperty(value = "责任部门编码(关联company)", example = "1")
    @ExcelColumn(name="责任部门编码(关联company)")
    private Integer companyId;
    @ApiModelProperty(value = "附件描述")
    @ExcelColumn(name="附件描述")
    private String content;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDangerParam.java
@@ -76,8 +76,8 @@
    @ExcelColumn(name="安全员姓名集合,多个英文逗号隔开")
    private String memberNames;
    @ApiModelProperty(value = "类型 0隐患区域 1隐患类型", example = "1")
    @ExcelColumn(name="类型 0隐患区域 1隐患类型")
    @ApiModelProperty(value = "类型 0隐患区域 1隐患类型 2检查类型", example = "1")
    @ExcelColumn(name="类型 0隐患区域 1隐患类型  2检查类型")
    private Integer type;
    @ApiModelProperty(value = "用户编码集合", example = "1")
    @TableField(exist = false)
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CompanyDocumentsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,100 @@
package com.doumee.service.business;
import com.doumee.dao.business.model.CompanyDocuments;
import com.doumee.service.business.third.model.LoginUserInfo;
import com.doumee.service.business.third.model.LoginUserModel;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
import java.util.List;
/**
 * é𐿂£åŒºåŸŸé…ç½®ç±»åž‹ä¿¡æ¯è¡¨Service定义
 * @author æ±Ÿè¹„蹄
 * @date 2025/06/27 16:01
 */
public interface CompanyDocumentsService {
    /**
     * åˆ›å»º
     *
     * @param companyDocuments å®žä½“对象
     * @return Integer
     */
    Integer create(CompanyDocuments companyDocuments);
    /**
     * ä¸»é”®åˆ é™¤
     *
     * @param id ä¸»é”®
     */
    void deleteById(Integer id, LoginUserInfo user);
    /**
     * åˆ é™¤
     *
     * @param companyDocuments å®žä½“对象
     */
    void delete(CompanyDocuments companyDocuments);
    /**
     * æ‰¹é‡ä¸»é”®åˆ é™¤
     *
     * @param ids ä¸»é”®é›†
     */
    void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user);
    /**
     * ä¸»é”®æ›´æ–°
     *
     * @param companyDocuments å®žä½“对象
     */
    void updateById(CompanyDocuments companyDocuments);
    /**
     * æ‰¹é‡ä¸»é”®æ›´æ–°
     *
     * @param companyDocumentss å®žä½“集
     */
    void updateByIdInBatch(List<CompanyDocuments> companyDocumentss);
    /**
     * ä¸»é”®æŸ¥è¯¢
     *
     * @param id ä¸»é”®
     * @return CompanyDocuments
     */
    CompanyDocuments findById(Integer id);
    /**
     * æ¡ä»¶æŸ¥è¯¢å•条记录
     *
     * @param companyDocuments å®žä½“对象
     * @return CompanyDocuments
     */
    CompanyDocuments findOne(CompanyDocuments companyDocuments);
    /**
     * æ¡ä»¶æŸ¥è¯¢
     *
     * @param companyDocuments å®žä½“对象
     * @return List<CompanyDocuments>
     */
    List<CompanyDocuments> findList(CompanyDocuments companyDocuments);
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param pageWrap åˆ†é¡µå¯¹è±¡
     * @return PageData<CompanyDocuments>
     */
    PageData<CompanyDocuments> findPage(PageWrap<CompanyDocuments> pageWrap);
    /**
     * æ¡ä»¶ç»Ÿè®¡
     *
     * @param companyDocuments å®žä½“对象
     * @return long
     */
    long count(CompanyDocuments companyDocuments);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyDocumentsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,158 @@
package com.doumee.service.business.impl;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.CompanyDocumentsMapper;
import com.doumee.dao.business.model.CompanyDocuments;
import com.doumee.service.business.CompanyDocumentsService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.service.business.third.model.LoginUserInfo;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
/**
 * é𐿂£åŒºåŸŸé…ç½®ç±»åž‹ä¿¡æ¯è¡¨Service实现
 * @author æ±Ÿè¹„蹄
 * @date 2025/06/27 16:01
 */
@Service
public class CompanyDocumentsServiceImpl implements CompanyDocumentsService {
    @Autowired
    private CompanyDocumentsMapper companyDocumentsMapper;
    @Override
    public Integer create(CompanyDocuments companyDocuments) {
        companyDocumentsMapper.insert(companyDocuments);
        return companyDocuments.getId();
    }
    @Override
    public void deleteById(Integer id, LoginUserInfo user) {
        companyDocumentsMapper.deleteById(id);
    }
    @Override
    public void delete(CompanyDocuments companyDocuments) {
        UpdateWrapper<CompanyDocuments> deleteWrapper = new UpdateWrapper<>(companyDocuments);
        companyDocumentsMapper.delete(deleteWrapper);
    }
    @Override
    public void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        companyDocumentsMapper.deleteBatchIds(ids);
    }
    @Override
    public void updateById(CompanyDocuments companyDocuments) {
        companyDocumentsMapper.updateById(companyDocuments);
    }
    @Override
    public void updateByIdInBatch(List<CompanyDocuments> companyDocumentss) {
        if (CollectionUtils.isEmpty(companyDocumentss)) {
            return;
        }
        for (CompanyDocuments companyDocuments: companyDocumentss) {
            this.updateById(companyDocuments);
        }
    }
    @Override
    public CompanyDocuments findById(Integer id) {
        return companyDocumentsMapper.selectById(id);
    }
    @Override
    public CompanyDocuments findOne(CompanyDocuments companyDocuments) {
        QueryWrapper<CompanyDocuments> wrapper = new QueryWrapper<>(companyDocuments);
        return companyDocumentsMapper.selectOne(wrapper);
    }
    @Override
    public List<CompanyDocuments> findList(CompanyDocuments companyDocuments) {
        QueryWrapper<CompanyDocuments> wrapper = new QueryWrapper<>(companyDocuments);
        return companyDocumentsMapper.selectList(wrapper);
    }
    @Override
    public PageData<CompanyDocuments> findPage(PageWrap<CompanyDocuments> pageWrap) {
        IPage<CompanyDocuments> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<CompanyDocuments> queryWrapper = new QueryWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.lambda().eq(CompanyDocuments::getId, pageWrap.getModel().getId());
        }
        if (pageWrap.getModel().getCreator() != null) {
            queryWrapper.lambda().eq(CompanyDocuments::getCreator, pageWrap.getModel().getCreator());
        }
        if (pageWrap.getModel().getCreateDate() != null) {
            queryWrapper.lambda().ge(CompanyDocuments::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.lambda().le(CompanyDocuments::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
        }
        if (pageWrap.getModel().getEditor() != null) {
            queryWrapper.lambda().eq(CompanyDocuments::getEditor, pageWrap.getModel().getEditor());
        }
        if (pageWrap.getModel().getEditDate() != null) {
            queryWrapper.lambda().ge(CompanyDocuments::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.lambda().le(CompanyDocuments::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
        }
        if (pageWrap.getModel().getIsdeleted() != null) {
            queryWrapper.lambda().eq(CompanyDocuments::getIsdeleted, pageWrap.getModel().getIsdeleted());
        }
        if (pageWrap.getModel().getName() != null) {
            queryWrapper.lambda().eq(CompanyDocuments::getName, pageWrap.getModel().getName());
        }
        if (pageWrap.getModel().getRemark() != null) {
            queryWrapper.lambda().eq(CompanyDocuments::getRemark, pageWrap.getModel().getRemark());
        }
        if (pageWrap.getModel().getStatus() != null) {
            queryWrapper.lambda().eq(CompanyDocuments::getStatus, pageWrap.getModel().getStatus());
        }
        if (pageWrap.getModel().getSortnum() != null) {
            queryWrapper.lambda().eq(CompanyDocuments::getSortnum, pageWrap.getModel().getSortnum());
        }
        if (pageWrap.getModel().getFileurl() != null) {
            queryWrapper.lambda().eq(CompanyDocuments::getFileurl, pageWrap.getModel().getFileurl());
        }
        if (pageWrap.getModel().getFileName() != null) {
            queryWrapper.lambda().eq(CompanyDocuments::getFileName, pageWrap.getModel().getFileName());
        }
        if (pageWrap.getModel().getFileSize() != null) {
            queryWrapper.lambda().eq(CompanyDocuments::getFileSize, pageWrap.getModel().getFileSize());
        }
        if (pageWrap.getModel().getCategoryId() != null) {
            queryWrapper.lambda().eq(CompanyDocuments::getCategoryId, pageWrap.getModel().getCategoryId());
        }
        if (pageWrap.getModel().getCompanyId() != null) {
            queryWrapper.lambda().eq(CompanyDocuments::getCompanyId, pageWrap.getModel().getCompanyId());
        }
        if (pageWrap.getModel().getContent() != null) {
            queryWrapper.lambda().eq(CompanyDocuments::getContent, pageWrap.getModel().getContent());
        }
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
            } else {
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        return PageData.from(companyDocumentsMapper.selectPage(page, queryWrapper));
    }
    @Override
    public long count(CompanyDocuments companyDocuments) {
        QueryWrapper<CompanyDocuments> wrapper = new QueryWrapper<>(companyDocuments);
        return companyDocumentsMapper.selectCount(wrapper);
    }
}