大屏 — 共同富裕统计 — 技术方案
依据:同目录 大屏共同富裕功能需求.md;数据源为《共同富裕成果技术方案》《共同富裕项目技术方案》既有表。本模块为大屏只读看板,无业务台账 CRUD。
1. 技术架构
| 项 |
说明 |
| 后端 |
RuoYi v3.9.2(springboot2 分支):JDK 8、Spring Boot 2.x、Spring MVC、MyBatis、Druid |
| 数据库 |
MySQL 5.7.39,InnoDB,utf8mb4 |
| 前端 |
大屏独立页面(Vue2 + ECharts 或大屏框架);一次切换年份拉取看板主数据,项目列表分页单独请求 |
| 代码包 |
com.ruoyi.web.modules.prosperity(建议新增 screen 子包:controller / service / vo) |
分层:CommonProsperityScreenController → ICommonProsperityScreenService(口径编排)→ 复用 IAchievementReportService + BizCommonProsperityProjectMapper / BizCommonProsperityProjectOpImageMapper。
| 场景 |
行为 |
| 进入 / 切换统计年份 |
调用 §3.1 返回成果总览、按月序列、数字赋能汇总、项目分类占比、可选年份 |
| 项目列表翻页 |
仅调用 §3.2,不改变成果区块 |
| 数据权限 |
全县共富数据,不按部门/用户过滤(与成果台账、项目维护范围一致) |
| 汇总口径 |
与《共同富裕成果年度报告技术方案》§2.3 一致;hasAchievementData=false 时 summary=null |
| 性能 |
单年成果 ≤12 行、项目量级有限,默认实时查询;可选 §2.3 缓存表 |
依赖表(只读)
| 表 |
用途 |
biz_common_prosperity_achievement |
月度成果 → 总览、图表、数字赋能 |
biz_common_prosperity_project |
已发布项目 → 分类饼图、列表 |
biz_common_prosperity_project_op_image |
列表运营图片(1~3 张) |
2. 数据库设计
2.1 本模块业务表
无新增业务台账表。 DDL 以 sql/biz_common_prosperity_achievement.sql、sql/biz_common_prosperity_project.sql 为准。
2.2 查询口径(SQL 条件)
成果(按统计年份 Y)
| 项 |
条件 |
| 按年取数 |
stat_period LIKE CONCAT(#{statYear}, '-%'),ORDER BY stat_period ASC |
| 缺月补 0 / 年度汇总 |
服务端 AchievementReportAggregator(已实现,直接复用) |
hasAchievementData |
该年 COUNT(*) > 0 |
项目(按统计年份 Y)
| 项 |
条件 |
| 发布状态 |
publish_status = 1 |
| 实施周期与 Y 有交集 |
impl_start_date <= CONCAT(#{statYear}, '-12-31') AND impl_end_date >= CONCAT(#{statYear}, '-01-01') |
| 列表默认排序 |
publish_time DESC, id DESC(与功能需求 §5.11.1 一致;若产品改按 impl_start_date 倒序,仅改 ORDER BY) |
| 分类统计 |
在上述集合上 GROUP BY project_type,得各类型 count、ratio(ratio = count / total,total=0 时占比均为 0) |
| 运营图 |
biz_common_prosperity_project_op_image 按 project_id IN (...),sort_order ASC |
project_type 枚举:1 合作共赢 → 展示「共富项目」;2 农文旅融合;3 认养农业。
2.3 可选表 biz_common_prosperity_screen_cache(性能优化)
数据量大或刷新慢时启用;非本期必建。
| 字段 |
类型 |
说明 |
id |
bigint(20) |
主键 |
stat_year |
int(11) |
统计年份 |
payload_json |
mediumtext |
§3.1 响应 JSON(不含分页列表) |
expire_time |
datetime |
过期时间 |
create_time |
datetime |
写入时间 |
索引:UNIQUE uk_stat_year (stat_year)。TTL 建议 1~5 分钟(与功能需求 §7.4 一致)。
2.4 索引建议(既有表)
| 表 |
建议 |
biz_common_prosperity_achievement |
沿用 uk_stat_period / idx_stat_period |
biz_common_prosperity_project |
沿用 idx_publish、idx_impl_start;可选复合 idx_screen (publish_status, impl_start_date, impl_end_date) |
2.5 Mapper 扩展(建议方法名)
| Mapper |
方法 |
说明 |
BizCommonProsperityProjectMapper |
selectPublishedForScreen(statYear) |
分类统计用,返回 project_type 列表或 GROUP BY 结果 |
| 同上 |
selectPublishedListForScreen(statYear) |
列表分页(配合 PageHelper) |
BizCommonProsperityProjectOpImageMapper |
selectByProjectIds(ids) |
批量加载运营图 |
3. 接口设计
统一响应:AjaxResult(code / msg / data);项目分页列表使用 TableDataInfo(rows / total)。
权限标识(示例):bigScreen:commonProsperity:query(仅查询;与成果/项目 CRUD 分离)
Base Path:/bigScreen/commonProsperity
大屏若部署为免登录展示,可调用 《大屏免密登录技术方案》(doc/大屏/免密登录/大屏免密登录技术方案.md)中 POST /bigScreen/login 换取 JWT;看板接口仍走 Token + 权限,不在各看板 Controller 使用 @Anonymous 写死。
| # |
说明 |
Method |
URI |
权限 |
| 3.1 |
看板主数据(成果 + 分类) |
GET |
/bigScreen/commonProsperity/dashboard |
bigScreen:commonProsperity:query |
| 3.2 |
共富项目分页列表 |
GET |
/bigScreen/commonProsperity/projects |
同上 |
前端:切换 statYear → 调 3.1 + 3.2(pageNum=1);仅翻页 → 调 3.2。
3.1 看板主数据
Query
| 参数 |
类型 |
必填 |
说明 |
statYear |
string |
Y |
四位年份,如 2026;非法 → 业务异常(复用 AchievementReportValidation) |
forceRefresh |
boolean |
N |
默认 false;true 时跳过 §2.3 缓存 |
响应 data
| 字段 |
类型 |
说明 |
statYear |
int |
回显 |
availableYears |
int[] |
成果表与项目表出现过的年份并集,降序;供年份选择器 |
achievement |
object |
成果区块,结构同 AchievementAnnualReportVo(见下) |
projectTypeStats |
array |
项目分类饼图,见 §3.1.1 |
hasProjectData |
boolean |
该年是否存在 ≥1 条符合 §2.2 的已发布项目 |
achievement 节点(复用年度报告 VO,勿改口径):
| 字段 |
说明 |
hasData |
即 hasAchievementData;全年无成果台账为 false |
summary |
年度总览;hasData=false 时为 null |
monthly |
固定 12 条,month 1~12;缺月指标为 0 |
图表字段映射(与功能需求 §5、年度报告一致)
| 大屏区块 |
取用 |
| 总览卡片 / 数字赋能 |
achievement.summary.* |
| 集体经济收入(横向柱) |
achievement.monthly[].collectiveEconomyIncome |
| 就业带动(双折线) |
employmentDrivenCount、newJobPositions |
| 环境治理 / 文化传承(柱) |
envProjectCount / culturalHeritageCount |
| 绿化建设(折线) |
newGreenArea |
| 民族团结(堆叠柱) |
ethnicIntegrationProjectCount、ethnicUnityActivityCount |
3.1.1 projectTypeStats[]
| 字段 |
类型 |
说明 |
projectType |
int |
1 / 2 / 3 |
projectTypeName |
string |
共富项目 / 农文旅项目 / 认养项目 |
count |
int |
数量 |
ratio |
decimal |
占比 0~1;hasProjectData=false 时三项 count=0、ratio=0 |
响应示例(节选)
{
"statYear": 2026,
"availableYears": [2026, 2025],
"hasProjectData": true,
"achievement": {
"statYear": 2026,
"hasData": true,
"summary": { "collectiveEconomyIncome": 120.50, "digitalPlatformUsageRate": 0.7250 },
"monthly": [{ "month": 1, "collectiveEconomyIncome": 10.00 }]
},
"projectTypeStats": [
{ "projectType": 1, "projectTypeName": "共富项目", "count": 5, "ratio": 0.50 }
]
}
服务端逻辑(摘要)
1. year = parseStatYear(statYear)
2. achievement = achievementReportService.getAnnualReport(String.valueOf(year))
3. projects = mapper.selectPublishedForScreen(year)
4. projectTypeStats = groupByType(projects); hasProjectData = total > 0
5. availableYears = union(achievementMapper.selectDistinctStatYears(), projectYears)
6. return AjaxResult.success(vo)
3.2 共富项目分页列表
Query
| 参数 |
类型 |
必填 |
说明 |
statYear |
string |
Y |
同 3.1 |
pageNum |
int |
N |
默认 1 |
pageSize |
int |
N |
默认 8;建议 5~10 |
响应
TableDataInfo:rows 为 §3.2.1 结构数组,total 为符合条件的项目总数。
不提供 GET /project/{id} 大屏专用详情接口;列表行内字段一次返回(对齐功能需求 §5.11)。
3.2.1 rows[] 单条
| 字段 |
类型 |
说明 |
id |
long |
项目 ID |
projectType / projectTypeName |
int / string |
类型枚举与展示名 |
projectName |
string |
项目名称 |
introduction |
string |
简介 |
projectContent |
string |
内容 |
implStartDate / implEndDate |
string |
yyyy-MM-dd |
coverFileUrl |
string |
封面 URL,可空 |
videoFileUrl |
string |
运营视频 URL,可空 |
publishTime |
string |
发布时间 |
operationImages |
array |
{ fileUrl, sortOrder },1~3 条,按 sortOrder 升序 |
4. 菜单与权限(示例)
| 类型 |
名称 |
权限标识 |
说明 |
| 菜单 |
大屏共同富裕 |
bigScreen:commonProsperity:query |
路由指向大屏页面组件 |
| 按钮 |
查看 |
bigScreen:commonProsperity:query |
与菜单共用 |
SQL 示例:sql/big_screen_common_prosperity_perm.sql(挂载「大屏」父菜单下)。
5. 交付清单
6. 修订记录
| 版本 |
日期 |
说明 |
| 1.0 |
2026-05-20 |
初稿:无新业务表;复用成果年度报告聚合;双接口(看板 + 项目分页);对齐功能需求 v1.0 |