yandaniu hace 2 semanas
padre
commit
ada0a34230
Se han modificado 100 ficheros con 1096 adiciones y 103 borrados
  1. BIN
      .vs/ProjectEvaluation/ropin.inspection.api.metadata.v6.1
  2. BIN
      .vs/ProjectEvaluation/ropin.inspection.api.projects.v6.1
  3. BIN
      .vs/Ropin.Inspection.Api/DesignTimeBuild/.dtbcache.v2
  4. BIN
      .vs/Ropin.Inspection.Api/DesignTimeBuild/.dtbcache.v2.r1557
  5. BIN
      .vs/Ropin.Inspection.Api/DesignTimeBuild/.dtbcache.v2.r1611
  6. BIN
      .vs/Ropin.Inspection.Api/FileContentIndex/22cab696-a827-44f2-9404-689fd237340c.vsidx
  7. BIN
      .vs/Ropin.Inspection.Api/FileContentIndex/256ef591-bf0e-491f-9489-f65d9bbde78a.vsidx
  8. BIN
      .vs/Ropin.Inspection.Api/FileContentIndex/39f4dbc9-f33c-4174-aaf5-1cc167bca454.vsidx
  9. BIN
      .vs/Ropin.Inspection.Api/FileContentIndex/7ad50b2d-af3a-4eeb-8348-9db558609e0e.vsidx
  10. BIN
      .vs/Ropin.Inspection.Api/FileContentIndex/87dfc6b1-0076-4636-9004-456e894b5521.vsidx
  11. BIN
      .vs/Ropin.Inspection.Api/FileContentIndex/badfdae1-8bbe-4746-8f1d-62c45d7fdab4.vsidx
  12. BIN
      .vs/Ropin.Inspection.Api/FileContentIndex/f308ca90-56cb-4b35-8f09-e1ecb77d3451.vsidx
  13. BIN
      .vs/Ropin.Inspection.Api/v17/.futdcache.v2
  14. BIN
      .vs/Ropin.Inspection.Api/v17/.futdcache.v2.r1557
  15. BIN
      .vs/Ropin.Inspection.Api/v17/.futdcache.v2.r1611
  16. BIN
      .vs/Ropin.Inspection.Api/v17/.suo
  17. BIN
      .vs/Ropin.Inspection.Api/v17/.suo.r1557
  18. BIN
      .vs/Ropin.Inspection.Api/v17/.suo.r1611
  19. BIN
      .vs/Ropin.Inspection.Api/v17/fileList.bin.r1557
  20. BIN
      .vs/Ropin.Inspection.Api/v17/fileList.bin.r1611
  21. BIN
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Core.Extensions.dll
  22. BIN
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Core.Extensions.pdb
  23. BIN
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Common.dll
  24. BIN
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Common.pdb
  25. BIN
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Model.dll
  26. BIN
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Model.pdb
  27. BIN
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Repository.dll
  28. BIN
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Repository.pdb
  29. BIN
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Service.dll
  30. BIN
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Service.pdb
  31. BIN
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Tasks.dll
  32. BIN
      Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Tasks.pdb
  33. BIN
      Ropin.Core.Extensions/obj/Debug/net5.0/Ropin.Core.Extensions.csproj.AssemblyReference.cache
  34. BIN
      Ropin.Core.Extensions/obj/Debug/net5.0/Ropin.Core.Extensions.dll
  35. BIN
      Ropin.Core.Extensions/obj/Debug/net5.0/Ropin.Core.Extensions.pdb
  36. BIN
      Ropin.Environmentally.AlarmService/obj/Debug/net5.0/Ropin.Environmentally.AlarmService.csproj.AssemblyReference.cache
  37. BIN
      Ropin.Environmentally.DcsService/obj/Debug/net5.0/Ropin.Environmentally.DcsService.csproj.AssemblyReference.cache
  38. BIN
      Ropin.Environmentally.LedgeService1/obj/Debug/net5.0/Ropin.Environmentally.LedgeService1.csproj.AssemblyReference.cache
  39. 1 1
      Ropin.Environmentally.VideoService/Ropin.Environmentally.VideoService.csproj
  40. BIN
      Ropin.Environmentally.VideoService/obj/Debug/net5.0/Ropin.Environmentally.VideoService.csproj.AssemblyReference.cache
  41. 4 0
      Ropin.Environmentally.VideoService/obj/Debug/net7.0/.NETCoreApp,Version=v7.0.AssemblyAttributes.cs
  42. 24 0
      Ropin.Environmentally.VideoService/obj/Debug/net7.0/Ropin.Environmentally.VideoService.AssemblyInfo.cs
  43. 1 0
      Ropin.Environmentally.VideoService/obj/Debug/net7.0/Ropin.Environmentally.VideoService.AssemblyInfoInputs.cache
  44. 17 0
      Ropin.Environmentally.VideoService/obj/Debug/net7.0/Ropin.Environmentally.VideoService.GeneratedMSBuildEditorConfig.editorconfig
  45. BIN
      Ropin.Environmentally.VideoService/obj/Debug/net7.0/Ropin.Environmentally.VideoService.assets.cache
  46. BIN
      Ropin.Environmentally.VideoService/obj/Debug/net7.0/Ropin.Environmentally.VideoService.csproj.AssemblyReference.cache
  47. 5 5
      Ropin.Environmentally.VideoService/obj/Ropin.Environmentally.VideoService.csproj.nuget.dgspec.json
  48. 0 2
      Ropin.Environmentally.VideoService/obj/Ropin.Environmentally.VideoService.csproj.nuget.g.targets
  49. 61 70
      Ropin.Environmentally.VideoService/obj/project.assets.json
  50. 4 4
      Ropin.Environmentally.VideoService/obj/project.nuget.cache
  51. BIN
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Core.Extensions.dll
  52. BIN
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Core.Extensions.pdb
  53. BIN
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Environmentally.WebScada.Views.dll
  54. BIN
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Environmentally.WebScada.Views.pdb
  55. BIN
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Environmentally.WebScada.dll
  56. BIN
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Environmentally.WebScada.pdb
  57. BIN
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Common.dll
  58. BIN
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Common.pdb
  59. BIN
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Model.dll
  60. BIN
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Model.pdb
  61. BIN
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Repository.dll
  62. BIN
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Repository.pdb
  63. BIN
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Service.dll
  64. BIN
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Service.pdb
  65. BIN
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Tasks.dll
  66. BIN
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Tasks.pdb
  67. 26 0
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/logs/2025/202509/20250912.txt
  68. 0 0
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/logs/2025/202509/20250924.txt
  69. 0 0
      Ropin.Environmentally.WebScada/bin/Debug/net5.0/logs/2025/202509/20250924_error.txt
  70. BIN
      Ropin.Environmentally.WebScada/obj/Debug/net5.0/Ropin.Environmentally.WebScada.Views.dll
  71. BIN
      Ropin.Environmentally.WebScada/obj/Debug/net5.0/Ropin.Environmentally.WebScada.Views.pdb
  72. BIN
      Ropin.Environmentally.WebScada/obj/Debug/net5.0/Ropin.Environmentally.WebScada.csproj.AssemblyReference.cache
  73. BIN
      Ropin.Environmentally.WebScada/obj/Debug/net5.0/Ropin.Environmentally.WebScada.dll
  74. BIN
      Ropin.Environmentally.WebScada/obj/Debug/net5.0/Ropin.Environmentally.WebScada.pdb
  75. BIN
      Ropin.IOT.MqttService/obj/Debug/net5.0/Ropin.IOT.MqttService.csproj.AssemblyReference.cache
  76. BIN
      Ropin.IOT.MsgService/obj/Debug/net5.0/Ropin.IOT.MsgService.csproj.AssemblyReference.cache
  77. 34 2
      Ropin.Inspection.Api/Controllers/Base/AccountController.cs
  78. 1 0
      Ropin.Inspection.Api/Controllers/Base/FileImportController.cs
  79. 147 2
      Ropin.Inspection.Api/Controllers/Base/WxController.cs
  80. 182 0
      Ropin.Inspection.Api/Controllers/LGS/ImageLibraryController.cs
  81. 99 1
      Ropin.Inspection.Api/Controllers/LGS/ScreenInterfaceDataController.cs
  82. 378 0
      Ropin.Inspection.Api/Controllers/MTN/DevOpsPlanController.cs
  83. 1 3
      Ropin.Inspection.Api/Controllers/SYS/TsysMessageController.cs
  84. 22 3
      Ropin.Inspection.Api/Controllers/SYS/TsysOrganizeController.cs
  85. 0 4
      Ropin.Inspection.Api/Filters/RequestMiddleware.cs
  86. 0 1
      Ropin.Inspection.Api/Properties/PublishProfiles/FolderProfile.pubxml.user
  87. 1 1
      Ropin.Inspection.Api/Properties/launchSettings.json
  88. 2 0
      Ropin.Inspection.Api/Ropin.Inspection.Api.csproj
  89. 13 3
      Ropin.Inspection.Api/Startup.cs
  90. 63 1
      Ropin.Inspection.Api/TmtnDevOpsContentController.cs
  91. 10 0
      Ropin.Inspection.Api/appsettings.Development.json
  92. BIN
      Ropin.Inspection.Api/bin/Debug/net5.0/CommunityToolkit.HighPerformance.dll
  93. BIN
      Ropin.Inspection.Api/bin/Debug/net5.0/Microsoft.Bcl.AsyncInterfaces.dll
  94. BIN
      Ropin.Inspection.Api/bin/Debug/net5.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll
  95. BIN
      Ropin.Inspection.Api/bin/Debug/net5.0/Microsoft.Extensions.DependencyInjection.dll
  96. BIN
      Ropin.Inspection.Api/bin/Debug/net5.0/Microsoft.Extensions.Logging.Abstractions.dll
  97. BIN
      Ropin.Inspection.Api/bin/Debug/net5.0/Microsoft.Extensions.Logging.dll
  98. BIN
      Ropin.Inspection.Api/bin/Debug/net5.0/Microsoft.Extensions.Options.dll
  99. BIN
      Ropin.Inspection.Api/bin/Debug/net5.0/Microsoft.Extensions.Primitives.dll
  100. BIN
      Ropin.Inspection.Api/bin/Debug/net5.0/Minio.dll

BIN
.vs/ProjectEvaluation/ropin.inspection.api.metadata.v6.1


BIN
.vs/ProjectEvaluation/ropin.inspection.api.projects.v6.1


BIN
.vs/Ropin.Inspection.Api/DesignTimeBuild/.dtbcache.v2


BIN
.vs/Ropin.Inspection.Api/DesignTimeBuild/.dtbcache.v2.r1557


BIN
.vs/Ropin.Inspection.Api/DesignTimeBuild/.dtbcache.v2.r1611


BIN
.vs/Ropin.Inspection.Api/FileContentIndex/22cab696-a827-44f2-9404-689fd237340c.vsidx


BIN
.vs/Ropin.Inspection.Api/FileContentIndex/256ef591-bf0e-491f-9489-f65d9bbde78a.vsidx


BIN
.vs/Ropin.Inspection.Api/FileContentIndex/39f4dbc9-f33c-4174-aaf5-1cc167bca454.vsidx


BIN
.vs/Ropin.Inspection.Api/FileContentIndex/7ad50b2d-af3a-4eeb-8348-9db558609e0e.vsidx


BIN
.vs/Ropin.Inspection.Api/FileContentIndex/87dfc6b1-0076-4636-9004-456e894b5521.vsidx


BIN
.vs/Ropin.Inspection.Api/FileContentIndex/badfdae1-8bbe-4746-8f1d-62c45d7fdab4.vsidx


BIN
.vs/Ropin.Inspection.Api/FileContentIndex/f308ca90-56cb-4b35-8f09-e1ecb77d3451.vsidx


BIN
.vs/Ropin.Inspection.Api/v17/.futdcache.v2


BIN
.vs/Ropin.Inspection.Api/v17/.futdcache.v2.r1557


BIN
.vs/Ropin.Inspection.Api/v17/.futdcache.v2.r1611


BIN
.vs/Ropin.Inspection.Api/v17/.suo


BIN
.vs/Ropin.Inspection.Api/v17/.suo.r1557


BIN
.vs/Ropin.Inspection.Api/v17/.suo.r1611


BIN
.vs/Ropin.Inspection.Api/v17/fileList.bin.r1557


BIN
.vs/Ropin.Inspection.Api/v17/fileList.bin.r1611


BIN
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Core.Extensions.dll


BIN
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Core.Extensions.pdb


BIN
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Common.dll


BIN
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Common.pdb


BIN
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Model.dll


BIN
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Model.pdb


BIN
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Repository.dll


BIN
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Repository.pdb


BIN
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Service.dll


BIN
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Service.pdb


BIN
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Tasks.dll


BIN
Ropin.Core.Extensions/bin/Debug/net5.0/Ropin.Inspection.Tasks.pdb


BIN
Ropin.Core.Extensions/obj/Debug/net5.0/Ropin.Core.Extensions.csproj.AssemblyReference.cache


BIN
Ropin.Core.Extensions/obj/Debug/net5.0/Ropin.Core.Extensions.dll


BIN
Ropin.Core.Extensions/obj/Debug/net5.0/Ropin.Core.Extensions.pdb


BIN
Ropin.Environmentally.AlarmService/obj/Debug/net5.0/Ropin.Environmentally.AlarmService.csproj.AssemblyReference.cache


BIN
Ropin.Environmentally.DcsService/obj/Debug/net5.0/Ropin.Environmentally.DcsService.csproj.AssemblyReference.cache


BIN
Ropin.Environmentally.LedgeService1/obj/Debug/net5.0/Ropin.Environmentally.LedgeService1.csproj.AssemblyReference.cache


+ 1 - 1
Ropin.Environmentally.VideoService/Ropin.Environmentally.VideoService.csproj

@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk.Web">
 
   <PropertyGroup>
-    <TargetFramework>net5.0</TargetFramework>
+    <TargetFramework>net7.0</TargetFramework>
     <UserSecretsId>9976f691-8999-4c0c-8766-8032196a5153</UserSecretsId>
     <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
   </PropertyGroup>

BIN
Ropin.Environmentally.VideoService/obj/Debug/net5.0/Ropin.Environmentally.VideoService.csproj.AssemblyReference.cache


+ 4 - 0
Ropin.Environmentally.VideoService/obj/Debug/net7.0/.NETCoreApp,Version=v7.0.AssemblyAttributes.cs

@@ -0,0 +1,4 @@
+// <autogenerated />
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v7.0", FrameworkDisplayName = ".NET 7.0")]

+ 24 - 0
Ropin.Environmentally.VideoService/obj/Debug/net7.0/Ropin.Environmentally.VideoService.AssemblyInfo.cs

@@ -0,0 +1,24 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Reflection;
+
+[assembly: Microsoft.Extensions.Configuration.UserSecrets.UserSecretsIdAttribute("9976f691-8999-4c0c-8766-8032196a5153")]
+[assembly: System.Reflection.AssemblyCompanyAttribute("Ropin.Environmentally.VideoService")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
+[assembly: System.Reflection.AssemblyProductAttribute("Ropin.Environmentally.VideoService")]
+[assembly: System.Reflection.AssemblyTitleAttribute("Ropin.Environmentally.VideoService")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+
+// 由 MSBuild WriteCodeFragment 类生成。
+

+ 1 - 0
Ropin.Environmentally.VideoService/obj/Debug/net7.0/Ropin.Environmentally.VideoService.AssemblyInfoInputs.cache

@@ -0,0 +1 @@
+8580902356af726e01bf32d8c1db59809411833a

+ 17 - 0
Ropin.Environmentally.VideoService/obj/Debug/net7.0/Ropin.Environmentally.VideoService.GeneratedMSBuildEditorConfig.editorconfig

@@ -0,0 +1,17 @@
+is_global = true
+build_property.TargetFramework = net7.0
+build_property.TargetPlatformMinVersion = 
+build_property.UsingMicrosoftNETSdkWeb = true
+build_property.ProjectTypeGuids = 
+build_property.InvariantGlobalization = 
+build_property.PlatformNeutralAssembly = 
+build_property.EnforceExtendedAnalyzerRules = 
+build_property._SupportedPlatformList = Linux,macOS,Windows
+build_property.RootNamespace = Ropin.Environmentally.VideoService
+build_property.RootNamespace = Ropin.Environmentally.VideoService
+build_property.ProjectDir = E:\Ropin\svn\SH_HB\Source_SQ\Ropin.Inspection.Api\Ropin.Environmentally.VideoService\
+build_property.RazorLangVersion = 7.0
+build_property.SupportLocalizedComponentNames = 
+build_property.GenerateRazorMetadataSourceChecksumAttributes = 
+build_property.MSBuildProjectDirectory = E:\Ropin\svn\SH_HB\Source_SQ\Ropin.Inspection.Api\Ropin.Environmentally.VideoService
+build_property._RazorSourceGeneratorDebug = 

BIN
Ropin.Environmentally.VideoService/obj/Debug/net7.0/Ropin.Environmentally.VideoService.assets.cache


BIN
Ropin.Environmentally.VideoService/obj/Debug/net7.0/Ropin.Environmentally.VideoService.csproj.AssemblyReference.cache


+ 5 - 5
Ropin.Environmentally.VideoService/obj/Ropin.Environmentally.VideoService.csproj.nuget.dgspec.json

@@ -108,7 +108,7 @@
           "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
         ],
         "originalTargetFrameworks": [
-          "net5.0"
+          "net7.0"
         ],
         "sources": {
           "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
@@ -116,8 +116,8 @@
           "https://api.nuget.org/v3/index.json": {}
         },
         "frameworks": {
-          "net5.0": {
-            "targetAlias": "net5.0",
+          "net7.0": {
+            "targetAlias": "net7.0",
             "projectReferences": {
               "E:\\Ropin\\svn\\SH_HB\\Source_SQ\\Ropin.Inspection.Api\\Ropin.Core.Common\\Ropin.Core.Common.csproj": {
                 "projectPath": "E:\\Ropin\\svn\\SH_HB\\Source_SQ\\Ropin.Inspection.Api\\Ropin.Core.Common\\Ropin.Core.Common.csproj"
@@ -141,8 +141,8 @@
         }
       },
       "frameworks": {
-        "net5.0": {
-          "targetAlias": "net5.0",
+        "net7.0": {
+          "targetAlias": "net7.0",
           "dependencies": {
             "FBoxClientDriver": {
               "target": "Package",

+ 0 - 2
Ropin.Environmentally.VideoService/obj/Ropin.Environmentally.VideoService.csproj.nuget.g.targets

@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="no"?>
 <Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
-    <Import Project="$(NuGetPackageRoot)\system.runtime.compilerservices.unsafe\6.1.0\buildTransitive\netcoreapp2.0\System.Runtime.CompilerServices.Unsafe.targets" Condition="Exists('$(NuGetPackageRoot)\system.runtime.compilerservices.unsafe\6.1.0\buildTransitive\netcoreapp2.0\System.Runtime.CompilerServices.Unsafe.targets')" />
-    <Import Project="$(NuGetPackageRoot)\system.threading.channels\7.0.0\buildTransitive\netcoreapp2.0\System.Threading.Channels.targets" Condition="Exists('$(NuGetPackageRoot)\system.threading.channels\7.0.0\buildTransitive\netcoreapp2.0\System.Threading.Channels.targets')" />
     <Import Project="$(NuGetPackageRoot)\system.text.encodings.web\9.0.1\buildTransitive\netcoreapp2.0\System.Text.Encodings.Web.targets" Condition="Exists('$(NuGetPackageRoot)\system.text.encodings.web\9.0.1\buildTransitive\netcoreapp2.0\System.Text.Encodings.Web.targets')" />
     <Import Project="$(NuGetPackageRoot)\system.io.pipelines\9.0.1\buildTransitive\netcoreapp2.0\System.IO.Pipelines.targets" Condition="Exists('$(NuGetPackageRoot)\system.io.pipelines\9.0.1\buildTransitive\netcoreapp2.0\System.IO.Pipelines.targets')" />
     <Import Project="$(NuGetPackageRoot)\microsoft.bcl.asyncinterfaces\9.0.8\buildTransitive\netcoreapp2.0\Microsoft.Bcl.AsyncInterfaces.targets" Condition="Exists('$(NuGetPackageRoot)\microsoft.bcl.asyncinterfaces\9.0.8\buildTransitive\netcoreapp2.0\Microsoft.Bcl.AsyncInterfaces.targets')" />

+ 61 - 70
Ropin.Environmentally.VideoService/obj/project.assets.json

@@ -1,7 +1,7 @@
 {
   "version": 3,
   "targets": {
-    "net5.0": {
+    "net7.0": {
       "AdvancedStringBuilder/0.1.0": {
         "type": "package",
         "compile": {
@@ -30,16 +30,13 @@
       },
       "CommunityToolkit.HighPerformance/8.4.0": {
         "type": "package",
-        "dependencies": {
-          "System.Runtime.CompilerServices.Unsafe": "6.1.0"
-        },
         "compile": {
-          "lib/netstandard2.1/CommunityToolkit.HighPerformance.dll": {
+          "lib/net7.0/CommunityToolkit.HighPerformance.dll": {
             "related": ".pdb;.xml"
           }
         },
         "runtime": {
-          "lib/netstandard2.1/CommunityToolkit.HighPerformance.dll": {
+          "lib/net7.0/CommunityToolkit.HighPerformance.dll": {
             "related": ".pdb;.xml"
           }
         }
@@ -944,10 +941,10 @@
           }
         }
       },
-      "Microsoft.Win32.SystemEvents/5.0.0": {
+      "Microsoft.Win32.SystemEvents/4.7.0": {
         "type": "package",
         "dependencies": {
-          "Microsoft.NETCore.Platforms": "5.0.0"
+          "Microsoft.NETCore.Platforms": "3.1.0"
         },
         "compile": {
           "ref/netstandard2.0/_._": {
@@ -1191,14 +1188,11 @@
       },
       "QRCoder/1.4.3": {
         "type": "package",
-        "dependencies": {
-          "System.Drawing.Common": "5.0.3"
-        },
         "compile": {
-          "lib/net5.0/QRCoder.dll": {}
+          "lib/net6.0/QRCoder.dll": {}
         },
         "runtime": {
-          "lib/net5.0/QRCoder.dll": {}
+          "lib/net6.0/QRCoder.dll": {}
         }
       },
       "RabbitMQ.Client/6.8.1": {
@@ -1792,20 +1786,19 @@
           }
         }
       },
-      "System.Drawing.Common/5.0.3": {
+      "System.Drawing.Common/4.7.0": {
         "type": "package",
         "dependencies": {
-          "Microsoft.Win32.SystemEvents": "5.0.0"
+          "Microsoft.NETCore.Platforms": "3.1.0",
+          "Microsoft.Win32.SystemEvents": "4.7.0"
         },
         "compile": {
-          "ref/netcoreapp3.0/System.Drawing.Common.dll": {
+          "ref/netcoreapp3.0/_._": {
             "related": ".xml"
           }
         },
         "runtime": {
-          "lib/netcoreapp3.0/System.Drawing.Common.dll": {
-            "related": ".xml"
-          }
+          "lib/netstandard2.0/System.Drawing.Common.dll": {}
         },
         "runtimeTargets": {
           "runtimes/unix/lib/netcoreapp3.0/System.Drawing.Common.dll": {
@@ -2249,18 +2242,18 @@
       },
       "System.Reactive/6.0.1": {
         "type": "package",
-        "dependencies": {
-          "System.Threading.Tasks.Extensions": "4.5.4"
-        },
         "compile": {
-          "lib/netstandard2.0/System.Reactive.dll": {
+          "lib/net6.0/System.Reactive.dll": {
             "related": ".xml"
           }
         },
         "runtime": {
-          "lib/netstandard2.0/System.Reactive.dll": {
+          "lib/net6.0/System.Reactive.dll": {
             "related": ".xml"
           }
+        },
+        "build": {
+          "buildTransitive/net6.0/_._": {}
         }
       },
       "System.Reflection/4.3.0": {
@@ -2398,20 +2391,20 @@
           }
         }
       },
-      "System.Runtime.CompilerServices.Unsafe/6.1.0": {
+      "System.Runtime.CompilerServices.Unsafe/6.0.0": {
         "type": "package",
         "compile": {
-          "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": {
+          "lib/net6.0/System.Runtime.CompilerServices.Unsafe.dll": {
             "related": ".xml"
           }
         },
         "runtime": {
-          "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": {
+          "lib/net6.0/System.Runtime.CompilerServices.Unsafe.dll": {
             "related": ".xml"
           }
         },
         "build": {
-          "buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets": {}
+          "buildTransitive/netcoreapp3.1/_._": {}
         }
       },
       "System.Runtime.Extensions/4.3.0": {
@@ -2974,17 +2967,17 @@
       "System.Threading.Channels/7.0.0": {
         "type": "package",
         "compile": {
-          "lib/netstandard2.1/System.Threading.Channels.dll": {
+          "lib/net7.0/System.Threading.Channels.dll": {
             "related": ".xml"
           }
         },
         "runtime": {
-          "lib/netstandard2.1/System.Threading.Channels.dll": {
+          "lib/net7.0/System.Threading.Channels.dll": {
             "related": ".xml"
           }
         },
         "build": {
-          "buildTransitive/netcoreapp2.0/System.Threading.Channels.targets": {}
+          "buildTransitive/net6.0/_._": {}
         }
       },
       "System.Threading.Tasks/4.3.0": {
@@ -3138,28 +3131,25 @@
       "ToolGood.Words/3.1.0.2": {
         "type": "package",
         "compile": {
-          "lib/netstandard2.1/ToolGood.Words.dll": {
+          "lib/net6.0/ToolGood.Words.dll": {
             "related": ".xml"
           }
         },
         "runtime": {
-          "lib/netstandard2.1/ToolGood.Words.dll": {
+          "lib/net6.0/ToolGood.Words.dll": {
             "related": ".xml"
           }
         }
       },
       "Ulid/1.4.1": {
         "type": "package",
-        "dependencies": {
-          "System.Runtime.CompilerServices.Unsafe": "4.5.2"
-        },
         "compile": {
-          "lib/netstandard2.1/Ulid.dll": {
+          "lib/net7.0/Ulid.dll": {
             "related": ".xml"
           }
         },
         "runtime": {
-          "lib/netstandard2.1/Ulid.dll": {
+          "lib/net7.0/Ulid.dll": {
             "related": ".xml"
           }
         }
@@ -3167,12 +3157,12 @@
       "ZXing.Net/0.16.9": {
         "type": "package",
         "compile": {
-          "lib/net5.0/zxing.dll": {
+          "lib/net7.0/zxing.dll": {
             "related": ".XML"
           }
         },
         "runtime": {
-          "lib/net5.0/zxing.dll": {
+          "lib/net7.0/zxing.dll": {
             "related": ".XML"
           }
         }
@@ -4609,24 +4599,25 @@
         "ref/xamarinwatchos10/_._"
       ]
     },
-    "Microsoft.Win32.SystemEvents/5.0.0": {
-      "sha512": "Bh6blKG8VAKvXiLe2L+sEsn62nc1Ij34MrNxepD2OCrS5cpCwQa9MeLyhVQPQ/R4Wlzwuy6wMK8hLb11QPDRsQ==",
+    "Microsoft.Win32.SystemEvents/4.7.0": {
+      "sha512": "mtVirZr++rq+XCDITMUdnETD59XoeMxSpLRIII7JRI6Yj0LEDiO1pPn0ktlnIj12Ix8bfvQqQDMMIF9wC98oCA==",
       "type": "package",
-      "path": "microsoft.win32.systemevents/5.0.0",
+      "path": "microsoft.win32.systemevents/4.7.0",
       "files": [
         ".nupkg.metadata",
         ".signature.p7s",
-        "Icon.png",
         "LICENSE.TXT",
         "THIRD-PARTY-NOTICES.TXT",
         "lib/net461/Microsoft.Win32.SystemEvents.dll",
         "lib/net461/Microsoft.Win32.SystemEvents.xml",
         "lib/netstandard2.0/Microsoft.Win32.SystemEvents.dll",
         "lib/netstandard2.0/Microsoft.Win32.SystemEvents.xml",
-        "microsoft.win32.systemevents.5.0.0.nupkg.sha512",
+        "microsoft.win32.systemevents.4.7.0.nupkg.sha512",
         "microsoft.win32.systemevents.nuspec",
         "ref/net461/Microsoft.Win32.SystemEvents.dll",
         "ref/net461/Microsoft.Win32.SystemEvents.xml",
+        "ref/net472/Microsoft.Win32.SystemEvents.dll",
+        "ref/net472/Microsoft.Win32.SystemEvents.xml",
         "ref/netstandard2.0/Microsoft.Win32.SystemEvents.dll",
         "ref/netstandard2.0/Microsoft.Win32.SystemEvents.xml",
         "runtimes/win/lib/netcoreapp2.0/Microsoft.Win32.SystemEvents.dll",
@@ -6142,21 +6133,18 @@
         "system.diagnostics.tracing.nuspec"
       ]
     },
-    "System.Drawing.Common/5.0.3": {
-      "sha512": "rEQZuslijqdsO0pkJn7LtGBaMc//YVA8de0meGihkg9oLPaN+w+/Pb5d71lgp0YjPoKgBKNMvdq0IPnoW4PEng==",
+    "System.Drawing.Common/4.7.0": {
+      "sha512": "v+XbyYHaZjDfn0ENmJEV1VYLgGgCTx1gnfOBcppowbpOAriglYgGCvFCPr2EEZyBvXlpxbEsTwkOlInl107ahA==",
       "type": "package",
-      "path": "system.drawing.common/5.0.3",
+      "path": "system.drawing.common/4.7.0",
       "files": [
         ".nupkg.metadata",
         ".signature.p7s",
-        "Icon.png",
         "LICENSE.TXT",
         "THIRD-PARTY-NOTICES.TXT",
         "lib/MonoAndroid10/_._",
         "lib/MonoTouch10/_._",
         "lib/net461/System.Drawing.Common.dll",
-        "lib/netcoreapp3.0/System.Drawing.Common.dll",
-        "lib/netcoreapp3.0/System.Drawing.Common.xml",
         "lib/netstandard2.0/System.Drawing.Common.dll",
         "lib/xamarinios10/_._",
         "lib/xamarinmac20/_._",
@@ -6178,7 +6166,7 @@
         "runtimes/win/lib/netcoreapp2.0/System.Drawing.Common.dll",
         "runtimes/win/lib/netcoreapp3.0/System.Drawing.Common.dll",
         "runtimes/win/lib/netcoreapp3.0/System.Drawing.Common.xml",
-        "system.drawing.common.5.0.3.nupkg.sha512",
+        "system.drawing.common.4.7.0.nupkg.sha512",
         "system.drawing.common.nuspec",
         "useSharedDesignerContext.txt",
         "version.txt"
@@ -7699,26 +7687,29 @@
         "system.runtime.nuspec"
       ]
     },
-    "System.Runtime.CompilerServices.Unsafe/6.1.0": {
-      "sha512": "5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==",
+    "System.Runtime.CompilerServices.Unsafe/6.0.0": {
+      "sha512": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
       "type": "package",
-      "path": "system.runtime.compilerservices.unsafe/6.1.0",
+      "path": "system.runtime.compilerservices.unsafe/6.0.0",
       "files": [
         ".nupkg.metadata",
         ".signature.p7s",
         "Icon.png",
-        "PACKAGE.md",
-        "buildTransitive/net461/System.Runtime.CompilerServices.Unsafe.targets",
-        "buildTransitive/net462/_._",
-        "buildTransitive/net6.0/_._",
+        "LICENSE.TXT",
+        "THIRD-PARTY-NOTICES.TXT",
         "buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets",
-        "lib/net462/System.Runtime.CompilerServices.Unsafe.dll",
-        "lib/net462/System.Runtime.CompilerServices.Unsafe.xml",
-        "lib/net7.0/_._",
+        "buildTransitive/netcoreapp3.1/_._",
+        "lib/net461/System.Runtime.CompilerServices.Unsafe.dll",
+        "lib/net461/System.Runtime.CompilerServices.Unsafe.xml",
+        "lib/net6.0/System.Runtime.CompilerServices.Unsafe.dll",
+        "lib/net6.0/System.Runtime.CompilerServices.Unsafe.xml",
+        "lib/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.dll",
+        "lib/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.xml",
         "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll",
         "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml",
-        "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512",
-        "system.runtime.compilerservices.unsafe.nuspec"
+        "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
+        "system.runtime.compilerservices.unsafe.nuspec",
+        "useSharedDesignerContext.txt"
       ]
     },
     "System.Runtime.Extensions/4.3.0": {
@@ -9676,7 +9667,7 @@
     }
   },
   "projectFileDependencyGroups": {
-    "net5.0": [
+    "net7.0": [
       "FBoxClientDriver >= 1.2.0",
       "InitQ >= 1.0.0.14",
       "Microsoft.Bcl.AsyncInterfaces >= 9.0.8",
@@ -9713,7 +9704,7 @@
         "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
       ],
       "originalTargetFrameworks": [
-        "net5.0"
+        "net7.0"
       ],
       "sources": {
         "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
@@ -9721,8 +9712,8 @@
         "https://api.nuget.org/v3/index.json": {}
       },
       "frameworks": {
-        "net5.0": {
-          "targetAlias": "net5.0",
+        "net7.0": {
+          "targetAlias": "net7.0",
           "projectReferences": {
             "E:\\Ropin\\svn\\SH_HB\\Source_SQ\\Ropin.Inspection.Api\\Ropin.Core.Common\\Ropin.Core.Common.csproj": {
               "projectPath": "E:\\Ropin\\svn\\SH_HB\\Source_SQ\\Ropin.Inspection.Api\\Ropin.Core.Common\\Ropin.Core.Common.csproj"
@@ -9746,8 +9737,8 @@
       }
     },
     "frameworks": {
-      "net5.0": {
-        "targetAlias": "net5.0",
+      "net7.0": {
+        "targetAlias": "net7.0",
         "dependencies": {
           "FBoxClientDriver": {
             "target": "Package",

+ 4 - 4
Ropin.Environmentally.VideoService/obj/project.nuget.cache

@@ -1,6 +1,6 @@
 {
   "version": 2,
-  "dgSpecHash": "dqRs5EXedMVcohjEEeuPoIMSn8r+16kKQ11/JtYvMkvHNDtwzMyMPyfauYKNoDSUyBJOht4QfGCZYh5JsL67Fw==",
+  "dgSpecHash": "lKKdAk+dKBTE/GrEQR/I2T5T3AQhXSvLGyOu0l+h3ZjpqEdAQP3BJwx4gTfvf9TfBCLKX/BlTCdDl5yxWR1aWg==",
   "success": true,
   "projectFilePath": "E:\\Ropin\\svn\\SH_HB\\Source_SQ\\Ropin.Inspection.Api\\Ropin.Environmentally.VideoService\\Ropin.Environmentally.VideoService.csproj",
   "expectedPackageFiles": [
@@ -62,7 +62,7 @@
     "D:\\.nuget\\packages\\microsoft.openapi\\1.2.3\\microsoft.openapi.1.2.3.nupkg.sha512",
     "D:\\.nuget\\packages\\microsoft.visualstudio.azure.containers.tools.targets\\1.17.2\\microsoft.visualstudio.azure.containers.tools.targets.1.17.2.nupkg.sha512",
     "D:\\.nuget\\packages\\microsoft.win32.primitives\\4.3.0\\microsoft.win32.primitives.4.3.0.nupkg.sha512",
-    "D:\\.nuget\\packages\\microsoft.win32.systemevents\\5.0.0\\microsoft.win32.systemevents.5.0.0.nupkg.sha512",
+    "D:\\.nuget\\packages\\microsoft.win32.systemevents\\4.7.0\\microsoft.win32.systemevents.4.7.0.nupkg.sha512",
     "D:\\.nuget\\packages\\minio\\6.0.5\\minio.6.0.5.nupkg.sha512",
     "D:\\.nuget\\packages\\mysql.data\\8.0.23\\mysql.data.8.0.23.nupkg.sha512",
     "D:\\.nuget\\packages\\mysqlconnector\\1.1.0\\mysqlconnector.1.1.0.nupkg.sha512",
@@ -117,7 +117,7 @@
     "D:\\.nuget\\packages\\system.diagnostics.diagnosticsource\\9.0.4\\system.diagnostics.diagnosticsource.9.0.4.nupkg.sha512",
     "D:\\.nuget\\packages\\system.diagnostics.tools\\4.3.0\\system.diagnostics.tools.4.3.0.nupkg.sha512",
     "D:\\.nuget\\packages\\system.diagnostics.tracing\\4.3.0\\system.diagnostics.tracing.4.3.0.nupkg.sha512",
-    "D:\\.nuget\\packages\\system.drawing.common\\5.0.3\\system.drawing.common.5.0.3.nupkg.sha512",
+    "D:\\.nuget\\packages\\system.drawing.common\\4.7.0\\system.drawing.common.4.7.0.nupkg.sha512",
     "D:\\.nuget\\packages\\system.globalization\\4.3.0\\system.globalization.4.3.0.nupkg.sha512",
     "D:\\.nuget\\packages\\system.globalization.calendars\\4.3.0\\system.globalization.calendars.4.3.0.nupkg.sha512",
     "D:\\.nuget\\packages\\system.globalization.extensions\\4.3.0\\system.globalization.extensions.4.3.0.nupkg.sha512",
@@ -147,7 +147,7 @@
     "D:\\.nuget\\packages\\system.reflection.typeextensions\\4.3.0\\system.reflection.typeextensions.4.3.0.nupkg.sha512",
     "D:\\.nuget\\packages\\system.resources.resourcemanager\\4.3.0\\system.resources.resourcemanager.4.3.0.nupkg.sha512",
     "D:\\.nuget\\packages\\system.runtime\\4.3.1\\system.runtime.4.3.1.nupkg.sha512",
-    "D:\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.1.0\\system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512",
+    "D:\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
     "D:\\.nuget\\packages\\system.runtime.extensions\\4.3.0\\system.runtime.extensions.4.3.0.nupkg.sha512",
     "D:\\.nuget\\packages\\system.runtime.handles\\4.3.0\\system.runtime.handles.4.3.0.nupkg.sha512",
     "D:\\.nuget\\packages\\system.runtime.interopservices\\4.3.0\\system.runtime.interopservices.4.3.0.nupkg.sha512",

BIN
Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Core.Extensions.dll


BIN
Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Core.Extensions.pdb


BIN
Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Environmentally.WebScada.Views.dll


BIN
Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Environmentally.WebScada.Views.pdb


BIN
Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Environmentally.WebScada.dll


BIN
Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Environmentally.WebScada.pdb


BIN
Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Common.dll


BIN
Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Common.pdb


BIN
Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Model.dll


BIN
Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Model.pdb


BIN
Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Repository.dll


BIN
Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Repository.pdb


BIN
Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Service.dll


BIN
Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Service.pdb


BIN
Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Tasks.dll


BIN
Ropin.Environmentally.WebScada/bin/Debug/net5.0/Ropin.Inspection.Tasks.pdb


+ 26 - 0
Ropin.Environmentally.WebScada/bin/Debug/net5.0/logs/2025/202509/20250912.txt

@@ -0,0 +1,26 @@
+2025-09-12 16:59:23,832  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1019] - MESSAGE: 1log-设备点预警报警-进入报警-Begin【设备ID=59e98720-f26a-4322-9dad-c92bb5d7ae8b;ala[id]=338301733134406920;strAlaColour=yellow;sendmsg=true;devspotColour=green】---
+ 2025-09-12 16:59:24,255  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1073] - MESSAGE: 1log-设备点预警报警-发送RabbitMQ消息-设备报警【设备ID=59e98720-f26a-4322-9dad-c92bb5d7ae8b;ala[id]=338301733134406920;strAlaColour=yellow;sendmsg=true;devspotColour=green;msgData={"C_DevStoreCode":"59e98720-f26a-4322-9dad-c92bb5d7ae8b","C_MsgTypeCode":"MSG_TYPE_017","C_SpotCode":null,"Subject":"设备点预警","Msg":"主机4中高段压差D3预警  值:995.822","DevNumber":"2021083008","DevName":"北小喷漆房4VOCs","UserName":"设备","UserMobile":null,"DevAddress":null,"DevOpsName":null,"CreateOn":"2025/9/12 16:59:24","GenerationType":1,"msgStatus":1,"FileList":null}】---
+ 2025-09-12 16:59:30,788  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [278] - MESSAGE: Task2-异常:由于目标计算机积极拒绝,无法连接。 (60.204.212.71:8085)
+ 2025-09-12 16:59:34,132  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1019] - MESSAGE: 1log-设备点预警报警-进入报警-Begin【设备ID=59e98720-f26a-4322-9dad-c92bb5d7ae8b;ala[id]=338301733134406920;strAlaColour=yellow;sendmsg=true;devspotColour=green】---
+ 2025-09-12 16:59:34,310  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1073] - MESSAGE: 1log-设备点预警报警-发送RabbitMQ消息-设备报警【设备ID=59e98720-f26a-4322-9dad-c92bb5d7ae8b;ala[id]=338301733134406920;strAlaColour=yellow;sendmsg=true;devspotColour=green;msgData={"C_DevStoreCode":"59e98720-f26a-4322-9dad-c92bb5d7ae8b","C_MsgTypeCode":"MSG_TYPE_017","C_SpotCode":null,"Subject":"设备点预警","Msg":"主机4中高段压差D3预警  值:995.822","DevNumber":"2021083008","DevName":"北小喷漆房4VOCs","UserName":"设备","UserMobile":null,"DevAddress":null,"DevOpsName":null,"CreateOn":"2025/9/12 16:59:34","GenerationType":1,"msgStatus":1,"FileList":null}】---
+ 2025-09-12 16:59:39,314  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [278] - MESSAGE: Task2-异常:由于目标计算机积极拒绝,无法连接。 (60.204.212.71:8085)
+ 2025-09-12 16:59:43,430  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1019] - MESSAGE: 1log-设备点预警报警-进入报警-Begin【设备ID=59e98720-f26a-4322-9dad-c92bb5d7ae8b;ala[id]=338301733134406920;strAlaColour=yellow;sendmsg=true;devspotColour=green】---
+ 2025-09-12 16:59:43,560  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1073] - MESSAGE: 1log-设备点预警报警-发送RabbitMQ消息-设备报警【设备ID=59e98720-f26a-4322-9dad-c92bb5d7ae8b;ala[id]=338301733134406920;strAlaColour=yellow;sendmsg=true;devspotColour=green;msgData={"C_DevStoreCode":"59e98720-f26a-4322-9dad-c92bb5d7ae8b","C_MsgTypeCode":"MSG_TYPE_017","C_SpotCode":null,"Subject":"设备点预警","Msg":"主机4中高段压差D3预警  值:995.822","DevNumber":"2021083008","DevName":"北小喷漆房4VOCs","UserName":"设备","UserMobile":null,"DevAddress":null,"DevOpsName":null,"CreateOn":"2025/9/12 16:59:43","GenerationType":1,"msgStatus":1,"FileList":null}】---
+ 2025-09-12 16:59:49,017  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [278] - MESSAGE: Task2-异常:由于目标计算机积极拒绝,无法连接。 (60.204.212.71:8085)
+ 2025-09-12 16:59:57,900  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1019] - MESSAGE: 1log-设备点预警报警-进入报警-Begin【设备ID=59e98720-f26a-4322-9dad-c92bb5d7ae8b;ala[id]=338301733134406920;strAlaColour=yellow;sendmsg=true;devspotColour=green】---
+ 2025-09-12 16:59:58,029  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1073] - MESSAGE: 1log-设备点预警报警-发送RabbitMQ消息-设备报警【设备ID=59e98720-f26a-4322-9dad-c92bb5d7ae8b;ala[id]=338301733134406920;strAlaColour=yellow;sendmsg=true;devspotColour=green;msgData={"C_DevStoreCode":"59e98720-f26a-4322-9dad-c92bb5d7ae8b","C_MsgTypeCode":"MSG_TYPE_017","C_SpotCode":null,"Subject":"设备点预警","Msg":"主机4中高段压差D3预警  值:995.822","DevNumber":"2021083008","DevName":"北小喷漆房4VOCs","UserName":"设备","UserMobile":null,"DevAddress":null,"DevOpsName":null,"CreateOn":"2025/9/12 16:59:57","GenerationType":1,"msgStatus":1,"FileList":null}】---
+ 2025-09-12 17:53:21,011  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1019] - MESSAGE: 1log-设备点预警报警-进入报警-Begin【设备ID=59e98720-f26a-4322-9dad-c92bb5d7ae8b;ala[id]=338301733134406920;strAlaColour=red;sendmsg=true;devspotColour=yellow】---
+ 2025-09-12 17:53:21,118  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1073] - MESSAGE: 1log-设备点预警报警-发送RabbitMQ消息-设备报警【设备ID=59e98720-f26a-4322-9dad-c92bb5d7ae8b;ala[id]=338301733134406920;strAlaColour=red;sendmsg=true;devspotColour=yellow;msgData={"C_DevStoreCode":"59e98720-f26a-4322-9dad-c92bb5d7ae8b","C_MsgTypeCode":"MSG_TYPE_012","C_SpotCode":null,"Subject":"设备点报警","Msg":"主机4中高段压差D3报警  值:1004.774","DevNumber":"2021083008","DevName":"北小喷漆房4VOCs","UserName":"设备","UserMobile":null,"DevAddress":null,"DevOpsName":null,"CreateOn":"2025/9/12 17:53:21","GenerationType":1,"msgStatus":1,"FileList":null}】---
+ 2025-09-12 17:55:59,719  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1019] - MESSAGE: 1log-设备点预警报警-进入报警-Begin【设备ID=59e98720-f26a-4322-9dad-c92bb5d7ae8b;ala[id]=338301733134406920;strAlaColour=yellow;sendmsg=true;devspotColour=red】---
+ 2025-09-12 17:55:59,870  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1073] - MESSAGE: 1log-设备点预警报警-发送RabbitMQ消息-设备报警【设备ID=59e98720-f26a-4322-9dad-c92bb5d7ae8b;ala[id]=338301733134406920;strAlaColour=yellow;sendmsg=true;devspotColour=red;msgData={"C_DevStoreCode":"59e98720-f26a-4322-9dad-c92bb5d7ae8b","C_MsgTypeCode":"MSG_TYPE_017","C_SpotCode":null,"Subject":"设备点预警","Msg":"主机4中高段压差D3预警  值:992.567","DevNumber":"2021083008","DevName":"北小喷漆房4VOCs","UserName":"设备","UserMobile":null,"DevAddress":null,"DevOpsName":null,"CreateOn":"2025/9/12 17:55:59","GenerationType":1,"msgStatus":1,"FileList":null}】---
+ 2025-09-12 18:04:17,116  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1019] - MESSAGE: 1log-设备点预警报警-进入报警-Begin【设备ID=59e98720-f26a-4322-9dad-c92bb5d7ae8b;ala[id]=338301733134406920;strAlaColour=red;sendmsg=true;devspotColour=yellow】---
+ 2025-09-12 18:04:17,227  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1073] - MESSAGE: 1log-设备点预警报警-发送RabbitMQ消息-设备报警【设备ID=59e98720-f26a-4322-9dad-c92bb5d7ae8b;ala[id]=338301733134406920;strAlaColour=red;sendmsg=true;devspotColour=yellow;msgData={"C_DevStoreCode":"59e98720-f26a-4322-9dad-c92bb5d7ae8b","C_MsgTypeCode":"MSG_TYPE_012","C_SpotCode":null,"Subject":"设备点报警","Msg":"主机4中高段压差D3报警  值:1026.566","DevNumber":"2021083008","DevName":"北小喷漆房4VOCs","UserName":"设备","UserMobile":null,"DevAddress":null,"DevOpsName":null,"CreateOn":"2025/9/12 18:04:17","GenerationType":1,"msgStatus":1,"FileList":null}】---
+ 2025-09-12 18:06:56,932  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1019] - MESSAGE: 1log-设备点预警报警-进入报警-Begin【设备ID=59e98720-f26a-4322-9dad-c92bb5d7ae8b;ala[id]=338301733134406920;strAlaColour=yellow;sendmsg=true;devspotColour=red】---
+ 2025-09-12 18:06:57,046  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1073] - MESSAGE: 1log-设备点预警报警-发送RabbitMQ消息-设备报警【设备ID=59e98720-f26a-4322-9dad-c92bb5d7ae8b;ala[id]=338301733134406920;strAlaColour=yellow;sendmsg=true;devspotColour=red;msgData={"C_DevStoreCode":"59e98720-f26a-4322-9dad-c92bb5d7ae8b","C_MsgTypeCode":"MSG_TYPE_017","C_SpotCode":null,"Subject":"设备点预警","Msg":"主机4中高段压差D3预警  值:964.988","DevNumber":"2021083008","DevName":"北小喷漆房4VOCs","UserName":"设备","UserMobile":null,"DevAddress":null,"DevOpsName":null,"CreateOn":"2025/9/12 18:06:56","GenerationType":1,"msgStatus":1,"FileList":null}】---
+ 2025-09-12 18:14:54,121  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1019] - MESSAGE: 1log-设备点预警报警-进入报警-Begin【设备ID=59e98720-f26a-4322-9dad-c92bb5d7ae8b;ala[id]=338301733134406920;strAlaColour=red;sendmsg=true;devspotColour=yellow】---
+ 2025-09-12 18:14:54,237  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1073] - MESSAGE: 1log-设备点预警报警-发送RabbitMQ消息-设备报警【设备ID=59e98720-f26a-4322-9dad-c92bb5d7ae8b;ala[id]=338301733134406920;strAlaColour=red;sendmsg=true;devspotColour=yellow;msgData={"C_DevStoreCode":"59e98720-f26a-4322-9dad-c92bb5d7ae8b","C_MsgTypeCode":"MSG_TYPE_012","C_SpotCode":null,"Subject":"设备点报警","Msg":"主机4中高段压差D3报警  值:1011.104","DevNumber":"2021083008","DevName":"北小喷漆房4VOCs","UserName":"设备","UserMobile":null,"DevAddress":null,"DevOpsName":null,"CreateOn":"2025/9/12 18:14:54","GenerationType":1,"msgStatus":1,"FileList":null}】---
+ 2025-09-12 18:17:21,276  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1019] - MESSAGE: 1log-设备点预警报警-进入报警-Begin【设备ID=59e98720-f26a-4322-9dad-c92bb5d7ae8b;ala[id]=338301733134406920;strAlaColour=yellow;sendmsg=true;devspotColour=red】---
+ 2025-09-12 18:17:21,397  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1073] - MESSAGE: 1log-设备点预警报警-发送RabbitMQ消息-设备报警【设备ID=59e98720-f26a-4322-9dad-c92bb5d7ae8b;ala[id]=338301733134406920;strAlaColour=yellow;sendmsg=true;devspotColour=red;msgData={"C_DevStoreCode":"59e98720-f26a-4322-9dad-c92bb5d7ae8b","C_MsgTypeCode":"MSG_TYPE_017","C_SpotCode":null,"Subject":"设备点预警","Msg":"主机4中高段压差D3预警  值:969.057","DevNumber":"2021083008","DevName":"北小喷漆房4VOCs","UserName":"设备","UserMobile":null,"DevAddress":null,"DevOpsName":null,"CreateOn":"2025/9/12 18:17:21","GenerationType":1,"msgStatus":1,"FileList":null}】---
+ 2025-09-12 18:20:11,524  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1019] - MESSAGE: 1log-设备点预警报警-进入报警-Begin【设备ID=59e98720-f26a-4322-9dad-c92bb5d7ae8b;ala[id]=338301733134406920;strAlaColour=red;sendmsg=true;devspotColour=yellow】---
+ 2025-09-12 18:20:11,821  INFO Ropin.Environmentally.WebScada.Work.HostedService.MoveNext [1073] - MESSAGE: 1log-设备点预警报警-发送RabbitMQ消息-设备报警【设备ID=59e98720-f26a-4322-9dad-c92bb5d7ae8b;ala[id]=338301733134406920;strAlaColour=red;sendmsg=true;devspotColour=yellow;msgData={"C_DevStoreCode":"59e98720-f26a-4322-9dad-c92bb5d7ae8b","C_MsgTypeCode":"MSG_TYPE_012","C_SpotCode":null,"Subject":"设备点报警","Msg":"主机4中高段压差D3报警  值:1019.332","DevNumber":"2021083008","DevName":"北小喷漆房4VOCs","UserName":"设备","UserMobile":null,"DevAddress":null,"DevOpsName":null,"CreateOn":"2025/9/12 18:20:11","GenerationType":1,"msgStatus":1,"FileList":null}】---
+ 

+ 0 - 0
Ropin.Environmentally.WebScada/bin/Debug/net5.0/logs/2025/202509/20250924.txt


+ 0 - 0
Ropin.Environmentally.WebScada/bin/Debug/net5.0/logs/2025/202509/20250924_error.txt


BIN
Ropin.Environmentally.WebScada/obj/Debug/net5.0/Ropin.Environmentally.WebScada.Views.dll


BIN
Ropin.Environmentally.WebScada/obj/Debug/net5.0/Ropin.Environmentally.WebScada.Views.pdb


BIN
Ropin.Environmentally.WebScada/obj/Debug/net5.0/Ropin.Environmentally.WebScada.csproj.AssemblyReference.cache


BIN
Ropin.Environmentally.WebScada/obj/Debug/net5.0/Ropin.Environmentally.WebScada.dll


BIN
Ropin.Environmentally.WebScada/obj/Debug/net5.0/Ropin.Environmentally.WebScada.pdb


BIN
Ropin.IOT.MqttService/obj/Debug/net5.0/Ropin.IOT.MqttService.csproj.AssemblyReference.cache


BIN
Ropin.IOT.MsgService/obj/Debug/net5.0/Ropin.IOT.MsgService.csproj.AssemblyReference.cache


+ 34 - 2
Ropin.Inspection.Api/Controllers/Base/AccountController.cs

@@ -197,8 +197,6 @@ namespace Ropin.Inspection.Api.Controllers
                 //new WeChatHelper(_httpClientFactory).PushMessageToUser();
                 #endregion
 
-
-
                 var user = await _userService.GetUserDetailByAsync(viewModel);
                 if (null == user)
                 {
@@ -490,5 +488,39 @@ namespace Ropin.Inspection.Api.Controllers
             }
             return ("未知", 0, 0);
         }
+
+        /// <summary>
+        /// 通过userid登录
+        /// </summary>
+        /// <param name="viewModel"></param>
+        /// <returns></returns>
+        [HttpGet("LoginById")]
+        [AllowAnonymous]
+        [ProducesResponseType(StatusCodes.Status200OK)]
+        public async Task<ApiResult> LoginById(Guid userId)
+        {
+            try
+            {
+                var user1 = await _userService.GetByIdAsync(userId);
+                if (user1 is null)
+                {
+                    return new ApiResult(ReturnCode.LoginError, "账户不存在!");
+                }
+                LoginModel viewModel = new LoginModel
+                {
+                    Mobile = user1.C_Mobile,
+                    Password = user1.C_Password,
+                };
+                var user = await _userService.GetUserDetailByAsync(viewModel);
+                
+                var token = _tokenHelper.CreateToken(user);
+                return new ApiResult<ComplexToken>(token, ReturnCode.Success);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+
+        }
     }
 }

+ 1 - 0
Ropin.Inspection.Api/Controllers/Base/FileImportController.cs

@@ -176,6 +176,7 @@ namespace Ropin.Inspection.Api.Controllers.Base
                 return new ApiResult(ReturnCode.GeneralError, "导入模版格式不对!");
             }
         }
+
         /// <summary>
         /// 导入巡检内容
         /// </summary>

+ 147 - 2
Ropin.Inspection.Api/Controllers/Base/WxController.cs

@@ -1,15 +1,28 @@
-using Microsoft.AspNetCore.Authorization;
+using Autofac.Core;
+using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Caching.Memory;
 using Microsoft.Extensions.Options;
+using Newtonsoft.Json;
+using NPOI.SS.Formula.Functions;
+using Ropin.Core.Extensions;
 using Ropin.Inspection.Api.Common;
 using Ropin.Inspection.Api.Common.Options;
+using Ropin.Inspection.Api.Common.Token;
+using Ropin.Inspection.Api.Filters;
 using Ropin.Inspection.Api.Wx;
 using Ropin.Inspection.Common.Helper;
+using Ropin.Inspection.Model.Entities;
+using Ropin.Inspection.Model.ViewModel;
+using Ropin.Inspection.Service.Interface;
 using System;
 using System.Collections.Generic;
+using System.IO;
 using System.Linq;
 using System.Net.Http;
+using System.Security.Claims;
 using System.Threading.Tasks;
+using System.Xml;
 
 namespace Ropin.Inspection.Api.Controllers
 {
@@ -17,10 +30,17 @@ namespace Ropin.Inspection.Api.Controllers
     {
         private readonly IOptionsMonitor<WXOptions> _options;
         private readonly IHttpClientFactory _httpClientFactory;
-        public WxController(IOptionsMonitor<WXOptions> options, IHttpClientFactory httpClientFactory)
+        private readonly IMemoryCache _memoryCache;
+        private readonly ITsysUserService _userService;
+        private readonly ITokenHelper _tokenHelper;
+
+        public WxController(IOptionsMonitor<WXOptions> options, IHttpClientFactory httpClientFactory, IMemoryCache memoryCache, ITsysUserService userService, ITokenHelper tokenHelper)
         {
             _options = options;
             _httpClientFactory = httpClientFactory;
+            _memoryCache = memoryCache;
+            _userService = userService;
+            _tokenHelper = tokenHelper;
         }
         // GET: api/<controller>
         [HttpGet]
@@ -49,5 +69,130 @@ namespace Ropin.Inspection.Api.Controllers
             var openid = await (new WeChatHelper(_httpClientFactory)).GetOpenIdByCodeAsync(jsCode);
             return new ApiResult<string>(openid, ReturnCode.Success);
         }
+
+
+        /// <summary>
+        /// 获取ai公众号的openID
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("GetQRCode")]
+        [AllowAnonymous]
+        public async Task<ApiResult> GetQRCode()
+        {
+            var openid = await (new WeChatHelper(_httpClientFactory)).GetQRCode();
+            return new ApiResult<WeChatQrCodeModel>(openid, ReturnCode.Success);
+        }
+
+        /// <summary>
+        /// 服务器配置认证
+        /// </summary>
+        /// <param name="signature"></param>
+        /// <param name="timestamp"></param>
+        /// <param name="nonce"></param>
+        /// <param name="echostr"></param>
+        /// <returns></returns>
+        [HttpGet("event")]
+        [AllowAnonymous]
+        public async Task<IActionResult> Verify(
+            [FromQuery] string signature,
+            [FromQuery] string timestamp,
+            [FromQuery] string nonce,
+            [FromQuery] string echostr)
+        {
+            try
+            {
+                using var reader = new StreamReader(Request.Body);
+                var xmlContent = await reader.ReadToEndAsync();
+            }
+            catch (Exception ex)
+            {
+                // 记录日志
+                return StatusCode(500);
+            }
+            // 验证逻辑可在此添加
+            return Content(echostr);
+        }
+
+        /// <summary>
+        /// 服务器事件推送
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("event")]
+        [AllowAnonymous]
+        public async Task<IActionResult> HandleEvent()
+        {
+            try
+            {
+                using var reader = new StreamReader(Request.Body);
+                var xmlContent = await reader.ReadToEndAsync();
+                var xmlDoc = new XmlDocument();
+                xmlDoc.LoadXml(xmlContent);
+
+                var message = new Dictionary<string, string>();
+                foreach (XmlNode node in xmlDoc.DocumentElement.ChildNodes)
+                {
+                    message[node.Name] = node.InnerText;
+                }
+                var json = JsonConvert.SerializeObject(message);
+                var callBack = JsonConvert.DeserializeObject<WeChatCallBack>(json);
+
+                //扫码把openid存缓存
+                _memoryCache.Set(callBack.Ticket, callBack.FromUserName, TimeSpan.FromMinutes(5));
+                //if (_memoryCache.TryGetValue(callBack.Ticket, out string scan))
+                //{
+                //    _memoryCache.Set(callBack.Ticket, callBack.FromUserName, TimeSpan.FromMinutes(5));
+                //}
+                //else
+                //{
+                //    _memoryCache.Set(callBack.Ticket, callBack.FromUserName, TimeSpan.FromMinutes(5));
+                //}
+                return Ok();
+            }
+            catch (Exception ex)
+            {
+                // 记录日志
+                return StatusCode(500);
+            }
+        }
+
+        /// <summary>
+        /// 扫码登录
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("ScanLogin")]
+        [AllowAnonymous]
+        public async Task<ApiResult> ScanLogin(WeChatQrCodeModel weChatQrCodeModel)
+        {
+            //扫码把openid存缓存
+            if (!_memoryCache.TryGetValue(weChatQrCodeModel.ticket, out string openid))
+            {
+                return new ApiResult<ComplexToken>(null, ReturnCode.Success,"未收到推送");
+            }
+            var u = await _userService.GetUserByOpenidAsync(openid);
+            if (u is null)
+            {
+                return new ApiResult(ReturnCode.LoginError, "账户不存在");
+            }
+            var user = await _userService.GetUserDetailByAsync(new Model.SearchModel.LoginModel { Mobile=u.C_Mobile,Password=u.C_Password,PrivModule= "SYS_PRIV_MODULE_001" });
+            
+            if (user.RoleTypePrivS == null || user.RoleTypePrivS.Count() == 0)
+            {
+                return new ApiResult(ReturnCode.LoginPriv, "没有权限");
+            }
+
+            var token = _tokenHelper.CreateToken(user);
+            return new ApiResult<ComplexToken>(token, ReturnCode.Success);
+        }
+    }
+
+    public class WeChatCallBack
+    {
+        public string ToUserName { get; set; }
+        public string FromUserName { get; set; }
+        public string CreateTime { get; set; }
+        public string MsgType { get; set; }
+        public string Event { get; set; }
+        public string EventKey { get; set; }
+        public string Ticket { get; set; }
     }
 }

+ 182 - 0
Ropin.Inspection.Api/Controllers/LGS/ImageLibraryController.cs

@@ -0,0 +1,182 @@
+using FluentEmail.Core;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Options;
+using Minio;
+using Minio.DataModel;
+using Minio.DataModel.Args;
+using Org.BouncyCastle.Asn1.Ocsp;
+using Org.BouncyCastle.Utilities;
+using Ropin.Inspection.Api.Common;
+using Ropin.Inspection.Api.Common.Options;
+using Ropin.Inspection.Common.Helper;
+using Ropin.Inspection.Model;
+using Ropin.Inspection.Model.Common;
+using Ropin.Inspection.Model.ViewModel.LGS;
+using Ropin.Inspection.Service.LGS.Interface;
+using System;
+using System.IO;
+using System.Net;
+using System.Security.Policy;
+using System.Threading.Tasks;
+
+namespace Ropin.Inspection.Api.Controllers.LGS
+{
+    public class ImageLibraryController : BaseController
+    {
+        private readonly IImageLibraryService _imageLibraryService;
+        private readonly IMinioClient minioClient;
+        private readonly MinioSettingsOptions minioSetting;
+        public ImageLibraryController(IImageLibraryService imageLibraryService, IMinioClient minioClient,IOptions<MinioSettingsOptions> options)
+        {
+            _imageLibraryService = imageLibraryService;
+            this.minioClient = minioClient;
+            minioSetting = options.Value;
+        }
+
+        /// <summary>
+        /// 添加
+        /// </summary>
+        /// <param name="imageLibraryModel"></param>
+        /// <returns></returns>
+        [HttpPost("Add")]
+        public async Task<ApiResult> AddAsync(ImageLibraryModel imageLibraryModel)
+        {
+            imageLibraryModel.C_Id=Guid.NewGuid().ToString();
+            if (!string.IsNullOrEmpty(imageLibraryModel.base64Image))
+            {
+                //id拼接扩展名当作minio文件名
+                var objName = imageLibraryModel.C_Id + imageLibraryModel.fileExName;
+                var imagePath=await UploadFile(imageLibraryModel.base64Image, objName);
+                imageLibraryModel.C_ImagePath = imagePath;
+            }
+            try
+            {
+                await _imageLibraryService.CreateOneAsync(imageLibraryModel);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+            return new ApiResult(ReturnCode.Success);
+        }
+
+        /// <summary>
+        /// 分页列表
+        /// </summary>
+        /// <param name="imageLibraryModel"></param>
+        /// <returns></returns>
+        [HttpPost("Page")]
+        public async Task<ApiResult> PageAsync(ImageLibraryInput input)
+        {
+            try
+            {
+                var libraryModels = await _imageLibraryService.PageAsync(input);
+                PagesModel<ImageLibraryModel> pages = new PagesModel<ImageLibraryModel>(libraryModels,input);
+                pages.Items.ForEach(item =>
+                {
+                    item.C_ImagePath = minioSetting.Urls + minioSetting.BucketName + item.C_ImagePath;
+                });
+                return new ApiResult<PagesModel<ImageLibraryModel>>(pages);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+
+        [HttpGet("Detail/{id}")]
+        public async Task<ApiResult> DeatilAsync(string id)
+        {
+            var result =await _imageLibraryService.GetByIdAsync(id);
+            result.C_ImagePath = minioSetting.Urls + minioSetting.BucketName + result.C_ImagePath;
+            return new ApiResult<ImageLibraryModel>(result);
+        }
+
+        /// <summary>
+        /// 删除
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [HttpDelete("DeleteReportAsync/{id}")]
+        public async Task<ApiResult> DeleteReportAsync(string id)
+        {
+            try
+            {
+                ImageLibraryModel model = await _imageLibraryService.GetByIdAsync(id);
+                await _imageLibraryService.DeleteAsync(id);
+                RemoveObjectArgs args = new RemoveObjectArgs()
+                    .WithBucket(minioSetting.BucketName)
+                    .WithObject(model.C_ImagePath);
+                await minioClient.RemoveObjectAsync(args);
+                return new ApiResult(ReturnCode.Success);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 更新
+        /// </summary>
+        /// <param name="imageLibraryModel"></param>
+        /// <returns></returns>
+        [HttpPost("Update")]
+        public async Task<ApiResult> UpdateAsync(ImageLibraryModel imageLibraryModel)
+        {
+            ImageLibraryModel model = await _imageLibraryService.GetByIdAsync(imageLibraryModel.C_Id);
+            if (!string.IsNullOrEmpty(imageLibraryModel.base64Image))
+            {
+                RemoveObjectArgs args = new RemoveObjectArgs()
+                    .WithBucket(minioSetting.BucketName)
+                    .WithObject(model.C_ImagePath);
+                await minioClient.RemoveObjectAsync(args);
+                //id拼接扩展名当作minio文件名
+                var objName = imageLibraryModel.C_Id + imageLibraryModel.fileExName;
+                var imagePath = await UploadFile(imageLibraryModel.base64Image, objName);
+                imageLibraryModel.C_ImagePath = imagePath;
+            }
+            var result=await  _imageLibraryService.UpdateOneAsync(imageLibraryModel);
+            return new ApiResult<bool>(result>=1);
+        }
+
+        /// <summary>
+        /// 上传文件到minIO
+        /// </summary>
+        /// <param name="base64Image"></param>
+        /// <param name="objName"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<string> UploadFile(string base64Image, string objName)
+        {
+            // 移除可能存在的 Base64 数据前缀
+            if (base64Image.StartsWith("data:image", StringComparison.OrdinalIgnoreCase))
+            {
+                int commaIndex = base64Image.IndexOf(',');
+                if (commaIndex > 0)
+                {
+                    base64Image = base64Image.Substring(commaIndex + 1);
+                }
+            }
+
+            // 将 Base64 字符串解码为字节数组
+            byte[] imageBytes = Convert.FromBase64String(base64Image);
+            var stream = new MemoryStream(imageBytes);
+            var putObj = new PutObjectArgs()
+                .WithBucket(minioSetting.BucketName)
+                .WithObject($"/image/{objName}")
+                //.WithFileName(fileName);
+                .WithStreamData(stream)
+                .WithObjectSize(stream.Length);
+            var minioResponse = await minioClient.PutObjectAsync(putObj);
+            if (minioResponse.ResponseStatusCode != HttpStatusCode.OK)
+            {
+                return string.Empty;
+            }
+            return $"/image/{objName}";
+
+        }
+    }
+}

+ 99 - 1
Ropin.Inspection.Api/Controllers/LGS/ScreenInterfaceDataController.cs

@@ -16,6 +16,11 @@ using Ropin.Inspection.Model.Common;
 using NPOI.SS.Formula.Functions;
 using Ropin.Inspection.Service.MTN.Interface;
 using Microsoft.EntityFrameworkCore.Metadata.Internal;
+using NPOI.POIFS.Crypt.Dsig;
+using Microsoft.AspNetCore.Authorization;
+using Ropin.Inspection.Model;
+using System.Data;
+using Newtonsoft.Json;
 
 namespace Ropin.Inspection.Api.Controllers.LGS
 {
@@ -26,17 +31,19 @@ namespace Ropin.Inspection.Api.Controllers.LGS
         private readonly ITmtnRepairOrderService _TmtnRepairOrderService;
         private readonly ITispRecordService _tispRecordService;
         private readonly ITmtnAlarmOrderService _tmtnAlarmOrderService;
+        private readonly ITsysMessageService _TsysMessageService;
         private static readonly ILog log = LogManager.GetLogger(typeof(ScreenInterfaceDataController));
         /// <summary>
         /// 构造函数
         /// </summary>
-        public ScreenInterfaceDataController(ILGSLargeScreenService lGSLargeScreenService, ITmtnDevOpsService TmtnDevOpsService, ITmtnRepairOrderService tmtnRepairOrderService, ITispRecordService tispRecordService, ITmtnAlarmOrderService tmtnAlarmOrderService)
+        public ScreenInterfaceDataController(ILGSLargeScreenService lGSLargeScreenService, ITmtnDevOpsService TmtnDevOpsService, ITmtnRepairOrderService tmtnRepairOrderService, ITispRecordService tispRecordService, ITmtnAlarmOrderService tmtnAlarmOrderService, ITsysMessageService TsysMessageService)
         {
             _lGSLargeScreenService = lGSLargeScreenService;
             _TmtnDevOpsService = TmtnDevOpsService;
             _TmtnRepairOrderService = tmtnRepairOrderService;
             _tispRecordService = tispRecordService;
             _tmtnAlarmOrderService = tmtnAlarmOrderService;
+            _TsysMessageService = TsysMessageService;
         }
 
         /// <summary>
@@ -1053,5 +1060,96 @@ namespace Ropin.Inspection.Api.Controllers.LGS
             }
         }
 
+        /// <summary>
+        /// 通过消息名称条件查询
+        /// </summary>
+        /// <param name="searchModel"></param>
+        /// <returns></returns>
+        [HttpPost("GetMessagesColumnByAsync")]
+        public async Task<ApiResult> GetMessagesColumnByAsync(TsysMessageSearchModel searchModel)
+        {
+            if (searchModel == null)
+            {
+                return new ApiResult(ReturnCode.ArgsError);
+            }
+            try
+            {
+                //统一接口加了start/end参数,
+                searchModel.BeginTime= searchModel.Start;
+                searchModel.EndTime= searchModel.End;
+                //TpushMsgModel
+                List<LargeScreenInterfaceListColumns> Columns = new List<LargeScreenInterfaceListColumns>();
+                Columns.Add(new LargeScreenInterfaceListColumns() { title = "设备名称", key = "devName" });
+                Columns.Add(new LargeScreenInterfaceListColumns() { title = "设备编码", key = "devNumber" });
+                Columns.Add(new LargeScreenInterfaceListColumns() { title = "报警时间", key = "createOn" });
+                Columns.Add(new LargeScreenInterfaceListColumns() { title = "报警类型", key = "subject" });
+                Columns.Add(new LargeScreenInterfaceListColumns() { title = "报警内容", key = "msg" });
+                Columns.Add(new LargeScreenInterfaceListColumns() { title = "报警来源", key = "userName" });
+                var contentList = await _TsysMessageService.GetConditionAsync(searchModel);
+                var contents=contentList.Select(x =>JsonConvert.DeserializeObject< TpushMsgModel>( x.C_Content)).ToList();
+                var data = new
+                {
+                    columns = Columns,
+                    data = new PagesModel<TpushMsgModel>(items: contents, searchModel)
+                };
+
+                return new ApiResult<object>(data);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 条件查询维修工单列表包含模板图片
+        /// </summary>
+        /// <param name="searchModel"></param>
+        /// <returns></returns>
+        [HttpPost("GetRepairOrderColumnAsync/{name=}")]
+        public async Task<ApiResult> GetRepairOrderColumnAsync(TmtnRepairOrderRecordSearchModel searchModel, string name)
+        {
+            if (searchModel == null)
+            {
+                return new ApiResult(ReturnCode.ArgsError);
+            }
+            //searchModel.IsPagination = false;
+            try
+            {
+                //TpushMsgModel
+                List<LargeScreenInterfaceListColumns> Columns = new List<LargeScreenInterfaceListColumns>();
+                Columns.Add(new LargeScreenInterfaceListColumns() { title = "维修原由", key = "c_Name" });
+                Columns.Add(new LargeScreenInterfaceListColumns() { title = "设备名称", key = "devName" });
+                Columns.Add(new LargeScreenInterfaceListColumns() { title = "维修人员", key = "createByName" });
+                Columns.Add(new LargeScreenInterfaceListColumns() { title = "维修时间", key = "d_CreateOn" });
+                Columns.Add(new LargeScreenInterfaceListColumns() { title = "维修状态", key = "c_Status1" });
+                IEnumerable<TmtnRepairOrderRecordDetailViewMode> contentList = await _TmtnRepairOrderService.GetRecordsConditionAsync(searchModel);
+                if (contentList != null && contentList.Count() > 0)
+                {
+                    if (contentList.FirstOrDefault() == null)
+                    {
+                        var removed = contentList.ToList();
+                        removed.RemoveAt(0);
+                        contentList = removed;
+                    }
+                    if ( !string.IsNullOrWhiteSpace(name))
+                    {
+                        contentList = contentList.Where(x => x.C_Name.Contains(name));
+                    }
+                }
+                var data = new
+                {
+                    columns = Columns,
+                    data = new PagesModel<TmtnRepairOrderRecordDetailViewMode>(contentList, searchModel)
+                };
+
+                return new ApiResult<object>(data);
+
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
     }
 }

+ 378 - 0
Ropin.Inspection.Api/Controllers/MTN/DevOpsPlanController.cs

@@ -0,0 +1,378 @@
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Ropin.Inspection.Api.Common;
+using Ropin.Inspection.Model.ViewModel.LGS;
+using Ropin.Inspection.Service.MTN.Interface;
+using System.Threading.Tasks;
+using System;
+using Ropin.Inspection.Model.ViewModel.MTN;
+using Microsoft.AspNetCore.Authorization;
+using Ropin.Inspection.Model;
+using Minio.DataModel.Args;
+using Minio;
+using System.Collections.Generic;
+using System.Linq;
+using Ropin.Inspection.Model.ViewModel;
+
+namespace Ropin.Inspection.Api.Controllers.MTN
+{
+    public class DevOpsPlanController : BaseController
+    {
+        private readonly IDevOpsPlanService _devOpsPlanService;
+        public DevOpsPlanController(IDevOpsPlanService devOpsPlanService)
+        {
+            _devOpsPlanService = devOpsPlanService;
+        }
+
+        /// <summary>
+        /// 添加
+        /// </summary>
+        /// <param name="devOpsPlanModel"></param>
+        /// <returns></returns>
+        [HttpPost("Add")]
+        public async Task<ApiResult> AddAsync(DevOpsPlanModel devOpsPlanModel)
+        {
+            try
+            {
+                await _devOpsPlanService.CreateOneAsync(devOpsPlanModel);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+            return new ApiResult(ReturnCode.Success);
+        }
+
+        /// <summary>
+        /// 分页列表
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("Page")]
+        public async Task<ApiResult> PageAsync(DevOpsPlanInput input)
+        {
+            try
+            {
+                var libraryModels = await _devOpsPlanService.PageAsync(input);
+                PagesModel<DevOpsPlanModel> pages = new PagesModel<DevOpsPlanModel>(libraryModels, input);
+                return new ApiResult<PagesModel<DevOpsPlanModel>>(pages);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+
+        [HttpGet("Detail/{id}")]
+        public async Task<ApiResult> DeatilAsync(string id)
+        {
+            var result = await _devOpsPlanService.GetByIdAsync(id);
+            return new ApiResult<DevOpsPlanModel>(result);
+        }
+
+
+        /// <summary>
+        /// 删除
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [HttpDelete("Delete/{id}")]
+        public async Task<ApiResult> DeleteReportAsync(string id)
+        {
+            try
+            {
+                await _devOpsPlanService.DeleteAsync(id);
+                return new ApiResult(ReturnCode.Success);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 更新
+        /// </summary>
+        /// <param name="devOpsPlanModel"></param>
+        /// <returns></returns>
+        [HttpPost("Update")]
+        public async Task<ApiResult> UpdateAsync(DevOpsPlanModel devOpsPlanModel)
+        {
+            var result = await _devOpsPlanService.UpdateOneAsync(devOpsPlanModel);
+            return new ApiResult<bool>(result >= 1);
+        }
+
+        /// <summary>
+        /// 添加运维计划设备
+        /// </summary>
+        /// <param name="devOpsPlanDeviceModel"></param>
+        /// <returns></returns>
+        [HttpPost("AddDevice")]
+        public async Task<ApiResult> AddDevice(DevOpsPlanDeviceModel devOpsPlanDeviceModel)
+        {
+            try
+            {
+                await _devOpsPlanService.AddDeviceAsync(devOpsPlanDeviceModel);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+            return new ApiResult(ReturnCode.Success);
+        }
+
+        /// <summary>
+        /// 设备列表
+        /// </summary>
+        /// <param name="imageLibraryModel"></param>
+        /// <returns></returns>
+        [HttpGet("DeviceList/{id}")]
+        public async Task<ApiResult> DeviceListAsync(string id)
+        {
+            try
+            {
+                var libraryModels = await _devOpsPlanService.DeviceListAsync(id);
+
+                //var result = libraryModels
+                //    .GroupBy(x => new 
+                //    {
+                //        x.CDevStoreCode,
+                //        x.DevStoreName,
+                //        x.Url,
+                //        x.CNumberCode,
+                //    })
+                //    .Select(x => new DevOpsPlanDeviceGroupModel
+                //    {
+                //        CDevStoreCode = x.Key.CDevStoreCode,
+                //        DevStoreName = x.Key.DevStoreName,
+                //        Url = x.Key.Url,
+                //        CNumberCode = x.Key.CNumberCode,
+                //    })
+                //    .ToList();
+                //result.ForEach(x =>
+                //{
+                //    x.Spots = libraryModels.Where(y => y.CDevStoreCode == x.CDevStoreCode).Select(y=>new SpotGroupModel { CName=y.SpotName,CSpotCode=y.CSpotCode}).ToList();
+                //});
+                return new ApiResult<List<DevOpsPlanDeviceModel>>(libraryModels);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 删除设备
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [HttpDelete("DeleteDeveice/{id}")]
+        public async Task<ApiResult> DeleteDeviceAsync(string id)
+        {
+            try
+            {
+                await _devOpsPlanService.DeleteDeviceAsync(id);
+                return new ApiResult(ReturnCode.Success);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 删除运维点
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [HttpDelete("DeleteDeviceSpot/{planId}/{spotId}")]
+        public async Task<ApiResult> DeleteDeviceSpotAsync(string planId, string spotId)
+        {
+            try
+            {
+                await _devOpsPlanService.DeleteDeviceSpotAsync(planId, spotId);
+                return new ApiResult(ReturnCode.Success);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 添加运维计划设备内容
+        /// </summary>
+        /// <param name="devOpsPlanContentModel"></param>
+        /// <returns></returns>
+        [HttpPost("AddDeviceContent")]
+        public async Task<ApiResult> AddDeviceContentAsync(DevOpsPlanContentModel devOpsPlanContentModel)
+        {
+            try
+            {
+                await _devOpsPlanService.AddDeviceContentAsync(devOpsPlanContentModel);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+            return new ApiResult(ReturnCode.Success);
+        }
+
+        /// <summary>
+        /// 设备内容列表
+        /// </summary>
+        /// <param name="imageLibraryModel"></param>
+        /// <returns></returns>
+        [HttpGet("DeviceContentList/{deviceId}/{id}")]
+        public async Task<ApiResult> DeviceContentListAsync(string deviceId ,string id)
+        {
+            try
+            {
+                var result = await _devOpsPlanService.DeviceContentListAsync(deviceId,id);
+                return new ApiResult<List<string>>(result);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 添加运维计划人员
+        /// </summary>
+        /// <param name="devOpsPlanPersonModel"></param>
+        /// <returns></returns>
+        [HttpPost("AddPlanPerson")]
+        public async Task<ApiResult> AddPlanPersonAsync(DevOpsPlanPersonModel devOpsPlanPersonModel)
+        {
+            try
+            {
+                await _devOpsPlanService.AddPlanPersonAsync(devOpsPlanPersonModel);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+            return new ApiResult(ReturnCode.Success);
+        }
+
+        /// <summary>
+        /// 计划人员列表
+        /// </summary>
+        /// <param name="imageLibraryModel"></param>
+        /// <returns></returns>
+        [HttpGet("PlanPersonList/{id}")]
+        public async Task<ApiResult> PlanPersonListAsync(string id)
+        {
+            try
+            {
+                var result = await _devOpsPlanService.PlanPersonListAsync(id);
+                return new ApiResult<List<string>>(result);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 取消计划
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("CancelPlan/{id}")]
+        public async Task<ApiResult> CancelPlan(string id)
+        {
+            var result = await _devOpsPlanService.CancelPlan(id);
+            return new ApiResult<bool>(result);
+        }
+
+        /// <summary>
+        /// 确认计划
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("ConfirmPlan/{id}")]
+        public async Task<ApiResult> ConfirmPlan(string id)
+        {
+            var result = await _devOpsPlanService.ConfirmPlan(id);
+            return new ApiResult<bool>(result);
+        }
+
+        /// <summary>
+        /// 生成工单
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [HttpPost("GenerateWorkOrder/{id}")]
+        public async Task<ApiResult> GenerateWorkOrder(string id)
+        {
+            try
+            {
+                var result = await _devOpsPlanService.GenerateWorkOrder(id);
+                return new ApiResult<bool>(result);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 查看工单
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [HttpPost("GetDevOps/{id}")]
+        public async Task<ApiResult> GetDevOps(string id, BaseSearchModel searchModel)
+        {
+            List<TmtnDevOpsDetailViewModel> result = await _devOpsPlanService.GetDevOps(id, searchModel);
+            return new ApiResult<PagesModel<TmtnDevOpsDetailViewModel>>(new PagesModel<TmtnDevOpsDetailViewModel>(result, searchModel));
+        }
+
+        [HttpPost("SetOpsTime")]
+        public async Task<ApiResult> SetOpsTime(SetOpsModel model)
+        {
+            var result = await _devOpsPlanService.SetOpsTime(model);
+            return new ApiResult<bool>(result);
+        }
+
+        /// <summary>
+        /// 通过工单id获取巡检点内容.
+        /// </summary>
+        [HttpPost("GetSpotContent")]
+        public async Task<ApiResult> GetSpotContent(GetOpsSpotContentModel model)
+        {
+            try
+            {
+                if (string.IsNullOrEmpty(model.QrCode) || string.IsNullOrEmpty(model.StoreCode))
+                {
+                    return new ApiResult(ReturnCode.GeneralError);
+                }
+                var spot = await _devOpsPlanService.GetSpotContent(model);
+                return new ApiResult<TispSpotViewModel>(spot);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 设置点检工单状态
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [HttpPost("SetWorkOrderStatus")]
+        public async Task<ApiResult> SetWorkOrderStatus(GetOpsSpotContentModel model)
+        {
+            try
+            {
+                 await _devOpsPlanService.SetWorkOrderStatus(model);
+                return new ApiResult<bool>(true);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
+    }
+}

+ 1 - 3
Ropin.Inspection.Api/Controllers/SYS/TsysMessageController.cs

@@ -339,6 +339,4 @@ namespace Ropin.Inspection.Api.Controllers
         }
 
     }
-}
-
-
+}

+ 22 - 3
Ropin.Inspection.Api/Controllers/SYS/TsysOrganizeController.cs

@@ -21,6 +21,9 @@ using Ropin.Inspection.Service;
 using Ropin.Inspection.Model.SearchModel;
 using ICSharpCode.SharpZipLib.Zip;
 using Ropin.Inspection.Model.SearchModel.SYS;
+using Microsoft.Extensions.Caching.Memory;
+using Ropin.Inspection.Common.Accessor.Interface;
+using System.Security.Claims;
 
 namespace Ropin.Inspection.Api.Controllers
 {
@@ -35,18 +38,23 @@ namespace Ropin.Inspection.Api.Controllers
         private readonly ITpntStoreOrgService _TpntStoreOrgService;
         private readonly ITsysUserService _tsysUserService;
         private readonly ITdevDevStoreService _TdevDevStoreService;
+        private readonly IMemoryCache _memoryCache;
+        private readonly IClaimsAccessor _claims;
         /// <summary>
         /// 构造函数
         /// </summary>
         /// <param name="service"></param>
         /// <param name="logger"></param>
-        public TsysOrganizeController(ITsysOrganizeService service, ILogger<TsysOrganizeController> logger, ITpntStoreOrgService TpntStoreOrgService, ITsysUserService tsysUserService, ITdevDevStoreService TdevDevStoreService)
+        public TsysOrganizeController(ITsysOrganizeService service, ILogger<TsysOrganizeController> logger, ITpntStoreOrgService TpntStoreOrgService, ITsysUserService tsysUserService, ITdevDevStoreService TdevDevStoreService,
+            IMemoryCache memoryCache,IClaimsAccessor claims)
         {
             _service = service;
             _logger = logger;
             _TpntStoreOrgService = TpntStoreOrgService;
             _tsysUserService = tsysUserService;
             _TdevDevStoreService = TdevDevStoreService;
+            _memoryCache = memoryCache;
+            _claims = claims;
         }
         /// <summary>
         /// 获取所有的组织架构,状态为非禁用
@@ -58,8 +66,16 @@ namespace Ropin.Inspection.Api.Controllers
         {
             try
             {
-                var list = await _service.GetOrganizeListTreeAsync();
-                return new ApiResult<List<TsysOrganizeTree>>(list);
+                if (_memoryCache.TryGetValue(_claims.LicenseTypeCode+ _claims.Linsence+_claims.OrganizeId+ "1",out List<TsysOrganizeTree> list))
+                {
+                    return new ApiResult<List<TsysOrganizeTree>>(list);
+                }
+                else
+                {
+                    list = await _service.GetOrganizeListTreeAsync();
+                    _memoryCache.Set(_claims.LicenseTypeCode + _claims.Linsence + _claims.OrganizeId + "1", list);
+                    return new ApiResult<List<TsysOrganizeTree>>(list);
+                }
             }
             catch (Exception ex)
             {
@@ -162,6 +178,7 @@ namespace Ropin.Inspection.Api.Controllers
             try
             {
                 await _service.CreateAsync(Organize);
+                _memoryCache.Remove(_claims.LicenseTypeCode + _claims.Linsence + _claims.OrganizeId + "1");
             }
             catch (Exception ex)
             {
@@ -186,6 +203,7 @@ namespace Ropin.Inspection.Api.Controllers
             try
             {
                 await _service.DeleteAsync(id);
+                _memoryCache.Remove(_claims.LicenseTypeCode + _claims.Linsence + _claims.OrganizeId + "1");
             }
             catch (Exception ex)
             {
@@ -211,6 +229,7 @@ namespace Ropin.Inspection.Api.Controllers
             try
             {
                 await _service.UpdateAsync(id, updateModel);
+                _memoryCache.Remove(_claims.LicenseTypeCode + _claims.Linsence + _claims.OrganizeId + "1");
             }
             catch (Exception ex)
             {

+ 0 - 4
Ropin.Inspection.Api/Filters/RequestMiddleware.cs

@@ -64,10 +64,6 @@ namespace Ropin.Inspection.Api.Filters
             {
                 logParams["RequestBody"] = bodyData;
             }
-            //
-            Console.WriteLine(reqUrl);
-            log.Info($"路径3:{reqUrl}");
-            //log.Info($"路径3:{reqUrl};参数:【{JsonConvert.SerializeObject(logParams)}】");
             await _next(httpContext);
         }
     }

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 1
Ropin.Inspection.Api/Properties/PublishProfiles/FolderProfile.pubxml.user


+ 1 - 1
Ropin.Inspection.Api/Properties/launchSettings.json

@@ -13,7 +13,7 @@
       "launchBrowser": true,
       "launchUrl": "swagger",
       "environmentVariables": {
-        "ASPNETCORE_ENVIRONMENT": "Production" //Development
+        "ASPNETCORE_ENVIRONMENT": "Development" //Production
       },
       "dotnetRunMessages": "true",
       "applicationUrl": "http://localhost:5000"

+ 2 - 0
Ropin.Inspection.Api/Ropin.Inspection.Api.csproj

@@ -38,12 +38,14 @@
     <PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="5.0.0" NoWarn="NU1605" />
     <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="5.0.0" />
     <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.0" />
+    <PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="9.0.8" />
     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.4" />
     <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.4">
       <PrivateAssets>all</PrivateAssets>
       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
     </PackageReference>
     <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.10.9" />
+    <PackageReference Include="Minio" Version="6.0.5" />
     <PackageReference Include="MySql.Data" Version="8.0.23" />
     <PackageReference Include="NPOI" Version="2.6.2" />
     <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="5.0.0-alpha.2" />

+ 13 - 3
Ropin.Inspection.Api/Startup.cs

@@ -40,6 +40,7 @@ using System.Linq;
 using System.Reflection;
 using System.Text;
 using System.Threading.Tasks;
+using Minio;
 
 namespace Ropin.Inspection.Api
 {
@@ -71,7 +72,7 @@ namespace Ropin.Inspection.Api
             JWTConfig config = new JWTConfig();
             Configuration.GetSection("JWT").Bind(config);
             #endregion
-
+            services.AddMemoryCache();
             #region 启用JWT认证
             services.AddAuthentication(options =>
             {
@@ -171,6 +172,15 @@ namespace Ropin.Inspection.Api
             services.AddAutoMapper(typeof(AutoMapperProfile));
             services.AddScoped<AuthorExistFilterAttribute>();
 
+            // 添加MinIO服务
+            var minioSettings = Configuration.GetSection("MinioSettings").Get<MinioSettingsOptions>();
+            services.Configure<MinioSettingsOptions>(Configuration.GetSection("MinioSettings"));
+            services.AddMinio(configureClient => configureClient
+                .WithEndpoint(minioSettings.Endpoint)
+                .WithCredentials(minioSettings.AccessKey, minioSettings.SecretKey)
+                .WithSSL(minioSettings.UseSSL)
+                .Build()
+            );
 
             // services.AddAutoMapper(typeof(Startup));
 
@@ -320,8 +330,8 @@ namespace Ropin.Inspection.Api
             //if (env.IsDevelopment())
             //{
             app.UseDeveloperExceptionPage();
-                //启用中间件服务生成Swagger作为JSON终结点
-                app.UseSwagger();
+            //启用中间件服务生成Swagger作为JSON终结点
+            app.UseSwagger();
             //启用中间件服务对swagger-ui,指定Swagger JSON终结点/swagger/
             app.UseSwaggerUI(c => c.SwaggerEndpoint("v1/swagger.json", "Ropin.Inspection.Api v1"));
             //}

+ 63 - 1
Ropin.Inspection.Api/TmtnDevOpsContentController.cs

@@ -1,12 +1,20 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
 using Microsoft.Extensions.Logging;
+using NPOI.HSSF.UserModel;
+using NPOI.SS.UserModel;
+using NPOI.XSSF.UserModel;
+using Renci.SshNet;
 using Ropin.Inspection.Api.Common;
 using Ropin.Inspection.Api.Controllers;
 using Ropin.Inspection.Model;
+using Ropin.Inspection.Model.ViewModel.DEV;
 using Ropin.Inspection.Service;
 using System;
 using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
 using System.Linq;
+using System.Security.Claims;
 using System.Threading.Tasks;
 
 namespace Ropin.Inspection.Api
@@ -161,6 +169,60 @@ namespace Ropin.Inspection.Api
             return new ApiResult(ReturnCode.Success);
         }
 
+        [HttpPost("ImportExcel")]
+        public async Task<ApiResult> ImportExcel([Required]string storeCode, [Required] IFormFile file)
+        {
+            try
+            {
+                var exName = file.FileName.Split('.').Last().ToLower();
+                if (exName != "xlsx" && exName != "xls")
+                {
+                    throw new Exception(":不是Excel文件");
+                }
+
+                IWorkbook wk = null;
+                if (exName == "xlsx")
+                {
+                    wk = new XSSFWorkbook(file.OpenReadStream());
+                }
+                else
+                {
+                    wk = new HSSFWorkbook(file.OpenReadStream());
+                }
+
+                DevOpsContentImportModel importModel = new DevOpsContentImportModel();
+                importModel.DevOpsContents = new List<TmtnDevOpsContentViewModel>();
+
+                //获取第一个sheet
+                ISheet sheet = wk.GetSheetAt(0);
+                for (int i = 1; i <= sheet.LastRowNum; i++)
+                {
+
+                    var row = sheet.GetRow(i);
+                    importModel.DevOpsContents.Add(new TmtnDevOpsContentViewModel
+                    {
+                        C_ID = Guid.NewGuid().ToString(),
+                        C_Number = row.Cells[0].ToString(),
+                        I_Sort = Convert.ToInt32(row.Cells[1].ToString()),
+                        C_Name = row.Cells[2].ToString(),
+                        C_AlarmLevel = row.Cells[3].ToString(),
+                        C_Status = row.Cells[4].ToString(),
+                        C_Remark = row.Cells[5].ToString(),
+                        C_CreateBy = GetUserId(User),
+                        D_CreateOn = DateTime.Now,
+                        C_StoreCode = storeCode
+                    });
+                }
+
+                await _TmtnDevOpsContentService.ImportExecl(importModel);
+
+                return new ApiResult(ReturnCode.Success);
+            }
+            catch (Exception ex)
+            {
+                return new ApiResult(ReturnCode.GeneralError, ex.Message);
+            }
+        }
     }
 }
 

+ 10 - 0
Ropin.Inspection.Api/appsettings.Development.json

@@ -59,5 +59,15 @@
     "UserName": "admin", //用户账号
     "VirtualHost": "/",
     "Password": "ropin@epe" //用户密码
+  },
+  "MinioSettings": {
+    "Urls": "http://60.204.212.71:19000/",
+    "BucketName": "huanbao", //"devalamvideobuckename",
+    "Endpoint": "60.204.212.71:19000", //"http://60.204.212.71:9000",
+    //"AccessKey": "1Iv7S6uxln1yZdz5pAUx",
+    //"SecretKey": "Hkx2EJU4MDwMGeDfaFeL9jkef2AZyfZXSUYQ30FC",
+    "AccessKey": "DnoIplsC8d4HEtgtZNeH",
+    "SecretKey": "LejZtCAEphekBYdsMPd2dR6CcYbkEWLw8wcaUpZV",
+    "UseSSL": false
   }
 }

BIN
Ropin.Inspection.Api/bin/Debug/net5.0/CommunityToolkit.HighPerformance.dll


BIN
Ropin.Inspection.Api/bin/Debug/net5.0/Microsoft.Bcl.AsyncInterfaces.dll


BIN
Ropin.Inspection.Api/bin/Debug/net5.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll


BIN
Ropin.Inspection.Api/bin/Debug/net5.0/Microsoft.Extensions.DependencyInjection.dll


BIN
Ropin.Inspection.Api/bin/Debug/net5.0/Microsoft.Extensions.Logging.Abstractions.dll


BIN
Ropin.Inspection.Api/bin/Debug/net5.0/Microsoft.Extensions.Logging.dll


BIN
Ropin.Inspection.Api/bin/Debug/net5.0/Microsoft.Extensions.Options.dll


BIN
Ropin.Inspection.Api/bin/Debug/net5.0/Microsoft.Extensions.Primitives.dll


BIN
Ropin.Inspection.Api/bin/Debug/net5.0/Minio.dll


Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio