# 项目信息管理 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` - 项目删除