综自数据库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.EntityFrameworkCore.EntityFrameworkCore;
using YunDa.ISAS.MongoDB; using YunDa.ISAS.MongoDB;
using YunDa.ISAS.Redis; using YunDa.ISAS.Redis;
using YunDa.ISMS.BASE.Entities; using YunDa.SOMS.BASE.Entities;
namespace YunDa.ISAS.Application.Core namespace YunDa.ISAS.Application.Core
{ {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -400,7 +400,7 @@ namespace YunDa.ISAS.Application.System
} }
/// <summary> /// <summary>
/// 获取可以选择的设备下拉列表 /// 获取可以选择下拉列表
/// </summary> /// </summary>
/// <param name="searchCondition"></param> /// <param name="searchCondition"></param>
/// <returns></returns> /// <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;
}
} }
} }

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

View File

@ -29,11 +29,22 @@ namespace YunDa.SOMS.DataTransferObject.GeneralInformation.EquipmentIndicatorCon
public virtual decimal Weight { get; set; } public virtual decimal Weight { get; set; }
public virtual decimal DataPrecision { get; set; } public virtual decimal DataPrecision { get; set; }
public virtual decimal Value { get; set; } public virtual decimal Value { get; set; }
public List<IndicatorStatusInfo> StatusInfos { get; set; } = new List<IndicatorStatusInfo>();
/// <summary> /// <summary>
/// 所属设别类别 /// 所属设别类别
/// </summary> /// </summary>
public virtual Guid? EquipmentTypeId { get; set; } public virtual Guid? EquipmentTypeId { get; set; }
public virtual bool IsActive { get; set; } public virtual bool IsActive { get; set; }
public virtual string Remark { 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 Microsoft.Extensions.Primitives;
using MongoDB.Bson; using MongoDB.Bson;
using MongoDB.Driver; using MongoDB.Driver;
using Org.BouncyCastle.Utilities;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;

View File

@ -9,7 +9,6 @@ using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Serialization; using Newtonsoft.Json.Serialization;
using NPOI.OpenXmlFormats.Dml.Diagram; using NPOI.OpenXmlFormats.Dml.Diagram;
using Org.BouncyCastle.Ocsp;
using System; using System;
using System.ComponentModel; using System.ComponentModel;
using System.Diagnostics; 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 const int MaxRemarkLength = 200;
public string Name { get; set; }
/// <summary> /// <summary>
/// 顺序号 /// 顺序号
/// </summary> /// </summary>
public virtual int SeqNo { get; set; } public virtual int SeqNo { get; set; }
/// <summary> /// <summary>
/// 设备ID (Equipment ID) /// 设备ID (Equipment ID)
/// 用于标识被监控的设备 /// 用于标识被监控的设备
@ -117,6 +117,13 @@ namespace YunDa.ISAS.Entities.GeneralInformation
/// 遥信数据 /// 遥信数据
/// </summary> /// </summary>
[Description("遥信")] [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") b.Property<decimal>("DataPrecision")
.HasColumnType("decimal(65,30)"); .HasColumnType("decimal(65,30)");
b.Property<string>("DescriptionOfInformation")
.HasColumnType("longtext CHARACTER SET utf8mb4");
b.Property<Guid?>("EquipmentTypeId") b.Property<Guid?>("EquipmentTypeId")
.HasColumnType("char(36)"); .HasColumnType("char(36)");
b.Property<bool>("IsActive") b.Property<bool>("IsActive")
.HasColumnType("tinyint(1)"); .HasColumnType("tinyint(1)");
b.Property<string>("KeyPurpose")
.HasColumnType("longtext CHARACTER SET utf8mb4");
b.Property<DateTime?>("LastModificationTime") b.Property<DateTime?>("LastModificationTime")
.HasColumnType("datetime(6)"); .HasColumnType("datetime(6)");

View File

@ -1,56 +1,102 @@
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options; using Pomelo.EntityFrameworkCore.MySql.Infrastructure;
using Pomelo.EntityFrameworkCore.MySql.Storage;
using System; using System;
using System.Diagnostics; using System.Diagnostics;
using YunDa.SOMS.BASE.Entities; using YunDa.ISAS.Core.Configuration;
namespace YunDa.SOMS.BASE.Entities
namespace YunDa.ISMS.BASE.Entities
{ {
public static class DbContextOptionsConfigurer public static class DbContextOptionsConfigurer
{ {
public static readonly ILoggerFactory MyLoggerFactory public static readonly ILoggerFactory MyLoggerFactory
= LoggerFactory.Create(builder => = LoggerFactory.Create(builder =>
{ {
builder builder.SetMinimumLevel(LogLevel.Information);
.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) public static void Configure(DbContextOptionsBuilder<ISMS_BASEContext> dbContextOptions, string connectionString)
{ {
#if DEBUG #if DEBUG
Debug.WriteLine(connectionString); Debug.WriteLine($"Configuring SQL Server DbContext with connection: {connectionString}");
/* dbContextOptions.UseSqlServer("Server=192.168.110.161;User ID=sa;Password=sa;Database=ISMS_BASE;Trusted_Connection=False;")*/
#endif #endif
;
dbContextOptions.UseSqlServer(connectionString, dbContextOptions.UseSqlServer(connectionString,
builder => { builder =>
{
builder.CommandTimeout(600); builder.CommandTimeout(600);
//builder.EnableRetryOnFailure( //builder.EnableRetryOnFailure(
// maxRetryCount: 5, // 最大重试次数 // maxRetryCount: 5, // 最大重试次数
//maxRetryDelay: TimeSpan.FromSeconds(30), // 最大重试延迟 // maxRetryDelay: TimeSpan.FromSeconds(30), // 最大重试延迟
//errorNumbersToAdd: null); // errorNumbersToAdd: null);
//builder.UseRelationalNulls();
}) })
.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking) .UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking)
//.UseLoggerFactory(MyLoggerFactory)
.EnableSensitiveDataLogging(); .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 #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();
}
} }
} }

View File

@ -7,12 +7,8 @@ using YunDa.SOMS.BASE.Entities.Models;
namespace YunDa.SOMS.BASE.Entities 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 public partial class ISMS_BASEContext : AbpDbContext, ISMS_BASE_Dasets
#endif
{ {
public ISMS_BASEContext(DbContextOptions<ISMS_BASEContext> options) public ISMS_BASEContext(DbContextOptions<ISMS_BASEContext> options)
@ -7765,6 +7761,24 @@ namespace YunDa.SOMS.BASE.Entities
public DbSet<TbXiTongMoKuai> TbXiTongMoKuai { get; set; } public DbSet<TbXiTongMoKuai> TbXiTongMoKuai { get; set; }
public DbSet<TbXiTongRiZhi> TbXiTongRiZhi { get; set; } public DbSet<TbXiTongRiZhi> TbXiTongRiZhi { get; set; }
public DbSet<TbYongHu> TbYongHu { 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.EntityFrameworkCore.Configuration;
using Abp.Modules; using Abp.Modules;
using Abp.Reflection.Extensions; using Abp.Reflection.Extensions;
@ -8,9 +9,8 @@ using System;
using YunDa.ISAS.Core; using YunDa.ISAS.Core;
using YunDa.ISAS.Core.Configuration; using YunDa.ISAS.Core.Configuration;
using YunDa.ISAS.Core.Web; using YunDa.ISAS.Core.Web;
using YunDa.SOMS.BASE.Entities;
namespace YunDa.ISMS.BASE.Entities namespace YunDa.SOMS.BASE.Entities
{ {
[DependsOn( [DependsOn(
typeof(ISASCoreModule), // 依赖 ISAS 核心模块 typeof(ISASCoreModule), // 依赖 ISAS 核心模块
@ -26,38 +26,41 @@ namespace YunDa.ISMS.BASE.Entities
var contentRootFolder = WebContentDirectoryFinder.CalculateContentRootFolder(); var contentRootFolder = WebContentDirectoryFinder.CalculateContentRootFolder();
// 加载多环境配置文件(例如 appsettings.Development.json // 加载多环境配置文件(例如 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..."); Logger.Info("Loading configuration for ISMS_BASEEntityFrameworkCoreModule...");
// 获取数据库连接字符串 // 创建数据库配置实例
var databaseConfig = new DatabaseConfiguration(configuration);
var databaseType = databaseConfig.IsmsBaseDatabaseType;
var connectionString = databaseConfig.GetIsmsBaseConnectionString();
#if Mysql Logger.Info($"Configuring ISMS_BASE with database type: {databaseType}");
var connectionString = configuration.GetConnectionString(ISASConsts.ISMS_BASEMysqlSettingStringKey);
#else
var connectionString = configuration.GetConnectionString(ISASConsts.ISMS_BASESqlServerSettingStringKey);
#endif // 根据数据库类型配置相应的 DbContext
switch (databaseType)
if (string.IsNullOrEmpty(connectionString))
{ {
throw new ApplicationException("Database connection string is not configured for ISMS_BASE."); case DatabaseType.MySQL:
}
#if Mysql
// 配置 EF Core 上下文
Configuration.Modules.AbpEfCore().AddDbContext<ISMS_BASE_Mysql_Context>(options => Configuration.Modules.AbpEfCore().AddDbContext<ISMS_BASE_Mysql_Context>(options =>
{ {
DbContextOptionsConfigurer.Configure(options.DbContextOptions, connectionString); DbContextOptionsConfigurer.Configure(options.DbContextOptions, connectionString);
}); });
#else Logger.Info("MySQL DbContext for ISMS_BASE configured successfully.");
// 配置 EF Core 上下文 break;
case DatabaseType.SqlServer:
default:
Configuration.Modules.AbpEfCore().AddDbContext<ISMS_BASEContext>(options => Configuration.Modules.AbpEfCore().AddDbContext<ISMS_BASEContext>(options =>
{ {
DbContextOptionsConfigurer.Configure(options.DbContextOptions, connectionString); DbContextOptionsConfigurer.Configure(options.DbContextOptions, connectionString);
}); });
#endif Logger.Info("SQL Server DbContext for ISMS_BASE configured successfully.");
Logger.Info("EF Core DbContext for ISMS_BASE configured successfully."); break;
}
} }
public override void Initialize() public override void Initialize()

View File

@ -46,10 +46,7 @@ namespace YunDa.SOMS.BASE.Entities
public DbSet<ImDeviceYxSrcDevice> ImDeviceYxSrcDevice { get; set; } public DbSet<ImDeviceYxSrcDevice> ImDeviceYxSrcDevice { get; set; }
public DbSet<ImDeviceYxTmp> ImDeviceYxTmp { get; set; } public DbSet<ImDeviceYxTmp> ImDeviceYxTmp { get; set; }
public DbSet<ImDiagram> ImDiagram { get; set; } public DbSet<ImDiagram> ImDiagram { get; set; }
#if Mysql
public DbSet<ImDzcheckrule> ImDzcheckrule { get; set; } public DbSet<ImDzcheckrule> ImDzcheckrule { get; set; }
#endif
public DbSet<ImDztype> ImDztype { get; set; } public DbSet<ImDztype> ImDztype { get; set; }
public DbSet<ImEventFlag> ImEventFlag { get; set; } public DbSet<ImEventFlag> ImEventFlag { get; set; }
public DbSet<ImEventParam> ImEventParam { 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<TbXiTongRiZhi> TbXiTongRiZhi { get; set; }
public DbSet<TbYongHu> TbYongHu { 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<IaFuncNameConst> IaFuncNameConsts { get; set; } = null!;
//public DbSet<IaMaChannel> IaMaChannels { 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 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 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<ImDeviceYxTmp> ImDeviceYxTmp { get; set; }
public DbSet<ImDiagram> ImDiagram { get; set; } public DbSet<ImDiagram> ImDiagram { get; set; }
#if Mysql #if Mysql
public DbSet<ImDzcheckrule> ImDzcheckrule { get; set; }
#endif #endif
public DbSet<ImDzcheckrule> ImDzcheckrule { get; set; }
public DbSet<ImDztype> ImDztype { get; set; } public DbSet<ImDztype> ImDztype { get; set; }
public DbSet<ImEventFlag> ImEventFlag { get; set; } public DbSet<ImEventFlag> ImEventFlag { get; set; }
public DbSet<ImEventParam> ImEventParam { 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<TbXiTongMoKuai> TbXiTongMoKuai { get; set; }
public DbSet<TbXiTongRiZhi> TbXiTongRiZhi { get; set; } public DbSet<TbXiTongRiZhi> TbXiTongRiZhi { get; set; }
public DbSet<TbYongHu> TbYongHu { 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.Linq;
using System.Net; using System.Net;
using System.Net.Sockets; using System.Net.Sockets;
using System.Text;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -159,7 +160,9 @@ namespace RunRedis.Services
if (graceful) if (graceful)
{ {
// Try graceful shutdown using redis-cli // 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 await Task.Delay(5000); // Wait for graceful shutdown
} }
@ -381,16 +384,22 @@ namespace RunRedis.Services
return string.Join(" ", args); 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 try
{ {
if (token == default)
{
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5));
token = cts.Token;
}
string redisCliPath = GetRedisCliPath(); string redisCliPath = GetRedisCliPath();
var processStartInfo = new ProcessStartInfo var processStartInfo = new ProcessStartInfo
{ {
FileName = redisCliPath, FileName = redisCliPath,
Arguments = $"-h {_settings.Host} -p {_settings.Port}", Arguments = BuildRedisCliArguments(command),
CreateNoWindow = true, CreateNoWindow = true,
UseShellExecute = false, UseShellExecute = false,
RedirectStandardOutput = true, RedirectStandardOutput = true,
@ -398,38 +407,96 @@ namespace RunRedis.Services
RedirectStandardInput = true 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();
var output = await process.StandardOutput.ReadToEndAsync();
var error = await process.StandardError.ReadToEndAsync();
await process.WaitForExitAsync();
if (process.ExitCode == 0) if (process.ExitCode == 0)
{ {
Log.Debug("Redis CLI command executed successfully: {Command}", command); Log.Debug("Redis CLI command executed successfully: {Command}", command);
return output.Trim(); return output;
} }
else
{ Log.Warning("Redis CLI command failed (Exit {ExitCode}): {Command}, Error: {Error}",
Log.Warning("Redis CLI command failed: {Command}, Error: {Error}", command, error); process.ExitCode, command, error);
return null; return null;
} }
} catch (OperationCanceledException)
{
Log.Warning("Redis CLI command canceled: {Command}", command);
throw; // 重新抛出让调用方处理
} }
catch (Exception ex) 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; 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() private string GetRedisCliPath()
{ {
@ -468,7 +535,9 @@ namespace RunRedis.Services
// 尝试触发BGSAVE如果Redis还在运行 // 尝试触发BGSAVE如果Redis还在运行
if (IsRedisRunning()) 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")) if (!string.IsNullOrEmpty(saveResult) && !saveResult.Contains("ERR"))
{ {
Log.Information("✅ Background save triggered successfully"); Log.Information("✅ Background save triggered successfully");
@ -572,8 +641,10 @@ namespace RunRedis.Services
{ {
if (IsRedisRunning()) 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")) if (!string.IsNullOrEmpty(pingResult) && pingResult.Contains("PONG"))
{ {
Log.Information("✅ Redis is responding to PING"); Log.Information("✅ Redis is responding to PING");

View File

@ -360,8 +360,9 @@ namespace RunRedis
} }
finally 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 try
{ {
var command = $"GET {key}"; var command = $"GET {key}";
var result = await _processManager.ExecuteRedisCliCommandAsync(command); var result = await _processManager.ExecuteRedisCliCommandAsync(command);
var success = !string.IsNullOrEmpty(result) && result.Trim().Trim('"') == expectedValue; var success = !string.IsNullOrEmpty(result) && result.Trim().Trim('"') == expectedValue;
@ -451,14 +453,14 @@ namespace RunRedis
/// <summary> /// <summary>
/// 清理测试数据 /// 清理测试数据
/// </summary> /// </summary>
private async Task CleanupTestDataAsync(string testKey) private async Task CleanupTestDataAsync(string testKey, CancellationToken token)
{ {
try try
{ {
if (!string.IsNullOrEmpty(testKey)) if (!string.IsNullOrEmpty(testKey))
{ {
var command = $"DEL {testKey}"; var command = $"DEL {testKey}";
var result = await _processManager.ExecuteRedisCliCommandAsync(command); var result = await _processManager.ExecuteRedisCliCommandAsync(command, token);
Log.Debug("🧹 清理测试数据: {Key}, 结果: {Result}", testKey, result); Log.Debug("🧹 清理测试数据: {Key}, 结果: {Result}", testKey, result);
} }
} }

View File

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

View File

@ -40,57 +40,13 @@ namespace YunDa.ISAS.Web.Core
ISASConsts.ConnectionMysqlStringKey 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; 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)); Debug.WriteLine("MySql数据库连接" + _appConfiguration.GetConnectionString(ISASConsts.ConnectionMysqlStringKey));
#region MogngoDBConfig #region MogngoDBConfig
var mongoConfiguration = Configuration.Modules.ISASConfiguration<IMongoDBConfiguration>(); var mongoConfiguration = Configuration.Modules.ISASConfiguration<IMongoDBConfiguration>();
ConfigurationHelper.SetMongoDBConfiguration(_appConfiguration, ref mongoConfiguration); ConfigurationHelper.SetMongoDBConfiguration(_appConfiguration, ref mongoConfiguration);
Console.WriteLine("MongoDB数据库连接" + mongoConfiguration.HostString + ":" + mongoConfiguration.Port); Console.WriteLine("MongoDB数据库连接" + mongoConfiguration.HostString + ":" + mongoConfiguration.Port);
#endregion MogngoDBConfig #endregion MogngoDBConfig
#region redisconfig #region redisconfig
@ -100,7 +56,6 @@ namespace YunDa.ISAS.Web.Core
#endregion #endregion
#region AppConfig #region AppConfig
var appServiceConfiguration = Configuration.Modules.ISASConfiguration<IAppServiceConfiguration>(); var appServiceConfiguration = Configuration.Modules.ISASConfiguration<IAppServiceConfiguration>();
ConfigurationHelper.SetAppServiceConfiguration(_appConfiguration, ref appServiceConfiguration); 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> <vue-chosen :placeholder="'请选择指标'" :default_value="name" :options="names" v-on:change="setNameAction"></vue-chosen>
</div> </div>
</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"> <div class="form-group">
<label class="col-sm-3 control-label">计算方式描述</label> <label class="col-sm-3 control-label">计算方式描述</label>
<div class="col-sm-9"> <div class="col-sm-9">

View File

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