using BLL;
using System;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using Newtonsoft.Json.Linq;
using System.IO;
using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;
using System.Runtime.Serialization;
using FineUIPro.Web.ProjectData;
using System.Configuration;
using System.Web.Services;
using Newtonsoft.Json;
using FineUIPro.Web.DataShow;
namespace FineUIPro.Web.HSSE.TowerCrane
{
    public partial class TowerCraneState : PageBase
    {
        #region 加载
        /// 
        /// 加载页面
        /// 
        /// 
        /// 
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                 this.InitTreeMenu();//加载树
                //显示列
                
            }
        }
        #endregion
        #region 加载树装置-单位-工作区
        /// 
        /// 加载树
        /// 
        private void InitTreeMenu()
        {
            this.tvControlItem.Nodes.Clear();
          
            ////塔吊
            var towerCranes = (from x in Funs.DB.HSSE_TowerCrane where x.ProjectId == this.CurrUser.LoginProjectId 
                               && ( string.IsNullOrEmpty(txtIsono.Text) || x.TowerCraneName.Contains(txtIsono.Text))
                               orderby x.CreateDate select x ).ToList();
         
            foreach(var item in towerCranes )
            {
                TreeNode rootNode = new TreeNode();
                rootNode.Text = item.TowerCraneName;
                rootNode.NodeID = item.TowerCraneId;
                rootNode.EnableClickEvent= true;
                this.tvControlItem.Nodes.Add(rootNode);
            } 
             
        }
        #endregion
        #region 绑定树节点
        /// 
        /// 查询
        /// 
        /// 
        /// 
        protected void Tree_TextChanged(object sender, EventArgs e)
        {
            this.InitTreeMenu();
            
        }
        #region 树展开事件
        /// 
        /// 树展开事件
        /// 
        /// 
        /// 
        protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e)
        {
            string TowerCraneId = this.tvControlItem.SelectedNodeID;
            this.hfTowerCraneId.Text = TowerCraneId;
            var towerCrane = Funs.DB.HSSE_TowerCrane.FirstOrDefault(x => x.TowerCraneId == TowerCraneId);
            PageContext.RegisterStartupScript("runGetData() ; initVideo('"+ towerCrane.VideoAccount + "', '"+ Funs.EncryptionPassword(towerCrane.VideoPassword )+ "');");
        }
        [WebMethod]
        public static string GetData(string TowerCraneId)
        {
            Dictionary res = new Dictionary();
            var towerCrane = Funs.DB.HSSE_TowerCrane.FirstOrDefault(x => x.TowerCraneId == TowerCraneId);
            if (towerCrane != null)
            {
                res.Add("TowerCraneName", towerCrane.TowerCraneName);
                res.Add("TowerCraneCode", towerCrane.TowerCraneCode);
                res.Add("TowerCap", towerCrane.TowerCap);
                res.Add("VideoAccount", towerCrane.VideoAccount);
                res.Add("VideoPassword", Funs.EncryptionPassword(towerCrane.VideoPassword));
                if (towerCrane.MaxHoist.HasValue)
                {
                    res.Add("MaxHoist", towerCrane.MaxHoist.Value.ToString("##.##"));
                }
                if (towerCrane.MaxMoment.HasValue)
                {
                    res.Add("MaxMoment", towerCrane.MaxMoment.Value.ToString("##.##"));
                }
                if (towerCrane.FrontArmLength.HasValue)
                {
                    res.Add("FrontArmLength", towerCrane.FrontArmLength.Value.ToString("##.##"));
                }
                if (towerCrane.BackArmLength.HasValue)
                {
                    res.Add("BackArmLength", towerCrane.BackArmLength.Value.ToString("##.##"));
                }
                if (towerCrane.ArmHeigh.HasValue)
                {
                    res.Add("ArmHeigh", towerCrane.ArmHeigh.Value.ToString("##.##"));
                }
                
                DateTime date = DateTime.Now.AddDays(-1);
                var record  = Funs.DB.HSSE_TowerCraneRecord.Where(x=>x.TowerCraneId==TowerCraneId && x.Date>=date).OrderByDescending(x=>x.Date).ToList();
                if (record.Count > 0)
                {
                    res.Add("AmountHoist", record[0].AmountHoist.Value.ToString("#0.##"));
                    res.Add("Camber", record[0].Camber.Value.ToString("#0.##"));
                    res.Add("Height", record[0].Height.Value.ToString("#0.##"));
                    res.Add("Hoist", record[0].Hoist.Value.ToString("#0.##"));
                    res.Add("Moment", record[0].Moment.Value.ToString("#0.##"));
                    res.Add("Range", record[0].Range.Value.ToString("#0.##"));
                    res.Add("RotationAngle", record[0].RotationAngle.Value.ToString("#0.##"));
                    res.Add("WindSpeed", record[0].WindSpeed.Value.ToString("#0.##"));
                }
                else
                {
                    res.Add("AmountHoist", "0");
                    res.Add("Camber", "0");
                    res.Add("Height", "0");
                    res.Add("Hoist", "0");
                    res.Add("Moment", "0");
                    res.Add("Range", "0");
                    res.Add("RotationAngle", "0");
                    res.Add("WindSpeed", "0");
                }
                HashSet warnings = new HashSet();
                warnings.Add("111");
                warnings.Add("121");
                warnings.Add("132");
                warnings.Add("133");
                warnings.Add("141");
                warnings.Add("151"); 
                HashSet alarms = new HashSet();
                alarms.Add("112");
                alarms.Add("122");
                alarms.Add("131");
                alarms.Add("134");
                alarms.Add("142");
                alarms.Add("152");
                alarms.Add("201");
                alarms.Add("202");
                int DailyWarning = 0;
                int DailyAlarm = 0;
                List SSDZ = new List();
                List SSDZX = new List();
                List SSLJ = new List();
                List SSLJX = new List();
                List BJQS = new List();
                List BJQSX = new List();
                
                foreach (var r in record)
                {
                    if (!string.IsNullOrEmpty(r.AlarmType))
                    {
                        string[] AlarmType  = r.AlarmType.Replace("[","").Replace("]","").Split(',');
                        foreach(string a in AlarmType)
                        {
                            if (warnings.Contains(a))
                            {
                                DailyWarning++;
                                
                            }
                            if (alarms.Contains(a))
                            {
                                DailyAlarm++;
                            }
                        }
                        BJQS.Add(AlarmType.Length);
                        BJQSX.Add(r.Date.Value.ToString("HH:mm"));
                    }
                    if (r.Hoist.HasValue)
                    {
                        SSDZ.Add(r.Hoist.Value);
                        SSDZX.Add(r.Date.Value.ToString("HH:mm"));
                    }
                    else
                    {
                        SSDZ.Add(0);
                    }
                    if (r.Moment.HasValue)
                    {
                        SSLJ.Add(r.Moment.Value);
                        SSLJX.Add(r.Date.Value.ToString("HH:mm"));
                    }
                    else
                    {
                        SSLJ.Add(0);
                    }
                }
                res.Add("SSDZ", SSDZ);
                res.Add("SSDZX", SSDZX); 
                res.Add("SSLJ", SSLJ);
                res.Add("SSLJX", SSLJX);
                res.Add("BJQS", BJQS);
                res.Add("BJQSX", BJQSX);
                res.Add("DailyWarning", DailyWarning + "");
                res.Add("DailyAlarm", DailyAlarm + "");
            }
            return      JsonConvert.SerializeObject(res); ;
        }
        #endregion
        #endregion
    }
}