模块开发说明-就业状态自动感知.md 11 KB

就业状态自动感知模块 - 开发设计文档

依据:《需求规格说明书》第3.9节
设计日期:2026-06-09
设计模式:视图分页查询 + 轻量本地标签表


一、菜单层级

就业状态自动感知 (顶级菜单, sort_no: 2.00, icon: eye-outlined)
  ├── 企业就业状态感知 (子菜单, sort_no: 1.00)
  └── 个人就业状态感知 (子菜单, sort_no: 2.00)

二、子模块1:企业就业状态感知

2.1 功能说明

企业就业状态自动感知,监测企业在岗员工总数、用工工种分布、用工稳定性、薪酬待遇等数据。通过对这些数据的分析,准确掌握就业失业状况及其变化趋势。

2.2 查询字段

所属区县,所属行业,企业名称,企业状态,自定义标签

2.3 列表字段

企业名称,所属区县,企业规模,企业状态,所属行业,企业已发布岗位总数,当前在招岗位数量,备案在岗总人数,平均薪酬,自定义标签,最后通知时间

2.4 支持功能

查看,发送消息,修改标签

2.5 数据库设计

表:企业就业状态本地信息表(enterprise_status_local)

CREATE TABLE ENTERPRISE_STATUS_LOCAL (
    ID                VARCHAR(36)  NOT NULL,
    ENTERPRISE_ID     VARCHAR(36)  NOT NULL COMMENT '企业ID(关联ENTERPRISE_INFO.ID)',
    CUSTOM_TAGS       VARCHAR(500)          COMMENT '自定义标签',
    LAST_NOTICE_TIME  DATETIME              COMMENT '最后通知时间',
    CREATE_BY         VARCHAR(50),
    CREATE_TIME       DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
    UPDATE_BY         VARCHAR(50),
    UPDATE_TIME       DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
    SYS_ORG_CODE      VARCHAR(50),
    PRIMARY KEY (ID)
);
COMMENT ON TABLE ENTERPRISE_STATUS_LOCAL IS '企业就业状态本地信息表';
CREATE UNIQUE INDEX IDX_ESL_ENTERPRISE ON ENTERPRISE_STATUS_LOCAL(ENTERPRISE_ID);

视图:v_enterprise_employment_status

从 ENTERPRISE_INFO + POST_INFO + ENTERPRISE_STATUS_LOCAL 聚合:

CREATE OR REPLACE VIEW V_ENTERPRISE_EMPLOYMENT_STATUS AS
SELECT ei.ID, ei.UNIFIED_CREDIT_CODE, ei.COMPANY_NAME,
       ei.REG_ADDR_DISTRICT AS DISTRICT, ei.INDUSTRY,
       ei.STAFF_SIZE AS ENTERPRISE_SCALE, ei.BUSINESS_STATUS AS ENTERPRISE_STATUS,
       (SELECT COUNT(*) FROM POST_INFO pi WHERE pi.ENTERPRISE_ID = ei.ID) AS TOTAL_POST_COUNT,
       (SELECT COUNT(*) FROM POST_INFO pi WHERE pi.ENTERPRISE_ID = ei.ID
            AND (pi.POST_VALID_DATE IS NULL OR pi.POST_VALID_DATE >= SYSDATE)) AS ACTIVE_POST_COUNT,
       (SELECT COUNT(*) FROM POST_INFO pi WHERE pi.ENTERPRISE_ID = ei.ID
            AND pi.POST_VALID_DATE IS NOT NULL AND pi.POST_VALID_DATE < SYSDATE) AS EXPIRED_POST_COUNT,
       NULL AS REGISTERED_EMPLOYEE_COUNT,
       (SELECT AVG((pi2.SALARY_MIN + pi2.SALARY_MAX) / 2) FROM POST_INFO pi2
            WHERE pi2.ENTERPRISE_ID = ei.ID
              AND (pi2.POST_VALID_DATE IS NULL OR pi2.POST_VALID_DATE >= SYSDATE)
              AND pi2.SALARY_MIN IS NOT NULL AND pi2.SALARY_MAX IS NOT NULL) AS AVERAGE_SALARY,
       esl.CUSTOM_TAGS, esl.LAST_NOTICE_TIME
FROM ENTERPRISE_INFO ei
LEFT JOIN ENTERPRISE_STATUS_LOCAL esl ON ei.ID = esl.ENTERPRISE_ID;

2.6 文件清单

后端(jeecg-module-zjrs/org/jeecg/modules/zjrs/enterprisestatus/)

文件 说明
entity/EnterpriseStatusLocal.java 本地信息实体
entity/EnterpriseStatusPageVo.java 列表页VO(视图字段)
mapper/EnterpriseStatusLocalMapper.java Mapper(含queryPageList)
mapper/xml/EnterpriseStatusLocalMapper.xml 视图查询SQL
service/IEnterpriseStatusService.java 服务接口
service/impl/EnterpriseStatusServiceImpl.java 服务实现(含queryPageList)
controller/EnterpriseStatusController.java REST控制器(列表+标签保存)

前端(jeecgboot-vue3/src/views/enterprisestatus/)

文件 说明
EnterpriseStatusList.vue 列表页面(含查询表单)
EnterpriseStatus.data.ts 表格列+搜索配置
EnterpriseStatus.api.ts API接口

2.7 业务逻辑

  1. 企业就业状态数据从省一体化平台回流,通过视图实时聚合
  2. 管理员可以给企业打自定义标签(存enterprise_status_local)
  3. 发送消息功能:基于企业信息发送通知(待实现消息推送)

三、子模块2:个人就业状态感知

3.1 功能说明

个人就业状态自动感知,监控求职人员就业情况。

3.2 查询字段

户口所属区域,姓名,学历,性别,年龄,求职状态,就业状态

3.3 列表字段

证件号码,姓名,户口所属区县,性别,学历,年龄,求职状态,就业状态,就业登记累计次数,失业登记累计次数,社保情况,自定义标签,最后通知时间

3.4 支持功能

查看,发送消息,修改标签

3.5 数据库设计

表:个人就业状态本地信息表(personal_status_local)

CREATE TABLE PERSONAL_STATUS_LOCAL (
    ID                VARCHAR(36)  NOT NULL,
    PERSONAL_ID       VARCHAR(36)  NOT NULL COMMENT '个人ID(关联PERSONAL_INFO.ID)',
    CUSTOM_TAGS       VARCHAR(500)          COMMENT '自定义标签',
    LAST_NOTICE_TIME  DATETIME              COMMENT '最后通知时间',
    CREATE_BY         VARCHAR(50),
    CREATE_TIME       DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
    UPDATE_BY         VARCHAR(50),
    UPDATE_TIME       DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
    SYS_ORG_CODE      VARCHAR(50),
    PRIMARY KEY (ID)
);
COMMENT ON TABLE PERSONAL_STATUS_LOCAL IS '个人就业状态本地信息表';
CREATE UNIQUE INDEX IDX_PSL_PERSONAL ON PERSONAL_STATUS_LOCAL(PERSONAL_ID);

视图:v_personal_employment_status

从 PERSONAL_INFO + EMPLOYMENT_RECORD + UNEMPLOYMENT_RECORD 聚合:

CREATE OR REPLACE VIEW V_PERSONAL_EMPLOYMENT_STATUS AS
SELECT pi.ID, pi.ID_NUMBER, pi.FULL_NAME,
       pi.HOUSEHOLD_LOCATION AS HOUSEHOLD_DISTRICT, pi.GENDER, pi.EDUCATION,
       FLOOR(MONTHS_BETWEEN(SYSDATE, pi.BIRTH_DATE) / 12) AS AGE,
       pi.JOB_SEARCH_STATUS,
       CASE WHEN er.PERSONAL_ID IS NOT NULL AND er.EMPLOY_COUNT > 0 THEN '就业中'
            WHEN ur.PERSONAL_ID IS NOT NULL AND ur.UNEMPLOY_COUNT > 0 THEN '失业中'
            ELSE '未就业'
       END AS EMPLOYMENT_STATUS,
       NVL(er.EMPLOY_COUNT, 0) AS EMPLOY_REG_COUNT,
       NVL(ur.UNEMPLOY_COUNT, 0) AS UNEMPLOY_REG_COUNT,
       NULL AS SOCIAL_INSURANCE_STATUS,
       psl.CUSTOM_TAGS, psl.LAST_NOTICE_TIME
FROM PERSONAL_INFO pi
LEFT JOIN PERSONAL_STATUS_LOCAL psl ON pi.ID = psl.PERSONAL_ID
LEFT JOIN (SELECT PERSONAL_ID, COUNT(*) AS EMPLOY_COUNT FROM EMPLOYMENT_RECORD GROUP BY PERSONAL_ID) er ON pi.ID = er.PERSONAL_ID
LEFT JOIN (SELECT PERSONAL_ID, COUNT(*) AS UNEMPLOY_COUNT FROM UNEMPLOYMENT_RECORD GROUP BY PERSONAL_ID) ur ON pi.ID = ur.PERSONAL_ID;

3.6 文件清单

后端(jeecg-module-zjrs/org/jeecg/modules/zjrs/personalstatus/)

文件 说明
entity/PersonalStatusLocal.java 本地信息实体
entity/PersonalStatusPageVo.java 列表页VO(视图字段)
mapper/PersonalStatusLocalMapper.java Mapper(含queryPageList)
mapper/xml/PersonalStatusLocalMapper.xml 视图查询SQL
service/IPersonalStatusService.java 服务接口
service/impl/PersonalStatusServiceImpl.java 服务实现(含queryPageList)
controller/PersonalStatusController.java REST控制器(列表+标签保存)

前端(jeecgboot-vue3/src/views/personalstatus/)

文件 说明
PersonalStatusList.vue 列表页面(含查询表单)
PersonalStatus.data.ts 表格列+搜索配置
PersonalStatus.api.ts API接口

3.7 业务逻辑

  1. 就业状态判断规则:有有效就业登记→就业中,有有效失业登记→失业中,否则→未就业
  2. 管理员可以给个人打自定义标签
  3. 就业/失业登记累计次数根据省平台回流数据统计

九、2026-06-10 修复与优化记录

编译修复

  • EnterpriseStatusController.java / PersonalStatusController.javajavax.servletjakarta.servlet
  • EnterpriseStatusServiceImpl.java / PersonalStatusServiceImpl.javajavax.annotation.Resourcejakarta.annotation.Resource
  • 移除不存在的 org.jeecg.common.util.ParamUtils 引用,改为手动 req.getParameter() 提取参数
  • IEnterpriseStatusService.java / IPersonalStatusService.java — 补充 queryPageList 方法声明

后端新增

  • EnterpriseStatusController.java / PersonalStatusController.java — 新增 /exportXls 导出端点,支持 selections 勾选过滤
  • EnterpriseStatusPageVo.java — 新增 registeredEmployeeCount(备案在岗总人数)、averageSalary(平均薪酬)、@Excel 注解
  • PersonalStatusPageVo.java — 新增 socialInsuranceStatus(社保情况)、householdAreaName(户口区县名称)、@Excel 注解
  • EnterpriseStatusLocalMapper.xml — 新增 customTags 查询条件
  • PersonalStatusLocalMapper.xml — 新增 age 查询条件

前端修复

企业就业状态感知:

  • 企业状态搜索框 → <a-select> 下拉(BusinessStatus 字典)
  • 表格列翻译:enterpriseStatus(BusinessStatus)、enterpriseScale(enterprise_scale)、district(XZQH)
  • 新增导出按钮 + exportConfig
  • 新增 EnterpriseStatusModal.vue + EnterpriseStatusDetail.vue 详情弹窗(j-modal 模式,与重点关注人员一致)
  • 列标题修正:已发布岗位总数企业已发布岗位总数

个人就业状态感知:

  • 性别/学历/求职状态/就业状态搜索框 → <a-select> 下拉(Gender/Education/JobSeekerStatus/employment_status 字典)
  • 表格列翻译:gender/education/jobSearchStatus/employmentStatus
  • 户口所属区县列 → householdAreaName 去"广东省湛江市"前缀显示区名
  • 新增导出按钮 + exportConfig
  • 新增 PersonalStatusModal.vue + PersonalStatusDetail.vue 详情弹窗

DM8 数据库

  • 建表:ENTERPRISE_STATUS_LOCALPERSONAL_STATUS_LOCAL
  • 建视图:V_ENTERPRISE_EMPLOYMENT_STATUSV_PERSONAL_EMPLOYMENT_STATUS
  • 建字典:employment_status(就业状态)、enterprise_scale(企业规模)
  • 菜单权限:就业状态自动感知(178060400000000) → 企业就业状态感知(178060400000001) → 个人就业状态感知(178060400000002),含 admin 授权
  • PERSONAL_INFO:20人,全部使用数字编码,覆盖湛江8区县
  • ENTERPRISE_INFO:10家,含对应标签
  • 旧人员数据(200-209)更新为湛江区县 + 多样化性别/学历/求职状态