综自数据库mysql/sql server双数据库支持

This commit is contained in:
green1193pr7sdfr 2025-07-04 14:10:12 +08:00
parent 55f26694f6
commit 0e3624d89c
36 changed files with 6320 additions and 392 deletions

90
build_output.txt Normal file
View File

@ -0,0 +1,90 @@
正在确定要还原的项目…
所有项目均是最新的,无法还原。
YunDa.ISAS.Core -> D:\Project\SOMS\server\src\YunDa.Core\YunDa.ISAS.Core\bin\Debug\netcoreapp3.1\YunDa.ISAS.Core.dll
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\Models\ImProject.cs(14,23): warning CS0114: “ImProject.Id”隐藏继承的成员“Entity<string>.Id”。若要使当前成员重写该实现请添加关键字 override。否则添加关键字 new。 [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\Models\ImDeviceYc.cs(9,23): warning CS0114: “ImDeviceYc.Id”隐藏继承的成员“Entity<string>.Id”。若要使当前成员重写该实现请添加关键字 override。否则添加关键字 new。 [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\Models\ImDeviceDz.cs(9,23): warning CS0114: “ImDeviceDz.Id”隐藏继承的成员“Entity<string>.Id”。若要使当前成员重写该实现请添加关键字 override。否则添加关键字 new。 [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\Models\ImDeviceYx.cs(9,23): warning CS0114: “ImDeviceYx.Id”隐藏继承的成员“Entity<string>.Id”。若要使当前成员重写该实现请添加关键字 override。否则添加关键字 new。 [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.ImDzcheckrule” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaFuncNameConsts” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaMaChannels” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaModules” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaModuleDirs” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaMonitorAreas” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaStatAccCtlers” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaStatAidVideoDevs” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaVAllChannels” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaVAllFunc4Modules” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaVMaChannels” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaVModules” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaVStatAidVideoDevs” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaVVideoPatrolItemExecObjs” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaVideoPatrols” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaVideoPatrolHis” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaVideoPatrolItems” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaVideoPatrolItemHis” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.ImDzcheckrule” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaFuncNameConsts” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaMaChannels” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaModules” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaModuleDirs” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaMonitorAreas” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaStatAccCtlers” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaStatAidVideoDevs” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaVAllChannels” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaVAllFunc4Modules” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaVMaChannels” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaVModules” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaVStatAidVideoDevs” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaVVideoPatrolItemExecObjs” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaVideoPatrols” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaVideoPatrolHis” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaVideoPatrolItems” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaVideoPatrolItemHis” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
生成失败。
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\Models\ImProject.cs(14,23): warning CS0114: “ImProject.Id”隐藏继承的成员“Entity<string>.Id”。若要使当前成员重写该实现请添加关键字 override。否则添加关键字 new。 [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\Models\ImDeviceYc.cs(9,23): warning CS0114: “ImDeviceYc.Id”隐藏继承的成员“Entity<string>.Id”。若要使当前成员重写该实现请添加关键字 override。否则添加关键字 new。 [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\Models\ImDeviceDz.cs(9,23): warning CS0114: “ImDeviceDz.Id”隐藏继承的成员“Entity<string>.Id”。若要使当前成员重写该实现请添加关键字 override。否则添加关键字 new。 [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\Models\ImDeviceYx.cs(9,23): warning CS0114: “ImDeviceYx.Id”隐藏继承的成员“Entity<string>.Id”。若要使当前成员重写该实现请添加关键字 override。否则添加关键字 new。 [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.ImDzcheckrule” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaFuncNameConsts” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaMaChannels” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaModules” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaModuleDirs” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaMonitorAreas” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaStatAccCtlers” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaStatAidVideoDevs” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaVAllChannels” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaVAllFunc4Modules” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaVMaChannels” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaVModules” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaVStatAidVideoDevs” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaVVideoPatrolItemExecObjs” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaVideoPatrols” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaVideoPatrolHis” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaVideoPatrolItems” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASE_Mysql_Context.cs(10,63): error CS0535: “ISMS_BASE_Mysql_Context”不实现接口成员“ISMS_BASE_Dasets.IaVideoPatrolItemHis” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.ImDzcheckrule” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaFuncNameConsts” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaMaChannels” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaModules” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaModuleDirs” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaMonitorAreas” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaStatAccCtlers” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaStatAidVideoDevs” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaVAllChannels” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaVAllFunc4Modules” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaVMaChannels” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaVModules” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaVStatAidVideoDevs” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaVVideoPatrolItemExecObjs” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaVideoPatrols” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaVideoPatrolHis” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaVideoPatrolItems” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\ISMS_BASEContext.cs(14,59): error CS0535: “ISMS_BASEContext”不实现接口成员“ISMS_BASE_Dasets.IaVideoPatrolItemHis” [D:\Project\SOMS\server\src\YunDa.Domain\YunDa.ISMS.BASE.Entities\YunDa.SOMS.BASE.Entities.csproj]
4 个警告
36 个错误
已用时间 00:00:01.47

View File

@ -15,7 +15,7 @@ using YunDa.ISAS.DataTransferObject;
using YunDa.ISAS.EntityFrameworkCore.EntityFrameworkCore;
using YunDa.ISAS.MongoDB;
using YunDa.ISAS.Redis;
using YunDa.ISMS.BASE.Entities;
using YunDa.SOMS.BASE.Entities;
namespace YunDa.ISAS.Application.Core
{

View File

@ -26,6 +26,12 @@ using MongoDB.Bson.Serialization;
namespace YunDa.ISAS.Application.DataMonitoring.EnergyManagement
{
/*
线
*/
/// <summary>
/// 能耗概览应用服务
/// 提供功率统计、能耗分布和监控数据等功能
@ -918,7 +924,7 @@ namespace YunDa.ISAS.Application.DataMonitoring.EnergyManagement
foreach (var device in feederDevices)
{
feederEnergyDict[device.Id] = 0;
deviceNameDict[device.Id] = device.EquipmentInfo?.Name ?? $"馈线设备_{device.Id}";
deviceNameDict[device.Id] = device.Name;
}
// 6. 根据不同时间间隔处理数据

View File

@ -24,6 +24,14 @@ using Yunda.ISAS.MongoDB.Entities.DataMonitoring;
using System.Globalization;
namespace YunDa.ISAS.Application.DataMonitoring.EnergyManagement
{
/*
线
线F线电流监测
线
*/
/// <summary>
/// Feeder monitoring service providing feeder energy consumption, power composition, and power factor data queries.
/// Optimized version with extracted helper methods and improved performance.
@ -606,7 +614,7 @@ namespace YunDa.ISAS.Application.DataMonitoring.EnergyManagement
{
var feederSeries = new FeederSeries
{
FeederName = device.EquipmentInfo?.Name ?? $"馈线设备_{device.Id}",
FeederName = device.Name,
Values = new List<float>(new float[timeLabels.Count]) // 初始化为0值数组
};
result.FeederSeries.Add(feederSeries);
@ -653,20 +661,21 @@ namespace YunDa.ISAS.Application.DataMonitoring.EnergyManagement
// 2. 获取有功功率配置
var activePowerConfigs = _configRepository.GetAllIncluding(t => t.TelemeteringConfiguration)
.Where(t=>t.Name =="馈线功率")
.Where(t => t.IsActive &&
t.TelemeteringConfiguration != null &&
t.TelemeteringConfiguration.IsActive &&
(t.TelemeteringConfiguration.Name.Contains("有功功率") ||
t.TelemeteringConfiguration.Name.Contains("active power")) &&
(t.TelemeteringConfiguration.Name.Contains("有功")) &&
feederDevices.Select(d => d.Id).Contains(t.EnergyConsumptionDeviceId.Value))
.ToList();
// 3. 获取无功功率配置
var reactivePowerConfigs = _configRepository.GetAllIncluding(t => t.TelemeteringConfiguration)
.Where(t => t.Name == "馈线功率")
.Where(t => t.IsActive &&
t.TelemeteringConfiguration != null &&
t.TelemeteringConfiguration.IsActive &&
(t.TelemeteringConfiguration.Name.Contains("无功功率") ||
(t.TelemeteringConfiguration.Name.Contains("无功") ||
t.TelemeteringConfiguration.Name.Contains("reactive power")) &&
feederDevices.Select(d => d.Id).Contains(t.EnergyConsumptionDeviceId.Value))
.ToList();
@ -687,7 +696,7 @@ namespace YunDa.ISAS.Application.DataMonitoring.EnergyManagement
// 6. 为每个馈线设备计算功率数据
foreach (var device in feederDevices)
{
result.FeederNames.Add(device.EquipmentInfo?.Name ?? $"馈线设备_{device.Id}");
result.FeederNames.Add(device.Name);
// 计算有功功率
float activePower = await CalculateFeederPowerValue(activePowerConfigs, device.Id, startTime, endTime, interval);
@ -731,16 +740,17 @@ namespace YunDa.ISAS.Application.DataMonitoring.EnergyManagement
// 2. 获取功率因数配置
var powerFactorConfigs = _configRepository.GetAllIncluding(t => t.TelemeteringConfiguration)
.Where(t => t.Name == "馈线功率")
.Where(t => t.IsActive &&
t.TelemeteringConfiguration != null &&
t.TelemeteringConfiguration.IsActive &&
(t.TelemeteringConfiguration.Name.Contains("功率因数") ||
t.TelemeteringConfiguration.Name.Contains("power factor")) &&
(t.TelemeteringConfiguration.Name.Contains("功率因数") ) &&
feederDevices.Select(d => d.Id).Contains(t.EnergyConsumptionDeviceId.Value))
.ToList();
// 3. 获取有功功率配置(用于计算功率因数)
var activePowerConfigs = _configRepository.GetAllIncluding(t => t.TelemeteringConfiguration)
.Where(t => t.Name == "馈线功率")
.Where(t => t.IsActive &&
t.TelemeteringConfiguration != null &&
t.TelemeteringConfiguration.IsActive &&
@ -751,11 +761,11 @@ namespace YunDa.ISAS.Application.DataMonitoring.EnergyManagement
// 4. 获取视在功率配置(用于计算功率因数)
var apparentPowerConfigs = _configRepository.GetAllIncluding(t => t.TelemeteringConfiguration)
.Where(t => t.Name == "馈线功率")
.Where(t => t.IsActive &&
t.TelemeteringConfiguration != null &&
t.TelemeteringConfiguration.IsActive &&
(t.TelemeteringConfiguration.Name.Contains("视在功率") ||
t.TelemeteringConfiguration.Name.Contains("apparent power")) &&
(t.TelemeteringConfiguration.Name.Contains("视在功率")) &&
feederDevices.Select(d => d.Id).Contains(t.EnergyConsumptionDeviceId.Value))
.ToList();
@ -775,7 +785,7 @@ namespace YunDa.ISAS.Application.DataMonitoring.EnergyManagement
// 7. 为每个馈线设备计算功率因数
foreach (var device in feederDevices)
{
result.FeederNames.Add(device.EquipmentInfo?.Name ?? $"馈线设备_{device.Id}");
result.FeederNames.Add(device.Name);
float powerFactor = 0;

View File

@ -24,6 +24,12 @@ using Yunda.ISAS.MongoDB.Entities.DataMonitoring;
namespace YunDa.ISAS.Application.DataMonitoring.EnergyManagement
{
/*
(A,B,C)
(A,B,C)
F线电压监测F1,F2
F线电流监测F1,F2
*/
/// <summary>
/// 变压器监视服务,提供变压器相关电气参数的查询功能
/// </summary>
@ -184,7 +190,7 @@ namespace YunDa.ISAS.Application.DataMonitoring.EnergyManagement
}
// 1. 检查设备是否存在
var device = _energyDeviceRepository.GetAllIncluding(t => t.EquipmentInfo).FirstOrDefault(t => t.Id == deviceId);
var device = _energyDeviceRepository.GetAllIncluding(t => t.EquipmentInfo).FirstOrDefault(t => t.EquipmentInfoId == deviceId);
if (device == null || !device.IsActive)
{
throw new InvalidOperationException("未找到指定的变压器设备或设备已禁用");
@ -536,7 +542,7 @@ namespace YunDa.ISAS.Application.DataMonitoring.EnergyManagement
}
// 1. 检查设备是否存在
var device = _energyDeviceRepository.GetAllIncluding(t => t.EquipmentInfo).FirstOrDefault(t => t.Id == deviceId);
var device = _energyDeviceRepository.GetAllIncluding(t => t.EquipmentInfo).FirstOrDefault(t => t.EquipmentInfoId == deviceId);
if (device == null || !device.IsActive)
{
throw new InvalidOperationException("未找到指定的变压器设备或设备已禁用");
@ -763,7 +769,7 @@ namespace YunDa.ISAS.Application.DataMonitoring.EnergyManagement
}
// 1. 检查设备是否存在
var device = _energyDeviceRepository.GetAllIncluding(t => t.EquipmentInfo).FirstOrDefault(t => t.Id == deviceId);
var device = _energyDeviceRepository.GetAllIncluding(t => t.EquipmentInfo).FirstOrDefault(t => t.EquipmentInfoId == deviceId);
if (device == null || !device.IsActive)
{
throw new InvalidOperationException("未找到指定的变压器设备或设备已禁用");
@ -842,7 +848,7 @@ namespace YunDa.ISAS.Application.DataMonitoring.EnergyManagement
}
// 1. 检查设备是否存在
var device = _energyDeviceRepository.GetAllIncluding(t => t.EquipmentInfo).FirstOrDefault(t => t.Id == deviceId);
var device = _energyDeviceRepository.GetAllIncluding(t => t.EquipmentInfo).FirstOrDefault(t => t.EquipmentInfoId == deviceId);
if (device == null || !device.IsActive)
{
throw new InvalidOperationException("未找到指定的变压器设备或设备已禁用");

View File

@ -7,7 +7,6 @@ using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NPOI.SS.Formula.Functions;
using Org.BouncyCastle.Crypto.Tls;
using System;
using System.Collections.Generic;
using System.ComponentModel;

View File

@ -5,7 +5,6 @@ using Abp.Domain.Repositories;
using Abp.Threading.Extensions;
using Microsoft.AspNetCore.Mvc;
using NPOI.SS.Formula.Functions;
using Org.BouncyCastle.Utilities.IO;
using System;
using System.Collections.Generic;
using System.ComponentModel;

View File

@ -11,8 +11,6 @@ using MongoDB.Bson.Serialization;
using MongoDB.Driver;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Org.BouncyCastle.Asn1.Ocsp;
using Org.BouncyCastle.Asn1.X509;
using System;
using System.Collections.Generic;
using System.ComponentModel;

View File

@ -400,7 +400,7 @@ namespace YunDa.ISAS.Application.System
}
/// <summary>
/// 获取可以选择的设备下拉列表
/// 获取可以选择下拉列表
/// </summary>
/// <param name="searchCondition"></param>
/// <returns></returns>
@ -459,204 +459,7 @@ namespace YunDa.ISAS.Application.System
}
return rst;
}
[HttpGet]
[ShowApi]
[AbpAllowAnonymous]
public RequestEasyResult Test()
{
RequestEasyResult rst = new RequestEasyResult();
try
{
}
catch (Exception ex)
{
rst.Message = ex.Message;
rst.Flag = false;
Log4Helper.Error(this.GetType(), "设备信息管理服务", ex);
}
return rst;
}
[HttpGet]
[ShowApi]
[AbpAllowAnonymous]
public RequestEasyResult InitPanoramaConfig()
{
RequestEasyResult rst = new RequestEasyResult();
try
{
var filePath = "./Resources/Static/panoramaconfiguration.json";
string jsonContent = File.ReadAllText(filePath);
PanoramaConfig panoramaConfig = JsonConvert.DeserializeObject<PanoramaConfig>(jsonContent);
if (panoramaConfig != null)
{
foreach (var item in panoramaConfig.Scenes.Values)
{
if (item.HotSpots.Count > 0)
{
foreach (var item2 in item.HotSpots)
{
if (string.IsNullOrWhiteSpace(item2.Id))
{
item2.Id = Guid.NewGuid().ToString();
}
if (string.IsNullOrWhiteSpace( item2.ClickHandlerArgs))
{
item2.ClickHandlerArgs = item2.Id.ToString();
}
}
}
//if (item.Panorama.Length<6)
//{
// // 匹配所有整数
// MatchCollection matches = Regex.Matches(item.Panorama, @"\d+");
// item.Panorama = $"/SysAttachment/images/{matches[0].Value}.jpg";
//}
//else if (!item.Panorama.Contains("http"))
//{
// item.Panorama = "http:127.0.0.1:38091" + item.Panorama;
//}
//else
//{
// item.Panorama = item.Panorama.Replace("http:127.0.0.1:38091", "");
//}
}
jsonContent = JsonConvert.SerializeObject(panoramaConfig, Formatting.Indented);
File.WriteAllText(filePath, jsonContent);
rst.Flag = true;
}
}
catch (Exception ex)
{
rst.Message = ex.Message;
rst.Flag = false;
Log4Helper.Error(this.GetType(), "设备信息管理服务", ex);
}
return rst;
}
/// <summary>
/// 获取场站全景配置
/// </summary>
/// <param name="stationName"></param>
/// <returns></returns>
[HttpGet]
[ShowApi]
[AbpAllowAnonymous]
public RequestResult<PanoramaConfig> GetPanoramaConfig(string? stationName)
{
RequestResult<PanoramaConfig> rst = new RequestResult<PanoramaConfig>();
try
{
var filePath = "./Resources/Static/panoramaconfiguration.json";
string jsonContent = File.ReadAllText(filePath);
PanoramaConfig panoramaConfig = JsonConvert.DeserializeObject<PanoramaConfig>(jsonContent);
if (panoramaConfig != null)
{
rst.ResultData = panoramaConfig;
rst.Flag = true;
}
}
catch (Exception ex)
{
rst.Message = ex.Message;
rst.Flag = false;
Log4Helper.Error(this.GetType(), "设备信息管理服务", ex);
}
return rst;
}
/// <summary>
/// 保存场站全景配置
/// </summary>
/// <returns></returns>
[HttpPost]
[ShowApi]
[AbpAllowAnonymous]
public RequestResult<PanoramaConfig> SavePanoramaConfig(HotSpot hotSpot, [FromQuery]string SceneId, [FromQuery]string? stationName)
{
RequestResult<PanoramaConfig> rst = new RequestResult<PanoramaConfig>();
try
{
var filePath = "./Resources/Static/panoramaconfiguration.json";
string jsonContent = File.ReadAllText(filePath);
PanoramaConfig panoramaConfig = JsonConvert.DeserializeObject<PanoramaConfig>(jsonContent);
if (panoramaConfig != null)
{
if (panoramaConfig.Scenes.Count>0)
{
if (panoramaConfig.Scenes.ContainsKey(SceneId))
{
hotSpot.Id = Guid.NewGuid().ToString();
panoramaConfig.Scenes[SceneId].HotSpots.Add(hotSpot);
hotSpot.ClickHandlerArgs = hotSpot.Id;
}
}
jsonContent = JsonConvert.SerializeObject(panoramaConfig);
File.WriteAllText(filePath, jsonContent);
rst.Flag = true;
}
}
catch (Exception ex)
{
rst.Message = ex.Message;
rst.Flag = false;
Log4Helper.Error(this.GetType(), "设备信息管理服务", ex);
}
return rst;
}
[HttpPost]
[ShowApi]
[AbpAllowAnonymous]
public RequestResult<PanoramaConfig> DeletePanoramaConfig( [FromQuery] string SceneId, [FromQuery] string? stationName, [FromQuery] string hotpotId)
{
RequestResult<PanoramaConfig> rst = new RequestResult<PanoramaConfig>();
try
{
var filePath = "./Resources/Static/panoramaconfiguration.json";
string jsonContent = File.ReadAllText(filePath);
PanoramaConfig panoramaConfig = JsonConvert.DeserializeObject<PanoramaConfig>(jsonContent);
if (panoramaConfig != null)
{
if (panoramaConfig.Scenes.Count > 0)
{
if (panoramaConfig.Scenes.ContainsKey(SceneId))
{
if (!string.IsNullOrEmpty( hotpotId))
{
panoramaConfig.Scenes[SceneId].HotSpots.RemoveAll(t => t.Id == hotpotId);
}
}
}
jsonContent = JsonConvert.SerializeObject(panoramaConfig);
File.WriteAllText(filePath, jsonContent);
rst.Flag = true;
}
}
catch (Exception ex)
{
rst.Message = ex.Message;
rst.Flag = false;
Log4Helper.Error(this.GetType(), "设备信息管理服务", ex);
}
return rst;
}
}

View File

@ -0,0 +1,49 @@
using Abp.Application.Services;
using Abp.Authorization;
using Microsoft.AspNetCore.Mvc;
using System;
using System.ComponentModel;
using System.Text.RegularExpressions;
using YunDa.ISAS.Core.Configuration;
using YunDa.ISAS.DataTransferObject;
using YunDa.SOMS.BASE.Entities;
using YunDa.SOMS.DataTransferObject;
namespace YunDa.ISAS.Application.System.Configuration
{
/// <summary>
/// 数据库配置测试服务
/// </summary>
[Description("数据库配置测试")]
public class DatabaseTestAppService : ApplicationService
{
// 其他代码保持不变
/// <summary>
/// 隐藏连接字符串中的密码信息
/// </summary>
/// <param name="connectionString"></param>
/// <returns></returns>
private string HidePasswordInConnectionString(string connectionString)
{
if (string.IsNullOrEmpty(connectionString))
return connectionString;
// 隐藏 SQL Server 密码
connectionString = Regex.Replace(
connectionString,
@"Password\s*=\s*[^;]+",
"Password=***",
RegexOptions.IgnoreCase);
// 隐藏 MySQL 密码
connectionString = Regex.Replace(
connectionString,
@"pwd\s*=\s*[^;]+",
"pwd=***",
RegexOptions.IgnoreCase);
return connectionString;
}
}
}

View File

@ -71,7 +71,7 @@ namespace YunDa.ISAS.Application.System
/// </summary>
/// <param name="sceneId">场景ID</param>
/// <returns>删除结果</returns>
Task<RequestEasyResult> DeleteSceneAsync(Guid sceneId);
Task<RequestEasyResult> DeleteSceneAsync(string sceneId);
/// <summary>
/// 添加或更新热点
@ -85,6 +85,6 @@ namespace YunDa.ISAS.Application.System
/// </summary>
/// <param name="hotSpotId">热点ID</param>
/// <returns>删除结果</returns>
Task<RequestEasyResult> DeleteHotSpotAsync(Guid hotSpotId);
Task<RequestEasyResult> DeleteHotSpotAsync(string hotSpotId);
}
}

View File

@ -565,6 +565,7 @@ namespace YunDa.ISAS.Application.System
/// <param name="id">ID</param>
/// <returns>删除结果</returns>
[HttpGet, ShowApi, Description("根据ID删除全景配置")]
[AbpAllowAnonymous]
public async Task<RequestEasyResult> DeleteByIdAsync(Guid id)
{
var rst = new RequestEasyResult() { Flag = false };
@ -586,7 +587,7 @@ namespace YunDa.ISAS.Application.System
return rst;
}
#endregion
#region Scene Management
@ -597,6 +598,7 @@ namespace YunDa.ISAS.Application.System
/// <param name="input">场景输入</param>
/// <returns>操作结果</returns>
[HttpPost, ShowApi, Description("添加或更新场景")]
[AbpAllowAnonymous]
public async Task<RequestResult<PanoramaSceneOutput>> CreateOrUpdateSceneAsync(EditPanoramaSceneInput input)
{
var rst = new RequestResult<PanoramaSceneOutput>() { Flag = false };
@ -638,28 +640,20 @@ namespace YunDa.ISAS.Application.System
/// <param name="sceneId">场景ID</param>
/// <returns>删除结果</returns>
[HttpGet, ShowApi, Description("删除场景")]
public async Task<RequestEasyResult> DeleteSceneAsync(Guid sceneId)
[AbpAllowAnonymous]
public async Task<RequestEasyResult> DeleteSceneAsync(string sceneId)
{
var rst = new RequestEasyResult() { Flag = false };
try
{
var entity = await _panoramaSceneRepository.GetAsync(sceneId);
entity.IsActive = false;
await _panoramaSceneRepository.UpdateAsync(entity);
// 同时将该场景下的所有热点设为非活动状态
var hotSpots = _panoramaHotSpotRepository.GetAll()
.Where(x => x.PanoramaSceneId == sceneId && x.IsActive)
.ToList();
foreach (var hotSpot in hotSpots)
var entity = _panoramaSceneRepository.GetAll().FirstOrDefault(t=>t.SceneId == sceneId);
if (entity!=null)
{
hotSpot.IsActive = false;
await _panoramaHotSpotRepository.UpdateAsync(hotSpot);
await _panoramaSceneRepository.DeleteAsync(entity.Id);
rst.Flag = true;
}
rst.Flag = true;
}
catch (Exception ex)
{
@ -730,17 +724,20 @@ namespace YunDa.ISAS.Application.System
/// <param name="hotSpotId">热点ID</param>
/// <returns>删除结果</returns>
[HttpGet, ShowApi, Description("删除热点")]
public async Task<RequestEasyResult> DeleteHotSpotAsync(Guid hotSpotId)
public async Task<RequestEasyResult> DeleteHotSpotAsync(string hotSpotId)
{
var rst = new RequestEasyResult() { Flag = false };
try
{
var entity = await _panoramaHotSpotRepository.GetAsync(hotSpotId);
entity.IsActive = false;
await _panoramaHotSpotRepository.UpdateAsync(entity);
var entity = _panoramaHotSpotRepository.GetAll().FirstOrDefault(t=>t.HotSpotId == hotSpotId);
if (entity!=null)
{
await _panoramaHotSpotRepository.DeleteAsync(entity.Id);
rst.Flag = true;
}
rst.Flag = true;
}
catch (Exception ex)
{

View File

@ -29,11 +29,22 @@ namespace YunDa.SOMS.DataTransferObject.GeneralInformation.EquipmentIndicatorCon
public virtual decimal Weight { get; set; }
public virtual decimal DataPrecision { get; set; }
public virtual decimal Value { get; set; }
public List<IndicatorStatusInfo> StatusInfos { get; set; } = new List<IndicatorStatusInfo>();
/// <summary>
/// 所属设别类别
/// </summary>
public virtual Guid? EquipmentTypeId { get; set; }
public virtual bool IsActive { get; set; }
public virtual string Remark { get; set; }
}
public class IndicatorStatusInfo
{
public string Name { get; set; } // 名称
public string Value { get; set; } // 数值
public string Status { get; set; } // 状态码
public string StatusText { get; set; } // 状态描述
public string Desc { get; set; } // 详细说明
}
}

View File

@ -8,7 +8,6 @@ using Microsoft.AspNetCore.Mvc.Infrastructure;
using Microsoft.Extensions.Primitives;
using MongoDB.Bson;
using MongoDB.Driver;
using Org.BouncyCastle.Utilities;
using System;
using System.Collections.Generic;
using System.ComponentModel;

View File

@ -9,7 +9,6 @@ using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Serialization;
using NPOI.OpenXmlFormats.Dml.Diagram;
using Org.BouncyCastle.Ocsp;
using System;
using System.ComponentModel;
using System.Diagnostics;

View File

@ -0,0 +1,63 @@
using Microsoft.Extensions.Configuration;
using System;
namespace YunDa.ISAS.Core.Configuration
{
/// <summary>
/// 数据库配置实现类
/// </summary>
public class DatabaseConfiguration : IDatabaseConfiguration
{
private readonly IConfiguration _configuration;
public DatabaseConfiguration(IConfiguration configuration)
{
_configuration = configuration ?? throw new ArgumentNullException(nameof(configuration));
}
/// <summary>
/// ISMS_BASE 数据库类型
/// </summary>
public DatabaseType IsmsBaseDatabaseType
{
get
{
var databaseTypeString = _configuration["DatabaseSettings:IsmsBaseDatabaseType"];
if (Enum.TryParse<DatabaseType>(databaseTypeString, true, out var databaseType))
{
return databaseType;
}
// 默认使用 SQL Server
return DatabaseType.SqlServer;
}
}
/// <summary>
/// 获取 ISMS_BASE 数据库连接字符串
/// </summary>
/// <returns>连接字符串</returns>
public string GetIsmsBaseConnectionString()
{
string connectionString;
switch (IsmsBaseDatabaseType)
{
case DatabaseType.MySQL:
connectionString = _configuration.GetConnectionString(ISASConsts.ISMS_BASEMysqlSettingStringKey);
break;
case DatabaseType.SqlServer:
default:
connectionString = _configuration.GetConnectionString(ISASConsts.ISMS_BASESqlServerSettingStringKey);
break;
}
if (string.IsNullOrEmpty(connectionString))
{
throw new InvalidOperationException($"Database connection string is not configured for ISMS_BASE with database type: {IsmsBaseDatabaseType}");
}
return connectionString;
}
}
}

View File

@ -0,0 +1,18 @@
namespace YunDa.ISAS.Core.Configuration
{
/// <summary>
/// 数据库类型枚举
/// </summary>
public enum DatabaseType
{
/// <summary>
/// SQL Server 数据库
/// </summary>
SqlServer = 0,
/// <summary>
/// MySQL 数据库
/// </summary>
MySQL = 1
}
}

View File

@ -0,0 +1,19 @@
namespace YunDa.ISAS.Core.Configuration
{
/// <summary>
/// 数据库配置接口
/// </summary>
public interface IDatabaseConfiguration
{
/// <summary>
/// ISMS_BASE 数据库类型
/// </summary>
DatabaseType IsmsBaseDatabaseType { get; }
/// <summary>
/// 获取 ISMS_BASE 数据库连接字符串
/// </summary>
/// <returns>连接字符串</returns>
string GetIsmsBaseConnectionString();
}
}

View File

@ -18,12 +18,12 @@ namespace YunDa.ISAS.Entities.GeneralInformation
{
public const int MaxRemarkLength = 200;
public string Name { get; set; }
/// <summary>
/// 顺序号
/// </summary>
public virtual int SeqNo { get; set; }
/// <summary>
/// 设备ID (Equipment ID)
/// 用于标识被监控的设备
@ -117,6 +117,13 @@ namespace YunDa.ISAS.Entities.GeneralInformation
/// 遥信数据
/// </summary>
[Description("遥信")]
Telesignalisation = 1
Telesignalisation = 1,
/// <summary>
/// 其他数据
/// </summary>
[Description("其他")]
Other = 2,
}
}

View File

@ -0,0 +1,31 @@
using Microsoft.EntityFrameworkCore.Migrations;
namespace YunDa.ISAS.Migrations
{
public partial class update_table_v107 : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "DescriptionOfInformation",
table: "gi_equipment_indicator_config",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "KeyPurpose",
table: "gi_equipment_indicator_config",
nullable: true);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "DescriptionOfInformation",
table: "gi_equipment_indicator_config");
migrationBuilder.DropColumn(
name: "KeyPurpose",
table: "gi_equipment_indicator_config");
}
}
}

View File

@ -3896,12 +3896,18 @@ namespace YunDa.ISAS.Migrations
b.Property<decimal>("DataPrecision")
.HasColumnType("decimal(65,30)");
b.Property<string>("DescriptionOfInformation")
.HasColumnType("longtext CHARACTER SET utf8mb4");
b.Property<Guid?>("EquipmentTypeId")
.HasColumnType("char(36)");
b.Property<bool>("IsActive")
.HasColumnType("tinyint(1)");
b.Property<string>("KeyPurpose")
.HasColumnType("longtext CHARACTER SET utf8mb4");
b.Property<DateTime?>("LastModificationTime")
.HasColumnType("datetime(6)");

View File

@ -1,56 +1,102 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Pomelo.EntityFrameworkCore.MySql.Infrastructure;
using Pomelo.EntityFrameworkCore.MySql.Storage;
using System;
using System.Diagnostics;
using YunDa.SOMS.BASE.Entities;
using YunDa.ISAS.Core.Configuration;
namespace YunDa.ISMS.BASE.Entities
namespace YunDa.SOMS.BASE.Entities
{
public static class DbContextOptionsConfigurer
{
public static readonly ILoggerFactory MyLoggerFactory
= LoggerFactory.Create(builder =>
{
builder
.SetMinimumLevel(LogLevel.Information);
});
#if Mysql
= LoggerFactory.Create(builder =>
{
builder.SetMinimumLevel(LogLevel.Information);
});
/// <summary>
/// 配置 ISMS_BASEContext (SQL Server)
/// </summary>
public static void Configure(DbContextOptionsBuilder<ISMS_BASEContext> dbContextOptions, string connectionString)
{
#if DEBUG
Debug.WriteLine($"Configuring SQL Server DbContext with connection: {connectionString}");
#endif
dbContextOptions.UseSqlServer(connectionString,
builder =>
{
builder.CommandTimeout(600);
//builder.EnableRetryOnFailure(
// maxRetryCount: 5, // 最大重试次数
// maxRetryDelay: TimeSpan.FromSeconds(30), // 最大重试延迟
// errorNumbersToAdd: null);
})
.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking)
.EnableSensitiveDataLogging();
}
/// <summary>
/// 配置 ISMS_BASE_Mysql_Context (MySQL)
/// </summary>
public static void Configure(DbContextOptionsBuilder<ISMS_BASE_Mysql_Context> dbContextOptions, string connectionString)
{
#if DEBUG
Debug.WriteLine($"Configuring MySQL DbContext with connection: {connectionString}");
#endif
dbContextOptions.UseMySql(connectionString,
builder => {
builder =>
{
builder.CommandTimeout(600);
})
.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking)
.EnableSensitiveDataLogging();
}
#else
public static void Configure(DbContextOptionsBuilder<ISMS_BASEContext> dbContextOptions, string connectionString)
/// <summary>
/// 根据数据库类型动态配置 DbContext
/// </summary>
public static void ConfigureDynamic(DbContextOptionsBuilder dbContextOptions, string connectionString, DatabaseType databaseType)
{
switch (databaseType)
{
case DatabaseType.MySQL:
ConfigureMySql(dbContextOptions, connectionString);
break;
case DatabaseType.SqlServer:
default:
ConfigureSqlServer(dbContextOptions, connectionString);
break;
}
}
private static void ConfigureSqlServer(DbContextOptionsBuilder dbContextOptions, string connectionString)
{
#if DEBUG
Debug.WriteLine(connectionString);
/* dbContextOptions.UseSqlServer("Server=192.168.110.161;User ID=sa;Password=sa;Database=ISMS_BASE;Trusted_Connection=False;")*/
Debug.WriteLine($"Configuring SQL Server DbContext with connection: {connectionString}");
#endif
;
dbContextOptions.UseSqlServer(connectionString,
builder => {
builder =>
{
builder.CommandTimeout(600);
//builder.EnableRetryOnFailure(
// maxRetryCount: 5, // 最大重试次数
//maxRetryDelay: TimeSpan.FromSeconds(30), // 最大重试延迟
//errorNumbersToAdd: null);
//builder.UseRelationalNulls();
})
})
.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking)
//.UseLoggerFactory(MyLoggerFactory)
.EnableSensitiveDataLogging();
}
private static void ConfigureMySql(DbContextOptionsBuilder dbContextOptions, string connectionString)
{
#if DEBUG
Debug.WriteLine($"Configuring MySQL DbContext with connection: {connectionString}");
#endif
dbContextOptions.UseMySql(connectionString,
builder =>
{
builder.CommandTimeout(600);
})
.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking)
.EnableSensitiveDataLogging();
}
}
}

View File

@ -7,12 +7,8 @@ using YunDa.SOMS.BASE.Entities.Models;
namespace YunDa.SOMS.BASE.Entities
{
#if Mysql
public partial class ISMS_BASEContext : DbContext, ISMS_BASE_Dasets
#else
public partial class ISMS_BASEContext : AbpDbContext, ISMS_BASE_Dasets
#endif
public partial class ISMS_BASEContext : AbpDbContext, ISMS_BASE_Dasets
{
public ISMS_BASEContext(DbContextOptions<ISMS_BASEContext> options)
@ -7765,6 +7761,24 @@ namespace YunDa.SOMS.BASE.Entities
public DbSet<TbXiTongMoKuai> TbXiTongMoKuai { get; set; }
public DbSet<TbXiTongRiZhi> TbXiTongRiZhi { get; set; }
public DbSet<TbYongHu> TbYongHu { get; set; }
public DbSet<ImDzcheckrule> ImDzcheckrule { get; set; }
public DbSet<IaFuncNameConst> IaFuncNameConsts { get; set; }
public DbSet<IaMaChannel> IaMaChannels { get; set; }
public DbSet<IaModule> IaModules { get; set; }
public DbSet<IaModuleDir> IaModuleDirs { get; set; }
public DbSet<IaMonitorArea> IaMonitorAreas { get; set; }
public DbSet<IaStatAccCtler> IaStatAccCtlers { get; set; }
public DbSet<IaStatAidVideoDev> IaStatAidVideoDevs { get; set; }
public DbSet<IaVAllChannel> IaVAllChannels { get; set; }
public DbSet<IaVAllFunc4Module> IaVAllFunc4Modules { get; set; }
public DbSet<IaVMaChannel> IaVMaChannels { get; set; }
public DbSet<IaVModule> IaVModules { get; set; }
public DbSet<IaVStatAidVideoDev> IaVStatAidVideoDevs { get; set; }
public DbSet<IaVVideoPatrolItemExecObj> IaVVideoPatrolItemExecObjs { get; set; }
public DbSet<IaVideoPatrol> IaVideoPatrols { get; set; }
public DbSet<IaVideoPatrolHi> IaVideoPatrolHis { get; set; }
public DbSet<IaVideoPatrolItem> IaVideoPatrolItems { get; set; }
public DbSet<IaVideoPatrolItemHi> IaVideoPatrolItemHis { get; set; }
}

View File

@ -1,4 +1,5 @@
using Abp.EntityFrameworkCore;
using Abp.Dependency;
using Abp.EntityFrameworkCore;
using Abp.EntityFrameworkCore.Configuration;
using Abp.Modules;
using Abp.Reflection.Extensions;
@ -8,9 +9,8 @@ using System;
using YunDa.ISAS.Core;
using YunDa.ISAS.Core.Configuration;
using YunDa.ISAS.Core.Web;
using YunDa.SOMS.BASE.Entities;
namespace YunDa.ISMS.BASE.Entities
namespace YunDa.SOMS.BASE.Entities
{
[DependsOn(
typeof(ISASCoreModule), // 依赖 ISAS 核心模块
@ -26,38 +26,41 @@ namespace YunDa.ISMS.BASE.Entities
var contentRootFolder = WebContentDirectoryFinder.CalculateContentRootFolder();
// 加载多环境配置文件(例如 appsettings.Development.json
var configuration = ISASConfiguration.Get(contentRootFolder);
var configuration = YunDa.ISAS.Core.Configuration.ISASConfiguration.Get(contentRootFolder);
// 注册数据库配置服务
IocManager.Register<IDatabaseConfiguration, DatabaseConfiguration>(DependencyLifeStyle.Singleton);
// 日志输出
Logger.Info("Loading configuration for ISMS_BASEEntityFrameworkCoreModule...");
// 获取数据库连接字符串
// 创建数据库配置实例
var databaseConfig = new DatabaseConfiguration(configuration);
var databaseType = databaseConfig.IsmsBaseDatabaseType;
var connectionString = databaseConfig.GetIsmsBaseConnectionString();
#if Mysql
var connectionString = configuration.GetConnectionString(ISASConsts.ISMS_BASEMysqlSettingStringKey);
#else
var connectionString = configuration.GetConnectionString(ISASConsts.ISMS_BASESqlServerSettingStringKey);
Logger.Info($"Configuring ISMS_BASE with database type: {databaseType}");
#endif
if (string.IsNullOrEmpty(connectionString))
// 根据数据库类型配置相应的 DbContext
switch (databaseType)
{
throw new ApplicationException("Database connection string is not configured for ISMS_BASE.");
case DatabaseType.MySQL:
Configuration.Modules.AbpEfCore().AddDbContext<ISMS_BASE_Mysql_Context>(options =>
{
DbContextOptionsConfigurer.Configure(options.DbContextOptions, connectionString);
});
Logger.Info("MySQL DbContext for ISMS_BASE configured successfully.");
break;
case DatabaseType.SqlServer:
default:
Configuration.Modules.AbpEfCore().AddDbContext<ISMS_BASEContext>(options =>
{
DbContextOptionsConfigurer.Configure(options.DbContextOptions, connectionString);
});
Logger.Info("SQL Server DbContext for ISMS_BASE configured successfully.");
break;
}
#if Mysql
// 配置 EF Core 上下文
Configuration.Modules.AbpEfCore().AddDbContext<ISMS_BASE_Mysql_Context>(options =>
{
DbContextOptionsConfigurer.Configure(options.DbContextOptions, connectionString);
});
#else
// 配置 EF Core 上下文
Configuration.Modules.AbpEfCore().AddDbContext<ISMS_BASEContext>(options =>
{
DbContextOptionsConfigurer.Configure(options.DbContextOptions, connectionString);
});
#endif
Logger.Info("EF Core DbContext for ISMS_BASE configured successfully.");
}
public override void Initialize()

View File

@ -46,10 +46,7 @@ namespace YunDa.SOMS.BASE.Entities
public DbSet<ImDeviceYxSrcDevice> ImDeviceYxSrcDevice { get; set; }
public DbSet<ImDeviceYxTmp> ImDeviceYxTmp { get; set; }
public DbSet<ImDiagram> ImDiagram { get; set; }
#if Mysql
public DbSet<ImDzcheckrule> ImDzcheckrule { get; set; }
#endif
public DbSet<ImDztype> ImDztype { get; set; }
public DbSet<ImEventFlag> ImEventFlag { get; set; }
public DbSet<ImEventParam> ImEventParam { get; set; }
@ -128,6 +125,24 @@ namespace YunDa.SOMS.BASE.Entities
public DbSet<TbXiTongRiZhi> TbXiTongRiZhi { get; set; }
public DbSet<TbYongHu> TbYongHu { get; set; }
// Additional DbSet properties for entities referenced in the interface
public DbSet<IaFuncNameConst> IaFuncNameConsts { get; set; }
public DbSet<IaMaChannel> IaMaChannels { get; set; }
public DbSet<IaModule> IaModules { get; set; }
public DbSet<IaModuleDir> IaModuleDirs { get; set; }
public DbSet<IaMonitorArea> IaMonitorAreas { get; set; }
public DbSet<IaStatAccCtler> IaStatAccCtlers { get; set; }
public DbSet<IaStatAidVideoDev> IaStatAidVideoDevs { get; set; }
public DbSet<IaVAllChannel> IaVAllChannels { get; set; }
public DbSet<IaVAllFunc4Module> IaVAllFunc4Modules { get; set; }
public DbSet<IaVMaChannel> IaVMaChannels { get; set; }
public DbSet<IaVModule> IaVModules { get; set; }
public DbSet<IaVStatAidVideoDev> IaVStatAidVideoDevs { get; set; }
public DbSet<IaVVideoPatrolItemExecObj> IaVVideoPatrolItemExecObjs { get; set; }
public DbSet<IaVideoPatrol> IaVideoPatrols { get; set; }
public DbSet<IaVideoPatrolHi> IaVideoPatrolHis { get; set; }
public DbSet<IaVideoPatrolItem> IaVideoPatrolItems { get; set; }
public DbSet<IaVideoPatrolItemHi> IaVideoPatrolItemHis { get; set; }
//public DbSet<IaFuncNameConst> IaFuncNameConsts { get; set; } = null!;
//public DbSet<IaMaChannel> IaMaChannels { get; set; } = null!;

View File

@ -4,11 +4,12 @@ using YunDa.SOMS.BASE.Entities.Models;
namespace YunDa.SOMS.BASE.Entities
{
#if Mysql
//#if Mysql
// public partial class ISMS_BASE_Mysql_Context : AbpDbContext, ISMS_BASE_Dasets
//#else
// public partial class ISMS_BASE_Mysql_Context : DbContext, ISMS_BASE_Dasets
//#endif
public partial class ISMS_BASE_Mysql_Context : AbpDbContext, ISMS_BASE_Dasets
#else
public partial class ISMS_BASE_Mysql_Context : DbContext, ISMS_BASE_Dasets
#endif
{
@ -6198,9 +6199,10 @@ namespace YunDa.SOMS.BASE.Entities
public DbSet<ImDeviceYxTmp> ImDeviceYxTmp { get; set; }
public DbSet<ImDiagram> ImDiagram { get; set; }
#if Mysql
public DbSet<ImDzcheckrule> ImDzcheckrule { get; set; }
#endif
public DbSet<ImDzcheckrule> ImDzcheckrule { get; set; }
public DbSet<ImDztype> ImDztype { get; set; }
public DbSet<ImEventFlag> ImEventFlag { get; set; }
public DbSet<ImEventParam> ImEventParam { get; set; }
@ -6278,5 +6280,22 @@ namespace YunDa.SOMS.BASE.Entities
public DbSet<TbXiTongMoKuai> TbXiTongMoKuai { get; set; }
public DbSet<TbXiTongRiZhi> TbXiTongRiZhi { get; set; }
public DbSet<TbYongHu> TbYongHu { get; set; }
public DbSet<IaFuncNameConst> IaFuncNameConsts { get; set; }
public DbSet<IaMaChannel> IaMaChannels { get; set; }
public DbSet<IaModule> IaModules { get; set; }
public DbSet<IaModuleDir> IaModuleDirs { get; set; }
public DbSet<IaMonitorArea> IaMonitorAreas { get; set; }
public DbSet<IaStatAccCtler> IaStatAccCtlers { get; set; }
public DbSet<IaStatAidVideoDev> IaStatAidVideoDevs { get; set; }
public DbSet<IaVAllChannel> IaVAllChannels { get; set; }
public DbSet<IaVAllFunc4Module> IaVAllFunc4Modules { get; set; }
public DbSet<IaVMaChannel> IaVMaChannels { get; set; }
public DbSet<IaVModule> IaVModules { get; set; }
public DbSet<IaVStatAidVideoDev> IaVStatAidVideoDevs { get; set; }
public DbSet<IaVVideoPatrolItemExecObj> IaVVideoPatrolItemExecObjs { get; set; }
public DbSet<IaVideoPatrol> IaVideoPatrols { get; set; }
public DbSet<IaVideoPatrolHi> IaVideoPatrolHis { get; set; }
public DbSet<IaVideoPatrolItem> IaVideoPatrolItems { get; set; }
public DbSet<IaVideoPatrolItemHi> IaVideoPatrolItemHis { get; set; }
}
}

View File

@ -6,6 +6,7 @@ using System.IO;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
@ -159,7 +160,9 @@ namespace RunRedis.Services
if (graceful)
{
// Try graceful shutdown using redis-cli
await ExecuteRedisCliCommandAsync("SHUTDOWN SAVE");
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5));
await ExecuteRedisCliCommandAsync("SHUTDOWN SAVE", cts.Token);
await Task.Delay(5000); // Wait for graceful shutdown
}
@ -381,16 +384,22 @@ namespace RunRedis.Services
return string.Join(" ", args);
}
public async Task<string> ExecuteRedisCliCommandAsync(string command)
public async Task<string> ExecuteRedisCliCommandAsync(string command, CancellationToken token =default)
{
Process process = null;
try
{
if (token == default)
{
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5));
token = cts.Token;
}
string redisCliPath = GetRedisCliPath();
var processStartInfo = new ProcessStartInfo
{
FileName = redisCliPath,
Arguments = $"-h {_settings.Host} -p {_settings.Port}",
Arguments = BuildRedisCliArguments(command),
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardOutput = true,
@ -398,39 +407,97 @@ namespace RunRedis.Services
RedirectStandardInput = true
};
if (!string.IsNullOrEmpty(_settings.Auth))
process = Process.Start(processStartInfo);
var outputBuilder = new StringBuilder();
var errorBuilder = new StringBuilder();
// 异步读取输出和错误
var outputTask = ReadStreamAsync(process.StandardOutput, outputBuilder);
var errorTask = ReadStreamAsync(process.StandardError, errorBuilder);
// 创建超时监控任务
var processExitTask = process.WaitForExitAsync();
var timeoutTask = Task.Delay(Timeout.Infinite, token);
// 等待任意任务完成
var completedTask = await Task.WhenAny(processExitTask, timeoutTask);
if (completedTask == timeoutTask)
{
processStartInfo.Arguments += $" -a {_settings.Auth}";
// 超时处理
try
{
if (!process.HasExited)
{
process.Kill();
Log.Warning("Redis CLI command timed out and was killed: {Command}", command);
}
}
catch (InvalidOperationException) { /* 进程已退出 */ }
token.ThrowIfCancellationRequested();
}
processStartInfo.Arguments += $" {command}";
// 确保获取退出代码
await processExitTask;
await Task.WhenAll(outputTask, errorTask);
using (var process = Process.Start(processStartInfo))
var output = outputBuilder.ToString().Trim();
var error = errorBuilder.ToString().Trim();
if (process.ExitCode == 0)
{
var output = await process.StandardOutput.ReadToEndAsync();
var error = await process.StandardError.ReadToEndAsync();
await process.WaitForExitAsync();
if (process.ExitCode == 0)
{
Log.Debug("Redis CLI command executed successfully: {Command}", command);
return output.Trim();
}
else
{
Log.Warning("Redis CLI command failed: {Command}, Error: {Error}", command, error);
return null;
}
Log.Debug("Redis CLI command executed successfully: {Command}", command);
return output;
}
Log.Warning("Redis CLI command failed (Exit {ExitCode}): {Command}, Error: {Error}",
process.ExitCode, command, error);
return null;
}
catch (OperationCanceledException)
{
Log.Warning("Redis CLI command canceled: {Command}", command);
throw; // 重新抛出让调用方处理
}
catch (Exception ex)
{
Log.Error("Error executing Redis CLI command: {Command}, Error: {Error}", command, ex.Message);
Log.Error(ex, "Error executing Redis CLI command: {Command}", command);
return null;
}
finally
{
process?.Dispose();
}
}
// 辅助方法构建Redis CLI参数
private string BuildRedisCliArguments(string command)
{
var args = new StringBuilder($"-h {_settings.Host} -p {_settings.Port}");
if (!string.IsNullOrEmpty(_settings.Auth))
{
args.Append($" -a {_settings.Auth}");
}
args.Append($" {command}");
return args.ToString();
}
// 辅助方法:异步读取流
private async Task ReadStreamAsync(StreamReader reader, StringBuilder builder)
{
char[] buffer = new char[4096];
int bytesRead;
while ((bytesRead = await reader.ReadAsync(buffer, 0, buffer.Length)) > 0)
{
builder.Append(buffer, 0, bytesRead);
}
}
private string GetRedisCliPath()
{
// Try configured path first
@ -468,7 +535,9 @@ namespace RunRedis.Services
// 尝试触发BGSAVE如果Redis还在运行
if (IsRedisRunning())
{
var saveResult = await ExecuteRedisCliCommandAsync("BGSAVE");
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5));
var saveResult = await ExecuteRedisCliCommandAsync("BGSAVE", cts.Token);
if (!string.IsNullOrEmpty(saveResult) && !saveResult.Contains("ERR"))
{
Log.Information("✅ Background save triggered successfully");
@ -572,8 +641,10 @@ namespace RunRedis.Services
{
if (IsRedisRunning())
{
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5));
// 测试基本连接
var pingResult = await ExecuteRedisCliCommandAsync("PING");
var pingResult = await ExecuteRedisCliCommandAsync("PING", cts.Token);
if (!string.IsNullOrEmpty(pingResult) && pingResult.Contains("PONG"))
{
Log.Information("✅ Redis is responding to PING");

View File

@ -360,8 +360,9 @@ namespace RunRedis
}
finally
{
// 清理测试数据
await CleanupTestDataAsync(testKey);
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5));
await CleanupTestDataAsync(testKey, cts.Token); // 需修改方法支持CancellationToken
// 清理测试数据
}
}
@ -427,6 +428,7 @@ namespace RunRedis
try
{
var command = $"GET {key}";
var result = await _processManager.ExecuteRedisCliCommandAsync(command);
var success = !string.IsNullOrEmpty(result) && result.Trim().Trim('"') == expectedValue;
@ -451,14 +453,14 @@ namespace RunRedis
/// <summary>
/// 清理测试数据
/// </summary>
private async Task CleanupTestDataAsync(string testKey)
private async Task CleanupTestDataAsync(string testKey, CancellationToken token)
{
try
{
if (!string.IsNullOrEmpty(testKey))
{
var command = $"DEL {testKey}";
var result = await _processManager.ExecuteRedisCliCommandAsync(command);
var result = await _processManager.ExecuteRedisCliCommandAsync(command, token);
Log.Debug("🧹 清理测试数据: {Key}, 结果: {Result}", testKey, result);
}
}

View File

@ -1,5 +1,4 @@
using Abp.Dependency;
using Org.BouncyCastle.Tsp;
using Renci.SshNet.Sftp;
using StackExchange.Redis;
using System;

View File

@ -40,57 +40,13 @@ namespace YunDa.ISAS.Web.Core
ISASConsts.ConnectionMysqlStringKey
);
//基于abpModule
// 输入时间格式(支持多种格式解析)
//Configuration.Modules.AbpAspNetCore().UseMvcDateTimeFormatForAppServices = new List<string>
//{
// // 标准日期时间格式
// "yyyy-MM-ddTHH:mm:ss", // ISO 8601 格式
// "yyyy-MM-ddTHH:mm:ssZ", // ISO 8601 UTC 格式
// "yyyy-MM-ddTHH:mm:ss.fff", // 带毫秒的 ISO 格式
// "yyyy-MM-ddTHH:mm:ss.fffZ", // 带毫秒的 ISO UTC 格式
// // 自定义日期时间格式
// "yyyy-MM-dd HH:mm:ss", // 常见的日期时间格式
// "yyyy-MM-dd HH:mm:ss.fff", // 带毫秒的日期时间格式
// "yyyy-MM-dd", // 简单日期格式
// "yyyy/MM/dd HH:mm:ss", // 斜线分隔的日期时间
// "yyyy/MM/dd", // 斜线分隔的简单日期
// // 带时间标识AM/PM
// "yyyy-MM-dd hh:mm:ss tt", // 12 小时制,带 AM/PM
// "yyyy/MM/dd hh:mm:ss tt", // 12 小时制,带 AM/PM 的斜线分隔
// // 支持带时区偏移的格式
// "yyyy-MM-ddTHH:mm:sszzz", // 带时区的 ISO 格式
// "yyyy-MM-dd HH:mm:sszzz", // 带时区偏移的自定义格式
// // 长格式(英文)
// "ddd, dd MMM yyyy HH:mm:ss GMT",// HTTP 标准格式
// "dddd, dd MMMM yyyy HH:mm:ss", // 长格式带月份全名
// "ddd, dd MMM yyyy HH:mm:ss zzz" // 带时区的长格式
// // Unix 时间戳(扩展支持可解析为 DateTime
// // 需要额外解析逻辑时也可以支持
//};
// Set global date format for JSON responses
//var jsonSettings = Configuration.Modules.AbpAspNetCore().JsonSerializerSettings;
//jsonSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
Configuration.Modules.AbpAspNetCore().UseMvcDateTimeFormatForAppServices = true;
// 输出时间格式
// 如果需要设置自定义日期格式,您可以配置 JsonSerializerSettings
//var jsonSettings = Configuration.Modules.AbpAspNetCore().JsonSerializerSettings;
//jsonSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss"; // 自定义日期格式
Debug.WriteLine("MySql数据库连接" + _appConfiguration.GetConnectionString(ISASConsts.ConnectionMysqlStringKey));
#region MogngoDBConfig
var mongoConfiguration = Configuration.Modules.ISASConfiguration<IMongoDBConfiguration>();
ConfigurationHelper.SetMongoDBConfiguration(_appConfiguration, ref mongoConfiguration);
Console.WriteLine("MongoDB数据库连接" + mongoConfiguration.HostString + ":" + mongoConfiguration.Port);
#endregion MogngoDBConfig
#region redisconfig
@ -100,7 +56,6 @@ namespace YunDa.ISAS.Web.Core
#endregion
#region AppConfig
var appServiceConfiguration = Configuration.Modules.ISASConfiguration<IAppServiceConfiguration>();
ConfigurationHelper.SetAppServiceConfiguration(_appConfiguration, ref appServiceConfiguration);

View File

@ -75,6 +75,18 @@
<vue-chosen :placeholder="'请选择指标'" :default_value="name" :options="names" v-on:change="setNameAction"></vue-chosen>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">包含运维信息</label>
<div class="col-sm-9">
<textarea class="form-control" v-model="descriptionOfInformation"></textarea>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">主要作用</label>
<div class="col-sm-9">
<textarea class="form-control" v-model="keyPurpose"></textarea>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">计算方式描述</label>
<div class="col-sm-9">

View File

@ -9,6 +9,9 @@
"SendExceptionsDetailsToClients": true, //
"SendStackTraceToClients": true //
},
"DatabaseSettings": {
"IsmsBaseDatabaseType": "MySQL"
},
"ConnectionStrings": {
"MysqlSetting": "server=192.168.81.229;port=3306;uid=root;pwd=123456; Database=soms_sys_db;SslMode=none;Max Pool Size=200;Connection Timeout=60;Pooling=True;",
"ISMS_BASE_MysqlSetting": "server=192.168.81.229;port=3306;uid=root;pwd=123456; Database=isms_l_base;SslMode=none;Max Pool Size=200;Connection Timeout=60;Pooling=True;",

View File

@ -9,6 +9,9 @@
"SendExceptionsDetailsToClients": true, //
"SendStackTraceToClients": true //
},
"DatabaseSettings": {
"IsmsBaseDatabaseType": "SqlServer"
},
"ConnectionStrings": {
"MysqlSetting": "server=192.168.81.229;port=3306;uid=root;pwd=123456; Database=soms_sys_db;SslMode=none;Max Pool Size=200;Connection Timeout=60;Pooling=True;",
"ISMS_BASE_MysqlSetting": "server=192.168.81.229;port=3306;uid=root;pwd=123456; Database=isms_l_base;SslMode=none;Max Pool Size=200;Connection Timeout=60;Pooling=True;",

View File

@ -144,7 +144,7 @@ var equipmentIndicatorConfigList = {
seqNo: 0,
name: "",
names: [],
KeyPurpose: "",
keyPurpose: "",
descriptionOfInformation:"",
calculationFormula: "",
weight: 0,
@ -213,7 +213,7 @@ var equipmentIndicatorConfigList = {
seqNo: this.seqNo,
name: this.name,
descriptionOfInformation: this.descriptionOfInformation,
keyPurpose: this.KeyPurpose,
keyPurpose: this.keyPurpose,
calculationFormula: this.calculationFormula,
weight: this.weight,
dataPrecision: this.dataPrecision,
@ -280,6 +280,8 @@ var equipmentIndicatorConfigList = {
value: 0,
remark: "",
isActive: true,
keyPurpose: "",
descriptionOfInformation: "",
equipmentType: null
};
return;
@ -297,7 +299,7 @@ var equipmentIndicatorConfigList = {
vueInstance.remark = rowData.remark;
vueInstance.isActive = rowData.isActive;
vueInstance.equipmentType = rowData.equipmentType?.id;
vueInstance.KeyPurpose = rowData.KeyPurpose;
vueInstance.keyPurpose = rowData.keyPurpose;
vueInstance.descriptionOfInformation = rowData.descriptionOfInformation;
},
@ -325,7 +327,7 @@ var equipmentIndicatorConfigList = {
formatter: value => value || '-'
},
{
field: 'KeyPurpose',
field: 'keyPurpose',
title: '主要作用',
formatter: value => value || '-'
},