using BLL;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
namespace FineUIPro.Web.HJGL.PersonManage
{
    public partial class PersonItem : PageBase
    {
        #region 定义项
        /// 
        /// 焊工id
        /// 
        public string WED_ID
        {
            get
            {
                return (string)ViewState["WED_ID"];
            }
            set
            {
                ViewState["WED_ID"] = value;
            }
        }
        /// 
        /// 焊接材质集合
        /// 
        private static List BS_SteelList = new List();
        /// 
        /// 焊接位置集合
        /// 
        private static List BS_WeldPositionList = new List();
        /// 
        /// 焊接方法集合
        /// 
        private static List BS_WeldMethodList = new List();
        #endregion
        #region 加载页面
        /// 
        /// 加载页面
        /// 
        /// 
        /// 
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.WED_ID = Request.Params["welderId"];
                var welder = BLL.WelderService.GetWelderById(this.WED_ID);
                if (welder != null)
                {
                    this.lbWelderName.Text = welder.WED_Name;
                    //焊接材质初始化
                    this.Tab2Load();
                    //焊接方法初始化
                    this.Tab4Load();
                }
                else
                {
                    Alert.ShowInTop("焊工信息不正确!", MessageBoxIcon.Error);
                }
            }
        }
        #endregion   
        #region 焊接材质
        #region 焊接材质初始化
        /// 
        /// 材质初始化
        /// 
        protected void Tab2Load()
        {
            BS_SteelList = new List();
            var items = from x in Funs.DB.BS_WelderItem where x.WED_ID == this.WED_ID select x.STE_ID;
            if (items.Count() > 0)
            {
                foreach (var item in items)
                {
                    BS_SteelList.Add(item);
                }
            }
            gvBS_SteelBindGrid();
        }
        #endregion
        #region 焊接材质绑定数据
        /// 
        /// 绑定数据
        /// 
        private void gvBS_SteelBindGrid()
        {
            string strSql = @"SELECT distinct steel.STE_ID,STE_Code,STE_Name,STE_SteelType,STE_Remark, 
                 (CASE WHEN STE_SteelType='1' THEN '碳钢' 
			                WHEN STE_SteelType='2' THEN '不锈钢' 
			                WHEN STE_SteelType='3' THEN '鉻目钢' 
			                WHEN STE_SteelType='4' THEN '低合金钢' 
			                WHEN STE_SteelType='5' THEN '镍合金钢' 
			                WHEN STE_SteelType='6' THEN '钛合金钢' 
			                WHEN STE_SteelType='7' THEN '其他' 
			                WHEN STE_SteelType='8' THEN '异种钢接头' 
			                WHEN STE_SteelType='9' THEN '低温钢' 
			                WHEN STE_SteelType='10' THEN '复合钢' END) AS STE_SteelTypeName,
                            item.ThicknessMax,
			                item.ThicknessMin,
			                item.SizesMax,
			                item.SizesMin 
                 FROM BS_Steel as steel 
                left join BS_WelderItem as item on item.STE_ID = steel.STE_ID WHERE 1=1 ";
            List listStr = new List();
            if (!string.IsNullOrEmpty(this.txtSTE_Name.Text.Trim()))
            {
                strSql += " AND STE_Name LIKE @STE_Name";
                listStr.Add(new SqlParameter("@STE_Name", "%" + this.txtSTE_Name.Text.Trim() + "%"));
            }
            if (!string.IsNullOrEmpty(this.txtSTE_Code.Text.Trim()))
            {
                strSql += " AND STE_Code LIKE @STE_Code";
                listStr.Add(new SqlParameter("@STE_Code", "%" + this.txtSTE_Code.Text.Trim() + "%"));
            }
            SqlParameter[] parameter = listStr.ToArray();
            DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
            // 2.获取当前分页数据
            //var table = this.GetPagedDataTable(gvBS_Steel, tb1);
            gvBS_Steel.RecordCount = tb.Rows.Count;
            //tb = GetFilteredTable(gvBS_Steel.FilteredData, tb);
            var table = this.GetPagedDataTable(gvBS_Steel, tb);
            gvBS_Steel.DataSource = table;
            gvBS_Steel.DataBind();
            if (BS_SteelList.Count() > 0)
            {
                List lists = new List();
                for (int i = 0; i < gvBS_Steel.Rows.Count; i++)
                {
                    string id = gvBS_Steel.DataKeys[i][0].ToString();
                    if (BS_SteelList.Contains(id))
                    {
                        lists.Add(id);
                    }
                }
                gvBS_Steel.SelectedRowIDArray = lists.ToArray();
            }
        }
        #endregion      
        #region 焊接材质保存方法
        /// 
        ///  焊接材质保存方法
        /// 
        private void SaveTab2Data()
        {
            BLL.WelderItemService.DeleteItemByWenId(this.WED_ID);
            foreach (var item in gvBS_Steel.SelectedRowIDArray)
            {
                Model.BS_WelderItem welderItem = new Model.BS_WelderItem();
                welderItem.WEDItem_ID = SQLHelper.GetNewID(typeof(Model.BS_WelderItem));
                welderItem.WED_ID = this.WED_ID;
                welderItem.STE_ID = item;
                //增加焊接壁厚、焊接尺寸
                JArray EditorPMArr = gvBS_Steel.GetMergedData();
                if (EditorPMArr.Count > 0)
                {
                    JArray mergedData = gvBS_Steel.GetMergedData();
                    int i = 0;
                    foreach (JObject mergedRow in EditorPMArr)
                    {
                        string steId = gvBS_Steel.DataKeys[i][0].ToString();
                        JObject values = mergedRow.Value("values");
                        if (steId == item)
                        {
                            welderItem.ThicknessMin = Funs.GetNewDecimal(values.Value("ThicknessMin").ToString());
                            welderItem.ThicknessMax = Funs.GetNewDecimal(values.Value("ThicknessMax").ToString());
                            welderItem.SizesMin = Funs.GetNewDecimal(values.Value("SizesMin").ToString());
                            welderItem.SizesMax = Funs.GetNewDecimal(values.Value("SizesMax").ToString());
                        }
                        i++;
                    }
                }
                BLL.WelderItemService.AddWelderItem(welderItem);
            }
        }
        #endregion 
        #endregion
        #region 焊接方法
        #region 焊接方法初始化
        /// 
        /// 方法初始化
        /// 
        protected void Tab4Load()
        {
            BS_WeldMethodList = new List();
            var items = from x in Funs.DB.BS_WeldMethodItem where x.WED_ID == this.WED_ID select x.WME_ID;
            if (items.Count() > 0)
            {
                foreach (var item in items)
                {
                    BS_WeldMethodList.Add(item);
                }
            }
            gvBS_WeldMethodBindGrid();
        }
        #endregion
        #region 焊接方法绑定数据
        /// 
        /// 绑定数据
        /// 
        private void gvBS_WeldMethodBindGrid()
        {
            string strSql = @"SELECT WeldingMethodId,WeldingMethodCode,WeldingMethodName,Remark"
                + @" FROM [dbo].[Base_WeldingMethod] WHERE 1=1";
            List listStr = new List();
            if (!string.IsNullOrEmpty(this.txtWME_Name.Text.Trim()))
            {
                strSql += " AND WeldingMethodName LIKE @WME_Name";
                listStr.Add(new SqlParameter("@WME_Name", "%" + this.txtWME_Name.Text.Trim() + "%"));
            }
            if (!string.IsNullOrEmpty(this.txtWME_Code.Text.Trim()))
            {
                strSql += " AND WeldingMethodCode LIKE @WME_Code";
                listStr.Add(new SqlParameter("@WME_Code", "%" + this.txtWME_Code.Text.Trim() + "%"));
            }
            SqlParameter[] parameter = listStr.ToArray();
            DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
            // 2.获取当前分页数据
            //var table = this.GetPagedDataTable(gvBS_WeldMethod, tb1);
            gvBS_WeldMethod.RecordCount = tb.Rows.Count;
            //tb = GetFilteredTable(gvBS_WeldMethod.FilteredData, tb);
            var table = this.GetPagedDataTable(gvBS_WeldMethod, tb);
            gvBS_WeldMethod.DataSource = table;
            gvBS_WeldMethod.DataBind();
            if (BS_WeldMethodList.Count() > 0)
            {
                List lists = new List();
                for (int i = 0; i < gvBS_WeldMethod.Rows.Count; i++)
                {
                    string id = gvBS_WeldMethod.DataKeys[i][0].ToString();
                    if (BS_WeldMethodList.Contains(id))
                    {
                        lists.Add(id);
                    }
                }
                gvBS_WeldMethod.SelectedRowIDArray = lists.ToArray();
            }
        }
        #endregion
        #region 焊接方法保存方法
        /// 
        ///  焊接方法保存方法
        /// 
        private void SaveTab4Data()
        {
            BLL.WeldMethodItemService.DeleteWeldMethodItem(this.WED_ID);
            foreach (var item in gvBS_WeldMethod.SelectedRowIDArray)
            {
                Model.BS_WeldMethodItem weldMethodItem = new Model.BS_WeldMethodItem();
                weldMethodItem.WeldMethodItemId = SQLHelper.GetNewID(typeof(Model.BS_WeldMethodItem));
                weldMethodItem.WED_ID = this.WED_ID;
                weldMethodItem.WME_ID = item;
                BLL.WeldMethodItemService.AddWeldMethodItem(weldMethodItem);
            }
        }
        #endregion
        #endregion
        #region 保存按钮
        /// 
        /// 保存按钮
        /// 
        /// 
        /// 
        protected void btnSave_Click(object sender, EventArgs e)
        {
            ///  焊接材质保存方法
            this.SaveTab2Data();
            ///  焊接方法保存方法
            this.SaveTab4Data();
            ShowNotify("保存成功!", MessageBoxIcon.Success);
            PageContext.RegisterStartupScript(ActiveWindow.GetHideRefreshReference());
        }
        #endregion
        #region 查询
        /// 
        /// 查询
        /// 
        /// 
        /// 
        protected void TextBox_TextChanged(object sender, EventArgs e)
        {
            this.gvBS_SteelBindGrid();
            this.gvBS_WeldMethodBindGrid();
        }
        #endregion
    }
}