| 
									
										
										
										
											2021-04-30 10:28:37 +08:00
										 |  |  |  | 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 UnitProjectService | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 根据单位/子单位工程Id获取单位/子单位工程信息 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="unitProjectId">单位/子单位工程Id</param> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         public static Model.Wbs_UnitProject GetUnitProjectByUnitProjectId(string unitProjectId) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             return Funs.DB.Wbs_UnitProject.FirstOrDefault(e => e.UnitProjectId == unitProjectId); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 根据单位工程Id获取子单位工程集合信息 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="unitProjectId">单位工程Id</param> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         public static List<Model.Wbs_UnitProject> GetUnitProjectsBySuperUnitProjectId(string superUnitProjectId) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             return (from x in Funs.DB.Wbs_UnitProject where x.SuperUnitProjectId == superUnitProjectId orderby x.UnitProjectCode select x).ToList(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-13 11:15:59 +08:00
										 |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 根据专业Id和分部编号获取分部Id | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="unitProjectId">专业Id</param> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         public static List<string> GetUnitProjectIdByCnProfessionIdAndUnitProjectCode(string cnProfessionId, string unitProjectCode) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             Model.SGGLDB db = Funs.DB; | 
					
						
							|  |  |  |  |             var list = (from x in db.Wbs_UnitProject where x.CnProfessionId == cnProfessionId && x.UnitProjectCode == unitProjectCode select x.UnitProjectId).ToList(); | 
					
						
							|  |  |  |  |             return list; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-15 14:50:52 +08:00
										 |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 根据装置、专业Id和分部编号获取分部Id | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="unitProjectId">专业Id</param> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         public static Model.Wbs_UnitProject GetUnitProjectIdByInstallationId(string installationId) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             Model.SGGLDB db = Funs.DB; | 
					
						
							|  |  |  |  |             string inId = string.Empty; | 
					
						
							|  |  |  |  |             Model.Project_Installation ins = db.Project_Installation.FirstOrDefault(x => x.InstallationId == installationId); | 
					
						
							|  |  |  |  |             if (ins.IsEnd == true) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 inId = installationId; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             else | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 inId = Project_InstallationService.GetEndInstallationId(installationId); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             return (from x in db.Wbs_UnitProject where x.InstallationId==inId select x).FirstOrDefault(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-13 11:15:59 +08:00
										 |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 根据装置、专业Id和分部编号获取分部Id | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="unitProjectId">专业Id</param> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         public static List<string> GetUnitProjectIdByInstallationIdAndCNCodeAndUnitProjectCode(string installationId, string cnCode, string unitProjectCode) | 
					
						
							|  |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2022-01-10 10:55:18 +08:00
										 |  |  |  |             List<string> ids = new List<string>(); | 
					
						
							| 
									
										
										
										
											2021-08-13 11:15:59 +08:00
										 |  |  |  |             Model.SGGLDB db = Funs.DB; | 
					
						
							|  |  |  |  |             string inId = string.Empty; | 
					
						
							|  |  |  |  |             Model.Project_Installation ins = db.Project_Installation.FirstOrDefault(x => x.InstallationId == installationId); | 
					
						
							| 
									
										
										
										
											2022-01-10 10:55:18 +08:00
										 |  |  |  |             var childInss = from x in db.Project_Installation where x.SuperInstallationId == installationId select x; | 
					
						
							|  |  |  |  |             if (childInss.Count() == 0) | 
					
						
							| 
									
										
										
										
											2021-08-13 11:15:59 +08:00
										 |  |  |  |             { | 
					
						
							|  |  |  |  |                 inId = installationId; | 
					
						
							| 
									
										
										
										
											2022-01-10 10:55:18 +08:00
										 |  |  |  |                 var cn = (from x in db.WBS_CnProfession where x.InstallationId == inId && x.OldId.ToString() == cnCode select x).FirstOrDefault(); | 
					
						
							|  |  |  |  |                 if (cn != null) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     ids.AddRange((from x in db.Wbs_UnitProject where x.CnProfessionId == cn.CnProfessionId && x.UnitProjectCode == unitProjectCode select x.UnitProjectId).ToList()); | 
					
						
							|  |  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2021-08-13 11:15:59 +08:00
										 |  |  |  |             } | 
					
						
							|  |  |  |  |             else | 
					
						
							|  |  |  |  |             { | 
					
						
							| 
									
										
										
										
											2022-01-10 10:55:18 +08:00
										 |  |  |  |                 var childIns = from x in db.Project_Installation where x.SuperInstallationId == installationId select x; | 
					
						
							|  |  |  |  |                 foreach (var childIn in childIns) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     ids.AddRange(GetUnitProjectIdByInstallationIdAndCNCodeAndUnitProjectCode(childIn.InstallationId, cnCode, unitProjectCode)); | 
					
						
							|  |  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2021-08-13 11:15:59 +08:00
										 |  |  |  |             } | 
					
						
							| 
									
										
										
										
											2022-01-10 10:55:18 +08:00
										 |  |  |  |             | 
					
						
							|  |  |  |  |             return ids; | 
					
						
							| 
									
										
										
										
											2021-08-13 11:15:59 +08:00
										 |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-30 10:28:37 +08:00
										 |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 根据装置Id获取单位工程集合信息 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="unitProjectId">单位工程Id</param> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         public static List<Model.Wbs_UnitProject> GetUnitProjectsByInstallationId(string installationId) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             return (from x in Funs.DB.Wbs_UnitProject where x.InstallationId == installationId && x.SuperUnitProjectId == null orderby x.UnitProjectCode select x).ToList(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 根据专业Id获取单位工程集合信息 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="cnProfessionId">专业Id</param> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         public static List<Model.Wbs_UnitProject> GetUnitProjectsByCnProfessionId(string cnProfessionId) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             return (from x in Funs.DB.Wbs_UnitProject where x.CnProfessionId == cnProfessionId orderby x.UnitProjectCode select x).ToList(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 根据单位工程Id获取单位工程子级集合的累计工程量 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="unitProjectId">单位工程Id</param> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         public static decimal GetChildEngineerQuantitys(string unitProjectId) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             return (from x in Funs.DB.Wbs_WbsSet where x.UnitProjectId == unitProjectId && x.SuperWbsSetId == null && x.IsApprove == true select x.EngineerQuantity ?? 0).Sum(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 增加单位工程/子单位工程 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="user">单位工程/子单位工程</param> | 
					
						
							|  |  |  |  |         public static void AddUnitProject(Model.Wbs_UnitProject unitProject) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             Model.SGGLDB db = Funs.DB; | 
					
						
							|  |  |  |  |             Model.Wbs_UnitProject newUP = new Model.Wbs_UnitProject(); | 
					
						
							|  |  |  |  |             newUP.UnitProjectId = unitProject.UnitProjectId; | 
					
						
							|  |  |  |  |             newUP.UnitProjectName = unitProject.UnitProjectName; | 
					
						
							|  |  |  |  |             newUP.UnitProjectCode = unitProject.UnitProjectCode; | 
					
						
							|  |  |  |  |             newUP.SuperUnitProjectId = unitProject.SuperUnitProjectId; | 
					
						
							|  |  |  |  |             newUP.InstallationId = unitProject.InstallationId; | 
					
						
							|  |  |  |  |             newUP.ProjectId = unitProject.ProjectId; | 
					
						
							|  |  |  |  |             newUP.CnProfessionId = unitProject.CnProfessionId; | 
					
						
							|  |  |  |  |             newUP.StartDate = unitProject.StartDate; | 
					
						
							|  |  |  |  |             newUP.EndDate = unitProject.EndDate; | 
					
						
							|  |  |  |  |             newUP.Weights = unitProject.Weights; | 
					
						
							|  |  |  |  |             newUP.Remark = unitProject.Remark; | 
					
						
							|  |  |  |  |             newUP.IsIn = unitProject.IsIn; | 
					
						
							|  |  |  |  |             newUP.IsSelected = unitProject.IsSelected; | 
					
						
							|  |  |  |  |             newUP.IsApprove = unitProject.IsApprove; | 
					
						
							|  |  |  |  |             newUP.SortIndex = unitProject.SortIndex; | 
					
						
							|  |  |  |  |             newUP.EngineerQuantity = unitProject.EngineerQuantity; | 
					
						
							|  |  |  |  |             newUP.BudgetUnitPrice = unitProject.BudgetUnitPrice; | 
					
						
							|  |  |  |  |             newUP.CostUnivalent = unitProject.CostUnivalent; | 
					
						
							|  |  |  |  |             newUP.Unit = unitProject.Unit; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             db.Wbs_UnitProject.InsertOnSubmit(newUP); | 
					
						
							|  |  |  |  |             db.SubmitChanges(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 修改单位工程/子单位工程 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="user">单位工程/子单位工程</param> | 
					
						
							|  |  |  |  |         public static void UpdateUnitProject(Model.Wbs_UnitProject unitProject) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             Model.SGGLDB db = Funs.DB; | 
					
						
							|  |  |  |  |             Model.Wbs_UnitProject newUP = db.Wbs_UnitProject.First(e => e.UnitProjectId == unitProject.UnitProjectId); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             newUP.UnitProjectName = unitProject.UnitProjectName; | 
					
						
							|  |  |  |  |             newUP.UnitProjectCode = unitProject.UnitProjectCode; | 
					
						
							|  |  |  |  |             newUP.InstallationId = unitProject.InstallationId; | 
					
						
							|  |  |  |  |             newUP.StartDate = unitProject.StartDate; | 
					
						
							|  |  |  |  |             newUP.EndDate = unitProject.EndDate; | 
					
						
							|  |  |  |  |             newUP.Weights = unitProject.Weights; | 
					
						
							|  |  |  |  |             newUP.WeightsMoney = unitProject.WeightsMoney; | 
					
						
							|  |  |  |  |             newUP.Remark = unitProject.Remark; | 
					
						
							|  |  |  |  |             newUP.IsSelected = unitProject.IsSelected; | 
					
						
							|  |  |  |  |             newUP.IsApprove = unitProject.IsApprove; | 
					
						
							|  |  |  |  |             newUP.IsWeightsApprove = unitProject.IsWeightsApprove; | 
					
						
							|  |  |  |  |             newUP.SortIndex = unitProject.SortIndex; | 
					
						
							|  |  |  |  |             newUP.EngineerQuantity = unitProject.EngineerQuantity; | 
					
						
							|  |  |  |  |             newUP.BudgetUnitPrice = unitProject.BudgetUnitPrice; | 
					
						
							|  |  |  |  |             newUP.CostUnivalent = unitProject.CostUnivalent; | 
					
						
							|  |  |  |  |             newUP.Unit = unitProject.Unit; | 
					
						
							|  |  |  |  |             db.SubmitChanges(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 根据Id删除单位工程/子单位工程信息 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="userId"></param> | 
					
						
							|  |  |  |  |         public static void DeleteUnitProject(string unitProjectId) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             Model.SGGLDB db = Funs.DB; | 
					
						
							|  |  |  |  |             Model.Wbs_UnitProject UP = db.Wbs_UnitProject.First(e => e.UnitProjectId == unitProjectId); | 
					
						
							|  |  |  |  |             db.Wbs_UnitProject.DeleteOnSubmit(UP); | 
					
						
							|  |  |  |  |             db.SubmitChanges(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 根据Id删除所有子级单位工程/子单位工程信息 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="userId"></param> | 
					
						
							|  |  |  |  |         public static void DeleteUnitProjectBySuperUnitProjectId(string superUnitProjectId) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             Model.SGGLDB db = Funs.DB; | 
					
						
							|  |  |  |  |             var q = from x in db.Wbs_UnitProject where x.SuperUnitProjectId == superUnitProjectId select x; | 
					
						
							|  |  |  |  |             db.Wbs_UnitProject.DeleteAllOnSubmit(q); | 
					
						
							|  |  |  |  |             db.SubmitChanges(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } |