Browse Source

人员管理

Memory_LG 8 tháng trước cách đây
mục cha
commit
42823d70d4

+ 52 - 0
lawenforcement-ui/src/api/lawenforcement/user.js

@@ -0,0 +1,52 @@
+import request from '@/utils/request'
+
+// 查询人员信息管理列表
+export function listUser(query) {
+  return request({
+    url: '/sooka-sponest-lawenforcement/user/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询人员信息管理详细
+export function getUser(userId) {
+  return request({
+    url: '/sooka-sponest-lawenforcement/user/' + userId,
+    method: 'get'
+  })
+}
+
+// 新增人员信息管理
+export function addUser(data) {
+  return request({
+    url: '/sooka-sponest-lawenforcement/user',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改人员信息管理
+export function updateUser(data) {
+  return request({
+    url: '/sooka-sponest-lawenforcement/user',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除人员信息管理
+export function delUser(userId) {
+  return request({
+    url: '/sooka-sponest-lawenforcement/user/' + userId,
+    method: 'delete'
+  })
+}
+
+export function selectUserList() {
+  return request({
+    url: '/sooka-sponest-system/user/userFeginlist',
+    method: 'post',
+    data:{}
+  })
+}

+ 519 - 0
lawenforcement-ui/src/views/lawenforcement/user/index.vue

@@ -0,0 +1,519 @@
+<template>
+  <div class="app-container">
+    <el-row :gutter="20">
+      <!--部门数据-->
+      <el-col :span="4" :xs="24">
+        <div class="head-container">
+          <el-input
+            v-model="deptName"
+            placeholder="请输入部门名称"
+            clearable
+            size="small"
+            prefix-icon="el-icon-search"
+            style="margin-bottom: 20px"
+          >
+            <el-button slot="append" @click="changeQueryType" v-if="!queryThisLevel">本级及下级</el-button>
+            <el-button slot="append" @click="changeQueryType" v-if="queryThisLevel">只查询本级</el-button>
+          </el-input>
+        </div>
+        <div class="head-container tree-scrollbar" style="height: 700px;overflow-y:auto;">
+          <el-tree
+            :data="deptOptions"
+            :props="defaultProps"
+            :expand-on-click-node="false"
+            :filter-node-method="filterNode"
+            ref="tree"
+            node-key="id"
+            :default-expanded-keys="[100]"
+            @node-click="handleNodeClick"
+          />
+        </div>
+      </el-col>
+      <!--林长数据-->
+      <el-col :span="20" :xs="24">
+        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"
+                 @submit.native.prevent>
+          <el-form-item label="姓名" prop="nickName" label-width="100px">
+            <el-input
+              v-model="queryParams.nickName"
+              placeholder="请输入姓名"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+          </el-form-item>
+        </el-form>
+
+        <el-row :gutter="10" class="mb8">
+          <el-col :span="1.5">
+            <el-button
+              type="primary"
+              plain
+              icon="el-icon-plus"
+              size="mini"
+              @click="handleAdd"
+              v-hasPermi="['lawenforcement:user:add']"
+            >新增
+            </el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="success"
+              plain
+              icon="el-icon-edit"
+              size="mini"
+              :disabled="single"
+              @click="handleUpdate"
+              v-hasPermi="['lawenforcement:user:edit']"
+            >修改
+            </el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="danger"
+              plain
+              icon="el-icon-delete"
+              size="mini"
+              :disabled="multiple"
+              @click="handleDelete"
+              v-hasPermi="['lawenforcement:user:remove']"
+            >删除
+            </el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="warning"
+              plain
+              icon="el-icon-download"
+              size="mini"
+              @click="handleExport"
+              v-hasPermi="['lawenforcement:user:export']"
+            >导出
+            </el-button>
+          </el-col>
+          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+        </el-row>
+
+        <el-table v-loading="loading" :data="lawenforcementUserList" @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="55" align="center"/>
+          <el-table-column label="姓名" align="center" prop="nickName"/>
+          <el-table-column label="联系电话" align="center" prop="phonenumber"/>
+          <el-table-column label="性别" align="center" prop="sex">
+            <template slot-scope="scope">
+              <dict-tag :options="dict.type.sys_user_sex" :value="scope.row.sex"/>
+            </template>
+          </el-table-column>
+          <el-table-column label="专业特长" align="center" prop="professional"/>
+          <el-table-column label="学历" align="center" prop="educational"/>
+          <el-table-column label="职级" align="center" prop="job"/>
+          <el-table-column label="级别" align="center" prop="level"/>
+          <el-table-column label="办公地点" align="center" prop="officeLocation"/>
+          <el-table-column label="居住地点" align="center" prop="homeAddress"/>
+          <el-table-column label="执法证号" align="center" prop="certificateNumber"/>
+          <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+            <template slot-scope="scope">
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-edit"
+                @click="handleUpdate(scope.row)"
+                v-hasPermi="['lawenforcement:user:edit']"
+              >修改
+              </el-button>
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-delete"
+                @click="handleDelete(scope.row)"
+                v-hasPermi="['lawenforcement:user:remove']"
+              >删除
+              </el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <pagination
+          v-show="total>0"
+          :total="total"
+          :page.sync="queryParams.pageNum"
+          :limit.sync="queryParams.pageSize"
+          @pagination="pageList"
+        />
+      </el-col>
+    </el-row>
+
+
+    <!-- 添加或修改林长管理对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="850px" class="form-style">
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="关联用户" prop="userId">
+              <el-select v-model="form.userId" filterable placeholder="请选择关联用户">
+                <el-option
+                  v-for="dict in userList"
+                  :key="dict.userId"
+                  :label="dict.nickName"
+                  :value="String(dict.userId)"
+                  @click.native="a(dict)"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="性别" prop="sex">
+              <el-select v-model="form.sex" placeholder="请选择性别" disabled>
+                <el-option
+                  v-for="dict in dict.type.sys_user_sex"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="手机号" prop="phonenumber">
+              <el-input v-model="form.phonenumber" placeholder="请输入手机号" maxlength="13" disabled/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="身份证号" prop="cardNumber">
+              <el-input v-model="form.cardNumber" placeholder="请输入身份证号"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="专业特长" prop="professional">
+              <el-input v-model="form.professional" placeholder="请输入专业特长"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="学历" prop="educational">
+              <el-input v-model="form.educational" placeholder="请输入学历"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="职级" prop="job">
+              <el-input v-model="form.job" placeholder="请输入职级"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="级别" prop="level">
+              <el-input v-model="form.level" placeholder="请输入级别"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="办公地点" prop="officeLocation">
+              <el-input v-model="form.officeLocation" placeholder="请输入办公地点"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="居住地点" prop="homeAddress">
+              <el-input v-model="form.homeAddress" placeholder="请输入居住地点"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="执法证号" prop="certificateNumber">
+              <el-input v-model="form.certificateNumber" placeholder="请输入执法证号"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="所属部门" prop="deptId">
+              <treeselect v-model="form.deptId" :options="deptOptions" multiple:false :show-count="true"
+                          placeholder="请选择部门" @select="hxToDept" :noResultsText="'空'" :noOptionsText="'空'"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {addUser, delUser, getUser, listUser, selectUserList, updateUser} from "@/api/lawenforcement/user";
+import deptselector from '@/views/components/deptselector'
+import Treeselect from '@riophae/vue-treeselect'
+import '@riophae/vue-treeselect/dist/vue-treeselect.css'
+import {validPhoneMobile} from "@/api/rules/rules";
+import {treeselect} from "@/api/system/dept";
+
+export default {
+  name: "User",
+  components: {deptselector, Treeselect},
+  dicts: ['sys_user_sex'],
+  data() {
+    return {
+      //左侧组织机构数查询方式  true查询本级  false查询本级及下级
+      queryThisLevel: false,
+      // 部门树选项
+      deptOptions: [],
+      // 林业网格层级信息树选项
+      gridLevelOptions: [],
+      userList: [],
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 林长管理表格数据
+      lawenforcementUserList: [],
+      // 部门名称
+      deptName: undefined,
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        nickName: null,
+        deptId: null,
+      },
+      // 表单参数
+      form: {},
+      defaultProps: {
+        children: 'children',
+        label: 'label'
+      },
+      // 表单校验
+      rules: {
+        userId: [
+          {required: true, message: "姓名不能为空", trigger: "change"}
+        ],
+        sex: [
+          {required: true, message: "性别不能为空", trigger: "change"}
+        ],
+        phonenumber: [
+          {required: true, message: "联系电话不能为空", trigger: "change"},
+          {validator: validPhoneMobile, trigger: 'blur'}
+        ],
+        deptId: [
+          {required: true, message: '所属部门不能为空', trigger: 'change'}
+        ]
+      },
+    };
+  },
+  watch: {
+    // 根据名称筛选部门树
+    deptName(val) {
+      this.$refs.tree.filter(val)
+    }
+  },
+  created() {
+    this.getList();
+    selectUserList().then(response => {
+      this.userList = response.data;
+    });
+    this.getTreeselectToDept();
+  },
+  methods: {
+    hxToDept(node) {
+      console.log(node)
+      this.form.deptId = node.id
+      this.form.deptName = node.label
+      console.log(this.form)
+      this.$refs.form.validateField("deptId")
+    },
+    getTreeselectToDept() {
+      treeselect().then(response => {
+        this.deptOptions = response.data;
+      });
+    },
+    a(event) {
+      this.form.userID = event.userId
+      this.form.nickName = event.nickName
+      this.form.sex = event.sex
+      this.form.phonenumber = event.phonenumber
+    },
+
+    hx(node) {
+      if (node.id == '') {
+
+      } else {
+        this.form.linGridId = node.id
+        this.form.linGridName = node.name
+      }
+    },
+    /** 转换林业网格层级信息数据结构 */
+    normalizer(node) {
+      if (node.children && !node.children.length) {
+        delete node.children
+      }
+      return {
+        id: node.id,
+        label: node.name,
+        children: node.children
+      }
+    },
+    setDataDeptId(e) {
+      this.form.deptId = e.deptId
+      this.form.deptName = e.deptName
+    },
+    /** 查询林长管理列表 */
+    getList() {
+      this.loading = true;
+      listUser(this.queryParams).then(response => {
+        this.lawenforcementUserList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        userId: null,
+        nickName: null,
+        sex: null,
+        phonenumber: null,
+        cardNumber: null,
+        professional: null,
+        educational: null,
+        job: null,
+        level: null,
+        officeLocation: null,
+        homeAddress: null,
+        certificateNumber: null,
+        certificate: null,
+        deptId:null,
+        deptName:null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      if (!this.queryThisLevel) {
+        this.queryParams.deptName = 0
+      } else {
+        this.queryParams.deptName = null
+      }
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length !== 1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加人员";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const userId = row.userId || this.ids
+      getUser(userId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改人员";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.title === "修改人员") {
+            updateUser(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addUser(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const userIds = row.userId || this.ids;
+      this.$modal.confirm('是否确认删除人员信息管理编号为"' + userIds + '"的数据项?').then(function () {
+        return delUser(userIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('lawenforcement/user/export', {
+        ...this.queryParams
+      }, `user_${new Date().getTime()}.xlsx`)
+    },
+    //点击按钮修改是否只查询本级部门用户
+    changeQueryType() {
+      this.queryThisLevel = !this.queryThisLevel;
+    },
+    /**分页列表方法**/
+    pageList() {
+      if (!this.queryThisLevel) {
+        this.queryParams.deptName = 0
+      } else {
+        this.queryParams.deptName = null
+      }
+      this.getList();
+    },
+    // 筛选节点
+    filterNode(value, data) {
+      if (!value) return true
+      return data.label.indexOf(value) !== -1
+    },
+    // 节点单击事件
+    handleNodeClick(data) {
+      this.queryParams.deptId = data.id;
+      this.queryParams.pageNum = 1;
+      if (!this.queryThisLevel) {
+        this.queryParams.deptName = 0
+      } else {
+        this.queryParams.deptName = null
+      }
+      this.getList();
+    }
+  }
+};
+</script>

+ 12 - 0
src/main/java/com/sooka/sponest/lawenforcement/device/controller/DeviceController.java

@@ -21,6 +21,18 @@ public class DeviceController extends BaseController {
     @Autowired
     private IDeviceService deviceService;
 
+    @PostMapping("/deviceOpenOrClose")
+    public AjaxResult deviceOpenOrClose(@RequestBody DeviceBO bo){
+        if("0".equals(bo.getStatus())){
+            close(bo);
+        }else if("1".equals(bo.getStatus())){
+            open(bo);
+        }else{
+            return AjaxResult.error("状态异常");
+        }
+        return AjaxResult.success();
+    }
+
     @PostMapping("/open")
     public AjaxResult open(@RequestBody DeviceBO bo) {
         deviceService.open(bo);

+ 1 - 0
src/main/java/com/sooka/sponest/lawenforcement/device/domain/DeviceBO.java

@@ -7,4 +7,5 @@ import lombok.Setter;
 @Getter
 public class DeviceBO {
     private String deviceCode;
+    private String status;
 }

+ 91 - 0
src/main/java/com/sooka/sponest/lawenforcement/user/controller/LawenforcementUserController.java

@@ -0,0 +1,91 @@
+package com.sooka.sponest.lawenforcement.user.controller;
+
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.sooka.sponest.lawenforcement.user.domain.LawenforcementUser;
+import com.sooka.sponest.lawenforcement.user.service.ILawenforcementUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 人员信息管理Controller
+ *
+ * @author LG
+ * @date 2024-10-11
+ */
+@RestController
+@RequestMapping("/user")
+public class LawenforcementUserController extends BaseController {
+    @Autowired
+    private ILawenforcementUserService lawenforcementUserService;
+
+    /**
+     * 查询人员信息管理列表
+     */
+    @RequiresPermissions("lawenforcement:user:list")
+    @GetMapping("/list")
+    public TableDataInfo list(LawenforcementUser lawenforcementUser) {
+        startPage();
+        List<LawenforcementUser> list = lawenforcementUserService.selectLawenforcementUserList(lawenforcementUser);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出人员信息管理列表
+     */
+    @RequiresPermissions("lawenforcement:user:export")
+    @Log(title = "人员信息管理", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, LawenforcementUser lawenforcementUser) {
+        List<LawenforcementUser> list = lawenforcementUserService.selectLawenforcementUserList(lawenforcementUser);
+        ExcelUtil<LawenforcementUser> util = new ExcelUtil<LawenforcementUser>(LawenforcementUser.class);
+        util.exportExcel(response, list, "人员信息管理数据");
+    }
+
+    /**
+     * 获取人员信息管理详细信息
+     */
+    @RequiresPermissions("lawenforcement:user:query")
+    @GetMapping(value = "/{userId}")
+    public AjaxResult getInfo(@PathVariable("userId") String userId) {
+        return AjaxResult.success(lawenforcementUserService.selectLawenforcementUserByUserId(userId));
+    }
+
+    /**
+     * 新增人员信息管理
+     */
+    @RequiresPermissions("lawenforcement:user:add")
+    @Log(title = "人员信息管理", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody LawenforcementUser lawenforcementUser) {
+        return toAjax(lawenforcementUserService.insertLawenforcementUser(lawenforcementUser));
+    }
+
+    /**
+     * 修改人员信息管理
+     */
+    @RequiresPermissions("lawenforcement:user:edit")
+    @Log(title = "人员信息管理", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody LawenforcementUser lawenforcementUser) {
+        return toAjax(lawenforcementUserService.updateLawenforcementUser(lawenforcementUser));
+    }
+
+    /**
+     * 删除人员信息管理
+     */
+    @RequiresPermissions("lawenforcement:user:remove")
+    @Log(title = "人员信息管理", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{userIds}")
+    public AjaxResult remove(@PathVariable String[] userIds) {
+        return toAjax(lawenforcementUserService.deleteLawenforcementUserByUserIds(userIds));
+    }
+}

+ 101 - 0
src/main/java/com/sooka/sponest/lawenforcement/user/domain/LawenforcementUser.java

@@ -0,0 +1,101 @@
+package com.sooka.sponest.lawenforcement.user.domain;
+
+import com.alibaba.nacos.api.cmdb.pojo.Entity;
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+import com.ruoyi.common.datascope.base.domain.BaseBusinessEntity;
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 人员信息管理对象 lawenforcement_user
+ *
+ * @author LG
+ * @date 2024-10-11
+ */
+@Setter
+@Getter
+public class LawenforcementUser extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 人员id
+     */
+    private String userId;
+
+    /**
+     * 身份证号
+     */
+    private String cardNumber;
+
+    /**
+     * 专业特长
+     */
+    @Excel(name = "专业特长")
+    private String professional;
+
+    /**
+     * 学历
+     */
+    @Excel(name = "学历")
+    private String educational;
+
+    /**
+     * 职级
+     */
+    @Excel(name = "职级")
+    private String job;
+
+    /**
+     * 级别
+     */
+    @Excel(name = "级别")
+    private String level;
+
+    /**
+     * 办公地点
+     */
+    @Excel(name = "办公地点")
+    private String officeLocation;
+
+    /**
+     * 居住地点
+     */
+    @Excel(name = "居住地点")
+    private String homeAddress;
+
+    /**
+     * 执法证号
+     */
+    @Excel(name = "执法证号")
+    private String certificateNumber;
+
+    /**
+     * 执法证(附件)
+     */
+    private String certificate;
+
+    private String nickName;
+    private String phonenumber;
+    private String sex;
+    private String deptId;
+    private String deptName;
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("userId", getUserId())
+                .append("cardNumber", getCardNumber())
+                .append("professional", getProfessional())
+                .append("educational", getEducational())
+                .append("job", getJob())
+                .append("level", getLevel())
+                .append("officeLocation", getOfficeLocation())
+                .append("homeAddress", getHomeAddress())
+                .append("certificateNumber", getCertificateNumber())
+                .append("certificate", getCertificate())
+                .toString();
+    }
+}

+ 61 - 0
src/main/java/com/sooka/sponest/lawenforcement/user/mapper/LawenforcementUserMapper.java

@@ -0,0 +1,61 @@
+package com.sooka.sponest.lawenforcement.user.mapper;
+
+import com.sooka.sponest.lawenforcement.user.domain.LawenforcementUser;
+
+import java.util.List;
+
+/**
+ * 人员信息管理Mapper接口
+ *
+ * @author LG
+ * @date 2024-10-11
+ */
+public interface LawenforcementUserMapper {
+    /**
+     * 查询人员信息管理
+     *
+     * @param userId 人员信息管理主键
+     * @return 人员信息管理
+     */
+    public LawenforcementUser selectLawenforcementUserByUserId(String userId);
+
+    /**
+     * 查询人员信息管理列表
+     *
+     * @param lawenforcementUser 人员信息管理
+     * @return 人员信息管理集合
+     */
+    public List<LawenforcementUser> selectLawenforcementUserList(LawenforcementUser lawenforcementUser);
+
+    /**
+     * 新增人员信息管理
+     *
+     * @param lawenforcementUser 人员信息管理
+     * @return 结果
+     */
+    public int insertLawenforcementUser(LawenforcementUser lawenforcementUser);
+
+    /**
+     * 修改人员信息管理
+     *
+     * @param lawenforcementUser 人员信息管理
+     * @return 结果
+     */
+    public int updateLawenforcementUser(LawenforcementUser lawenforcementUser);
+
+    /**
+     * 删除人员信息管理
+     *
+     * @param userId 人员信息管理主键
+     * @return 结果
+     */
+    public int deleteLawenforcementUserByUserId(String userId);
+
+    /**
+     * 批量删除人员信息管理
+     *
+     * @param userIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteLawenforcementUserByUserIds(String[] userIds);
+}

+ 61 - 0
src/main/java/com/sooka/sponest/lawenforcement/user/service/ILawenforcementUserService.java

@@ -0,0 +1,61 @@
+package com.sooka.sponest.lawenforcement.user.service;
+
+import com.sooka.sponest.lawenforcement.user.domain.LawenforcementUser;
+
+import java.util.List;
+
+/**
+ * 人员信息管理Service接口
+ *
+ * @author LG
+ * @date 2024-10-11
+ */
+public interface ILawenforcementUserService {
+    /**
+     * 查询人员信息管理
+     *
+     * @param userId 人员信息管理主键
+     * @return 人员信息管理
+     */
+    public LawenforcementUser selectLawenforcementUserByUserId(String userId);
+
+    /**
+     * 查询人员信息管理列表
+     *
+     * @param lawenforcementUser 人员信息管理
+     * @return 人员信息管理集合
+     */
+    public List<LawenforcementUser> selectLawenforcementUserList(LawenforcementUser lawenforcementUser);
+
+    /**
+     * 新增人员信息管理
+     *
+     * @param lawenforcementUser 人员信息管理
+     * @return 结果
+     */
+    public int insertLawenforcementUser(LawenforcementUser lawenforcementUser);
+
+    /**
+     * 修改人员信息管理
+     *
+     * @param lawenforcementUser 人员信息管理
+     * @return 结果
+     */
+    public int updateLawenforcementUser(LawenforcementUser lawenforcementUser);
+
+    /**
+     * 批量删除人员信息管理
+     *
+     * @param userIds 需要删除的人员信息管理主键集合
+     * @return 结果
+     */
+    public int deleteLawenforcementUserByUserIds(String[] userIds);
+
+    /**
+     * 删除人员信息管理信息
+     *
+     * @param userId 人员信息管理主键
+     * @return 结果
+     */
+    public int deleteLawenforcementUserByUserId(String userId);
+}

+ 87 - 0
src/main/java/com/sooka/sponest/lawenforcement/user/service/impl/LawenforcementUserServiceImpl.java

@@ -0,0 +1,87 @@
+package com.sooka.sponest.lawenforcement.user.service.impl;
+
+import com.sooka.sponest.lawenforcement.user.domain.LawenforcementUser;
+import com.sooka.sponest.lawenforcement.user.mapper.LawenforcementUserMapper;
+import com.sooka.sponest.lawenforcement.user.service.ILawenforcementUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 人员信息管理Service业务层处理
+ *
+ * @author LG
+ * @date 2024-10-11
+ */
+@Service
+public class LawenforcementUserServiceImpl implements ILawenforcementUserService {
+    @Autowired
+    private LawenforcementUserMapper lawenforcementUserMapper;
+
+    /**
+     * 查询人员信息管理
+     *
+     * @param userId 人员信息管理主键
+     * @return 人员信息管理
+     */
+    @Override
+    public LawenforcementUser selectLawenforcementUserByUserId(String userId) {
+        return lawenforcementUserMapper.selectLawenforcementUserByUserId(userId);
+    }
+
+    /**
+     * 查询人员信息管理列表
+     *
+     * @param lawenforcementUser 人员信息管理
+     * @return 人员信息管理
+     */
+    @Override
+    public List<LawenforcementUser> selectLawenforcementUserList(LawenforcementUser lawenforcementUser) {
+        return lawenforcementUserMapper.selectLawenforcementUserList(lawenforcementUser);
+    }
+
+    /**
+     * 新增人员信息管理
+     *
+     * @param lawenforcementUser 人员信息管理
+     * @return 结果
+     */
+    @Override
+    public int insertLawenforcementUser(LawenforcementUser lawenforcementUser) {
+        return lawenforcementUserMapper.insertLawenforcementUser(lawenforcementUser);
+    }
+
+    /**
+     * 修改人员信息管理
+     *
+     * @param lawenforcementUser 人员信息管理
+     * @return 结果
+     */
+    @Override
+    public int updateLawenforcementUser(LawenforcementUser lawenforcementUser) {
+        return lawenforcementUserMapper.updateLawenforcementUser(lawenforcementUser);
+    }
+
+    /**
+     * 批量删除人员信息管理
+     *
+     * @param userIds 需要删除的人员信息管理主键
+     * @return 结果
+     */
+    @Override
+    public int deleteLawenforcementUserByUserIds(String[] userIds) {
+        return lawenforcementUserMapper.deleteLawenforcementUserByUserIds(userIds);
+    }
+
+    /**
+     * 删除人员信息管理信息
+     *
+     * @param userId 人员信息管理主键
+     * @return 结果
+     */
+    @Override
+    public int deleteLawenforcementUserByUserId(String userId) {
+        return lawenforcementUserMapper.deleteLawenforcementUserByUserId(userId);
+    }
+}

+ 126 - 0
src/main/resources/mapper/lawenforcement/LawenforcementUserMapper.xml

@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sooka.sponest.lawenforcement.user.mapper.LawenforcementUserMapper">
+
+    <resultMap type="LawenforcementUser" id="LawenforcementUserResult">
+        <result property="userId" column="user_id"/>
+        <result property="nickName" column="nick_name"/>
+        <result property="phonenumber" column="phonenumber"/>
+        <result property="sex" column="sex"/>
+        <result property="cardNumber" column="card_number"/>
+        <result property="professional" column="professional"/>
+        <result property="educational" column="educational"/>
+        <result property="job" column="job"/>
+        <result property="level" column="level"/>
+        <result property="officeLocation" column="office_location"/>
+        <result property="homeAddress" column="home_address"/>
+        <result property="certificateNumber" column="certificate_number"/>
+        <result property="certificate" column="certificate"/>
+        <result property="deptId" column="dept_id"/>
+        <result property="deptName" column="dept_name"/>
+    </resultMap>
+
+    <sql id="selectLawenforcementUserVo">
+        select user_id,
+               nick_name,
+               phonenumber,
+               sex,
+               card_number,
+               professional,
+               educational,
+               job,
+               level,
+               office_location,
+               home_address,
+               certificate_number,
+               certificate,
+               dept_id,
+               dept_name
+        from lawenforcement_user
+    </sql>
+
+    <select id="selectLawenforcementUserList" parameterType="LawenforcementUser" resultMap="LawenforcementUserResult">
+        <include refid="selectLawenforcementUserVo"/>
+        <where>
+        </where>
+    </select>
+
+    <select id="selectLawenforcementUserByUserId" parameterType="String" resultMap="LawenforcementUserResult">
+        <include refid="selectLawenforcementUserVo"/>
+        where user_id = #{userId}
+    </select>
+
+    <insert id="insertLawenforcementUser" parameterType="LawenforcementUser">
+        insert into lawenforcement_user
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="userId != null">user_id,</if>
+            <if test="nickName != null">nick_name,</if>
+            <if test="phonenumber != null">phonenumber,</if>
+            <if test="sex != null">sex,</if>
+            <if test="cardNumber != null">card_number,</if>
+            <if test="professional != null">professional,</if>
+            <if test="educational != null">educational,</if>
+            <if test="job != null">job,</if>
+            <if test="level != null">level,</if>
+            <if test="officeLocation != null">office_location,</if>
+            <if test="homeAddress != null">home_address,</if>
+            <if test="certificateNumber != null">certificate_number,</if>
+            <if test="certificate != null">certificate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="deptName != null">dept_name,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="userId != null">#{userId},</if>
+            <if test="nickName != null">#{nickName},</if>
+            <if test="phonenumber != null">#{phonenumber},</if>
+            <if test="sex != null">#{sex},</if>
+            <if test="cardNumber != null">#{cardNumber},</if>
+            <if test="professional != null">#{professional},</if>
+            <if test="educational != null">#{educational},</if>
+            <if test="job != null">#{job},</if>
+            <if test="level != null">#{level},</if>
+            <if test="officeLocation != null">#{officeLocation},</if>
+            <if test="homeAddress != null">#{homeAddress},</if>
+            <if test="certificateNumber != null">#{certificateNumber},</if>
+            <if test="certificate != null">#{certificate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="deptName != null">#{deptName},</if>
+        </trim>
+    </insert>
+
+    <update id="updateLawenforcementUser" parameterType="LawenforcementUser">
+        update lawenforcement_user
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="nickName != null">nick_name = #{nickName},</if>
+            <if test="phonenumber != null">phonenumber = #{phonenumber},</if>
+            <if test="sex != null">sex = #{sex},</if>
+            <if test="cardNumber != null">card_number = #{cardNumber},</if>
+            <if test="professional != null">professional = #{professional},</if>
+            <if test="educational != null">educational = #{educational},</if>
+            <if test="job != null">job = #{job},</if>
+            <if test="level != null">level = #{level},</if>
+            <if test="officeLocation != null">office_location = #{officeLocation},</if>
+            <if test="homeAddress != null">home_address = #{homeAddress},</if>
+            <if test="certificateNumber != null">certificate_number = #{certificateNumber},</if>
+            <if test="certificate != null">certificate = #{certificate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="deptName != null">dept_name = #{deptName},</if>
+        </trim>
+        where user_id = #{userId}
+    </update>
+
+    <delete id="deleteLawenforcementUserByUserId" parameterType="String">
+        delete
+        from lawenforcement_user
+        where user_id = #{userId}
+    </delete>
+
+    <delete id="deleteLawenforcementUserByUserIds" parameterType="String">
+        delete from lawenforcement_user where user_id in
+        <foreach item="userId" collection="array" open="(" separator="," close=")">
+            #{userId}
+        </foreach>
+    </delete>
+</mapper>