using Model;
using System.Collections.Generic;
using System.Linq;
namespace BLL
{
    public partial class WeldingDailyService
    {
        /// 
        ///获取焊接日报信息
        /// 
        /// 
        public static Model.HJGL_WeldingDaily GetPipeline_WeldingDailyByWeldingDailyId(string WeldingDailyId)
        {
            return Funs.DB.HJGL_WeldingDaily.FirstOrDefault(e => e.WeldingDailyId == WeldingDailyId);
        }
        /// 
        /// 根据焊接日报主键获取焊接日报信息
        /// 
        /// 焊接日报编号
        /// 焊接日报信息
        public static bool IsExistWeldingDailyCode(string weldingDailyCode, string weldingDailyId, string projectId)
        {
            var q = Funs.DB.HJGL_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_HJGL_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.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.Size = item.Size;
                    newWeldReportItem.Dia = item.Dia;
                    newWeldReportItem.Thickness = item.Thickness;
                    newWeldReportItem.WeldingMethodCode = item.WeldingMethodCode;
                    newWeldReportItem.WeldingWireCode = item.WeldingWireCode;
                    newWeldReportItem.WeldingRodCode = item.WeldingRodCode;
                    returnViewMatch.Add(newWeldReportItem);
                }
            }
            return returnViewMatch;
        }
        /// 
        /// 查找后返回集合增加到列表集团中
        /// 
        /// 
        /// 
        public static List GetWeldReportAddItem(string hdString)
        {
            List returnViewMatch = new List(); //= getWeldReportItem;
            if (!string.IsNullOrEmpty(hdString))
            {
                List totallist = Funs.GetStrListByStr(hdString, '@');
                foreach (var hdItemsString in totallist)
                {
                    List list = Funs.GetStrListByStr(hdItemsString, '#');
                    if (list.Count() == 4)
                    {
                        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.WED_Code;
                            }
                            var welderFloor = BLL.WelderService.GetWelderById(welderIds[1]);
                            if (welderFloor != null)
                            {
                                BackingWelderCode = welderFloor.WED_Code;
                            }
                        }
                        string weldingLocationCode = string.Empty;
                        string weldingLocationId = list[1];
                        var loc = BLL.Base_WeldingLocationServie.GetWeldingLocationById(weldingLocationId);
                        if (loc != null)
                        {
                            weldingLocationCode = loc.WeldingLocationCode;
                        }
                        string jointAttribute = list[2];
                        string weldlineIdLists = list[3];
                        List weldlineIds = Funs.GetStrListByStr(weldlineIdLists, '|');
                        foreach (var weldlineItem in weldlineIds)
                        {
                            //if (returnViewMatch.FirstOrDefault(x => x.JOT_ID == jotItem) == null)
                            //{
                            var jot = Funs.DB.View_HJGL_WeldJoint.FirstOrDefault(e => e.WeldJointId == weldlineItem);
                            //var weldline = BLL.Pipeline_WeldJointService.GetViewWeldJointById(weldlineItem);
                            if (jot != null)
                            {
                                Model.SpWeldingDailyItem newWeldReportItem = new Model.SpWeldingDailyItem();
                                newWeldReportItem.WeldJointId = jot.WeldJointId;
                                newWeldReportItem.WeldJointCode = jot.WeldJointCode;
                                newWeldReportItem.PipelineCode = jot.PipelineCode;
                                newWeldReportItem.CoverWelderCode = CoverWelderCode;
                                newWeldReportItem.CoverWelderId = welderIds[0];
                                newWeldReportItem.BackingWelderCode = BackingWelderCode;
                                newWeldReportItem.BackingWelderId = welderIds[1];
                                newWeldReportItem.WeldTypeCode = jot.WeldTypeCode;
                                newWeldReportItem.JointArea = jot.JointArea;
                                newWeldReportItem.WeldingLocationId = weldingLocationId;
                                newWeldReportItem.WeldingLocationCode = weldingLocationCode;
                                newWeldReportItem.JointAttribute = jointAttribute;
                                newWeldReportItem.Size = jot.Size;
                                newWeldReportItem.Dia = jot.Dia;
                                newWeldReportItem.Thickness = jot.Thickness;
                                newWeldReportItem.WeldingMethodCode = jot.WeldingMethodCode;
                                // 如存在日报,默认还是原日报焊工
                                if (!string.IsNullOrEmpty(jot.WeldingDailyId))
                                {
                                    newWeldReportItem.CoverWelderId = jot.CoverWelderId;
                                    newWeldReportItem.BackingWelderId = jot.BackingWelderId;
                                    var welderCover = BLL.WelderService.GetWelderById(jot.CoverWelderId);
                                    if (welderCover != null)
                                    {
                                        newWeldReportItem.CoverWelderCode = welderCover.WED_Code;
                                    }
                                    var welderBacking = BLL.WelderService.GetWelderById(jot.BackingWelderId);
                                    if (welderBacking != null)
                                    {
                                        newWeldReportItem.BackingWelderCode = welderBacking.WED_Code;
                                    }
                                    newWeldReportItem.JointAttribute = jot.JointAttribute;
                                    newWeldReportItem.WeldingLocationId = jot.WeldingLocationId;
                                    var location = BLL.Base_WeldingLocationServie.GetWeldingLocationById(jot.WeldingLocationId);
                                    if (location != null)
                                    {
                                        newWeldReportItem.WeldingLocationCode = location.WeldingLocationCode;
                                    }
                                }
                                returnViewMatch.Add(newWeldReportItem);
                            }
                        }
                    }
                }
            }
            return returnViewMatch;
        }
        /// 
        /// 获取未焊接焊口信息
        /// 
        /// 
        /// 
        public static List GetWeldReportItemFind(string weldingDailyId, string pipelineId)
        {
            List returnViewMatch = new List();
            var weldlineLists = from x in Funs.DB.View_HJGL_NoWeldJointFind
                                where x.PipelineId == pipelineId &&
                                      (x.WeldingDailyId == null || 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.Dia = item.Dia;
                    newWeldReportItem.Thickness = item.Thickness;
                    newWeldReportItem.WeldingMethodCode = item.WeldingMethodCode;
                    newWeldReportItem.WeldTypeCode = item.WeldTypeCode;
                    returnViewMatch.Add(newWeldReportItem);
                }
            }
            return returnViewMatch;
        }
        /// 
        /// 增加焊接日报信息
        /// 
        /// 
        public static void AddWeldingDaily(Model.HJGL_WeldingDaily WeldingDaily)
        {
            Model.CNPCDB db = Funs.DB;
            Model.HJGL_WeldingDaily newWeldingDaily = new HJGL_WeldingDaily
            {
                WeldingDailyId = WeldingDaily.WeldingDailyId,
                WeldingDailyCode = WeldingDaily.WeldingDailyCode,
                ProjectId = WeldingDaily.ProjectId,
                UnitId = WeldingDaily.UnitId,
                UnitWorkId = WeldingDaily.UnitWorkId,
                WeldingDate = WeldingDaily.WeldingDate,
                Tabler = WeldingDaily.Tabler,
                TableDate = WeldingDaily.TableDate,
                Remark = WeldingDaily.Remark,
            };
            db.HJGL_WeldingDaily.InsertOnSubmit(newWeldingDaily);
            db.SubmitChanges();
        }
        /// 
        /// 修改焊接日报信息 
        /// 
        /// 
        public static void UpdateWeldingDaily(Model.HJGL_WeldingDaily WeldingDaily)
        {
            Model.CNPCDB db = Funs.DB;
            Model.HJGL_WeldingDaily newWeldingDaily = db.HJGL_WeldingDaily.FirstOrDefault(e => e.WeldingDailyId == WeldingDaily.WeldingDailyId);
            if (newWeldingDaily != null)
            {
                newWeldingDaily.WeldingDailyCode = WeldingDaily.WeldingDailyCode;
                newWeldingDaily.UnitId = WeldingDaily.UnitId;
                newWeldingDaily.UnitWorkId = WeldingDaily.UnitWorkId;
                newWeldingDaily.WeldingDate = WeldingDaily.WeldingDate;
                newWeldingDaily.Tabler = WeldingDaily.Tabler;
                newWeldingDaily.TableDate = WeldingDaily.TableDate;
                newWeldingDaily.Remark = WeldingDaily.Remark;
                db.SubmitChanges();
            }
        }
        /// 
        /// 根据焊接日报Id删除一个焊接日报信息
        /// 
        /// 
        public static void DeleteWeldingDaily(string WeldingDailyId)
        {
            Model.CNPCDB db = Funs.DB;
            Model.HJGL_WeldingDaily delWeldingDaily = db.HJGL_WeldingDaily.FirstOrDefault(e => e.WeldingDailyId == WeldingDailyId);
            if (delWeldingDaily != null)
            {
                db.HJGL_WeldingDaily.DeleteOnSubmit(delWeldingDaily);
                db.SubmitChanges();
            }
        }
        /// 
        /// 按类型获取焊接日报项
        /// 
        /// 
        /// 
        public static List GetPipeline_WeldingDailyList(string unitId)
        {
            var list = (from x in Funs.DB.HJGL_WeldingDaily
                        where x.UnitId == unitId
                        orderby x.WeldingDailyCode
                        select x).ToList();
            return list;
        }
        #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
    }
}