瀏覽代碼

报警主题更改

yandaniu 8 小時之前
父節點
當前提交
8397bf52ba
共有 100 個文件被更改,包括 1503 次插入36 次删除
  1. 二進制
      .vs/Ropin.Inspection.Api/DesignTimeBuild/.dtbcache.v2
  2. 二進制
      .vs/Ropin.Inspection.Api/FileContentIndex/26170099-e39e-407a-a29f-7fa12d03c858.vsidx
  3. 二進制
      .vs/Ropin.Inspection.Api/FileContentIndex/37c6381c-f375-4d7b-8e19-e78dcbf76b0f.vsidx
  4. 二進制
      .vs/Ropin.Inspection.Api/FileContentIndex/668cd2c1-991c-4a0e-8f40-f9f7af1481b9.vsidx
  5. 二進制
      .vs/Ropin.Inspection.Api/FileContentIndex/7f02d622-7ee6-4c49-9019-84ec6e560b51.vsidx
  6. 二進制
      .vs/Ropin.Inspection.Api/FileContentIndex/8746401a-d6c0-4645-b14e-5f76724f0e5e.vsidx
  7. 二進制
      .vs/Ropin.Inspection.Api/FileContentIndex/8753b473-df6c-49cf-a2d5-47cbd5317da3.vsidx
  8. 二進制
      .vs/Ropin.Inspection.Api/FileContentIndex/88bac69f-4d1e-495b-b426-862f258ad58d.vsidx
  9. 二進制
      .vs/Ropin.Inspection.Api/FileContentIndex/9eaf3ec7-a104-4f9e-bc1e-3ed7760dc957.vsidx
  10. 二進制
      .vs/Ropin.Inspection.Api/FileContentIndex/a68678a8-2980-42ab-aa28-4e73cca27cc0.vsidx
  11. 二進制
      .vs/Ropin.Inspection.Api/FileContentIndex/a6e3fb3a-0846-4f76-a05a-c76932471270.vsidx
  12. 二進制
      .vs/Ropin.Inspection.Api/FileContentIndex/bd7015a5-9762-4f6e-8105-68dd54ae8250.vsidx
  13. 二進制
      .vs/Ropin.Inspection.Api/FileContentIndex/c3830868-4704-4c22-a21b-68c4d67bf226.vsidx
  14. 二進制
      .vs/Ropin.Inspection.Api/FileContentIndex/c4ecf730-9d35-4ee3-ac66-48b1b4e4c28c.vsidx
  15. 二進制
      .vs/Ropin.Inspection.Api/FileContentIndex/c869e055-20c0-4f80-b4bf-c6fa41daf66c.vsidx
  16. 二進制
      .vs/Ropin.Inspection.Api/FileContentIndex/e3afdc7f-0a34-43a7-806b-fca9c117d266.vsidx
  17. 二進制
      .vs/Ropin.Inspection.Api/FileContentIndex/e73954b0-4b25-40ff-8be0-cef450ff68c1.vsidx
  18. 二進制
      .vs/Ropin.Inspection.Api/v17/.suo
  19. 二進制
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Core.Extensions.dll
  20. 二進制
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Core.Extensions.pdb
  21. 二進制
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Common.dll
  22. 二進制
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Common.pdb
  23. 二進制
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Model.dll
  24. 二進制
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Model.pdb
  25. 二進制
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Repository.dll
  26. 二進制
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Repository.pdb
  27. 二進制
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Service.dll
  28. 二進制
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Service.pdb
  29. 二進制
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Tasks.dll
  30. 二進制
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Tasks.pdb
  31. 二進制
      Ropin.Core.Extensions/obj/Debug/net5.0/Ropin.Core.Extensions.csproj.AssemblyReference.cache
  32. 二進制
      Ropin.Core.Extensions/obj/Debug/net5.0/Ropin.Core.Extensions.dll
  33. 二進制
      Ropin.Core.Extensions/obj/Debug/net5.0/Ropin.Core.Extensions.pdb
  34. 二進制
      Ropin.Environmentally.AlarmService/obj/Debug/net5.0/Ropin.Environmentally.AlarmService.csproj.AssemblyReference.cache
  35. 二進制
      Ropin.Environmentally.DcsService/obj/Debug/net5.0/Ropin.Environmentally.DcsService.csproj.AssemblyReference.cache
  36. 二進制
      Ropin.Environmentally.LedgeService1/obj/Debug/net5.0/Ropin.Environmentally.LedgeService1.csproj.AssemblyReference.cache
  37. 二進制
      Ropin.Environmentally.VideoService/obj/Debug/net5.0/Ropin.Environmentally.VideoService.csproj.AssemblyReference.cache
  38. 1 1
      Ropin.Environmentally.WebScada/Program.cs
  39. 25 25
      Ropin.Environmentally.WebScada/Work/HostedService.cs
  40. 二進制
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Environmentally.WebScada.Views.dll
  41. 二進制
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Environmentally.WebScada.Views.pdb
  42. 二進制
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Environmentally.WebScada.dll
  43. 二進制
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Environmentally.WebScada.pdb
  44. 二進制
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Common.dll
  45. 二進制
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Common.pdb
  46. 35 0
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/logs/2025/202507/20250724.txt
  47. 0 0
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/logs/2025/202507/20250724_error.txt
  48. 二進制
      Ropin.Environmentally.WebScada/obj/Debug/net5.0/Ropin.Environmentally.WebScada.Views.dll
  49. 二進制
      Ropin.Environmentally.WebScada/obj/Debug/net5.0/Ropin.Environmentally.WebScada.Views.pdb
  50. 二進制
      Ropin.Environmentally.WebScada/obj/Debug/net5.0/Ropin.Environmentally.WebScada.csproj.AssemblyReference.cache
  51. 二進制
      Ropin.Environmentally.WebScada/obj/Debug/net5.0/Ropin.Environmentally.WebScada.dll
  52. 二進制
      Ropin.Environmentally.WebScada/obj/Debug/net5.0/Ropin.Environmentally.WebScada.pdb
  53. 二進制
      Ropin.Environmentally.WebScada/obj/Debug/net5.0/ref/Ropin.Environmentally.WebScada.dll
  54. 二進制
      Ropin.Environmentally.WebScada/obj/Debug/net5.0/refint/Ropin.Environmentally.WebScada.dll
  55. 二進制
      Ropin.IOT.MqttService/obj/Debug/net5.0/Ropin.IOT.MqttService.csproj.AssemblyReference.cache
  56. 二進制
      Ropin.IOT.MsgService/obj/Debug/net5.0/Ropin.IOT.MsgService.csproj.AssemblyReference.cache
  57. 4 2
      Ropin.Inspection.Api/Controllers/Base/AIController.cs
  58. 64 1
      Ropin.Inspection.Api/Controllers/LGS/LargeScreenController.cs
  59. 1057 0
      Ropin.Inspection.Api/Controllers/LGS/ScreenInterfaceDataController.cs
  60. 1 1
      Ropin.Inspection.Api/Controllers/VMC/VmcCameraController.cs
  61. 二進制
      Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Core.Extensions.dll
  62. 二進制
      Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Core.Extensions.pdb
  63. 二進制
      Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Api.dll
  64. 二進制
      Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Api.pdb
  65. 113 1
      Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Api.xml
  66. 二進制
      Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Common.dll
  67. 二進制
      Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Common.pdb
  68. 二進制
      Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Model.dll
  69. 二進制
      Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Model.pdb
  70. 二進制
      Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Repository.dll
  71. 二進制
      Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Repository.pdb
  72. 二進制
      Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Service.dll
  73. 二進制
      Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Service.pdb
  74. 二進制
      Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Tasks.dll
  75. 二進制
      Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Tasks.pdb
  76. 2 1
      Ropin.Inspection.Api/bin/Debug/net5.0/appsettings.Development.json
  77. 0 0
      Ropin.Inspection.Api/bin/Debug/net5.0/logs/2025/202508/20250805.txt
  78. 0 0
      Ropin.Inspection.Api/bin/Debug/net5.0/logs/2025/202508/20250805_error.txt
  79. 二進制
      Ropin.Inspection.Api/obj/Debug/net5.0/Ropin.Inspection.Api.csproj.AssemblyReference.cache
  80. 1 1
      Ropin.Inspection.Api/obj/Debug/net5.0/Ropin.Inspection.Api.csproj.CoreCompileInputs.cache
  81. 二進制
      Ropin.Inspection.Api/obj/Debug/net5.0/Ropin.Inspection.Api.dll
  82. 二進制
      Ropin.Inspection.Api/obj/Debug/net5.0/Ropin.Inspection.Api.pdb
  83. 113 1
      Ropin.Inspection.Api/obj/Debug/net5.0/Ropin.Inspection.Api.xml
  84. 二進制
      Ropin.Inspection.Api/obj/Debug/net5.0/ref/Ropin.Inspection.Api.dll
  85. 二進制
      Ropin.Inspection.Api/obj/Debug/net5.0/refint/Ropin.Inspection.Api.dll
  86. 2 2
      Ropin.Inspection.Common/Helper/FanyiHelper.cs
  87. 二進制
      Ropin.Inspection.Common/bin/Debug/net5.0/Ropin.Inspection.Common.dll
  88. 二進制
      Ropin.Inspection.Common/bin/Debug/net5.0/Ropin.Inspection.Common.pdb
  89. 二進制
      Ropin.Inspection.Common/obj/Debug/net5.0/Ropin.Inspection.Common.dll
  90. 二進制
      Ropin.Inspection.Common/obj/Debug/net5.0/Ropin.Inspection.Common.pdb
  91. 20 0
      Ropin.Inspection.Model/SearchModel/LGS/LargeScreenSearch.cs
  92. 65 0
      Ropin.Inspection.Model/ViewModel/LGS/LargeScreenViewModel.cs
  93. 二進制
      Ropin.Inspection.Model/bin/Debug/net5.0/Ropin.Inspection.Common.dll
  94. 二進制
      Ropin.Inspection.Model/bin/Debug/net5.0/Ropin.Inspection.Common.pdb
  95. 二進制
      Ropin.Inspection.Model/bin/Debug/net5.0/Ropin.Inspection.Model.dll
  96. 二進制
      Ropin.Inspection.Model/bin/Debug/net5.0/Ropin.Inspection.Model.pdb
  97. 二進制
      Ropin.Inspection.Model/obj/Debug/net5.0/Ropin.Inspection.Model.csproj.AssemblyReference.cache
  98. 二進制
      Ropin.Inspection.Model/obj/Debug/net5.0/Ropin.Inspection.Model.dll
  99. 二進制
      Ropin.Inspection.Model/obj/Debug/net5.0/Ropin.Inspection.Model.pdb
  100. 二進制
      Ropin.Inspection.Model/obj/Debug/net5.0/ref/Ropin.Inspection.Model.dll

二進制
.vs/Ropin.Inspection.Api/DesignTimeBuild/.dtbcache.v2


二進制
.vs/Ropin.Inspection.Api/FileContentIndex/a8a9d571-46ad-4cd6-9d0d-92393fd6ebd1.vsidx → .vs/Ropin.Inspection.Api/FileContentIndex/26170099-e39e-407a-a29f-7fa12d03c858.vsidx


二進制
.vs/Ropin.Inspection.Api/FileContentIndex/0175442b-3f9d-49d7-aad7-6ec8f3cf4672.vsidx → .vs/Ropin.Inspection.Api/FileContentIndex/37c6381c-f375-4d7b-8e19-e78dcbf76b0f.vsidx


二進制
.vs/Ropin.Inspection.Api/FileContentIndex/668cd2c1-991c-4a0e-8f40-f9f7af1481b9.vsidx


二進制
.vs/Ropin.Inspection.Api/FileContentIndex/7f02d622-7ee6-4c49-9019-84ec6e560b51.vsidx


二進制
.vs/Ropin.Inspection.Api/FileContentIndex/8746401a-d6c0-4645-b14e-5f76724f0e5e.vsidx


二進制
.vs/Ropin.Inspection.Api/FileContentIndex/1a7d36fd-db7d-4700-87ed-38c06d9bd280.vsidx → .vs/Ropin.Inspection.Api/FileContentIndex/8753b473-df6c-49cf-a2d5-47cbd5317da3.vsidx


二進制
.vs/Ropin.Inspection.Api/FileContentIndex/cedc9624-34ca-4cbd-a7db-03dafda08bdc.vsidx → .vs/Ropin.Inspection.Api/FileContentIndex/88bac69f-4d1e-495b-b426-862f258ad58d.vsidx


二進制
.vs/Ropin.Inspection.Api/FileContentIndex/9eaf3ec7-a104-4f9e-bc1e-3ed7760dc957.vsidx


二進制
.vs/Ropin.Inspection.Api/FileContentIndex/a68678a8-2980-42ab-aa28-4e73cca27cc0.vsidx


二進制
.vs/Ropin.Inspection.Api/FileContentIndex/a6e3fb3a-0846-4f76-a05a-c76932471270.vsidx


二進制
.vs/Ropin.Inspection.Api/FileContentIndex/bd7015a5-9762-4f6e-8105-68dd54ae8250.vsidx


二進制
.vs/Ropin.Inspection.Api/FileContentIndex/978d8520-de80-42ea-8185-6ac072f5c957.vsidx → .vs/Ropin.Inspection.Api/FileContentIndex/c3830868-4704-4c22-a21b-68c4d67bf226.vsidx


二進制
.vs/Ropin.Inspection.Api/FileContentIndex/7fd9d7ca-29fb-433f-a200-6660d69d022f.vsidx → .vs/Ropin.Inspection.Api/FileContentIndex/c4ecf730-9d35-4ee3-ac66-48b1b4e4c28c.vsidx


二進制
.vs/Ropin.Inspection.Api/FileContentIndex/bd2922a2-0fe6-4ef5-a960-c03ae5ab0899.vsidx → .vs/Ropin.Inspection.Api/FileContentIndex/c869e055-20c0-4f80-b4bf-c6fa41daf66c.vsidx


二進制
.vs/Ropin.Inspection.Api/FileContentIndex/75e183ba-2d81-4ae2-85f2-8e3c1d71d87b.vsidx → .vs/Ropin.Inspection.Api/FileContentIndex/e3afdc7f-0a34-43a7-806b-fca9c117d266.vsidx


二進制
.vs/Ropin.Inspection.Api/FileContentIndex/41bcfafa-0815-47d9-8794-e2bc49d9c7c1.vsidx → .vs/Ropin.Inspection.Api/FileContentIndex/e73954b0-4b25-40ff-8be0-cef450ff68c1.vsidx


二進制
.vs/Ropin.Inspection.Api/v17/.suo


二進制
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Core.Extensions.dll


二進制
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Core.Extensions.pdb


二進制
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Common.dll


二進制
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Common.pdb


二進制
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Model.dll


二進制
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Model.pdb


二進制
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Repository.dll


二進制
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Repository.pdb


二進制
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Service.dll


二進制
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Service.pdb


二進制
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Tasks.dll


二進制
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Tasks.pdb


二進制
Ropin.Core.Extensions/obj/Debug/net5.0/Ropin.Core.Extensions.csproj.AssemblyReference.cache


二進制
Ropin.Core.Extensions/obj/Debug/net5.0/Ropin.Core.Extensions.dll


二進制
Ropin.Core.Extensions/obj/Debug/net5.0/Ropin.Core.Extensions.pdb


二進制
Ropin.Environmentally.AlarmService/obj/Debug/net5.0/Ropin.Environmentally.AlarmService.csproj.AssemblyReference.cache


二進制
Ropin.Environmentally.DcsService/obj/Debug/net5.0/Ropin.Environmentally.DcsService.csproj.AssemblyReference.cache


二進制
Ropin.Environmentally.LedgeService1/obj/Debug/net5.0/Ropin.Environmentally.LedgeService1.csproj.AssemblyReference.cache


二進制
Ropin.Environmentally.VideoService/obj/Debug/net5.0/Ropin.Environmentally.VideoService.csproj.AssemblyReference.cache


+ 1 - 1
Ropin.Environmentally.WebScada/Program.cs

@@ -23,7 +23,7 @@ namespace Ropin.Environmentally.WebScada
                 .ConfigureWebHostDefaults(webBuilder =>
                 {
                     webBuilder.UseStartup<Startup>();
-                    //webBuilder.UseUrls("http://*:8081").UseStartup<Startup>();
+                    webBuilder.UseUrls("http://*:8081").UseStartup<Startup>();
                 });
     }
 }

+ 25 - 25
Ropin.Environmentally.WebScada/Work/HostedService.cs

@@ -378,31 +378,31 @@ namespace Ropin.Environmentally.WebScada.Work
             #endregion
 
             #region //AI报警同步
-            Task.Run(async () =>
-            {
-                while (true)
-                {
-                    try
-                    {
-                        using (HttpClient httpClient = httpClientFactory.CreateClient())
-                        {
-                            var httpRequestMessage = new HttpRequestMessage
-                            {
-                                Method = HttpMethod.Get,
-                                RequestUri = new Uri(_aPIUrlData.PublicPushMessageAPI)
-                            };
-                            var response = await httpClient.SendAsync(httpRequestMessage);
-                            string responseResult = await response.Content.ReadAsStringAsync();
-                            log.Info($"AI报警数据同步接口返回【{responseResult}】");
-                        }
-                    }
-                    catch (Exception ex)
-                    {
-                        _logger.LogInformation("AI报警同步" + ex.Message);
-                    }
-                    await Task.Delay(120000);//2分钟
-                }
-            });
+            //Task.Run(async () =>
+            //{
+            //    while (true)
+            //    {
+            //        try
+            //        {
+            //            using (HttpClient httpClient = httpClientFactory.CreateClient())
+            //            {
+            //                var httpRequestMessage = new HttpRequestMessage
+            //                {
+            //                    Method = HttpMethod.Get,
+            //                    RequestUri = new Uri(_aPIUrlData.PublicPushMessageAPI)
+            //                };
+            //                var response = await httpClient.SendAsync(httpRequestMessage);
+            //                string responseResult = await response.Content.ReadAsStringAsync();
+            //                log.Info($"AI报警数据同步接口返回【{responseResult}】");
+            //            }
+            //        }
+            //        catch (Exception ex)
+            //        {
+            //            _logger.LogInformation("AI报警同步" + ex.Message);
+            //        }
+            //        await Task.Delay(120000);//2分钟
+            //    }
+            //});
             #endregion
 
             #region 

二進制
Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Environmentally.WebScada.Views.dll


二進制
Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Environmentally.WebScada.Views.pdb


二進制
Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Environmentally.WebScada.dll


二進制
Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Environmentally.WebScada.pdb


二進制
Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Common.dll


二進制
Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Common.pdb


+ 35 - 0
Ropin.Environmentally.WebScada/bin/Debug/net5.0/logs/2025/202507/20250724.txt

@@ -0,0 +1,35 @@
+2025-07-24 13:59:59,530  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [396] - MESSAGE: AI报警数据同步接口返回【{"code":0,"message":"操作成功。"}】
+ 2025-07-24 14:01:24,718  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [396] - MESSAGE: AI报警数据同步接口返回【{"code":0,"message":"操作成功。"}】
+ 2025-07-24 14:02:19,805  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [983] - MESSAGE: -设备点开关机开始-进入状态不相等【设备ID=5941ab04-50bf-428b-8167-106683f19b82,ala[value]=1】
+ 2025-07-24 14:02:22,568  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [278] - MESSAGE: Task2-异常:Timeout performing SET fanyibox_devspotColour_487963bd-efde-4322-869f-50956493a119_08d9ce00-8c61-4abb-8a8b-26e2fbf62136, inst: 1, queue: 6, qu: 0, qs: 4, qc: 2, wr: 1, wq: 1, in: 0, ar: 0, clientName: DESKTOP-6J9CVS9, serverEndpoint: 124.71.132.255:6379, keyHashSlot: 1342 (Please take a look at this article for some common client-side issues that can cause timeouts: http://stackexchange.github.io/StackExchange.Redis/Timeouts)
+ 2025-07-24 14:04:20,125  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [396] - MESSAGE: AI报警数据同步接口返回【{"code":0,"message":"操作成功。"}】
+ 2025-07-24 14:12:04,670  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [396] - MESSAGE: AI报警数据同步接口返回【{"code":0,"message":"操作成功。"}】
+ 2025-07-24 14:12:34,061  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [278] - MESSAGE: Task2-异常:An exception has been raised that is likely due to a transient failure. Consider enabling transient error resiliency by adding 'EnableRetryOnFailure()' to the 'UseMySql' call.
+ 2025-07-24 14:14:54,183  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [396] - MESSAGE: AI报警数据同步接口返回【{"code":0,"message":"操作成功。"}】
+ 2025-07-24 14:22:56,891  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [396] - MESSAGE: AI报警数据同步接口返回【{"code":0,"message":"操作成功。"}】
+ 2025-07-24 14:27:11,458  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [983] - MESSAGE: -设备点开关机开始-进入状态不相等【设备ID=34c5b133-b7ce-4e92-bb00-c2d37dd29d79,ala[value]=1】
+ 2025-07-24 14:36:24,134  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [278] - MESSAGE: Task2-异常:Timeout performing GET fanyibox_devspotColour_5941ab04-50bf-428b-8167-106683f19b82_327057790420917885, inst: 38, queue: 0, qu: 0, qs: 0, qc: 0, wr: 0, wq: 0, in: 0, ar: 0, clientName: DESKTOP-6J9CVS9, serverEndpoint: 124.71.132.255:6379, keyHashSlot: 7471 (Please take a look at this article for some common client-side issues that can cause timeouts: http://stackexchange.github.io/StackExchange.Redis/Timeouts)
+ 2025-07-24 14:38:51,324  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [983] - MESSAGE: -设备点开关机开始-进入状态不相等【设备ID=6114f202-eb8b-4e0c-af44-e16f1a032c45,ala[value]=1】
+ 2025-07-24 14:39:08,983  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [983] - MESSAGE: -设备点开关机开始-进入状态不相等【设备ID=86b61dbd-0f45-4d68-95ed-4b7da82f3740,ala[value]=1】
+ 2025-07-24 14:39:09,218  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1019] - MESSAGE: 1log-设备点预警报警-进入报警-Begin【设备ID=86b61dbd-0f45-4d68-95ed-4b7da82f3740;ala[id]=306861802779580641;strAlaColour=yellow;sendmsg=false;devspotColour=green】---
+ 2025-07-24 14:39:09,410  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1073] - MESSAGE: 1log-设备点预警报警-发送RabbitMQ消息-设备报警【设备ID=86b61dbd-0f45-4d68-95ed-4b7da82f3740;ala[id]=306861802779580641;strAlaColour=yellow;sendmsg=false;devspotColour=green;msgData={"C_DevStoreCode":"86b61dbd-0f45-4d68-95ed-4b7da82f3740","C_MsgTypeCode":"MSG_TYPE_017","C_SpotCode":null,"Subject":"设备点预警","Msg":"2#吸附风机1频率反馈预警  值:30","DevNumber":"20230501","DevName":"西清洗房废气处理装置","UserName":"设备","UserMobile":null,"DevAddress":null,"DevOpsName":null,"CreateOn":"2025/7/24 14:39:09","GenerationType":1,"msgStatus":1,"FileList":null}】---
+ 2025-07-24 14:39:10,099  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1019] - MESSAGE: 1log-设备点预警报警-进入报警-Begin【设备ID=86b61dbd-0f45-4d68-95ed-4b7da82f3740;ala[id]=306861802779580645;strAlaColour=yellow;sendmsg=false;devspotColour=green】---
+ 2025-07-24 14:39:10,251  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1073] - MESSAGE: 1log-设备点预警报警-发送RabbitMQ消息-设备报警【设备ID=86b61dbd-0f45-4d68-95ed-4b7da82f3740;ala[id]=306861802779580645;strAlaColour=yellow;sendmsg=false;devspotColour=green;msgData={"C_DevStoreCode":"86b61dbd-0f45-4d68-95ed-4b7da82f3740","C_MsgTypeCode":"MSG_TYPE_017","C_SpotCode":null,"Subject":"设备点预警","Msg":"2#吸附风机2频率反馈预警  值:30","DevNumber":"20230501","DevName":"西清洗房废气处理装置","UserName":"设备","UserMobile":null,"DevAddress":null,"DevOpsName":null,"CreateOn":"2025/7/24 14:39:10","GenerationType":1,"msgStatus":1,"FileList":null}】---
+ 2025-07-24 14:39:12,263  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [983] - MESSAGE: -设备点开关机开始-进入状态不相等【设备ID=76e3177f-41f7-4fdc-8f27-59149cfdca1a,ala[value]=1】
+ 2025-07-24 14:39:15,956  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [983] - MESSAGE: -设备点开关机开始-进入状态不相等【设备ID=8453d5ed-8a21-4880-88e7-f872e93551bf,ala[value]=1】
+ 2025-07-24 14:39:16,270  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1019] - MESSAGE: 1log-设备点预警报警-进入报警-Begin【设备ID=8453d5ed-8a21-4880-88e7-f872e93551bf;ala[id]=295458455333901768;strAlaColour=yellow;sendmsg=false;devspotColour=green】---
+ 2025-07-24 14:39:16,439  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1073] - MESSAGE: 1log-设备点预警报警-发送RabbitMQ消息-设备报警【设备ID=8453d5ed-8a21-4880-88e7-f872e93551bf;ala[id]=295458455333901768;strAlaColour=yellow;sendmsg=false;devspotColour=green;msgData={"C_DevStoreCode":"8453d5ed-8a21-4880-88e7-f872e93551bf","C_MsgTypeCode":"MSG_TYPE_017","C_SpotCode":null,"Subject":"设备点预警","Msg":"1#吸附风机1频率反馈预警  值:30","DevNumber":"20230105","DevName":"东清洗房废气处理装置","UserName":"设备","UserMobile":null,"DevAddress":null,"DevOpsName":null,"CreateOn":"2025/7/24 14:39:16","GenerationType":1,"msgStatus":1,"FileList":null}】---
+ 2025-07-24 14:39:17,133  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1019] - MESSAGE: 1log-设备点预警报警-进入报警-Begin【设备ID=8453d5ed-8a21-4880-88e7-f872e93551bf;ala[id]=295458455334950346;strAlaColour=yellow;sendmsg=false;devspotColour=green】---
+ 2025-07-24 14:39:17,317  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1073] - MESSAGE: 1log-设备点预警报警-发送RabbitMQ消息-设备报警【设备ID=8453d5ed-8a21-4880-88e7-f872e93551bf;ala[id]=295458455334950346;strAlaColour=yellow;sendmsg=false;devspotColour=green;msgData={"C_DevStoreCode":"8453d5ed-8a21-4880-88e7-f872e93551bf","C_MsgTypeCode":"MSG_TYPE_017","C_SpotCode":null,"Subject":"设备点预警","Msg":"1#吸附风机2频率反馈预警  值:30","DevNumber":"20230105","DevName":"东清洗房废气处理装置","UserName":"设备","UserMobile":null,"DevAddress":null,"DevOpsName":null,"CreateOn":"2025/7/24 14:39:17","GenerationType":1,"msgStatus":1,"FileList":null}】---
+ 2025-07-24 14:41:06,194  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [278] - MESSAGE: Task2-异常:Timeout performing GET fanyibox_devspot_8cc38457-e098-42c1-b2e5-c0ce501ab5d0_878abe8f-5f4b-4226-8b55-d237df260dc8, inst: 0, queue: 21, qu: 0, qs: 0, qc: 21, wr: 0, wq: 0, in: 0, ar: 0, clientName: DESKTOP-6J9CVS9, serverEndpoint: 124.71.132.255:6379, keyHashSlot: 12980 (Please take a look at this article for some common client-side issues that can cause timeouts: http://stackexchange.github.io/StackExchange.Redis/Timeouts)
+ 2025-07-24 15:02:31,718  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [278] - MESSAGE: Task2-异常:Timeout performing GET fanyibox_devStore_36de09f8-589a-424b-861d-af937aa5dd0d_spot, inst: 19, queue: 23, qu: 0, qs: 19, qc: 4, wr: 0, wq: 0, in: 0, ar: 0, clientName: DESKTOP-6J9CVS9, serverEndpoint: 60.204.212.71:6379, keyHashSlot: 15957 (Please take a look at this article for some common client-side issues that can cause timeouts: http://stackexchange.github.io/StackExchange.Redis/Timeouts)
+ 2025-07-24 15:09:11,859  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [278] - MESSAGE: Task2-异常:Timeout performing GET fanyibox_devspot_59e98720-f26a-4322-9dad-c92bb5d7ae8b_338301733134406936, inst: 49, queue: 29, qu: 0, qs: 0, qc: 29, wr: 0, wq: 0, in: 0, ar: 0, clientName: DESKTOP-6J9CVS9, serverEndpoint: 60.204.212.71:6379, keyHashSlot: 14394 (Please take a look at this article for some common client-side issues that can cause timeouts: http://stackexchange.github.io/StackExchange.Redis/Timeouts)
+ 2025-07-24 15:13:47,099  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [278] - MESSAGE: Task2-异常:Timeout performing GET fanyibox_devspotColour_186a5ab2-4cea-4d3b-a2ac-b582bef6961a_338301733137552723, inst: 0, queue: 47, qu: 2, qs: 2, qc: 43, wr: 0, wq: 1, in: 0, ar: 0, clientName: DESKTOP-6J9CVS9, serverEndpoint: 60.204.212.71:6379, keyHashSlot: 4757 (Please take a look at this article for some common client-side issues that can cause timeouts: http://stackexchange.github.io/StackExchange.Redis/Timeouts)
+ 2025-07-24 16:34:38,547  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [278] - MESSAGE: Task2-异常:Timeout performing GET fanyibox_devspot_2ff323d3-fa27-4d02-836f-30d7c2bf6654_295458516728027434, inst: 15, queue: 6, qu: 0, qs: 1, qc: 5, wr: 0, wq: 0, in: 0, ar: 0, clientName: DESKTOP-6J9CVS9, serverEndpoint: 60.204.212.71:6379, keyHashSlot: 15572 (Please take a look at this article for some common client-side issues that can cause timeouts: http://stackexchange.github.io/StackExchange.Redis/Timeouts)
+ 2025-07-24 16:34:46,188  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [983] - MESSAGE: -设备点开关机开始-进入状态不相等【设备ID=5941ab04-50bf-428b-8167-106683f19b82,ala[value]=0】
+ 2025-07-24 16:34:46,324  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [996] - MESSAGE: {"devStoreCode":"5941ab04-50bf-428b-8167-106683f19b82","devRunSpot":"327056240060405165","time":"2025-07-24T16:34:46.3228262+08:00"};发送RabbitMQ消息
+ 2025-07-24 16:35:11,584  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [983] - MESSAGE: -设备点开关机开始-进入状态不相等【设备ID=76e3177f-41f7-4fdc-8f27-59149cfdca1a,ala[value]=1】
+ 2025-07-24 16:42:26,310  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [278] - MESSAGE: Task2-异常:An error occurred while updating the entries. See the inner exception for details.
+ 2025-07-24 16:43:04,013  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [278] - MESSAGE: Task2-异常:An exception has been raised that is likely due to a transient failure. Consider enabling transient error resiliency by adding 'EnableRetryOnFailure()' to the 'UseMySql' call.
+ 2025-07-24 16:55:41,531  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [278] - MESSAGE: Task2-异常:Timeout performing SET fanyibox_devspotColour_015ea688-0698-408c-94b7-0475b14a20fc_338301733126018127, inst: 4, queue: 5, qu: 0, qs: 4, qc: 1, wr: 0, wq: 0, in: 0, ar: 0, clientName: DESKTOP-6J9CVS9, serverEndpoint: 60.204.212.71:6379, keyHashSlot: 12207 (Please take a look at this article for some common client-side issues that can cause timeouts: http://stackexchange.github.io/StackExchange.Redis/Timeouts)
+ 

+ 0 - 0
Ropin.Environmentally.WebScada/bin/Debug/net5.0/logs/2025/202507/20250724_error.txt


二進制
Ropin.Environmentally.WebScada/obj/Debug/net5.0/Ropin.Environmentally.WebScada.Views.dll


二進制
Ropin.Environmentally.WebScada/obj/Debug/net5.0/Ropin.Environmentally.WebScada.Views.pdb


二進制
Ropin.Environmentally.WebScada/obj/Debug/net5.0/Ropin.Environmentally.WebScada.csproj.AssemblyReference.cache


二進制
Ropin.Environmentally.WebScada/obj/Debug/net5.0/Ropin.Environmentally.WebScada.dll


二進制
Ropin.Environmentally.WebScada/obj/Debug/net5.0/Ropin.Environmentally.WebScada.pdb


二進制
Ropin.Environmentally.WebScada/obj/Debug/net5.0/ref/Ropin.Environmentally.WebScada.dll


二進制
Ropin.Environmentally.WebScada/obj/Debug/net5.0/refint/Ropin.Environmentally.WebScada.dll


二進制
Ropin.IOT.MqttService/obj/Debug/net5.0/Ropin.IOT.MqttService.csproj.AssemblyReference.cache


二進制
Ropin.IOT.MsgService/obj/Debug/net5.0/Ropin.IOT.MsgService.csproj.AssemblyReference.cache


+ 4 - 2
Ropin.Inspection.Api/Controllers/Base/AIController.cs

@@ -159,6 +159,7 @@ namespace Ropin.Inspection.Api.Controllers.Base
                 AlarmDataModel alarmData = JsonConvert.DeserializeObject<AlarmDataModel>(alarmDataModel.ToString());
                 log.Info("获取deviceNo="+ alarmData.deviceNo);
                 var devIds = await _vmcCameraService.GetCameraByTDH(alarmData.deviceNo);
+                var cameraModel = await _vmcCameraService.GetCameraEntity(alarmData.deviceNo);
                 log.Info($"获取到的设备ID:【{JsonConvert.SerializeObject(devIds)}】");
                 int row = 0;
                 foreach (var x in devIds)
@@ -185,6 +186,7 @@ namespace Ropin.Inspection.Api.Controllers.Base
                         }
                         catch (Exception ex)
                         {
+                            fileRelativePath = "";
                             log.Info("全景图异常:" + ex.Message);
                         }
                     }
@@ -205,9 +207,9 @@ namespace Ropin.Inspection.Api.Controllers.Base
                     {
                         C_DevStoreCode = x,
                         C_MsgTypeCode = "MSG_TYPE_024",
-                        Subject = "AI盒子报警",
+                        Subject = cameraModel==null?"AI盒子报警": cameraModel.C_Name+"报警",
                         Msg = alarmData.alarmTypeChineseName,
-                        UserName = "AI盒子",
+                        UserName = cameraModel == null ? "AI盒子" : cameraModel.C_Name,
                         UserMobile = "",
                         CreateOn = alarmData.captureTime,
                         GenerationType = 1,

+ 64 - 1
Ropin.Inspection.Api/Controllers/LGS/LargeScreenController.cs

@@ -9,20 +9,25 @@ using Ropin.Inspection.Model;
 using Ropin.Inspection.Service.LGS.Interface;
 using System.Threading.Tasks;
 using System;
+using System.IO;
+using System.Security.Claims;
+using Ropin.Inspection.Common.Accessor.Interface;
 
 namespace Ropin.Inspection.Api.Controllers.LGS
 {
     public class LargeScreenController : BaseController
     {
         private readonly ILGSLargeScreenService _repository;
+        private readonly IClaimsAccessor _claims;
         private static readonly ILog log = LogManager.GetLogger(typeof(LargeScreenController));
         /// <summary>
         /// 构造函数
         /// </summary>
         /// <param name="repository"></param>
-        public LargeScreenController(ILGSLargeScreenService repository)
+        public LargeScreenController(ILGSLargeScreenService repository, IClaimsAccessor claims)
         {
             _repository = repository;
+            _claims = claims;
         }
 
         /// <summary>
@@ -141,5 +146,63 @@ namespace Ropin.Inspection.Api.Controllers.LGS
                 return new ApiResult(ReturnCode.GeneralError, ex.Message);
             }
         }
+
+        /// <summary>
+        /// 保存大屏缩略图
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [HttpPost("SaveLargeScreenImage")]
+        public async Task<ApiResult> SaveLargeScreenImage(LargeScreenImageModel model)
+        {
+            if (model==null||string.IsNullOrEmpty(model.Id))
+            {
+                return new ApiResult(ReturnCode.ArgsError);
+            }
+            try
+            {
+                LargeScreenViewModel data = await _repository.GetByIdAsync(model.Id);
+                if (data == null)
+                {
+                    return new ApiResult(ReturnCode.DataError,"获取数据失败");
+                }          
+                string fileName = model.Id + ".png";
+                var dateDirectory = DateTime.Now.ToString("yyyyMM");
+                var relativePath = Path.Combine("wwwroot/uploads/images/", _claims.Linsence + "/" + dateDirectory);
+                var directoryPath = Path.Combine(Directory.GetCurrentDirectory(), relativePath);
+                var fileRelativePath = Path.Combine(relativePath + "/", fileName);
+                if (!Directory.Exists(directoryPath))
+                {
+                    Directory.CreateDirectory(directoryPath);
+                }
+                var filePath = Path.Combine(directoryPath + "/", fileName);
+                // 移除可能存在的 Base64 数据前缀
+                if (model.base64Image.StartsWith("data:image", StringComparison.OrdinalIgnoreCase))
+                {
+                    int commaIndex = model.base64Image.IndexOf(',');
+                    if (commaIndex > 0)
+                    {
+                        model.base64Image = model.base64Image.Substring(commaIndex + 1);
+                    }
+                }
+                // 将 Base64 字符串解码为字节数组
+                byte[] imageBytes = Convert.FromBase64String(model.base64Image);
+                // 将字节数组写入文件
+                System.IO.File.WriteAllBytes(filePath, imageBytes);
+                bool result = await _repository.UpdateImageAsync("/"+ fileRelativePath,model.Id);
+                if (result)
+                {
+                    return new ApiResult(ReturnCode.Success);
+                }
+                else
+                {
+                    return new ApiResult(ReturnCode.GeneralError);
+                }
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError);
+            }
+        }
     }
 }

+ 1057 - 0
Ropin.Inspection.Api/Controllers/LGS/ScreenInterfaceDataController.cs

@@ -0,0 +1,1057 @@
+using log4net;
+using Microsoft.AspNetCore.Mvc;
+using Ropin.Inspection.Api.Common;
+using Ropin.Inspection.Model.ViewModel;
+using Ropin.Inspection.Service.LGS.Interface;
+using System.Threading.Tasks;
+using System;
+using Ropin.Inspection.Service;
+using Ropin.Inspection.Service.Interface;
+using Ropin.Inspection.Model.ViewModel.LGS;
+using System.Collections.Generic;
+using System.Linq;
+using Ropin.Inspection.Model.SearchModel.LGS;
+using Castle.Core.Internal;
+using Ropin.Inspection.Model.Common;
+using NPOI.SS.Formula.Functions;
+using Ropin.Inspection.Service.MTN.Interface;
+using Microsoft.EntityFrameworkCore.Metadata.Internal;
+
+namespace Ropin.Inspection.Api.Controllers.LGS
+{
+    public class ScreenInterfaceDataController : BaseController
+    {
+        private readonly ILGSLargeScreenService _lGSLargeScreenService;
+        private readonly ITmtnDevOpsService _TmtnDevOpsService;
+        private readonly ITmtnRepairOrderService _TmtnRepairOrderService;
+        private readonly ITispRecordService _tispRecordService;
+        private readonly ITmtnAlarmOrderService _tmtnAlarmOrderService;
+        private static readonly ILog log = LogManager.GetLogger(typeof(ScreenInterfaceDataController));
+        /// <summary>
+        /// 构造函数
+        /// </summary>
+        public ScreenInterfaceDataController(ILGSLargeScreenService lGSLargeScreenService, ITmtnDevOpsService TmtnDevOpsService, ITmtnRepairOrderService tmtnRepairOrderService, ITispRecordService tispRecordService, ITmtnAlarmOrderService tmtnAlarmOrderService)
+        {
+            _lGSLargeScreenService = lGSLargeScreenService;
+            _TmtnDevOpsService = TmtnDevOpsService;
+            _TmtnRepairOrderService = tmtnRepairOrderService;
+            _tispRecordService = tispRecordService;
+            _tmtnAlarmOrderService = tmtnAlarmOrderService;
+        }
+
+        /// <summary>
+        /// 设备维保-柱状图统计[天]
+        /// </summary>
+        /// <param name="search"></param>
+        /// <returns></returns>
+        [HttpPost("DevOpsDaysStatisticsBarChart")]
+        public async Task<ApiResult> DevOpsDaysStatisticsBarChart(LargeScreenInterfaceDataSearch search)
+        {
+            if (search == null || string.IsNullOrEmpty(search.DevCode))
+            {
+                return new ApiResult(ReturnCode.GeneralError);
+            }
+            try
+            {
+                IEnumerable<DaysStatusStatistics> content = await _lGSLargeScreenService.DevOpsDaysStatistics(search.DevCode, search.Days);
+                if (content != null && content.Count() > 0)
+                {
+                    List<string> YData= new List<string>();
+                    //normal=4、abnormal=3
+                    //【approval=1;confirm=2;repairOn=3;complete=4;cancel=5;repairRework=6;repairCompleted=7】
+                    switch (search.DataType)
+                    {
+                        case "approval":
+                        case "1":
+                            YData = content.Select(d => d.Status1.ToString()).ToList();break;
+                        case "confirm":
+                        case "2":
+                            YData = content.Select(d => d.Status2.ToString()).ToList(); break;
+                        case "repairOn":
+                        case "abnormal":
+                        case "3":
+                            YData = content.Select(d => d.Status3.ToString()).ToList(); break;
+                        case "complete":
+                        case "normal":
+                        case "4":
+                            YData = content.Select(d => d.Status4.ToString()).ToList(); break;
+                        case "cancel":
+                        case "5":
+                            YData = content.Select(d => d.Status5.ToString()).ToList(); break;
+                        case "repairRework":
+                        case "6":
+                            YData = content.Select(d => d.Status6.ToString()).ToList(); break;
+                        case "repairCompleted":
+                        case "7":
+                            YData = content.Select(d => d.Status7.ToString()).ToList(); break;
+                        default:
+                            YData = content.Select(d => d.StatusTotal.ToString()).ToList(); break;
+                    }
+                    var data = new
+                    {
+                        y = YData,
+                        x = content.Select(d => d.SpecificDay).ToArray()
+                    };
+                    return new ApiResult<object>(data);
+                }
+                else
+                {
+                    DateTime time = DateTime.Now;
+                    List<string> y = new List<string>();
+                    List<string> x = new List<string>();
+                    for (int i = search.Days; i >= 0; i--)
+                    {
+                        x.Add(time.AddDays(-i).ToString("yyyyMMdd"));
+                        y.Add("0");
+                    }
+                    var data = new
+                    {
+                        y = y,
+                        x = x
+                    };
+                    return new ApiResult<object>(data);
+                }
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 设备维修-柱状图统计[天]
+        /// </summary>
+        /// <param name="search"></param>
+        /// <returns></returns>
+        [HttpPost("RepairDaysStatisticsBarChart")]
+        public async Task<ApiResult> RepairDaysStatisticsBarChart(LargeScreenInterfaceDataSearch search)
+        {
+            if (search == null || string.IsNullOrEmpty(search.DevCode))
+            {
+                return new ApiResult(ReturnCode.GeneralError);
+            }
+            try
+            {
+                IEnumerable<DaysStatusStatistics> content = await _lGSLargeScreenService.RepairOrderDaysStatistics(search.DevCode, search.Days);
+                if (content != null && content.Count() > 0)
+                {
+                    List<string> YData = new List<string>();
+                    switch (search.DataType)
+                    {
+                        case "approval":
+                        case "1":
+                            YData = content.Select(d => d.Status1.ToString()).ToList(); break;
+                        case "confirm":
+                        case "2":
+                            YData = content.Select(d => d.Status2.ToString()).ToList(); break;
+                        case "repairOn":
+                        case "abnormal":
+                        case "3":
+                            YData = content.Select(d => d.Status3.ToString()).ToList(); break;
+                        case "complete":
+                        case "normal":
+                        case "4":
+                            YData = content.Select(d => d.Status4.ToString()).ToList(); break;
+                        case "cancel":
+                        case "5":
+                            YData = content.Select(d => d.Status5.ToString()).ToList(); break;
+                        case "repairRework":
+                        case "6":
+                            YData = content.Select(d => d.Status6.ToString()).ToList(); break;
+                        case "repairCompleted":
+                        case "7":
+                            YData = content.Select(d => d.Status7.ToString()).ToList(); break;
+                        default:
+                            YData = content.Select(d => d.StatusTotal.ToString()).ToList(); break;
+                    }
+                    var data = new
+                    {
+                        y = YData,
+                        x = content.Select(d => d.SpecificDay).ToArray()
+                    };
+                    return new ApiResult<object>(data);
+                }
+                else
+                {
+                    DateTime time = DateTime.Now;
+                    List<string> y = new List<string>();
+                    List<string> x = new List<string>();
+                    for (int i = search.Days; i >= 0; i--)
+                    {
+                        x.Add(time.AddDays(-i).ToString("yyyyMMdd"));
+                        y.Add("0");
+                    }
+                    var data = new
+                    {
+                        y = y,
+                        x = x
+                    };
+                    return new ApiResult<object>(data);
+                }
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 设备点检-柱状图统计[天]
+        /// </summary>
+        /// <param name="search"></param>
+        /// <returns></returns>
+        [HttpPost("ISPDaysStatisticsBarChart")]
+        public async Task<ApiResult> ISPDaysStatisticsBarChart(LargeScreenInterfaceDataSearch search)
+        {
+            if (search == null || string.IsNullOrEmpty(search.DevCode))
+            {
+                return new ApiResult(ReturnCode.GeneralError);
+            }
+            try
+            {
+
+                IEnumerable<DaysStatusStatistics> content = await _lGSLargeScreenService.ISPDaysStatistics(search.DevCode, search.Days);
+                if (content != null && content.Count() > 0)
+                {
+                    List<string> YData = new List<string>();
+                    switch (search.DataType)
+                    {
+                        case "normal":
+                        case "1":
+                            YData = content.Select(d => d.Status1.ToString()).ToList(); break;
+                        case "abnormal":
+                        case "2":
+                            YData = content.Select(d => d.Status2.ToString()).ToList(); break;
+                        case "3":
+                            YData = content.Select(d => d.Status3.ToString()).ToList(); break;
+                        default:
+                            YData = content.Select(d => d.StatusTotal.ToString()).ToList(); break;
+                    }
+                    var data = new
+                    {
+                        y = YData,
+                        x = content.Select(d => d.SpecificDay).ToArray()
+                    };
+                    return new ApiResult<object>(data);
+                }
+                else
+                {
+                    DateTime time = DateTime.Now;
+                    List<string> y = new List<string>();
+                    List<string> x = new List<string>();
+                    for (int i = search.Days; i >= 0; i--)
+                    {
+                        x.Add(time.AddDays(-i).ToString("yyyyMMdd"));
+                        y.Add("0");
+                    }
+                    var data = new
+                    {
+                        y = y,
+                        x = x
+                    };
+                    return new ApiResult<object>(data);
+                }
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+        
+        /// <summary>
+        /// 设备【维修、维保、点检】条形图统计[天]
+        /// </summary>
+        /// <param name="search"></param>
+        /// <returns></returns>
+        [HttpPost("DevOpsRepairISPDaysStatisticsBarChart")]
+        public async Task<ApiResult> DevOpsRepairISPDaysStatisticsBarChart(LargeScreenInterfaceDataSearch search)
+        {
+            if (search==null || string.IsNullOrEmpty(search.DevCode))
+            {
+                return new ApiResult(ReturnCode.GeneralError);
+            }
+            try
+            {
+                IEnumerable<DevOpsRepairISPDaysStatistics> content =null;
+                switch (search.Days)
+                {
+                    case 30: content = await _lGSLargeScreenService.DevOpsRepairISP30DaysStatistics(search.DevCode);break;
+                    case 7: content = await _lGSLargeScreenService.DevOpsRepairISP7DaysStatistics(search.DevCode); break;
+                    default:
+                        break;
+                }
+                if (content!=null&& content.Count()>0)
+                {
+                    List<LargeScreenInterfaceBar> bar=new List<LargeScreenInterfaceBar>();
+                    bar.Add(new LargeScreenInterfaceBar
+                    {
+                        name = "维保",
+                        type = "bar",
+                        data = GetChartData(search.DataType, "维保", content)
+                    });
+                    bar.Add(new LargeScreenInterfaceBar
+                    {
+                        name = "维修",
+                        type = "bar",
+                        data = GetChartData(search.DataType, "维修", content)
+                    });
+                    bar.Add(new LargeScreenInterfaceBar
+                    {
+                        name = "点检",
+                        type = "bar",
+                        data = GetChartData(search.DataType, "点检", content)
+                    });
+                    var data = new
+                    {
+                        y= content.Select(d => d.SpecificDay).ToArray(),
+                        x = bar
+                    };
+                    return new ApiResult<object>(data);
+                }
+                else
+                {
+                    DateTime time = DateTime.Now;
+                    List<string> y= new List<string>();
+                    List<string> x= new List<string>();
+                    for (int i = search.Days; i >= 0; i --)
+                    {
+                        y.Add(time.AddDays(-i).ToString("yyyyMMdd"));
+                        x.Add("0");
+                    }
+                    var data = new
+                    {
+                        y =y,
+                        x = new
+                        {
+                            name="未知",
+                            type="bar",
+                            data=x
+                        }
+                    };
+                    return new ApiResult<object>(data);
+                }
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+        /// <summary>
+        /// 设备维保-各个状态的条形图统计[天]
+        /// </summary>
+        /// <param name="search"></param>
+        /// <returns></returns>
+        [HttpPost("DevOpsStatusDaysStatisticsBarChart")]
+        public async Task<ApiResult> DevOpsStatusDaysStatisticsBarChart(LargeScreenInterfaceDataSearch search)
+        {
+            if (search == null || string.IsNullOrEmpty(search.DevCode))
+            {
+                return new ApiResult(ReturnCode.GeneralError);
+            }
+            try
+            {
+                IEnumerable<DaysStatusStatistics> content = await _lGSLargeScreenService.DevOpsDaysStatistics(search.DevCode, search.Days);
+                if (content != null && content.Count() > 0)
+                {
+                    List<LargeScreenInterfaceBar> bar = new List<LargeScreenInterfaceBar>();
+                    bar.Add(new LargeScreenInterfaceBar
+                    {
+                        name = "维保上报",//Approval
+                        type = "bar",
+                        data = content.Select(x => x.Status1.ToString()).ToList()
+                    });
+                    bar.Add(new LargeScreenInterfaceBar
+                    {
+                        name = "维保确认",//Confirm
+                        type = "bar",
+                        data = content.Select(x => x.Status2.ToString()).ToList()
+                    });
+                    bar.Add(new LargeScreenInterfaceBar
+                    {
+                        name = "正在维保",//RepairOn
+                        type = "bar",
+                        data = content.Select(x => x.Status3.ToString()).ToList()
+                    });
+                    bar.Add(new LargeScreenInterfaceBar
+                    {
+                        name = "维保完成",//Complete
+                        type = "bar",
+                        data = content.Select(x => x.Status4.ToString()).ToList()
+                    });
+                    bar.Add(new LargeScreenInterfaceBar
+                    {
+                        name = "维保取消",//Cancel
+                        type = "bar",
+                        data = content.Select(x => x.Status5.ToString()).ToList()
+                    });
+                    bar.Add(new LargeScreenInterfaceBar
+                    {
+                        name = "维保返工",//RepairRework
+                        type = "bar",
+                        data = content.Select(x => x.Status6.ToString()).ToList()
+                    });
+                    bar.Add(new LargeScreenInterfaceBar
+                    {
+                        name = "维保完成确认",//RepairCompleted
+                        type = "bar",
+                        data = content.Select(x => x.Status7.ToString()).ToList()
+                    });
+                    bar.Add(new LargeScreenInterfaceBar
+                    {
+                        name = "总数",
+                        type = "bar",
+                        data = content.Select(x => x.StatusTotal.ToString()).ToList()
+                    });
+                    var data = new
+                    {
+                        y = content.Select(d => d.SpecificDay).ToArray(),
+                        x = bar
+                    };
+                    return new ApiResult<object>(data);
+                }
+                else
+                {
+                    DateTime time = DateTime.Now;
+                    List<string> y = new List<string>();
+                    List<string> x = new List<string>();
+                    for (int i = search.Days; i >= 0; i--)
+                    {
+                        y.Add(time.AddDays(-i).ToString("yyyyMMdd"));
+                        x.Add("0");
+                    }
+                    var data = new
+                    {
+                        y = y,
+                        x = new
+                        {
+                            name = "未知",
+                            type = "bar",
+                            data = x
+                        }
+                    };
+                    return new ApiResult<object>(data);
+                }
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 设备【维修、维保、点检】堆叠条形图统计[天]
+        /// </summary>
+        /// <param name="search"></param>
+        /// <returns></returns>
+        [HttpPost("DevOpsRepairISPDaysStatisticsStackBarChart")]
+        public async Task<ApiResult> DevOpsRepairISPDaysStatisticsStackBarChart(LargeScreenInterfaceDataSearch search)
+        {
+            if (search == null || string.IsNullOrEmpty(search.DevCode))
+            {
+                return new ApiResult(ReturnCode.GeneralError);
+            }
+            try
+            {
+                IEnumerable<DevOpsRepairISPDaysStatistics> content = null;
+                switch (search.Days)
+                {
+                    case 30: content = await _lGSLargeScreenService.DevOpsRepairISP30DaysStatistics(search.DevCode); break;
+                    case 7: content = await _lGSLargeScreenService.DevOpsRepairISP7DaysStatistics(search.DevCode); break;
+                    default:
+                        break;
+                }
+                if (content != null && content.Count() > 0)
+                {
+                    List<LargeScreenInterfaceStackBar> bar = new List<LargeScreenInterfaceStackBar>();
+                    bar.Add(new LargeScreenInterfaceStackBar
+                    {
+                        name = "维保",
+                        type = "bar",
+                        stack= "total",
+                        label=new LabelStackBarModel { show= search.LableIsShow },
+                        data = GetChartData(search.DataType, "维保", content)
+                    });
+                    bar.Add(new LargeScreenInterfaceStackBar
+                    {
+                        name = "维修",
+                        type = "bar",
+                        stack = "total",
+                        label = new LabelStackBarModel { show = search.LableIsShow },
+                        data = GetChartData(search.DataType, "维修", content)
+                    });
+                    bar.Add(new LargeScreenInterfaceStackBar
+                    {
+                        name = "点检",
+                        type = "bar",
+                        stack = "total",
+                        label = new LabelStackBarModel { show = search.LableIsShow },
+                        data = GetChartData(search.DataType, "点检", content)
+                    });
+                    var data = new
+                    {
+                        y = content.Select(d => d.SpecificDay).ToArray(),
+                        x = bar
+                    };
+                    return new ApiResult<object>(data);
+                }
+                else
+                {
+                    DateTime time = DateTime.Now;
+                    List<string> y = new List<string>();
+                    List<string> x = new List<string>();
+                    for (int i = search.Days; i >= 0; i--)
+                    {
+                        y.Add(time.AddDays(-i).ToString("yyyyMMdd"));
+                        x.Add("0");
+                    }
+                    var data = new
+                    {
+                        y = y,
+                        x = new
+                        {
+                            name = "未知",
+                            type = "bar",
+                            stack = "total",
+                            label = new LabelStackBarModel { show = true },
+                            data = x
+                        }
+                    };
+                    return new ApiResult<object>(data);
+                }
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 设备【维修、维保、点检 】折线图统计[天]
+        /// </summary>
+        /// <param name="search"></param>
+        /// <returns></returns>
+        [HttpPost("DevOpsRepairISPDaysStatisticsLineChart")]
+        public async Task<ApiResult> DevOpsRepairISPDaysStatisticsLineChart(LargeScreenInterfaceDataSearch search)
+        {
+            if (search == null || string.IsNullOrEmpty(search.DevCode))
+            {
+                return new ApiResult(ReturnCode.GeneralError);
+            }
+            try
+            {
+                IEnumerable<DevOpsRepairISPDaysStatistics> content = null;
+                string type = "line";string stack = "Total";
+                switch (search.Days)
+                {
+                    case 30: content = await _lGSLargeScreenService.DevOpsRepairISP30DaysStatistics(search.DevCode); break;
+                    case 7: content = await _lGSLargeScreenService.DevOpsRepairISP7DaysStatistics(search.DevCode); break;
+                    default:
+                        break;
+                }
+                if (content != null && content.Count() > 0)
+                {
+                    List<LargeScreenInterfaceLine> bar = new List<LargeScreenInterfaceLine>();
+                    bar.Add(new LargeScreenInterfaceLine
+                    {
+                        name = "维保",
+                        type = type,
+                        stack = stack,
+                        data = GetChartData(search.DataType, "维保", content)
+                    });
+                    bar.Add(new LargeScreenInterfaceLine
+                    {
+                        name = "维修",
+                        type = type,
+                        stack = stack,
+                        data = GetChartData(search.DataType, "维修", content)
+                    });
+                    bar.Add(new LargeScreenInterfaceLine
+                    {
+                        name = "点检",
+                        type = type,
+                        stack = stack,
+                        data = GetChartData(search.DataType, "点检", content)
+                    });
+                    var data = new
+                    {
+                        y = bar,
+                        x = content.Select(d => d.SpecificDay).ToArray()
+                    };
+                    return new ApiResult<object>(data);
+                }
+                else
+                {
+                    DateTime time = DateTime.Now;
+                    List<string> y = new List<string>();
+                    List<string> x = new List<string>();
+                    for (int i = search.Days; i >= 0; i--)
+                    {
+                        x.Add(time.AddDays(-i).ToString("yyyyMMdd"));
+                        y.Add("0");
+                    }
+                    var data = new
+                    {
+                        y = new
+                        {
+                            name = "未知",
+                            type = type,
+                            stack = stack,
+                            data = y
+                        },
+                        x = x
+                    };
+                    return new ApiResult<object>(data);
+                }
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 根据数据源,类型、名称获取的数组形式的数据
+        /// </summary>
+        /// <param name="type">数据类型</param>
+        /// <param name="name">数据名称</param>
+        /// <param name="content">【点检、维保、维修】根据天获取数据统计的数据源</param>
+        /// <returns></returns>
+        private List<string> GetChartData(string type,string name, IEnumerable<DevOpsRepairISPDaysStatistics> content)
+        {
+            List<string> arrayStr=new List<string>();
+            if (name=="维保")
+            {
+                switch (type)
+                {
+                    case "complete":
+                    case "normal":
+                    case "4": arrayStr = content.Select(d => d.DevOpsNormal.ToString()).ToList(); break;
+                    case "repairOn":
+                    case "abnormal":
+                    case "3": arrayStr = content.Select(d => d.DevOpsAbnormal.ToString()).ToList(); break;
+                    default: arrayStr = content.Select(d => d.DevOpsTotal.ToString()).ToList(); break;
+                }
+            }
+            else if (name=="维修")
+            {
+                switch (type)
+                {
+                    case "complete":
+                    case "normal":
+                    case "4": arrayStr = content.Select(d => d.RepairOrderNormal.ToString()).ToList(); break;
+                    case "repairOn":
+                    case "abnormal":
+                    case "3": arrayStr = content.Select(d => d.RepairOrderAbnormal.ToString()).ToList(); break;
+                    default: arrayStr = content.Select(d => d.RepairOrderTotal.ToString()).ToList(); break;
+                }
+            }
+            else if (name == "点检")
+            {
+                switch (type)
+                {
+                    case "complete":
+                    case "normal":
+                    case "4": arrayStr = content.Select(d => d.ISPNormal.ToString()).ToList(); break;
+                    case "repairOn":
+                    case "abnormal":
+                    case "3": arrayStr = content.Select(d => d.ISPAbnormal.ToString()).ToList(); break;
+                    default: arrayStr = content.Select(d => d.ISPTotal.ToString()).ToList(); break;
+                }
+            }
+            return arrayStr;
+        }
+
+        /// <summary>
+        /// 报警工单状态【1、2、3、4、5、6、7】-饼图统计
+        /// </summary>
+        /// <param name="search"></param>
+        /// <returns></returns>
+        [HttpPost("AlarmOrderStatusStatisticsMonthPieChart")]
+        public async Task<ApiResult> AlarmOrderStatusStatisticsMonthPieChart(LargeScreenInterfaceDataSearch search)
+        {
+            if (search == null || string.IsNullOrEmpty(search.DevCode))
+            {
+                return new ApiResult(ReturnCode.GeneralError);
+            }
+            try
+            {
+                var content = await _tmtnAlarmOrderService.GetAlarmOrderStatisticsAsync(search.DevCode,search.MonthNum);
+                List<LargeScreenInterfacePie> data = new List<LargeScreenInterfacePie>();
+                if (content != null)
+                {
+                    if (search.StatusArray!=null&&search.StatusArray.Count>0)
+                    {
+                        foreach (var item in search.StatusArray)
+                        {
+                            switch (item)
+                            {
+                                case 1: data.Add(new LargeScreenInterfacePie { name = "报警上报", value = content.Approval.ToString(), });break;
+                                case 2: data.Add(new LargeScreenInterfacePie { name = "报警确认", value = content.Confirm.ToString(), }); break;
+                                case 3: data.Add(new LargeScreenInterfacePie { name = "报警处理", value = content.RepairOn.ToString(), });break;
+                                case 4: data.Add(new LargeScreenInterfacePie { name = "报警审批", value = content.Complete.ToString(), }); break;
+                                case 5: data.Add(new LargeScreenInterfacePie { name = "报警取消", value = content.Cancel.ToString(), }); break;
+                                case 6: data.Add(new LargeScreenInterfacePie { name = "报警返工", value = content.RepairRework.ToString(), }); break;
+                                case 7: data.Add(new LargeScreenInterfacePie { name = "报警完成审批", value = content.RepairCompleted.ToString(), }); break;
+                                default: data.Add(new LargeScreenInterfacePie { name = "其它"+ item, value = "0", }); break;
+                            }
+                        }
+                    }
+                    else
+                    {
+                        data.Add(new LargeScreenInterfacePie { name = "报警上报", value = content.Approval.ToString(), });//1上报处理报警
+                        data.Add(new LargeScreenInterfacePie { name = "报警确认", value = content.Confirm.ToString(), });//2报警确认
+                        data.Add(new LargeScreenInterfacePie { name = "报警处理", value = content.RepairOn.ToString(), });//3正在处理报警
+                        data.Add(new LargeScreenInterfacePie { name = "报警审批", value = content.Complete.ToString(), });//4报警处理完成
+                        data.Add(new LargeScreenInterfacePie { name = "报警取消", value = content.Cancel.ToString(), });//5报警取消
+                        data.Add(new LargeScreenInterfacePie { name = "报警返工", value = content.RepairRework.ToString(), });//6报警处理返工
+                        data.Add(new LargeScreenInterfacePie { name = "报警完成审批", value = content.RepairCompleted.ToString(), });//7报警处理完成确认
+                    }
+                }
+                else
+                {
+                    data.Add(new LargeScreenInterfacePie { name = "未知",  value = "0" }); 
+                }
+                return new ApiResult<object>(data);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+        /// <summary>
+        /// 维保状态【1、2、3、4、5、6、7】-饼图统计
+        /// </summary>
+        /// <param name="search"></param>
+        /// <returns></returns>
+        [HttpPost("GeDevOpsStatisticsMonthPieAsync")]
+        public async Task<ApiResult> GeDevOpsStatisticsMonthPieAsync(LargeScreenInterfaceDataSearch search)
+        {
+            if (search == null || string.IsNullOrEmpty(search.DevCode))
+            {
+                return new ApiResult(ReturnCode.GeneralError);
+            }
+            try
+            {
+                var content = await _lGSLargeScreenService.GeDevOpsStatisticsMonthPieAsync(search.DevCode, search.MonthNum);
+                List<LargeScreenInterfacePie> data = new List<LargeScreenInterfacePie>();
+                if (content != null)
+                {
+                    if (search.StatusArray != null && search.StatusArray.Count > 0)
+                    {
+                        foreach (var item in search.StatusArray)
+                        {
+                            switch (item)
+                            {
+                                case 1: data.Add(new LargeScreenInterfacePie { name = "维保上报", value = content.Approval.ToString(), }); break;
+                                case 2: data.Add(new LargeScreenInterfacePie { name = "维保确认", value = content.Confirm.ToString(), }); break;
+                                case 3: data.Add(new LargeScreenInterfacePie { name = "维保处理", value = content.RepairOn.ToString(), }); break;
+                                case 4: data.Add(new LargeScreenInterfacePie { name = "维保审批", value = content.Complete.ToString(), }); break;
+                                case 5: data.Add(new LargeScreenInterfacePie { name = "维保取消", value = content.Cancel.ToString(), }); break;
+                                case 6: data.Add(new LargeScreenInterfacePie { name = "维保返工", value = content.RepairRework.ToString(), }); break;
+                                case 7: data.Add(new LargeScreenInterfacePie { name = "维保完成审批", value = content.RepairCompleted.ToString(), }); break;
+                                default: data.Add(new LargeScreenInterfacePie { name = "其它" + item, value = "0", }); break;
+                            }
+                        }
+                    }
+                    else
+                    {
+                        data.Add(new LargeScreenInterfacePie { name = "维保上报", value = content.Approval.ToString(), });//上报维保(维保上报)
+                        data.Add(new LargeScreenInterfacePie { name = "维保确认", value = content.Confirm.ToString(), });//维保确认
+                        data.Add(new LargeScreenInterfacePie { name = "维保处理", value = content.RepairOn.ToString(), });//正在维保
+                        data.Add(new LargeScreenInterfacePie { name = "维保审批", value = content.Complete.ToString(), });//维保完成
+                        data.Add(new LargeScreenInterfacePie { name = "维保取消", value = content.Cancel.ToString(), });//维保取消
+                        data.Add(new LargeScreenInterfacePie { name = "维保返工", value = content.RepairRework.ToString(), });//维保修复(维保返工)
+                        data.Add(new LargeScreenInterfacePie { name = "维保完成审批", value = content.RepairCompleted.ToString(), });//维保完成确认
+                    }
+                }
+                else
+                {
+                    data.Add(new LargeScreenInterfacePie { name = "未知", value = "0" });
+                }
+                return new ApiResult<object>(data);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+        /// <summary>
+        /// 维修状态【1、2、3、4、5、6、7】-饼图统计
+        /// </summary>
+        /// <param name="search"></param>
+        /// <returns></returns>
+        [HttpPost("GeRepairOrderStatisticsMonthPieAsync")]
+        public async Task<ApiResult> GeRepairOrderStatisticsMonthPieAsync(LargeScreenInterfaceDataSearch search)
+        {
+            if (search == null || string.IsNullOrEmpty(search.DevCode))
+            {
+                return new ApiResult(ReturnCode.GeneralError);
+            }
+            try
+            {
+                var content = await _lGSLargeScreenService.GeRepairOrderStatisticsMonthPieAsync(search.DevCode, search.MonthNum);
+                List<LargeScreenInterfacePie> data = new List<LargeScreenInterfacePie>();
+                if (content != null)
+                {
+                    if (search.StatusArray != null && search.StatusArray.Count > 0)
+                    {
+                        foreach (var item in search.StatusArray)
+                        {
+                            switch (item)
+                            {
+                                case 1: data.Add(new LargeScreenInterfacePie { name = "故障上报", value = content.Approval.ToString(), }); break;
+                                case 2: data.Add(new LargeScreenInterfacePie { name = "维修确认", value = content.Confirm.ToString(), }); break;
+                                case 3: data.Add(new LargeScreenInterfacePie { name = "维修处理", value = content.RepairOn.ToString(), }); break;
+                                case 4: data.Add(new LargeScreenInterfacePie { name = "维修审批", value = content.Complete.ToString(), }); break;
+                                case 5: data.Add(new LargeScreenInterfacePie { name = "维修取消", value = content.Cancel.ToString(), }); break;
+                                case 6: data.Add(new LargeScreenInterfacePie { name = "维修返工", value = content.RepairRework.ToString(), }); break;
+                                case 7: data.Add(new LargeScreenInterfacePie { name = "维修完成审批", value = content.RepairCompleted.ToString(), }); break;
+                                default: data.Add(new LargeScreenInterfacePie { name = "其它" + item, value = "0", }); break;
+                            }
+                        }
+                    }
+                    else
+                    {
+                        data.Add(new LargeScreenInterfacePie { name = "故障上报", value = content.Approval.ToString(), });//报修(故障上报)
+                        data.Add(new LargeScreenInterfacePie { name = "维修确认", value = content.Confirm.ToString(), });//维修确认
+                        data.Add(new LargeScreenInterfacePie { name = "维修处理", value = content.RepairOn.ToString(), });//正在维修
+                        data.Add(new LargeScreenInterfacePie { name = "维修审批", value = content.Complete.ToString(), });//维修完成
+                        data.Add(new LargeScreenInterfacePie { name = "维修取消", value = content.Cancel.ToString(), });//维修取消
+                        data.Add(new LargeScreenInterfacePie { name = "维修返工", value = content.RepairRework.ToString(), });//故障修复(维修返工)
+                        data.Add(new LargeScreenInterfacePie { name = "维修完成审批", value = content.RepairCompleted.ToString(), });//维修完成确认
+                    }
+                }
+                else
+                {
+                    data.Add(new LargeScreenInterfacePie { name = "未知", value = "0" });
+                }
+                return new ApiResult<object>(data);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 设备维保-统计[天]-列表
+        /// </summary>
+        /// <param name="search"></param>
+        /// <returns></returns>
+        [HttpPost("DevOpsDaysStatisticsList")]
+        public async Task<ApiResult> DevOpsDaysStatisticsList(LargeScreenInterfaceDataSearch search)
+        {
+            if (search == null || string.IsNullOrEmpty(search.DevCode))
+            {
+                return new ApiResult(ReturnCode.GeneralError);
+            }
+            try
+            {
+                IEnumerable<DaysStatusStatistics> content = await _lGSLargeScreenService.DevOpsDaysStatistics(search.DevCode, search.Days);
+                if (search.Columns == null || search.Columns.Count==0)
+                {
+                    search.Columns = new List<LargeScreenInterfaceListColumns>();
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "日期", key = "SpecificDay" });
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维保上报", key = "Approval" });
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维保确认", key = "Confirm" });
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "正在维保", key = "RepairOn" });
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维保完成", key = "Complete" });
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维保取消", key = "Cancel" });
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维保返工", key = "RepairRework" });
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维保完成确认", key = "RepairCompleted" });
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "总数", key = "DevOpsTotal" });
+                }
+                List<Dictionary<string, string>> datas = new List<Dictionary<string, string>>();
+                if (content != null && content.Count() > 0)
+                {
+                    foreach (var item in content)
+                    {
+                        if (item!=null)
+                        {
+                            Dictionary<string, string> rows = new Dictionary<string, string>();
+                            foreach (var index in search.Columns)
+                            {
+                                switch (index.key)
+                                {
+                                    case "SpecificDay": rows.Add(index.key, item.SpecificDay); break;
+                                    case "Approval": rows.Add(index.key, item.Status1.ToString()); break;
+                                    case "Confirm": rows.Add(index.key, item.Status2.ToString()); break;
+                                    case "RepairOn": rows.Add(index.key, item.Status3.ToString()); break;
+                                    case "Complete": rows.Add(index.key, item.Status4.ToString()); break;
+                                    case "Cancel": rows.Add(index.key, item.Status5.ToString()); break;
+                                    case "RepairRework": rows.Add(index.key, item.Status6.ToString()); break;
+                                    case "RepairCompleted": rows.Add(index.key, item.Status7.ToString()); break;
+                                    case "DevOpsTotal": rows.Add(index.key, item.StatusTotal.ToString()); break;
+                                    default: rows.Add(index.key,"未知"); break;
+                                }                                
+                            }
+                            datas.Add(rows);
+                        }
+                    }
+                }
+                else
+                {
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "未知", key = "null" });
+                    Dictionary<string, string> rows = new Dictionary<string, string>();
+                    rows.Add("null", "未知");
+                    datas.Add(rows);
+                }
+                var data = new
+                {
+                    columns = search.Columns,
+                    data = datas
+                };
+                return new ApiResult<object>(data);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 设备维修-统计[天]-列表
+        /// </summary>
+        /// <param name="search"></param>
+        /// <returns></returns>
+        [HttpPost("RepairOrderDaysStatisticsList")]
+        public async Task<ApiResult> RepairOrderDaysStatisticsList(LargeScreenInterfaceDataSearch search)
+        {
+            if (search == null || string.IsNullOrEmpty(search.DevCode))
+            {
+                return new ApiResult(ReturnCode.GeneralError);
+            }
+            try
+            {
+                IEnumerable<DaysStatusStatistics> content = await _lGSLargeScreenService.RepairOrderDaysStatistics(search.DevCode, search.Days);
+                if (search.Columns == null || search.Columns.Count == 0)
+                {
+                    search.Columns = new List<LargeScreenInterfaceListColumns>();
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "日期", key = "SpecificDay" });
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维修上报", key = "Approval" });
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维修确认", key = "Confirm" });
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "正在维修", key = "RepairOn" });
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维修完成", key = "Complete" });
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维修取消", key = "Cancel" });
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维修返工", key = "RepairRework" });
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "维修完成确认", key = "RepairCompleted" });
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "总数", key = "Total" });
+                }
+                List<Dictionary<string, string>> datas = new List<Dictionary<string, string>>();
+                if (content != null && content.Count() > 0)
+                {
+                    foreach (var item in content)
+                    {
+                        if (item != null)
+                        {
+                            Dictionary<string, string> rows = new Dictionary<string, string>();
+                            foreach (var index in search.Columns)
+                            {
+                                switch (index.key)
+                                {
+                                    case "SpecificDay": rows.Add(index.key, item.SpecificDay); break;
+                                    case "Approval": rows.Add(index.key, item.Status1.ToString()); break;
+                                    case "Confirm": rows.Add(index.key, item.Status2.ToString()); break;
+                                    case "RepairOn": rows.Add(index.key, item.Status3.ToString()); break;
+                                    case "Complete": rows.Add(index.key, item.Status4.ToString()); break;
+                                    case "Cancel": rows.Add(index.key, item.Status5.ToString()); break;
+                                    case "RepairRework": rows.Add(index.key, item.Status6.ToString()); break;
+                                    case "RepairCompleted": rows.Add(index.key, item.Status7.ToString()); break;
+                                    case "Total": rows.Add(index.key, item.StatusTotal.ToString()); break;
+                                    default: rows.Add(index.key, "未知"); break;
+                                }
+                            }
+                            datas.Add(rows);
+                        }
+                    }
+                }
+                else
+                {
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "未知", key = "null" });
+                    Dictionary<string, string> rows = new Dictionary<string, string>();
+                    rows.Add("null", "未知");
+                    datas.Add(rows);
+                }
+                var data = new
+                {
+                    columns = search.Columns,
+                    data = datas
+                };
+                return new ApiResult<object>(data);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 设备点检-统计[天]-列表
+        /// </summary>
+        /// <param name="search"></param>
+        /// <returns></returns>
+        [HttpPost("ISPDaysStatisticsList")]
+        public async Task<ApiResult> ISPDaysStatisticsList(LargeScreenInterfaceDataSearch search)
+        {
+            if (search == null || string.IsNullOrEmpty(search.DevCode))
+            {
+                return new ApiResult(ReturnCode.GeneralError);
+            }
+            try
+            {
+                IEnumerable<DaysStatusStatistics> content = await _lGSLargeScreenService.ISPDaysStatistics(search.DevCode, search.Days);
+                if (search.Columns == null || search.Columns.Count == 0)
+                {
+                    search.Columns = new List<LargeScreenInterfaceListColumns>();
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "日期", key = "SpecificDay" });
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "正常", key = "Normal" });
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "异常", key = "Abnormal" });
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "确认异常", key = "ConfirmAbnormal" });
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "总数", key = "Total" });
+                }
+                List<Dictionary<string, string>> datas = new List<Dictionary<string, string>>();
+                if (content != null && content.Count() > 0)
+                {
+                    foreach (var item in content)
+                    {
+                        if (item != null)
+                        {
+                            Dictionary<string, string> rows = new Dictionary<string, string>();
+                            foreach (var index in search.Columns)
+                            {
+                                switch (index.key)
+                                {
+                                    case "SpecificDay": rows.Add(index.key, item.SpecificDay); break;
+                                    case "Normal": rows.Add(index.key, item.Status1.ToString()); break;
+                                    case "Abnormal": rows.Add(index.key, item.Status2.ToString()); break;
+                                    case "ConfirmAbnormal": rows.Add(index.key, item.Status3.ToString()); break;
+                                    case "Total": rows.Add(index.key, item.StatusTotal.ToString()); break;
+                                    default: rows.Add(index.key, "未知"); break;
+                                }
+                            }
+                            datas.Add(rows);
+                        }
+                    }
+                }
+                else
+                {
+                    search.Columns.Add(new LargeScreenInterfaceListColumns() { title = "未知", key = "null" });
+                    Dictionary<string, string> rows = new Dictionary<string, string>();
+                    rows.Add("null", "未知");
+                    datas.Add(rows);
+                }
+                var data = new
+                {
+                    columns = search.Columns,
+                    data = datas
+                };
+                return new ApiResult<object>(data);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+
+    }
+}

+ 1 - 1
Ropin.Inspection.Api/Controllers/VMC/VmcCameraController.cs

@@ -262,7 +262,7 @@ namespace Ropin.Inspection.Api.Controllers.VMC
         [HttpPost("CreateDevCameraListAsync")]
         public async Task<ApiResult> CreateDevCameraListAsync(VmcDevCamera content)
         {
-            if (content == null||content.CameraList == null|| content.CameraList.Count==0)
+            if (content == null)
             {
                 return new ApiResult(ReturnCode.ArgsError);
             }

二進制
Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Core.Extensions.dll


二進制
Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Core.Extensions.pdb


二進制
Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Api.dll


二進制
Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Api.pdb


+ 113 - 1
Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Api.xml

@@ -1625,7 +1625,7 @@
             </summary>
             <returns></returns>
         </member>
-        <member name="M:Ropin.Inspection.Api.Controllers.LGS.LargeScreenController.#ctor(Ropin.Inspection.Service.LGS.Interface.ILGSLargeScreenService)">
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.LargeScreenController.#ctor(Ropin.Inspection.Service.LGS.Interface.ILGSLargeScreenService,Ropin.Inspection.Common.Accessor.Interface.IClaimsAccessor)">
             <summary>
             构造函数
             </summary>
@@ -1665,6 +1665,13 @@
             </summary>
             <returns></returns>
         </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.LargeScreenController.SaveLargeScreenImage(Ropin.Inspection.Model.ViewModel.LGS.LargeScreenImageModel)">
+            <summary>
+            保存大屏缩略图
+            </summary>
+            <param name="model"></param>
+            <returns></returns>
+        </member>
         <member name="M:Ropin.Inspection.Api.Controllers.LGS.LargeScreenEventController.#ctor(Ropin.Inspection.Service.LGS.Interface.ILargeScreenEventService)">
             <summary>
             构造函数
@@ -1745,6 +1752,111 @@
             </summary>
             <returns></returns>
         </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.#ctor(Ropin.Inspection.Service.LGS.Interface.ILGSLargeScreenService,Ropin.Inspection.Service.ITmtnDevOpsService,Ropin.Inspection.Service.ITmtnRepairOrderService,Ropin.Inspection.Service.Interface.ITispRecordService,Ropin.Inspection.Service.MTN.Interface.ITmtnAlarmOrderService)">
+            <summary>
+            构造函数
+            </summary>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.DevOpsDaysStatisticsBarChart(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            设备维保-柱状图统计[天]
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.RepairDaysStatisticsBarChart(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            设备维修-柱状图统计[天]
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.ISPDaysStatisticsBarChart(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            设备点检-柱状图统计[天]
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.DevOpsRepairISPDaysStatisticsBarChart(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            设备【维修、维保、点检】条形图统计[天]
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.DevOpsStatusDaysStatisticsBarChart(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            设备维保-各个状态的条形图统计[天]
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.DevOpsRepairISPDaysStatisticsStackBarChart(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            设备【维修、维保、点检】堆叠条形图统计[天]
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.DevOpsRepairISPDaysStatisticsLineChart(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            设备【维修、维保、点检 】折线图统计[天]
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.GetChartData(System.String,System.String,System.Collections.Generic.IEnumerable{Ropin.Inspection.Model.ViewModel.LGS.DevOpsRepairISPDaysStatistics})">
+            <summary>
+            根据数据源,类型、名称获取的数组形式的数据
+            </summary>
+            <param name="type">数据类型</param>
+            <param name="name">数据名称</param>
+            <param name="content">【点检、维保、维修】根据天获取数据统计的数据源</param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.AlarmOrderStatusStatisticsMonthPieChart(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            报警工单状态【1、2、3、4、5、6、7】-饼图统计
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.GeDevOpsStatisticsMonthPieAsync(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            维保状态【1、2、3、4、5、6、7】-饼图统计
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.GeRepairOrderStatisticsMonthPieAsync(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            维修状态【1、2、3、4、5、6、7】-饼图统计
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.DevOpsDaysStatisticsList(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            设备维保-统计[天]-列表
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.RepairOrderDaysStatisticsList(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            设备维修-统计[天]-列表
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.ISPDaysStatisticsList(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            设备点检-统计[天]-列表
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
         <member name="M:Ropin.Inspection.Api.Controllers.MTN.mtnAlarmShadowRecordController.#ctor(Ropin.Inspection.Service.MTN.Interface.ImtnAlarmShadowRecordService)">
             <summary>
             构造函数

二進制
Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Common.dll


二進制
Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Common.pdb


二進制
Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Model.dll


二進制
Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Model.pdb


二進制
Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Repository.dll


二進制
Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Repository.pdb


二進制
Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Service.dll


二進制
Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Service.pdb


二進制
Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Tasks.dll


二進制
Ropin.Inspection.Api/bin/Debug/net5.0/Ropin.Inspection.Tasks.pdb


+ 2 - 1
Ropin.Inspection.Api/bin/Debug/net5.0/appsettings.Development.json

@@ -14,7 +14,8 @@
   "ConnectionSetting": {
     //"MySqlConnection": "server=120.26.5.167;user id=root;password=Ropin1234%$#@;port=8605;persistsecurityinfo=True;database=SH_HB_Owner;sslMode=None",
     //"MySqlConnection": "server=60.204.212.71;user id=root;password=Ropin1234;port=8065;persistsecurityinfo=True;database=sh_hb_yantest;sslMode=None"
-    "MySqlConnection": "server=124.71.132.255;user id=root;password=Ropin@EPE5744;port=5744;persistsecurityinfo=True;database=SH_HB_Test;sslMode=None" //SH_HB_CustomerTest
+    //"MySqlConnection": "server=124.71.132.255;user id=root;password=Ropin@EPE5744;port=5744;persistsecurityinfo=True;database=SH_HB_Test;sslMode=None" //SH_HB_CustomerTest
+    "MySqlConnection": "server=10.126.126.131;user id=root;password=Ropin@EPE5744;port=5744;persistsecurityinfo=True;database=SH_HB_Owner_20250321;sslMode=None" //SH_HB_CustomerTest
     //"MySqlConnection": "server=124.71.132.255;user id=root;password=tony;port=3306;persistsecurityinfo=True;database=SH_HB_CustomerTest;sslMode=None"
     //"MySqlConnection": "server=60.204.212.71;user id=root;password=Ropin1234;port=8065;persistsecurityinfo=True;database=SH_HB;sslMode=None"
     //"MySqlConnection": "server=120.26.5.167;user id=root;password=Ropin1234%$#@;port=8605;persistsecurityinfo=True;database=SH_HB_Owner;sslMode=None"

+ 0 - 0
Ropin.Inspection.Api/bin/Debug/net5.0/logs/2025/202508/20250805.txt


+ 0 - 0
Ropin.Inspection.Api/bin/Debug/net5.0/logs/2025/202508/20250805_error.txt


二進制
Ropin.Inspection.Api/obj/Debug/net5.0/Ropin.Inspection.Api.csproj.AssemblyReference.cache


+ 1 - 1
Ropin.Inspection.Api/obj/Debug/net5.0/Ropin.Inspection.Api.csproj.CoreCompileInputs.cache

@@ -1 +1 @@
-c1c8c4d3ba067dced81b814b1fbef25e8d859e72
+c24328d58834913166f14fab934fce8f73ef34c4

二進制
Ropin.Inspection.Api/obj/Debug/net5.0/Ropin.Inspection.Api.dll


二進制
Ropin.Inspection.Api/obj/Debug/net5.0/Ropin.Inspection.Api.pdb


+ 113 - 1
Ropin.Inspection.Api/obj/Debug/net5.0/Ropin.Inspection.Api.xml

@@ -1625,7 +1625,7 @@
             </summary>
             <returns></returns>
         </member>
-        <member name="M:Ropin.Inspection.Api.Controllers.LGS.LargeScreenController.#ctor(Ropin.Inspection.Service.LGS.Interface.ILGSLargeScreenService)">
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.LargeScreenController.#ctor(Ropin.Inspection.Service.LGS.Interface.ILGSLargeScreenService,Ropin.Inspection.Common.Accessor.Interface.IClaimsAccessor)">
             <summary>
             构造函数
             </summary>
@@ -1665,6 +1665,13 @@
             </summary>
             <returns></returns>
         </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.LargeScreenController.SaveLargeScreenImage(Ropin.Inspection.Model.ViewModel.LGS.LargeScreenImageModel)">
+            <summary>
+            保存大屏缩略图
+            </summary>
+            <param name="model"></param>
+            <returns></returns>
+        </member>
         <member name="M:Ropin.Inspection.Api.Controllers.LGS.LargeScreenEventController.#ctor(Ropin.Inspection.Service.LGS.Interface.ILargeScreenEventService)">
             <summary>
             构造函数
@@ -1745,6 +1752,111 @@
             </summary>
             <returns></returns>
         </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.#ctor(Ropin.Inspection.Service.LGS.Interface.ILGSLargeScreenService,Ropin.Inspection.Service.ITmtnDevOpsService,Ropin.Inspection.Service.ITmtnRepairOrderService,Ropin.Inspection.Service.Interface.ITispRecordService,Ropin.Inspection.Service.MTN.Interface.ITmtnAlarmOrderService)">
+            <summary>
+            构造函数
+            </summary>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.DevOpsDaysStatisticsBarChart(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            设备维保-柱状图统计[天]
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.RepairDaysStatisticsBarChart(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            设备维修-柱状图统计[天]
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.ISPDaysStatisticsBarChart(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            设备点检-柱状图统计[天]
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.DevOpsRepairISPDaysStatisticsBarChart(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            设备【维修、维保、点检】条形图统计[天]
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.DevOpsStatusDaysStatisticsBarChart(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            设备维保-各个状态的条形图统计[天]
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.DevOpsRepairISPDaysStatisticsStackBarChart(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            设备【维修、维保、点检】堆叠条形图统计[天]
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.DevOpsRepairISPDaysStatisticsLineChart(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            设备【维修、维保、点检 】折线图统计[天]
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.GetChartData(System.String,System.String,System.Collections.Generic.IEnumerable{Ropin.Inspection.Model.ViewModel.LGS.DevOpsRepairISPDaysStatistics})">
+            <summary>
+            根据数据源,类型、名称获取的数组形式的数据
+            </summary>
+            <param name="type">数据类型</param>
+            <param name="name">数据名称</param>
+            <param name="content">【点检、维保、维修】根据天获取数据统计的数据源</param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.AlarmOrderStatusStatisticsMonthPieChart(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            报警工单状态【1、2、3、4、5、6、7】-饼图统计
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.GeDevOpsStatisticsMonthPieAsync(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            维保状态【1、2、3、4、5、6、7】-饼图统计
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.GeRepairOrderStatisticsMonthPieAsync(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            维修状态【1、2、3、4、5、6、7】-饼图统计
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.DevOpsDaysStatisticsList(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            设备维保-统计[天]-列表
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.RepairOrderDaysStatisticsList(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            设备维修-统计[天]-列表
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Ropin.Inspection.Api.Controllers.LGS.ScreenInterfaceDataController.ISPDaysStatisticsList(Ropin.Inspection.Model.SearchModel.LGS.LargeScreenInterfaceDataSearch)">
+            <summary>
+            设备点检-统计[天]-列表
+            </summary>
+            <param name="search"></param>
+            <returns></returns>
+        </member>
         <member name="M:Ropin.Inspection.Api.Controllers.MTN.mtnAlarmShadowRecordController.#ctor(Ropin.Inspection.Service.MTN.Interface.ImtnAlarmShadowRecordService)">
             <summary>
             构造函数

二進制
Ropin.Inspection.Api/obj/Debug/net5.0/ref/Ropin.Inspection.Api.dll


二進制
Ropin.Inspection.Api/obj/Debug/net5.0/refint/Ropin.Inspection.Api.dll


+ 2 - 2
Ropin.Inspection.Common/Helper/FanyiHelper.cs

@@ -385,7 +385,7 @@ namespace Ropin.Inspection.Common.Helper
                     if (esponse.IsSuccessStatusCode)
                     {
                         json = await esponse.Content.ReadAsStringAsync();
-                        if (!boxNo.StartsWith("0270012") && json.StartsWith("[null")&& json.EndsWith("null]"))
+                        if (!boxNo.StartsWith("0270012") && !boxNo.StartsWith("8888") && json.StartsWith("[null")&& json.EndsWith("null]"))
                         {
                             using (var httpClient2 = new HttpClient())
                             {
@@ -554,7 +554,7 @@ namespace Ropin.Inspection.Common.Helper
                                 {
                                     dtvue = new DateTime(long.Parse(deviceVueList[i]?.timestamp), DateTimeKind.Utc);
                                 }
-                  
+
                                 if (deviceVueList[i] == null || dtvue < DateTime.Now.AddMinutes(-10))
                                 {
                                     return jResult;

二進制
Ropin.Inspection.Common/bin/Debug/net5.0/Ropin.Inspection.Common.dll


二進制
Ropin.Inspection.Common/bin/Debug/net5.0/Ropin.Inspection.Common.pdb


二進制
Ropin.Inspection.Common/obj/Debug/net5.0/Ropin.Inspection.Common.dll


二進制
Ropin.Inspection.Common/obj/Debug/net5.0/Ropin.Inspection.Common.pdb


+ 20 - 0
Ropin.Inspection.Model/SearchModel/LGS/LargeScreenSearch.cs

@@ -14,4 +14,24 @@ namespace Ropin.Inspection.Model.SearchModel.LGS
         public string C_StoreCode { get; set; }
         public string C_Status { get; set; }
     }
+    public class LargeScreenInterfaceDataSearch
+    {
+        public string DevCode { get; set; }
+        public int Days { get; set; } = 30;
+        //total=所以、normal=4、abnormal=3
+        //【approval=1;confirm=2;repairOn=3;complete=4;cancel=5;repairRework=6;repairCompleted=7】
+        public string DataType { get; set; } = "total";
+        public bool LableIsShow { get; set; } = true;
+        public int MonthNum { get; set; } = 6;
+        public List<int> StatusArray { get; set; }  
+        public List<LargeScreenInterfaceListColumns> Columns { get; set; }
+    }
+    public class LargeScreenInterfaceListColumns
+    {
+        public string title { get; set; }
+        public string key { get; set; }
+        public int width { get; set; } = 100;
+        public string align { get; set; } = "center";
+        public bool sortable { get; set; } = true;
+    }
 }

+ 65 - 0
Ropin.Inspection.Model/ViewModel/LGS/LargeScreenViewModel.cs

@@ -25,4 +25,69 @@ namespace Ropin.Inspection.Model.ViewModel.LGS
         public string C_Modifier { get; set; }
         public string C_Status { get; set; }
     }
+    public class LargeScreenImageModel
+    {
+        public string Id { get; set; }
+        public string base64Image { get; set; }
+    }
+    #region 大屏数据接口实体
+    //设备维修、维保、点检 每天统计【3、4、总数】
+    public class DevOpsRepairISPDaysStatistics
+    {
+        public string SpecificDay { get; set; }
+        public decimal DevOpsNormal { get; set; }
+        public decimal DevOpsAbnormal { get; set; }
+        public long? DevOpsTotal { get; set; }
+        public decimal RepairOrderNormal { get; set; }
+        public decimal RepairOrderAbnormal { get; set; }
+        public long? RepairOrderTotal { get; set; }
+        public decimal ISPNormal { get; set; }
+        public decimal ISPAbnormal { get; set; }
+        public long? ISPTotal { get; set; }
+    }
+    //设备维修、维保、点检 每天状态统计
+    public class DaysStatusStatistics
+    {
+        public string SpecificDay { get; set; }
+        public decimal Status1 { get; set; }
+        public decimal Status2 { get; set; }
+        public decimal Status3 { get; set; }
+        public decimal Status4 { get; set; }
+        public decimal Status5 { get; set; }
+        public decimal Status6 { get; set; }
+        public decimal Status7 { get; set; }
+        public long? StatusTotal { get; set; }
+    }
+    public class LargeScreenInterfaceBar
+    {
+        public string name { get; set; }
+        public string type { get; set; }
+        public List<string> data {  get; set; }
+    }
+    public class LargeScreenInterfaceStackBar
+    {
+        public string name { get; set; }
+        public string type { get; set; }
+        public string stack { get; set; }
+        public LabelStackBarModel label { get; set; }
+        public List<string> data { get; set; }
+    }
+    public class LabelStackBarModel
+    {
+        public bool show { get; set; }
+    }
+    public class LargeScreenInterfaceLine
+    {
+        public string name { get; set; }
+        public string type { get; set; }
+        public string stack { get; set; }
+        public List<string> data { get; set; }
+    }
+    public class LargeScreenInterfacePie
+    {
+        public string value { get; set; }
+        public string name { get; set; }
+    }
+
+    #endregion
 }

二進制
Ropin.Inspection.Model/bin/Debug/net5.0/Ropin.Inspection.Common.dll


二進制
Ropin.Inspection.Model/bin/Debug/net5.0/Ropin.Inspection.Common.pdb


二進制
Ropin.Inspection.Model/bin/Debug/net5.0/Ropin.Inspection.Model.dll


二進制
Ropin.Inspection.Model/bin/Debug/net5.0/Ropin.Inspection.Model.pdb


二進制
Ropin.Inspection.Model/obj/Debug/net5.0/Ropin.Inspection.Model.csproj.AssemblyReference.cache


二進制
Ropin.Inspection.Model/obj/Debug/net5.0/Ropin.Inspection.Model.dll


二進制
Ropin.Inspection.Model/obj/Debug/net5.0/Ropin.Inspection.Model.pdb


二進制
Ropin.Inspection.Model/obj/Debug/net5.0/ref/Ropin.Inspection.Model.dll


部分文件因文件數量過多而無法顯示