公益性岗位管理与岗位推荐模块开发记录
开发日期
2026-06-03
模块概述
本次开发实现了"公益性岗位管理"和"岗位推荐"两个模块的完整后端+前端代码,严格参考 FocusPersonnel 模块的代码模式。
模块1:公益性岗位管理(WelfarePost)
数据库表:WELFARE_POST
| 字段 |
说明 |
| ID |
主键 |
| ENTERPRISE_ID |
用人单位ID |
| COMPANY_NAME |
用人单位名称 |
| POST_NAME |
岗位名称 |
| POST_TYPE |
岗位类型(社区服务/城市管理/公共管理/后勤服务) |
| WORK_LOCATION |
工作地点 |
| DETAILED_ADDRESS |
详细地址 |
| RECRUIT_COUNT |
招聘人数 |
| PLACED_COUNT |
已安置人数 |
| SUBSIDY_STANDARD |
补贴标准 |
| SUBSIDY_PERIOD |
补贴期限 |
| SOCIAL_SECURITY_SUBSIDY |
社保补贴 |
| POST_DESC |
岗位描述 |
| POST_REQUIREMENT |
岗位要求 |
| APPLY_METHOD |
报名方式(网上报名/现场报名) |
| APPLY_DEADLINE |
报名截止日期 |
| PUBLISH_STATUS |
发布状态(0未发布/1已发布) |
| POST_STATUS |
岗位状态(招聘中/已满/已关闭) |
| PUBLISHER |
发布人 |
| PUBLISH_ORG |
发布机构 |
| PUBLISH_TIME |
发布时间 |
后端文件
| 文件 |
路径 |
| WelfarePost.java |
org.jeecg.modules.zjrs.welfarepost.entity.WelfarePost |
| WelfarePostMapper.java |
org.jeecg.modules.zjrs.welfarepost.mapper.WelfarePostMapper |
| WelfarePostMapper.xml |
org.jeecg.modules.zjrs.welfarepost.mapper.xml.WelfarePostMapper |
| IWelfarePostService.java |
org.jeecg.modules.zjrs.welfarepost.service.IWelfarePostService |
| WelfarePostServiceImpl.java |
org.jeecg.modules.zjrs.welfarepost.service.impl.WelfarePostServiceImpl |
| WelfarePostController.java |
org.jeecg.modules.zjrs.welfarepost.controller.WelfarePostController |
后端实现说明
- 实体类使用
@TableName("welfare_post"),主键使用 @TableId(type = IdType.ASSIGN_ID)
- Controller 继承
JeecgController,/list 接口使用 QueryGenerator 自动构建查询条件(标准CRUD模式)
- 权限前缀:
welfare_post
- Mapper XML 仅基础配置,不需要自定义SQL
前端文件
| 文件 |
路径 |
| WelfarePost.api.ts |
views/welfarepost/WelfarePost.api.ts |
| WelfarePost.data.ts |
views/welfarepost/WelfarePost.data.ts |
| WelfarePostList.vue |
views/welfarepost/WelfarePostList.vue |
| WelfarePostForm.vue |
views/welfarepost/components/WelfarePostForm.vue |
| WelfarePostModal.vue |
views/welfarepost/components/WelfarePostModal.vue |
前端实现说明
- 列表字段:用人单位名称、岗位名称、岗位类型、工作地点、招聘人数、已安置人数、补贴标准、发布状态、岗位状态
- 查询字段:用人单位名称(输入框)、岗位名称(输入框)、岗位类型(下拉框)、发布状态(下拉框)、岗位状态(下拉框)
- 表单分两个卡片区域:卡片1-用人单位信息、卡片2-岗位信息
- 下拉框使用
a-select 硬编码选项
Flyway菜单SQL
- 文件:
V20260603_7__menu_insert_WelfarePost.sql
- 一级菜单ID:178060100000040
- 二级菜单ID:178060100000041
- 按钮权限ID:1780601000000411 ~ 1780601000000416
- 角色授权ID:1780601000000417 ~ 1780601000000424
模块2:岗位推荐(JobRecommend)
数据库表:JOB_RECOMMEND
| 字段 |
说明 |
| ID |
主键 |
| PERSONAL_ID |
关联个人信息ID |
| POST_ID |
关联岗位ID |
| RECOMMEND_TYPE |
推荐类型(岗位推荐到人/人推荐到岗位) |
| RECOMMEND_OPINION |
推荐意见 |
| RECOMMEND_STATUS |
推荐状态(待查看/已查看/已接受/已拒绝) |
视图:v_job_recommend_list
关联 personal_info、post_info 和 enterprise_info 表,提供列表展示所需的关联字段。
后端文件
| 文件 |
路径 |
| JobRecommend.java |
org.jeecg.modules.zjrs.jobrecommend.entity.JobRecommend |
| JobRecommendPageVo.java |
org.jeecg.modules.zjrs.jobrecommend.entity.JobRecommendPageVo |
| JobRecommendMapper.java |
org.jeecg.modules.zjrs.jobrecommend.mapper.JobRecommendMapper |
| JobRecommendMapper.xml |
org.jeecg.modules.zjrs.jobrecommend.mapper.xml.JobRecommendMapper |
| IJobRecommendService.java |
org.jeecg.modules.zjrs.jobrecommend.service.IJobRecommendService |
| JobRecommendServiceImpl.java |
org.jeecg.modules.zjrs.jobrecommend.service.impl.JobRecommendServiceImpl |
| JobRecommendController.java |
org.jeecg.modules.zjrs.jobrecommend.controller.JobRecommendController |
后端实现说明
- 实体类使用
@TableName("job_recommend"),只包含表自身字段
- PageVo 映射视图字段,包含:id, personalId, postId, recommendType, recommendOpinion, recommendStatus, fullName, gender, contactPhone, education, postName, workLocation, companyName
- Mapper 添加
queryPageList 方法,从视图 v_job_recommend_list 查询
- Controller /list 接口使用
queryPageList(参考 FocusPersonnelController 模式)
- 权限前缀:
job_recommend
前端文件
| 文件 |
路径 |
| JobRecommend.api.ts |
views/jobrecommend/JobRecommend.api.ts |
| JobRecommend.data.ts |
views/jobrecommend/JobRecommend.data.ts |
| JobRecommendList.vue |
views/jobrecommend/JobRecommendList.vue |
| JobRecommendForm.vue |
views/jobrecommend/components/JobRecommendForm.vue |
| JobRecommendModal.vue |
views/jobrecommend/components/JobRecommendModal.vue |
前端实现说明
- 列表字段:姓名、性别、联系电话、学历、岗位名称、工作地点、单位名称、推荐类型、推荐状态、推荐意见
- 查询字段:姓名(输入框)、推荐类型(下拉框)、推荐状态(下拉框)、岗位名称(输入框)、单位名称(输入框)
- 表单字段:关联个人信息(personalId)、关联岗位(postId)、推荐类型(下拉框)、推荐意见(文本域)、推荐状态(下拉框)
- 下拉框使用
a-select 硬编码选项
Flyway菜单SQL
- 文件:
V20260603_8__menu_insert_JobRecommend.sql
- 一级菜单ID:178060100000050
- 二级菜单ID:178060100000051
- 按钮权限ID:1780601000000511 ~ 1780601000000516
- 角色授权ID:1780601000000517 ~ 1780601000000524
注意事项
- 所有Java注释使用中文
- Flyway SQL不使用反引号(达梦数据库兼容)
- 实体类使用
@TableId(type = IdType.ASSIGN_ID)
- Controller 继承
JeecgController
- 不使用视图的模块(公益性岗位),/list接口使用标准QueryGenerator模式
- 使用视图的模块(岗位推荐),/list接口参考FocusPersonnelController的queryPageList模式
- 前端表单下拉框使用
a-select 硬编码选项
- Flyway SQL中INSERT语句每行一个,不多行VALUES
- 岗位推荐模块依赖视图
v_job_recommend_list,需先执行视图创建SQL
2026-06-12 导出字典翻译修复
问题
导出Excel时岗位类型、报名方式、发布状态、岗位状态等字典字段显示为原始编码。
修复文件
| 文件 |
修改 |
IWelfarePostService.java |
新增 translateDictFields() 方法 |
WelfarePostServiceImpl.java |
注入 IDictionaryItemService,批量查询字典 → switch-case替换字段值为标签 |
WelfarePostController.java |
重写 exportXls:QueryGenerator查询 → 过滤选中 → 字典翻译 → 导出为 .xlsx |
2026-06-12 岗位推送功能实现
问题
重点关注人员管理和见习人员管理的"岗位推送"按钮为占位状态,需实现手动选择岗位推送功能。岗位推送本质是新增一条岗位推荐记录,复用现有 job_recommend 表。
后端修改(JobRecommend 模块)
| 文件 |
修改 |
jobrecommend/dto/AvailablePostVo.java |
新增 — 可选岗位VO |
jobrecommend/mapper/xml/JobRecommendMapper.xml |
新增 — queryAvailablePosts SQL:UNION 查询三表(internship_post / welfare_post / post_info),仅查已发布岗位,支持 keyword 模糊搜索 |
jobrecommend/mapper/JobRecommendMapper.java |
新增 — queryAvailablePosts() 方法 |
jobrecommend/service/IJobRecommendService.java |
新增 — queryAvailablePosts() 接口 |
jobrecommend/service/impl/JobRecommendServiceImpl.java |
新增 — queryAvailablePosts() 实现 |
jobrecommend/controller/JobRecommendController.java |
新增 — GET /jobRecommend/availablePosts 端点(支持 postType + keyword 过滤) |
前端修改
| 文件 |
修改 |
jobrecommend/JobRecommend.api.ts |
新增 — listAvailablePosts() + pushJob() API |
jobrecommend/components/JobPushModal.vue |
新增 — 通用岗位推送弹窗(岗位类型筛选、岗位名称搜索、单选表格、推荐意见输入),FocusPersonnel 和 InternshipPersonnel 共用 |