Exemple #1
0
        /// <summary>
        /// 删除用户已获取的主机列表中的数据
        /// </summary>
        /// <param name="cachePageId">当前用户获取的主机列表缓存页主键</param>
        /// <param name="Ids">准备被删除的主键集合</param>
        /// <returns></returns>
        public OperationResult DeleteHosts(Guid[] cachePageId, params Guid[] Ids)
        {
            int count = 0;

            HostRepository.UnitOfWork.BeginTransaction();
            foreach (var i in Ids)
            {
                if (!cachePageId.Contains(i))
                {
                    throw new Exception($"id:主机{i}不存在或你未获取过该数据!");
                }

                count += HostRepository.DeleteDirect(i);

                // 删除关联该主机的分组信息
                var ditem1 = DataItemDetailRepository.Entities.FirstOrDefault(m => m.QueryCoding == "GroupType" && m.Index == 0);
                var grous  = GroupControlRepository.TrackEntities.Where(m => m.DataItemDetail_Id == ditem1.Id && m.ObjectId == i).ToList();
                GroupControlRepository.Delete(grous);

                // 删除主机关联的能耗信息
                var ditem2 = DataItemDetailRepository.Entities.FirstOrDefault(m => m.QueryCoding == "ECType" && m.Index == 0);
                var ect    = AnnualElectricityRepository.TrackEntities.Where(m => m.DataItemDetail_Id == ditem2.Id && m.ObjectId == i).ToList();
                AnnualElectricityRepository.Delete(ect);
            }
            HostRepository.UnitOfWork.Commit();
            if (count > 0)
            {
                return(new OperationResult(OperationResultType.Success, $"{count}条数据被删除"));
            }
            else
            {
                return(new OperationResult(OperationResultType.NoChanged, "请求被取消"));
            }
        }
Exemple #2
0
        /// <summary>
        /// 添加或更新主机的能耗值
        /// </summary>
        /// <param name="HostId">主机主键</param>
        /// <param name="OrganizeId">主机所属的组织机构Id</param>
        /// <param name="value">指定能耗值</param>
        private void AddEnergyConsumption(Guid HostId, Guid OrganizeId, double value)
        {
            try
            {
                /*===================================================
                * 备注:1、主机上传的能耗信息按月统计,每月清零
                *       2、主机上传的能耗值小于记录中的值,代表主机能耗可能被清零或更换
                *  ===================================================*/
                // 获取主机能耗类型主键==‘主机能耗类型’
                var ditem = DataItemDetailRepository.Entities.FirstOrDefault(m => m.QueryCoding == "ECType" && m.Index == 0);
                // 获取查询年能耗的查询仓储
                var _AnnualIQ = AnnualElectricityRepository.TrackEntities.Where(m => m.ObjectId == HostId && m.DataItemDetail_Id == ditem.Id);
                // 获取去年的年能耗记录
                var _LastYearEct = _AnnualIQ.FirstOrDefault(m => m.Year == (DateTime.Now.Year - 1));
                // 获取今年的能耗记录
                var _CurrentYeartEct = _AnnualIQ.FirstOrDefault(m => m.Year == DateTime.Now.Year);

                if (_CurrentYeartEct == null /*今年的能耗记录不存在,我们需要创建*/)
                {
                    // 按年统计,每月的能耗
                    AnnualElectricity annualElectricity = new AnnualElectricity
                    {
                        ObjectId          = HostId,
                        DataItemDetail_Id = ditem.Id,
                        Year        = DateTime.Now.Year,
                        UpdateTime  = DateTime.Now,
                        CreatedTime = DateTime.Now,
                        Organzie_Id = OrganizeId,
                        YearTotal   = value,
                    };
                    annualElectricity.Cumulative = value;
                    if (_LastYearEct != null /*去年能耗存在,则计算历史能耗累计数值*/)
                    {
                        annualElectricity.Cumulative += _LastYearEct.Cumulative;
                    }
                    annualElectricity[DateTime.Now.Month] = value; // 设置当前月的能耗

                    // 按月统计,每天的能耗
                    MonthElectricity monthElectricity = new MonthElectricity()
                    {
                        Month                = DateTime.Now.Month,
                        CreatedTime          = DateTime.Now,
                        AnnualElectricityOne = annualElectricity,
                        MonthTotal           = value,
                        UpdateTime           = DateTime.Now
                    };
                    monthElectricity[DateTime.Now.Day] = value;

                    // 按天统计,每时的能耗
                    DayElectricity dayElectricity = new DayElectricity()
                    {
                        UpdateTime          = DateTime.Now,
                        CreatedTime         = DateTime.Now,
                        DayTotal            = value,
                        MonthElectricityOne = monthElectricity,
                        Today = DateTime.Now.Day
                    };
                    dayElectricity[DateTime.Now.Hour] = value;

                    // 关联统计
                    monthElectricity.DayElectricityMany.Add(dayElectricity);
                    annualElectricity.MonthElectricityMany.Add(monthElectricity);
                    AnnualElectricityRepository.Insert(annualElectricity);
                }
                else/*今年的能耗记录存在,则直接计算能耗差值*/
                {
                    // 获取本月的能耗记录
                    var _CurrentMonthEct = _CurrentYeartEct.MonthElectricityMany.FirstOrDefault(m => m.Month == DateTime.Now.Month);
                    if (_CurrentMonthEct == null /*当月能耗记录不存在*/)
                    {
                        _CurrentYeartEct.Cumulative += value; // 历史累计能耗计算
                        _CurrentYeartEct.YearTotal  += value; // 年总能耗计算

                        // 创建当前月的能耗统计
                        _CurrentMonthEct = new MonthElectricity
                        {
                            UpdateTime           = DateTime.Now,
                            CreatedTime          = DateTime.Now,
                            MonthTotal           = value,
                            AnnualElectricityOne = _CurrentYeartEct,
                            Month = DateTime.Now.Month,
                        };
                        _CurrentMonthEct[DateTime.Now.Day] = value;

                        // 创建当前天的能耗统计
                        var _CurrentDayEct = new DayElectricity
                        {
                            UpdateTime          = DateTime.Now,
                            CreatedTime         = DateTime.Now,
                            DayTotal            = value,
                            MonthElectricityOne = _CurrentMonthEct,
                            Today = DateTime.Now.Day
                        };
                        _CurrentDayEct[DateTime.Now.Hour] = value;

                        // 关联能耗统计记录
                        _CurrentMonthEct.DayElectricityMany.Add(_CurrentDayEct);
                        _CurrentYeartEct.MonthElectricityMany.Add(_CurrentMonthEct);
                        AnnualElectricityRepository.Update(_CurrentYeartEct);
                    }
                    else/*当月能耗存在*/
                    {
                        // 获取当天的能耗记录
                        var _CurrentDayEct = _CurrentMonthEct.DayElectricityMany.FirstOrDefault(m => m.Today == DateTime.Now.Day);

                        // 上传的能耗数据比记录中的小,则主机能耗被清零操作或主机被更换
                        if (_CurrentYeartEct[DateTime.Now.Month] > value)
                        {
                            double overs = Math.Abs(value - (_CurrentMonthEct.MonthTotal - _CurrentMonthEct.LastTagValue));
                            if (_CurrentMonthEct.Tag == 0)
                            {
                                _CurrentMonthEct.Tag          = DateTime.Now.Day;
                                _CurrentMonthEct.LastTagValue = _CurrentMonthEct.MonthTotal;
                                overs = value;
                            }
                            else
                            {
                                if ((_CurrentMonthEct.MonthTotal - _CurrentMonthEct.LastTagValue) > value)
                                {
                                    _CurrentMonthEct.Tag          = DateTime.Now.Day;
                                    _CurrentMonthEct.LastTagValue = _CurrentMonthEct.MonthTotal;
                                    overs = value;
                                }
                            }
                            if (_CurrentDayEct == null)
                            {
                                // 创建当前天的能耗统计
                                _CurrentDayEct = new DayElectricity
                                {
                                    UpdateTime          = DateTime.Now,
                                    CreatedTime         = DateTime.Now,
                                    MonthElectricityOne = _CurrentMonthEct,
                                    Today = DateTime.Now.Day
                                };
                                _CurrentMonthEct.DayElectricityMany.Add(_CurrentDayEct);
                                //if (boolRp) { overs = value; }
                                _CurrentMonthEct[DateTime.Now.Day] = overs;
                                _CurrentDayEct[DateTime.Now.Hour]  = overs;
                            }
                            else
                            {
                                _CurrentMonthEct[DateTime.Now.Day] += overs;
                                double xc = _CurrentMonthEct[DateTime.Now.Day];
                                for (int n = 0; n < DateTime.Now.Hour; n++)
                                {
                                    xc -= _CurrentDayEct[n];
                                }
                                _CurrentDayEct[DateTime.Now.Hour] = Math.Abs(xc);
                            }
                            _CurrentDayEct.DayTotal               = _CurrentMonthEct[DateTime.Now.Day];
                            _CurrentMonthEct.MonthTotal          += overs;
                            _CurrentYeartEct[DateTime.Now.Month] += overs;
                            _CurrentYeartEct.YearTotal           += overs;
                            _CurrentYeartEct.Cumulative          += overs;
                            AnnualElectricityRepository.Update(_CurrentYeartEct);
                        }
                        else
                        {
                            _CurrentYeartEct.YearTotal          += (value - _CurrentYeartEct[DateTime.Now.Month]);
                            _CurrentYeartEct.Cumulative         += (value - _CurrentYeartEct[DateTime.Now.Month]);
                            _CurrentMonthEct.MonthTotal          = value;
                            _CurrentYeartEct[DateTime.Now.Month] = value;
                            Double xf = value;
                            for (int n = 1; n < DateTime.Now.Day; n++)
                            {
                                xf -= _CurrentMonthEct[n];
                            }
                            _CurrentMonthEct[DateTime.Now.Day] = Math.Abs(xf);
                            _CurrentDayEct.DayTotal            = Math.Abs(xf);
                            double xc = Math.Abs(xf);
                            for (int n = 0; n < DateTime.Now.Hour; n++)
                            {
                                xc -= _CurrentDayEct[n];
                            }
                            _CurrentDayEct[DateTime.Now.Hour] = Math.Abs(xc);
                            AnnualElectricityRepository.Update(_CurrentYeartEct);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                // 如果报错,保存错误日志
                LogManager.GetLogger("AddEnergyConsumption_Host").Error(ex);
            }
        }