using System; using System.Collections; using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.Linq; using System.Data.Linq; using System.Web.Security; using System.Web.UI.WebControls; using Model; using BLL; using System.Collections.Generic; namespace BLL { public class WbsSetService { /// /// 增加分部/子分部/分项/子分项 /// /// 分部/子分部/分项/子分项 public static void AddWbsSet(Model.Wbs_WbsSet wbsSet) { Model.SGGLDB db = Funs.DB; Model.Wbs_WbsSet newWS = new Model.Wbs_WbsSet(); newWS.WbsSetId = wbsSet.WbsSetId; newWS.WbsSetName = wbsSet.WbsSetName; newWS.WbsSetCode = wbsSet.WbsSetCode; newWS.SuperWbsSetId = wbsSet.SuperWbsSetId; newWS.ProjectId = wbsSet.ProjectId; newWS.InstallationId = wbsSet.InstallationId; newWS.CnProfessionId = wbsSet.CnProfessionId; newWS.UnitProjectId = wbsSet.UnitProjectId; newWS.StartDate = wbsSet.StartDate; newWS.EndDate = wbsSet.EndDate; newWS.IsChild = wbsSet.IsChild; newWS.ControlItemDef = wbsSet.ControlItemDef; newWS.ControlPoint = wbsSet.ControlPoint; newWS.Cycle = wbsSet.Cycle; newWS.Frequency = wbsSet.Frequency; newWS.Weights = wbsSet.Weights; newWS.Flag = wbsSet.Flag; newWS.Way = wbsSet.Way; newWS.Remark = wbsSet.Remark; newWS.IsIn = wbsSet.IsIn; newWS.IsSelected = wbsSet.IsSelected; newWS.IsApprove = wbsSet.IsApprove; newWS.EngineerQuantity = wbsSet.EngineerQuantity; newWS.BudgetUnitPrice = wbsSet.BudgetUnitPrice; newWS.CostUnivalent = wbsSet.CostUnivalent; newWS.Unit = wbsSet.Unit; db.Wbs_WbsSet.InsertOnSubmit(newWS); db.SubmitChanges(); } /// /// 修改分部/子分部/分项/子分项 /// /// 分部/子分部/分项/子分项 public static void UpdateWbsSet(Model.Wbs_WbsSet wbsSet) { Model.SGGLDB db = Funs.DB; Model.Wbs_WbsSet newWS = db.Wbs_WbsSet.First(e => e.WbsSetId == wbsSet.WbsSetId); newWS.WbsSetName = wbsSet.WbsSetName; newWS.WbsSetCode = wbsSet.WbsSetCode; newWS.StartDate = wbsSet.StartDate; newWS.EndDate = wbsSet.EndDate; newWS.Weights = wbsSet.Weights; newWS.WeightsMoney = wbsSet.WeightsMoney; newWS.Flag = wbsSet.Flag; newWS.Way = wbsSet.Way; newWS.ControlItemDef = wbsSet.ControlItemDef; newWS.ControlPoint = wbsSet.ControlPoint; newWS.Cycle = wbsSet.Cycle; newWS.Frequency = wbsSet.Frequency; newWS.Remark = wbsSet.Remark; newWS.IsSelected = wbsSet.IsSelected; newWS.IsApprove = wbsSet.IsApprove; newWS.IsWeightsApprove = wbsSet.IsWeightsApprove; newWS.IsPlanApprove = wbsSet.IsPlanApprove; newWS.VersionNum = wbsSet.VersionNum; newWS.LastCheckDate = wbsSet.LastCheckDate; newWS.CheckDate = wbsSet.CheckDate; newWS.CheckNum = wbsSet.CheckNum; newWS.HandleType = wbsSet.HandleType; newWS.IsENEnd = wbsSet.IsENEnd; newWS.SortIndex = wbsSet.SortIndex; newWS.NoShow = wbsSet.NoShow; newWS.EngineerQuantity = wbsSet.EngineerQuantity; newWS.BudgetUnitPrice = wbsSet.BudgetUnitPrice; newWS.CostUnivalent = wbsSet.CostUnivalent; newWS.Unit = wbsSet.Unit; db.SubmitChanges(); } /// /// 修改分部/子分部/分项/子分项 /// /// 分部/子分部/分项/子分项 public static void UpdateWbsSetIsPlanApprove(Model.Wbs_WbsSet wbsSet, bool isPlanApprove) { Model.SGGLDB db = Funs.DB; Model.Wbs_WbsSet newWS = db.Wbs_WbsSet.First(e => e.WbsSetId == wbsSet.WbsSetId); newWS.IsPlanApprove = wbsSet.IsPlanApprove; db.SubmitChanges(); } /// /// 根据Id删除分部/子分部/分项/子分项信息 /// /// public static void DeleteWbsSet(string wbsSetId) { Model.SGGLDB db = Funs.DB; Model.Wbs_WbsSet WS = db.Wbs_WbsSet.First(e => e.WbsSetId == wbsSetId); db.Wbs_WbsSet.DeleteOnSubmit(WS); db.SubmitChanges(); } /// /// 根据单位工程Id删除所有分部/子分部/分项/子分项信息 /// /// public static void DeleteWbsSetByUnitProjectId(string unitProjectId) { Model.SGGLDB db = Funs.DB; var q = from x in db.Wbs_WbsSet where x.UnitProjectId == unitProjectId select x; db.Wbs_WbsSet.DeleteAllOnSubmit(q); db.SubmitChanges(); } /// /// 根据装置Id获取集合 /// /// 装置Id /// public static List GetWbsSetsByInstallationId(string installationId) { return (from x in Funs.DB.Wbs_WbsSet where x.InstallationId == installationId orderby x.SortIndex, x.WbsSetCode select x).ToList(); } /// /// 根据上级Id获取集合 /// /// 上级Id /// public static List GetWbsSetsBySuperWbsSetId(string superWbsSetId) { return (from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == superWbsSetId orderby x.WbsSetCode select x).ToList(); } /// /// 根据上级Id获取集合 /// /// 上级Id /// public static List GetApproveWbsSetsBySuperWbsSetId(string superWbsSetId) { return (from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == superWbsSetId && x.IsApprove == true orderby x.WbsSetCode select x).ToList(); } /// /// 根据单位Id获取集合 /// /// 上级Id /// public static List GetApproveWbsSetsByUnitProjectId(string unitProjectId) { return (from x in Funs.DB.Wbs_WbsSet where x.UnitProjectId == unitProjectId && x.IsApprove == true orderby x.WbsSetCode select x).ToList(); } /// /// 根据上级Id获取是否存在同级别的其他已勾选项 /// /// 上级Id /// public static bool IsExitOtherApproveWbsSetsBySuperWbsSetId(string superWbsSetId, string wbsSetId) { return (from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == superWbsSetId && x.IsApprove == true && x.WbsSetId != wbsSetId orderby x.WbsSetCode select x).FirstOrDefault() != null; } /// /// 根据上级Id获取集合 /// /// 上级Id /// public static List GetIsChildWbsSetsBySuperWbsSetId(string superWbsSetId) { return (from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == superWbsSetId && x.IsChild == null orderby x.WbsSetCode select x).ToList(); } /// /// 根据上级Id获取子级集合的累计工程量 /// /// 单位工程Id /// public static decimal GetChildEngineerQuantitys(string superWbsSetId) { return (from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == superWbsSetId && x.IsApprove == true select x.EngineerQuantity ?? 0).Sum(); } /// /// 根据上级Id获取已经选择的集合 /// /// 上级Id /// public static List GetIsSelectedWbsSetsBySuperWbsSetId(string superWbsSetId) { return (from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == superWbsSetId && x.IsApprove == true && x.NoShow == null orderby x.SortIndex, x.WbsSetCode select x).ToList(); } /// /// 根据级别获取末级项集合 /// /// 上级Id /// public static List GetWbsSetsByControlPoint(string installationId, string controlPoint) { return (from x in Funs.DB.Wbs_WbsSet join y in Funs.DB.WBS_CnProfession on x.CnProfessionId equals y.CnProfessionId where y.InstallationId == installationId && x.ControlPoint == controlPoint orderby x.SortIndex, x.WbsSetCode select x).ToList(); } /// /// 根据Id判断子级中是否存在对应Id /// /// 上级Id /// public static bool IsExitWbsSetById(string wbsSetId, string searchId) { List ids = GetWbsSetIds(wbsSetId); if (ids.Contains(searchId) || wbsSetId == searchId) { return true; } else { return false; } } /// /// 根据Id判断子级中是否存在对应Id /// /// 上级Id /// public static bool IsExitWbsSetById2(string wbsSetId, string searchId) { List ids = GetWbsSetIds2(wbsSetId); if (ids.Contains(searchId) || wbsSetId == searchId) { return true; } else { return false; } } /// /// 根据上级Id获取所有Id集合 /// /// 上级Id /// public static List GetWbsSetIds(string wbsSetId) { List ids = new List(); var wbsSets = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(wbsSetId); if (wbsSets.Count > 0) { foreach (var wbsSet in wbsSets) { ids.Add(wbsSet.WbsSetId); ids.AddRange(GetWbsSetIds(wbsSet.WbsSetId)); } } return ids; } /// /// 根据子级Id获取所有上级Id集合 /// /// 上级Id /// public static List GetParentWbsSetIds(string superWbsSetId) { List ids = new List(); Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(superWbsSetId); if (wbsSet != null) { ids.Add(wbsSet.WbsSetId); ids.AddRange(GetParentWbsSetIds(wbsSet.SuperWbsSetId)); } return ids; } /// /// 根据上级Id获取所有Id集合 /// /// 上级Id /// public static List GetWbsSetIds2(string wbsSetId) { List ids = new List(); var wbsSets = BLL.WbsSetService.GetWbsSetsBySuperWbsSetId(wbsSetId); if (wbsSets.Count > 0) { foreach (var wbsSet in wbsSets) { ids.Add(wbsSet.WbsSetId); ids.AddRange(GetWbsSetIds2(wbsSet.WbsSetId)); } } return ids; } /// /// 根据分部/子分部/分项/子分项工程Id获取分部/子分部/分项/子分项工程信息 /// /// 分部/子分部/分项/子分项工程Id /// public static Model.Wbs_WbsSet GetWbsSetByWbsSetId(string wbsSetId) { return Funs.DB.Wbs_WbsSet.FirstOrDefault(e => e.WbsSetId == wbsSetId); } /// /// 根据分部/子分部/分项/子分项工程Id获取分部/子分部/分项/子分项工程信息 /// /// 分部/子分部/分项/子分项工程Id /// public static Model.Wbs_WbsSet GetWbsSetByWbsSetCode(string wbsSetCode, string projectId) { return Funs.DB.Wbs_WbsSet.FirstOrDefault(e => e.WbsSetCode == wbsSetCode && e.ProjectId == projectId); } /// /// 根据装置、专业Id和分部编号获取分部Id /// /// 专业Id /// public static List GetWbsSetIdByInstallationIdAndCNCodeAndUnitProjectCodeAndWbsSetCode(string installationId, string cnCode, string unitProjectCode, string wbsSetCode) { List ids = new List(); Model.SGGLDB db = Funs.DB; string inId = string.Empty; Model.Project_Installation ins = db.Project_Installation.FirstOrDefault(x => x.InstallationId == installationId); var childInss = from x in db.Project_Installation where x.SuperInstallationId == installationId select x; if (childInss.Count() == 0) { inId = installationId; var cn = (from x in db.WBS_CnProfession where x.InstallationId == inId && x.OldId.ToString() == cnCode select x).FirstOrDefault(); if (cn != null) { var list = (from x in db.Wbs_WbsSet join y in db.Wbs_UnitProject on x.UnitProjectId equals y.UnitProjectId where x.CnProfessionId == cn.CnProfessionId && y.UnitProjectCode == unitProjectCode && x.WbsSetCode == wbsSetCode select x.WbsSetId).ToList(); ids.AddRange(list); } } else { var childIns = from x in db.Project_Installation where x.SuperInstallationId == installationId select x; foreach (var childIn in childIns) { ids.AddRange(GetWbsSetIdByInstallationIdAndCNCodeAndUnitProjectCodeAndWbsSetCode(childIn.InstallationId, cnCode, unitProjectCode, wbsSetCode)); } } return ids; } /// /// 根据专业Id和分部编号获取分部Id /// /// 专业Id /// public static List GetWbsSetIdByCnProfessionIdAndUnitProjectCodeAndWbsSetCode(string cnProfessionId, string unitProjectCode, string wbsSetCode) { Model.SGGLDB db = Funs.DB; var list = (from x in db.Wbs_WbsSet join y in db.Wbs_UnitProject on x.UnitProjectId equals y.UnitProjectId where x.CnProfessionId == cnProfessionId && y.UnitProjectCode == unitProjectCode && x.WbsSetCode == wbsSetCode select x.WbsSetId).ToList(); return list; } /// /// 根据分部Id获取分部Id /// /// 专业Id /// public static List GetWbsSetIdByUnitProjectIdAndWbsSetCode(string unitProjectId, string wbsSetCode) { Model.SGGLDB db = Funs.DB; var list = (from x in db.Wbs_WbsSet where x.UnitProjectId == unitProjectId && x.WbsSetCode == wbsSetCode select x.WbsSetId).ToList(); return list; } /// /// 根据分部Id获取分部Id /// /// 专业Id /// public static List GetWbsSetsByUnitProjectId(string unitProjectId) { Model.SGGLDB db = Funs.DB; var list = (from x in db.Wbs_WbsSet where x.UnitProjectId == unitProjectId && x.SuperWbsSetId == null select x).ToList(); return list; } } }