CNCEC_SUBQHSE_WUHUAN/SGGL/BLL/JDGL/WBS/WbsSetService.cs

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;
}
}
}