using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.DynamicData;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
using FastReport.Data;
using FineUIPro.Web.HJGL.BaseInfo;
using FineUIPro.Web.HJGL.WeldingManage;
using FineUIPro.Web.SysManage;
using Microsoft.JScript;
using Model;
using Newtonsoft.Json.Linq;
using NPOI.OpenXmlFormats.Vml.Office;
using NPOI.SS.Formula.Functions;
using NPOI.Util;
using Org.BouncyCastle.Asn1.Tsp;
using Org.BouncyCastle.Ocsp;

namespace FineUIPro.Web.ProjectData
{
    public partial class PCFGrid : PageBase
    {
        public string Id
        {
            get
            {
                return (string)ViewState["Id"];
            }
            set
            {
                ViewState["Id"] = value;
            }
        }
        public string CurrentNodeId
        {
            get
            {
                return (string)ViewState["CurrentNodeId"];
            }
            set
            {
                ViewState["CurrentNodeId"] = value;
            }
        }
        public DataSet set
        {
            get
            {
                return (DataSet)ViewState["set"];
            }
            set
            {
                ViewState["set"] = value;
            }
        }

        public Dictionary<string, Dictionary<string, string>> relation
        {
            get
            {
                return (Dictionary<string, Dictionary<string, string>>)ViewState["relation"];
            }
            set
            {
                ViewState["relation"] = value;
            }
        }
        public List<Model.PW_IsoInfo> isoList
        {
            get
            {
                return (List<Model.PW_IsoInfo>)Session["isoList"];
            }
            set
            {
                Session["isoList"] = value;
            }
        }
        public List<Model.PW_JointInfo> jointList
        {
            get
            {
                return (List<Model.PW_JointInfo>)Session["jointList"];
            }
            set
            {
                Session["jointList"] = value;
            }
        } 
        #region 加载
        /// <summary>
        /// 加载页面
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Id = Request.Params["Id"];
                relation = new Dictionary<string, Dictionary<string, string>>();
                isoList= new List<Model.PW_IsoInfo>();
                jointList = new List<PW_JointInfo>();
                initDrpType();
                InitGrid();
                InitTreeMenu(); 
             
            }
        }
        #endregion



        /// <summary>
        /// 关闭弹出窗
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void InitGrid()
        {
            string rootPath = Server.MapPath("~/");
            string initFullPath = rootPath + Const.ExcelUrl;

            var attachFile = Funs.DB.AttachFile.Where(x => x.ToKeyId == Id);
            List<string> files = new List<string>();
            foreach (var attach in attachFile)
            {
                if (!string.IsNullOrEmpty(attach.AttachUrl))
                {
                    foreach (var file in attach.AttachUrl.Split(','))
                    {
                        if (!string.IsNullOrEmpty(file))
                        {
                            files.Add(rootPath + file);
                        }
                    }
                }
            }
            set = new DataSet();
            DataTable dt = new DataTable();
            dt.TableName = "ROOT";
            dt.Columns.Add("ID");
            set.Tables.Add(dt);
            Dictionary<string, DataTable> dic = new Dictionary<string, DataTable>();
            dic.Add("ROOT", dt);
            foreach (var filePath in files)
            {
                string currentName = "ROOT";
                string content = File.ReadAllText(filePath);
                string[] lines = content.Split('\n');
                foreach (var line in lines)
                {
                    if (!string.IsNullOrEmpty(line))
                    {
                        var l = line.TrimEnd('\r');
                        if (l.IndexOf(' ') == -1)
                        {
                            if (dic.ContainsKey(l))
                            {
                                dt = dic[l];
                            }
                            else
                            {
                                dt = new DataTable();
                                dt.TableName = l;
                                dt.Columns.Add("ID");
                                currentName = l;
                                set.Tables.Add(dt);
                                dic.Add(l, dt);
                            }
                        }
                        else
                        {
                            l = l.Trim();
                            string collomName = l;
                            if (l.IndexOf(" ") > 0)
                            {
                                collomName = l.Substring(0, l.IndexOf(" "));
                            }
                            if (!dt.Columns.Contains(collomName))
                            {
                                dt.Columns.Add(collomName);

                            }

                        }
                    }
                }
            }

            DataRow row = null;
            string rowId = "";
            foreach (var filePath in files)
            {
                rowId = Guid.NewGuid().ToString();
                string currentName = "ROOT";
                dt = dic["ROOT"];
                row = dt.NewRow();
                row["ID"] = rowId;
                dt.Rows.Add(row);
                string content = File.ReadAllText(filePath);
                string[] lines = content.Split('\n');
                foreach (var line in lines)
                {
                    if (!string.IsNullOrEmpty(line))
                    {
                        var l = line.TrimEnd('\r');
                        if (l.IndexOf(' ') == -1)
                        {
                            if (dic.ContainsKey(l))
                            {
                                dt = dic[l];
                                row = dt.NewRow();
                                row["ID"] = rowId;
                                dt.Rows.Add(row);
                            }

                        }
                        else
                        {
                            if (!l.StartsWith(" ") && "ROOT" != currentName)
                            {
                                row = dt.NewRow();
                                row["ID"] = rowId;
                                dt.Rows.Add(row);
                            }
                            l = l.Trim();
                            string collomName = l;
                            if (l.IndexOf(" ") > 0)
                            {
                                collomName = l.Substring(0, l.IndexOf(" "));
                            }
                            var value = l.Substring(collomName.Length);
                            if (dt.Columns.Contains(collomName))
                            {
                                row[collomName] = value.Trim();
                            }

                        }
                    }
                }
            }



            foreach (DataTable dtt in set.Tables)
            {

                Grid grid = new Grid();
                grid.ShowGridHeader = true;
                grid.Title = dtt.TableName;
                grid.ID = dtt.TableName;
                grid.AllowColumnLocking= true;
                grid.DataKeyNames = new string[] { "Id" };
                foreach (DataColumn dc in dtt.Columns)
                {
                    grid.Columns.Add(new BoundField() { DataField = dc.ColumnName, HeaderText = dc.ColumnName });
                }
                grid.DataSource = dtt;
                grid.DataBind();
                Region2.Items.Add(grid);
            }


        }

        #region  加载树
        /// <summary>
        /// 加载树
        /// </summary>
        private void InitTreeMenu()
        {
            this.trComponent.Nodes.Clear();
            this.trComponent.ShowBorder = false;
            this.trComponent.ShowHeader = false;
            this.trComponent.EnableIcons = true;
            this.trComponent.AutoScroll = true;
            foreach (DataTable dt in set.Tables)
            {
                TreeNode node = new TreeNode();
                node.Text = dt.TableName;
                node.NodeID = dt.TableName;
                node.CommandName = "table";
                node.EnableClickEvent = true;
                node.EnableExpandEvent = true;
                this.trComponent.Nodes.Add(node);
            }
        }
        #endregion



        #region  Tree点击事件
        /// <summary>
        /// Tree点击事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void trComponent_NodeCommand(object sender, TreeCommandEventArgs e)
        {
            if (!string.IsNullOrEmpty(CurrentNodeId))
            {
                BindRelation();
            }
            CurrentNodeId = trComponent.SelectedNodeID;
            BindGrid();
        }
        #endregion
        /// <summary>
        /// 加载Grid
        /// </summary>
        private void BindGrid()
        {
            List<Model.WBSSetInitItem> items = new List<Model.WBSSetInitItem>();
            if (this.trComponent.SelectedNode != null)
            {
                var dic = relation.ContainsKey(this.trComponent.SelectedNode.NodeID) ? relation[this.trComponent.SelectedNode.NodeID]:null;
                DataTable dt = set.Tables[this.trComponent.SelectedNode.NodeID];
                DataTable dtShow = new DataTable();
                dtShow.Columns.Add("ID");
                dtShow.Columns.Add("ComAttr");
                dtShow.Columns.Add("Column");
                if (dt != null)
                {
                    foreach (DataColumn column in dt.Columns)
                    {
                        DataRow row = dtShow.NewRow();
                        row["ID"] = column.ColumnName;
                        row["ComAttr"] = column.ColumnName;
                        if (dic != null)
                        {
                            row["Column"] = dic.ContainsKey(column.ColumnName) ? dic[column.ColumnName]:null;

                        }
                        dtShow.Rows.Add(row);
                    }
                }

                this.Grid1.DataSource = dtShow;
                this.Grid1.DataBind();
            }
        }


        private void BindIsoGrid()
        {
            this.IsoGrid.DataSource = this.isoList;
            this.IsoGrid.DataBind();
        }
        private void BindJointGrid()
        {
            this.JointGrid.DataSource = this.jointList;
            this.JointGrid.DataBind();
        }

        protected void drpType_SelectedIndexChanged(object sender, EventArgs e)
        {
            initDrpType();
           
            BindGrid();
        }


        protected void initDrpType()
        {
            List<ListItem> list = new List<ListItem>();
            if (drpType.SelectedValue == "管道")
            {

                //list.Add(new ListItem("管线代号", "ISO_IsoNo"));
                //list.Add(new ListItem("单位", "UnitId"));
                //list.Add(new ListItem("介质", "TestMediumId"));
                //list.Add(new ListItem("是否非标", "Is_Standard"));
                //list.Add(new ListItem("探伤比例", "DetectionRateId"));
                //list.Add(new ListItem("探伤类型", "DetectionTypeId"));
                //list.Add(new ListItem("系统号", "ISO_SysNo"));
                //list.Add(new ListItem("分系统号", "ISO_SubSysNo"));
                //list.Add(new ListItem("工作包号", "ISO_CwpNo"));
                //list.Add(new ListItem("单线图号", "ISO_IsoNumber"));
                //list.Add(new ListItem("图纸版次", "ISO_Rev"));
                //list.Add(new ListItem("页数", "ISO_Sheet"));
                //list.Add(new ListItem("总管段数", "ISO_PipeQty"));
                //list.Add(new ListItem("涂漆类别", "ISO_Paint"));
                //list.Add(new ListItem("绝热类别", "ISO_Insulator"));
                //list.Add(new ListItem("材质", "MaterialId"));
                //list.Add(new ListItem("执行标准", "ISO_Executive"));
                //list.Add(new ListItem("规格", "ISO_Specification"));
                //list.Add(new ListItem("修改人", "ISO_Modifier"));
                //list.Add(new ListItem("修改日期", "ISO_ModifyDate"));
                //list.Add(new ListItem("建档人", "ISO_Creator"));
                //list.Add(new ListItem("建档日期", "ISO_CreateDate"));
                //list.Add(new ListItem("设计压力", "ISO_DesignPress"));
                //list.Add(new ListItem("设计温度", "ISO_DesignTemperature"));
                //list.Add(new ListItem("试验温度", "ISO_TestTemperature"));
                //list.Add(new ListItem("合格等级", "ISO_NDTClass"));
                //list.Add(new ListItem("渗透比例", "ISO_PTRate"));
                //list.Add(new ListItem("渗透等级", "ISO_PTClass"));
                //list.Add(new ListItem("是否酸洗", "ISO_IfPickling"));
                //list.Add(new ListItem("是否抛光", "ISO_IfChasing"));
                //list.Add(new ListItem("管道等级", "PipingClassId"));
                //list.Add(new ListItem("管道长度", "ISO_Length"));

                list.Add(new ListItem("管道:管线代号", "管道:管线代号"));
                list.Add(new ListItem("管道:单位", "管道:单位"));
                list.Add(new ListItem("管道:施工区域", "管道:施工区域"));
                list.Add(new ListItem("管道:介质", "管道:介质"));
                list.Add(new ListItem("管道:是否非标", "管道:是否非标"));
                list.Add(new ListItem("管道:探伤比例", "管道:探伤比例"));
                list.Add(new ListItem("管道:探伤类型", "管道:探伤类型"));
                list.Add(new ListItem("管道:系统号", "管道:系统号"));
                list.Add(new ListItem("管道:分系统号", "管道:分系统号"));
                list.Add(new ListItem("管道:工作包号", "管道:工作包号"));
                list.Add(new ListItem("管道:单线图号", "管道:单线图号"));
                list.Add(new ListItem("管道:图纸版次", "管道:图纸版次"));
                list.Add(new ListItem("管道:页数", "管道:页数"));
                list.Add(new ListItem("管道:总管段数", "管道:总管段数"));
                list.Add(new ListItem("管道:涂漆类别", "管道:涂漆类别"));
                list.Add(new ListItem("管道:绝热类别", "管道:绝热类别"));
                list.Add(new ListItem("管道:材质", "管道:材质"));
                list.Add(new ListItem("管道:执行标准", "管道:执行标准"));
                list.Add(new ListItem("管道:规格", "管道:规格"));
                list.Add(new ListItem("管道:修改人", "管道:修改人"));
                list.Add(new ListItem("管道:修改日期", "管道:修改日期"));
                list.Add(new ListItem("管道:建档人", "管道:建档人"));
                list.Add(new ListItem("管道:建档日期", "管道:建档日期"));
                list.Add(new ListItem("管道:设计压力", "管道:设计压力"));
                list.Add(new ListItem("管道:设计温度", "管道:设计温度"));
                list.Add(new ListItem("管道:试验温度", "管道:试验温度"));
                list.Add(new ListItem("管道:合格等级", "管道:合格等级"));
                list.Add(new ListItem("管道:渗透比例", "管道:渗透比例"));
                list.Add(new ListItem("管道:渗透等级", "管道:渗透等级"));
                list.Add(new ListItem("管道:是否酸洗", "管道:是否酸洗"));
                list.Add(new ListItem("管道:是否抛光", "管道:是否抛光"));
                list.Add(new ListItem("管道:管道等级", "管道:管道等级"));
                list.Add(new ListItem("管道:管道长度", "管道:管道长度"));
            }
            else if (drpType.SelectedValue == "焊口")
            {
                //list.Add(new ListItem("焊口代号", "ISO_IsoNo"));
                //list.Add(new ListItem("焊接区域", "WLO_Code"));
                //list.Add(new ListItem("材质1", "MaterialId"));
                //list.Add(new ListItem("材质2", "MaterialId2"));
                //list.Add(new ListItem("所属管段", "JOT_BelongPipe"));
                //list.Add(new ListItem("组件1号", "JOT_Component1"));
                //list.Add(new ListItem("组件2号", "JOT_Component2"));
                //list.Add(new ListItem("焊口规格", "JOT_JointDesc"));
                //list.Add(new ListItem("炉批号1", "JOT_HeartNo1"));
                //list.Add(new ListItem("炉批号2", "JOT_HeartNo2"));
                //list.Add(new ListItem("焊缝类型", "JOTY_ID"));
                //list.Add(new ListItem("寸径", "JOT_Size"));
                //list.Add(new ListItem("外径", "JOT_Dia"));
                //list.Add(new ListItem("坡口类型", "JST_ID"));
                //list.Add(new ListItem("壁厚", "JOT_Sch"));
                //list.Add(new ListItem("实际壁厚", "JOT_FactSch"));
                //list.Add(new ListItem("后热温度", "JOT_LastTemp"));
                //list.Add(new ListItem("层间温度", "JOT_CellTemp"));
                //list.Add(new ListItem("预热温度", "TemperatureSetId"));
                //list.Add(new ListItem("焊口属性", "JOT_JointAttribute"));
                //list.Add(new ListItem("焊接方法", "WME_ID"));
                //list.Add(new ListItem("焊丝", "JOT_WeldSilk"));
                //list.Add(new ListItem("焊条", "JOT_WeldMat"));
                //list.Add(new ListItem("焊接电流", "JOT_Electricity"));
                //list.Add(new ListItem("焊接电压", "JOT_Voltage"));
                //list.Add(new ListItem("是否需热处理", "IS_Proess"));
                //list.Add(new ListItem("焊接气体保护", "WeldingGasProtection"));
                //list.Add(new ListItem("焊接速度", "WeldingSpeed"));
                //list.Add(new ListItem("实际预热温度", "ActualPrepareTemp"));
                //list.Add(new ListItem("探伤比例", "DetectionRateId"));
                //list.Add(new ListItem("探伤类型", "DetectionTypeId"));
                //list.Add(new ListItem("数量(组件)", "ComponentNum"));
                //list.Add(new ListItem("延长米", "Extend_Length"));
                //list.Add(new ListItem("材料1", "Material1"));
                //list.Add(new ListItem("材料2", "Material2"));
                //list.Add(new ListItem("壁板号", "WallBoard"));

                list.Add(new ListItem("焊口:焊口代号", "焊口:焊口代号"));
                list.Add(new ListItem("焊口:焊接区域", "焊口:焊接区域"));
                list.Add(new ListItem("焊口:材质1", "焊口:材质1"));
                list.Add(new ListItem("焊口:材质2", "焊口:材质2"));
                list.Add(new ListItem("焊口:所属管段", "焊口:所属管段"));
                list.Add(new ListItem("焊口:组件1号", "焊口:组件1号"));
                list.Add(new ListItem("焊口:组件2号", "焊口:组件2号"));
                list.Add(new ListItem("焊口:焊口规格", "焊口:焊口规格"));
                list.Add(new ListItem("焊口:炉批号1", "焊口:炉批号1"));
                list.Add(new ListItem("焊口:炉批号2", "焊口:炉批号2"));
                list.Add(new ListItem("焊口:焊缝类型", "焊口:焊缝类型"));
                list.Add(new ListItem("焊口:寸径", "焊口:寸径"));
                list.Add(new ListItem("焊口:外径", "焊口:外径"));
                list.Add(new ListItem("焊口:坡口类型", "焊口:坡口类型"));
                list.Add(new ListItem("焊口:壁厚", "焊口:壁厚"));
                list.Add(new ListItem("焊口:实际壁厚", "焊口:实际壁厚"));
                list.Add(new ListItem("焊口:后热温度", "焊口:后热温度"));
                list.Add(new ListItem("焊口:层间温度", "焊口:层间温度"));
                list.Add(new ListItem("焊口:预热温度", "焊口:预热温度"));
                list.Add(new ListItem("焊口:焊口属性", "焊口:焊口属性"));
                list.Add(new ListItem("焊口:焊接方法", "焊口:焊接方法"));
                list.Add(new ListItem("焊口:焊丝", "焊口:焊丝"));
                list.Add(new ListItem("焊口:焊条", "焊口:焊条"));
                list.Add(new ListItem("焊口:焊接电流", "焊口:焊接电流"));
                list.Add(new ListItem("焊口:焊接电压", "焊口:焊接电压"));
                list.Add(new ListItem("焊口:是否需热处理", "焊口:是否需热处理"));
                list.Add(new ListItem("焊口:焊接气体保护", "焊口:焊接气体保护"));
                list.Add(new ListItem("焊口:焊接速度", "焊口:焊接速度"));
                list.Add(new ListItem("焊口:实际预热温度", "焊口:实际预热温度"));
                list.Add(new ListItem("焊口:探伤比例", "焊口:探伤比例"));
                list.Add(new ListItem("焊口:探伤类型", "焊口:探伤类型"));
                list.Add(new ListItem("焊口:数量(组件)", "焊口:数量(组件)"));
                list.Add(new ListItem("焊口:延长米", "焊口:延长米"));
                list.Add(new ListItem("焊口:材料1", "焊口:材料1"));
                list.Add(new ListItem("焊口:材料2", "焊口:材料2"));
                list.Add(new ListItem("焊口:壁板号", "焊口:壁板号"));

            } 

            this.drpColumn.DataTextField = "Text";
            this.drpColumn.DataValueField = "Value";
            this.drpColumn.DataSource = list;
            drpColumn.DataBind();
        }

        protected void btnGenerateIso_Click(object sender, EventArgs e)
        {
            isoList = new List<PW_IsoInfo>();
            jointList = new List<PW_JointInfo>();
            BindRelation();
            DataSet dataSetIso = new DataSet();
            DataSet dataSetJoin = new DataSet();

            foreach (string key in this.relation.Keys)
            {
                DataTable dtIso = new DataTable();
                DataTable dtJoin = new DataTable();
                dtIso.TableName = key;
                dtIso.Columns.Add("ID");
                dtJoin.TableName = key;
                dtJoin.Columns.Add("ID");
                var col = this.relation[key];
                foreach (string key1 in col.Keys)
                {
                    if (col[key1].Contains("管道"))
                    {
                        dtIso.Columns.Add(key1);
                    }
                    else if (col[key1].Contains("焊口"))
                    {
                        dtJoin.Columns.Add(key1);
                    }
                }
                if (dtIso.Columns.Count > 1)
                {
                    dataSetIso.Tables.Add(dtIso);
                }
                if (dtJoin.Columns.Count > 1)
                {
                    dataSetJoin.Tables.Add(dtJoin);
                }
            }



            foreach (DataTable dt1 in dataSetIso.Tables)
            {
                foreach (DataTable dt2 in set.Tables)
                {
                    if (dt1.TableName == dt2.TableName)
                    {
                        foreach (DataRow row in dt2.Rows)
                        {
                            var newRow  =dt1.NewRow();


                            foreach (DataColumn dc in dt1.Columns)
                            {
                                newRow[dc.ColumnName] = row[dc.ColumnName];
                            }
                            dt1.Rows.Add(newRow);
                        }
                    }
                }
            }
            foreach (DataTable dt1 in dataSetJoin.Tables)
            {
                foreach (DataTable dt2 in set.Tables)
                {
                    if (dt1.TableName == dt2.TableName)
                    {
                        foreach (DataRow row in dt2.Rows)
                        {
                            var newRow = dt1.NewRow();


                            foreach (DataColumn dc in dt1.Columns)
                            {
                                newRow[dc.ColumnName] = row[dc.ColumnName];
                            }
                            dt1.Rows.Add(newRow);
                        }
                    }
                }
            }



            var units = from x in Funs.DB.Base_Unit
                        join y in Funs.DB.Project_ProjectUnit on x.UnitId equals y.UnitId
                        where y.ProjectId == CurrUser.LoginProjectId
                        select x;
            var workAreas = from x in Funs.DB.ProjectData_WorkArea where x.ProjectId == CurrUser.LoginProjectId select x;
            var steels = from x in Funs.DB.Base_Material select x;
            var materialTypes = from x in Funs.DB.Base_MaterialType select x;
            var rates = from x in Funs.DB.Base_DetectionRate select x;
            var detectionType = from x in Funs.DB.Base_DetectionType select x;
            var types = from x in Funs.DB.Base_WeldType select x;
            var methods = from x in Funs.DB.Base_WeldingMethod select x;
            var materials = from x in Funs.DB.Base_Consumables select x;
            var services = from x in Funs.DB.Base_TestMedium select x;
            var slopeTypes = from x in Funs.DB.Base_GrooveType select x;
            var isoClasss = from x in Funs.DB.Base_PipingClass select x;
            var components = from x in Funs.DB.Base_Components select x;
            var dns = from x in Funs.DB.Base_DNCompare select x;
            var users = from x in Funs.DB.Sys_User select x;


            foreach (DataTable dataTable in dataSetIso.Tables)
            {
                var idc = this.relation[dataTable.TableName];
                foreach (DataRow row in dataTable.Rows)
                {
                    PW_IsoInfo isoInfo = new PW_IsoInfo();
                    isoInfo.ISO_ID = row["ID"].ToString();
                    isoInfo.ProjectId = CurrUser.LoginProjectId;
                    foreach (DataColumn dataColumn in dataTable.Columns)
                    {
                        if (idc.ContainsKey(dataColumn.ColumnName))
                        {
                            switch (idc[dataColumn.ColumnName])
                            {
                                case "管道:管线代号":
                                    isoInfo.ISO_IsoNo = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "管道:单位":
                                    isoInfo.UnitId = units.Where(x => x.UnitName == row[dataColumn.ColumnName].ToString()).Select(x => x.UnitId).FirstOrDefault();
                                    break;
                                case "管道:施工区域":
                                    isoInfo.WorkAreaId = workAreas.Where(x => x.WorkAreaName == row[dataColumn.ColumnName].ToString()).Select(x => x.WorkAreaId).FirstOrDefault();
                                    break;                                    
                                case "管道:介质":
                                    isoInfo.TestMediumId = services.Where(x => x.MediumName == row[dataColumn.ColumnName].ToString()).Select(x => x.TestMediumId).FirstOrDefault();
                                    break;
                                case "管道:是否非标":
                                    isoInfo.Is_Standard = row[dataColumn.ColumnName].ToString() == "是" || row[dataColumn.ColumnName].ToString().ToLower() == "true" ? true : false;
                                    break;
                                case "管道:探伤比例":
                                    isoInfo.DetectionRateId = rates.Where(x => x.DetectionRateCode == row[dataColumn.ColumnName].ToString()).Select(x => x.DetectionRateId).FirstOrDefault(); ;
                                    break;
                                case "管道:探伤类型":
                                    isoInfo.DetectionTypeId = detectionType.Where(x => x.DetectionTypeName == row[dataColumn.ColumnName].ToString()).Select(x => x.DetectionTypeId).FirstOrDefault(); ;
                                    break;
                                case "管道:系统号":
                                    isoInfo.ISO_SysNo = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "管道:分系统号":
                                    isoInfo.ISO_SubSysNo = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "管道:工作包号":
                                    isoInfo.ISO_CwpNo = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "管道:单线图号":
                                    isoInfo.ISO_IsoNumber = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "管道:图纸版次":
                                    isoInfo.ISO_Rev = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "管道:页数":
                                    isoInfo.ISO_Sheet = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "管道:总管段数":
                                    isoInfo.ISO_PipeQty = decimal.Parse(row[dataColumn.ColumnName].ToString());
                                    break;
                                case "管道:涂漆类别":
                                    isoInfo.ISO_Paint = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "管道:绝热类别":
                                    isoInfo.ISO_Insulator = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "管道:材质":
                                    isoInfo.MaterialId = steels.Where(x => x.MaterialCode == row[dataColumn.ColumnName].ToString()).Select(x => x.MaterialId).FirstOrDefault();
                                    break;
                                case "管道:执行标准":
                                    isoInfo.ISO_Executive = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "管道:规格":
                                    isoInfo.ISO_Specification = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "管道:管道长度":
                                    isoInfo.ISO_Length = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "管道:管道等级":
                                    isoInfo.PipingClassId = isoClasss.Where(x => x.PipingClassCode == row[dataColumn.ColumnName].ToString()).Select(x => x.PipingClassId).FirstOrDefault();
                                    break;
                                case "管道:是否抛光":
                                    isoInfo.ISO_IfChasing = row[dataColumn.ColumnName].ToString() == "是" || row[dataColumn.ColumnName].ToString().ToLower() == "true" ? true : false;
                                    break;
                                case "管道:是否酸洗":
                                    isoInfo.ISO_IfPickling = row[dataColumn.ColumnName].ToString() == "是" || row[dataColumn.ColumnName].ToString().ToLower() == "true" ? true : false;
                                    break;
                                case "管道:渗透等级":
                                    isoInfo.ISO_PTClass = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "管道:渗透比例":
                                    isoInfo.ISO_PTRate = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "管道:合格等级":
                                    isoInfo.ISO_NDTClass = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "管道:试验温度":
                                    isoInfo.ISO_TestTemperature = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "管道:设计温度":
                                    isoInfo.ISO_TestTemperature = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "管道:设计压力":
                                    isoInfo.ISO_DesignPress = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "管道:修改人":
                                    isoInfo.ISO_Modifier = users.Where(x => x.UserName == row[dataColumn.ColumnName].ToString()).Select(x => x.UserId).FirstOrDefault();
                                    break;
                                case "管道:修改日期":
                                    isoInfo.ISO_ModifyDate = DateTime.Parse(row[dataColumn.ColumnName].ToString());
                                    break;
                                case "管道:建档人":
                                    isoInfo.ISO_Creator = users.Where(x => x.UserName == row[dataColumn.ColumnName].ToString()).Select(x => x.UserId).FirstOrDefault();
                                    break;
                                case "管道:建档日期":
                                    isoInfo.ISO_CreateDate = DateTime.Parse(row[dataColumn.ColumnName].ToString());
                                    break;
                            }
                        }
                    }
                    this.isoList.Add(isoInfo);
                }
            }
            foreach (DataTable dataTable in dataSetJoin.Tables)
            {
                var idc = this.relation[dataTable.TableName];
                foreach (DataRow row in dataTable.Rows)
                {
                    PW_JointInfo joinInfo = new PW_JointInfo();
                    joinInfo.JOT_ID = Guid.NewGuid().ToString();
                    joinInfo.ISO_ID = row["ID"].ToString();
                    joinInfo.ProjectId = CurrUser.LoginProjectId;
                    foreach (DataColumn dataColumn in dataTable.Columns)
                    {
                        if (idc.ContainsKey(dataColumn.ColumnName))
                        {
                            switch (idc[dataColumn.ColumnName])
                            {
                                case "焊口:焊口代号":
                                    joinInfo.JOT_JointNo = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "焊口:焊接区域":
                                    joinInfo.WLO_Code = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "焊口:材质1":
                                    joinInfo.MaterialId = steels.Where(x => x.MaterialCode == row[dataColumn.ColumnName].ToString()).Select(x => x.MaterialId).FirstOrDefault();
                                    break;
                                case "焊口:材质2":
                                    joinInfo.MaterialId2 = steels.Where(x => x.MaterialCode == row[dataColumn.ColumnName].ToString()).Select(x => x.MaterialId).FirstOrDefault();
                                    break;
                                case "焊口:所属管段":
                                    joinInfo.JOT_BelongPipe = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "焊口:组件1号":
                                    joinInfo.JOT_Component1 = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "焊口:组件2号":
                                    joinInfo.JOT_Component2 = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "焊口:焊口规格":
                                    joinInfo.JOT_JointDesc = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "焊口:炉批号1":
                                    joinInfo.JOT_HeartNo1 = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "焊口:炉批号2":
                                    joinInfo.JOT_HeartNo2 = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "焊口:焊缝类型":
                                    joinInfo.JOTY_ID = types.Where(x => x.WeldTypeCode == row[dataColumn.ColumnName].ToString()).Select(x => x.WeldTypeId).FirstOrDefault();
                                    break;
                                case "焊口:寸径":
                                    joinInfo.JOT_Size = decimal.Parse(row[dataColumn.ColumnName].ToString());
                                    break;
                                case "焊口:外径":
                                    joinInfo.JOT_Dia = decimal.Parse(row[dataColumn.ColumnName].ToString());
                                    break;
                                case "焊口:坡口类型":
                                    joinInfo.JST_ID = slopeTypes.Where(x => x.GrooveTypeCode == row[dataColumn.ColumnName].ToString()).Select(x => x.GrooveTypeId).FirstOrDefault();
                                    break;
                                case "焊口:壁厚":
                                    joinInfo.JOT_Sch = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "焊口:实际壁厚":
                                    joinInfo.JOT_FactSch = decimal.Parse(row[dataColumn.ColumnName].ToString());
                                    break;
                                case "焊口:后热温度":
                                    joinInfo.JOT_LastTemp = decimal.Parse(row[dataColumn.ColumnName].ToString());
                                    break;
                                case "焊口:层间温度":
                                    joinInfo.JOT_CellTemp = decimal.Parse(row[dataColumn.ColumnName].ToString());
                                    break;
                                case "焊口:焊口属性":
                                    joinInfo.JOT_JointAttribute = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "焊口:焊接方法":
                                    joinInfo.WME_ID = methods.Where(x => x.WeldingMethodCode == row[dataColumn.ColumnName].ToString()).Select(x => x.WeldingMethodId).FirstOrDefault();
                                    break;
                                case "焊口:焊丝":
                                    joinInfo.JOT_WeldSilk = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "焊口:焊条":
                                    joinInfo.JOT_WeldMat = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "焊口:焊接电流":
                                    joinInfo.JOT_Electricity = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "焊口:焊接电压":
                                    joinInfo.JOT_Voltage = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "焊口:是否需热处理":
                                    joinInfo.IS_Proess = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "焊口:焊接气体保护":
                                    joinInfo.WeldingGasProtection = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "焊口:焊接速度":
                                    joinInfo.WeldingSpeed = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "焊口:实际预热温度":
                                    joinInfo.ActualPrepareTemp = decimal.Parse(row[dataColumn.ColumnName].ToString());
                                    break;
                                case "焊口:数量(组件)":
                                    joinInfo.ComponentNum = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "焊口:延长米":
                                    joinInfo.Extend_Length = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "焊口:材料1":
                                    joinInfo.Material1 = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "焊口:材料2":
                                    joinInfo.Material2 = row[dataColumn.ColumnName].ToString();
                                    break;
                                case "焊口:壁板号":
                                    joinInfo.WallBoard = row[dataColumn.ColumnName].ToString();
                                    break;


                            }
                        }
                    }
                    this.jointList.Add(joinInfo);
                }
            }
            BindIsoGrid();
            BindJointGrid();
            this.TabStrip1.ActiveTabIndex = 2;
        }

        protected DataTable joinTable(DataTable dt1, DataTable dt2, string col1, string col2)
        {
            DataTable res = new DataTable();
            foreach (DataColumn col in dt1.Columns)
            {
                if (!string.IsNullOrEmpty(dt1.TableName))
                {
                    res.Columns.Add(dt1.TableName + "$" + col.ColumnName);
                }
                else
                {
                    res.Columns.Add(col.ColumnName);

                }
            }
            foreach (DataColumn col in dt2.Columns)
            {
                if (!string.IsNullOrEmpty(dt2.TableName))
                {
                    res.Columns.Add(dt2.TableName + "$" + col.ColumnName);
                }
                else
                {
                    res.Columns.Add(col.ColumnName);

                }
            }
            foreach (DataRow row1 in dt1.Rows)
            {
                var rows2 = dt2.Select(col2 + " = '" + row1[col1].ToString() + "'");
                if (rows2.Length == 0)
                {
                    var newRow = res.NewRow();
                    foreach (DataColumn column in dt1.Columns)
                    {
                        if (!string.IsNullOrEmpty(dt1.TableName))
                        {
                            newRow[dt1.TableName + "$" + column.ColumnName] = row1[column.ColumnName];
                        }
                        else
                        {
                            newRow[column.ColumnName] = row1[column.ColumnName];
                        }
                    }
                    res.Rows.Add(newRow);
                }
                else
                {
                    foreach (DataRow row2 in rows2)
                    {
                        var newRow = res.NewRow();
                        foreach (DataColumn column in dt1.Columns)
                        {
                            if (!string.IsNullOrEmpty(dt1.TableName))
                            {
                                newRow[dt1.TableName + "$" + column.ColumnName] = row1[column.ColumnName];
                            }
                            else
                            {
                                newRow[column.ColumnName] = row1[column.ColumnName];

                            }
                        }
                        foreach (DataColumn column in dt2.Columns)
                        {
                            if (!string.IsNullOrEmpty(dt2.TableName))
                            {
                                newRow[dt2.TableName + "$" + column.ColumnName] = row2[column.ColumnName];
                            }
                            else
                            {
                                newRow[column.ColumnName] = row1[column.ColumnName];

                            }
                        }
                        res.Rows.Add(newRow);
                    }
                }
            }
            return res;
        }



        

        protected void BindRelation()
        {
            if (!relation.ContainsKey(CurrentNodeId ))
            {
                relation.Add(CurrentNodeId, new Dictionary<string, string>());
            }
            var dic = relation[CurrentNodeId];
            if (Grid1.Rows.Count > 0)
            {
                foreach (JObject mergedRow in Grid1.GetMergedData())
                {
                    Model.Check_JointCheckDetail jointCheckDetail = new Model.Check_JointCheckDetail();
                    int i = mergedRow.Value<int>("index");
                    JObject values = mergedRow.Value<JObject>("values");
                    string comAttr = values.Value<string>("ComAttr");
                    string Column = values.Value<string>("Column");
                    if (!string.IsNullOrEmpty(Column))
                    {
                        dic[comAttr]= Column;
                    }
                }
                 
            }

        }

        protected void IsoGrid_RowDoubleClick(object sender, GridRowClickEventArgs e)
        {
            PW_IsoInfo iso = null;

            foreach (var item in isoList)
            {
                if (item.ISO_ID == IsoGrid.SelectedRowID)
                {
                    iso = item;
                    break;
                }
            }
            if (PCFPipelineEdit.dic.ContainsKey(IsoGrid.SelectedRowID))
            {
                PCFPipelineEdit.dic[IsoGrid.SelectedRowID]= iso;
            }
            else
            {
                PCFPipelineEdit.dic.Add(IsoGrid.SelectedRowID, iso); 
            }
            hdIds.Text = "";
            PageContext.RegisterStartupScript(Window1.GetSaveStateReference(hdIds.ClientID) +  Window1.GetShowReference(String.Format("PCFPipelineEdit.aspx?ISO_ID={0}", IsoGrid.SelectedRowID, "编辑 - ")));
        }
        protected void JointGrid_RowDoubleClick(object sender, GridRowClickEventArgs e)
        {
            PW_JointInfo iso = null;

            foreach (var item in jointList)
            {
                if (item.JOT_ID == JointGrid.SelectedRowID)
                {
                    iso = item;
                    break;
                }
            }
            if (PCFJointEdit.dic.ContainsKey(JointGrid.SelectedRowID))
            {
                PCFJointEdit.dic[JointGrid.SelectedRowID] = iso;
            }
            else
            {
                PCFJointEdit.dic.Add(JointGrid.SelectedRowID, iso);
            }
            hdIds.Text = "";
            PageContext.RegisterStartupScript(Window2.GetSaveStateReference(hdIds.ClientID) + Window2.GetShowReference(String.Format("PCFJointEdit.aspx?JOT_ID={0}", JointGrid.SelectedRowID, "编辑 - ")));
        }
        protected void Window1_Close(object sender, WindowCloseEventArgs e)
        {
            if (!string.IsNullOrEmpty(hdIds.Text))
            {
                PW_IsoInfo iso = null;

                foreach (var item in isoList)
                {
                    if (item.ISO_ID == hdIds.Text)
                    {
                        iso = item;
                        break;
                    }
                }
                for (int i = 0; i < isoList.Count; i++)
                {
                   
                    isoList[i].TestMediumId = iso.TestMediumId;
                    isoList[i].Is_Standard = iso.Is_Standard;
                    isoList[i].DetectionRateId = iso.DetectionRateId;
                    isoList[i].DetectionTypeId = iso.DetectionTypeId;
                    isoList[i].ISO_NDTClass = iso.ISO_NDTClass;
                    isoList[i].ISO_PTRate = iso.ISO_PTRate;
                    isoList[i].ISO_SysNo = iso.ISO_SysNo;
                    isoList[i].ISO_SubSysNo = iso.ISO_SubSysNo;
                    isoList[i].ISO_CwpNo = iso.ISO_CwpNo;
                    isoList[i].ISO_IsoNumber = iso.ISO_IsoNumber;
                    isoList[i].ISO_Rev = iso.ISO_Rev;
                    isoList[i].ISO_Sheet = iso.ISO_Sheet;
                    isoList[i].ISO_PipeQty = iso.ISO_PipeQty;
                    isoList[i].ISO_Paint = iso.ISO_Paint;
                    isoList[i].ISO_Insulator = iso.ISO_Insulator;
                    isoList[i].MaterialId = iso.MaterialId;
                    isoList[i].ISO_Executive = iso.ISO_Executive;
                    isoList[i].ISO_Specification = iso.ISO_Specification;
                    isoList[i].ISO_Modifier = iso.ISO_Modifier;
                    isoList[i].ISO_ModifyDate = iso.ISO_ModifyDate;
                    isoList[i].ISO_Creator = iso.ISO_Creator;
                    isoList[i].ISO_CreateDate = iso.ISO_CreateDate;
                    isoList[i].ISO_DesignPress = iso.ISO_DesignPress;
                    isoList[i].ISO_DesignTemperature = iso.ISO_DesignTemperature;
                    isoList[i].ISO_TestPress = iso.ISO_TestPress;
                    isoList[i].ISO_PTClass = iso.ISO_PTClass;
                    isoList[i].ISO_IfPickling = iso.ISO_IfPickling;
                    isoList[i].ISO_IfChasing = iso.ISO_IfChasing;
                    isoList[i].PipingClassId = iso.PipingClassId;
                    isoList[i].UnitId = iso.UnitId;
                    isoList[i].WorkAreaId = iso.WorkAreaId;
                    isoList[i].ISO_Remark = iso.ISO_Remark; 
                }
            }
            this.BindIsoGrid();
        }
        protected void Window2_Close(object sender, WindowCloseEventArgs e)
        {
            if (!string.IsNullOrEmpty(hdIds.Text))
            {
                PW_JointInfo iso = null;

                foreach (var item in jointList)
                {
                    if (item.JOT_ID == hdIds.Text)
                    {
                        iso = item;
                        break;
                    }
                }
                for (int i = 0; i < jointList.Count; i++)
                {

                    jointList[i].ProjectId = iso.ProjectId;
                    //jointList[i].JOT_JointNo = iso.JOT_JointNo;
                    jointList[i].WallBoard = iso.WallBoard;
                    jointList[i].DetectionTypeId = iso.DetectionTypeId;
                    jointList[i].DetectionRateId = iso.DetectionRateId;
                    jointList[i].MaterialId = iso.MaterialId;
                    jointList[i].MaterialId2 = iso.MaterialId2;
                    jointList[i].WLO_Code = iso.WLO_Code;
                    jointList[i].JOT_Component1 = iso.JOT_Component1;
                    jointList[i].JOT_Component2 = iso.JOT_Component2;
                    jointList[i].JOT_HeartNo1 = iso.JOT_HeartNo1;
                    jointList[i].JOT_HeartNo2 = iso.JOT_HeartNo2;
                    jointList[i].JOT_WeldMat = iso.JOT_WeldMat;
                    jointList[i].JOT_Dia = iso.JOT_Dia;
                    jointList[i].JOT_Size = iso.JOT_Size;
                    jointList[i].JOT_Sch = iso.JOT_Sch;
                    jointList[i].Extend_Length = iso.Extend_Length;
                    jointList[i].JOT_FactSch = iso.JOT_FactSch;
                    jointList[i].JOT_JointDesc = iso.JOT_JointDesc;
                    jointList[i].JOT_WeldSilk = iso.JOT_WeldSilk;
                    jointList[i].JOTY_ID = iso.JOTY_ID;
                    jointList[i].JOT_RepairFlag = iso.JOT_RepairFlag;
                    jointList[i].WME_ID = iso.WME_ID;
                    jointList[i].JST_ID = iso.JST_ID;
                    jointList[i].JOT_PrepareTemp = iso.JOT_PrepareTemp;
                    jointList[i].JOT_CellTemp = iso.JOT_CellTemp;
                    jointList[i].JOT_LastTemp = iso.JOT_LastTemp;
                    jointList[i].JOT_JointAttribute = iso.JOT_JointAttribute;
                    jointList[i].IS_Proess = iso.IS_Proess;
                    jointList[i].JOT_Remark = iso.JOT_Remark;
                    jointList[i].WeldingGasProtection = iso.WeldingGasProtection;
                    jointList[i].WeldingSpeed = iso.WeldingSpeed;
                    jointList[i].JOT_Electricity = iso.JOT_Electricity;
                    jointList[i].JOT_Voltage = iso.JOT_Voltage;
                    jointList[i].ComponentNum = iso.ComponentNum;
                    jointList[i].JOT_JointStatus = iso.JOT_JointStatus;
                     
                }
            }
            this.BindJointGrid();
        }


        public static string ConvertUnitName(object unitId)
        {
            if (unitId != null)
            {
                var unit = (from x in Funs.DB.Base_Unit where x.UnitId == unitId.ToString() select x).FirstOrDefault();
                if (unit != null)
                {
                    return unit.UnitName;
                }
            }
            return null;
        }
        public static string ConvertDetectionRate(object detectionRateId)
        {
            if (detectionRateId != null)
            {
                var detectionRate =  Funs.DB.Base_DetectionRate.FirstOrDefault(x=> x.DetectionRateId == detectionRateId.ToString() );
                if (detectionRate != null)
                {
                    return detectionRate.DetectionRateValue;
                }
            }
            return null;
        }
        public static string ConvertMediumName(object testMediumId)
        {
            if (testMediumId != null)
            {
                var testMedium = Funs.DB.Base_TestMedium.FirstOrDefault(x => x.TestMediumId == testMediumId.ToString());
                if (testMedium != null)
                {
                    return testMedium.MediumName;
                }
            }
            return null;
        }
        public static string ConvertDetectionType(object detectionTypeId)
        {
            if (detectionTypeId != null)
            {
                var detectionType = Funs.DB.Base_DetectionType.FirstOrDefault(x => x.DetectionTypeId == detectionTypeId.ToString());
                if (detectionType != null)
                {
                    return detectionType.DetectionTypeName;
                }
            }
            return null;
        }
        public static string ConvertPipingClass(object pipingClassId)
        {
            if (pipingClassId != null)
            {
                var pipingClass = Funs.DB.Base_PipingClass.FirstOrDefault(x => x.PipingClassId == pipingClassId.ToString());
                if (pipingClass != null)
                {
                    return pipingClass.PipingClassName;
                }
            }
            return null;
        }
        public static string ConvertMaterialType(object materialId)
        {
            if (materialId != null)
            {
                var pipingClass = Funs.DB.Base_Material.FirstOrDefault(x => x.MaterialId == materialId.ToString());
                if (pipingClass != null)
                {
                    return pipingClass.MaterialCode;
                }
            }
            return null;
        }
        public static string ConvertWorkArea(object workAreaId)
        {
            if (workAreaId != null)
            {
                var workArea = Funs.DB.ProjectData_WorkArea.FirstOrDefault(x => x.WorkAreaId == workAreaId.ToString());
                if (workArea != null)
                {
                    return workArea.WorkAreaName;
                }
            }
            return null;
        }
        public static string ConvertComponent(object component)
        {
            if (component != null)
            {
                var Components = Funs.DB.Base_Components.FirstOrDefault(x =>  x.ComponentsId  == component.ToString());
                if (Components != null)
                {
                    return Components.ComponentsName;
                }
            }
            return null;
        }
         public static string ConvertWeldingMethod(object weldingMethodId)
        {
            if (weldingMethodId != null)
            {
                var WeldingMethod = Funs.DB.Base_WeldingMethod.FirstOrDefault(x => x.WeldingMethodId == weldingMethodId.ToString());
                if (WeldingMethod != null)
                {
                    return WeldingMethod.WeldingMethodName;
                }
            }
            return null;
        }
        public static string ConvertWeldSilk(object weldingMethodId)
        {
            if (weldingMethodId != null)
            {
                var WeldingMethod = Funs.DB.Base_Consumables.FirstOrDefault(x => x.ConsumablesId == weldingMethodId.ToString());
                if (WeldingMethod != null)
                {
                    return WeldingMethod.ConsumablesCode;
                }
            }
            return null;
        }
        public static string ConvertWeldMat(object weldingMethodId)
        {
            if (weldingMethodId != null)
            {
                var WeldingMethod = Funs.DB.Base_Consumables.FirstOrDefault(x => x.ConsumablesId == weldingMethodId.ToString());
                if (WeldingMethod != null)
                {
                    return WeldingMethod.ConsumablesCode;
                }
            }
            return null;
        }
        

        public static string ConvertWeldType(object weldTypeId)
        {
            if (weldTypeId != null)
            {
                var WeldType = Funs.DB.Base_WeldType.FirstOrDefault(x => x.WeldTypeId == weldTypeId.ToString());
                if (WeldType != null)
                {
                    return WeldType.WeldTypeName;
                }
            }
            return null;
        }
        public static string ConvertGrooveType(object grooveTypeId)
        {
            if (grooveTypeId != null)
            {
                var GrooveType = Funs.DB.Base_GrooveType.FirstOrDefault(x => x.GrooveTypeId == grooveTypeId.ToString());
                if (GrooveType != null)
                {
                    return GrooveType.GrooveTypeName;
                }
            }
            return null;
        }
        public static string ConvertIsStandard(object isStandard)
        {
            if (isStandard != null)
            {
                if (isStandard.ToString().ToLower() == "true")
                {
                    return "是";
                }
            }
            return "否";
        }

        protected void btnImport_Click(object sender, EventArgs e)
        {
            if (isoList.Count() > 0)
            {
                Funs.DB.PW_IsoInfo.InsertAllOnSubmit(isoList);
            }
            if (jointList.Count() > 0)
            {
                Funs.DB.PW_JointInfo.InsertAllOnSubmit(jointList);
            }
            Funs.DB.SubmitChanges();
            isoList.Clear();
            jointList.Clear();
            BindIsoGrid();
            BindJointGrid();
            Alert.ShowInTop("导入成功!", MessageBoxIcon.Success);

        }
    }
}