/// <summary> /// 添加分控信息 /// </summary> /// <param name="cache">当前操作用户的缓存</param> /// <param name="datas">待添加的数据集合</param> /// <returns></returns> public OperationResult AddSubControls(CacheUser cache, params SubControlInputDto[] datas) { int count = 0; SubAggregationRepository.UnitOfWork.BeginTransaction(); foreach (var data in datas) { SubControl sub = data.MapTo <SubControl>(); sub.CreatedTime = DateTime.Now; var poleone = LightPoleRepository.Entities.FirstOrDefault(m => m.Id == sub.LigthPoleOne_Id); if (poleone == null) { throw new Exception("id:指定灯杆信息不存在"); } if (SubControlRepository.CheckExists(m => m.SubNum == data.SubNum && m.LigthPoleOne.Host_Id == poleone.Host_Id)) { throw new Exception($"id:分控编号{data.SubNum}已经存在!不能在同一台主机上添加相同的分控编号"); } if (poleone == null) { throw new Exception("id:分控关联的灯杆不存在"); } SubAggregation aggregation = new SubAggregation { CreatedTime = DateTime.Now, SubControlOne = sub, LightPole_Id = sub.LigthPoleOne_Id, Host_Id = poleone.Host_Id, Organzie_Id = poleone.HostOne.Organize_Id }; count += SubAggregationRepository.Insert(aggregation); } ; SubAggregationRepository.UnitOfWork.Commit(); return(count > 0 ? new OperationResult(OperationResultType.Success, $"成功添加{count/2}条数据") : new OperationResult()); }
/// <summary> /// 定义种子数据初始化过程 /// </summary> /// <param name="context">数据上下文</param> public void Action(DbContext context) { try { context.Database.Log = new Action <string>(m => { LogManager.GetLogger(GetType()).Info(m); }); #region 初始化添加组织类型 //创建Organize<组织类型>表的类型字典目录 DataItem organizeItem = new DataItem { CreatedTime = DateTime.Now, QueryCoding = "OrganizeType", FullName = "组织类型", IsPublic = false, ParentId = null, IsSystem = true }; organizeItem.DataItemDetailMany.Add( new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = organizeItem, IsLocked = false, QueryCoding = "OrganizeType", FullName = "机构", Index = 0, IsSystem = true }); organizeItem.DataItemDetailMany.Add( new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = organizeItem, IsLocked = false, QueryCoding = "OrganizeType", FullName = "项目", Index = 1, IsSystem = true }); organizeItem.DataItemDetailMany.Add( new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = organizeItem, IsLocked = false, QueryCoding = "OrganizeType", FullName = "小组", Index = 2, IsSystem = true }); context.Set <DataItem>().Add(organizeItem); #endregion #region 初始化添加黑名单类型 //创建UserBlackList<黑名单类型>表的类型字典目录 DataItem userBlackListItem = new DataItem { CreatedTime = DateTime.Now, FullName = "黑名单类型", IsPublic = false, QueryCoding = "UserBlackListType", IsSystem = true }; userBlackListItem.DataItemDetailMany.Add( new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = userBlackListItem, IsLocked = false, QueryCoding = "UserBlackListType", FullName = "主机黑名单", Index = 0, IsSystem = true }); userBlackListItem.DataItemDetailMany.Add( new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = userBlackListItem, IsLocked = false, QueryCoding = "UserBlackListType", FullName = "分控黑名单", Index = 1, IsSystem = true }); context.Set <DataItem>().Add(userBlackListItem); #endregion #region 初始化添加信息类型 //创建Information<信息类型>表的类型字典目录 DataItem informationItem = new DataItem { CreatedTime = DateTime.Now, FullName = "信息类型", IsPublic = false, QueryCoding = "InformationType", IsSystem = true }; //主机类型 0-10 informationItem.DataItemDetailMany.Add( new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = informationItem, IsLocked = false, QueryCoding = "InformationType", FullName = "主机断线", Index = 0, IsSystem = true }); informationItem.DataItemDetailMany.Add( new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = informationItem, IsLocked = false, QueryCoding = "InformationType", FullName = "主机电压超压", Index = 1, IsSystem = true }); informationItem.DataItemDetailMany.Add( new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = informationItem, IsLocked = false, QueryCoding = "InformationType", FullName = "主机电压欠压", Index = 2, IsSystem = true }); informationItem.DataItemDetailMany.Add( new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = informationItem, IsLocked = false, QueryCoding = "InformationType", FullName = "主机门被打开", Index = 3, IsSystem = true }); informationItem.DataItemDetailMany.Add( new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = informationItem, IsLocked = false, QueryCoding = "InformationType", FullName = "主机功率异常", Index = 4, IsSystem = true }); //分控类型11-20 informationItem.DataItemDetailMany.Add( new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = informationItem, IsLocked = false, QueryCoding = "InformationType", FullName = "分控断线", Index = 11, IsSystem = true }); informationItem.DataItemDetailMany.Add( new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = informationItem, IsLocked = false, QueryCoding = "InformationType", FullName = "分机功率异常", Index = 12, IsSystem = true }); context.Set <DataItem>().Add(informationItem); #endregion #region 初始化添加主机类型 //创建Host<主机类型>表的类型字典目录 DataItem hostItem = new DataItem { CreatedTime = DateTime.Now, FullName = "主机类型", IsPublic = true, QueryCoding = "HostType", IsSystem = true }; hostItem.DataItemDetailMany.Add( new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = hostItem, IsLocked = false, QueryCoding = "HostType", FullName = "主机类型1", Index = 0, IsSystem = true }); hostItem.DataItemDetailMany.Add( new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = hostItem, IsLocked = false, QueryCoding = "HostType", FullName = "主机类型2", Index = 1, IsSystem = true }); context.Set <DataItem>().Add(hostItem); #endregion #region 初始化添加分控类型 DataItem subItem = new DataItem { CreatedTime = DateTime.Now, FullName = "分控类型", IsPublic = true, QueryCoding = "SubType", IsSystem = true }; subItem.DataItemDetailMany.Add( new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = subItem, IsLocked = false, QueryCoding = "SubType", FullName = "分控类型1", Index = 0, IsSystem = true }); subItem.DataItemDetailMany.Add( new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = subItem, IsLocked = false, QueryCoding = "SubType", FullName = "分控类型2", Index = 1, IsSystem = true }); context.Set <DataItem>().Add(subItem); #endregion #region 初始化添加灯杆类型 DataItem lightPoleItem = new DataItem { CreatedTime = DateTime.Now, FullName = "灯杆类型", IsPublic = true, QueryCoding = "PoleType", IsSystem = true }; lightPoleItem.DataItemDetailMany.Add(new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = lightPoleItem, IsLocked = false, QueryCoding = "PoleType", FullName = "灯杆类型1", Index = 0, IsSystem = true }); lightPoleItem.DataItemDetailMany.Add(new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = lightPoleItem, IsLocked = false, QueryCoding = "PoleType", FullName = "灯杆类型2", Index = 1, IsSystem = true }); context.Set <DataItem>().Add(lightPoleItem); #endregion #region 初始化添加灯具类型 DataItem lightsItem = new DataItem { CreatedTime = DateTime.Now, FullName = "灯具类型", IsPublic = true, QueryCoding = "LigthsType", IsSystem = true }; lightsItem.DataItemDetailMany.Add(new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = lightsItem, IsLocked = false, QueryCoding = "LigthsType", FullName = "灯具类型1", Index = 0, IsSystem = true }); lightsItem.DataItemDetailMany.Add(new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = lightsItem, IsLocked = false, QueryCoding = "LigthsType", FullName = "灯具类型2", Index = 1, IsSystem = true }); context.Set <DataItem>().Add(lightsItem); #endregion #region 初始化光照计划类型 DataItem lightPlanItem = new DataItem { CreatedTime = DateTime.Now, FullName = "光照计划类型", IsPublic = true, QueryCoding = "LigthPlanType", IsSystem = true }; lightPlanItem.DataItemDetailMany.Add(new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = lightPlanItem, IsLocked = false, QueryCoding = "LigthPlanType", FullName = "标准光照计划", Index = 0, IsSystem = true }); lightPlanItem.DataItemDetailMany.Add(new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = lightPlanItem, IsLocked = false, QueryCoding = "LigthPlanType", FullName = "隧道光照计划", Index = 1, IsSystem = true }); context.Set <DataItem>().Add(lightPlanItem); #endregion #region 初始化升级包的类型 DataItem PackItem = new DataItem { CreatedTime = DateTime.Now, FullName = "升级包类型", IsPublic = true, QueryCoding = "PacketType", IsSystem = true }; PackItem.DataItemDetailMany.Add(new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = PackItem, IsLocked = false, QueryCoding = "PacketType", FullName = "主机升级包", Index = 0, IsSystem = true }); PackItem.DataItemDetailMany.Add(new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = PackItem, IsLocked = false, QueryCoding = "PacketType", FullName = "分控升级包", Index = 1, IsSystem = true }); context.Set <DataItem>().Add(PackItem); #endregion #region 初始化策略下发状态类型 DataItem HostPolicyItem = new DataItem { CreatedTime = DateTime.Now, FullName = "策略下发类型", IsPublic = false, QueryCoding = "PolicyType", IsSystem = true }; HostPolicyItem.DataItemDetailMany.Add(new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = HostPolicyItem, IsLocked = false, QueryCoding = "PolicyType", FullName = "策略下发等待中", Index = 0, IsSystem = true }); HostPolicyItem.DataItemDetailMany.Add(new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = HostPolicyItem, IsLocked = false, QueryCoding = "PolicyType", FullName = "策略下发已成功", Index = 1, IsSystem = true }); HostPolicyItem.DataItemDetailMany.Add(new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = HostPolicyItem, IsLocked = false, QueryCoding = "PolicyType", FullName = "策略下发已失败", Index = 2, IsSystem = true }); context.Set <DataItem>().Add(HostPolicyItem); #endregion #region 初始化分组的类型 DataItem GroupItem = new DataItem { CreatedTime = DateTime.Now, FullName = "分组类型", IsPublic = true, QueryCoding = "GroupType", IsSystem = true }; GroupItem.DataItemDetailMany.Add(new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = GroupItem, IsLocked = false, QueryCoding = "GroupType", FullName = "主机上的节点分组", Index = 0, IsSystem = true }); GroupItem.DataItemDetailMany.Add(new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = true, DataItemOne = GroupItem, IsLocked = false, QueryCoding = "GroupType", FullName = "未命名分组", Index = 1, IsSystem = true }); context.Set <DataItem>().Add(GroupItem); #endregion #region 初始化能耗存储类型 DataItem ECTItem = new DataItem { CreatedTime = DateTime.Now, FullName = "能耗存储类型", IsPublic = false, QueryCoding = "ECType", IsSystem = true }; ECTItem.DataItemDetailMany.Add(new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = false, DataItemOne = ECTItem, IsLocked = false, QueryCoding = "ECType", FullName = "主机能耗", Index = 0, IsSystem = true }); ECTItem.DataItemDetailMany.Add(new DataItemDetail { CreatedTime = DateTime.Now, IsPublic = false, DataItemOne = ECTItem, IsLocked = false, QueryCoding = "ECType", FullName = "分控能耗", Index = 1, IsSystem = true }); context.Set <DataItem>().Add(ECTItem); #endregion #region 初始化系统内置组织和默认帐号 Organize organize = new Organize { DataItemDetailOne = organizeItem.DataItemDetailMany.First(m => m.QueryCoding == "OrganizeType" && m.Index == 0), Email = "*****@*****.**", Fax = "0755-29686239", FullName = "系统内建组织", Address = "深圳市宝安区石岩街道洲石路达成工业园", City = "深圳市", Country = "中国", County = "宝安区", CreatedTime = DateTime.Now, Province = "广东省", Remark = "该数据由系统初始化时创建", SortCode = (int)DateTime.Now.GetTimeStamp(), TelePhone = "0755-29686239", OrganizeLogo = Properties.Resources.OrganizeLog.ToBytes() }; string key = new Random().NextLetterString(16).ToUpper(); UserLogin userLogin = new UserLogin { UserName = "******", SecretKey = key, Password = ($"12345678").AESEncrypt128(key), AccessFailedCount = 10, IsAdministrator = true, IsLocked = false, Level = 1, OrganizeOne = organize, LoginCount = 0, PermissionList = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30", LockoutEnabled = true, }; userLogin.UserMany.Add(new User { CreatedTime = DateTime.Now, Email = "*****@*****.**", NickName = "系统超级管理员", PhoneNumber = "13102263109", RealName = "莫奕宁", Sex = 1, WeChat = "myining", UserLoginOne = userLogin, HeadIcon = Properties.Resources._default.ToBytes() }); userLogin.UserBlackListMany.Add(new UserBlackList { CreatedTime = DateTime.Now, BlackList = "", DataItemDetailOne = userBlackListItem.DataItemDetailMany.First(), }); userLogin.UserOrganizeMapMany.Add(new UserOrganizeMap { CreatedTime = DateTime.Now, OrganizeOne = organize, }); organize.UserLoginMany.Add(userLogin); context.Set <Organize>().Add(organize); #endregion #region 添加初始化测试主机 Host host = new Host { CreatedTime = DateTime.Now, Address = "深圳市宝安区石岩街道洲石路达成工业园", DataItemDetailOne = hostItem.DataItemDetailMany.First(), FullName = "雷雁测试主机", HeartBag = "000000", OrganizeOne = organize, IsEnergySwitch = true, PhoneNum = "13102263109", Remark = "系统初始化生成主机", RegPackage = "000000", IsLocked = false, }; host.HostRealTimeDataMany.Add(new HostRealTimeData { Temperature = 20, Voltage = "210,200,243", Power = "220,220,220", Current = "0.78,0.25,0.28", HostOne = host, IsAlarmMark = false, IsDataError = false, IsOnline = true, Latitude = 70, Longitude = 120, LoopState = "1,1,1,1,0,0,1,1", TimeZone = 8, UpdateTime = DateTime.Now }); LightPole pole = new LightPole { Address = "深圳市宝安区石岩街道洲石路达成工业园西南角", CreatedTime = DateTime.Now, DataItemDetailOne = lightPoleItem.DataItemDetailMany.First(), PoleName = "灯杆1号", PoleNum = 1, Remark = "3.5m双灯灯杆", }; SubControl sub = new SubControl { CreatedTime = DateTime.Now, DataItemDetailOne = subItem.DataItemDetailMany.First(), Remark = "系统初始化生成测试分控", SubName = "测试分控1", SubNum = 1 }; sub.SubRealTimeDataMany.Add( new SubRealTimeData { IsAlarmMark = false, CreatedTime = DateTime.Now, UpdateTime = DateTime.Now, Current = 0.2, Brightness = 100, DataItemDetailOne = lightsItem.DataItemDetailMany.First(), DimmingPort = 1, Frequency = 9600, Power = 200, Voltage = 230, SubControlOne = sub, Temperature = 20 }); pole.SubControlMany.Add(sub); host.LightPoleMany.Add(pole); context.Set <Host>().Add(host); #endregion #region 灯具聚合 SubAggregation subAggregation = new SubAggregation { CreatedTime = DateTime.Now, HostOne = host, SubControlOne = sub, OrganizeOne = organize, LightPoleOne = host.LightPoleMany.First() }; context.Set <SubAggregation>().Add(subAggregation); #endregion #region 添加初始化测试警报信息 //context.Set<Information>().AddRange( // new List<Information>() // { // new Information{ // CreatedTime = DateTime.Now, // DataItemDetailOne = informationItem.DataItemDetailMany.First(m=>m.Index==0), // IsReaded = false, // ObjectId = host.Id, // OrganizeOne = organize, // UserLoginOne = userLogin, // }, // new Information // { // CreatedTime = DateTime.Now, // DataItemDetailOne = informationItem.DataItemDetailMany.First(m=>m.Index==11), // IsReaded = false, // ObjectId = sub.Id, // OrganizeOne = organize, // UserLoginOne = userLogin, // } //}); #endregion #region 添加组织机构树结构查询存储过程 string organizeTreeSqlText = #region 数据库语句 @" CREATE PROCEDURE Tree_Organize @Id uniqueidentifier, @SPAction bit = 'TRUE' AS BEGIN SET NOCOUNT ON; IF @SPAction='TRUE' BEGIN WITH Cxt_Child ( Id, DataItemDetail_Id, OrganizeLogo, OrganizeLogoPath, ParentId, TelePhone, Fax, FullName, Email, Country, Province, City, County, Address, Remark, SortCode, CreatedTime, CreatorUserId, LastUpdatedTime, LastUpdatorUserId, LEVEL) AS ( SELECT *,0 AS LEVEL FROM dbo.Organize WHERE Id=@Id UNION ALL SELECT o.*, b.LEVEL + 1 FROM dbo.Organize o INNER JOIN Cxt_Child b ON (o.ParentId = b.Id) ) SELECT * FROM Cxt_Child END ELSE BEGIN WITH Cxt_Child ( Id,DataItemDetail_Id,OrganizeLogo,OrganizeLogoPath,ParentId,TelePhone,Fax,FullName,Email,Country,Province,City,County,Address,Remark,SortCode,CreatedTime,CreatorUserId,LastUpdatedTime,LastUpdatorUserId ) AS ( SELECT * FROM dbo.Organize WHERE Id=@Id UNION ALL SELECT o.* FROM dbo.Organize o INNER JOIN Cxt_Child b ON (o.Id = b.ParentId) ) SELECT * FROM Cxt_Child END END "; #endregion context.Database.ExecuteSqlCommand(organizeTreeSqlText); #endregion #region 添加查询月能耗统计存储过程 string sum_MonthSqlText = #region 数据库语句 @" CREATE PROCEDURE [dbo].[Sp_SumYearPower] @DataItemDetailId uniqueidentifier, -- 指定能耗类型主键 @ThisYear INT, -- 指定年能耗 @OrganizeId uniqueidentifier -- 指定组织机构 AS BEGIN SELECT dbo.AnnualElectricity.[Year], dbo.AnnualElectricity.DataItemDetail_Id, Sum(dbo.AnnualElectricity.M1) AS Month_Sum1, Sum(dbo.AnnualElectricity.M2) AS Month_Sum2, Sum(dbo.AnnualElectricity.M3) AS Month_Sum3, Sum(dbo.AnnualElectricity.M4) AS Month_Sum4, Sum(dbo.AnnualElectricity.M5) AS Month_Sum5, Sum(dbo.AnnualElectricity.M6) AS Month_Sum6, Sum(dbo.AnnualElectricity.M7) AS Month_Sum7, Sum(dbo.AnnualElectricity.M8) AS Month_Sum8, Sum(dbo.AnnualElectricity.M9) AS Month_Sum9, Sum(dbo.AnnualElectricity.M10) AS Month_Sum10, Sum(dbo.AnnualElectricity.M11) AS Month_Sum11, Sum(dbo.AnnualElectricity.M12) AS Month_Sum12, Sum(dbo.AnnualElectricity.YearTotal) AS YearTotal_Sum, Sum(dbo.AnnualElectricity.Cumulative) AS Cumulative_Sum FROM dbo.AnnualElectricity WHERE dbo.AnnualElectricity.DataItemDetail_Id=@DataItemDetailId AND dbo.AnnualElectricity.[Year]=@ThisYear AND dbo.AnnualElectricity.Organzie_Id=@OrganizeId GROUP BY dbo.AnnualElectricity.[Year], dbo.AnnualElectricity.DataItemDetail_Id END "; #endregion context.Database.ExecuteSqlCommand(sum_MonthSqlText); #endregion #region 添加查询天能耗统计的存储过程 string sum_DaySqlText = #region 数据库语句 @" CREATE PROCEDURE [dbo].[Sp_SumMonthPower] @Month AS int , @OrganizeId AS uniqueidentifier , @ItemId AS uniqueidentifier, @Year AS INT AS BEGIN SELECT Sum(t1.D1) AS Sum_D1, Sum(t1.D2) AS Sum_D2, Sum(t1.D3) AS Sum_D3, Sum(t1.D4) AS Sum_D4, Sum(t1.D5) AS Sum_D5, Sum(t1.D6) AS Sum_D6, Sum(t1.D7) AS Sum_D7, Sum(t1.D8) AS Sum_D8, Sum(t1.D9) AS Sum_D9, Sum(t1.D10) AS Sum_D10, Sum(t1.D11) AS Sum_D11, Sum(t1.D12) AS Sum_D12, Sum(t1.D13) AS Sum_D13, Sum(t1.D14) AS Sum_D14, Sum(t1.D15) AS Sum_D15, Sum(t1.D16) AS Sum_D16, Sum(t1.D17) AS Sum_D17, Sum(t1.D18) AS Sum_D18, Sum(t1.D19) AS Sum_D19, Sum(t1.D20) AS Sum_D20, Sum(t1.D21) AS Sum_D21, Sum(t1.D22) AS Sum_D22, Sum(t1.D23) AS Sum_D23, Sum(t1.D24) AS Sum_D24, Sum(t1.D25) AS Sum_D25, Sum(t1.D26) AS Sum_D26, Sum(t1.D27) AS Sum_D27, Sum(t1.D28) AS Sum_D28, Sum(t1.D29) AS Sum_D29, Sum(t1.D30) AS Sum_D30, Sum(t1.D31) AS Sum_D31, SUM(t1.MonthTotal) AS Sum_MonthTotal t1.DataItemDetail_Id, t1.[Month] FROM (SELECT dbo.MonthElectricity.*, dbo.AnnualElectricity.DataItemDetail_Id FROM dbo.MonthElectricity INNER JOIN dbo.AnnualElectricity ON dbo.MonthElectricity.AnnualElectricity_Id = dbo.AnnualElectricity.Id WHERE dbo.AnnualElectricity.DataItemDetail_Id = @ItemId AND dbo.AnnualElectricity.Organzie_Id = @OrganizeId AND dbo.MonthElectricity.[Month]=@Month AND dbo.AnnualElectricity.[Year]=@Year) AS t1 GROUP BY t1.DataItemDetail_Id, t1.[Month] END "; #endregion context.Database.ExecuteSqlCommand(sum_DaySqlText); #endregion #region 添加查询按小时统计能耗的存储过程 string sum_HourSqlText = #region 数据库语句 @" CREATE PROCEDURE [dbo].[Sp_SumDayPower] @Day INT, @OrganizeId uniqueidentifier , @ItemId uniqueidentifier, @Year INT, @Month INT AS BEGIN SELECT Sum(t1.H1) AS Sum_H1, Sum(t1.H2) AS Sum_H2, Sum(t1.H3) AS Sum_H3, Sum(t1.H4) AS Sum_H4, Sum(t1.H5) AS Sum_H5, Sum(t1.H6) AS Sum_H6, Sum(t1.H7) AS Sum_H7, Sum(t1.H8) AS Sum_H8, Sum(t1.H9) AS Sum_H9, Sum(t1.H10) AS Sum_H10, Sum(t1.H11) AS Sum_H11, Sum(t1.H12) AS Sum_H12, Sum(t1.H13) AS Sum_H13, Sum(t1.H14) AS Sum_H14, Sum(t1.H15) AS Sum_H15, Sum(t1.H16) AS Sum_H16, Sum(t1.H17) AS Sum_H17, Sum(t1.H18) AS Sum_H18, Sum(t1.H19) AS Sum_H19, Sum(t1.H20) AS Sum_H20, Sum(t1.H21) AS Sum_H21, Sum(t1.H22) AS Sum_H22, Sum(t1.H23) AS Sum_H23, Sum(t1.H24) AS Sum_H24, Sum(t1.DayTotal) AS Sum_DayTotal, t1.DataItemDetail_Id FROM (SELECT dbo.DayElectricity.*, dbo.AnnualElectricity.DataItemDetail_Id, dbo.AnnualElectricity.Organzie_Id FROM dbo.DayElectricity INNER JOIN dbo.MonthElectricity ON dbo.DayElectricity.MonthElectricity_Id = dbo.MonthElectricity.Id INNER JOIN dbo.AnnualElectricity ON dbo.MonthElectricity.AnnualElectricity_Id = dbo.AnnualElectricity.Id WHERE dbo.AnnualElectricity.DataItemDetail_Id = @ItemId AND dbo.AnnualElectricity.Organzie_Id = @OrganizeId AND dbo.AnnualElectricity.[Year]=@Year AND dbo.MonthElectricity.[Month]=@Month AND dbo.DayElectricity.Today=@Day ) AS t1 GROUP BY t1.DataItemDetail_Id END "; #endregion context.Database.ExecuteSqlCommand(sum_HourSqlText); #endregion #region 添加掉线主机查询视图 string GetOffineHosts = #region 数据库语句 @" CREATE VIEW [dbo].[View_HostOffines] AS SELECT DISTINCT dbo.UserLogin.UserName, dbo.[User].NickName, dbo.[User].Email, dbo.Organize.FullName AS OrgName, dbo.Host.RegPackage, dbo.Host.FullName AS HostName, dbo.HostRealTimeData.Voltage, dbo.HostRealTimeData.[Current], dbo.HostRealTimeData.Power, dbo.HostRealTimeData.Temperature, dbo.HostRealTimeData.UpdateTime, [Level] FROM dbo.UserLogin INNER JOIN dbo.[User] ON dbo.[User].UserLogin_Id = dbo.UserLogin.Id INNER JOIN dbo.UserOrganizeMap ON dbo.UserOrganizeMap.UserLogin_Id = dbo.UserLogin.Id INNER JOIN dbo.Organize ON dbo.UserLogin.Organize_Id = dbo.Organize.Id AND dbo.UserOrganizeMap.Organize_Id = dbo.Organize.Id INNER JOIN dbo.Host ON dbo.Host.Organize_Id = dbo.Organize.Id INNER JOIN dbo.HostRealTimeData ON dbo.HostRealTimeData.Host_Id = dbo.Host.Id WHERE DATEDIFF(mi,dbo.HostRealTimeData.UpdateTime,GETDATE()) >= 30 AND DATEDIFF(d, HostRealTimeData.UpdateTime, GETDATE()) <= 1 AND dbo.[User].Email IS NOT NULL AND dbo.[User].IsAlarm =1 GO "; #endregion context.Database.ExecuteSqlCommand(GetOffineHosts); #endregion #region 添加掉线分控查询视图 string GetOffineSubs = #region 数据库语句 @" SELECT DISTINCT dbo.UserLogin.UserName, dbo.[User].NickName, dbo.[User].Email, dbo.Organize.FullName AS OrgName, dbo.Host.FullName AS HostName, dbo.Host.RegPackage, dbo.LightPole.PoleNum, dbo.LightPole.PoleName AS PoleName, dbo.SubControl.SubNum, dbo.SubControl.SubName, dbo.SubRealTimeData.DimmingPort, dbo.SubRealTimeData.UpdateTime, [Level] FROM dbo.UserLogin INNER JOIN dbo.[User] ON dbo.[User].UserLogin_Id = dbo.UserLogin.Id INNER JOIN dbo.UserOrganizeMap ON dbo.UserOrganizeMap.UserLogin_Id = dbo.UserLogin.Id INNER JOIN dbo.Organize ON dbo.UserLogin.Organize_Id = dbo.Organize.Id AND dbo.UserOrganizeMap.Organize_Id = dbo.Organize.Id INNER JOIN dbo.Host ON dbo.Host.Organize_Id = dbo.Organize.Id INNER JOIN dbo.LightPole ON dbo.LightPole.Host_Id = dbo.Host.Id INNER JOIN dbo.SubControl ON dbo.SubControl.LigthPoleOne_Id = dbo.LightPole.Id INNER JOIN dbo.SubRealTimeData ON dbo.SubRealTimeData.SubControl_Id = dbo.SubControl.Id WHERE DATEDIFF(mi,dbo.SubRealTimeData.UpdateTime,GETDATE()) >= 60 AND DATEDIFF(d,dbo.SubRealTimeData.UpdateTime,GETDATE()) <= 1 AND dbo.[User].Email IS NOT NULL AND dbo.[User].IsAlarm=1 GO "; #endregion #endregion context.Database.ExecuteSqlCommand(GetOffineSubs); } catch (Exception ex) { LogManager.GetLogger(GetType()).Fatal(ex); } }