8 changed files with 604 additions and 3 deletions
@ -0,0 +1,357 @@
|
||||
# 项目信息管理 API 接口文档 |
||||
|
||||
## 基础信息 |
||||
|
||||
- **模块名称**: 项目信息管理 |
||||
- **基础路径**: `/project/info` |
||||
- **权限标识前缀**: `project:info` |
||||
|
||||
--- |
||||
|
||||
## 1. 查询项目信息列表 |
||||
|
||||
### 接口描述 |
||||
分页查询项目信息列表,支持按项目名称、项目负责人模糊查询,以及按安装日期范围查询。 |
||||
|
||||
### 请求信息 |
||||
- **接口路径**: `/project/info/list` |
||||
- **请求方式**: `GET` |
||||
- **权限要求**: `project:info:list` |
||||
|
||||
### 请求参数 |
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 | 示例值 | |
||||
|--------|------|------|------|--------| |
||||
| pageNum | Integer | 否 | 页码,默认1 | 1 | |
||||
| pageSize | Integer | 否 | 每页条数,默认10 | 10 | |
||||
| projectName | String | 否 | 项目名称(模糊查询) | 豪生酒店 | |
||||
| projectManager | String | 否 | 项目负责人(模糊查询) | 张三 | |
||||
| params[beginTime] | String | 否 | 安装日期开始时间(格式:yyyy-MM-dd) | 2025-01-01 | |
||||
| params[endTime] | String | 否 | 安装日期结束时间(格式:yyyy-MM-dd) | 2025-12-31 | |
||||
|
||||
### 请求示例 |
||||
``` |
||||
GET /project/info/list?pageNum=1&pageSize=10&projectName=豪生&projectManager=张¶ms[beginTime]=2025-01-01¶ms[endTime]=2025-12-31 |
||||
``` |
||||
|
||||
### 响应参数 |
||||
|
||||
| 参数名 | 类型 | 说明 | |
||||
|--------|------|------| |
||||
| code | Integer | 状态码(200成功) | |
||||
| msg | String | 返回消息 | |
||||
| total | Long | 总记录数 | |
||||
| rows | Array | 数据列表 | |
||||
|
||||
**rows数组元素结构**: |
||||
|
||||
| 参数名 | 类型 | 说明 | |
||||
|--------|------|------| |
||||
| id | String | 项目ID(UUID) | |
||||
| projectCode | String | 用户项目编码 | |
||||
| projectName | String | 项目名称 | |
||||
| projectAddress | String | 项目地址 | |
||||
| installDate | String | 安装日期(yyyy-MM-dd HH:mm:ss) | |
||||
| acceptanceDate | String | 验收日期(yyyy-MM-dd HH:mm:ss) | |
||||
| onlineDate | String | 上线日期(yyyy-MM-dd HH:mm:ss) | |
||||
| deviceCount | Integer | 设备数量 | |
||||
| onlineDeviceCount | Integer | 在线设备数量 | |
||||
| offlineDeviceCount | Integer | 离线设备数量 | |
||||
| gatewayCount | Integer | 网关数量 | |
||||
| onlineGatewayCount | Integer | 在线网关数量 | |
||||
| offlineGatewayCount | Integer | 离线网关数量 | |
||||
| projectManager | String | 项目负责人 | |
||||
| electricityPrice | BigDecimal | 电单价 | |
||||
| createBy | String | 创建者 | |
||||
| createTime | String | 创建时间 | |
||||
| updateBy | String | 更新者 | |
||||
| updateTime | String | 更新时间 | |
||||
| remark | String | 备注 | |
||||
|
||||
### 响应示例 |
||||
```json |
||||
{ |
||||
"code": 200, |
||||
"msg": "查询成功", |
||||
"total": 2, |
||||
"rows": [ |
||||
{ |
||||
"id": "550e8400-e29b-41d4-a716-446655440000", |
||||
"projectCode": "PROJ2025001", |
||||
"projectName": "梅州豪生酒店节能改造项目", |
||||
"projectAddress": "广东省梅州市梅江区江南街道", |
||||
"installDate": "2025-03-15 10:00:00", |
||||
"acceptanceDate": "2025-06-20 14:30:00", |
||||
"onlineDate": "2025-07-01 09:00:00", |
||||
"deviceCount": 150, |
||||
"onlineDeviceCount": 145, |
||||
"offlineDeviceCount": 5, |
||||
"gatewayCount": 10, |
||||
"onlineGatewayCount": 10, |
||||
"offlineGatewayCount": 0, |
||||
"projectManager": "张三", |
||||
"electricityPrice": 0.85, |
||||
"createBy": "admin", |
||||
"createTime": "2025-03-10 08:30:00", |
||||
"updateBy": "admin", |
||||
"updateTime": "2025-07-01 10:00:00", |
||||
"remark": "一期工程项目" |
||||
} |
||||
] |
||||
} |
||||
``` |
||||
|
||||
--- |
||||
|
||||
## 2. 查询项目详情 |
||||
|
||||
### 接口描述 |
||||
根据项目ID查询单个项目的详细信息。 |
||||
|
||||
### 请求信息 |
||||
- **接口路径**: `/project/info/{id}` |
||||
- **请求方式**: `GET` |
||||
- **权限要求**: `project:info:query` |
||||
|
||||
### 路径参数 |
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 | 示例值 | |
||||
|--------|------|------|------|--------| |
||||
| id | String | 是 | 项目ID(UUID) | 550e8400-e29b-41d4-a716-446655440000 | |
||||
|
||||
### 请求示例 |
||||
``` |
||||
GET /project/info/550e8400-e29b-41d4-a716-446655440000 |
||||
``` |
||||
|
||||
### 响应参数 |
||||
同列表查询的单条记录结构 |
||||
|
||||
### 响应示例 |
||||
```json |
||||
{ |
||||
"code": 200, |
||||
"msg": "操作成功", |
||||
"data": { |
||||
"id": "550e8400-e29b-41d4-a716-446655440000", |
||||
"projectCode": "PROJ2025001", |
||||
"projectName": "梅州豪生酒店节能改造项目", |
||||
"projectAddress": "广东省梅州市梅江区江南街道", |
||||
"installDate": "2025-03-15 10:00:00", |
||||
"acceptanceDate": "2025-06-20 14:30:00", |
||||
"onlineDate": "2025-07-01 09:00:00", |
||||
"deviceCount": 150, |
||||
"onlineDeviceCount": 145, |
||||
"offlineDeviceCount": 5, |
||||
"gatewayCount": 10, |
||||
"onlineGatewayCount": 10, |
||||
"offlineGatewayCount": 0, |
||||
"projectManager": "张三", |
||||
"electricityPrice": 0.85, |
||||
"createBy": "admin", |
||||
"createTime": "2025-03-10 08:30:00", |
||||
"updateBy": "admin", |
||||
"updateTime": "2025-07-01 10:00:00", |
||||
"remark": "一期工程项目" |
||||
} |
||||
} |
||||
``` |
||||
|
||||
--- |
||||
|
||||
## 3. 新增项目信息 |
||||
|
||||
### 接口描述 |
||||
创建新的项目信息记录。 |
||||
|
||||
### 请求信息 |
||||
- **接口路径**: `/project/info` |
||||
- **请求方式**: `POST` |
||||
- **权限要求**: `project:info:add` |
||||
- **Content-Type**: `application/json` |
||||
|
||||
### 请求参数(Body) |
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 | 示例值 | |
||||
|--------|------|------|------|--------| |
||||
| projectCode | String | 是 | 用户项目编码 | PROJ2025002 | |
||||
| projectName | String | 是 | 项目名称 | 某某酒店项目 | |
||||
| projectAddress | String | 否 | 项目地址 | 广东省深圳市南山区 | |
||||
| installDate | String | 否 | 安装日期(yyyy-MM-dd HH:mm:ss) | 2025-08-01 10:00:00 | |
||||
| acceptanceDate | String | 否 | 验收日期(yyyy-MM-dd HH:mm:ss) | 2025-10-01 14:30:00 | |
||||
| onlineDate | String | 否 | 上线日期(yyyy-MM-dd HH:mm:ss) | 2025-10-15 09:00:00 | |
||||
| deviceCount | Integer | 否 | 设备数量,默认0 | 100 | |
||||
| onlineDeviceCount | Integer | 否 | 在线设备数量,默认0 | 95 | |
||||
| offlineDeviceCount | Integer | 否 | 离线设备数量,默认0 | 5 | |
||||
| gatewayCount | Integer | 否 | 网关数量,默认0 | 8 | |
||||
| onlineGatewayCount | Integer | 否 | 在线网关数量,默认0 | 8 | |
||||
| offlineGatewayCount | Integer | 否 | 离线网关数量,默认0 | 0 | |
||||
| projectManager | String | 否 | 项目负责人 | 李四 | |
||||
| electricityPrice | BigDecimal | 否 | 电单价 | 0.75 | |
||||
| remark | String | 否 | 备注 | 二期工程 | |
||||
|
||||
### 请求示例 |
||||
```json |
||||
{ |
||||
"projectCode": "PROJ2025002", |
||||
"projectName": "深圳某某酒店节能改造项目", |
||||
"projectAddress": "广东省深圳市南山区科技园", |
||||
"installDate": "2025-08-01 10:00:00", |
||||
"acceptanceDate": "2025-10-01 14:30:00", |
||||
"onlineDate": "2025-10-15 09:00:00", |
||||
"deviceCount": 100, |
||||
"onlineDeviceCount": 95, |
||||
"offlineDeviceCount": 5, |
||||
"gatewayCount": 8, |
||||
"onlineGatewayCount": 8, |
||||
"offlineGatewayCount": 0, |
||||
"projectManager": "李四", |
||||
"electricityPrice": 0.75, |
||||
"remark": "二期工程" |
||||
} |
||||
``` |
||||
|
||||
### 响应参数 |
||||
|
||||
| 参数名 | 类型 | 说明 | |
||||
|--------|------|------| |
||||
| code | Integer | 状态码(200成功) | |
||||
| msg | String | 返回消息 | |
||||
| data | Object | 返回数据(包含新增记录的ID) | |
||||
|
||||
### 响应示例 |
||||
```json |
||||
{ |
||||
"code": 200, |
||||
"msg": "操作成功", |
||||
"data": { |
||||
"id": "660e8400-e29b-41d4-a716-446655440001" |
||||
} |
||||
} |
||||
``` |
||||
|
||||
--- |
||||
|
||||
## 4. 修改项目信息 |
||||
|
||||
### 接口描述 |
||||
更新已存在的项目信息记录。 |
||||
|
||||
### 请求信息 |
||||
- **接口路径**: `/project/info` |
||||
- **请求方式**: `PUT` |
||||
- **权限要求**: `project:info:edit` |
||||
- **Content-Type**: `application/json` |
||||
|
||||
### 请求参数(Body) |
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 | 示例值 | |
||||
|--------|------|------|------|--------| |
||||
| id | String | 是 | 项目ID(UUID) | 550e8400-e29b-41d4-a716-446655440000 | |
||||
| projectCode | String | 否 | 用户项目编码 | PROJ2025001 | |
||||
| projectName | String | 否 | 项目名称 | 梅州豪生酒店节能改造项目(修改后) | |
||||
| projectAddress | String | 否 | 项目地址 | 广东省梅州市梅江区江南街道(修改后) | |
||||
| installDate | String | 否 | 安装日期 | 2025-03-15 10:00:00 | |
||||
| acceptanceDate | String | 否 | 验收日期 | 2025-06-20 14:30:00 | |
||||
| onlineDate | String | 否 | 上线日期 | 2025-07-01 09:00:00 | |
||||
| deviceCount | Integer | 否 | 设备数量 | 160 | |
||||
| onlineDeviceCount | Integer | 否 | 在线设备数量 | 155 | |
||||
| offlineDeviceCount | Integer | 否 | 离线设备数量 | 5 | |
||||
| gatewayCount | Integer | 否 | 网关数量 | 12 | |
||||
| onlineGatewayCount | Integer | 否 | 在线网关数量 | 12 | |
||||
| offlineGatewayCount | Integer | 否 | 离线网关数量 | 0 | |
||||
| projectManager | String | 否 | 项目负责人 | 王五 | |
||||
| electricityPrice | BigDecimal | 否 | 电单价 | 0.90 | |
||||
| remark | String | 否 | 备注 | 一期工程扩建 | |
||||
|
||||
### 请求示例 |
||||
```json |
||||
{ |
||||
"id": "550e8400-e29b-41d4-a716-446655440000", |
||||
"projectCode": "PROJ2025001", |
||||
"projectName": "梅州豪生酒店节能改造项目(扩建)", |
||||
"projectAddress": "广东省梅州市梅江区江南街道", |
||||
"deviceCount": 160, |
||||
"onlineDeviceCount": 155, |
||||
"offlineDeviceCount": 5, |
||||
"gatewayCount": 12, |
||||
"onlineGatewayCount": 12, |
||||
"offlineGatewayCount": 0, |
||||
"projectManager": "王五", |
||||
"electricityPrice": 0.90, |
||||
"remark": "一期工程扩建" |
||||
} |
||||
``` |
||||
|
||||
### 响应示例 |
||||
```json |
||||
{ |
||||
"code": 200, |
||||
"msg": "操作成功" |
||||
} |
||||
``` |
||||
|
||||
--- |
||||
|
||||
## 5. 删除项目信息 |
||||
|
||||
### 接口描述 |
||||
批量删除项目信息记录。 |
||||
|
||||
### 请求信息 |
||||
- **接口路径**: `/project/info/{ids}` |
||||
- **请求方式**: `DELETE` |
||||
- **权限要求**: `project:info:remove` |
||||
|
||||
### 路径参数 |
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 | 示例值 | |
||||
|--------|------|------|------|--------| |
||||
| ids | String[] | 是 | 项目ID数组(多个ID用逗号分隔) | 550e8400-e29b-41d4-a716-446655440000,660e8400-e29b-41d4-a716-446655440001 | |
||||
|
||||
### 请求示例 |
||||
``` |
||||
DELETE /project/info/550e8400-e29b-41d4-a716-446655440000,660e8400-e29b-41d4-a716-446655440001 |
||||
``` |
||||
|
||||
### 响应示例 |
||||
```json |
||||
{ |
||||
"code": 200, |
||||
"msg": "操作成功" |
||||
} |
||||
``` |
||||
|
||||
--- |
||||
|
||||
## 通用说明 |
||||
|
||||
### 状态码说明 |
||||
|
||||
| 状态码 | 说明 | |
||||
|--------|------| |
||||
| 200 | 操作成功 | |
||||
| 401 | 未授权,需要登录 | |
||||
| 403 | 无权限访问 | |
||||
| 404 | 资源不存在 | |
||||
| 500 | 服务器内部错误 | |
||||
|
||||
### 日期格式 |
||||
所有日期时间字段统一使用格式:`yyyy-MM-dd HH:mm:ss` |
||||
|
||||
### 注意事项 |
||||
1. 所有写操作(新增、修改、删除)都需要相应的权限 |
||||
2. ID由系统自动生成UUID,无需前端传入 |
||||
3. 新增和修改操作会自动记录创建人/更新人和时间 |
||||
4. 列表查询支持分页,默认每页10条 |
||||
5. 查询条件可以组合使用,未传递的条件不参与过滤 |
||||
6. 数值类型字段(设备数量、网关数量等)默认为0 |
||||
7. 电单价保留4位小数精度 |
||||
|
||||
### 权限配置 |
||||
在系统中需要配置以下权限菜单: |
||||
- `project:info:list` - 项目信息查询 |
||||
- `project:info:query` - 项目详情查询 |
||||
- `project:info:add` - 项目新增 |
||||
- `project:info:edit` - 项目修改 |
||||
- `project:info:remove` - 项目删除 |
||||
@ -0,0 +1,28 @@
|
||||
-- 为device_ledger表添加新字段 |
||||
-- 执行日期: 2026-06-11 |
||||
|
||||
-- 添加所属分区ID字段 |
||||
ALTER TABLE device_ledger ADD COLUMN IF NOT EXISTS zone_id VARCHAR(255); |
||||
|
||||
-- 添加安装位置字段 |
||||
ALTER TABLE device_ledger ADD COLUMN IF NOT EXISTS install_location VARCHAR(500); |
||||
|
||||
-- 添加生产日期字段 |
||||
ALTER TABLE device_ledger ADD COLUMN IF NOT EXISTS production_time TIMESTAMP; |
||||
|
||||
-- 添加购置日期字段 |
||||
ALTER TABLE device_ledger ADD COLUMN IF NOT EXISTS purchase_time TIMESTAMP; |
||||
|
||||
-- 添加品牌字段 |
||||
ALTER TABLE device_ledger ADD COLUMN IF NOT EXISTS brand VARCHAR(255); |
||||
|
||||
-- 添加品牌负责人字段 |
||||
ALTER TABLE device_ledger ADD COLUMN IF NOT EXISTS person_in_charge VARCHAR(255); |
||||
|
||||
-- 添加字段注释 |
||||
COMMENT ON COLUMN device_ledger.zone_id IS '所属分区ID'; |
||||
COMMENT ON COLUMN device_ledger.install_location IS '安装位置'; |
||||
COMMENT ON COLUMN device_ledger.production_time IS '生产日期'; |
||||
COMMENT ON COLUMN device_ledger.purchase_time IS '购置日期'; |
||||
COMMENT ON COLUMN device_ledger.brand IS '品牌'; |
||||
COMMENT ON COLUMN device_ledger.person_in_charge IS '品牌负责人'; |
||||
@ -0,0 +1,54 @@
|
||||
-- 创建项目信息表 |
||||
-- 执行日期: 2026-06-11 |
||||
|
||||
CREATE TABLE IF NOT EXISTS project_info ( |
||||
id VARCHAR(36) PRIMARY KEY, |
||||
project_code VARCHAR(100) NOT NULL, |
||||
project_name VARCHAR(255) NOT NULL, |
||||
project_address VARCHAR(500), |
||||
install_date TIMESTAMP, |
||||
acceptance_date TIMESTAMP, |
||||
online_date TIMESTAMP, |
||||
device_count INTEGER DEFAULT 0, |
||||
online_device_count INTEGER DEFAULT 0, |
||||
offline_device_count INTEGER DEFAULT 0, |
||||
gateway_count INTEGER DEFAULT 0, |
||||
online_gateway_count INTEGER DEFAULT 0, |
||||
offline_gateway_count INTEGER DEFAULT 0, |
||||
project_manager VARCHAR(100), |
||||
electricity_price DECIMAL(10, 4), |
||||
create_by VARCHAR(64), |
||||
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
||||
update_by VARCHAR(64), |
||||
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
||||
remark VARCHAR(500) |
||||
); |
||||
|
||||
-- 添加字段注释 |
||||
COMMENT ON TABLE project_info IS '项目信息表'; |
||||
COMMENT ON COLUMN project_info.id IS '主键ID'; |
||||
COMMENT ON COLUMN project_info.project_code IS '用户项目编码'; |
||||
COMMENT ON COLUMN project_info.project_name IS '项目名称'; |
||||
COMMENT ON COLUMN project_info.project_address IS '项目地址'; |
||||
COMMENT ON COLUMN project_info.install_date IS '安装日期'; |
||||
COMMENT ON COLUMN project_info.acceptance_date IS '验收日期'; |
||||
COMMENT ON COLUMN project_info.online_date IS '上线日期'; |
||||
COMMENT ON COLUMN project_info.device_count IS '设备数量'; |
||||
COMMENT ON COLUMN project_info.online_device_count IS '在线设备数量'; |
||||
COMMENT ON COLUMN project_info.offline_device_count IS '离线设备数量'; |
||||
COMMENT ON COLUMN project_info.gateway_count IS '网关数量'; |
||||
COMMENT ON COLUMN project_info.online_gateway_count IS '在线网关数量'; |
||||
COMMENT ON COLUMN project_info.offline_gateway_count IS '离线网关数量'; |
||||
COMMENT ON COLUMN project_info.project_manager IS '项目负责人'; |
||||
COMMENT ON COLUMN project_info.electricity_price IS '电单价'; |
||||
COMMENT ON COLUMN project_info.create_by IS '创建者'; |
||||
COMMENT ON COLUMN project_info.create_time IS '创建时间'; |
||||
COMMENT ON COLUMN project_info.update_by IS '更新者'; |
||||
COMMENT ON COLUMN project_info.update_time IS '更新时间'; |
||||
COMMENT ON COLUMN project_info.remark IS '备注'; |
||||
|
||||
-- 创建索引 |
||||
CREATE INDEX IF NOT EXISTS idx_project_code ON project_info(project_code); |
||||
CREATE INDEX IF NOT EXISTS idx_project_name ON project_info(project_name); |
||||
CREATE INDEX IF NOT EXISTS idx_project_manager ON project_info(project_manager); |
||||
CREATE INDEX IF NOT EXISTS idx_install_date ON project_info(install_date); |
||||
Loading…
Reference in new issue