jiangping
2025-04-07 3ae2f5b6fb34c4718040229ef82cfdf2414304fc
代码初始化
已添加1个文件
已修改11个文件
470 ■■■■■ 文件已修改
admin/src/api/business/member.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/base/BaseTable.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaManagersWindow.vue 92 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/company.vue 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/managersDca.vue 85 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/managersDcaAuth.vue 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/managersShe.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/api/business/MemberController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/dao/business/ManagersMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/dao/business/model/Managers.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/service/business/impl/ManagersServiceImpl.java 108 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/member.js
@@ -32,7 +32,11 @@
export function deleteById (id) {
  return request.get(`/business/member/delete/${id}`)
}
export function allList (data) {
  return request.post('/business/member/list', data, {
    trim: true
  })
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/business/member/delete/batch', {
admin/src/components/base/BaseTable.vue
@@ -168,7 +168,7 @@
     */
    deleteById (row, childConfirm = true) {
      this.__checkApi()
      let message = `确认删除${this.module}【${row[this.configData['field.main']]}】吗?`
      let message = `确认删除${this.module}吗?`
      if (childConfirm && row.children != null && row.children.length > 0) {
        message = `确认删除${this.module}【${row[this.configData['field.main']]}】及其子${this.module}吗?`
      }
admin/src/components/business/OperaManagersWindow.vue
@@ -6,41 +6,18 @@
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="form.creator" placeholder="请输入创建人编码" v-trim/>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="form.editor" placeholder="请输入更新人编码" v-trim/>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="form.isdeleted" placeholder="请输入是否删除0否 1是" v-trim/>
      </el-form-item>
      <el-form-item label="所属分类编(关联category)" prop="categoryId">
        <el-input v-model="form.categoryId" placeholder="请输入所属分类编(关联category)" v-trim/>
      <el-form-item  label="选择负责人:" prop="memberId">
        <el-select v-model="form.memberId" filterable remote :remote-method="loadMember" :loading="loading"  placeholder="可输入姓名 | æ‰‹æœºå· | éƒ¨é—¨åç§°è¿›è¡Œæœç´¢">
          <el-option
              v-for="item in memberList"
              :key="item.id"
              :label="item.name +' | '+(item.phone||'无')+' | '+ item.companyName"
              :value="item.id">
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="备注" prop="remark">
        <el-input v-model="form.remark" placeholder="请输入备注" v-trim/>
      </el-form-item>
      <el-form-item label="状态 0启用 1禁用" prop="status">
        <el-input v-model="form.status" placeholder="请输入状态 0启用 1禁用" 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="类型 0DCA责任人1安全风险物业主管 2安全风险处理工程师 4SHE负责人 5SHE工单邮箱抄送人" prop="type">
        <el-input v-model="form.type" placeholder="请输入类型 0DCA责任人1安全风险物业主管 2安全风险处理工程师 4SHE负责人 5SHE工单邮箱抄送人" v-trim/>
      </el-form-item>
      <el-form-item label="人员编码(关联member)" prop="memberId">
        <el-input v-model="form.memberId" placeholder="请输入人员编码(关联member)" v-trim/>
      </el-form-item>
      <el-form-item label="" prop="column13">
        <el-input v-model="form.column13" placeholder="请输入" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
@@ -49,6 +26,8 @@
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import  { allList } from "@/api/business/member";
export default {
  name: 'OperaManagersWindow',
  extends: BaseOpera,
@@ -57,22 +36,17 @@
    return {
      // è¡¨å•数据
      form: {
        id: null,
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        categoryId: '',
        remark: '',
        status: '',
        sortnum: '',
        type: '',
        memberId: '',
        column13: ''
        remark: ''
      },
      loading:false,
      memberList: [],
      // éªŒè¯è§„则
      rules: {
        memberId: [
          { required: true, message: '请选择负责人' }
        ]
      }
    }
  },
@@ -81,6 +55,38 @@
      api: '/business/managers',
      'field.id': 'id'
    })
  },
  methods: {
    loadMember (query) {
      this.memberList = []
      if(!query || query==''){
        return
      }
      this.loading =true
      allList({
        keyword: query
      })
        .then(res => {
          this.memberList = res
        })
        .catch(e => {
        })
        .finally(() => {
          this.loading =false
        })
    },
    open (title, target) {
      this.title = title
      this.visible = true
      // æ–°å»º
      this.$nextTick(() => {
        this.$refs.form.resetFields()
        this.form.type = target != null ? target.type : null
        this.form[this.configData['field.id']] = null
      })
      this.memberList = []
      // this.loadMember()
    }
  }
}
</script>
admin/src/views/business/company.vue
admin/src/views/business/managersDca.vue
@@ -1,57 +1,21 @@
<template>
  <TableLayout :permissions="['business:managers:query']">
    <!-- æœç´¢è¡¨å• -->
    <SearchFormCollapse slot="search-form">
    <div slot="search-form">
      <el-form ref="searchForm" :model="searchForm" label-width="100px" inline>
        <el-form-item label="主键" prop="id">
          <el-input v-model="searchForm.id" placeholder="请输入主键" @keypress.enter.native="search"></el-input>
        </el-form-item>
        <el-form-item label="创建人编码" prop="creator">
          <el-input v-model="searchForm.creator" placeholder="请输入创建人编码" @keypress.enter.native="search"></el-input>
        </el-form-item>
        <el-form-item label="创建时间" prop="createDate">
          <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间" @change="search"/>
        </el-form-item>
        <el-form-item label="更新人编码" prop="editor">
          <el-input v-model="searchForm.editor" placeholder="请输入更新人编码" @keypress.enter.native="search"></el-input>
        </el-form-item>
        <el-form-item label="更新时间" prop="editDate">
          <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间" @change="search"/>
        </el-form-item>
        <el-form-item label="是否删除0否 1是" prop="isdeleted">
          <el-input v-model="searchForm.isdeleted" placeholder="请输入是否删除0否 1是" @keypress.enter.native="search"></el-input>
        </el-form-item>
        <el-form-item label="所属分类编(关联category)" prop="categoryId">
          <el-input v-model="searchForm.categoryId" placeholder="请输入所属分类编(关联category)" @keypress.enter.native="search"></el-input>
        </el-form-item>
        <el-form-item label="备注" prop="remark">
          <el-input v-model="searchForm.remark" placeholder="请输入备注" @keypress.enter.native="search"></el-input>
        </el-form-item>
        <el-form-item label="状态 0启用 1禁用" prop="status">
          <el-input v-model="searchForm.status" placeholder="请输入状态 0启用 1禁用" @keypress.enter.native="search"></el-input>
        </el-form-item>
        <el-form-item label="排序码" prop="sortnum">
          <el-input v-model="searchForm.sortnum" placeholder="请输入排序码" @keypress.enter.native="search"></el-input>
        </el-form-item>
        <el-form-item label="类型 0DCA责任人1安全风险物业主管 2安全风险处理工程师 4SHE负责人 5SHE工单邮箱抄送人" prop="type">
          <el-input v-model="searchForm.type" placeholder="请输入类型 0DCA责任人1安全风险物业主管 2安全风险处理工程师 4SHE负责人 5SHE工单邮箱抄送人" @keypress.enter.native="search"></el-input>
        </el-form-item>
        <el-form-item label="人员编码(关联member)" prop="memberId">
          <el-input v-model="searchForm.memberId" placeholder="请输入人员编码(关联member)" @keypress.enter.native="search"></el-input>
        </el-form-item>
        <el-form-item label="" prop="column13">
          <el-input v-model="searchForm.column13" placeholder="请输入" @keypress.enter.native="search"></el-input>
        <el-form-item label="人员搜索 " prop="memberName">
          <el-input v-model="searchForm.memberName" 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>
    </SearchFormCollapse>
    </div>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:managers:create', 'business:managers:delete']">
        <li><el-button type="primary" @click="$refs.operaManagersWindow.open('新建责任人信息表')" icon="el-icon-plus" v-permissions="['business:managers:create']">新建</el-button></li>
        <li><el-button type="primary" @click="$refs.operaManagersWindow.open('新建DCA手动抄送人员信息',{type:1})" icon="el-icon-plus" v-permissions="['business:managers:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:managers:delete']">删除</el-button></li>
      </ul>
      <el-table
@@ -61,19 +25,12 @@
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="id" label="主键" min-width="100px"></el-table-column>
        <el-table-column prop="creator" label="创建人编码" min-width="100px"></el-table-column>
        <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
        <el-table-column prop="editor" label="更新人编码" min-width="100px"></el-table-column>
        <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="100px"></el-table-column>
        <el-table-column prop="editorName" label="操作人" min-width="100px"></el-table-column>
        <el-table-column prop="editDate" label="更新时间" min-width="100px"></el-table-column>
        <el-table-column prop="isdeleted" label="是否删除0否 1是" min-width="100px"></el-table-column>
        <el-table-column prop="categoryId" label="所属分类编(关联category)" min-width="100px"></el-table-column>
        <el-table-column prop="remark" label="备注" min-width="100px"></el-table-column>
        <el-table-column prop="status" label="状态 0启用 1禁用" min-width="100px"></el-table-column>
        <el-table-column prop="sortnum" label="排序码" min-width="100px"></el-table-column>
        <el-table-column prop="type" label="类型 0DCA责任人1安全风险物业主管 2安全风险处理工程师 4SHE负责人 5SHE工单邮箱抄送人" min-width="100px"></el-table-column>
        <el-table-column prop="memberId" label="人员编码(关联member)" min-width="100px"></el-table-column>
        <el-table-column prop="column13" label="" min-width="100px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:managers:update', 'business:managers:delete'])"
          label="操作"
@@ -81,8 +38,10 @@
          fixed="right"
        >
          <template slot-scope="{row}">
<!--
            <el-button type="text" @click="$refs.operaManagersWindow.open('编辑责任人信息表', row)" icon="el-icon-edit" v-permissions="['business:managers:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:managers:delete']">删除</el-button>
-->
            <el-button type="text" style="color: red" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:managers:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
@@ -101,36 +60,24 @@
<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 OperaManagersWindow from '@/components/business/OperaManagersWindow'
export default {
  name: 'Managers',
  extends: BaseTable,
  components: { SearchFormCollapse, TableLayout, Pagination, OperaManagersWindow },
  components: { TableLayout, Pagination, OperaManagersWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        id: '',
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        categoryId: '',
        remark: '',
        status: '',
        sortnum: '',
        type: '',
        memberId: '',
        column13: ''
        memberName: '',
        type: 1
      }
    }
  },
  created () {
    this.config({
      module: '责任人信息表',
      module: 'DCA手动抄送人员信息',
      api: '/business/managers',
      'field.id': 'id',
      'field.main': 'id'
admin/src/views/business/managersDcaAuth.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@
<template>
  <TableLayout :permissions="['business:managers:query']">
    <!-- æœç´¢è¡¨å• -->
    <div slot="search-form">
      <el-form ref="searchForm" :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>
        <section>
          <el-button type="primary" @click="search">搜索</el-button>
          <el-button @click="reset">重置</el-button>
        </section>
      </el-form>
    </div>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:managers:create', 'business:managers:delete']">
        <li><el-button type="primary" @click="$refs.operaManagersWindow.open('新建DCA上报权限人员信息',{type:2})" icon="el-icon-plus" v-permissions="['business:managers:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:managers: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="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="100px"></el-table-column>
        <el-table-column prop="editorName" label="操作人" min-width="100px"></el-table-column>
        <el-table-column prop="editDate" label="更新时间" min-width="100px"></el-table-column>
        <el-table-column prop="remark" label="备注" min-width="100px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:managers:update', 'business:managers:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
          <template slot-scope="{row}">
<!--
            <el-button type="text" @click="$refs.operaManagersWindow.open('编辑责任人信息表', row)" icon="el-icon-edit" v-permissions="['business:managers:update']">编辑</el-button>
-->
            <el-button type="text" style="color: red" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:managers:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaManagersWindow ref="operaManagersWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaManagersWindow from '@/components/business/OperaManagersWindow'
export default {
  name: 'Managers',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaManagersWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        memberName: '',
        type: 2
      }
    }
  },
  created () {
    this.config({
      module: 'DCA上报权限人员信息',
      api: '/business/managers',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  }
}
</script>
admin/src/views/business/managersShe.vue
@@ -1,21 +1,21 @@
<template>
  <TableLayout :permissions="['business:managers:query']">
    <!-- æœç´¢è¡¨å• -->
    <SearchFormCollapse slot="search-form">
    <div slot="search-form">
      <el-form ref="searchForm" :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 label="人员搜索 " prop="memberName">
          <el-input v-model="searchForm.memberName" 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>
    </SearchFormCollapse>
    </div>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:managers:create', 'business:managers:delete']">
        <li><el-button type="primary" @click="$refs.operaManagersWindow.open('新建责任人信息表')" icon="el-icon-plus" v-permissions="['business:managers:create']">新建</el-button></li>
        <li><el-button type="primary" @click="$refs.operaManagersWindow.open('新建SHE责任人',{type:0})" icon="el-icon-plus" v-permissions="['business:managers:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:managers:delete']">删除</el-button></li>
      </ul>
      <el-table
@@ -26,6 +26,7 @@
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <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="100px"></el-table-column>
        <el-table-column prop="editorName" label="操作人" min-width="100px"></el-table-column>
        <el-table-column prop="editDate" label="更新时间" min-width="100px"></el-table-column>
@@ -37,8 +38,10 @@
          fixed="right"
        >
          <template slot-scope="{row}">
<!--
            <el-button type="text" @click="$refs.operaManagersWindow.open('编辑责任人信息表', row)" icon="el-icon-edit" v-permissions="['business:managers:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:managers:delete']">删除</el-button>
-->
            <el-button type="text" style="color: red" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:managers:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
@@ -57,13 +60,12 @@
<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 OperaManagersWindow from '@/components/business/OperaManagersWindow'
export default {
  name: 'Managers',
  extends: BaseTable,
  components: { SearchFormCollapse, TableLayout, Pagination, OperaManagersWindow },
  components: { TableLayout, Pagination, OperaManagersWindow },
  data () {
    return {
      // æœç´¢
@@ -75,7 +77,7 @@
  },
  created () {
    this.config({
      module: '责任人信息表',
      module: 'SHE责任人信息',
      api: '/business/managers',
      'field.id': 'id',
      'field.main': 'id'
server/src/main/java/com/doumee/api/business/MemberController.java
@@ -75,6 +75,12 @@
    public ApiResponse<PageData<Member>> findPage (@RequestBody PageWrap<Member> pageWrap) {
        return ApiResponse.success(memberService.findPage(pageWrap));
    }
    @ApiOperation("查询全部")
    @PostMapping("/list")
    @RequiresPermissions("business:member:query")
    public ApiResponse<List<Member>> findList (@RequestBody  Member pageWrap) {
        return ApiResponse.success(memberService.findList(pageWrap));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
server/src/main/java/com/doumee/dao/business/ManagersMapper.java
@@ -2,11 +2,12 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.Managers;
import com.github.yulichang.base.MPJBaseMapper;
/**
 * @author æ±Ÿè¹„蹄
 * @since 2025/04/02 17:49
 */
public interface ManagersMapper extends BaseMapper<Managers> {
public interface ManagersMapper extends MPJBaseMapper<Managers> {
}
server/src/main/java/com/doumee/dao/business/model/Managers.java
@@ -80,5 +80,11 @@
    @ApiModelProperty(value = "员工姓名")
    @TableField(exist = false)
    private String memberName;
    @ApiModelProperty(value = "员工手机号")
    @TableField(exist = false)
    private String memberPhone;
    @ApiModelProperty(value = "姓名/手机号/部门")
    @TableField(exist = false)
    private String keyword;
}
server/src/main/java/com/doumee/service/business/impl/ManagersServiceImpl.java
@@ -1,19 +1,31 @@
package com.doumee.service.business.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.doumee.core.constants.Constants;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.ManagersMapper;
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.model.Managers;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.ManagersService;
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.github.yulichang.wrapper.MPJLambdaWrapper;
import io.swagger.models.auth.In;
import org.apache.shiro.SecurityUtils;
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;
/**
@@ -26,16 +38,42 @@
    @Autowired
    private ManagersMapper managersMapper;
    @Autowired
    private MemberMapper memberMapper;
    @Override
    public Integer create(Managers managers) {
        Member member =memberMapper.selectById(managers.getMemberId());
        if(member == null || Constants.equalsInteger(member.getIsdeleted(),Constants.ONE)){
            throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该负责人信息不存在,请刷新页面重试!");
        }
        Managers model =managersMapper.selectOne(new LambdaQueryWrapper<Managers>().eq(Managers::getMemberId,managers.getMemberId())
                .eq(Managers::getType,managers.getType())
                .eq(Managers::getIsdeleted,Constants.ZERO)
        );
        if(model !=null){
            throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"该人员信息已设置,无需重新添加");
        }
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        managers.setCreator(user.getId());
        managers.setCreateDate(new Date());
        managers.setIsdeleted(Constants.ZERO);
        managers.setEditor(managers.getCreator());
        managers.setEditDate(managers.getCreateDate());
        managers.setStatus(Constants.ZERO);
        managersMapper.insert(managers);
        return managers.getId();
    }
    @Override
    public void deleteById(Integer id) {
        managersMapper.deleteById(id);
        Managers managers = new Managers();
        managers.setId(id);
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        managers.setEditor(user.getId());
        managers.setEditDate(new Date());
        managers.setIsdeleted(Constants.ONE);
        managersMapper.updateById(managers);
    }
    @Override
@@ -49,11 +87,16 @@
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        managersMapper.deleteBatchIds(ids);
        for(Integer id :ids){
            deleteById(id);
        }
    }
    @Override
    public void updateById(Managers managers) {
        LoginUserInfo user = new LoginUserInfo();
        managers.setEditor(user.getId());
        managers.setEditDate(new Date());
        managersMapper.updateById(managers);
    }
@@ -79,17 +122,53 @@
    }
    @Override
    public List<Managers> findList(Managers managers) {
        QueryWrapper<Managers> wrapper = new QueryWrapper<>(managers);
        return managersMapper.selectList(wrapper);
    public List<Managers> findList(Managers pageWrap) {
        MPJLambdaWrapper<Managers> queryWrapper = new MPJLambdaWrapper<>();
      pageWrap.setIsdeleted(Constants.ZERO);
        queryWrapper.selectAll(Managers.class )
                .selectAs(Member::getPhone,Managers::getMemberPhone)
                .selectAs(Member::getName,Managers::getMemberName)
                .selectAs(Member::getCompanyName,Managers::getCompanyName)
                .selectAs(SystemUser::getUsername,Managers::getEditorName)
                .leftJoin(Member.class,Member::getId,Managers::getMemberId)
                .leftJoin(SystemUser.class,SystemUser::getId,Managers::getEditor)
                .eq(pageWrap.getId() != null, Managers::getId, pageWrap.getId())
                .eq(pageWrap.getCreator() != null, Managers::getCreator, pageWrap.getCreator())
                .ge(pageWrap.getCreateDate() != null, Managers::getCreateDate, Utils.Date.getStart(pageWrap.getCreateDate()))
                .le(pageWrap.getCreateDate() != null, Managers::getCreateDate, Utils.Date.getEnd(pageWrap.getCreateDate()))
                .eq(pageWrap.getEditor() != null, Managers::getEditor, pageWrap.getEditor())
                .ge(pageWrap.getEditDate() != null, Managers::getEditDate, Utils.Date.getStart(pageWrap.getEditDate()))
                .le(pageWrap.getEditDate() != null, Managers::getEditDate, Utils.Date.getEnd(pageWrap.getEditDate()))
                .eq(pageWrap.getIsdeleted() != null, Managers::getIsdeleted, pageWrap.getIsdeleted())
                .eq(pageWrap.getCategoryId() != null, Managers::getCategoryId, pageWrap.getCategoryId())
                .eq(pageWrap.getRemark() != null, Managers::getRemark, pageWrap.getRemark())
                .eq(pageWrap.getStatus() != null, Managers::getStatus, pageWrap.getStatus())
                .eq(pageWrap.getSortnum() != null, Managers::getSortnum, pageWrap.getSortnum())
                .eq(pageWrap.getType() != null, Managers::getType, pageWrap.getType())
                .eq(pageWrap.getMemberId() != null, Managers::getMemberId, pageWrap.getMemberId())
                .like(pageWrap.getMemberName() != null, Member::getName, pageWrap.getMemberName());
        if (pageWrap.getKeyword() != null) {
            queryWrapper.and( ms->ms.like(Member::getName,pageWrap.getKeyword())
                    .or().like(Member::getPhone,pageWrap.getKeyword())
                    .or().like(Member::getCompanyName,pageWrap .getKeyword()));
        }
        queryWrapper.orderByDesc(Managers::getEditDate);
        return managersMapper.selectJoinList( Managers.class, queryWrapper);
    }
  
    @Override
    public PageData<Managers> findPage(PageWrap<Managers> pageWrap) {
        IPage<Managers> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<Managers> queryWrapper = new QueryWrapper<>();
        MPJLambdaWrapper<Managers> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        queryWrapper.lambda()
        pageWrap.getModel().setIsdeleted(Constants.ZERO);
        queryWrapper.selectAll(Managers.class )
                .selectAs(Member::getPhone,Managers::getMemberPhone)
                .selectAs(Member::getName,Managers::getMemberName)
                .selectAs(Member::getCompanyName,Managers::getCompanyName)
                .selectAs(SystemUser::getUsername,Managers::getEditorName)
                .leftJoin(Member.class,Member::getId,Managers::getMemberId)
                .leftJoin(SystemUser.class,SystemUser::getId,Managers::getEditor)
                .eq(pageWrap.getModel().getId() != null, Managers::getId, pageWrap.getModel().getId())
                .eq(pageWrap.getModel().getCreator() != null, Managers::getCreator, pageWrap.getModel().getCreator())
                .ge(pageWrap.getModel().getCreateDate() != null, Managers::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
@@ -104,15 +183,14 @@
                .eq(pageWrap.getModel().getSortnum() != null, Managers::getSortnum, pageWrap.getModel().getSortnum())
                .eq(pageWrap.getModel().getType() != null, Managers::getType, pageWrap.getModel().getType())
                .eq(pageWrap.getModel().getMemberId() != null, Managers::getMemberId, pageWrap.getModel().getMemberId())
        ;
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
            } else {
                queryWrapper.orderByAsc(sortData.getProperty());
                .like(pageWrap.getModel().getMemberName() != null, Member::getName, pageWrap.getModel().getMemberName());
        if (pageWrap.getModel().getKeyword() != null) {
            queryWrapper.and( ms->ms.like(Member::getName,pageWrap.getModel().getKeyword())
                    .or().like(Member::getPhone,pageWrap.getModel().getKeyword())
                    .or().like(Member::getCompanyName,pageWrap.getModel().getKeyword()));
            }
        }
        return PageData.from(managersMapper.selectPage(page, queryWrapper));
        queryWrapper.orderByDesc(Managers::getEditDate);
        return PageData.from(managersMapper.selectJoinPage(page,Managers.class, queryWrapper));
    }
    @Override
server/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -109,9 +109,53 @@
    }
    @Override
    public List<Member> findList(Member member) {
        QueryWrapper<Member> wrapper = new QueryWrapper<>(member);
        return memberMapper.selectList(wrapper);
    public List<Member> findList(Member pageWrap) {
        pageWrap.setIsdeleted(Constants.ZERO);
        MPJLambdaWrapper<Member> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper. selectAll(Member.class)
                .selectAs(SystemUser::getUsername,Member::getEditorName)
                .leftJoin(SystemUser.class,SystemUser::getId,Member::getEditor)
                .eq(pageWrap.getId() != null, Member::getId, pageWrap.getId())
                .eq(pageWrap.getCreator() != null, Member::getCreator, pageWrap.getCreator())
                .ge(pageWrap.getCreateDate() != null, Member::getCreateDate, Utils.Date.getStart(pageWrap.getCreateDate()))
                .le(pageWrap.getCreateDate() != null, Member::getCreateDate, Utils.Date.getEnd(pageWrap.getCreateDate()))
                .eq(pageWrap.getEditor() != null, Member::getEditor, pageWrap.getEditor())
                .ge(pageWrap.getEditDate() != null, Member::getEditDate, Utils.Date.getStart(pageWrap.getEditDate()))
                .le(pageWrap.getEditDate() != null, Member::getEditDate, Utils.Date.getEnd(pageWrap.getEditDate()))
                .eq(pageWrap.getIsdeleted() != null, Member::getIsdeleted, pageWrap.getIsdeleted())
                .like(pageWrap.getName() != null, Member::getName, pageWrap.getName())
                .eq(pageWrap.getRemark() != null, Member::getRemark, pageWrap.getRemark())
                .eq(pageWrap.getStatus() != null, Member::getStatus, pageWrap.getStatus())
                .eq(pageWrap.getSortnum() != null, Member::getSortnum, pageWrap.getSortnum())
                .eq(pageWrap.getImgurl() != null, Member::getImgurl, pageWrap.getImgurl())
                .eq(pageWrap.getType() != null, Member::getType, pageWrap.getType())
                .eq(pageWrap.getCompanyName() != null, Member::getCompanyName, pageWrap.getCompanyName())
                .eq(pageWrap.getPhone() != null, Member::getPhone, pageWrap.getPhone())
                .eq(pageWrap.getEmail() != null, Member::getEmail, pageWrap.getEmail())
                .eq(pageWrap.getSex() != null, Member::getSex, pageWrap.getSex())
                .eq(pageWrap.getCode() != null, Member::getCode, pageWrap.getCode())
                .eq(pageWrap.getQwId() != null, Member::getQwId, pageWrap.getQwId())
                .eq(pageWrap.getIdcard() != null, Member::getIdcard, pageWrap.getIdcard())
                .ge(pageWrap.getLastLoginDate() != null, Member::getLastLoginDate, Utils.Date.getStart(pageWrap.getLastLoginDate()))
                .le(pageWrap.getLastLoginDate() != null, Member::getLastLoginDate, Utils.Date.getEnd(pageWrap.getLastLoginDate()))
                .eq(pageWrap.getLoginCount() != null, Member::getLoginCount, pageWrap.getLoginCount());
        if (pageWrap.getKeyword() != null) {
            queryWrapper.and( ms->ms.like(Member::getName,pageWrap.getKeyword())
                    .or().like(Member::getPhone,pageWrap.getKeyword())
                    .or().like(Member::getCompanyName,pageWrap.getKeyword()));
        }
        if(pageWrap.getIncludeChild()!=null &&pageWrap.getIncludeChild() ){
            if(pageWrap.getCompanyId() !=null){
                //如果包含下级组织
                Company company = companyMapper.selectById(pageWrap.getCompanyId());//查询组织信息
                queryWrapper.exists("select (cm.id) from company_member cm where cm.company_id_path like '"+company.getIdPath()+"%'  and cm.member_id=t.id");
//                queryWrapper.likeRight(Company::getIdPath,company.getIdPath());
            }
        }else{
            //不包含下级组织
            queryWrapper.exists(pageWrap.getCompanyId()!=null,"select (cm.id) from company_member cm where cm.company_id='"+pageWrap.getCompanyId()+"'  and cm.member_id=t.id");
        }
        return memberMapper.selectJoinList(Member.class,queryWrapper);
    }
    @Override
@@ -137,7 +181,7 @@
                .eq(pageWrap.getModel().getSortnum() != null, Member::getSortnum, pageWrap.getModel().getSortnum())
                .eq(pageWrap.getModel().getImgurl() != null, Member::getImgurl, pageWrap.getModel().getImgurl())
                .eq(pageWrap.getModel().getType() != null, Member::getType, pageWrap.getModel().getType())
//                .eq(pageWrap.getModel().getCompanyId() != null, Member::getCompanyId, pageWrap.getModel().getCompanyId())
                .eq(pageWrap.getModel().getCompanyName() != null, Member::getCompanyName, pageWrap.getModel().getCompanyName())
                .eq(pageWrap.getModel().getPhone() != null, Member::getPhone, pageWrap.getModel().getPhone())
                .eq(pageWrap.getModel().getEmail() != null, Member::getEmail, pageWrap.getModel().getEmail())
                .eq(pageWrap.getModel().getSex() != null, Member::getSex, pageWrap.getModel().getSex())
@@ -161,7 +205,7 @@
            }
        }else{
            //不包含下级组织
            queryWrapper.exists("select (cm.id) from company_member cm where cm.company_id='"+pageWrap.getModel().getCompanyId()+"'  and cm.member_id=t.id");
            queryWrapper.exists(pageWrap.getModel().getCompanyId()!=null,"select (cm.id) from company_member cm where cm.company_id='"+pageWrap.getModel().getCompanyId()+"'  and cm.member_id=t.id");
        }
        queryWrapper.orderByAsc(Member::getCreateDate);
        return PageData.from(memberMapper.selectJoinPage(page,Member.class, queryWrapper));