ECS 设备信息管理 — 需求规格说明书
1. 基础信息
| 属性 |
值 |
| 功能中文名 |
设备信息 |
| 功能简写 |
term |
| 所属模块 |
ruoyi-modules/ruoyi-ecs |
| 主表名 |
t_ecs_term |
| 从表名 |
无 |
| 是否多租户 |
是 |
| 数据库类型 |
kingbase |
| 描述 |
管理电子班牌设备信息,包括设备名称、编码、类型、网络配置、管理账号及所属教室,支持增删改查和导入导出 |
2. 接口清单
2.1 主表接口
| 接口 |
HTTP |
路径(后端) |
前端路径 |
权限字符 |
| 列表 |
GET |
/term/list |
/ecs/term/list |
ecs:term:list |
| 详情 |
GET |
/term/{termId} |
/ecs/term/{termId} |
ecs:term:query |
| 新增 |
POST |
/term/ |
/ecs/term/ |
ecs:term:add |
| 编辑 |
PUT |
/term/ |
/ecs/term/ |
ecs:term:edit |
| 删除 |
DELETE |
/term/{termIds} |
/ecs/term/{termIds} |
ecs:term:remove |
| 导出模板 |
POST |
/term/exportTemplate |
/ecs/term/exportTemplate |
ecs:term:export |
| 导入数据 |
POST |
/term/importData |
/ecs/term/importData |
ecs:term:import |
| 导出数据 |
POST |
/term/export |
/ecs/term/export |
ecs:term:export |
3. 字段属性速查表
| 属性 |
含义 |
可选值 |
说明 |
fieldName |
字段名(驼峰) |
— |
代码变量名 |
columnName |
列名(下划线) |
— |
数据库列名 |
fieldType |
Java类型 |
String/Long/Integer/BigDecimal/Date |
|
inDb |
是否在表中存在 |
true/false |
false=纯前端计算字段 |
inTable |
列表是否显示 |
true/false |
生成表格列 |
inQuery |
是否查询字段 |
true/false |
生成搜索条件 |
queryType |
查询方式 |
eq/like/between |
精确/模糊/范围 |
inForm |
是否表单字段 |
true/false |
生成表单项 |
inAdd |
新增表单显示 |
true/false |
|
inEdit |
编辑表单显示 |
true/false |
|
required |
是否必填 |
true/false |
生成校验注解 |
dictType |
字典类型 |
字典标识 |
有值=字典下拉,否则普通输入 |
relation |
关联选择配置 |
对象 |
有值=弹出选择框 |
component |
前端组件类型 |
input/select/inputNumber/datetime/textarea |
默认根据类型推断 |
width |
表格列宽 |
数字(px) |
默认auto |
sort |
排序 |
数字 |
越小越靠前 |
excelExport |
Excel导出 |
true/false |
默认true |
lockRule |
操作锁定规则 |
对象 |
有值=按此字段值控制行级操作权限 |
4. 字段清单
4.1 主表 t_ecs_term
fields:
# ---------- 主键 ----------
- fieldName: termId
columnName: term_id
fieldType: Long
inDb: true
inTable: false
inForm: false
remark: 设备Id
# ---------- 业务字段 ----------
- fieldName: termName
columnName: term_name
fieldType: String
inDb: true
inTable: true
inQuery: true
queryType: like
inForm: true
inAdd: true
inEdit: true
required: true
component: input
width: 150
sort: 1
excelExport: true
remark: 设备名称
- fieldName: termNumb
columnName: term_numb
fieldType: String
inDb: true
inTable: true
inQuery: true
queryType: like
inForm: true
inAdd: true
inEdit: true
required: true
component: input
width: 150
sort: 2
excelExport: true
remark: 设备编码
- fieldName: termType
columnName: term_type
fieldType: Integer
inDb: true
inTable: true
inQuery: true
queryType: eq
inForm: true
inAdd: true
inEdit: true
required: true
dictType: term_type
component: select
width: 100
sort: 3
excelExport: true
remark: 设备类型
- fieldName: termIP
columnName: term_ip
fieldType: String
inDb: true
inTable: true
inQuery: false
inForm: true
inAdd: true
inEdit: true
required: false
component: input
width: 140
sort: 4
excelExport: true
remark: 设备IP
- fieldName: termMac
columnName: term_mac
fieldType: String
inDb: true
inTable: true
inQuery: false
inForm: true
inAdd: true
inEdit: true
required: false
component: input
width: 150
sort: 5
excelExport: true
remark: MAC地址
- fieldName: termPort
columnName: term_port
fieldType: Integer
inDb: true
inTable: false
inQuery: false
inForm: true
inAdd: true
inEdit: true
required: false
component: inputNumber
sort: 6
excelExport: true
remark: 设备端口
- fieldName: termBrand
columnName: term_brand
fieldType: Integer
inDb: true
inTable: false
inQuery: false
inForm: true
inAdd: true
inEdit: true
required: false
dictType: term_brand
component: select
sort: 7
excelExport: true
remark: 设备品牌
- fieldName: adminName
columnName: admin_name
fieldType: String
inDb: true
inTable: false
inQuery: false
inForm: true
inAdd: true
inEdit: true
required: false
component: input
sort: 8
excelExport: true
remark: 管理账号
- fieldName: adminPwd
columnName: admin_pwd
fieldType: String
inDb: true
inTable: false
inQuery: false
inForm: true
inAdd: true
inEdit: true
required: false
component: input
excelExport: false
sort: 9
remark: 管理密码
- fieldName: serverIp
columnName: server_ip
fieldType: String
inDb: true
inTable: true
inQuery: false
inForm: true
inAdd: true
inEdit: true
required: false
component: input
width: 140
sort: 10
excelExport: true
remark: 服务器IP
- fieldName: serverPort
columnName: server_port
fieldType: Integer
inDb: true
inTable: true
inQuery: false
inForm: true
inAdd: true
inEdit: true
required: false
component: inputNumber
width: 100
sort: 11
excelExport: true
remark: 服务器端口
# ---------- 教室关联(冗余存储名称) ----------
- fieldName: roomId
columnName: room_id
fieldType: Long
inDb: true
inTable: false
inQuery: false
inForm: true
inAdd: true
inEdit: true
required: false
relation:
table: t_pt_room
idField: ptRoomId
nameField: roomName
title: 选择教室
path: /backstage/room/selectRoom
component: roomSelect
sort: 12
remark: 教室Id(关联教室表)
- fieldName: roomName
columnName: room_name
fieldType: String
inDb: true
inTable: true
inQuery: true
queryType: like
inForm: false
inAdd: false
inEdit: false
width: 150
sort: 13
excelExport: true
remark: 教室名称(冗余存储,选择教室时自动回填)
# ---------- 公共字段 ----------
# 通用字段定义(无需在字段清单中重复写,建表时自动追加):
# | 字段 | Java类型 | 说明 |
# | ------------- | --------------- | ------------------ |
# | del_flag | Integer | 逻辑删除:0-未删除,1-已删除 |
# | create_dept | Long | 创建部门 |
# | create_by | Long | 创建者 |
# | create_time | Date | 创建时间 |
# | update_by | Long | 最后修改者 |
# | update_time | Date | 最后修改时间 |
# | tenant_id | Long | 租户ID(多租户表包含) |
- fieldName: createTime
columnName: create_time
fieldType: Date
inDb: true
inTable: true
inQuery: false
inForm: false
component: datetime
width: 180
sort: 99
excelExport: true
5. VO 结构
5.1 主表列表 VO
EcsTermVo:
- termId
- termName
- termNumb
- termType
- termIP
- termMac
- serverIp
- serverPort
- roomId
- roomName
- createTime
6. 特殊需求
special:
excelImport: true
excelExport: true
importRules:
- fieldName: termName
required: true
- fieldName: termNumb
required: true
unique: true
- fieldName: termType
required: true
dubboExpose: false
7. 字典项
| 字典类型 |
枚举值 |
说明 |
term_type |
0=电子班牌, 1=考勤机, 2=门禁机 |
设备类型 |
term_brand |
0=希沃, 1=鸿合, 2=其他 |
设备品牌 |
注意:字典值仅为示例,实际值由业务方确定。
8. 建表语句
8.1 主表 t_ecs_term
-- 人大金仓(KingbaseES)
CREATE TABLE "dbo"."t_ecs_term" (
"term_id" bigint NOT NULL,
"term_name" character varying(255 char) NOT NULL DEFAULT ''::varchar,
"term_numb" character varying(255 char) NOT NULL DEFAULT ''::varchar,
"term_type" character varying(16 char) NOT NULL DEFAULT '0'::varchar,
"term_ip" character varying(255 char) DEFAULT ''::varchar,
"term_mac" character varying(255 char) DEFAULT ''::varchar,
"term_port" integer,
"term_brand" character varying(16 char) NOT NULL DEFAULT 'dt'::varchar,
"admin_name" character varying(255 char) DEFAULT ''::varchar,
"admin_pwd" character varying(255 char) DEFAULT ''::varchar,
"server_ip" character varying(255 char) DEFAULT ''::varchar,
"server_port" integer,
"room_id" bigint,
"room_name" character varying(255 char) DEFAULT ''::varchar,
"tenant_id" character varying(20 char) NOT NULL DEFAULT ''::varchar,
"del_flag" character(1 char) NOT NULL DEFAULT '0'::bpchar,
"create_dept" bigint,
"create_by" bigint,
"create_time" datetime,
"update_by" bigint,
"update_time" datetime,
CONSTRAINT "t_ecs_term_pkey" PRIMARY KEY ("term_id")
);
-- 表注释
ALTER TABLE "dbo"."t_ecs_term" COMMENT '设备信息表';
-- 列注释
ALTER TABLE "dbo"."t_ecs_term" MODIFY "term_id" COMMENT '设备Id';
ALTER TABLE "dbo"."t_ecs_term" MODIFY "term_name" COMMENT '设备名称';
ALTER TABLE "dbo"."t_ecs_term" MODIFY "term_numb" COMMENT '设备编码';
ALTER TABLE "dbo"."t_ecs_term" MODIFY "term_type" COMMENT '设备类型:0-电子班牌,1-考勤机,2-门禁机';
ALTER TABLE "dbo"."t_ecs_term" MODIFY "term_ip" COMMENT '设备IP';
ALTER TABLE "dbo"."t_ecs_term" MODIFY "term_mac" COMMENT 'MAC地址';
ALTER TABLE "dbo"."t_ecs_term" MODIFY "term_port" COMMENT '设备端口';
ALTER TABLE "dbo"."t_ecs_term" MODIFY "term_brand" COMMENT '设备品牌';
ALTER TABLE "dbo"."t_ecs_term" MODIFY "admin_name" COMMENT '管理账号';
ALTER TABLE "dbo"."t_ecs_term" MODIFY "admin_pwd" COMMENT '管理密码';
ALTER TABLE "dbo"."t_ecs_term" MODIFY "server_ip" COMMENT '服务器IP';
ALTER TABLE "dbo"."t_ecs_term" MODIFY "server_port" COMMENT '服务器端口';
ALTER TABLE "dbo"."t_ecs_term" MODIFY "room_id" COMMENT '教室Id';
ALTER TABLE "dbo"."t_ecs_term" MODIFY "room_name" COMMENT '教室名称';
ALTER TABLE "dbo"."t_ecs_term" MODIFY "tenant_id" COMMENT '租户编号';
ALTER TABLE "dbo"."t_ecs_term" MODIFY "del_flag" COMMENT '删除标志(0-未删除 1-已删除)';
ALTER TABLE "dbo"."t_ecs_term" MODIFY "create_dept" COMMENT '创建部门';
ALTER TABLE "dbo"."t_ecs_term" MODIFY "create_by" COMMENT '创建者';
ALTER TABLE "dbo"."t_ecs_term" MODIFY "create_time" COMMENT '创建时间';
ALTER TABLE "dbo"."t_ecs_term" MODIFY "update_by" COMMENT '更新者';
ALTER TABLE "dbo"."t_ecs_term" MODIFY "update_time" COMMENT '更新时间';
9. 备注
- 冗余存储教室名称:
roomName 冗余存储教室名称,选择教室时自动回填,支持按教室名称模糊查询,避免关联查询性能问题。当教室信息变更时需考虑是否同步更新历史记录。
- 管理密码:
adminPwd 采用普通文本存储,不在列表中显示,不参与 Excel 导出,仅在表单中可编辑。
- 设备编码唯一性:
termNumb 在导入时做唯一性校验,确保设备编码不重复。
- 教室关联选择:
roomId 通过关联选择器从 t_pt_room 表选择,选择后自动回填 roomName。
- 关联实体说明:
- 教室 → 关联
t_pt_room 表(通过 backstage 模块的 RemotePtRoomService)