任务派发模块是湛江人社系统中用于实现市级向县区级、县区级向镇街级多层级任务流转的核心功能模块。业务流程覆盖任务的创建、派发、接收、回复以及跨层级协作等场景。
| 字段 | 类型 | 说明 |
|---|---|---|
| id | String | 主键ID(雪花算法生成) |
| task_name | String | 任务名称(必填) |
| priority | String | 任务优先级(高/中/低,字典表TaskPriority) |
| issue_time | Date | 下达时间(年月日时分,必填) |
| deadline | Date | 截止时间(年月日时分,必填) |
| task_content | String | 任务内容(富文本,必填) |
| initiator_id | String | 发起人ID(必填) |
| attachment | String | 附件 |
| task_status | String | 任务状态(1-草稿/2-进行中/3-已结束,字典表TaskStatus) |
| create_by | String | 创建人 |
| create_time | Date | 创建时间 |
| update_by | String | 修改人 |
| update_time | Date | 更新时间 |
| sys_org_code | String | 组织机构编号 |
| 字段 | 类型 | 说明 |
|---|---|---|
| id | String | 主键ID |
| task_id | String | 关联任务派发信息ID(必填) |
| receiver_id | String | 接收人ID(必填) |
| is_received | String | 是否已经接收(0-否/1-是,必填) |
| receive_time | Date | 接收时间 |
| forward_time | Date | 转发下达时间(县区转发给镇街的时间) |
| reply_content | String | 回复内容(富文本) |
| reply_time | Date | 回复时间 |
| attachment | String | 任务附件 |
| create_by | String | 创建人 |
| create_time | Date | 创建时间 |
| update_by | String | 修改人 |
| update_time | Date | 更新时间 |
| sys_org_code | String | 组织机构编号 |
| 字段 | 类型 | 说明 |
|---|---|---|
| id | String | 主键ID |
| task_id | String | 关联任务派发信息ID(必填) |
| parent_id | String | 上级接收记录ID(关联县区级接收情况表ID,市级直派则为空) |
| receiver_id | String | 接收人ID(必填) |
| is_received | String | 是否已经接收(0-否/1-是,必填) |
| receive_time | Date | 接收时间 |
| reply_content | String | 回复内容(富文本) |
| reply_time | Date | 回复时间 |
| attachment | String | 任务附件 |
| create_by | String | 创建人 |
| create_time | Date | 创建时间 |
| update_by | String | 修改人 |
| update_time | Date | 更新时间 |
| sys_org_code | String | 组织机构编号 |
| 字段 | 类型 | 说明 |
|---|---|---|
| id | String | 主键ID |
| biz_type | String | 业务类型(DISPATCH-任务派发/DISTRICT_RECEIVE-县区级接收/TOWN_RECEIVE-镇区级接收) |
| biz_id | String | 关联业务记录ID(对应上述三张表的主键) |
| file_name | String | 文件名称(必填) |
| file_path | String | 文件存储路径(必填) |
| file_size | Integer | 文件大小(字节) |
| file_type | String | 文件类型(如pdf/docx/jpg/png等) |
| sort_order | Integer | 排序序号 |
| upload_by | String | 上传人ID |
| create_by | String | 创建人 |
| create_time | Date | 创建时间 |
| update_by | String | 修改人 |
| update_time | Date | 更新时间 |
| sys_org_code | String | 组织机构编号 |
| 字段 | 类型 | 说明 |
|---|---|---|
| id | String | 主键ID |
| task_id | String | 关联任务派发ID(必填) |
| requester_id | String | 发起人ID(必填) |
| requester_type | String | 发起方类型(DISTRICT-县区级/TOWN-镇街级,必填) |
| request_content | String | 协作请求内容(必填) |
| target_level | String | 请求目标层级(CITY-市级/DISTRICT-县区级,必填) |
| status | String | 状态(0-待处理/1-已处理/2-已关闭) |
| reply_content | String | 回复内容 |
| reply_time | Date | 回复时间 |
| reply_by | String | 回复人ID |
| create_by | String | 创建人 |
| create_time | Date | 创建时间 |
| update_by | String | 修改人 |
| update_time | Date | 更新时间 |
| sys_org_code | String | 组织机构编号 |
jeecg-module-zjrs/src/main/java/org/jeecg/modules/zjrs/task/
├── taskDispatch/ # 任务派发模块
│ ├── controller/
│ │ └── TaskDispatchController.java # 任务派发控制器
│ ├── entity/
│ │ └── TaskDispatch.java # 任务派发实体
│ ├── mapper/
│ │ ├── TaskDispatchMapper.java # Mapper接口
│ │ └── xml/TaskDispatchMapper.xml # MyBatis XML映射
│ ├── service/
│ │ ├── ITaskDispatchService.java # Service接口
│ │ └── impl/TaskDispatchServiceImpl.java # Service实现
│ └── vo/
│ └── TaskDispatchVO.java # 视图对象(含发起人姓名、部门)
├── taskDistrictReceive/ # 县区级接收模块
│ ├── controller/
│ │ └── TaskDistrictReceiveController.java
│ ├── entity/
│ │ └── TaskDistrictReceive.java
│ ├── mapper/
│ │ ├── TaskDistrictReceiveMapper.java
│ │ └── xml/TaskDistrictReceiveMapper.xml
│ ├── service/
│ │ ├── ITaskDistrictReceiveService.java
│ │ └── impl/TaskDistrictReceiveServiceImpl.java
│ └── vo/
│ └── TaskDistrictReceiveVO.java
├── taskTownReceive/ # 镇区接收模块
│ ├── controller/
│ │ └── TaskTownReceiveController.java
│ ├── entity/
│ │ └── TaskTownReceive.java
│ ├── mapper/
│ │ ├── TaskTownReceiveMapper.java
│ │ └── xml/TaskTownReceiveMapper.xml
│ ├── service/
│ │ ├── ITaskTownReceiveService.java
│ │ └── impl/TaskTownReceiveServiceImpl.java
│ └── vo/
│ └── TaskTownReceiveVO.java
├── taskAttachment/ # 附件模块
│ ├── controller/
│ │ └── TaskAttachmentController.java
│ ├── entity/
│ │ └── TaskAttachment.java
│ ├── mapper/
│ │ ├── TaskAttachmentMapper.java
│ │ └── xml/TaskAttachmentMapper.xml
│ ├── service/
│ │ ├── ITaskAttachmentService.java
│ │ └── impl/TaskAttachmentServiceImpl.java
│ └── vo/
│ └── TaskAttachmentVO.java
└── taskCollaboration/ # 跨层级协作模块
├── controller/
│ └── TaskCollaborationController.java
├── entity/
│ └── TaskCollaboration.java
├── mapper/
│ ├── TaskCollaborationMapper.java
│ └── xml/TaskCollaborationMapper.xml
├── service/
│ ├── ITaskCollaborationService.java
│ └── impl/TaskCollaborationServiceImpl.java
└── vo/
└── TaskCollaborationVO.java
| 接口 | 方法 | 路径 | 说明 |
|---|---|---|---|
| queryPageList | GET | /task/taskDispatch/list | 分页列表查询(含发起人姓名和部门) |
| queryMyTaskList | GET | /task/taskDispatch/myTaskList | 我的任务列表(从接收表反向查询) |
| add | POST | /task/taskDispatch/add | 新增任务(返回新记录ID) |
| edit | PUT/POST | /task/taskDispatch/edit | 编辑任务 |
| delete | DELETE | /task/taskDispatch/delete | 单条删除 |
| deleteBatch | DELETE | /task/taskDispatch/deleteBatch | 批量删除 |
| queryById | GET | /task/taskDispatch/queryById | 通过ID查询(含发起人姓名和部门) |
| updateStatus | PUT | /task/taskDispatch/updateStatus | 修改任务状态 |
| exportXls | GET | /task/taskDispatch/exportXls | 导出Excel(字典值自动翻译) |
| importExcel | POST | /task/taskDispatch/importExcel | 导入Excel |
| downloadAttachmentsZip | GET | /task/taskDispatch/downloadAttachmentsZip | 一键打包下载任务所有附件 |
| 接口 | 方法 | 路径 | 说明 |
|---|---|---|---|
| queryPageList | GET | /task/taskDistrictReceive/list | 分页列表查询(含接收人姓名和部门) |
| add | POST | /task/taskDistrictReceive/add | 新增接收记录 |
| edit | PUT/POST | /task/taskDistrictReceive/edit | 编辑接收记录 |
| delete | DELETE | /task/taskDistrictReceive/delete | 单条删除 |
| deleteBatch | DELETE | /task/taskDistrictReceive/deleteBatch | 批量删除 |
| reply | PUT/POST | /task/taskDistrictReceive/reply | 回复确认 |
| updateForwardTime | PUT/POST | /task/taskDistrictReceive/updateForwardTime | 更新转发时间 |
| queryById | GET | /task/taskDistrictReceive/queryById | 通过ID查询 |
| 接口 | 方法 | 路径 | 说明 |
|---|---|---|---|
| queryPageList | GET | /task/taskTownReceive/list | 分页列表查询 |
| add | POST | /task/taskTownReceive/add | 新增 |
| edit | PUT/POST | /task/taskTownReceive/edit | 编辑 |
| delete | DELETE | /task/taskTownReceive/delete | 单条删除 |
| deleteBatch | DELETE | /task/taskTownReceive/deleteBatch | 批量删除 |
| reply | PUT/POST | /task/taskTownReceive/reply | 回复确认 |
| queryById | GET | /task/taskTownReceive/queryById | 通过ID查询 |
| 接口 | 方法 | 路径 | 说明 |
|---|---|---|---|
| queryPageList | GET | /task/taskAttachment/list | 分页列表查询(含上传人名称) |
| add | POST | /task/taskAttachment/add | 添加附件 |
| edit | PUT/POST | /task/taskAttachment/edit | 编辑附件 |
| delete | DELETE | /task/taskAttachment/delete | 删除附件 |
| deleteBatch | DELETE | /task/taskAttachment/deleteBatch | 批量删除 |
| queryById | GET | /task/taskAttachment/queryById | 通过ID查询 |
| 接口 | 方法 | 路径 | 说明 |
|---|---|---|---|
| queryPageList | GET | /task/taskCollaboration/list | 分页列表查询(含发起人姓名和回复人姓名) |
| add | POST | /task/taskCollaboration/add | 新增协作 |
| edit | PUT/POST | /task/taskCollaboration/edit | 编辑协作 |
| delete | DELETE | /task/taskCollaboration/delete | 删除协作 |
| deleteBatch | DELETE | /task/taskCollaboration/deleteBatch | 批量删除 |
| reply | POST | /task/taskCollaboration/reply | 回复协作(更新状态、回复内容、回复人、回复时间) |
| queryById | GET | /task/taskCollaboration/queryById | 通过ID查询 |
流程图:
市级人员创建任务 → 保存草稿(taskStatus=1) → 确认派发(taskStatus=2) → 任务进入"我的任务"
├── 可选:添加县区接收人
└── 可选:添加镇街接收人(需先有县区接收记录作为parentId)
关键代码 - TaskDispatchForm.vue 保存与派发逻辑:
taskStatus 设为 '1'(草稿),保存后不关闭弹窗,允许继续编辑taskStatus 设为 '2'(进行中),保存后通过 emit('confirm') 通知父组件关闭弹窗validate()),校验失败则滚动到第一个错误字段接口: GET /task/taskDispatch/myTaskList
这是模块中最复杂的查询逻辑,核心步骤:
获取当前登录用户ID:通过 Shiro 的 SecurityUtils.getSubject().getPrincipal() 获得当前用户
反向查找任务ID:分别查询县区接收表、镇街接收表中 receiverId=当前用户ID 的记录,收集对应的 taskId;同时查询当前用户为发起人的任务
排除草稿状态:查询条件中排除 taskStatus='1'(草稿),确保只展示已派发的任务
排序规则:使用自定义SQL排序 ORDER BY CASE WHEN task_status = '2' THEN 0 ELSE 1 END, issue_time DESC,实现"进行中优先,相同状态按发起时间最新在前"
标记来源信息:为每个任务VO设置 sourceTable(DISTRICT/TOWN/DISPATCH)和 sourceId,前端根据这两个字段决定操作权限:
DISTRICT:用户来自县区接收表,可进行回复、派发任务(转发镇街)TOWN:用户来自镇街接收表,可进行回复DISPATCH:用户是发起人/市级人员,不显示回复操作多个Service共用的设计模式,以解决N+1查询问题:
sys_user 左关联 sys_user_depart 和 sys_depart,一次性获取所有用户的姓名和部门信息BeanUtils.copyProperties 复制实体属性,再设置扩展字段用户姓名取值规则(SQL层面实现):
CASE WHEN su.REALNAME IS NOT NULL AND su.REALNAME != '' THEN su.REALNAME ELSE su.USERNAME END
优先取真实姓名(realname),若无则取用户名(username)
部门取值规则:
sys_user_depart 取该用户关联的最小ID记录(SELECT MIN(t2.ID) FROM sys_user_depart t2 WHERE t2.USER_ID = su.ID),再关联 sys_depart 获取 depart_name文件通过通用上传接口上传,返回文件路径后,在 TASK_ATTACHMENT 表创建记录:
DISPATCH(任务主表)、DISTRICT_RECEIVE(县区接收)、TOWN_RECEIVE(镇街接收)id(表单提示:"请先保存任务后再上传附件")接口: GET /task/taskDispatch/downloadAttachmentsZip
步骤:
TASK_ATTACHMENT 表中与任务关联的所有附件(主表 + 所有县区接收 + 所有镇街接收)uploadPath + filePath 路径读取文件java.util.zip.ZipOutputStream 打包为zip,通过 HttpServletResponse 输出流返回Content-Disposition: attachment 触发浏览器下载接口: GET /task/taskDispatch/exportXls
导出字段:任务名称、任务优先级、下达时间、截止时间、发起人、发起部门、任务状态
步骤:
selections 参数)translateDictFields 方法,将 priority(TaskPriority 字典)和 taskStatus(TaskStatus 字典)的值替换为中文标签enrichUserInfo 方法,填充发起人姓名和部门名称JeecgEntityExcelView 导出 Excel协作场景:县区/镇街人员可向上级(市级/县区级)发起协作请求,上级人员可以回复。
发起方类型与控制逻辑:
sourceTable === 'TOWN'(镇街级用户)→ requesterType = 'TOWN',可选择 CITY 或 DISTRICT 作为目标层级sourceTable === 'DISTRICT'(县区级用户)→ requesterType = 'DISTRICT',只能选择 CITY 作为目标层级协作回复:
/task/taskCollaboration/reply 会更新 status='1'(已处理)、replyContent、replyBy、replyTime接口: POST /task/taskDistrictReceive/reply 或 POST /task/taskTownReceive/reply
回复时采用的更新策略:
lambdaUpdate() 链式调用,只更新指定字段(isReceived、receiveTime、replyContent、replyTime、attachment),不修改其他字段@RequestBody 接收参数,跳过 @Valid 校验,允许部分字段更新当县区人员将任务转发给镇街人员时:
DispatchTownModal 中新增镇街接收记录/task/taskDistrictReceive/updateForwardTime 将县区接收记录的 forwardTime 更新为当前时间parentId 关联对应的县区接收记录IDjeecgboot-vue3/src/views/task/
├── taskDispatch/
│ ├── TaskDispatchList.vue # 市级用户任务列表页
│ ├── MyTaskList.vue # 县级/镇级用户"我的任务"列表页
│ ├── TaskDispatch.data.ts # 表格列/搜索表单/编辑表单配置
│ ├── TaskDispatch.api.ts # 所有API接口定义
│ └── components/
│ ├── TaskDispatchModal.vue # 新增/编辑/详情弹窗容器
│ ├── TaskDispatchForm.vue # 任务编辑表单(含子表)
│ ├── TaskDispatchDetailModal.vue # 任务详情弹窗
│ ├── TaskReplyModal.vue # 任务回复弹窗
│ ├── DispatchTownModal.vue # 派发镇街弹窗
│ ├── DistrictReceiveEditModal.vue # 县区接收编辑弹窗
│ ├── TownReceiveEditModal.vue # 镇街接收编辑弹窗
│ ├── CollaborationAddModal.vue # 新增协作请求弹窗
│ └── CollaborationReplyModal.vue # 协作回复弹窗
updateStatus 接口将 taskStatus 设为 '3'(已结束)useListPage hook 进行表格数据管理与导出sourceTable === 'DISTRICT' 且 taskStatus === '2' 时显示)、回复确认(仅 taskStatus === '2' 时显示)、附件打包下载DispatchTownModal 弹窗TaskReplyModal 弹窗这是最复杂的单文件组件,包含:
DistrictReceiveEditModal 编辑,支持新增、编辑、删除TownReceiveEditModal 编辑,支持新增、编辑、删除自动填充逻辑:
initiatorId 从 useUserStore().getUserInfo 获取当前登录用户IDrealname || usernamegetUserDeparts() 接口获取用户所属部门的 departName核心业务逻辑:
sourceTable 类型控制:
DISPATCH:隐藏回复内容、回复附件、协作新增按钮DISTRICT/TOWN:显示回复内容和上传附件targetLevel 时显示useListPage hook 管理,beforeFetch 中合并查询参数useDict hook 加载字典,getDictText 进行值→标签翻译,getDictOptions 生成下拉选项useUserStore 获取当前登录用户(id、realname、username)<a-upload> 组件,上传成功后调用附件保存接口| 文件 | 说明 |
|---|---|
jeecg-module-zjrs/.../task/taskDispatch/controller/TaskDispatchController.java |
任务派发控制器,包含核心CRUD、Excel导入导出、附件打包下载、任务状态修改 |
jeecg-module-zjrs/.../task/taskDispatch/entity/TaskDispatch.java |
任务派发实体定义(TASK_DISPATCH表映射) |
jeecg-module-zjrs/.../task/taskDispatch/mapper/TaskDispatchMapper.java |
任务派发Mapper,定义批量查询用户信息方法 |
jeecg-module-zjrs/.../task/taskDispatch/mapper/xml/TaskDispatchMapper.xml |
MyBatis SQL映射,批量查询用户姓名+部门 |
jeecg-module-zjrs/.../task/taskDispatch/service/ITaskDispatchService.java |
任务派发Service接口,定义分页VO查询、用户信息填充、字典翻译、状态修改、单条VO查询 |
jeecg-module-zjrs/.../task/taskDispatch/service/impl/TaskDispatchServiceImpl.java |
任务派发Service实现,包含完整的VO转换逻辑和批量查询 |
jeecg-module-zjrs/.../task/taskDispatch/vo/TaskDispatchVO.java |
任务派发VO,扩展发起人姓名、部门、来源表、来源ID字段 |
jeecg-module-zjrs/.../task/taskDistrictReceive/controller/TaskDistrictReceiveController.java |
县区接收控制器,支持CRUD、回复确认、更新转发时间 |
jeecg-module-zjrs/.../task/taskDistrictReceive/entity/TaskDistrictReceive.java |
县区接收实体定义 |
jeecg-module-zjrs/.../task/taskDistrictReceive/mapper/TaskDistrictReceiveMapper.java |
县区接收Mapper |
jeecg-module-zjrs/.../task/taskDistrictReceive/mapper/xml/TaskDistrictReceiveMapper.xml |
MyBatis SQL映射 |
jeecg-module-zjrs/.../task/taskDistrictReceive/service/ITaskDistrictReceiveService.java |
县区接收Service接口 |
jeecg-module-zjrs/.../task/taskDistrictReceive/service/impl/TaskDistrictReceiveServiceImpl.java |
县区接收Service实现 |
jeecg-module-zjrs/.../task/taskDistrictReceive/vo/TaskDistrictReceiveVO.java |
县区接收VO |
jeecg-module-zjrs/.../task/taskTownReceive/controller/TaskTownReceiveController.java |
镇区接收控制器 |
jeecg-module-zjrs/.../task/taskTownReceive/entity/TaskTownReceive.java |
镇区接收实体定义 |
jeecg-module-zjrs/.../task/taskTownReceive/mapper/TaskTownReceiveMapper.java |
镇区接收Mapper |
jeecg-module-zjrs/.../task/taskTownReceive/mapper/xml/TaskTownReceiveMapper.xml |
MyBatis SQL映射 |
jeecg-module-zjrs/.../task/taskTownReceive/service/ITaskTownReceiveService.java |
镇区接收Service接口 |
jeecg-module-zjrs/.../task/taskTownReceive/service/impl/TaskTownReceiveServiceImpl.java |
镇区接收Service实现 |
jeecg-module-zjrs/.../task/taskTownReceive/vo/TaskTownReceiveVO.java |
镇区接收VO |
jeecg-module-zjrs/.../task/taskCollaboration/controller/TaskCollaborationController.java |
跨层级协作控制器,提供CRUD和回复接口 |
jeecg-module-zjrs/.../task/taskCollaboration/entity/TaskCollaboration.java |
跨层级协作实体定义 |
jeecg-module-zjrs/.../task/taskCollaboration/mapper/TaskCollaborationMapper.java |
跨层级协作Mapper |
jeecg-module-zjrs/.../task/taskCollaboration/mapper/xml/TaskCollaborationMapper.xml |
MyBatis SQL映射(仅查询用户姓名) |
jeecg-module-zjrs/.../task/taskCollaboration/service/ITaskCollaborationService.java |
跨层级协作Service接口 |
jeecg-module-zjrs/.../task/taskCollaboration/service/impl/TaskCollaborationServiceImpl.java |
跨层级协作Service实现 |
jeecg-module-zjrs/.../task/taskCollaboration/vo/TaskCollaborationVO.java |
跨层级协作VO |
jeecg-module-zjrs/.../task/taskAttachment/controller/TaskAttachmentController.java |
附件控制器 |
jeecg-module-zjrs/.../task/taskAttachment/entity/TaskAttachment.java |
附件实体定义 |
jeecg-module-zjrs/.../task/taskAttachment/mapper/TaskAttachmentMapper.java |
附件Mapper |
jeecg-module-zjrs/.../task/taskAttachment/mapper/xml/TaskAttachmentMapper.xml |
MyBatis SQL映射 |
jeecg-module-zjrs/.../task/taskAttachment/service/ITaskAttachmentService.java |
附件Service接口 |
jeecg-module-zjrs/.../task/taskAttachment/service/impl/TaskAttachmentServiceImpl.java |
附件Service实现 |
jeecg-module-zjrs/.../task/taskAttachment/vo/TaskAttachmentVO.java |
附件VO |
| 文件 | 说明 |
|---|---|
jeecgboot-vue3/src/views/task/taskDispatch/TaskDispatchList.vue |
市级用户任务列表页 |
jeecgboot-vue3/src/views/task/taskDispatch/MyTaskList.vue |
县区/镇街用户"我的任务"列表页 |
jeecgboot-vue3/src/views/task/taskDispatch/TaskDispatch.data.ts |
表格列配置、搜索表单配置、编辑表单配置 |
jeecgboot-vue3/src/views/task/taskDispatch/TaskDispatch.api.ts |
所有API接口定义与调用方法 |
jeecgboot-vue3/src/views/task/taskDispatch/components/TaskDispatchModal.vue |
任务新增/编辑/详情弹窗容器 |
jeecgboot-vue3/src/views/task/taskDispatch/components/TaskDispatchForm.vue |
任务编辑表单(主表+附件+县区接收+镇街接收子表) |
jeecgboot-vue3/src/views/task/taskDispatch/components/TaskDispatchDetailModal.vue |
任务详情浏览弹窗(含所有子表数据) |
jeecgboot-vue3/src/views/task/taskDispatch/components/TaskReplyModal.vue |
任务回复弹窗(含协作记录、附件上传) |
jeecgboot-vue3/src/views/task/taskDispatch/components/DispatchTownModal.vue |
县区派发任务到镇街弹窗 |
jeecgboot-vue3/src/views/task/taskDispatch/components/DistrictReceiveEditModal.vue |
县区接收记录编辑弹窗 |
jeecgboot-vue3/src/views/task/taskDispatch/components/TownReceiveEditModal.vue |
镇街接收记录编辑弹窗 |
jeecgboot-vue3/src/views/task/taskDispatch/components/CollaborationAddModal.vue |
新增跨层级协作弹窗 |
jeecgboot-vue3/src/views/task/taskDispatch/components/CollaborationReplyModal.vue |
跨层级协作回复弹窗 |
| 字典编码 | 字典名称 | 使用场景 |
|---|---|---|
| TaskPriority | 任务优先级 | 任务派发表格的 priority 字段 |
| TaskStatus | 任务状态 | 任务派发表格的 taskStatus 字段 |
| 值 | 含义 | 说明 |
|---|---|---|
| 1 | 草稿 | 任务已保存但未派发,只有创建者可见 |
| 2 | 进行中 | 任务已派发,接收人可见 |
| 3 | 已结束 | 任务已完成/终止,不再操作 |
| 值 | 含义 | 说明 |
|---|---|---|
| DISTRICT | 县区接收表 | 当前用户是某个县区接收记录的接收人 |
| TOWN | 镇街接收表 | 当前用户是某个镇街接收记录的接收人 |
| DISPATCH | 任务主表 | 当前用户是发起人或市级用户 |