xinjiang/SGGL/BLL/ProjectData/UnitWorkService.cs

646 lines
26 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Caching;
using System.Web.UI.WebControls;
namespace BLL
{
public class UnitWorkService
{
public static Model.SGGLDB db = Funs.DB;
public static Model.WBS_UnitWork GetUnitWorkByUnitWorkName(string projectId, string unitWorkName)
{
return Funs.DB.WBS_UnitWork.FirstOrDefault(e => e.ProjectId == projectId && e.UnitWorkName == unitWorkName);
}
/// <summary>
/// 添加单位工程信息
/// </summary>
/// <param name="WPQ"></param>
public static void AddUnitWork(Model.WBS_UnitWork UnitWork)
{
Model.SGGLDB db = Funs.DB;
Model.WBS_UnitWork newUnitWork = new Model.WBS_UnitWork();
newUnitWork.UnitWorkId = UnitWork.UnitWorkId;
newUnitWork.UnitWorkCode = UnitWork.UnitWorkCode;
newUnitWork.UnitWorkName = UnitWork.UnitWorkName;
newUnitWork.SuperUnitWork = UnitWork.SuperUnitWork;
newUnitWork.IsChild = UnitWork.IsChild;
newUnitWork.ProjectId = UnitWork.ProjectId;
newUnitWork.ProjectType = UnitWork.ProjectType;
newUnitWork.UnitId = UnitWork.UnitId;
newUnitWork.SupervisorUnitId = UnitWork.SupervisorUnitId;
newUnitWork.NDEUnit = UnitWork.NDEUnit;
newUnitWork.Costs = UnitWork.Costs;
newUnitWork.InstallationId = UnitWork.InstallationId;
newUnitWork.MainItemAndDesignProfessionalIds = UnitWork.MainItemAndDesignProfessionalIds;
newUnitWork.Coordinate = UnitWork.Coordinate;
db.WBS_UnitWork.InsertOnSubmit(newUnitWork);
db.SubmitChanges();
//GetWeights(UnitWork.ProjectId);
}
/// <summary>
/// 修改单位工程信息
/// </summary>
/// <param name="WPQ"></param>
public static void UpdateUnitWork(Model.WBS_UnitWork UnitWork)
{
Model.SGGLDB db = Funs.DB;
Model.WBS_UnitWork newUnitWork = db.WBS_UnitWork.FirstOrDefault(e => e.UnitWorkId == UnitWork.UnitWorkId);
if (newUnitWork != null)
{
newUnitWork.UnitWorkId = UnitWork.UnitWorkId;
newUnitWork.UnitWorkCode = UnitWork.UnitWorkCode;
newUnitWork.UnitWorkName = UnitWork.UnitWorkName;
newUnitWork.SuperUnitWork = UnitWork.SuperUnitWork;
newUnitWork.IsChild = UnitWork.IsChild;
newUnitWork.ProjectId = UnitWork.ProjectId;
newUnitWork.ProjectType = UnitWork.ProjectType;
newUnitWork.UnitId = UnitWork.UnitId;
newUnitWork.SupervisorUnitId = UnitWork.SupervisorUnitId;
newUnitWork.NDEUnit = UnitWork.NDEUnit;
newUnitWork.Costs = UnitWork.Costs;
newUnitWork.InstallationId = UnitWork.InstallationId;
newUnitWork.MainItemAndDesignProfessionalIds = UnitWork.MainItemAndDesignProfessionalIds;
newUnitWork.Coordinate = UnitWork.Coordinate;
db.SubmitChanges();
}
//GetWeights(UnitWork.ProjectId);
//if (UnitWork.Costs != null)
//{
// UpdateWBSCosts(UnitWork.UnitWorkId, Convert.ToDecimal(UnitWork.Costs));
//}
}
private static void GetWeights(string projectId)
{
Model.SGGLDB db = Funs.DB;
decimal totalCosts = 0;
var unitWorks = from x in db.WBS_UnitWork where x.ProjectId == projectId && x.Costs != null select x;
foreach (var unitWork in unitWorks)
{
totalCosts += Convert.ToDecimal(unitWork.Costs);
}
foreach (var unitWork in unitWorks)
{
unitWork.Weights = unitWork.Costs / totalCosts * 100;
db.SubmitChanges();
}
var noCostUnitWorks = from x in db.WBS_UnitWork where x.ProjectId == projectId && x.Costs == null select x;
foreach (var noCostUnitWork in noCostUnitWorks)
{
noCostUnitWork.Weights = null;
db.SubmitChanges();
}
}
#region WBS项的建安工程费
/// <summary>
/// 更新计算单位工程WBS项的建安工程费
/// </summary>
/// <param name="unitWorkId"></param>
/// <param name="costs"></param>
private static void UpdateWBSCosts(string unitWorkId, decimal costs)
{
Model.SGGLDB db = Funs.DB;
var workPackages = from x in db.WBS_WorkPackage where x.UnitWorkId == unitWorkId && x.SuperWorkPackageId == null && x.IsApprove == true select x;
foreach (var item in workPackages)
{
if (item.Weights != null)
{
item.Costs = item.Weights / 100 * costs;
db.SubmitChanges();
UpdateWorkPackageCosts(item.WorkPackageId, Convert.ToDecimal(item.Costs));
}
}
}
private static void UpdateWorkPackageCosts(string workPackageId, decimal costs)
{
Model.SGGLDB db = Funs.DB;
var childWorkPackages = from x in db.WBS_WorkPackage where x.SuperWorkPackageId == workPackageId && x.IsApprove == true select x;
if (childWorkPackages.Count() > 0) //存在子级
{
foreach (var item in childWorkPackages)
{
if (item.Weights != null)
{
item.Costs = item.Weights / 100 * costs;
db.SubmitChanges();
UpdateWorkPackageCosts(item.WorkPackageId, Convert.ToDecimal(item.Costs));
}
}
}
else
{
//var controlItemAndCycles = from x in db.WBS_ControlItemAndCycle where x.WorkPackageId == workPackageId && x.IsApprove == true select x;
//foreach (var item in controlItemAndCycles)
//{
// if (item.Weights != null)
// {
// item.Costs = item.Weights / 100 * costs;
// db.SubmitChanges();
// }
//}
}
}
#endregion
/// <summary>
/// 根据主键删除单位工程信息
/// </summary>
/// <param name="checkerId"></param>
public static void DeleteUnitWorkById(string UnitWorkId)
{
Model.SGGLDB db = Funs.DB;
Model.WBS_UnitWork Unitwork = db.WBS_UnitWork.FirstOrDefault(e => e.UnitWorkId == UnitWorkId);
if (Unitwork != null)
{
db.WBS_UnitWork.DeleteOnSubmit(Unitwork);
db.SubmitChanges();
GetWeights(Unitwork.ProjectId);
}
}
/// <summary>
/// 获取单位工程信息
/// </summary>
/// <param name="UnitWorkId"></param>
/// <returns></returns>
public static Model.WBS_UnitWork GetUnitWorkByUnitWorkId(string UnitWorkId)
{
return Funs.DB.WBS_UnitWork.FirstOrDefault(e => e.UnitWorkId == UnitWorkId);
}
/// <summary>
/// 获取单位工程信息
/// </summary>
/// <param name="UnitWorkId"></param>
/// <returns></returns>
public static Model.WBS_UnitWork GetUnitWorkByMainItemAndDesignProfessionalIds(string mainItemAndDesignProfessionalIds)
{
return Funs.DB.WBS_UnitWork.FirstOrDefault(e => e.MainItemAndDesignProfessionalIds.Contains(mainItemAndDesignProfessionalIds));
}
/// <summary>
/// 根据单位工程编号获取单位工程信息
/// </summary>
/// <param name="UnitWorkCode"></param>
/// <returns></returns>
public static List<Model.WBS_UnitWork> GetUnitWorkByUnitWorkCode(string UnitWorkCode)
{
return (from x in Funs.DB.WBS_UnitWork where x.UnitWorkCode == UnitWorkCode select x).ToList();
}
/// <summary>
/// 下拉框选择(获取 text value)
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
public static string GetTextOrVal(string text, string val, string projectId)
{
string str = null;
ListItem[] listitem = null;
Cache cache = new Cache();
if (cache.Get("UnitWorkList") == null)
{
listitem = GetUnitWork(projectId);
if (listitem.Count() > 0)
{
cache.Insert("UnitWorkList", listitem, null, DateTime.UtcNow.AddMinutes(10), TimeSpan.Zero, CacheItemPriority.Normal, null);
}
}
else
{
listitem = (ListItem[])cache.Get("UnitWorkList");
}
if (!string.IsNullOrWhiteSpace(text))
{
foreach (var item in listitem)
{
if (text.Equals(item.Text))
{
str = item.Value;
}
}
}
if (!string.IsNullOrWhiteSpace(val))
{
foreach (var item in listitem)
{
if (val.Equals(item.Value))
{
str = item.Text;
}
}
}
return str;
}
/// <summary>
/// 获取单位工程名称项
/// </summary>
/// <param name="projectId">项目Id</param>
/// <returns></returns>
public static ListItem[] GetUnitWorkList(string projectId)
{
List<Model.WBS_UnitWork> q = (from x in Funs.DB.WBS_UnitWork where x.ProjectId == projectId && x.SuperUnitWork == null orderby x.UnitWorkCode select x).ToList();
ListItem[] item = new ListItem[q.Count()];
for (int i = 0; i < q.Count(); i++)
{
item[i] = new ListItem((q[i].UnitWorkCode + "-" + q[i].UnitWorkName + GetProjectType(q[i].ProjectType)) ?? "", q[i].UnitWorkId.ToString());
}
return item;
}
/// <summary>
/// 根据工程类型获取名称
/// </summary>
/// <param name="projectType"></param>
/// <returns></returns>
public static string GetProjectType(string projectType)
{
string name = string.Empty;
if (projectType == "1")
{
name = "(建筑)";
}
else if (projectType == "2")
{
name = "(安装)";
}
return name;
}
/// <summary>
/// 获取单位工程名称项
/// </summary>
/// <param name="projectId">项目Id</param>
/// <returns></returns>
public static List<Model.WBS_UnitWork> GetUnitWorkLists(string projectId)
{
return (from x in Funs.DB.WBS_UnitWork where x.ProjectId == projectId && x.SuperUnitWork == null orderby x.UnitWorkCode select x).ToList();
}
public static ListItem[] GetUnitWork(string projectId)
{
List<Model.WBS_UnitWork> q = (from x in Funs.DB.WBS_UnitWork where x.ProjectId == projectId && x.SuperUnitWork == null orderby x.UnitWorkCode select x).ToList();
ListItem[] item = new ListItem[q.Count()];
for (int i = 0; i < q.Count(); i++)
{
item[i] = new ListItem((q[i].UnitWorkCode + "-" + q[i].UnitWorkName + GetProjectType(q[i].ProjectType)) ?? "", q[i].UnitWorkId.ToString());
}
return item;
}
public static ListItem[] GetUnitWork(string projectId,string installationId)
{
List<Model.WBS_UnitWork> q = (from x in Funs.DB.WBS_UnitWork where x.InstallationId==installationId && x.ProjectId == projectId && x.SuperUnitWork == null orderby x.UnitWorkCode select x).ToList();
ListItem[] item = new ListItem[q.Count()];
for (int i = 0; i < q.Count(); i++)
{
item[i] = new ListItem((q[i].UnitWorkCode + "-" + q[i].UnitWorkName + GetProjectType(q[i].ProjectType)) ?? "", q[i].UnitWorkId.ToString());
}
return item;
}
/// <summary>
/// 获取单位名称
/// </summary>
/// <param name="UnitId"></param>
/// <returns></returns>
public static string GetNameById(string id)
{
string name = string.Empty;
var UnitWork = Funs.DB.WBS_UnitWork.FirstOrDefault(x => x.UnitWorkId == id);
if (UnitWork != null)
{
name = UnitWork.UnitWorkName + GetProjectType(UnitWork.ProjectType);
}
return name;
}
/// <summary>
/// 单位工程表下拉框
/// </summary>
/// <param name="dropName">下拉框名字</param>
/// <param name="isShowPlease">是否显示请选择</param>
public static void InitUnitWorkDownList(FineUIPro.DropDownList dropName, string projectId, bool isShowPlease)
{
dropName.DataValueField = "Value";
dropName.DataTextField = "Text";
dropName.DataSource = BLL.UnitWorkService.GetUnitWorkList(projectId);
dropName.DataBind();
if (isShowPlease)
{
Funs.FineUIPleaseSelect(dropName);
}
}
public static void InitUnitWorkDownList(FineUIPro.DropDownList dropName, string projectId,string unitId, bool isShowPlease)
{
dropName.DataValueField = "Value";
dropName.DataTextField = "Text";
dropName.DataSource = BLL.UnitWorkService.GetUnitWorkList(projectId);
dropName.DataBind();
if (isShowPlease)
{
Funs.FineUIPleaseSelect(dropName);
}
}
/// <summary>
/// 单位工程表下拉框
/// </summary>
/// <param name="dropName">下拉框名字</param>
/// <param name="isShowPlease">是否显示请选择</param>
public static void InitUnitWorkDownListByProjectType(FineUIPro.DropDownList dropName, string projectId, string projectType, bool isShowPlease)
{
dropName.DataValueField = "Value";
dropName.DataTextField = "Text";
dropName.DataSource = BLL.UnitWorkService.GetUnitWorkListByProjectType(projectId, projectType);
dropName.DataBind();
if (isShowPlease)
{
Funs.FineUIPleaseSelect(dropName);
}
}
/// <summary>
/// 单位工程表下拉框
/// </summary>
/// <param name="dropName">下拉框名字</param>
/// <param name="isShowPlease">是否显示请选择</param>
public static void InitUnitWorkList(FineUIPro.DropDownList dropName, string projectId, bool isShowPlease)
{
dropName.DataValueField = "Text";
dropName.DataTextField = "Text";
dropName.DataSource = GetUnitWork(projectId);
dropName.DataBind();
if (isShowPlease)
{
Funs.FineUIPleaseSelect(dropName);
}
}
/// <summary>
/// 根据项目id 获取单位工程
/// </summary>
/// <param name="projectId"></param>
/// <returns></returns>
public static List<Model.WBS_UnitWork> GetUnitWorkListByPid(string projectId)
{
Model.SGGLDB db = Funs.DB;
List<Model.WBS_UnitWork> q = (from x in db.WBS_UnitWork where x.ProjectId == projectId && x.SuperUnitWork == null orderby x.UnitWorkCode select x).ToList();
return q;
}
public static Model.WBS_UnitWork getUnitWorkByUnitWorkId(string UnitWorkId)
{
return Funs.DB.WBS_UnitWork.FirstOrDefault(e => e.UnitWorkId.ToString() == UnitWorkId);
}
public static List<Model.WBS_UnitWork> GetUnitWorkListByPidForApi(string projectId, string projectType)
{
string[] type = null;
if (!string.IsNullOrEmpty(projectType))
type = projectType.Split(',');
var unitWorks = from x in Funs.DB.WBS_UnitWork where x.ProjectId == projectId && (type == null || type.Contains(x.ProjectType)) orderby x.UnitWorkCode select x;
return unitWorks.ToList();
}
/// <summary>
/// 获取单位工程名称项
/// </summary>
/// <param name="projectId">项目Id</param>
/// <returns></returns>
public static ListItem[] GetUnitWorkListByProjectType(string projectId, string projectType)
{
List<Model.WBS_UnitWork> q = (from x in Funs.DB.WBS_UnitWork where x.ProjectId == projectId && x.SuperUnitWork == null && x.ProjectType == projectType orderby x.UnitWorkCode select x).ToList();
ListItem[] item = new ListItem[q.Count()];
for (int i = 0; i < q.Count(); i++)
{
item[i] = new ListItem((q[i].UnitWorkCode + "-" + q[i].UnitWorkName + GetProjectType(q[i].ProjectType)) ?? "", q[i].UnitWorkId.ToString());
}
return item;
}
/// <summary>
/// 根据单位工程Id获取对应code的所有单位工程Id集合
/// </summary>
/// <param name="unitWorkId"></param>
/// <returns></returns>
public static string GetUnitWorkIdsByUnitWorkId(string unitWorkId)
{
string unitWorkIds = string.Empty;
Model.WBS_UnitWork unitWork = GetUnitWorkByUnitWorkId(unitWorkId);
if (unitWork != null)
{
var q = from x in Funs.DB.WBS_UnitWork where x.UnitWorkCode == unitWork.UnitWorkCode select x;
foreach (var item in q)
{
unitWorkIds += item.UnitWorkId + ",";
}
}
if (!string.IsNullOrEmpty(unitWorkIds))
{
unitWorkIds = unitWorkIds.Substring(0, unitWorkIds.LastIndexOf(","));
}
return unitWorkIds;
}
/// <summary>
/// 根据单位工程类别获取单位工程
/// </summary>
/// <param name="state"></param>
/// <returns></returns>
public static List<Model.WBS_UnitWork> GetUnitWorkDownList(string ProjectType, string ProjectId)
{
if (ProjectType == "1")
{
List<Model.WBS_UnitWork> lis = (from x in Funs.DB.WBS_UnitWork where x.ProjectType == "1" && x.ProjectId == ProjectId orderby x.UnitWorkCode select x).ToList();
return lis;
}
else if (ProjectType == "2")
{
List<Model.WBS_UnitWork> lis = (from x in Funs.DB.WBS_UnitWork where x.ProjectType == "2" && x.ProjectId == ProjectId orderby x.UnitWorkCode select x).ToList();
return lis;
}
else
return null;
}
public static string GetUnitWorkName(string unitWorkIds)
{
string unitWorkName = string.Empty;
if (!string.IsNullOrEmpty(unitWorkIds))
{
string[] strs = unitWorkIds.Split(',');
foreach (var item in strs)
{
var un = BLL.UnitWorkService.GetUnitWorkByUnitWorkId(item);
if (un != null)
{
unitWorkName += un.UnitWorkName + GetProjectType(un.ProjectType) + ",";
}
}
if (!string.IsNullOrEmpty(unitWorkName))
{
unitWorkName = unitWorkName.Substring(0, unitWorkName.LastIndexOf(","));
}
}
return unitWorkName;
}
/// <summary>
/// 获取单位工程下拉列表
/// </summary>
/// <param name="dropName"></param>
/// <param name="projectId"></param>
/// <param name="isShowPlease"></param>
public static void InitUnitWorkDropDownList(FineUIPro.DropDownList dropName, string projectId, bool isShowPlease)
{
var unitWorks = from x in Funs.DB.WBS_UnitWork
where x.ProjectId == projectId && x.SuperUnitWork == null
orderby x.UnitWorkCode
select new
{
x.UnitWorkId,
UnitWorkName = GetUnitWorkALLName(x.UnitWorkId)
};
dropName.DataValueField = "UnitWorkId";
dropName.DataTextField = "UnitWorkName";
dropName.DataSource = unitWorks;
dropName.DataBind();
if (isShowPlease)
{
Funs.FineUIPleaseSelect(dropName);
}
}
/// <summary>
/// 获取单位工程下拉列表
/// </summary>
/// <param name="dropName"></param>
/// <param name="projectId"></param>
/// <param name="isShowPlease"></param>
public static void InitUnitWorkNameDropDownList(FineUIPro.DropDownList dropName, string projectId, bool isShowPlease)
{
var unitWorks = from x in Funs.DB.WBS_UnitWork
where x.ProjectId == projectId && x.SuperUnitWork == null
orderby x.UnitWorkCode
select new
{
x.UnitWorkId,
UnitWorkName = GetUnitWorkALLName(x.UnitWorkId)
};
dropName.DataValueField = "UnitWorkName";
dropName.DataTextField = "UnitWorkName";
dropName.DataSource = unitWorks;
dropName.DataBind();
if (isShowPlease)
{
Funs.FineUIPleaseSelect(dropName);
}
}
/// <summary>
/// 获取单位工程名称
/// </summary>
/// <param name="unitWorkId"></param>
/// <returns></returns>
public static string GetUnitWorkALLName(string unitWorkId)
{
string name = string.Empty;
var getu = Funs.DB.WBS_UnitWork.FirstOrDefault(x => x.UnitWorkId == unitWorkId && x.SuperUnitWork == null);
if (getu != null)
{
if (!string.IsNullOrEmpty(getu.ProjectType))
{
name = getu.UnitWorkName + "(" + Funs.GetUnitWorkType(getu.ProjectType) + ")";
}
else
{
name = getu.UnitWorkName;
}
}
return name;
}
/// <summary>
/// 获取主项及设计专业名称
/// </summary>
/// <param name="unitWorkId"></param>
/// <returns></returns>
public static string GetMainItemAndDesignProfessionalName(string str, string projectId)
{
string name = string.Empty;
Model.SGGLDB db = Funs.DB;
var mainItems = from x in db.ProjectData_MainItem where x.ProjectId == projectId select x;
var designProfessionals = from x in db.Base_DesignProfessional select x;
if (!string.IsNullOrEmpty(str))
{
string[] ids = str.Split(',');
string mainItemId = string.Empty;
foreach (var id in ids)
{
string[] strs = id.Split('|');
if (mainItemId != strs[0]) //新的主项内容
{
if (!string.IsNullOrEmpty(name))
{
name = name.Substring(0, name.Length - 1) + "),";
}
var mainItem = mainItems.FirstOrDefault(x => x.MainItemId == strs[0]);
if (mainItem != null)
{
name += mainItem.MainItemName + "(";
}
var designProfessional = designProfessionals.FirstOrDefault(x => x.DesignProfessionalId == strs[1]);
if (designProfessional != null)
{
name += designProfessional.ProfessionalName + ",";
}
}
else
{
var designProfessional = designProfessionals.FirstOrDefault(x => x.DesignProfessionalId == strs[1]);
if (designProfessional != null)
{
name += designProfessional.ProfessionalName + ",";
}
}
mainItemId = strs[0];
}
if (!string.IsNullOrEmpty(name))
{
name = name.Substring(0, name.Length - 1) + ")";
}
}
return name;
}
public static string getWorkAreaIdByWorkAreaName(string projectId, string workAreaName)
{
string id = string.Empty;
if (!string.IsNullOrEmpty(workAreaName))
{
workAreaName = workAreaName.Trim().Replace("", ",");
var getNames = Funs.GetStrListByStr(workAreaName, ',');
foreach (var item in getNames)
{
var getWorkArea = Funs.DB.WBS_UnitWork.FirstOrDefault(e => e.UnitWorkName == workAreaName && e.ProjectId == projectId);
if (getWorkArea != null)
{
if (string.IsNullOrEmpty(id))
{
id = getWorkArea.UnitWorkId;
}
else
{
id += "," + getWorkArea.UnitWorkId;
}
}
}
}
return id;
}
}
}