Beispiel #1
0
        /// <summary>
        /// 获取终端某个回路上绑定的时间表名称
        /// </summary>
        /// <param name="rtuIdorGrpId">特殊终端地址或分组地址</param>
        /// <param name="loopId">回路地址 1~6</param>
        /// <returns>绑定到此回路的时间表名称  无绑定则为 ""</returns>
        public static string GetTmlLoopBandTimeTableNamex(int areaid, int rtuIdorGrpId, int loopId)
        {
            int timetableid = RtuOrGprBandingTimeTableInfoService.GetBandingInfo(areaid, rtuIdorGrpId, loopId);

            if (timetableid == -1)
            {
                return("");
            }
            //int areaid = Wlst.Sr.EquipmentInfoHolding.Services.ServicesGrpSingleInfoHold.InfoRtuBelong[rtuIdorGrpId].Item1;
            var timetable = WeekTimeTableInfoService.GeteekTimeTableInfo(areaid, timetableid);

            if (timetable == null)
            {
                return("");
            }
            return(timetable.TimeName);
        }
Beispiel #2
0
        /// <summary>
        /// 获取绑定到此时间表今天的开关灯时间
        /// </summary>
        /// <param name="rtuIdorGrpId">特殊终端地址或分组地址</param>
        /// <param name="switchoutloopid"></param>
        /// <param name="yesterday">昨天开关灯时间 </param>
        public static TodayOpenCloseTime GetTmlLoopBandTimeTableTodayOpenCloseTimex(int areaid, int rtuIdorGrpId, int switchoutloopid)
        {
            //新协议更改到绑定到终端上  不需要判断分组id   lvf  2019年7月11日09:20:37

            ////int RtuGrpId = 0;
            ////if (Wlst.Sr.EquipmentInfoHolding.Services.ServicesGrpSingleInfoHold.InfoRtuBelong.ContainsKey(rtuIdorGrpId))
            ////{
            ////    RtuGrpId =
            ////        Wlst.Sr.EquipmentInfoHolding.Services.ServicesGrpSingleInfoHold.InfoRtuBelong[rtuIdorGrpId].Item2;
            ////}
            ////else
            ////{
            ////    RtuGrpId = rtuIdorGrpId;
            ////}

            //采用新协议 细化到终端
            int timetableid = RtuOrGprBandingTimeTableInfoService.GetBandingInfoNew(areaid, rtuIdorGrpId, switchoutloopid);

            //int timetableid = RtuOrGprBandingTimeTableInfoService.GetBandingInfo(areaid,RtuGrpId, switchoutloopid);
            if (timetableid == -1)
            {
                return(null);
            }

            //绑定该时间表的临时方案 2018/4/20
            var plans = (from tt in TimeTabletemporaryHold.Myself.Info
                         where tt.Key.Item1 == areaid
                         orderby tt.Key.Item2 ascending
                         select tt.Value).ToList();
            bool istemporary    = false;
            var  temporarytable = new TempTimePlanWithTimeTableBandingInfo.TimeTablePlan();

            foreach (var t in plans)
            {
                foreach (var tt in t.TimetablesUseThisPlan)
                {
                    foreach (var ttt in t.ItemsPlan)
                    {
                        if (tt == timetableid && ttt.Date.ToString().Substring(6, 2) == DateTime.Now.Day.ToString().PadLeft(2, '0') && ttt.Date.ToString().Substring(4, 2) == DateTime.Now.Month.ToString().PadLeft(2, '0'))
                        {
                            temporarytable = t;
                            istemporary    = true;
                        }
                    }
                }
            }


            var timetable = WeekTimeTableInfoService.GeteekTimeTableInfo(areaid, timetableid);

            if (timetable == null)
            {
                return(null);
            }

            int todayweek = (int)DateTime.Now.DayOfWeek;
            //int yesterdayweek = todayweek - 1;

            //if (yesterdayweek == -1) yesterdayweek = 6;

            //int yesterdaylasttimeoff = 1500;

            // List<Tuple<int, int>> todaytime = new List<Tuple<int, int>>();
            List <Tuple <int, int> > returntime = new List <Tuple <int, int> >();

            if (istemporary)
            {
                foreach (var t in temporarytable.ItemsPlan)
                {
                    var timelight = SunRiseSetInfoServices.GetSunRiseItemInfo(DateTime.Now.Month, DateTime.Now.Day);
                    if (t.Date.ToString().Substring(6, 2) == DateTime.Now.Day.ToString().PadLeft(2, '0') && t.Date.ToString().Substring(4, 2) == DateTime.Now.Month.ToString().PadLeft(2, '0'))
                    {
                        Tuple <int, int> tu = new Tuple <int, int>(t.TimeOn, t.TimeOff);
                        if (t.TypeOn == 3 && t.TypeOff == 3)
                        {
                            tu = new Tuple <int, int>(t.TimeOn, t.TimeOff);
                        }
                        else if (t.TypeOn == 3 && t.TypeOff != 3)
                        {
                            tu = new Tuple <int, int>(t.TimeOn, timelight.time_sunrise + temporarytable.LightOffOffset);
                        }
                        else if (t.TypeOn != 3 && t.TypeOff == 3)
                        {
                            tu = new Tuple <int, int>(timelight.time_sunset + temporarytable.LightOnOffset, t.TimeOff);
                        }
                        else
                        {
                            tu = new Tuple <int, int>(timelight.time_sunset + temporarytable.LightOnOffset,
                                                      timelight.time_sunrise + temporarytable.LightOffOffset);
                        }

                        returntime.Add(tu);
                    }
                }
            }
            else
            {
                foreach (var t in timetable.RuleItems)
                {
                    //if (t.DayOfWeekUsed.Contains(yesterdayweek))
                    //{
                    //    if (t.TimeOn>t.TimeOff)
                    //    {
                    //        if (t.TypeOff == 3) yesterdaylasttimeoff = t.TimeOff;
                    //        else{
                    //            var timelightoff = SunRiseSetInfoServices.GetSunRiseItemInfo(DateTime.Now.AddDays(-1).Month, DateTime.Now.AddDays(-1).Day).time_sunrise;
                    //            yesterdaylasttimeoff = timelightoff + timetable.LightOffOffset;
                    //        }

                    //    }
                    //}

                    //if (t.DayOfWeekUsed.Contains(todayweek))
                    //{
                    //    var timelight = SunRiseSetInfoServices.GetSunRiseItemInfo(DateTime.Now.Month, DateTime.Now.Day);
                    //if (t.TimeOn < t.TimeOff)
                    //{
                    //    Tuple<int, int> tu = new Tuple<int, int>(t.TimeOn, t.TimeOff);
                    //    if (t.TypeOn == 3 && t.TypeOff == 3)
                    //    {
                    //        tu = new Tuple<int, int>(t.TimeOn, t.TimeOff);
                    //    }
                    //    else if (t.TypeOn == 3 && t.TypeOff != 3)
                    //    {
                    //        tu = new Tuple<int, int>(t.TimeOn, timelight.time_sunrise + timetable.LightOffOffset);
                    //    }
                    //    else if (t.TypeOn != 3 && t.TypeOff == 3)
                    //    {
                    //        tu = new Tuple<int, int>(timelight.time_sunset + timetable.LightOnOffset, t.TimeOff);
                    //    }
                    //    else
                    //    {
                    //        tu = new Tuple<int, int>(timelight.time_sunset + timetable.LightOnOffset, timelight.time_sunrise + timetable.LightOffOffset);
                    //    }

                    //    todaytime.Add(tu);
                    //}
                    //else
                    //{
                    //    Tuple<int, int> tu = new Tuple<int, int>(t.TimeOn, t.TimeOff);
                    //    if (t.TypeOn == 3)
                    //    {
                    //        tu = new Tuple<int, int>(t.TimeOn, 1500);
                    //    }
                    //    else
                    //    {
                    //        tu = new Tuple<int, int>(timelight.time_sunset + timetable.LightOnOffset, 1500);
                    //    }
                    //    todaytime.Add(tu);
                    //}


                    //   }

                    var timelight = SunRiseSetInfoServices.GetSunRiseItemInfo(DateTime.Now.Month, DateTime.Now.Day);

                    if (t.DayOfWeekUsed.Contains(todayweek))
                    {
                        Tuple <int, int> tu = new Tuple <int, int>(t.TimeOn, t.TimeOff);
                        if (t.TypeOn == 3 && t.TypeOff == 3)
                        {
                            tu = new Tuple <int, int>(t.TimeOn, t.TimeOff);
                        }
                        else if (t.TypeOn == 3 && t.TypeOff != 3)
                        {
                            tu = new Tuple <int, int>(t.TimeOn, timelight.time_sunrise + timetable.LightOffOffset);
                        }
                        else if (t.TypeOn != 3 && t.TypeOff == 3)
                        {
                            tu = new Tuple <int, int>(timelight.time_sunset + timetable.LightOnOffset, t.TimeOff);
                        }
                        else
                        {
                            tu = new Tuple <int, int>(timelight.time_sunset + timetable.LightOnOffset,
                                                      timelight.time_sunrise + timetable.LightOffOffset);
                        }

                        returntime.Add(tu);
                    }
                }
            }


            //var todaytimeitem = (from t in todaytime orderby t.Item1 select t).ToList();

            //if (yesterdaylasttimeoff != 1500)
            //{
            //    if (todaytimeitem.Count > 0)
            //    {
            //        if (todaytimeitem.Last().Item2 == 1500)
            //        {
            //            Tuple<int, int> tu = new Tuple<int, int>(todaytimeitem.Last().Item1, yesterdaylasttimeoff);
            //            todaytimeitem.Remove(todaytimeitem.Last());
            //            todaytimeitem.Add(tu);
            //        }
            //        else
            //        {
            //            Tuple<int, int> tu = new Tuple<int, int>(1500, yesterdaylasttimeoff);
            //            returntime.Add(tu);
            //        }
            //    }

            //}

            //if (todaytimeitem.Count > 0)
            //{
            //    foreach (var tu in todaytimeitem)
            //    {
            //        returntime.Add(tu);
            //    }
            //}

            var today = new TodayOpenCloseTime()
            {
                TimeTableId   = timetable.TimeId,
                TimeTableName = timetable.TimeName,
                TimeOnOff     = returntime
            };

            return(today);

            #region
            //    public static TodayOpenCloseTime GetTmlLoopBandTimeTableTodayOpenCloseTimex(int areaid, int rtuIdorGrpId,int switchoutloopid)
            //{
            //yesterday = null;
            //int timetableid = RtuOrGprBandingTimeTableInfoService.GetBandingInfo(rtuIdorGrpId, switchoutloopid);
            //if (timetableid == -1) return null;
            //var timetable = WeekTimeTableInfoService.GeteekTimeTableInfo(areaid, timetableid);
            //if (timetable == null) return null;

            //var today = new TodayOpenCloseTime()
            //                {
            //                    TimeTableId = timetable.TimeId,
            //                    TimeTableName = timetable.TimeName
            //                };

            //yesterday = new TodayOpenCloseTime()
            //                {
            //                    TimeTableId = timetable.TimeId,
            //                    TimeTableName = timetable.TimeName,
            //                    CloseLightTime = 0,
            //                    OpenLightTime = 0,
            //                };

            //bool find = false;
            //if (DateTime.Now.DayOfWeek == DayOfWeek.Sunday )
            //{


            //    yesterday = new TodayOpenCloseTime()
            //    {
            //        TimeTableId = timetable.TimeId,
            //        TimeTableName = timetable.TimeName,
            //        CloseLightTime = timetable.LastSaturdayOpenCloseControl.TimeOff,
            //        OpenLightTime = timetable.LastSaturdayOpenCloseControl.TimeOn,
            //    };
            //}

            //foreach (var t in timetable.LstOneWeekOpenCloseControl)
            //{
            //    if (t.DateDay == DateTime.Now.Day && t.DateMonth == DateTime.Now.Month)
            //    {
            //        today.CloseLightTime = t.TimeOff;
            //        today.OpenLightTime = t.TimeOn;
            //        find = true;
            //        //  break;
            //    }
            //    if (t.DateMonth == DateTime.Now.AddDays(-1).Month && t.DateDay == DateTime.Now.AddDays(-1).Day)
            //    {


            //        yesterday = new TodayOpenCloseTime()
            //                        {
            //                            TimeTableId = timetable.TimeId,
            //                            TimeTableName = timetable.TimeName,
            //                            CloseLightTime = t.TimeOff,
            //                            OpenLightTime = t.TimeOn,
            //                        };
            //    }
            //}
            //if (find)
            //    return today;
            //CantfindTodayOpenCloseTime(areaid, timetable.TimeId);
            #endregion


            return(null);
        }