using HslCommunication.WebSocket; using Newtonsoft.Json; using SqlSugar; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseRepository; using WIDESEAWCS_Core.BaseServices; using WIDESEAWCS_DTO.Telescopic; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; namespace WIDESEAWCS_TelescopicService { public class AlarmResetHsyServer : ServiceBase>, IAlarmResetHsyServer { public IRepository Repository => BaseDal; private readonly WebSocketServer _webSocketServer; private readonly IRepository _user; public AlarmResetHsyServer(IRepository BaseDal, WebSocketServer webSocketServer, IRepository user) : base(BaseDal) { _webSocketServer = webSocketServer; _user = user; } /// /// 添加报错数据 /// /// /// public WebResponseContent AddAlarmHsy(string alarmContent, bool resetStatus) { var alarm = new Dt_AlarmResetHsy { AlarmContent= alarmContent, ResetStatus= resetStatus, AlarmTime=DateTime.Now, }; BaseDal.AddData(alarm); return new WebResponseContent { Status=true, Data = alarm }; } public WebResponseContent GetWebSocketInfo() { try { // 查询并排序,确保 ResetStatus 为 true 的记录排在前面,并按 CreateDate 降序排列 // var query = Db.Queryable() // .OrderBy(x => new { ResetStatus = SqlFunc.IsNull(x.ResetStatus, false), x.CreateDate }, OrderByType.Desc); // 按 ResetStatus 为 true 排在前,并按 CreateDate 降序 var query = BaseDal.QueryData().OrderByDescending(x => x.ResetStatus). ThenByDescending(x => x.CreateDate); // 再按 CreateDate 降序; // 如果需要根据其他字段进行过滤或模糊查询,可以在此添加 return new WebResponseContent { Status = true, Message = "查询成功", Data = query }; } catch (Exception ex) { // 异常捕获和错误返回 return new WebResponseContent { Status = false, Message = "错误:" + ex.Message }; } } /// /// 将表中部门id为状态全部为true的改为false /// /// /// public WebResponseContent BecomeTrue(string account) { //找到登入人的deptid var loginer = _user.QueryFirst(x => x.UserName == account); var query = BaseDal.QueryData(x => x.ResetStatus == true && x.Deptid==loginer.Dept_Id ).ToList(); // 如果没有找到符合条件的数据 if (query.Count == 0) { return new WebResponseContent { Status = false, Message = "没有要复位数据" }; } foreach (var item in query) { item.ResetStatus = false; item.ResetTime = DateTime.Now; } // 执行批量更新操作 var updateResult = BaseDal.UpdateData(query); // 检查更新是否成功 if (updateResult) { return new WebResponseContent { Status = true, Message = "数据已成功复位", Data = query }; } else { return new WebResponseContent { Status = false, Message = "复位操作失败" }; } } public WebResponseContent UpstreamInspectionRoad(UpstreamIDTO upstreamIDTO) { try { // 将 upstreamIDTO 转成 JSON 字符串 var json = JsonConvert.SerializeObject(upstreamIDTO); // 推送到所有 WebSocket 客户端 _webSocketServer.PublishAllClientPayload(json); return new WebResponseContent { Status = true, Message = "推送成功" }; } catch (Exception ex) { // 出现异常,返回失败 return new WebResponseContent { Status = false, Message = "推送失败:" + ex.Message }; } } } }