From cd728738fe92b42869a3b874841e51c348389970 Mon Sep 17 00:00:00 2001 From: TianMaiCheng <746290578@qq.com> Date: Wed, 24 Dec 2025 19:43:39 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E7=BB=99=E5=AE=9D=E6=98=93=E8=BD=AF?= =?UTF-8?q?=E4=BB=B6=E5=A2=9E=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- UI/Controllers/UpgradeController.cs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/UI/Controllers/UpgradeController.cs b/UI/Controllers/UpgradeController.cs index 1ae1950..55a8575 100644 --- a/UI/Controllers/UpgradeController.cs +++ b/UI/Controllers/UpgradeController.cs @@ -497,7 +497,7 @@ namespace UI.Controllers /// 查询设备列表 /// [HttpPost()] - public List QueryDeviceList(int HotelID, int RoomTypeID) + public ActionResult QueryDeviceList(int HotelID, int RoomTypeID) { try { @@ -509,15 +509,14 @@ namespace UI.Controllers ,`DevAddr` ,`Process` FROM `blv_rcu_db`.`tbl_configured_devlist` - where `hoHotelID` ={0} and `RoomTypeID`={1};", HotelID, RoomTypeID); + where `HotelID` ={0} and `RoomTypeID`={1};", HotelID, RoomTypeID); var Data = SqlSugarBase.RcuDb.SqlQueryable(str).ToList(); - return Data; + return Json(new { Status=1,Data=Data},JsonRequestBehavior.AllowGet); } - catch (Exception) + catch (Exception ex) { - + return Json(new { Status = -1, Message = "服务器错误", Detail = ex.Message } ,JsonRequestBehavior.AllowGet); } - return new List(); } From a1c97ea5bc9f86b20c0e8647f0e0d5110c0d5199 Mon Sep 17 00:00:00 2001 From: XuJiacheng Date: Thu, 25 Dec 2025 10:10:29 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 更新日志.md | 46 ++++++++++++++++++---------------------------- 1 file changed, 18 insertions(+), 28 deletions(-) diff --git a/更新日志.md b/更新日志.md index 858d690..2ebdaeb 100644 --- a/更新日志.md +++ b/更新日志.md @@ -31,27 +31,17 @@ { "Status": 1, // 1成功,0失败,-1异常 "Message": "写入成功", // 操作结果描述 - "Count": 3 // 写入记录数量 + "Count": 2 // 成功插入的记录数 } ``` **功能描述**: -该接口用于向数据库表 `tbl_roomvisitlogform` 写入房间设备访问日志,支持批量写入多个设备的信息。 +该接口用于向数据库表 `tbl_roomvisitlogform` 写入房间设备访问日志,支持批量写入多个设备的信息。UpdateDate 由服务器自动生成,格式为 `yyyy-MM-dd HH:mm:ss`。 -**数据库表结构**: -```sql -CREATE TABLE `tbl_roomvisitlogform` ( - `ID` int NOT NULL AUTO_INCREMENT, - `HotelID` varchar(254) DEFAULT NULL COMMENT '酒店id', - `RoomNumber` varchar(254) DEFAULT NULL COMMENT '房号', - `EquipmentStatus` varchar(254) DEFAULT NULL COMMENT '设备状态', - `FaultDescription` varchar(254) DEFAULT NULL COMMENT '故障描述', - `UpdateDate` varchar(254) DEFAULT NULL COMMENT '更新时间', - `DevName` varchar(254) DEFAULT NULL COMMENT '设备名称', - PRIMARY KEY (`ID`), - KEY `idx_hotel_room` (`HotelID`,`RoomNumber`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 -``` +**实现说明 / 变更**: +- 修复说明:修复了 Controller 中原先使用匿名对象列表通过 Ado.ExecuteCommand 插入导致的不稳定/编译隐患,改为使用 SqlSugar 的 `Insertable` 批量插入 POCO(写入到 `tbl_roomvisitlogform`),返回实际插入的行数(Count)。 +- 校验:当 `HotelID` 或 `RoomNumber` 为空,或 `EquipmentList` 为空时,接口返回 `Status=0` 并给出相应错误消息。 +- 时间字段:`UpdateDate` 由服务器生成,客户端无需提供。 **使用示例**: ```javascript @@ -65,22 +55,15 @@ fetch('/Upgrade/WriteRoomVisitLog', { HotelID: '123', RoomNumber: '101', EquipmentList: [ - { - EquipmentStatus: '正常', - DevName: '灯光设备' - }, - { - EquipmentStatus: '故障', - FaultDescription: '无法正常开关', - DevName: '空调设备' - } + { EquipmentStatus: '正常', DevName: '灯光设备' }, + { EquipmentStatus: '故障', FaultDescription: '无法正常开关', DevName: '空调设备' } ] }) }) .then(response => response.json()) .then(data => { console.log(data); - // 输出:{"Status":1,"Message":"写入成功","Count":2} + // 输出示例:{"Status":1,"Message":"写入成功","Count":2} }); ``` @@ -88,7 +71,8 @@ fetch('/Upgrade/WriteRoomVisitLog', { 系统开发团队 **备注**: -该接口用于记录房间设备的访问和状态信息,方便后续查询和分析。 +- 本次更新修复了导致编译或插入异常的实现方式,现已使用稳定的批量插入方案。 +- `Count` 字段表示成功写入数据库的行数。 #### 2. 房间设备访问日志查询接口 @@ -135,7 +119,13 @@ fetch('/Upgrade/WriteRoomVisitLog', { ``` **功能描述**: -该接口用于查询房间设备访问日志,根据酒店ID、房号和时间范围进行筛选。如果开始时间和结束时间为空,则查询该房间的所有记录。 +该接口用于查询房间设备访问日志,根据酒店ID、房号和时间范围进行筛选。若 `StartTime`/`EndTime` 未提供,则返回该房间全部记录;若提供则按时间过滤并按 `UpdateDate` 降序返回。 + +**实现说明 / 变更**: +- 修复说明:解决了原实现中使用匿名类型在不同条件下重新赋值导致的编译错误(CS0029),改为使用可变参数集合并对时间参数做格式校验。 +- 时间参数行为: + - `StartTime` / `EndTime` 必须为 `yyyy-MM-dd HH:mm:ss` 格式;格式错误时接口返回 `Status=0` 并带提示信息(例如:`StartTime 格式错误,应为 yyyy-MM-dd HH:mm:ss`)。 + - 支持单边过滤:仅传 `StartTime` 表示 `UpdateDate >= StartTime`;仅传 `EndTime` 表示 `UpdateDate <= EndTime`;同时传则表示 `StartTime <= UpdateDate <= EndTime`。 **使用示例**: ```javascript From 8371543cf7e503a79729eecc0eeb28cd44c40c51 Mon Sep 17 00:00:00 2001 From: TianMaiCheng <746290578@qq.com> Date: Thu, 25 Dec 2025 13:47:07 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=9C=89=E9=87=8D=E5=A4=8D=E4=BA=86,?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=87=8D=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- UI/Controllers/UpgradeController.cs | 64 ++++++++++++++--------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/UI/Controllers/UpgradeController.cs b/UI/Controllers/UpgradeController.cs index 9a0bc7e..deb092a 100644 --- a/UI/Controllers/UpgradeController.cs +++ b/UI/Controllers/UpgradeController.cs @@ -526,42 +526,42 @@ namespace UI.Controllers /// /// /// - [HttpPost] - public async Task SetRCUService(RCUCurtainRequest requestData) - { - using (var client = new HttpClient()) - { - // 1. 序列化请求对象为JSON - string jsonString = JsonConvert.SerializeObject(requestData); + //[HttpPost] + //public async Task SetRCUService(RCUCurtainRequest requestData) + //{ + // using (var client = new HttpClient()) + // { + // // 1. 序列化请求对象为JSON + // string jsonString = JsonConvert.SerializeObject(requestData); - // 2. 正确编码JSON字符串 - string encodedJson = Uri.EscapeDataString(jsonString); + // // 2. 正确编码JSON字符串 + // string encodedJson = Uri.EscapeDataString(jsonString); - // 3. 构建完整的GET请求URL - string apiUrl = $"{baseUrl}SetRCUService?jsonData={encodedJson}"; + // // 3. 构建完整的GET请求URL + // string apiUrl = $"{baseUrl}SetRCUService?jsonData={encodedJson}"; - try - { - // 4. 发送GET请求 - var response = await client.GetAsync(apiUrl); + // try + // { + // // 4. 发送GET请求 + // var response = await client.GetAsync(apiUrl); - // 5. 处理响应 - if (response.IsSuccessStatusCode) - { - return await response.Content.ReadAsStringAsync(); - } - else - { - var errorContent = await response.Content.ReadAsStringAsync(); - throw new Exception($"服务信息控制失败: HTTP {response.StatusCode} - {errorContent}"); - } - } - catch (Exception ex) - { - throw new Exception($"请求发送失败: {ex.Message}"); - } - } - } + // // 5. 处理响应 + // if (response.IsSuccessStatusCode) + // { + // return await response.Content.ReadAsStringAsync(); + // } + // else + // { + // var errorContent = await response.Content.ReadAsStringAsync(); + // throw new Exception($"服务信息控制失败: HTTP {response.StatusCode} - {errorContent}"); + // } + // } + // catch (Exception ex) + // { + // throw new Exception($"请求发送失败: {ex.Message}"); + // } + // } + //} /// /// 设备信息类