diff --git a/ZR.Admin.WebApi/appsettings.development.json b/ZR.Admin.WebApi/appsettings.development.json index 220ef604..1e6aba5c 100644 --- a/ZR.Admin.WebApi/appsettings.development.json +++ b/ZR.Admin.WebApi/appsettings.development.json @@ -16,8 +16,8 @@ //外网连接服务器 // "Conn": "Data Source=47.116.122.230;Port=3307;User ID=root;Password=123456;Initial Catalog=ZrAdmin;", //"Conn": "Data Source=139.224.232.211;User ID=root;Password=doantech123;Initial Catalog=ZrAdmin;Port=3308;AllowLoadLocalInfile=true", - "Conn": "Data Source=192.168.1.48;User ID=root;Password=123456;Initial Catalog=ZrAdmin;Port=3306;AllowLoadLocalInfile=true", - //"Conn": "Data Source=127.0.0.1;User ID=root;Password=123456;Initial Catalog=ZrAdmin;Port=3306;AllowLoadLocalInfile=true", + //"Conn": "Data Source=192.168.1.48;User ID=root;Password=123456;Initial Catalog=ZrAdmin;Port=3306;AllowLoadLocalInfile=true", + "Conn": "Data Source=127.0.0.1;User ID=root;Password=123456;Initial Catalog=ZrAdmin;Port=3306;AllowLoadLocalInfile=true", // 干巷服务器 // "Conn": "Data Source=192.168.60.251;Port=3306;User ID=root;Password=123456;Initial Catalog=ZrAdmin;", //内网连接服务器 diff --git a/ZR.Service/Utils/MyAlarmLigth/TiaoQiFangLight.cs b/ZR.Service/Utils/MyAlarmLigth/TiaoQiFangLight.cs index cead249a..35716104 100644 --- a/ZR.Service/Utils/MyAlarmLigth/TiaoQiFangLight.cs +++ b/ZR.Service/Utils/MyAlarmLigth/TiaoQiFangLight.cs @@ -130,17 +130,23 @@ namespace ZR.Service.Utils.MyAlarmLigth break; case 2: _logger?.LogInformation($"✅ X{portNumber}触发:红灯闪烁"); - _modbusClient.WriteSingleCoil(lightUnitId, 1, false); + _modbusClient.WriteSingleCoil(lightUnitId, 1, true); break; case 3: _logger?.LogInformation($"✅ X{portNumber}触发:红灯闪烁"); + _modbusClient.WriteSingleCoil(lightUnitId, 2, true); break; case 4: _logger?.LogInformation($"✅ X{portNumber}触发:红灯闪烁"); + _modbusClient.WriteSingleCoil(lightUnitId, 3, true); break; // X5 → 绿灯 case 5: _logger?.LogInformation($"✅ X{portNumber}触发:绿灯常亮"); + _modbusClient.WriteSingleCoil(lightUnitId, 0, false); + _modbusClient.WriteSingleCoil(lightUnitId, 1, false); + _modbusClient.WriteSingleCoil(lightUnitId, 2, false); + _modbusClient.WriteSingleCoil(lightUnitId, 3, false); break; } } diff --git a/ZR.Service/mes/andon/AndonAlarmRecordService.cs b/ZR.Service/mes/andon/AndonAlarmRecordService.cs index 3b086aff..daff790b 100644 --- a/ZR.Service/mes/andon/AndonAlarmRecordService.cs +++ b/ZR.Service/mes/andon/AndonAlarmRecordService.cs @@ -215,23 +215,44 @@ namespace ZR.Service.mes.andon DateTime startTime = now.AddDays(-7).Date; // 方法1:使用 ToDate 函数(确保按日期分组) + //var dbStats = Queryable() + // .Where(a => a.CreatedTime >= startTime && a.CreatedTime <= endTime) + // .Where(a => a.Area1 != null && a.Area1 != "") + // .GroupBy(a => a.Area1) + // .Select(a => new + // { + // Area1 = a.Area1, + // Hours = SqlFunc.Round( + // SqlFunc.IIF( + // a.Status == "已处理", + // a.DurationTime / 60.0, // 已处理:分钟转小时 + // SqlFunc.DateDiff(DateType.Minute, SqlFunc.ToDate(a.CreatedTime), DateTime.Now) / 60.0 // 未处理:计算等待时间转小时 + // ), 2), + // AlarmCount = SqlFunc.AggregateCount(1) + // }) + // .OrderBy(a => a.Area1) + // .ToList(); + var dbStats = Queryable() - .Where(a => a.CreatedTime >= startTime && a.CreatedTime <= endTime) - .Where(a => a.Area1 != null && a.Area1 != "") - .GroupBy(a => a.Area1) - .Select(a => new - { - Area1 = a.Area1, - Hours = SqlFunc.Round( - SqlFunc.IIF( - a.Status == "已处理", - a.DurationTime / 60.0, // 已处理:分钟转小时 - SqlFunc.DateDiff(DateType.Minute, SqlFunc.ToDate(a.CreatedTime), DateTime.Now) / 60.0 // 未处理:计算等待时间转小时 - ), 2), - AlarmCount = SqlFunc.AggregateCount(1) - }) - .OrderBy(a => a.Area1) - .ToList(); + .Where(a => a.CreatedTime >= startTime && a.CreatedTime <= endTime) + .Where(a => !string.IsNullOrEmpty(a.Area1)) + .GroupBy(a => a.Area1) + .Select(a => new + { + Area1 = a.Area1, + Hours = SqlFunc.Round( + SqlFunc.IIF( + // 给status加聚合函数:取该区域任意一条的status + SqlFunc.AggregateMax(a.Status) == "已处理", + // 给durationTime加聚合函数:取该区域总和/平均值 + SqlFunc.AggregateSum(a.DurationTime) / 60.0, + // 给CreatedTime加聚合函数:取该区域最早/最晚的创建时间 + SqlFunc.DateDiff(DateType.Minute, SqlFunc.AggregateMax(SqlFunc.ToDate(a.CreatedTime)), DateTime.Now) / 60.0 + ), 2), + AlarmCount = SqlFunc.AggregateCount(1) + }) + .OrderBy(a => a.Area1) + .ToList(); var chartData = new {