423 lines
17 KiB
C#
423 lines
17 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// 增加分部/子分部/分项/子分项
|
|
/// </summary>
|
|
/// <param name="user">分部/子分部/分项/子分项</param>
|
|
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();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 修改分部/子分部/分项/子分项
|
|
/// </summary>
|
|
/// <param name="user">分部/子分部/分项/子分项</param>
|
|
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();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 修改分部/子分部/分项/子分项
|
|
/// </summary>
|
|
/// <param name="user">分部/子分部/分项/子分项</param>
|
|
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();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据Id删除分部/子分部/分项/子分项信息
|
|
/// </summary>
|
|
/// <param name="userId"></param>
|
|
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();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据单位工程Id删除所有分部/子分部/分项/子分项信息
|
|
/// </summary>
|
|
/// <param name="userId"></param>
|
|
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();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据装置Id获取集合
|
|
/// </summary>
|
|
/// <param name="installationId">装置Id</param>
|
|
/// <returns></returns>
|
|
public static List<Model.Wbs_WbsSet> GetWbsSetsByInstallationId(string installationId)
|
|
{
|
|
return (from x in Funs.DB.Wbs_WbsSet where x.InstallationId == installationId orderby x.SortIndex, x.WbsSetCode select x).ToList();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据上级Id获取集合
|
|
/// </summary>
|
|
/// <param name="superWbsSetId">上级Id</param>
|
|
/// <returns></returns>
|
|
public static List<Model.Wbs_WbsSet> GetWbsSetsBySuperWbsSetId(string superWbsSetId)
|
|
{
|
|
return (from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == superWbsSetId orderby x.WbsSetCode select x).ToList();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据上级Id获取集合
|
|
/// </summary>
|
|
/// <param name="superWbsSetId">上级Id</param>
|
|
/// <returns></returns>
|
|
public static List<Model.Wbs_WbsSet> GetApproveWbsSetsBySuperWbsSetId(string superWbsSetId)
|
|
{
|
|
return (from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == superWbsSetId && x.IsApprove == true orderby x.WbsSetCode select x).ToList();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据单位Id获取集合
|
|
/// </summary>
|
|
/// <param name="unitProjectId">上级Id</param>
|
|
/// <returns></returns>
|
|
public static List<Model.Wbs_WbsSet> GetApproveWbsSetsByUnitProjectId(string unitProjectId)
|
|
{
|
|
return (from x in Funs.DB.Wbs_WbsSet where x.UnitProjectId == unitProjectId && x.IsApprove == true orderby x.WbsSetCode select x).ToList();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据上级Id获取是否存在同级别的其他已勾选项
|
|
/// </summary>
|
|
/// <param name="superWbsSetId">上级Id</param>
|
|
/// <returns></returns>
|
|
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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据上级Id获取集合
|
|
/// </summary>
|
|
/// <param name="superWbsSetId">上级Id</param>
|
|
/// <returns></returns>
|
|
public static List<Model.Wbs_WbsSet> GetIsChildWbsSetsBySuperWbsSetId(string superWbsSetId)
|
|
{
|
|
return (from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == superWbsSetId && x.IsChild == null orderby x.WbsSetCode select x).ToList();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据上级Id获取子级集合的累计工程量
|
|
/// </summary>
|
|
/// <param name="unitProjectId">单位工程Id</param>
|
|
/// <returns></returns>
|
|
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();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据上级Id获取已经选择的集合
|
|
/// </summary>
|
|
/// <param name="superWbsSetId">上级Id</param>
|
|
/// <returns></returns>
|
|
public static List<Model.Wbs_WbsSet> 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();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据级别获取末级项集合
|
|
/// </summary>
|
|
/// <param name="superWbsSetId">上级Id</param>
|
|
/// <returns></returns>
|
|
public static List<Model.Wbs_WbsSet> 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();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据Id判断子级中是否存在对应Id
|
|
/// </summary>
|
|
/// <param name="superWbsSetId">上级Id</param>
|
|
/// <returns></returns>
|
|
public static bool IsExitWbsSetById(string wbsSetId, string searchId)
|
|
{
|
|
List<string> ids = GetWbsSetIds(wbsSetId);
|
|
if (ids.Contains(searchId) || wbsSetId == searchId)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据Id判断子级中是否存在对应Id
|
|
/// </summary>
|
|
/// <param name="superWbsSetId">上级Id</param>
|
|
/// <returns></returns>
|
|
public static bool IsExitWbsSetById2(string wbsSetId, string searchId)
|
|
{
|
|
List<string> ids = GetWbsSetIds2(wbsSetId);
|
|
if (ids.Contains(searchId) || wbsSetId == searchId)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据上级Id获取所有Id集合
|
|
/// </summary>
|
|
/// <param name="wbsSetId">上级Id</param>
|
|
/// <returns></returns>
|
|
public static List<string> GetWbsSetIds(string wbsSetId)
|
|
{
|
|
List<string> ids = new List<string>();
|
|
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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据子级Id获取所有上级Id集合
|
|
/// </summary>
|
|
/// <param name="wbsSetId">上级Id</param>
|
|
/// <returns></returns>
|
|
public static List<string> GetParentWbsSetIds(string superWbsSetId)
|
|
{
|
|
List<string> ids = new List<string>();
|
|
Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(superWbsSetId);
|
|
if (wbsSet != null)
|
|
{
|
|
ids.Add(wbsSet.WbsSetId);
|
|
ids.AddRange(GetParentWbsSetIds(wbsSet.SuperWbsSetId));
|
|
}
|
|
return ids;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据上级Id获取所有Id集合
|
|
/// </summary>
|
|
/// <param name="wbsSetId">上级Id</param>
|
|
/// <returns></returns>
|
|
public static List<string> GetWbsSetIds2(string wbsSetId)
|
|
{
|
|
List<string> ids = new List<string>();
|
|
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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据分部/子分部/分项/子分项工程Id获取分部/子分部/分项/子分项工程信息
|
|
/// </summary>
|
|
/// <param name="unitProjectId">分部/子分部/分项/子分项工程Id</param>
|
|
/// <returns></returns>
|
|
public static Model.Wbs_WbsSet GetWbsSetByWbsSetId(string wbsSetId)
|
|
{
|
|
return Funs.DB.Wbs_WbsSet.FirstOrDefault(e => e.WbsSetId == wbsSetId);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据分部/子分部/分项/子分项工程Id获取分部/子分部/分项/子分项工程信息
|
|
/// </summary>
|
|
/// <param name="unitProjectId">分部/子分部/分项/子分项工程Id</param>
|
|
/// <returns></returns>
|
|
public static Model.Wbs_WbsSet GetWbsSetByWbsSetCode(string wbsSetCode, string projectId)
|
|
{
|
|
return Funs.DB.Wbs_WbsSet.FirstOrDefault(e => e.WbsSetCode == wbsSetCode && e.ProjectId == projectId);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据装置、专业Id和分部编号获取分部Id
|
|
/// </summary>
|
|
/// <param name="unitProjectId">专业Id</param>
|
|
/// <returns></returns>
|
|
public static List<string> GetWbsSetIdByInstallationIdAndCNCodeAndUnitProjectCodeAndWbsSetCode(string installationId, string cnCode, string unitProjectCode, string wbsSetCode)
|
|
{
|
|
List<string> ids = new List<string>();
|
|
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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据专业Id和分部编号获取分部Id
|
|
/// </summary>
|
|
/// <param name="unitProjectId">专业Id</param>
|
|
/// <returns></returns>
|
|
public static List<string> 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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据分部Id获取分部Id
|
|
/// </summary>
|
|
/// <param name="unitProjectId">专业Id</param>
|
|
/// <returns></returns>
|
|
public static List<string> 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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据分部Id获取分部Id
|
|
/// </summary>
|
|
/// <param name="unitProjectId">专业Id</param>
|
|
/// <returns></returns>
|
|
public static List<Model.Wbs_WbsSet> 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;
|
|
}
|
|
}
|
|
}
|