依据:同目录
草场管理功能需求.md。草场台账 CRUD + 逻辑删除;不含地图标点、附件上传。
| 项 | 说明 |
|---|---|
| 后端 | RuoYi v3.9.2(springboot2 分支):JDK 8、Spring Boot 2.x、Spring MVC、MyBatis、Druid |
| 数据库 | MySQL 5.7.39,InnoDB,utf8mb4 |
| 前端 | 若依 Vue2(本方案不展开页面实现) |
分层:Controller(@PreAuthorize、AjaxResult / TableDataInfo)→ Service(GrasslandValidation 业务校验)→ Mapper/XML → domain。
代码位置(建议):baqing-admin → com.ruoyi.web.modules.industryservice(与「牧场管理」同模块:BizGrassland、Mapper、Service、Controller)。
业务摘要
| 场景 | 行为 |
|---|---|
| 新增 | 校验 §3.5;del_flag='0' |
| 修改 | 全字段可改;重新校验;update 带 del_flag='0' 条件 |
| 列表/详情 | 仅 del_flag='0';排序 create_time DESC, id DESC |
| 删除 | 逻辑删除:del_flag 置 '2'(若依惯例) |
biz_grassland(草场)| 字段 | 类型 | 非空 | 默认值 | 说明 |
|---|---|---|---|---|
id |
bigint(20) |
Y | 自增 | 主键 |
grassland_name |
varchar(32) |
Y | — | 草场名称(需求 1~10 字) |
area_mu |
decimal(12,2) |
Y | — | 面积(亩),> 0 |
degradation_level |
tinyint(4) |
Y | — | 退化等级 §2.2 |
utilization_type |
tinyint(4) |
Y | — | 利用类型 §2.2 |
grass_yield_per_mu |
decimal(12,2) |
Y | — | 亩产草量(kg/亩),> 0 |
utilization_rate |
decimal(5,4) |
Y | — | 利用率 0~1(闭区间) |
grazing_ban_start_date |
date |
Y | — | 禁牧开始日期 |
grazing_ban_end_date |
date |
Y | — | 禁牧结束日期;≥ 开始日 |
rotation_plot_count |
int(11) |
Y | — | 轮牧小区数量(块),≥ 1 |
rotation_grazing_days |
int(11) |
Y | — | 小区放牧天数(天),≥ 1 |
rotation_cycle_days |
int(11) |
Y | — | 轮牧周期(天),≥ 1 |
del_flag |
char(1) |
Y | '0' |
0 存在 2 删除 |
create_by / create_time / update_by / update_time |
若依惯例 | — | — | 审计 |
remark |
varchar(200) |
N | NULL | 备注(≤100 字) |
索引:PRIMARY KEY (id);KEY idx_grassland_name (grassland_name);KEY idx_utilization_type (utilization_type);KEY idx_degradation_level (degradation_level);KEY idx_create_time (create_time);KEY idx_del_flag (del_flag)。
DDL(MySQL 5.7)
CREATE TABLE `biz_grassland` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`grassland_name` varchar(32) NOT NULL COMMENT '草场名称',
`area_mu` decimal(12,2) NOT NULL COMMENT '面积(亩)',
`degradation_level` tinyint(4) NOT NULL COMMENT '退化等级1-5',
`utilization_type` tinyint(4) NOT NULL COMMENT '利用类型1禁牧2轮牧3全年放牧',
`grass_yield_per_mu` decimal(12,2) NOT NULL COMMENT '亩产草量kg/亩',
`utilization_rate` decimal(5,4) NOT NULL COMMENT '利用率0-1',
`grazing_ban_start_date` date NOT NULL COMMENT '禁牧开始日期',
`grazing_ban_end_date` date NOT NULL COMMENT '禁牧结束日期',
`rotation_plot_count` int(11) NOT NULL COMMENT '轮牧小区数量(块)',
`rotation_grazing_days` int(11) NOT NULL COMMENT '小区放牧天数(天)',
`rotation_cycle_days` int(11) NOT NULL COMMENT '轮牧周期(天)',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '0存在 2删除',
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(200) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
KEY `idx_grassland_name` (`grassland_name`),
KEY `idx_utilization_type` (`utilization_type`),
KEY `idx_degradation_level` (`degradation_level`),
KEY `idx_create_time` (`create_time`),
KEY `idx_del_flag` (`del_flag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='草场管理';
| 字段 | 值 | 含义 |
|---|---|---|
degradation_level |
1 |
未退化 |
2 |
轻度 | |
3 |
中度 | |
4 |
重度 | |
5 |
极重度 | |
utilization_type |
1 |
禁牧 |
2 |
轮牧 | |
3 |
全年放牧 | |
del_flag |
0 |
正常 |
2 |
已逻辑删除 |
统一响应:AjaxResult(code / msg / data)或分页 TableDataInfo(rows、total)。
权限标识:dataModel:grassland:list|query|add|edit|remove|export
Base Path:/dataModel/grassland
| # | 说明 | Method | URI | 权限 | 要点 |
|---|---|---|---|---|---|
| 3.1 | 分页列表 | GET | /dataModel/grassland/list |
dataModel:grassland:list |
Query 3.1.1;del_flag='0';create_time DESC, id DESC |
| 3.2 | 详情 | GET | /dataModel/grassland/{id} |
dataModel:grassland:query |
全字段;del_flag='0',否则无数据 |
| 3.3 | 新增 | POST | /dataModel/grassland |
dataModel:grassland:add |
Body 3.3.1;del_flag='0' |
| 3.4 | 修改 | PUT | /dataModel/grassland |
dataModel:grassland:edit |
Body 含 id;全量校验 |
| 3.5 | 删除 | DELETE | /dataModel/grassland/{ids} |
dataModel:grassland:remove |
逻辑删除;ids 逗号分隔批量 |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
pageNum / pageSize |
int | N | 默认 1 / 20 |
keyword |
string | N | 草场名称模糊;空不过滤 |
utilizationType |
int | N | 1~3 精确;空不过滤 |
degradationLevel |
int | N | 1~5 精确(可选扩展筛选项);空不过滤 |
| 字段 | 必填 | 说明 |
|---|---|---|
id |
修改 Y | 主键 |
grasslandName |
Y | 1~10 字符 |
areaMu |
Y | 正数(亩) |
degradationLevel |
Y | 1~5 |
utilizationType |
Y | 1~3 |
grassYieldPerMu |
Y | 正数(kg/亩) |
utilizationRate |
Y | 0~1(含端点) |
grazingBanStartDate |
Y | yyyy-MM-dd |
grazingBanEndDate |
Y | yyyy-MM-dd;≥ grazingBanStartDate |
rotationPlotCount |
Y | 正整数(块) |
rotationGrazingDays |
Y | 正整数(天) |
rotationCycleDays |
Y | 正整数(天) |
remark |
N | ≤100 字 |
列表行字段(示例):id、grasslandName、areaMu、degradationLevel、utilizationType、grassYieldPerMu、utilizationRate、grazingBanStartDate、grazingBanEndDate、rotationPlotCount、rotationGrazingDays、rotationCycleDays、createTime。
日期序列化:JSON 使用 yyyy-MM-dd;与若依 JsonFormat / 全局 Jackson 配置一致。
and del_flag = '0'。update biz_grassland set del_flag='2', update_by=?, update_time=now() where del_flag='0' and id in (...)。selectByIdAny(不过滤 del_flag),用于审计或幂等。| 项 | 规则 |
|---|---|
| 草场名称 | 非空,1~10 字符 |
| 面积 | > 0;decimal 合法 |
| 退化等级 | ∈ {1, 2, 3, 4, 5} |
| 利用类型 | ∈ {1, 2, 3} |
| 亩产草量 | > 0 |
| 利用率 | 0 ≤ x ≤ 1 |
| 禁牧日期 | 起止非空;start ≤ end |
| 轮牧三项 | 均为 ≥ 1 的整数 |
| 备注 | 可空;有值 ≤100 字 |
校验类建议:GrasslandRules(枚举常量)、GrasslandValidation(validateRowForSave)。
| 类型 | 名称 | 权限标识 |
|---|---|---|
| 菜单 | 草场管理 | dataModel:grassland:list |
| 按钮 | 查询 | dataModel:grassland:query |
| 按钮 | 新增 | dataModel:grassland:add |
| 按钮 | 修改 | dataModel:grassland:edit |
| 按钮 | 删除 | dataModel:grassland:remove |
| 按钮 | 导出 | dataModel:grassland:export |
组件路径建议:dataModel/grassland/index(菜单挂载在「产业数据模型及体系」下)。
sql/biz_grassland.sql、菜单与按钮权限 SQLBizGrassland Domain / Mapper / XML / Service / ControllerGrasslandRules、GrasslandValidation| 版本 | 说明 |
|---|---|
| 1.0 | 初稿:对齐功能需求;biz_grassland;逻辑删除 del_flag;无地图与附件接口 |