综自数据库mysql/sql server双数据库支持
This commit is contained in:
parent
55f26694f6
commit
0e3624d89c
90
build_output.txt
Normal file
90
build_output.txt
Normal 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
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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. 根据不同时间间隔处理数据
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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("未找到指定的变压器设备或设备已禁用");
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -400,7 +400,7 @@ namespace YunDa.ISAS.Application.System
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取可以选择的设备下拉列表
|
||||
/// 获取可以选择下拉列表
|
||||
/// </summary>
|
||||
/// <param name="searchCondition"></param>
|
||||
/// <returns></returns>
|
||||
@ -461,203 +461,6 @@ namespace YunDa.ISAS.Application.System
|
||||
}
|
||||
|
||||
|
||||
[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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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 };
|
||||
@ -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;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@ -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; } // 详细说明
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
18
src/YunDa.Core/YunDa.ISAS.Core/Configuration/DatabaseType.cs
Normal file
18
src/YunDa.Core/YunDa.ISAS.Core/Configuration/DatabaseType.cs
Normal 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
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
5674
src/YunDa.Domain/YunDa.ISAS.EntityFrameworkCore/Migrations/20250701064157_update_table_v107.Designer.cs
generated
Normal file
5674
src/YunDa.Domain/YunDa.ISAS.EntityFrameworkCore/Migrations/20250701064157_update_table_v107.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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)");
|
||||
|
||||
|
||||
@ -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);
|
||||
builder.SetMinimumLevel(LogLevel.Information);
|
||||
});
|
||||
#if Mysql
|
||||
public static void Configure(DbContextOptionsBuilder<ISMS_BASE_Mysql_Context> dbContextOptions, string connectionString)
|
||||
{
|
||||
dbContextOptions.UseMySql(connectionString,
|
||||
builder => {
|
||||
builder.CommandTimeout(600);
|
||||
})
|
||||
.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking)
|
||||
.EnableSensitiveDataLogging();
|
||||
}
|
||||
|
||||
#else
|
||||
/// <summary>
|
||||
/// 配置 ISMS_BASEContext (SQL Server)
|
||||
/// </summary>
|
||||
public static void Configure(DbContextOptionsBuilder<ISMS_BASEContext> 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();
|
||||
// maxRetryDelay: TimeSpan.FromSeconds(30), // 最大重试延迟
|
||||
// errorNumbersToAdd: null);
|
||||
})
|
||||
.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking)
|
||||
//.UseLoggerFactory(MyLoggerFactory)
|
||||
.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.CommandTimeout(600);
|
||||
})
|
||||
.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking)
|
||||
.EnableSensitiveDataLogging();
|
||||
}
|
||||
|
||||
/// <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($"Configuring SQL Server DbContext with connection: {connectionString}");
|
||||
#endif
|
||||
dbContextOptions.UseSqlServer(connectionString,
|
||||
builder =>
|
||||
{
|
||||
builder.CommandTimeout(600);
|
||||
})
|
||||
.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking)
|
||||
.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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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 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; }
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -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.");
|
||||
}
|
||||
#if Mysql
|
||||
// 配置 EF Core 上下文
|
||||
case DatabaseType.MySQL:
|
||||
Configuration.Modules.AbpEfCore().AddDbContext<ISMS_BASE_Mysql_Context>(options =>
|
||||
{
|
||||
DbContextOptionsConfigurer.Configure(options.DbContextOptions, connectionString);
|
||||
});
|
||||
#else
|
||||
// 配置 EF Core 上下文
|
||||
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);
|
||||
});
|
||||
#endif
|
||||
Logger.Info("EF Core DbContext for ISMS_BASE configured successfully.");
|
||||
Logger.Info("SQL Server DbContext for ISMS_BASE configured successfully.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public override void Initialize()
|
||||
|
||||
@ -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!;
|
||||
|
||||
@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
@ -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,38 +407,96 @@ 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 = await process.StandardOutput.ReadToEndAsync();
|
||||
var error = await process.StandardError.ReadToEndAsync();
|
||||
|
||||
await process.WaitForExitAsync();
|
||||
var output = outputBuilder.ToString().Trim();
|
||||
var error = errorBuilder.ToString().Trim();
|
||||
|
||||
if (process.ExitCode == 0)
|
||||
{
|
||||
Log.Debug("Redis CLI command executed successfully: {Command}", command);
|
||||
return output.Trim();
|
||||
return output;
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.Warning("Redis CLI command failed: {Command}, Error: {Error}", command, error);
|
||||
|
||||
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()
|
||||
{
|
||||
@ -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");
|
||||
|
||||
@ -360,8 +360,9 @@ namespace RunRedis
|
||||
}
|
||||
finally
|
||||
{
|
||||
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5));
|
||||
await CleanupTestDataAsync(testKey, cts.Token); // 需修改方法支持CancellationToken
|
||||
// 清理测试数据
|
||||
await CleanupTestDataAsync(testKey);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
using Abp.Dependency;
|
||||
using Org.BouncyCastle.Tsp;
|
||||
using Renci.SshNet.Sftp;
|
||||
using StackExchange.Redis;
|
||||
using System;
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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;",
|
||||
|
||||
@ -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;",
|
||||
|
||||
@ -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 || '-'
|
||||
},
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user