using Model;
using System.Collections.Generic;
using System.Linq;
namespace BLL
{
    public partial class Pipeline_WeldingDailyService
    {
        /// 
        ///获取焊接日报信息
        /// 
        /// 
        public static Model.Pipeline_WeldingDaily GetPipeline_WeldingDailyByWeldingDailyId(string WeldingDailyId)
        {
            return Funs.DB.Pipeline_WeldingDaily.FirstOrDefault(e => e.WeldingDailyId == WeldingDailyId);
        }
        /// 
        /// 根据焊接日报主键获取焊接日报信息
        /// 
        /// 焊接日报编号
        /// 焊接日报信息
        public static bool IsExistWeldingDailyCode(string weldingDailyCode, string weldingDailyId, string projectId)
        {
            var q = Funs.DB.Pipeline_WeldingDaily.FirstOrDefault(x => x.WeldingDailyCode == weldingDailyCode && x.ProjectId == projectId && x.WeldingDailyId != weldingDailyId);
            if (q != null)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        /// 
        /// 根据焊接日报Id获取焊接日报明细信息
        /// 
        /// 
        /// 
        public static List GetWeldingDailyItem(string weldingDailyId)
        {
            List returnViewMatch = new List();
            var weldlineLists = from x in Funs.DB.View_Pipeline_WeldJoint
                                where x.WeldingDailyId == weldingDailyId
                                select x;
            if (weldlineLists.Count() > 0)
            {
                foreach (var item in weldlineLists)
                {
                    Model.SpWeldingDailyItem newWeldReportItem = new Model.SpWeldingDailyItem();
                    newWeldReportItem.WeldJointId = item.WeldJointId;
                    newWeldReportItem.WeldJointCode = item.WeldJointCode;
                    newWeldReportItem.ConvertWeldJoint = item.ConvertWeldJoint;
                    newWeldReportItem.PipelineCode = item.PipelineCode;
                    newWeldReportItem.CoverWelderCode = item.CoverWelderCode;
                    newWeldReportItem.CoverWelderId = item.CoverWelderId;
                    newWeldReportItem.BackingWelderCode = item.BackingWelderCode;
                    newWeldReportItem.BackingWelderId = item.BackingWelderId;
                    newWeldReportItem.WeldTypeId = item.WeldTypeCode;
                    newWeldReportItem.JointArea = item.JointArea;
                    newWeldReportItem.WeldingLocationId = item.WeldingLocationId;
                    newWeldReportItem.WeldingLocationCode = item.WeldingLocationCode;
                    newWeldReportItem.JointAttribute = item.JointAttribute;
                    newWeldReportItem.DoneDin = item.DoneDin;
                    newWeldReportItem.Dia = item.Dia;
                    newWeldReportItem.Thickness = item.Thickness;
                    newWeldReportItem.Specification = item.Specification;
                    //newWeldReportItem.WeldingMethodCode = item.WeldingMethodCode;
                    newWeldReportItem.HeartNo1 = item.HeartNo1;
                    newWeldReportItem.HeartNo2 = item.HeartNo2;
                    newWeldReportItem.Components1Code = item.ComponentsCode1;
                    newWeldReportItem.Components2Code = item.ComponentsCode2;
                    newWeldReportItem.Material1Code = item.Material1Code;
                    newWeldReportItem.Material2Code = item.Material2Code;
                    //if (!string.IsNullOrEmpty(item.WeldSilkId))
                    //{
                    //    newWeldReportItem.WeldSilkCode = GetWeldSilkCode(item.WeldSilkId);
                    //}
                    //newWeldReportItem.WeldSilkCode = item.WeldSilkCode;
                    //newWeldReportItem.WeldMatCode = item.WeldMatCode;
                    newWeldReportItem.PipeSegment = item.PipeSegment;
                    newWeldReportItem.WPQCode = item.WPQCode;
                    newWeldReportItem.ANSISCH = item.ANSISCH;
                    returnViewMatch.Add(newWeldReportItem);
                }
            }
            return returnViewMatch;
        }
        /// 
        /// 查找后返回集合增加到列表集团中
        /// 
        /// 
        /// 
        public static List GetWeldReportAddItem(string hdItemsString)
        {
            List returnViewMatch = new List(); //= getWeldReportItem;
            if (!string.IsNullOrEmpty(hdItemsString))
            {
                List list = Funs.GetStrListByStr(hdItemsString, '#');
                if (list.Count() == 2)
                {
                    string CoverWelderCode = string.Empty;  //盖面焊工号
                    string BackingWelderCode = string.Empty;   //打底焊工号
                    string welderLists = list[0];
                    List welderIds = Funs.GetStrListByStr(welderLists, '|');
                    if (welderIds.Count() == 2)
                    {
                        var welderCell = BLL.WelderService.GetWelderById(welderIds[0]);
                        if (welderCell != null)
                        {
                            CoverWelderCode = welderCell.WelderCode;
                        }
                        var welderFloor = BLL.WelderService.GetWelderById(welderIds[1]);
                        if (welderFloor != null)
                        {
                            BackingWelderCode = welderFloor.WelderCode;
                        }
                    }
                    string weldlineIdLists = list[1];
                    List weldlineIds = Funs.GetStrListByStr(weldlineIdLists, '|');
                    foreach (var weldlineItem in weldlineIds)
                    {
                        //if (returnViewMatch.FirstOrDefault(x => x.JOT_ID == jotItem) == null)
                        //{
                        var weldline = BLL.Pipeline_WeldJointService.GetViewWeldJointById(weldlineItem);
                        if (weldline != null)
                        {
                            Model.SpWeldingDailyItem newWeldReportItem = new Model.SpWeldingDailyItem();
                            newWeldReportItem.WeldJointId = weldline.WeldJointId;
                            newWeldReportItem.WeldJointCode = weldline.WeldJointCode;
                            newWeldReportItem.PipelineCode = weldline.PipelineCode;
                            newWeldReportItem.CoverWelderCode = CoverWelderCode;
                            newWeldReportItem.CoverWelderId = welderIds[0];
                            newWeldReportItem.BackingWelderCode = BackingWelderCode;
                            newWeldReportItem.BackingWelderId = welderIds[1];
                            newWeldReportItem.WeldTypeId = weldline.WeldTypeCode;
                            newWeldReportItem.JointArea = weldline.JointArea;
                            newWeldReportItem.WeldingLocationId = weldline.WeldingLocationId;
                            newWeldReportItem.WeldingLocationCode = weldline.WeldingLocationCode;
                            newWeldReportItem.JointAttribute = weldline.JointAttribute;
                            newWeldReportItem.HeartNo1 = weldline.HeartNo1;
                            newWeldReportItem.HeartNo2 = weldline.HeartNo2;
                            newWeldReportItem.Components1Code = weldline.ComponentsCode1;
                            newWeldReportItem.Components2Code = weldline.ComponentsCode2;
                            newWeldReportItem.Material1Code = weldline.Material1Code;
                            newWeldReportItem.Material2Code = weldline.Material2Code;
                            //if (!string.IsNullOrEmpty(weldline.WeldSilkId))
                            //{
                            //    newWeldReportItem.WeldSilkCode = GetWeldSilkCode(weldline.WeldSilkId);
                            //}
                           
                            //newWeldReportItem.WeldMatCode = weldline.WeldMatCode;
                            if (weldline.DoneDin == null)
                            {
                                newWeldReportItem.DoneDin = weldline.Size;
                            }
                            else
                            {
                                newWeldReportItem.DoneDin = weldline.DoneDin;
                            }
                            newWeldReportItem.Dia = weldline.Dia;
                            newWeldReportItem.Thickness = weldline.Thickness;
                            newWeldReportItem.Specification = weldline.Specification;
                            //newWeldReportItem.WeldingMethodCode = weldline.WeldingMethodCode;
                            newWeldReportItem.PipeSegment = weldline.PipeSegment;
                            newWeldReportItem.WPQCode = weldline.WPQCode;
                            newWeldReportItem.ANSISCH = weldline.ANSISCH;
                            // 如存在日报,默认还是原日报焊工
                            if (!string.IsNullOrEmpty(weldline.WeldingDailyId))
                            {
                                newWeldReportItem.CoverWelderId = weldline.CoverWelderId;
                                newWeldReportItem.BackingWelderId = weldline.BackingWelderId;
                                var welderCover = BLL.WelderService.GetWelderById(weldline.CoverWelderId);
                                if (welderCover != null)
                                {
                                    newWeldReportItem.CoverWelderCode = welderCover.WelderCode;
                                }
                                var welderBacking = BLL.WelderService.GetWelderById(weldline.BackingWelderId);
                                if (welderBacking != null)
                                {
                                    newWeldReportItem.BackingWelderCode = welderBacking.WelderCode;
                                }
                            }
                            returnViewMatch.Add(newWeldReportItem);
                        }
                    }
                }
            }
            return returnViewMatch;
        }
        /// 
        /// 获取未焊接焊口信息,不用
        /// 
        /// 
        /// 
        public static List GetWeldReportItemFind(string projectId, string weldingDailyId, string pipelineId)
        {
            List returnViewMatch = new List();
            // 组批条件的字段不能为空
            //var jotLists = from x in Funs.DB.HJGL_PW_JointInfo
            //               join y in Funs.DB.HJGL_PW_IsoInfo on x.ISO_ID equals y.ISO_ID
            //               where x.InstallationId != null && x.JOTY_ID != null && x.NDTR_ID != null && x.IsSpecial != null
            //                  && y.ISC_ID != null && y.SER_ID != null && y.STE_ID != null && y.ISO_Executive != null
            //                  && x.ProjectId == projectId && x.ISO_ID == pipelineId
            //                  && (x.DReportID == null || x.DReportID == weldingDailyId)
            //               select x;
            // 预提交焊口
            var preJotId = (from x in Funs.DB.Pipeline_PreWeldingDaily
                            join y in Funs.DB.Pipeline_WeldJoint on x.WeldJointId equals y.WeldJointId
                            where x.ProjectId == projectId && y.PipelineId == pipelineId
                            select x.WeldJointId).Distinct();
            var weldlineLists = from x in Funs.DB.Pipeline_WeldJoint
                                join y in Funs.DB.Base_WeldingMethod on x.WeldingMethodId equals y.WeldingMethodId
                                where x.PipelineId == pipelineId &&
                                      (x.WeldingDailyId == null || x.WeldingDailyId == weldingDailyId)
                                       && (x.IsCancel == null || x.IsCancel == false)
                                select new
                                {
                                    x.WeldJointId,
                                    x.WeldJointCode,
                                    x.Dia,
                                    x.Thickness,
                                    y.WeldingMethodCode
                                };
            if (weldlineLists.Count() > 0)
            {
                foreach (var item in weldlineLists)
                {
                    if (!preJotId.Contains(item.WeldJointId))
                    {
                        Model.SpWeldingDailyItem newWeldReportItem = new Model.SpWeldingDailyItem();
                        newWeldReportItem.WeldJointId = item.WeldJointId;
                        newWeldReportItem.WeldJointCode = item.WeldJointCode;
                        newWeldReportItem.Dia = item.Dia;
                        newWeldReportItem.Thickness = item.Thickness;
                        newWeldReportItem.WeldingMethodCode = item.WeldingMethodCode;
                        returnViewMatch.Add(newWeldReportItem);
                    }
                }
            }
            return returnViewMatch;
        }
        /// 
        /// 增加焊接日报信息
        /// 
        /// 
        public static void AddPipeline_WeldingDaily(Model.Pipeline_WeldingDaily WeldingDaily)
        {
            Model.HJGLDB db = Funs.DB;
            Model.Pipeline_WeldingDaily newWeldingDaily = new Pipeline_WeldingDaily
            {
                WeldingDailyId = WeldingDaily.WeldingDailyId,
                WeldingDailyCode = WeldingDaily.WeldingDailyCode,
                ProjectId = WeldingDaily.ProjectId,
                InstallationId = WeldingDaily.InstallationId,
                UnitId = WeldingDaily.UnitId,
                WeldingDate = WeldingDaily.WeldingDate,
                Tabler = WeldingDaily.Tabler,
                TableDate = WeldingDaily.TableDate,
                Remark = WeldingDaily.Remark,
            };
            db.Pipeline_WeldingDaily.InsertOnSubmit(newWeldingDaily);
            db.SubmitChanges();
        }
        /// 
        /// 修改焊接日报信息 
        /// 
        /// 
        public static void UpdatePipeline_WeldingDaily(Model.Pipeline_WeldingDaily WeldingDaily)
        {
            Model.HJGLDB db = Funs.DB;
            Model.Pipeline_WeldingDaily newWeldingDaily = db.Pipeline_WeldingDaily.FirstOrDefault(e => e.WeldingDailyId == WeldingDaily.WeldingDailyId);
            if (newWeldingDaily != null)
            {
                newWeldingDaily.WeldingDailyCode = WeldingDaily.WeldingDailyCode;
                newWeldingDaily.InstallationId = WeldingDaily.InstallationId;
                newWeldingDaily.UnitId = WeldingDaily.UnitId;
                newWeldingDaily.WeldingDate = WeldingDaily.WeldingDate;
                newWeldingDaily.Tabler = WeldingDaily.Tabler;
                newWeldingDaily.TableDate = WeldingDaily.TableDate;
                newWeldingDaily.Remark = WeldingDaily.Remark;
                db.SubmitChanges();
            }
        }
        /// 
        /// 根据焊接日报Id删除一个焊接日报信息
        /// 
        /// 
        public static void DeleteWeldingDailyByWeldingDailyId(string WeldingDailyId)
        {
            Model.HJGLDB db = Funs.DB;
            Model.Pipeline_WeldingDaily delWeldingDaily = db.Pipeline_WeldingDaily.FirstOrDefault(e => e.WeldingDailyId == WeldingDailyId);
            if (delWeldingDaily != null)
            {
                db.Pipeline_WeldingDaily.DeleteOnSubmit(delWeldingDaily);
                db.SubmitChanges();
            }
        }
        /// 
        /// 按类型获取焊接日报项
        /// 
        /// 
        /// 
        public static List GetPipeline_WeldingDailyList(string unitId)
        {
            var list = (from x in Funs.DB.Pipeline_WeldingDaily
                        where x.UnitId == unitId
                        orderby x.WeldingDailyCode
                        select x).ToList();
            return list;
        }
        // 获取焊丝名称
        public static string GetWeldSilkCode(string weldSilkId)
        {
            string weldSilkCode = string.Empty;
            if (!string.IsNullOrEmpty(weldSilkId))
            {
                string[] weldSilkIds = weldSilkId.Split(',');
                if (weldSilkIds.Count() > 0)
                {
                    foreach (string s in weldSilkIds)
                    {
                        var silk = BLL.Base_ConsumablesService.GetConsumablesByConsumablesId(s);
                        weldSilkCode = weldSilkCode + silk.ConsumablesCode + ',';
                    }
                    if (weldSilkCode.Length > 0)
                    {
                        weldSilkCode = weldSilkCode.Substring(0, weldSilkCode.Length - 1);
                    }
                }
            }
            return weldSilkCode;
        }
        #region 焊接日报下拉项
        /// 
        /// 焊接日报下拉项
        /// 
        /// 下拉框名称
        /// 是否显示请选择
        /// 耗材类型
        public static void InitWeldingDailyDropDownList(FineUIPro.DropDownList dropName, bool isShowPlease, string unitId)
        {
            dropName.DataValueField = "WeldingDailyId";
            dropName.DataTextField = "WeldingDailyCode";
            dropName.DataSource = GetPipeline_WeldingDailyList(unitId);
            dropName.DataBind();
            if (isShowPlease)
            {
                Funs.FineUIPleaseSelect(dropName);
            }
        }
        #endregion
    }
}