Переглянути джерело

工单代码,执法人员代码初始化

Memory_LG 8 місяців тому
батько
коміт
21f8076ed4
17 змінених файлів з 3194 додано та 135 видалено
  1. 44 0
      lawenforcement-ui/src/api/lawenforcement/person.js
  2. 44 0
      lawenforcement-ui/src/api/lawenforcement/record.js
  3. 374 0
      lawenforcement-ui/src/views/lawenforcement/person/index.vue
  4. 754 0
      lawenforcement-ui/src/views/lawenforcement/record/index.vue
  5. 91 0
      src/main/java/com/sooka/sponest/lawenforcement/person/controller/LawenforcementPersonController.java
  6. 187 0
      src/main/java/com/sooka/sponest/lawenforcement/person/domain/LawenforcementPerson.java
  7. 61 0
      src/main/java/com/sooka/sponest/lawenforcement/person/mapper/LawenforcementPersonMapper.java
  8. 61 0
      src/main/java/com/sooka/sponest/lawenforcement/person/service/ILawenforcementPersonService.java
  9. 87 0
      src/main/java/com/sooka/sponest/lawenforcement/person/service/impl/LawenforcementPersonServiceImpl.java
  10. 91 0
      src/main/java/com/sooka/sponest/lawenforcement/record/controller/LawenforcementRecordController.java
  11. 624 0
      src/main/java/com/sooka/sponest/lawenforcement/record/domain/LawenforcementRecord.java
  12. 61 0
      src/main/java/com/sooka/sponest/lawenforcement/record/mapper/LawenforcementRecordMapper.java
  13. 61 0
      src/main/java/com/sooka/sponest/lawenforcement/record/service/ILawenforcementRecordService.java
  14. 89 0
      src/main/java/com/sooka/sponest/lawenforcement/record/service/impl/LawenforcementRecordServiceImpl.java
  15. 121 135
      src/main/java/com/sooka/sponest/lawenforcement/utils/ExcelUtil.java
  16. 123 0
      src/main/resources/mapper/lawenforcement/LawenforcementPersonMapper.xml
  17. 321 0
      src/main/resources/mapper/lawenforcement/LawenforcementRecordMapper.xml

+ 44 - 0
lawenforcement-ui/src/api/lawenforcement/person.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询执法人员信息列表
+export function listPerson(query) {
+  return request({
+    url: '/lawenforcement/person/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询执法人员信息详细
+export function getPerson(id) {
+  return request({
+    url: '/lawenforcement/person/' + id,
+    method: 'get'
+  })
+}
+
+// 新增执法人员信息
+export function addPerson(data) {
+  return request({
+    url: '/lawenforcement/person',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改执法人员信息
+export function updatePerson(data) {
+  return request({
+    url: '/lawenforcement/person',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除执法人员信息
+export function delPerson(id) {
+  return request({
+    url: '/lawenforcement/person/' + id,
+    method: 'delete'
+  })
+}

+ 44 - 0
lawenforcement-ui/src/api/lawenforcement/record.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询任务数据列表
+export function listRecord(query) {
+  return request({
+    url: '/lawenforcement/record/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询任务数据详细
+export function getRecord(id) {
+  return request({
+    url: '/lawenforcement/record/' + id,
+    method: 'get'
+  })
+}
+
+// 新增任务数据
+export function addRecord(data) {
+  return request({
+    url: '/lawenforcement/record',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改任务数据
+export function updateRecord(data) {
+  return request({
+    url: '/lawenforcement/record',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除任务数据
+export function delRecord(id) {
+  return request({
+    url: '/lawenforcement/record/' + id,
+    method: 'delete'
+  })
+}

+ 374 - 0
lawenforcement-ui/src/views/lawenforcement/person/index.vue

@@ -0,0 +1,374 @@
+<template>
+    <div class="app-container">
+        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+                        <el-form-item label="执法人员id" prop="personId">
+                            <el-input
+                                    v-model="queryParams.personId"
+                                    placeholder="请输入执法人员id"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="双随机系统人员ID" prop="randomId">
+                            <el-input
+                                    v-model="queryParams.randomId"
+                                    placeholder="请输入双随机系统人员ID"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="执法人员姓名" prop="personName">
+                            <el-input
+                                    v-model="queryParams.personName"
+                                    placeholder="请输入执法人员姓名"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="执法人员证件号码" prop="personCode">
+                            <el-input
+                                    v-model="queryParams.personCode"
+                                    placeholder="请输入执法人员证件号码"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="人员电话号码" prop="personPhone">
+                            <el-input
+                                    v-model="queryParams.personPhone"
+                                    placeholder="请输入人员电话号码"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="部门ID" prop="deptId">
+                            <el-input
+                                    v-model="queryParams.deptId"
+                                    placeholder="请输入部门ID"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="部门名称" prop="deptName">
+                            <el-input
+                                    v-model="queryParams.deptName"
+                                    placeholder="请输入部门名称"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="是否主办人员 0:否;1:是" prop="mainPerson">
+                            <el-input
+                                    v-model="queryParams.mainPerson"
+                                    placeholder="请输入是否主办人员 0:否;1:是"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="父id" prop="recordId">
+                            <el-input
+                                    v-model="queryParams.recordId"
+                                    placeholder="请输入父id"
+                                    clearable
+                                    size="small"
+                                    @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:person: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:person: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:person: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:person:export']"
+                >导出</el-button>
+            </el-col>
+            <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+        </el-row>
+
+        <el-table v-loading="loading" :data="personList" @selection-change="handleSelectionChange">
+            <el-table-column type="selection" width="55" align="center" />
+                    <el-table-column label="人员主键" align="center" prop="id" />
+                    <el-table-column label="执法人员id" align="center" prop="personId" />
+                    <el-table-column label="双随机系统人员ID" align="center" prop="randomId" />
+                    <el-table-column label="执法人员姓名" align="center" prop="personName" />
+                    <el-table-column label="执法人员证件号码" align="center" prop="personCode" />
+                    <el-table-column label="人员电话号码" align="center" prop="personPhone" />
+                    <el-table-column label="部门ID" align="center" prop="deptId" />
+                    <el-table-column label="部门名称" align="center" prop="deptName" />
+                    <el-table-column label="人员类型(0执法人员 1辅助人员) " align="center" prop="personType" />
+                    <el-table-column label="是否主办人员 0:否;1:是" align="center" prop="mainPerson" />
+                    <el-table-column label="备注" align="center" prop="remark" />
+                    <el-table-column label="父id" align="center" prop="recordId" />
+            <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:person:edit']"
+                    >修改</el-button>
+                    <el-button
+                            size="mini"
+                            type="text"
+                            icon="el-icon-delete"
+                            @click="handleDelete(scope.row)"
+                            v-hasPermi="['lawenforcement:person: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="getList"
+        />
+
+        <!-- 添加或修改执法人员信息对话框 -->
+        <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+            <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+                                <el-form-item label="执法人员id" prop="personId">
+                                    <el-input v-model="form.personId" placeholder="请输入执法人员id" />
+                                </el-form-item>
+                                <el-form-item label="双随机系统人员ID" prop="randomId">
+                                    <el-input v-model="form.randomId" placeholder="请输入双随机系统人员ID" />
+                                </el-form-item>
+                                <el-form-item label="执法人员姓名" prop="personName">
+                                    <el-input v-model="form.personName" placeholder="请输入执法人员姓名" />
+                                </el-form-item>
+                                <el-form-item label="执法人员证件号码" prop="personCode">
+                                    <el-input v-model="form.personCode" placeholder="请输入执法人员证件号码" />
+                                </el-form-item>
+                                <el-form-item label="人员电话号码" prop="personPhone">
+                                    <el-input v-model="form.personPhone" placeholder="请输入人员电话号码" />
+                                </el-form-item>
+                                <el-form-item label="部门ID" prop="deptId">
+                                    <el-input v-model="form.deptId" placeholder="请输入部门ID" />
+                                </el-form-item>
+                                <el-form-item label="部门名称" prop="deptName">
+                                    <el-input v-model="form.deptName" placeholder="请输入部门名称" />
+                                </el-form-item>
+                                <el-form-item label="是否主办人员 0:否;1:是" prop="mainPerson">
+                                    <el-input v-model="form.mainPerson" placeholder="请输入是否主办人员 0:否;1:是" />
+                                </el-form-item>
+                                <el-form-item label="备注" prop="remark">
+                                    <el-input v-model="form.remark" placeholder="请输入备注" />
+                                </el-form-item>
+                                <el-form-item label="父id" prop="recordId">
+                                    <el-input v-model="form.recordId" placeholder="请输入父id" />
+                                </el-form-item>
+            </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 { listPerson, getPerson, delPerson, addPerson, updatePerson } from "@/api/lawenforcement/person";
+
+    export default {
+        name: "Person",
+        data() {
+            return {
+                // 遮罩层
+                loading: true,
+                // 选中数组
+                ids: [],
+                // 非单个禁用
+                single: true,
+                // 非多个禁用
+                multiple: true,
+                // 显示搜索条件
+                showSearch: true,
+                // 总条数
+                total: 0,
+                // 执法人员信息表格数据
+                    personList: [],
+                // 弹出层标题
+                title: "",
+                // 是否显示弹出层
+                open: false,
+                // 查询参数
+                queryParams: {
+                    pageNum: 1,
+                    pageSize: 10,
+                    personId: null,
+                    randomId: null,
+                    personName: null,
+                    personCode: null,
+                    personPhone: null,
+                    deptId: null,
+                    deptName: null,
+                    personType: null,
+                    mainPerson: null,
+                    recordId: null
+        },
+            // 表单参数
+            form: {},
+            // 表单校验
+            rules: {
+            }
+        };
+        },
+        created() {
+            this.getList();
+        },
+        methods: {
+            /** 查询执法人员信息列表 */
+            getList() {
+                this.loading = true;
+                listPerson(this.queryParams).then(response => {
+                    this.personList = response.rows;
+                    this.total = response.total;
+                    this.loading = false;
+                });
+            },
+            // 取消按钮
+            cancel() {
+                this.open = false;
+                this.reset();
+            },
+            // 表单重置
+            reset() {
+                this.form = {
+                        id: null,
+                        personId: null,
+                        randomId: null,
+                        personName: null,
+                        personCode: null,
+                        personPhone: null,
+                        deptId: null,
+                        deptName: null,
+                        personType: null,
+                        mainPerson: null,
+                        remark: null,
+                        recordId: null
+            };
+                this.resetForm("form");
+            },
+            /** 搜索按钮操作 */
+            handleQuery() {
+                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 id = row.id || this.ids
+                getPerson(id).then(response => {
+                    this.form = response.data;
+                    this.open = true;
+                    this.title = "修改执法人员信息";
+                });
+            },
+            /** 提交按钮 */
+            submitForm() {
+                this.$refs["form"].validate(valid => {
+                    if (valid) {
+                        if (this.form.id != null) {
+                            updatePerson(this.form).then(response => {
+                                this.$modal.msgSuccess("修改成功");
+                                this.open = false;
+                                this.getList();
+                            });
+                        } else {
+                            addPerson(this.form).then(response => {
+                                this.$modal.msgSuccess("新增成功");
+                                this.open = false;
+                                this.getList();
+                            });
+                        }
+                    }
+                });
+            },
+            /** 删除按钮操作 */
+            handleDelete(row) {
+                const ids = row.id || this.ids;
+                this.$modal.confirm('是否确认删除执法人员信息编号为"' + ids + '"的数据项?').then(function() {
+                    return delPerson(ids);
+                }).then(() => {
+                    this.getList();
+                    this.$modal.msgSuccess("删除成功");
+                }).catch(() => {});
+            },
+    /** 导出按钮操作 */
+    handleExport() {
+        this.download('lawenforcement/person/export', {
+            ...this.queryParams
+        }, `person_${new Date().getTime()}.xlsx`)
+    }
+    }
+    };
+</script>

+ 754 - 0
lawenforcement-ui/src/views/lawenforcement/record/index.vue

@@ -0,0 +1,754 @@
+<template>
+    <div class="app-container">
+        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+                        <el-form-item label="任务创建人ID" prop="creatorId">
+                            <el-input
+                                    v-model="queryParams.creatorId"
+                                    placeholder="请输入任务创建人ID"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="任务创建人姓名" prop="creatorName">
+                            <el-input
+                                    v-model="queryParams.creatorName"
+                                    placeholder="请输入任务创建人姓名"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="任务创建部门ID" prop="deptId">
+                            <el-input
+                                    v-model="queryParams.deptId"
+                                    placeholder="请输入任务创建部门ID"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="任务创建部门名称" prop="deptName">
+                            <el-input
+                                    v-model="queryParams.deptName"
+                                    placeholder="请输入任务创建部门名称"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="地区ID" prop="areaId">
+                            <el-input
+                                    v-model="queryParams.areaId"
+                                    placeholder="请输入地区ID"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="任务名称" prop="jobName">
+                            <el-input
+                                    v-model="queryParams.jobName"
+                                    placeholder="请输入任务名称"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="检查对象ID" prop="checkObjectId">
+                            <el-input
+                                    v-model="queryParams.checkObjectId"
+                                    placeholder="请输入检查对象ID"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="检查对象代码" prop="checkObjectCode">
+                            <el-input
+                                    v-model="queryParams.checkObjectCode"
+                                    placeholder="请输入检查对象代码"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="检查对象名称" prop="checkObjectName">
+                            <el-input
+                                    v-model="queryParams.checkObjectName"
+                                    placeholder="请输入检查对象名称"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="检查对象联系电话" prop="checkObjectPhone">
+                            <el-input
+                                    v-model="queryParams.checkObjectPhone"
+                                    placeholder="请输入检查对象联系电话"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="检查开始时间" prop="checkStartTime">
+                            <el-input
+                                    v-model="queryParams.checkStartTime"
+                                    placeholder="请输入检查开始时间"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="检查结束时间" prop="checkEndTime">
+                            <el-input
+                                    v-model="queryParams.checkEndTime"
+                                    placeholder="请输入检查结束时间"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="检查子项数量" prop="subitemCount">
+                            <el-input
+                                    v-model="queryParams.subitemCount"
+                                    placeholder="请输入检查子项数量"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="是否核验(0未核验 1已核验 2无法核验)" prop="verify">
+                            <el-input
+                                    v-model="queryParams.verify"
+                                    placeholder="请输入是否核验(0未核验 1已核验 2无法核验)"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="无法核验原因" prop="unableVerifyReason">
+                            <el-input
+                                    v-model="queryParams.unableVerifyReason"
+                                    placeholder="请输入无法核验原因"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="扫码人身份证号" prop="scanId">
+                            <el-input
+                                    v-model="queryParams.scanId"
+                                    placeholder="请输入扫码人身份证号"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="扫码人姓名" prop="scanName">
+                            <el-input
+                                    v-model="queryParams.scanName"
+                                    placeholder="请输入扫码人姓名"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="扫码时间" prop="scanTime">
+                            <el-input
+                                    v-model="queryParams.scanTime"
+                                    placeholder="请输入扫码时间"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="核验人ID" prop="verifyPeopleId">
+                            <el-input
+                                    v-model="queryParams.verifyPeopleId"
+                                    placeholder="请输入核验人ID"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="核验人姓名" prop="verifyPeopleName">
+                            <el-input
+                                    v-model="queryParams.verifyPeopleName"
+                                    placeholder="请输入核验人姓名"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="核验时间" prop="verifyTime">
+                            <el-input
+                                    v-model="queryParams.verifyTime"
+                                    placeholder="请输入核验时间"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="评价(0待评价 1 好评 2一般 3差评)" prop="evaluation">
+                            <el-input
+                                    v-model="queryParams.evaluation"
+                                    placeholder="请输入评价(0待评价 1 好评 2一般 3差评)"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="评价时间" prop="evaluationTime">
+                            <el-input
+                                    v-model="queryParams.evaluationTime"
+                                    placeholder="请输入评价时间"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="是否有检查结果(0未填 1已填)" prop="result">
+                            <el-input
+                                    v-model="queryParams.result"
+                                    placeholder="请输入是否有检查结果(0未填 1已填)"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="检查结果录入时间" prop="resultTime">
+                            <el-input
+                                    v-model="queryParams.resultTime"
+                                    placeholder="请输入检查结果录入时间"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="检查结果录入人员" prop="resultPersonId">
+                            <el-input
+                                    v-model="queryParams.resultPersonId"
+                                    placeholder="请输入检查结果录入人员"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="是否延续检查" prop="isLast">
+                            <el-input
+                                    v-model="queryParams.isLast"
+                                    placeholder="请输入是否延续检查"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="原任务Id" prop="jobId">
+                            <el-input
+                                    v-model="queryParams.jobId"
+                                    placeholder="请输入原任务Id"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="数据来源" prop="source">
+                            <el-input
+                                    v-model="queryParams.source"
+                                    placeholder="请输入数据来源"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="创建方式(1自建,2API对接;3数据同步)" prop="createMethod">
+                            <el-input
+                                    v-model="queryParams.createMethod"
+                                    placeholder="请输入创建方式(1自建,2API对接;3数据同步)"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="是否跨部门" prop="isCrossDept">
+                            <el-input
+                                    v-model="queryParams.isCrossDept"
+                                    placeholder="请输入是否跨部门"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="设备id" prop="deviceId">
+                            <el-input
+                                    v-model="queryParams.deviceId"
+                                    placeholder="请输入设备id"
+                                    clearable
+                                    size="small"
+                                    @keyup.enter.native="handleQuery"
+                            />
+                        </el-form-item>
+                        <el-form-item label="设备名称" prop="deviceName">
+                            <el-input
+                                    v-model="queryParams.deviceName"
+                                    placeholder="请输入设备名称"
+                                    clearable
+                                    size="small"
+                                    @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:record: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:record: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:record: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:record:export']"
+                >导出</el-button>
+            </el-col>
+            <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+        </el-row>
+
+        <el-table v-loading="loading" :data="recordList" @selection-change="handleSelectionChange">
+            <el-table-column type="selection" width="55" align="center" />
+                    <el-table-column label="任务ID" align="center" prop="id" />
+                    <el-table-column label="任务类型" align="center" prop="jobType" />
+                    <el-table-column label="任务创建人ID" align="center" prop="creatorId" />
+                    <el-table-column label="任务创建人姓名" align="center" prop="creatorName" />
+                    <el-table-column label="任务创建部门ID" align="center" prop="deptId" />
+                    <el-table-column label="任务创建部门名称" align="center" prop="deptName" />
+                    <el-table-column label="地区ID" align="center" prop="areaId" />
+                    <el-table-column label="任务名称" align="center" prop="jobName" />
+                    <el-table-column label="任务检查类型" align="center" prop="checkType" />
+                    <el-table-column label="检查对象类型" align="center" prop="checkObjectType" />
+                    <el-table-column label="检查对象ID" align="center" prop="checkObjectId" />
+                    <el-table-column label="检查对象代码" align="center" prop="checkObjectCode" />
+                    <el-table-column label="检查对象名称" align="center" prop="checkObjectName" />
+                    <el-table-column label="检查对象联系电话" align="center" prop="checkObjectPhone" />
+                    <el-table-column label="检查开始时间" align="center" prop="checkStartTime" />
+                    <el-table-column label="检查结束时间" align="center" prop="checkEndTime" />
+                    <el-table-column label="检查子项数量" align="center" prop="subitemCount" />
+                    <el-table-column label="备注" align="center" prop="remark" />
+                    <el-table-column label="是否核验(0未核验 1已核验 2无法核验)" align="center" prop="verify" />
+                    <el-table-column label="无法核验原因" align="center" prop="unableVerifyReason" />
+                    <el-table-column label="扫码人身份证号" align="center" prop="scanId" />
+                    <el-table-column label="扫码人姓名" align="center" prop="scanName" />
+                    <el-table-column label="扫码时间" align="center" prop="scanTime" />
+                    <el-table-column label="核验人ID" align="center" prop="verifyPeopleId" />
+                    <el-table-column label="核验人姓名" align="center" prop="verifyPeopleName" />
+                    <el-table-column label="核验时间" align="center" prop="verifyTime" />
+                    <el-table-column label="评价(0待评价 1 好评 2一般 3差评)" align="center" prop="evaluation" />
+                    <el-table-column label="评价内容" align="center" prop="evaluationContent" />
+                    <el-table-column label="评价时间" align="center" prop="evaluationTime" />
+                    <el-table-column label="是否有检查结果(0未填 1已填)" align="center" prop="result" />
+                    <el-table-column label="检查结果录入时间" align="center" prop="resultTime" />
+                    <el-table-column label="检查结果录入人员" align="center" prop="resultPersonId" />
+                    <el-table-column label="任务状态(1待核验 2待填报 3已完成)" align="center" prop="status" />
+                    <el-table-column label="是否延续检查" align="center" prop="isLast" />
+                    <el-table-column label="原任务Id" align="center" prop="jobId" />
+                    <el-table-column label="延续任务类型" align="center" prop="lastJobType" />
+                    <el-table-column label="数据来源" align="center" prop="source" />
+                    <el-table-column label="创建方式(1自建,2API对接;3数据同步)" align="center" prop="createMethod" />
+                    <el-table-column label="是否跨部门" align="center" prop="isCrossDept" />
+                    <el-table-column label="设备id" align="center" prop="deviceId" />
+                    <el-table-column label="设备名称" align="center" prop="deviceName" />
+            <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:record:edit']"
+                    >修改</el-button>
+                    <el-button
+                            size="mini"
+                            type="text"
+                            icon="el-icon-delete"
+                            @click="handleDelete(scope.row)"
+                            v-hasPermi="['lawenforcement:record: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="getList"
+        />
+
+        <!-- 添加或修改任务数据对话框 -->
+        <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+            <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+                                <el-form-item label="任务创建人ID" prop="creatorId">
+                                    <el-input v-model="form.creatorId" placeholder="请输入任务创建人ID" />
+                                </el-form-item>
+                                <el-form-item label="任务创建人姓名" prop="creatorName">
+                                    <el-input v-model="form.creatorName" placeholder="请输入任务创建人姓名" />
+                                </el-form-item>
+                                <el-form-item label="任务创建部门ID" prop="deptId">
+                                    <el-input v-model="form.deptId" placeholder="请输入任务创建部门ID" />
+                                </el-form-item>
+                                <el-form-item label="任务创建部门名称" prop="deptName">
+                                    <el-input v-model="form.deptName" placeholder="请输入任务创建部门名称" />
+                                </el-form-item>
+                                <el-form-item label="地区ID" prop="areaId">
+                                    <el-input v-model="form.areaId" placeholder="请输入地区ID" />
+                                </el-form-item>
+                                <el-form-item label="任务名称" prop="jobName">
+                                    <el-input v-model="form.jobName" placeholder="请输入任务名称" />
+                                </el-form-item>
+                                <el-form-item label="检查对象ID" prop="checkObjectId">
+                                    <el-input v-model="form.checkObjectId" placeholder="请输入检查对象ID" />
+                                </el-form-item>
+                                <el-form-item label="检查对象代码" prop="checkObjectCode">
+                                    <el-input v-model="form.checkObjectCode" placeholder="请输入检查对象代码" />
+                                </el-form-item>
+                                <el-form-item label="检查对象名称" prop="checkObjectName">
+                                    <el-input v-model="form.checkObjectName" placeholder="请输入检查对象名称" />
+                                </el-form-item>
+                                <el-form-item label="检查对象联系电话" prop="checkObjectPhone">
+                                    <el-input v-model="form.checkObjectPhone" placeholder="请输入检查对象联系电话" />
+                                </el-form-item>
+                                <el-form-item label="检查开始时间" prop="checkStartTime">
+                                    <el-input v-model="form.checkStartTime" placeholder="请输入检查开始时间" />
+                                </el-form-item>
+                                <el-form-item label="检查结束时间" prop="checkEndTime">
+                                    <el-input v-model="form.checkEndTime" placeholder="请输入检查结束时间" />
+                                </el-form-item>
+                                <el-form-item label="检查子项数量" prop="subitemCount">
+                                    <el-input v-model="form.subitemCount" placeholder="请输入检查子项数量" />
+                                </el-form-item>
+                                <el-form-item label="备注" prop="remark">
+                                    <el-input v-model="form.remark" placeholder="请输入备注" />
+                                </el-form-item>
+                                <el-form-item label="是否核验(0未核验 1已核验 2无法核验)" prop="verify">
+                                    <el-input v-model="form.verify" placeholder="请输入是否核验(0未核验 1已核验 2无法核验)" />
+                                </el-form-item>
+                                <el-form-item label="无法核验原因" prop="unableVerifyReason">
+                                    <el-input v-model="form.unableVerifyReason" placeholder="请输入无法核验原因" />
+                                </el-form-item>
+                                <el-form-item label="扫码人身份证号" prop="scanId">
+                                    <el-input v-model="form.scanId" placeholder="请输入扫码人身份证号" />
+                                </el-form-item>
+                                <el-form-item label="扫码人姓名" prop="scanName">
+                                    <el-input v-model="form.scanName" placeholder="请输入扫码人姓名" />
+                                </el-form-item>
+                                <el-form-item label="扫码时间" prop="scanTime">
+                                    <el-input v-model="form.scanTime" placeholder="请输入扫码时间" />
+                                </el-form-item>
+                                <el-form-item label="核验人ID" prop="verifyPeopleId">
+                                    <el-input v-model="form.verifyPeopleId" placeholder="请输入核验人ID" />
+                                </el-form-item>
+                                <el-form-item label="核验人姓名" prop="verifyPeopleName">
+                                    <el-input v-model="form.verifyPeopleName" placeholder="请输入核验人姓名" />
+                                </el-form-item>
+                                <el-form-item label="核验时间" prop="verifyTime">
+                                    <el-input v-model="form.verifyTime" placeholder="请输入核验时间" />
+                                </el-form-item>
+                                <el-form-item label="评价(0待评价 1 好评 2一般 3差评)" prop="evaluation">
+                                    <el-input v-model="form.evaluation" placeholder="请输入评价(0待评价 1 好评 2一般 3差评)" />
+                                </el-form-item>
+                                <el-form-item label="评价内容">
+                                    <editor v-model="form.evaluationContent" :min-height="192"/>
+                                </el-form-item>
+                                <el-form-item label="评价时间" prop="evaluationTime">
+                                    <el-input v-model="form.evaluationTime" placeholder="请输入评价时间" />
+                                </el-form-item>
+                                <el-form-item label="是否有检查结果(0未填 1已填)" prop="result">
+                                    <el-input v-model="form.result" placeholder="请输入是否有检查结果(0未填 1已填)" />
+                                </el-form-item>
+                                <el-form-item label="检查结果录入时间" prop="resultTime">
+                                    <el-input v-model="form.resultTime" placeholder="请输入检查结果录入时间" />
+                                </el-form-item>
+                                <el-form-item label="检查结果录入人员" prop="resultPersonId">
+                                    <el-input v-model="form.resultPersonId" placeholder="请输入检查结果录入人员" />
+                                </el-form-item>
+                                <el-form-item label="是否延续检查" prop="isLast">
+                                    <el-input v-model="form.isLast" placeholder="请输入是否延续检查" />
+                                </el-form-item>
+                                <el-form-item label="原任务Id" prop="jobId">
+                                    <el-input v-model="form.jobId" placeholder="请输入原任务Id" />
+                                </el-form-item>
+                                <el-form-item label="数据来源" prop="source">
+                                    <el-input v-model="form.source" placeholder="请输入数据来源" />
+                                </el-form-item>
+                                <el-form-item label="创建方式(1自建,2API对接;3数据同步)" prop="createMethod">
+                                    <el-input v-model="form.createMethod" placeholder="请输入创建方式(1自建,2API对接;3数据同步)" />
+                                </el-form-item>
+                                <el-form-item label="是否跨部门" prop="isCrossDept">
+                                    <el-input v-model="form.isCrossDept" placeholder="请输入是否跨部门" />
+                                </el-form-item>
+                                <el-form-item label="设备id" prop="deviceId">
+                                    <el-input v-model="form.deviceId" placeholder="请输入设备id" />
+                                </el-form-item>
+                                <el-form-item label="设备名称" prop="deviceName">
+                                    <el-input v-model="form.deviceName" placeholder="请输入设备名称" />
+                                </el-form-item>
+            </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 { listRecord, getRecord, delRecord, addRecord, updateRecord } from "@/api/lawenforcement/record";
+
+    export default {
+        name: "Record",
+        data() {
+            return {
+                // 遮罩层
+                loading: true,
+                // 选中数组
+                ids: [],
+                // 非单个禁用
+                single: true,
+                // 非多个禁用
+                multiple: true,
+                // 显示搜索条件
+                showSearch: true,
+                // 总条数
+                total: 0,
+                // 任务数据表格数据
+                    recordList: [],
+                // 弹出层标题
+                title: "",
+                // 是否显示弹出层
+                open: false,
+                // 查询参数
+                queryParams: {
+                    pageNum: 1,
+                    pageSize: 10,
+                    jobType: null,
+                    creatorId: null,
+                    creatorName: null,
+                    deptId: null,
+                    deptName: null,
+                    areaId: null,
+                    jobName: null,
+                    checkType: null,
+                    checkObjectType: null,
+                    checkObjectId: null,
+                    checkObjectCode: null,
+                    checkObjectName: null,
+                    checkObjectPhone: null,
+                    checkStartTime: null,
+                    checkEndTime: null,
+                    subitemCount: null,
+                    verify: null,
+                    unableVerifyReason: null,
+                    scanId: null,
+                    scanName: null,
+                    scanTime: null,
+                    verifyPeopleId: null,
+                    verifyPeopleName: null,
+                    verifyTime: null,
+                    evaluation: null,
+                    evaluationContent: null,
+                    evaluationTime: null,
+                    result: null,
+                    resultTime: null,
+                    resultPersonId: null,
+                    status: null,
+                    isLast: null,
+                    jobId: null,
+                    lastJobType: null,
+                    source: null,
+                    createMethod: null,
+                    isCrossDept: null,
+                    deviceId: null,
+                    deviceName: null
+        },
+            // 表单参数
+            form: {},
+            // 表单校验
+            rules: {
+            }
+        };
+        },
+        created() {
+            this.getList();
+        },
+        methods: {
+            /** 查询任务数据列表 */
+            getList() {
+                this.loading = true;
+                listRecord(this.queryParams).then(response => {
+                    this.recordList = response.rows;
+                    this.total = response.total;
+                    this.loading = false;
+                });
+            },
+            // 取消按钮
+            cancel() {
+                this.open = false;
+                this.reset();
+            },
+            // 表单重置
+            reset() {
+                this.form = {
+                        id: null,
+                        jobType: null,
+                        creatorId: null,
+                        creatorName: null,
+                        deptId: null,
+                        deptName: null,
+                        areaId: null,
+                        jobName: null,
+                        checkType: null,
+                        checkObjectType: null,
+                        checkObjectId: null,
+                        checkObjectCode: null,
+                        checkObjectName: null,
+                        checkObjectPhone: null,
+                        checkStartTime: null,
+                        checkEndTime: null,
+                        subitemCount: null,
+                        remark: null,
+                        verify: null,
+                        unableVerifyReason: null,
+                        scanId: null,
+                        scanName: null,
+                        scanTime: null,
+                        verifyPeopleId: null,
+                        verifyPeopleName: null,
+                        verifyTime: null,
+                        evaluation: null,
+                        evaluationContent: null,
+                        evaluationTime: null,
+                        result: null,
+                        resultTime: null,
+                        resultPersonId: null,
+                        status: "0",
+                        createTime: null,
+                        createBy: null,
+                        isLast: null,
+                        jobId: null,
+                        lastJobType: null,
+                        source: null,
+                        createMethod: null,
+                        isCrossDept: null,
+                        deviceId: null,
+                        deviceName: null
+            };
+                this.resetForm("form");
+            },
+            /** 搜索按钮操作 */
+            handleQuery() {
+                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 id = row.id || this.ids
+                getRecord(id).then(response => {
+                    this.form = response.data;
+                    this.open = true;
+                    this.title = "修改任务数据";
+                });
+            },
+            /** 提交按钮 */
+            submitForm() {
+                this.$refs["form"].validate(valid => {
+                    if (valid) {
+                        if (this.form.id != null) {
+                            updateRecord(this.form).then(response => {
+                                this.$modal.msgSuccess("修改成功");
+                                this.open = false;
+                                this.getList();
+                            });
+                        } else {
+                            addRecord(this.form).then(response => {
+                                this.$modal.msgSuccess("新增成功");
+                                this.open = false;
+                                this.getList();
+                            });
+                        }
+                    }
+                });
+            },
+            /** 删除按钮操作 */
+            handleDelete(row) {
+                const ids = row.id || this.ids;
+                this.$modal.confirm('是否确认删除任务数据编号为"' + ids + '"的数据项?').then(function() {
+                    return delRecord(ids);
+                }).then(() => {
+                    this.getList();
+                    this.$modal.msgSuccess("删除成功");
+                }).catch(() => {});
+            },
+    /** 导出按钮操作 */
+    handleExport() {
+        this.download('lawenforcement/record/export', {
+            ...this.queryParams
+        }, `record_${new Date().getTime()}.xlsx`)
+    }
+    }
+    };
+</script>

+ 91 - 0
src/main/java/com/sooka/sponest/lawenforcement/person/controller/LawenforcementPersonController.java

@@ -0,0 +1,91 @@
+package com.sooka.sponest.lawenforcement.person.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.person.domain.LawenforcementPerson;
+import com.sooka.sponest.lawenforcement.person.service.ILawenforcementPersonService;
+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-10
+ */
+@RestController
+@RequestMapping("/person")
+public class LawenforcementPersonController extends BaseController {
+    @Autowired
+    private ILawenforcementPersonService lawenforcementPersonService;
+
+    /**
+     * 查询执法人员信息列表
+     */
+    @RequiresPermissions("lawenforcement:person:list")
+    @GetMapping("/list")
+    public TableDataInfo list(LawenforcementPerson lawenforcementPerson) {
+        startPage();
+        List<LawenforcementPerson> list = lawenforcementPersonService.selectLawenforcementPersonList(lawenforcementPerson);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出执法人员信息列表
+     */
+    @RequiresPermissions("lawenforcement:person:export")
+    @Log(title = "执法人员信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, LawenforcementPerson lawenforcementPerson) {
+        List<LawenforcementPerson> list = lawenforcementPersonService.selectLawenforcementPersonList(lawenforcementPerson);
+        ExcelUtil<LawenforcementPerson> util = new ExcelUtil<LawenforcementPerson>(LawenforcementPerson.class);
+        util.exportExcel(response, list, "执法人员信息数据");
+    }
+
+    /**
+     * 获取执法人员信息详细信息
+     */
+    @RequiresPermissions("lawenforcement:person:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id) {
+        return AjaxResult.success(lawenforcementPersonService.selectLawenforcementPersonById(id));
+    }
+
+    /**
+     * 新增执法人员信息
+     */
+    @RequiresPermissions("lawenforcement:person:add")
+    @Log(title = "执法人员信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody LawenforcementPerson lawenforcementPerson) {
+        return toAjax(lawenforcementPersonService.insertLawenforcementPerson(lawenforcementPerson));
+    }
+
+    /**
+     * 修改执法人员信息
+     */
+    @RequiresPermissions("lawenforcement:person:edit")
+    @Log(title = "执法人员信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody LawenforcementPerson lawenforcementPerson) {
+        return toAjax(lawenforcementPersonService.updateLawenforcementPerson(lawenforcementPerson));
+    }
+
+    /**
+     * 删除执法人员信息
+     */
+    @RequiresPermissions("lawenforcement:person:remove")
+    @Log(title = "执法人员信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids) {
+        return toAjax(lawenforcementPersonService.deleteLawenforcementPersonByIds(ids));
+    }
+}

+ 187 - 0
src/main/java/com/sooka/sponest/lawenforcement/person/domain/LawenforcementPerson.java

@@ -0,0 +1,187 @@
+package com.sooka.sponest.lawenforcement.person.domain;
+
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 执法人员信息对象 lawenforcement_person
+ *
+ * @author LG
+ * @date 2024-10-10
+ */
+public class LawenforcementPerson extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 人员主键
+     */
+    private String id;
+
+    /**
+     * 执法人员id
+     */
+    @Excel(name = "执法人员id")
+    private String personId;
+
+    /**
+     * 双随机系统人员ID
+     */
+    @Excel(name = "双随机系统人员ID")
+    private String randomId;
+
+    /**
+     * 执法人员姓名
+     */
+    @Excel(name = "执法人员姓名")
+    private String personName;
+
+    /**
+     * 执法人员证件号码
+     */
+    @Excel(name = "执法人员证件号码")
+    private String personCode;
+
+    /**
+     * 人员电话号码
+     */
+    @Excel(name = "人员电话号码")
+    private String personPhone;
+
+    /**
+     * 部门ID
+     */
+    @Excel(name = "部门ID")
+    private String deptId;
+
+    /**
+     * 部门名称
+     */
+    @Excel(name = "部门名称")
+    private String deptName;
+
+    /**
+     * 人员类型(0执法人员 1辅助人员)
+     */
+    @Excel(name = "人员类型(0执法人员 1辅助人员) ")
+    private String personType;
+
+    /**
+     * 是否主办人员 0:否;1:是
+     */
+    @Excel(name = "是否主办人员 0:否;1:是")
+    private String mainPerson;
+
+    /**
+     * 父id
+     */
+    @Excel(name = "父id")
+    private String recordId;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getPersonId() {
+        return personId;
+    }
+
+    public void setPersonId(String personId) {
+        this.personId = personId;
+    }
+
+    public String getRandomId() {
+        return randomId;
+    }
+
+    public void setRandomId(String randomId) {
+        this.randomId = randomId;
+    }
+
+    public String getPersonName() {
+        return personName;
+    }
+
+    public void setPersonName(String personName) {
+        this.personName = personName;
+    }
+
+    public String getPersonCode() {
+        return personCode;
+    }
+
+    public void setPersonCode(String personCode) {
+        this.personCode = personCode;
+    }
+
+    public String getPersonPhone() {
+        return personPhone;
+    }
+
+    public void setPersonPhone(String personPhone) {
+        this.personPhone = personPhone;
+    }
+
+    public String getDeptId() {
+        return deptId;
+    }
+
+    public void setDeptId(String deptId) {
+        this.deptId = deptId;
+    }
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public String getPersonType() {
+        return personType;
+    }
+
+    public void setPersonType(String personType) {
+        this.personType = personType;
+    }
+
+    public String getMainPerson() {
+        return mainPerson;
+    }
+
+    public void setMainPerson(String mainPerson) {
+        this.mainPerson = mainPerson;
+    }
+
+    public String getRecordId() {
+        return recordId;
+    }
+
+    public void setRecordId(String recordId) {
+        this.recordId = recordId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("personId", getPersonId())
+                .append("randomId", getRandomId())
+                .append("personName", getPersonName())
+                .append("personCode", getPersonCode())
+                .append("personPhone", getPersonPhone())
+                .append("deptId", getDeptId())
+                .append("deptName", getDeptName())
+                .append("personType", getPersonType())
+                .append("mainPerson", getMainPerson())
+                .append("remark", getRemark())
+                .append("recordId", getRecordId())
+                .toString();
+    }
+}

+ 61 - 0
src/main/java/com/sooka/sponest/lawenforcement/person/mapper/LawenforcementPersonMapper.java

@@ -0,0 +1,61 @@
+package com.sooka.sponest.lawenforcement.person.mapper;
+
+import com.sooka.sponest.lawenforcement.person.domain.LawenforcementPerson;
+
+import java.util.List;
+
+/**
+ * 执法人员信息Mapper接口
+ *
+ * @author LG
+ * @date 2024-10-10
+ */
+public interface LawenforcementPersonMapper {
+    /**
+     * 查询执法人员信息
+     *
+     * @param id 执法人员信息主键
+     * @return 执法人员信息
+     */
+    LawenforcementPerson selectLawenforcementPersonById(String id);
+
+    /**
+     * 查询执法人员信息列表
+     *
+     * @param lawenforcementPerson 执法人员信息
+     * @return 执法人员信息集合
+     */
+    List<LawenforcementPerson> selectLawenforcementPersonList(LawenforcementPerson lawenforcementPerson);
+
+    /**
+     * 新增执法人员信息
+     *
+     * @param lawenforcementPerson 执法人员信息
+     * @return 结果
+     */
+    int insertLawenforcementPerson(LawenforcementPerson lawenforcementPerson);
+
+    /**
+     * 修改执法人员信息
+     *
+     * @param lawenforcementPerson 执法人员信息
+     * @return 结果
+     */
+    int updateLawenforcementPerson(LawenforcementPerson lawenforcementPerson);
+
+    /**
+     * 删除执法人员信息
+     *
+     * @param id 执法人员信息主键
+     * @return 结果
+     */
+    int deleteLawenforcementPersonById(String id);
+
+    /**
+     * 批量删除执法人员信息
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteLawenforcementPersonByIds(String[] ids);
+}

+ 61 - 0
src/main/java/com/sooka/sponest/lawenforcement/person/service/ILawenforcementPersonService.java

@@ -0,0 +1,61 @@
+package com.sooka.sponest.lawenforcement.person.service;
+
+import com.sooka.sponest.lawenforcement.person.domain.LawenforcementPerson;
+
+import java.util.List;
+
+/**
+ * 执法人员信息Service接口
+ *
+ * @author LG
+ * @date 2024-10-10
+ */
+public interface ILawenforcementPersonService {
+    /**
+     * 查询执法人员信息
+     *
+     * @param id 执法人员信息主键
+     * @return 执法人员信息
+     */
+    LawenforcementPerson selectLawenforcementPersonById(String id);
+
+    /**
+     * 查询执法人员信息列表
+     *
+     * @param lawenforcementPerson 执法人员信息
+     * @return 执法人员信息集合
+     */
+    List<LawenforcementPerson> selectLawenforcementPersonList(LawenforcementPerson lawenforcementPerson);
+
+    /**
+     * 新增执法人员信息
+     *
+     * @param lawenforcementPerson 执法人员信息
+     * @return 结果
+     */
+    int insertLawenforcementPerson(LawenforcementPerson lawenforcementPerson);
+
+    /**
+     * 修改执法人员信息
+     *
+     * @param lawenforcementPerson 执法人员信息
+     * @return 结果
+     */
+    int updateLawenforcementPerson(LawenforcementPerson lawenforcementPerson);
+
+    /**
+     * 批量删除执法人员信息
+     *
+     * @param ids 需要删除的执法人员信息主键集合
+     * @return 结果
+     */
+    int deleteLawenforcementPersonByIds(String[] ids);
+
+    /**
+     * 删除执法人员信息信息
+     *
+     * @param id 执法人员信息主键
+     * @return 结果
+     */
+    int deleteLawenforcementPersonById(String id);
+}

+ 87 - 0
src/main/java/com/sooka/sponest/lawenforcement/person/service/impl/LawenforcementPersonServiceImpl.java

@@ -0,0 +1,87 @@
+package com.sooka.sponest.lawenforcement.person.service.impl;
+
+import com.sooka.sponest.lawenforcement.person.domain.LawenforcementPerson;
+import com.sooka.sponest.lawenforcement.person.mapper.LawenforcementPersonMapper;
+import com.sooka.sponest.lawenforcement.person.service.ILawenforcementPersonService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 执法人员信息Service业务层处理
+ *
+ * @author LG
+ * @date 2024-10-10
+ */
+@Service
+public class LawenforcementPersonServiceImpl implements ILawenforcementPersonService {
+    @Autowired
+    private LawenforcementPersonMapper lawenforcementPersonMapper;
+
+    /**
+     * 查询执法人员信息
+     *
+     * @param id 执法人员信息主键
+     * @return 执法人员信息
+     */
+    @Override
+    public LawenforcementPerson selectLawenforcementPersonById(String id) {
+        return lawenforcementPersonMapper.selectLawenforcementPersonById(id);
+    }
+
+    /**
+     * 查询执法人员信息列表
+     *
+     * @param lawenforcementPerson 执法人员信息
+     * @return 执法人员信息
+     */
+    @Override
+    public List<LawenforcementPerson> selectLawenforcementPersonList(LawenforcementPerson lawenforcementPerson) {
+        return lawenforcementPersonMapper.selectLawenforcementPersonList(lawenforcementPerson);
+    }
+
+    /**
+     * 新增执法人员信息
+     *
+     * @param lawenforcementPerson 执法人员信息
+     * @return 结果
+     */
+    @Override
+    public int insertLawenforcementPerson(LawenforcementPerson lawenforcementPerson) {
+        return lawenforcementPersonMapper.insertLawenforcementPerson(lawenforcementPerson);
+    }
+
+    /**
+     * 修改执法人员信息
+     *
+     * @param lawenforcementPerson 执法人员信息
+     * @return 结果
+     */
+    @Override
+    public int updateLawenforcementPerson(LawenforcementPerson lawenforcementPerson) {
+        return lawenforcementPersonMapper.updateLawenforcementPerson(lawenforcementPerson);
+    }
+
+    /**
+     * 批量删除执法人员信息
+     *
+     * @param ids 需要删除的执法人员信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteLawenforcementPersonByIds(String[] ids) {
+        return lawenforcementPersonMapper.deleteLawenforcementPersonByIds(ids);
+    }
+
+    /**
+     * 删除执法人员信息信息
+     *
+     * @param id 执法人员信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteLawenforcementPersonById(String id) {
+        return lawenforcementPersonMapper.deleteLawenforcementPersonById(id);
+    }
+}

+ 91 - 0
src/main/java/com/sooka/sponest/lawenforcement/record/controller/LawenforcementRecordController.java

@@ -0,0 +1,91 @@
+package com.sooka.sponest.lawenforcement.record.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.record.domain.LawenforcementRecord;
+import com.sooka.sponest.lawenforcement.record.service.ILawenforcementRecordService;
+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-10
+ */
+@RestController
+@RequestMapping("/record")
+public class LawenforcementRecordController extends BaseController {
+    @Autowired
+    private ILawenforcementRecordService lawenforcementRecordService;
+
+    /**
+     * 查询任务数据列表
+     */
+    @RequiresPermissions("lawenforcement:record:list")
+    @GetMapping("/list")
+    public TableDataInfo list(LawenforcementRecord lawenforcementRecord) {
+        startPage();
+        List<LawenforcementRecord> list = lawenforcementRecordService.selectLawenforcementRecordList(lawenforcementRecord);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出任务数据列表
+     */
+    @RequiresPermissions("lawenforcement:record:export")
+    @Log(title = "任务数据", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, LawenforcementRecord lawenforcementRecord) {
+        List<LawenforcementRecord> list = lawenforcementRecordService.selectLawenforcementRecordList(lawenforcementRecord);
+        ExcelUtil<LawenforcementRecord> util = new ExcelUtil<LawenforcementRecord>(LawenforcementRecord.class);
+        util.exportExcel(response, list, "任务数据数据");
+    }
+
+    /**
+     * 获取任务数据详细信息
+     */
+    @RequiresPermissions("lawenforcement:record:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id) {
+        return AjaxResult.success(lawenforcementRecordService.selectLawenforcementRecordById(id));
+    }
+
+    /**
+     * 新增任务数据
+     */
+    @RequiresPermissions("lawenforcement:record:add")
+    @Log(title = "任务数据", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody LawenforcementRecord lawenforcementRecord) {
+        return toAjax(lawenforcementRecordService.insertLawenforcementRecord(lawenforcementRecord));
+    }
+
+    /**
+     * 修改任务数据
+     */
+    @RequiresPermissions("lawenforcement:record:edit")
+    @Log(title = "任务数据", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody LawenforcementRecord lawenforcementRecord) {
+        return toAjax(lawenforcementRecordService.updateLawenforcementRecord(lawenforcementRecord));
+    }
+
+    /**
+     * 删除任务数据
+     */
+    @RequiresPermissions("lawenforcement:record:remove")
+    @Log(title = "任务数据", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids) {
+        return toAjax(lawenforcementRecordService.deleteLawenforcementRecordByIds(ids));
+    }
+}

+ 624 - 0
src/main/java/com/sooka/sponest/lawenforcement/record/domain/LawenforcementRecord.java

@@ -0,0 +1,624 @@
+package com.sooka.sponest.lawenforcement.record.domain;
+
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 任务数据对象 lawenforcement_record
+ *
+ * @author LG
+ * @date 2024-10-10
+ */
+public class LawenforcementRecord extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 任务ID
+     */
+    private String id;
+
+    /**
+     * 任务类型
+     */
+    @Excel(name = "任务类型")
+    private String jobType;
+
+    /**
+     * 任务创建人ID
+     */
+    @Excel(name = "任务创建人ID")
+    private String creatorId;
+
+    /**
+     * 任务创建人姓名
+     */
+    @Excel(name = "任务创建人姓名")
+    private String creatorName;
+
+    /**
+     * 任务创建部门ID
+     */
+    @Excel(name = "任务创建部门ID")
+    private String deptId;
+
+    /**
+     * 任务创建部门名称
+     */
+    @Excel(name = "任务创建部门名称")
+    private String deptName;
+
+    /**
+     * 地区ID
+     */
+    @Excel(name = "地区ID")
+    private String areaId;
+
+    /**
+     * 任务名称
+     */
+    @Excel(name = "任务名称")
+    private String jobName;
+
+    /**
+     * 任务检查类型
+     */
+    @Excel(name = "任务检查类型")
+    private String checkType;
+
+    /**
+     * 检查对象类型
+     */
+    @Excel(name = "检查对象类型")
+    private String checkObjectType;
+
+    /**
+     * 检查对象ID
+     */
+    @Excel(name = "检查对象ID")
+    private String checkObjectId;
+
+    /**
+     * 检查对象代码
+     */
+    @Excel(name = "检查对象代码")
+    private String checkObjectCode;
+
+    /**
+     * 检查对象名称
+     */
+    @Excel(name = "检查对象名称")
+    private String checkObjectName;
+
+    /**
+     * 检查对象联系电话
+     */
+    @Excel(name = "检查对象联系电话")
+    private String checkObjectPhone;
+
+    /**
+     * 检查开始时间
+     */
+    @Excel(name = "检查开始时间")
+    private Long checkStartTime;
+
+    /**
+     * 检查结束时间
+     */
+    @Excel(name = "检查结束时间")
+    private Long checkEndTime;
+
+    /**
+     * 检查子项数量
+     */
+    @Excel(name = "检查子项数量")
+    private Integer subitemCount;
+
+    /**
+     * 是否核验(0未核验 1已核验 2无法核验)
+     */
+    @Excel(name = "是否核验(0未核验 1已核验 2无法核验)")
+    private String verify;
+
+    /**
+     * 无法核验原因
+     */
+    @Excel(name = "无法核验原因")
+    private String unableVerifyReason;
+
+    /**
+     * 扫码人身份证号
+     */
+    @Excel(name = "扫码人身份证号")
+    private String scanId;
+
+    /**
+     * 扫码人姓名
+     */
+    @Excel(name = "扫码人姓名")
+    private String scanName;
+
+    /**
+     * 扫码时间
+     */
+    @Excel(name = "扫码时间")
+    private String scanTime;
+
+    /**
+     * 核验人ID
+     */
+    @Excel(name = "核验人ID")
+    private String verifyPeopleId;
+
+    /**
+     * 核验人姓名
+     */
+    @Excel(name = "核验人姓名")
+    private String verifyPeopleName;
+
+    /**
+     * 核验时间
+     */
+    @Excel(name = "核验时间")
+    private String verifyTime;
+
+    /**
+     * 评价(0待评价 1 好评 2一般 3差评)
+     */
+    @Excel(name = "评价(0待评价 1 好评 2一般 3差评)")
+    private String evaluation;
+
+    /**
+     * 评价内容
+     */
+    @Excel(name = "评价内容")
+    private String evaluationContent;
+
+    /**
+     * 评价时间
+     */
+    @Excel(name = "评价时间")
+    private String evaluationTime;
+
+    /**
+     * 是否有检查结果(0未填 1已填)
+     */
+    @Excel(name = "是否有检查结果(0未填 1已填)")
+    private String result;
+
+    /**
+     * 检查结果录入时间
+     */
+    @Excel(name = "检查结果录入时间")
+    private String resultTime;
+
+    /**
+     * 检查结果录入人员
+     */
+    @Excel(name = "检查结果录入人员")
+    private String resultPersonId;
+
+    /**
+     * 任务状态(1待核验 2待填报 3已完成)
+     */
+    @Excel(name = "任务状态(1待核验 2待填报 3已完成)")
+    private String status;
+
+    /**
+     * 是否延续检查(0否,1是)
+     */
+    @Excel(name = "是否延续检查", readConverterExp = "0=否,1是")
+    private Integer isLast;
+
+    /**
+     * 原任务Id
+     */
+    @Excel(name = "原任务Id")
+    private String jobId;
+
+    /**
+     * 延续任务类型
+     */
+    @Excel(name = "延续任务类型")
+    private String lastJobType;
+
+    /**
+     * 数据来源
+     */
+    @Excel(name = "数据来源")
+    private String source;
+
+    /**
+     * 创建方式(1自建,2API对接;3数据同步)
+     */
+    @Excel(name = "创建方式(1自建,2API对接;3数据同步)")
+    private Integer createMethod;
+
+    /**
+     * 是否跨部门(0否 1是)
+     */
+    @Excel(name = "是否跨部门", readConverterExp = "0=否,1=是")
+    private Integer isCrossDept;
+
+    /**
+     * 设备id
+     */
+    @Excel(name = "设备id")
+    private String deviceId;
+
+    /**
+     * 设备名称
+     */
+    @Excel(name = "设备名称")
+    private String deviceName;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getJobType() {
+        return jobType;
+    }
+
+    public void setJobType(String jobType) {
+        this.jobType = jobType;
+    }
+
+    public String getCreatorId() {
+        return creatorId;
+    }
+
+    public void setCreatorId(String creatorId) {
+        this.creatorId = creatorId;
+    }
+
+    public String getCreatorName() {
+        return creatorName;
+    }
+
+    public void setCreatorName(String creatorName) {
+        this.creatorName = creatorName;
+    }
+
+    public String getDeptId() {
+        return deptId;
+    }
+
+    public void setDeptId(String deptId) {
+        this.deptId = deptId;
+    }
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public String getAreaId() {
+        return areaId;
+    }
+
+    public void setAreaId(String areaId) {
+        this.areaId = areaId;
+    }
+
+    public String getJobName() {
+        return jobName;
+    }
+
+    public void setJobName(String jobName) {
+        this.jobName = jobName;
+    }
+
+    public String getCheckType() {
+        return checkType;
+    }
+
+    public void setCheckType(String checkType) {
+        this.checkType = checkType;
+    }
+
+    public String getCheckObjectType() {
+        return checkObjectType;
+    }
+
+    public void setCheckObjectType(String checkObjectType) {
+        this.checkObjectType = checkObjectType;
+    }
+
+    public String getCheckObjectId() {
+        return checkObjectId;
+    }
+
+    public void setCheckObjectId(String checkObjectId) {
+        this.checkObjectId = checkObjectId;
+    }
+
+    public String getCheckObjectCode() {
+        return checkObjectCode;
+    }
+
+    public void setCheckObjectCode(String checkObjectCode) {
+        this.checkObjectCode = checkObjectCode;
+    }
+
+    public String getCheckObjectName() {
+        return checkObjectName;
+    }
+
+    public void setCheckObjectName(String checkObjectName) {
+        this.checkObjectName = checkObjectName;
+    }
+
+    public String getCheckObjectPhone() {
+        return checkObjectPhone;
+    }
+
+    public void setCheckObjectPhone(String checkObjectPhone) {
+        this.checkObjectPhone = checkObjectPhone;
+    }
+
+    public Long getCheckStartTime() {
+        return checkStartTime;
+    }
+
+    public void setCheckStartTime(Long checkStartTime) {
+        this.checkStartTime = checkStartTime;
+    }
+
+    public Long getCheckEndTime() {
+        return checkEndTime;
+    }
+
+    public void setCheckEndTime(Long checkEndTime) {
+        this.checkEndTime = checkEndTime;
+    }
+
+    public Integer getSubitemCount() {
+        return subitemCount;
+    }
+
+    public void setSubitemCount(Integer subitemCount) {
+        this.subitemCount = subitemCount;
+    }
+
+    public String getVerify() {
+        return verify;
+    }
+
+    public void setVerify(String verify) {
+        this.verify = verify;
+    }
+
+    public String getUnableVerifyReason() {
+        return unableVerifyReason;
+    }
+
+    public void setUnableVerifyReason(String unableVerifyReason) {
+        this.unableVerifyReason = unableVerifyReason;
+    }
+
+    public String getScanId() {
+        return scanId;
+    }
+
+    public void setScanId(String scanId) {
+        this.scanId = scanId;
+    }
+
+    public String getScanName() {
+        return scanName;
+    }
+
+    public void setScanName(String scanName) {
+        this.scanName = scanName;
+    }
+
+    public String getScanTime() {
+        return scanTime;
+    }
+
+    public void setScanTime(String scanTime) {
+        this.scanTime = scanTime;
+    }
+
+    public String getVerifyPeopleId() {
+        return verifyPeopleId;
+    }
+
+    public void setVerifyPeopleId(String verifyPeopleId) {
+        this.verifyPeopleId = verifyPeopleId;
+    }
+
+    public String getVerifyPeopleName() {
+        return verifyPeopleName;
+    }
+
+    public void setVerifyPeopleName(String verifyPeopleName) {
+        this.verifyPeopleName = verifyPeopleName;
+    }
+
+    public String getVerifyTime() {
+        return verifyTime;
+    }
+
+    public void setVerifyTime(String verifyTime) {
+        this.verifyTime = verifyTime;
+    }
+
+    public String getEvaluation() {
+        return evaluation;
+    }
+
+    public void setEvaluation(String evaluation) {
+        this.evaluation = evaluation;
+    }
+
+    public String getEvaluationContent() {
+        return evaluationContent;
+    }
+
+    public void setEvaluationContent(String evaluationContent) {
+        this.evaluationContent = evaluationContent;
+    }
+
+    public String getEvaluationTime() {
+        return evaluationTime;
+    }
+
+    public void setEvaluationTime(String evaluationTime) {
+        this.evaluationTime = evaluationTime;
+    }
+
+    public String getResult() {
+        return result;
+    }
+
+    public void setResult(String result) {
+        this.result = result;
+    }
+
+    public String getResultTime() {
+        return resultTime;
+    }
+
+    public void setResultTime(String resultTime) {
+        this.resultTime = resultTime;
+    }
+
+    public String getResultPersonId() {
+        return resultPersonId;
+    }
+
+    public void setResultPersonId(String resultPersonId) {
+        this.resultPersonId = resultPersonId;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public Integer getIsLast() {
+        return isLast;
+    }
+
+    public void setIsLast(Integer isLast) {
+        this.isLast = isLast;
+    }
+
+    public String getJobId() {
+        return jobId;
+    }
+
+    public void setJobId(String jobId) {
+        this.jobId = jobId;
+    }
+
+    public String getLastJobType() {
+        return lastJobType;
+    }
+
+    public void setLastJobType(String lastJobType) {
+        this.lastJobType = lastJobType;
+    }
+
+    public String getSource() {
+        return source;
+    }
+
+    public void setSource(String source) {
+        this.source = source;
+    }
+
+    public Integer getCreateMethod() {
+        return createMethod;
+    }
+
+    public void setCreateMethod(Integer createMethod) {
+        this.createMethod = createMethod;
+    }
+
+    public Integer getIsCrossDept() {
+        return isCrossDept;
+    }
+
+    public void setIsCrossDept(Integer isCrossDept) {
+        this.isCrossDept = isCrossDept;
+    }
+
+    public String getDeviceId() {
+        return deviceId;
+    }
+
+    public void setDeviceId(String deviceId) {
+        this.deviceId = deviceId;
+    }
+
+    public String getDeviceName() {
+        return deviceName;
+    }
+
+    public void setDeviceName(String deviceName) {
+        this.deviceName = deviceName;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("jobType", getJobType())
+                .append("creatorId", getCreatorId())
+                .append("creatorName", getCreatorName())
+                .append("deptId", getDeptId())
+                .append("deptName", getDeptName())
+                .append("areaId", getAreaId())
+                .append("jobName", getJobName())
+                .append("checkType", getCheckType())
+                .append("checkObjectType", getCheckObjectType())
+                .append("checkObjectId", getCheckObjectId())
+                .append("checkObjectCode", getCheckObjectCode())
+                .append("checkObjectName", getCheckObjectName())
+                .append("checkObjectPhone", getCheckObjectPhone())
+                .append("checkStartTime", getCheckStartTime())
+                .append("checkEndTime", getCheckEndTime())
+                .append("subitemCount", getSubitemCount())
+                .append("remark", getRemark())
+                .append("verify", getVerify())
+                .append("unableVerifyReason", getUnableVerifyReason())
+                .append("scanId", getScanId())
+                .append("scanName", getScanName())
+                .append("scanTime", getScanTime())
+                .append("verifyPeopleId", getVerifyPeopleId())
+                .append("verifyPeopleName", getVerifyPeopleName())
+                .append("verifyTime", getVerifyTime())
+                .append("evaluation", getEvaluation())
+                .append("evaluationContent", getEvaluationContent())
+                .append("evaluationTime", getEvaluationTime())
+                .append("result", getResult())
+                .append("resultTime", getResultTime())
+                .append("resultPersonId", getResultPersonId())
+                .append("status", getStatus())
+                .append("createTime", getCreateTime())
+                .append("createBy", getCreateBy())
+                .append("isLast", getIsLast())
+                .append("jobId", getJobId())
+                .append("lastJobType", getLastJobType())
+                .append("source", getSource())
+                .append("createMethod", getCreateMethod())
+                .append("isCrossDept", getIsCrossDept())
+                .append("deviceId", getDeviceId())
+                .append("deviceName", getDeviceName())
+                .toString();
+    }
+}

+ 61 - 0
src/main/java/com/sooka/sponest/lawenforcement/record/mapper/LawenforcementRecordMapper.java

@@ -0,0 +1,61 @@
+package com.sooka.sponest.lawenforcement.record.mapper;
+
+import com.sooka.sponest.lawenforcement.record.domain.LawenforcementRecord;
+
+import java.util.List;
+
+/**
+ * 任务数据Mapper接口
+ *
+ * @author LG
+ * @date 2024-10-10
+ */
+public interface LawenforcementRecordMapper {
+    /**
+     * 查询任务数据
+     *
+     * @param id 任务数据主键
+     * @return 任务数据
+     */
+    LawenforcementRecord selectLawenforcementRecordById(String id);
+
+    /**
+     * 查询任务数据列表
+     *
+     * @param lawenforcementRecord 任务数据
+     * @return 任务数据集合
+     */
+    List<LawenforcementRecord> selectLawenforcementRecordList(LawenforcementRecord lawenforcementRecord);
+
+    /**
+     * 新增任务数据
+     *
+     * @param lawenforcementRecord 任务数据
+     * @return 结果
+     */
+    int insertLawenforcementRecord(LawenforcementRecord lawenforcementRecord);
+
+    /**
+     * 修改任务数据
+     *
+     * @param lawenforcementRecord 任务数据
+     * @return 结果
+     */
+    int updateLawenforcementRecord(LawenforcementRecord lawenforcementRecord);
+
+    /**
+     * 删除任务数据
+     *
+     * @param id 任务数据主键
+     * @return 结果
+     */
+    int deleteLawenforcementRecordById(String id);
+
+    /**
+     * 批量删除任务数据
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteLawenforcementRecordByIds(String[] ids);
+}

+ 61 - 0
src/main/java/com/sooka/sponest/lawenforcement/record/service/ILawenforcementRecordService.java

@@ -0,0 +1,61 @@
+package com.sooka.sponest.lawenforcement.record.service;
+
+import com.sooka.sponest.lawenforcement.record.domain.LawenforcementRecord;
+
+import java.util.List;
+
+/**
+ * 任务数据Service接口
+ *
+ * @author LG
+ * @date 2024-10-10
+ */
+public interface ILawenforcementRecordService {
+    /**
+     * 查询任务数据
+     *
+     * @param id 任务数据主键
+     * @return 任务数据
+     */
+    LawenforcementRecord selectLawenforcementRecordById(String id);
+
+    /**
+     * 查询任务数据列表
+     *
+     * @param lawenforcementRecord 任务数据
+     * @return 任务数据集合
+     */
+    List<LawenforcementRecord> selectLawenforcementRecordList(LawenforcementRecord lawenforcementRecord);
+
+    /**
+     * 新增任务数据
+     *
+     * @param lawenforcementRecord 任务数据
+     * @return 结果
+     */
+    int insertLawenforcementRecord(LawenforcementRecord lawenforcementRecord);
+
+    /**
+     * 修改任务数据
+     *
+     * @param lawenforcementRecord 任务数据
+     * @return 结果
+     */
+    int updateLawenforcementRecord(LawenforcementRecord lawenforcementRecord);
+
+    /**
+     * 批量删除任务数据
+     *
+     * @param ids 需要删除的任务数据主键集合
+     * @return 结果
+     */
+    int deleteLawenforcementRecordByIds(String[] ids);
+
+    /**
+     * 删除任务数据信息
+     *
+     * @param id 任务数据主键
+     * @return 结果
+     */
+    int deleteLawenforcementRecordById(String id);
+}

+ 89 - 0
src/main/java/com/sooka/sponest/lawenforcement/record/service/impl/LawenforcementRecordServiceImpl.java

@@ -0,0 +1,89 @@
+package com.sooka.sponest.lawenforcement.record.service.impl;
+
+import com.ruoyi.common.core.utils.DateUtils;
+import com.sooka.sponest.lawenforcement.record.domain.LawenforcementRecord;
+import com.sooka.sponest.lawenforcement.record.mapper.LawenforcementRecordMapper;
+import com.sooka.sponest.lawenforcement.record.service.ILawenforcementRecordService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 任务数据Service业务层处理
+ *
+ * @author LG
+ * @date 2024-10-10
+ */
+@Service
+public class LawenforcementRecordServiceImpl implements ILawenforcementRecordService {
+    @Autowired
+    private LawenforcementRecordMapper lawenforcementRecordMapper;
+
+    /**
+     * 查询任务数据
+     *
+     * @param id 任务数据主键
+     * @return 任务数据
+     */
+    @Override
+    public LawenforcementRecord selectLawenforcementRecordById(String id) {
+        return lawenforcementRecordMapper.selectLawenforcementRecordById(id);
+    }
+
+    /**
+     * 查询任务数据列表
+     *
+     * @param lawenforcementRecord 任务数据
+     * @return 任务数据
+     */
+    @Override
+    public List<LawenforcementRecord> selectLawenforcementRecordList(LawenforcementRecord lawenforcementRecord) {
+        return lawenforcementRecordMapper.selectLawenforcementRecordList(lawenforcementRecord);
+    }
+
+    /**
+     * 新增任务数据
+     *
+     * @param lawenforcementRecord 任务数据
+     * @return 结果
+     */
+    @Override
+    public int insertLawenforcementRecord(LawenforcementRecord lawenforcementRecord) {
+        lawenforcementRecord.setCreateTime(DateUtils.getNowDate());
+        return lawenforcementRecordMapper.insertLawenforcementRecord(lawenforcementRecord);
+    }
+
+    /**
+     * 修改任务数据
+     *
+     * @param lawenforcementRecord 任务数据
+     * @return 结果
+     */
+    @Override
+    public int updateLawenforcementRecord(LawenforcementRecord lawenforcementRecord) {
+        return lawenforcementRecordMapper.updateLawenforcementRecord(lawenforcementRecord);
+    }
+
+    /**
+     * 批量删除任务数据
+     *
+     * @param ids 需要删除的任务数据主键
+     * @return 结果
+     */
+    @Override
+    public int deleteLawenforcementRecordByIds(String[] ids) {
+        return lawenforcementRecordMapper.deleteLawenforcementRecordByIds(ids);
+    }
+
+    /**
+     * 删除任务数据信息
+     *
+     * @param id 任务数据主键
+     * @return 结果
+     */
+    @Override
+    public int deleteLawenforcementRecordById(String id) {
+        return lawenforcementRecordMapper.deleteLawenforcementRecordById(id);
+    }
+}

+ 121 - 135
src/main/java/com/sooka/sponest/lawenforcement/utils/ExcelUtil.java

@@ -42,82 +42,171 @@ import java.util.stream.Collectors;
  */
 public class ExcelUtil<T> {
 
-    private static final Logger logger = LoggerFactory.getLogger(ExcelUtil.class);
-
-    protected static final String[] FORMULA_STR = {"=", "-", "+", "@"};
-
     /**
      * Excel sheet最大行数,默认65536
      */
     public static final int SHEET_SIZE = 65536;
-
+    protected static final String[] FORMULA_STR = {"=", "-", "+", "@"};
+    private static final Logger logger = LoggerFactory.getLogger(ExcelUtil.class);
+    /**
+     * 数字格式
+     */
+    private static final DecimalFormat DOUBLE_FORMAT = new DecimalFormat("######0.00");
     /**
      * 工作表名称
      */
     private String sheetName;
-
     /**
      * 导出类型(EXPORT:导出数据;IMPORT:导入模板)
      */
     private Type type;
-
     /**
      * 工作薄对象
      */
     private Workbook wb;
-
     /**
      * 工作表对象
      */
     private Sheet sheet;
-
     /**
      * 样式列表
      */
     private Map<String, CellStyle> styles;
-
     /**
      * 导入导出数据列表
      */
     private List<T> list;
-
     /**
      * 注解列表
      */
     private List<Object[]> fields;
-
     /**
      * 当前行号
      */
     private int rownum;
-
     /**
      * 标题
      */
     private String title;
-
     /**
      * 最大高度
      */
     private short maxHeight;
-
     /**
      * 统计列表
      */
-    private Map<Integer, Double> statistics = new HashMap<>();
+    private final Map<Integer, Double> statistics = new HashMap<>();
+    /**
+     * 实体对象
+     */
+    private final Class<T> clazz;
+
+    public ExcelUtil(Class<T> clazz) {
+        this.clazz = clazz;
+    }
 
     /**
-     * 数字格式
+     * 获取画布
      */
-    private static final DecimalFormat DOUBLE_FORMAT = new DecimalFormat("######0.00");
+    public static Drawing<?> getDrawingPatriarch(Sheet sheet) {
+        if (sheet.getDrawingPatriarch() == null) {
+            sheet.createDrawingPatriarch();
+        }
+        return sheet.getDrawingPatriarch();
+    }
 
     /**
-     * 实体对象
+     * 解析导出值 0=男,1=女,2=未知
+     *
+     * @param propertyValue 参数值
+     * @param converterExp  翻译注解
+     * @param separator     分隔符
+     * @return 解析后值
      */
-    private Class<T> clazz;
+    public static String convertByExp(String propertyValue, String converterExp, String separator) {
+        StringBuilder propertyString = new StringBuilder();
+        String[] convertSource = converterExp.split(",");
+        for (String item : convertSource) {
+            String[] itemArray = item.split("=");
+            if (StringUtils.containsAny(separator, propertyValue)) {
+                for (String value : propertyValue.split(separator)) {
+                    if (itemArray[0].equals(value)) {
+                        propertyString.append(itemArray[1] + separator);
+                        break;
+                    }
+                }
+            } else {
+                if (itemArray[0].equals(propertyValue)) {
+                    return itemArray[1];
+                }
+            }
+        }
+        return StringUtils.stripEnd(propertyString.toString(), separator);
+    }
 
-    public ExcelUtil(Class<T> clazz) {
-        this.clazz = clazz;
+    /**
+     * 根据字典项 解析导出值 根据dictType生成converterExp 0=男,1=女,2=未知
+     *
+     * @param propertyValue 参数值
+     * @param converterDict 字典注解
+     * @param separator     分隔符
+     * @return 解析后值
+     */
+    public static String convertByDict(String propertyValue, String converterDict, String separator) {
+        List<SysDictData> dictDataList = DictUtils.getDictCache(converterDict);
+        String converterExp = "";
+        for (SysDictData dictData : dictDataList) {
+            converterExp += dictData.getDictValue() + "=" + dictData.getDictLabel() + ",";
+        }
+        converterExp = converterExp.substring(0, converterExp.length() - 1);
+        return convertByExp(propertyValue, converterExp, separator);
+    }
+
+    /**
+     * 反向解析值 男=0,女=1,未知=2
+     *
+     * @param propertyValue 参数值
+     * @param converterExp  翻译注解
+     * @param separator     分隔符
+     * @return 解析后值
+     */
+    public static String reverseByExp(String propertyValue, String converterExp, String separator) {
+        StringBuilder propertyString = new StringBuilder();
+        String[] convertSource = converterExp.split(",");
+        for (String item : convertSource) {
+            String[] itemArray = item.split("=");
+            if (StringUtils.containsAny(separator, propertyValue)) {
+                for (String value : propertyValue.split(separator)) {
+                    if (itemArray[1].equals(value)) {
+                        propertyString.append(itemArray[0] + separator);
+                        break;
+                    }
+                }
+            } else {
+                if (itemArray[1].equals(propertyValue)) {
+                    return itemArray[0];
+                }
+            }
+        }
+        return StringUtils.stripEnd(propertyString.toString(), separator);
+    }
+
+    /**
+     * 根据字典项 反向解析值 根据dictType生成converterExp 男=0,女=1,未知=2
+     *
+     * @param propertyValue 参数值
+     * @param reverserDict  字典注解
+     * @param separator     分隔符
+     * @return 解析后值
+     */
+    public static String reverseByDict(String propertyValue, String reverserDict, String separator) {
+        List<SysDictData> dictDataList = DictUtils.getDictCache(reverserDict);
+        String reverserExp = "";
+        for (SysDictData dictData : dictDataList) {
+            reverserExp += dictData.getDictValue() + "=" + dictData.getDictLabel() + ",";
+        }
+        reverserExp = reverserExp.substring(0, reverserExp.length() - 1);
+        return reverseByExp(propertyValue, reverserExp, separator);
     }
 
     public void init(List<T> list, String sheetName, String title, Type type) {
@@ -149,6 +238,13 @@ public class ExcelUtil<T> {
     }
 
     /**
+     * 对list数据源将其里面的数据导入到excel表单
+     *
+     * @param sheetName 工作表的名称
+     * @return 结果
+     */
+
+    /**
      * 对excel表单默认第一个索引名转换成list
      *
      * @param is 输入流
@@ -239,7 +335,7 @@ public class ExcelUtil<T> {
                         } else {
                             String dateFormat = field.getAnnotation(Excel.class).dateFormat();
                             if (StringUtils.isNotEmpty(dateFormat)) {
-                                val = parseDateToStr(dateFormat, (Date) val);
+                                val = parseDateToStr(dateFormat, val);
                             } else {
                                 val = Convert.toStr(val);
                             }
@@ -321,12 +417,6 @@ public class ExcelUtil<T> {
      * @param sheetName 工作表的名称
      * @return 结果
      */
-    /**
-     * 对list数据源将其里面的数据导入到excel表单
-     *
-     * @param sheetName 工作表的名称
-     * @return 结果
-     */
     public void importTemplateExcel(HttpServletResponse response, String sheetName) {
         importTemplateExcel(response, sheetName, StringUtils.EMPTY);
     }
@@ -529,16 +619,6 @@ public class ExcelUtil<T> {
     }
 
     /**
-     * 获取画布
-     */
-    public static Drawing<?> getDrawingPatriarch(Sheet sheet) {
-        if (sheet.getDrawingPatriarch() == null) {
-            sheet.createDrawingPatriarch();
-        }
-        return sheet.getDrawingPatriarch();
-    }
-
-    /**
      * 获取图片类型,设置图片插入类型
      */
     public int getImageType(byte[] value) {
@@ -595,7 +675,7 @@ public class ExcelUtil<T> {
                 String readConverterExp = attr.readConverterExp();
                 String separator = attr.separator();
                 if (StringUtils.isNotEmpty(dateFormat) && StringUtils.isNotNull(value)) {
-                    cell.setCellValue(parseDateToStr(dateFormat, (Date) value));
+                    cell.setCellValue(parseDateToStr(dateFormat, value));
                 } else if (StringUtils.isNotEmpty(dictType) && StringUtils.isNotNull(value)) {
                     cell.setCellValue(convertByDict(Convert.toStr(value), dictType, separator));
                 } else if (StringUtils.isNotEmpty(readConverterExp) && StringUtils.isNotNull(value)) {
@@ -669,100 +749,6 @@ public class ExcelUtil<T> {
     }
 
     /**
-     * 解析导出值 0=男,1=女,2=未知
-     *
-     * @param propertyValue 参数值
-     * @param converterExp  翻译注解
-     * @param separator     分隔符
-     * @return 解析后值
-     */
-    public static String convertByExp(String propertyValue, String converterExp, String separator) {
-        StringBuilder propertyString = new StringBuilder();
-        String[] convertSource = converterExp.split(",");
-        for (String item : convertSource) {
-            String[] itemArray = item.split("=");
-            if (StringUtils.containsAny(separator, propertyValue)) {
-                for (String value : propertyValue.split(separator)) {
-                    if (itemArray[0].equals(value)) {
-                        propertyString.append(itemArray[1] + separator);
-                        break;
-                    }
-                }
-            } else {
-                if (itemArray[0].equals(propertyValue)) {
-                    return itemArray[1];
-                }
-            }
-        }
-        return StringUtils.stripEnd(propertyString.toString(), separator);
-    }
-
-    /**
-     * 根据字典项 解析导出值 根据dictType生成converterExp 0=男,1=女,2=未知
-     *
-     * @param propertyValue 参数值
-     * @param converterDict 字典注解
-     * @param separator     分隔符
-     * @return 解析后值
-     */
-    public static String convertByDict(String propertyValue, String converterDict, String separator) {
-        List<SysDictData> dictDataList = DictUtils.getDictCache(converterDict);
-        String converterExp = "";
-        for (SysDictData dictData : dictDataList) {
-            converterExp += dictData.getDictValue() + "=" + dictData.getDictLabel() + ",";
-        }
-        converterExp = converterExp.substring(0, converterExp.length() - 1);
-        return convertByExp(propertyValue, converterExp, separator);
-    }
-
-    /**
-     * 反向解析值 男=0,女=1,未知=2
-     *
-     * @param propertyValue 参数值
-     * @param converterExp  翻译注解
-     * @param separator     分隔符
-     * @return 解析后值
-     */
-    public static String reverseByExp(String propertyValue, String converterExp, String separator) {
-        StringBuilder propertyString = new StringBuilder();
-        String[] convertSource = converterExp.split(",");
-        for (String item : convertSource) {
-            String[] itemArray = item.split("=");
-            if (StringUtils.containsAny(separator, propertyValue)) {
-                for (String value : propertyValue.split(separator)) {
-                    if (itemArray[1].equals(value)) {
-                        propertyString.append(itemArray[0] + separator);
-                        break;
-                    }
-                }
-            } else {
-                if (itemArray[1].equals(propertyValue)) {
-                    return itemArray[0];
-                }
-            }
-        }
-        return StringUtils.stripEnd(propertyString.toString(), separator);
-    }
-
-    /**
-     * 根据字典项 反向解析值 根据dictType生成converterExp 男=0,女=1,未知=2
-     *
-     * @param propertyValue 参数值
-     * @param reverserDict  字典注解
-     * @param separator     分隔符
-     * @return 解析后值
-     */
-    public static String reverseByDict(String propertyValue, String reverserDict, String separator) {
-        List<SysDictData> dictDataList = DictUtils.getDictCache(reverserDict);
-        String reverserExp = "";
-        for (SysDictData dictData : dictDataList) {
-            reverserExp += dictData.getDictValue() + "=" + dictData.getDictLabel() + ",";
-        }
-        reverserExp = reverserExp.substring(0, reverserExp.length() - 1);
-        return reverseByExp(propertyValue, reverserExp, separator);
-    }
-
-    /**
      * 数据处理器
      *
      * @param value 数据值
@@ -772,7 +758,7 @@ public class ExcelUtil<T> {
     public String dataFormatHandlerAdapter(Object value, Excel excel) {
         try {
             Object instance = excel.handler().newInstance();
-            Method formatMethod = excel.handler().getMethod("format", new Class[]{Object.class, String[].class});
+            Method formatMethod = excel.handler().getMethod("format", Object.class, String[].class);
             value = formatMethod.invoke(instance, value, excel.args());
         } catch (Exception e) {
             logger.error("不能格式化数据 {} {}", excel.handler(), e.getMessage());

+ 123 - 0
src/main/resources/mapper/lawenforcement/LawenforcementPersonMapper.xml

@@ -0,0 +1,123 @@
+<?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.person.mapper.LawenforcementPersonMapper">
+
+    <resultMap type="LawenforcementPerson" id="LawenforcementPersonResult">
+        <result property="id" column="id"/>
+        <result property="personId" column="person_id"/>
+        <result property="randomId" column="random_id"/>
+        <result property="personName" column="person_name"/>
+        <result property="personCode" column="person_code"/>
+        <result property="personPhone" column="person_phone"/>
+        <result property="deptId" column="dept_id"/>
+        <result property="deptName" column="dept_name"/>
+        <result property="personType" column="person_type"/>
+        <result property="mainPerson" column="main_person"/>
+        <result property="remark" column="remark"/>
+        <result property="recordId" column="record_id"/>
+    </resultMap>
+
+    <sql id="selectLawenforcementPersonVo">
+        select id,
+               person_id,
+               random_id,
+               person_name,
+               person_code,
+               person_phone,
+               dept_id,
+               dept_name,
+               person_type,
+               main_person,
+               remark,
+               record_id
+        from lawenforcement_person
+    </sql>
+
+    <select id="selectLawenforcementPersonList" parameterType="LawenforcementPerson"
+            resultMap="LawenforcementPersonResult">
+        <include refid="selectLawenforcementPersonVo"/>
+        <where>
+            <if test="personId != null  and personId != ''">and person_id = #{personId}</if>
+            <if test="randomId != null  and randomId != ''">and random_id = #{randomId}</if>
+            <if test="personName != null  and personName != ''">and person_name like concat('%', #{personName}, '%')
+            </if>
+            <if test="personCode != null  and personCode != ''">and person_code = #{personCode}</if>
+            <if test="personPhone != null  and personPhone != ''">and person_phone = #{personPhone}</if>
+            <if test="deptId != null  and deptId != ''">and dept_id = #{deptId}</if>
+            <if test="deptName != null  and deptName != ''">and dept_name like concat('%', #{deptName}, '%')</if>
+            <if test="personType != null  and personType != ''">and person_type = #{personType}</if>
+            <if test="mainPerson != null  and mainPerson != ''">and main_person = #{mainPerson}</if>
+            <if test="recordId != null  and recordId != ''">and record_id = #{recordId}</if>
+        </where>
+    </select>
+
+    <select id="selectLawenforcementPersonById" parameterType="String" resultMap="LawenforcementPersonResult">
+        <include refid="selectLawenforcementPersonVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertLawenforcementPerson" parameterType="LawenforcementPerson">
+        insert into lawenforcement_person
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="personId != null">person_id,</if>
+            <if test="randomId != null">random_id,</if>
+            <if test="personName != null">person_name,</if>
+            <if test="personCode != null">person_code,</if>
+            <if test="personPhone != null">person_phone,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="deptName != null">dept_name,</if>
+            <if test="personType != null">person_type,</if>
+            <if test="mainPerson != null">main_person,</if>
+            <if test="remark != null">remark,</if>
+            <if test="recordId != null">record_id,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="personId != null">#{personId},</if>
+            <if test="randomId != null">#{randomId},</if>
+            <if test="personName != null">#{personName},</if>
+            <if test="personCode != null">#{personCode},</if>
+            <if test="personPhone != null">#{personPhone},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="deptName != null">#{deptName},</if>
+            <if test="personType != null">#{personType},</if>
+            <if test="mainPerson != null">#{mainPerson},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="recordId != null">#{recordId},</if>
+        </trim>
+    </insert>
+
+    <update id="updateLawenforcementPerson" parameterType="LawenforcementPerson">
+        update lawenforcement_person
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="personId != null">person_id = #{personId},</if>
+            <if test="randomId != null">random_id = #{randomId},</if>
+            <if test="personName != null">person_name = #{personName},</if>
+            <if test="personCode != null">person_code = #{personCode},</if>
+            <if test="personPhone != null">person_phone = #{personPhone},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="deptName != null">dept_name = #{deptName},</if>
+            <if test="personType != null">person_type = #{personType},</if>
+            <if test="mainPerson != null">main_person = #{mainPerson},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="recordId != null">record_id = #{recordId},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteLawenforcementPersonById" parameterType="String">
+        delete
+        from lawenforcement_person
+        where id = #{id}
+    </delete>
+
+    <delete id="deleteLawenforcementPersonByIds" parameterType="String">
+        delete from lawenforcement_person where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 321 - 0
src/main/resources/mapper/lawenforcement/LawenforcementRecordMapper.xml

@@ -0,0 +1,321 @@
+<?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.record.mapper.LawenforcementRecordMapper">
+
+    <resultMap type="LawenforcementRecord" id="LawenforcementRecordResult">
+        <result property="id" column="id"/>
+        <result property="jobType" column="job_type"/>
+        <result property="creatorId" column="creator_id"/>
+        <result property="creatorName" column="creator_name"/>
+        <result property="deptId" column="dept_id"/>
+        <result property="deptName" column="dept_name"/>
+        <result property="areaId" column="area_id"/>
+        <result property="jobName" column="job_name"/>
+        <result property="checkType" column="check_type"/>
+        <result property="checkObjectType" column="check_object_type"/>
+        <result property="checkObjectId" column="check_object_id"/>
+        <result property="checkObjectCode" column="check_object_code"/>
+        <result property="checkObjectName" column="check_object_name"/>
+        <result property="checkObjectPhone" column="check_object_phone"/>
+        <result property="checkStartTime" column="check_start_time"/>
+        <result property="checkEndTime" column="check_end_time"/>
+        <result property="subitemCount" column="subitem_count"/>
+        <result property="remark" column="remark"/>
+        <result property="verify" column="verify"/>
+        <result property="unableVerifyReason" column="unable_verify_reason"/>
+        <result property="scanId" column="scan_id"/>
+        <result property="scanName" column="scan_name"/>
+        <result property="scanTime" column="scan_time"/>
+        <result property="verifyPeopleId" column="verify_people_id"/>
+        <result property="verifyPeopleName" column="verify_people_name"/>
+        <result property="verifyTime" column="verify_time"/>
+        <result property="evaluation" column="evaluation"/>
+        <result property="evaluationContent" column="evaluation_content"/>
+        <result property="evaluationTime" column="evaluation_time"/>
+        <result property="result" column="result"/>
+        <result property="resultTime" column="result_time"/>
+        <result property="resultPersonId" column="result_person_id"/>
+        <result property="status" column="status"/>
+        <result property="createTime" column="create_time"/>
+        <result property="createBy" column="create_by"/>
+        <result property="isLast" column="is_last"/>
+        <result property="jobId" column="job_id"/>
+        <result property="lastJobType" column="last_job_type"/>
+        <result property="source" column="source"/>
+        <result property="createMethod" column="create_method"/>
+        <result property="isCrossDept" column="is_cross_dept"/>
+        <result property="deviceId" column="device_id"/>
+        <result property="deviceName" column="device_name"/>
+    </resultMap>
+
+    <sql id="selectLawenforcementRecordVo">
+        select id,
+               job_type,
+               creator_id,
+               creator_name,
+               dept_id,
+               dept_name,
+               area_id,
+               job_name,
+               check_type,
+               check_object_type,
+               check_object_id,
+               check_object_code,
+               check_object_name,
+               check_object_phone,
+               check_start_time,
+               check_end_time,
+               subitem_count,
+               remark,
+               verify,
+               unable_verify_reason,
+               scan_id,
+               scan_name,
+               scan_time,
+               verify_people_id,
+               verify_people_name,
+               verify_time,
+               evaluation,
+               evaluation_content,
+               evaluation_time,
+               result,
+               result_time,
+               result_person_id,
+               status,
+               create_time,
+               create_by,
+               is_last,
+               job_id,
+               last_job_type,
+               source,
+               create_method,
+               is_cross_dept,
+               device_id,
+               device_name
+        from lawenforcement_record
+    </sql>
+
+    <select id="selectLawenforcementRecordList" parameterType="LawenforcementRecord"
+            resultMap="LawenforcementRecordResult">
+        <include refid="selectLawenforcementRecordVo"/>
+        <where>
+            <if test="jobType != null  and jobType != ''">and job_type = #{jobType}</if>
+            <if test="creatorId != null  and creatorId != ''">and creator_id = #{creatorId}</if>
+            <if test="creatorName != null  and creatorName != ''">and creator_name like concat('%', #{creatorName},
+                '%')
+            </if>
+            <if test="deptId != null  and deptId != ''">and dept_id = #{deptId}</if>
+            <if test="deptName != null  and deptName != ''">and dept_name like concat('%', #{deptName}, '%')</if>
+            <if test="areaId != null  and areaId != ''">and area_id = #{areaId}</if>
+            <if test="jobName != null  and jobName != ''">and job_name like concat('%', #{jobName}, '%')</if>
+            <if test="checkType != null  and checkType != ''">and check_type = #{checkType}</if>
+            <if test="checkObjectType != null  and checkObjectType != ''">and check_object_type = #{checkObjectType}
+            </if>
+            <if test="checkObjectId != null  and checkObjectId != ''">and check_object_id = #{checkObjectId}</if>
+            <if test="checkObjectCode != null  and checkObjectCode != ''">and check_object_code = #{checkObjectCode}
+            </if>
+            <if test="checkObjectName != null  and checkObjectName != ''">and check_object_name like concat('%',
+                #{checkObjectName}, '%')
+            </if>
+            <if test="checkObjectPhone != null  and checkObjectPhone != ''">and check_object_phone =
+                #{checkObjectPhone}
+            </if>
+            <if test="checkStartTime != null ">and check_start_time = #{checkStartTime}</if>
+            <if test="checkEndTime != null ">and check_end_time = #{checkEndTime}</if>
+            <if test="subitemCount != null ">and subitem_count = #{subitemCount}</if>
+            <if test="verify != null  and verify != ''">and verify = #{verify}</if>
+            <if test="unableVerifyReason != null  and unableVerifyReason != ''">and unable_verify_reason =
+                #{unableVerifyReason}
+            </if>
+            <if test="scanId != null  and scanId != ''">and scan_id = #{scanId}</if>
+            <if test="scanName != null  and scanName != ''">and scan_name like concat('%', #{scanName}, '%')</if>
+            <if test="scanTime != null  and scanTime != ''">and scan_time = #{scanTime}</if>
+            <if test="verifyPeopleId != null  and verifyPeopleId != ''">and verify_people_id = #{verifyPeopleId}</if>
+            <if test="verifyPeopleName != null  and verifyPeopleName != ''">and verify_people_name like concat('%',
+                #{verifyPeopleName}, '%')
+            </if>
+            <if test="verifyTime != null  and verifyTime != ''">and verify_time = #{verifyTime}</if>
+            <if test="evaluation != null  and evaluation != ''">and evaluation = #{evaluation}</if>
+            <if test="evaluationContent != null  and evaluationContent != ''">and evaluation_content =
+                #{evaluationContent}
+            </if>
+            <if test="evaluationTime != null  and evaluationTime != ''">and evaluation_time = #{evaluationTime}</if>
+            <if test="result != null  and result != ''">and result = #{result}</if>
+            <if test="resultTime != null  and resultTime != ''">and result_time = #{resultTime}</if>
+            <if test="resultPersonId != null  and resultPersonId != ''">and result_person_id = #{resultPersonId}</if>
+            <if test="status != null  and status != ''">and status = #{status}</if>
+            <if test="isLast != null ">and is_last = #{isLast}</if>
+            <if test="jobId != null  and jobId != ''">and job_id = #{jobId}</if>
+            <if test="lastJobType != null  and lastJobType != ''">and last_job_type = #{lastJobType}</if>
+            <if test="source != null  and source != ''">and source = #{source}</if>
+            <if test="createMethod != null ">and create_method = #{createMethod}</if>
+            <if test="isCrossDept != null ">and is_cross_dept = #{isCrossDept}</if>
+            <if test="deviceId != null  and deviceId != ''">and device_id = #{deviceId}</if>
+            <if test="deviceName != null  and deviceName != ''">and device_name like concat('%', #{deviceName}, '%')
+            </if>
+        </where>
+    </select>
+
+    <select id="selectLawenforcementRecordById" parameterType="String" resultMap="LawenforcementRecordResult">
+        <include refid="selectLawenforcementRecordVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertLawenforcementRecord" parameterType="LawenforcementRecord">
+        insert into lawenforcement_record
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="jobType != null">job_type,</if>
+            <if test="creatorId != null">creator_id,</if>
+            <if test="creatorName != null">creator_name,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="deptName != null">dept_name,</if>
+            <if test="areaId != null">area_id,</if>
+            <if test="jobName != null">job_name,</if>
+            <if test="checkType != null">check_type,</if>
+            <if test="checkObjectType != null">check_object_type,</if>
+            <if test="checkObjectId != null">check_object_id,</if>
+            <if test="checkObjectCode != null">check_object_code,</if>
+            <if test="checkObjectName != null">check_object_name,</if>
+            <if test="checkObjectPhone != null">check_object_phone,</if>
+            <if test="checkStartTime != null">check_start_time,</if>
+            <if test="checkEndTime != null">check_end_time,</if>
+            <if test="subitemCount != null">subitem_count,</if>
+            <if test="remark != null">remark,</if>
+            <if test="verify != null">verify,</if>
+            <if test="unableVerifyReason != null">unable_verify_reason,</if>
+            <if test="scanId != null">scan_id,</if>
+            <if test="scanName != null">scan_name,</if>
+            <if test="scanTime != null">scan_time,</if>
+            <if test="verifyPeopleId != null">verify_people_id,</if>
+            <if test="verifyPeopleName != null">verify_people_name,</if>
+            <if test="verifyTime != null">verify_time,</if>
+            <if test="evaluation != null">evaluation,</if>
+            <if test="evaluationContent != null">evaluation_content,</if>
+            <if test="evaluationTime != null">evaluation_time,</if>
+            <if test="result != null">result,</if>
+            <if test="resultTime != null">result_time,</if>
+            <if test="resultPersonId != null">result_person_id,</if>
+            <if test="status != null">status,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="isLast != null">is_last,</if>
+            <if test="jobId != null">job_id,</if>
+            <if test="lastJobType != null">last_job_type,</if>
+            <if test="source != null">source,</if>
+            <if test="createMethod != null">create_method,</if>
+            <if test="isCrossDept != null">is_cross_dept,</if>
+            <if test="deviceId != null">device_id,</if>
+            <if test="deviceName != null">device_name,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="jobType != null">#{jobType},</if>
+            <if test="creatorId != null">#{creatorId},</if>
+            <if test="creatorName != null">#{creatorName},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="deptName != null">#{deptName},</if>
+            <if test="areaId != null">#{areaId},</if>
+            <if test="jobName != null">#{jobName},</if>
+            <if test="checkType != null">#{checkType},</if>
+            <if test="checkObjectType != null">#{checkObjectType},</if>
+            <if test="checkObjectId != null">#{checkObjectId},</if>
+            <if test="checkObjectCode != null">#{checkObjectCode},</if>
+            <if test="checkObjectName != null">#{checkObjectName},</if>
+            <if test="checkObjectPhone != null">#{checkObjectPhone},</if>
+            <if test="checkStartTime != null">#{checkStartTime},</if>
+            <if test="checkEndTime != null">#{checkEndTime},</if>
+            <if test="subitemCount != null">#{subitemCount},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="verify != null">#{verify},</if>
+            <if test="unableVerifyReason != null">#{unableVerifyReason},</if>
+            <if test="scanId != null">#{scanId},</if>
+            <if test="scanName != null">#{scanName},</if>
+            <if test="scanTime != null">#{scanTime},</if>
+            <if test="verifyPeopleId != null">#{verifyPeopleId},</if>
+            <if test="verifyPeopleName != null">#{verifyPeopleName},</if>
+            <if test="verifyTime != null">#{verifyTime},</if>
+            <if test="evaluation != null">#{evaluation},</if>
+            <if test="evaluationContent != null">#{evaluationContent},</if>
+            <if test="evaluationTime != null">#{evaluationTime},</if>
+            <if test="result != null">#{result},</if>
+            <if test="resultTime != null">#{resultTime},</if>
+            <if test="resultPersonId != null">#{resultPersonId},</if>
+            <if test="status != null">#{status},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="isLast != null">#{isLast},</if>
+            <if test="jobId != null">#{jobId},</if>
+            <if test="lastJobType != null">#{lastJobType},</if>
+            <if test="source != null">#{source},</if>
+            <if test="createMethod != null">#{createMethod},</if>
+            <if test="isCrossDept != null">#{isCrossDept},</if>
+            <if test="deviceId != null">#{deviceId},</if>
+            <if test="deviceName != null">#{deviceName},</if>
+        </trim>
+    </insert>
+
+    <update id="updateLawenforcementRecord" parameterType="LawenforcementRecord">
+        update lawenforcement_record
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="jobType != null">job_type = #{jobType},</if>
+            <if test="creatorId != null">creator_id = #{creatorId},</if>
+            <if test="creatorName != null">creator_name = #{creatorName},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="deptName != null">dept_name = #{deptName},</if>
+            <if test="areaId != null">area_id = #{areaId},</if>
+            <if test="jobName != null">job_name = #{jobName},</if>
+            <if test="checkType != null">check_type = #{checkType},</if>
+            <if test="checkObjectType != null">check_object_type = #{checkObjectType},</if>
+            <if test="checkObjectId != null">check_object_id = #{checkObjectId},</if>
+            <if test="checkObjectCode != null">check_object_code = #{checkObjectCode},</if>
+            <if test="checkObjectName != null">check_object_name = #{checkObjectName},</if>
+            <if test="checkObjectPhone != null">check_object_phone = #{checkObjectPhone},</if>
+            <if test="checkStartTime != null">check_start_time = #{checkStartTime},</if>
+            <if test="checkEndTime != null">check_end_time = #{checkEndTime},</if>
+            <if test="subitemCount != null">subitem_count = #{subitemCount},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="verify != null">verify = #{verify},</if>
+            <if test="unableVerifyReason != null">unable_verify_reason = #{unableVerifyReason},</if>
+            <if test="scanId != null">scan_id = #{scanId},</if>
+            <if test="scanName != null">scan_name = #{scanName},</if>
+            <if test="scanTime != null">scan_time = #{scanTime},</if>
+            <if test="verifyPeopleId != null">verify_people_id = #{verifyPeopleId},</if>
+            <if test="verifyPeopleName != null">verify_people_name = #{verifyPeopleName},</if>
+            <if test="verifyTime != null">verify_time = #{verifyTime},</if>
+            <if test="evaluation != null">evaluation = #{evaluation},</if>
+            <if test="evaluationContent != null">evaluation_content = #{evaluationContent},</if>
+            <if test="evaluationTime != null">evaluation_time = #{evaluationTime},</if>
+            <if test="result != null">result = #{result},</if>
+            <if test="resultTime != null">result_time = #{resultTime},</if>
+            <if test="resultPersonId != null">result_person_id = #{resultPersonId},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="isLast != null">is_last = #{isLast},</if>
+            <if test="jobId != null">job_id = #{jobId},</if>
+            <if test="lastJobType != null">last_job_type = #{lastJobType},</if>
+            <if test="source != null">source = #{source},</if>
+            <if test="createMethod != null">create_method = #{createMethod},</if>
+            <if test="isCrossDept != null">is_cross_dept = #{isCrossDept},</if>
+            <if test="deviceId != null">device_id = #{deviceId},</if>
+            <if test="deviceName != null">device_name = #{deviceName},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteLawenforcementRecordById" parameterType="String">
+        delete
+        from lawenforcement_record
+        where id = #{id}
+    </delete>
+
+    <delete id="deleteLawenforcementRecordByIds" parameterType="String">
+        delete from lawenforcement_record where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>