CNCEC_SUBQHSE_WUHUAN/SGGL/BLL/ProjectData/Project_InstallationService.cs

1165 lines
75 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.Collections;
using System.Web.UI.WebControls;
namespace BLL
{
public class Project_InstallationService
{
/// <summary>
/// 是否存在装置名称
/// </summary>
/// <param name="postName"></param>
/// <returns>true-存在false-不存在</returns>
public static bool IsExistInstallationName(string InstallationName, string projectId)
{
var q = from x in Funs.DB.Project_Installation where x.InstallationName == InstallationName && x.ProjectId == projectId select x;
if (q.Count() > 0)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 是否可增加子级
/// </summary>
/// <param name="postName"></param>
/// <returns>true-可以false-不可以</returns>
public static bool IsCanAddInstallation(string installationId)
{
var installation = Funs.DB.Project_Installation.FirstOrDefault(x => x.InstallationId == installationId);
if (installation != null)
{
if (installation.IsEnd == true)
{
return false;
}
else
{
return true;
}
}
else
{
return true;
}
}
/// <summary>
/// 根据名称获取装置
/// </summary>
/// <param name="InstallationName">名称</param>
/// <returns></returns>
public static Model.Project_Installation GetInstallationByName(string InstallationName)
{
return (from x in Funs.DB.Project_Installation where x.InstallationName == InstallationName select x).FirstOrDefault();
}
/// <summary>
/// 获取项目信息
/// </summary>
/// <param name="InstallationId"></param>
/// <returns></returns>
public static Model.Project_Installation GetInstallationByInstallationId(string InstallationId)
{
return Funs.DB.Project_Installation.FirstOrDefault(e => e.InstallationId.ToString() == InstallationId);
}
/// <summary>
/// 获取项目装置节点
/// </summary>]
/// <param name="InstallationId"></param>
/// <returns></returns>
public static Model.Project_Installation GetProjectInstallationByProjectId(string projectId)
{
return Funs.DB.Project_Installation.FirstOrDefault(e => e.ProjectId == projectId && e.SuperInstallationId == "0");
}
/// <summary>
/// 是否存在子级装置
/// </summary>
/// <param name="superInstallationId"></param>
/// <returns></returns>
public static bool IsExitsInstallationsBySuperInstallationId(string superInstallationId)
{
return (from x in Funs.DB.Project_Installation where x.SuperInstallationId == superInstallationId select x).Count() > 0;
}
/// <summary>
/// 根据id获取所有父级装置id
/// </summary>
/// <param name="installationId">名称</param>
/// <returns></returns>
public static string GetParentInstallationIds(string installationId)
{
string ids = string.Empty;
var ins = Funs.DB.Project_Installation.FirstOrDefault(x => x.InstallationId == installationId);
if (ins != null)
{
ids = GetIds(ins.SuperInstallationId);
}
return ids;
}
/// <summary>
/// 根据id获取末级装置id
/// </summary>
/// <param name="installationId">名称</param>
/// <returns></returns>
public static string GetEndInstallationId(string installationId)
{
string id = string.Empty;
var ins = Funs.DB.Project_Installation.FirstOrDefault(x => x.SuperInstallationId == installationId);
if (ins.IsEnd == true)
{
id = ins.InstallationId;
}
else
{
id = GetEndInstallationId(ins.InstallationId);
}
return id;
}
private static string GetIds(string installationId)
{
string ids = string.Empty;
var ins = Funs.DB.Project_Installation.FirstOrDefault(x => x.InstallationId == installationId.Split(',')[0]);
if (ins != null)
{
ids = GetIds(ins.SuperInstallationId + "," + installationId);
}
else
{
ids = installationId;
}
return ids;
}
/// <summary>
/// 添加装置
/// </summary>
/// <param name="Installation"></param>
public static void AddInstallation(Model.Project_Installation installation)
{
Model.SGGLDB db = Funs.DB;
Model.Project_Installation newIns = new Model.Project_Installation();
newIns.InstallationId = installation.InstallationId;
newIns.ProjectId = installation.ProjectId;
newIns.InstallationCode = installation.InstallationCode;
newIns.InstallationName = installation.InstallationName;
newIns.SuperInstallationId = installation.SuperInstallationId;
newIns.StartDate = installation.StartDate;
newIns.EndDate = installation.EndDate;
newIns.Weights = installation.Weights;
newIns.WeightsMoney = installation.WeightsMoney;
newIns.Def = installation.Def;
newIns.IsEnd = installation.IsEnd;
db.Project_Installation.InsertOnSubmit(newIns);
db.SubmitChanges();
}
/// <summary>
/// 修改装置
/// </summary>
/// <param name="Installation"></param>
public static void UpdateInstallation(Model.Project_Installation installation)
{
Model.SGGLDB db = Funs.DB;
Model.Project_Installation newIns = db.Project_Installation.First(e => e.InstallationId == installation.InstallationId);
newIns.InstallationCode = installation.InstallationCode;
newIns.InstallationName = installation.InstallationName;
newIns.SuperInstallationId = installation.SuperInstallationId;
newIns.StartDate = installation.StartDate;
newIns.EndDate = installation.EndDate;
newIns.Weights = installation.Weights;
newIns.WeightsMoney = installation.WeightsMoney;
newIns.Def = installation.Def;
newIns.SortIndex = installation.SortIndex;
newIns.UnitId = installation.UnitId;
newIns.IsEnd = installation.IsEnd;
db.SubmitChanges();
}
/// <summary>
/// 根据装置Id删除一个装置信息
/// </summary>
/// <param name="InstallationId"></param>
public static void DeleteInstallation(string InstallationId)
{
Model.SGGLDB db = Funs.DB;
Model.Project_Installation installation = db.Project_Installation.FirstOrDefault(e => e.InstallationId.ToString() == InstallationId);
if (installation != null)
{
db.Project_Installation.DeleteOnSubmit(installation);
db.SubmitChanges();
}
}
/// <summary>
/// 获取装置/单元名称项
/// </summary>
/// <returns></returns>
public static ListItem[] GetInstallationList(string projectId)
{
var q = (from x in Funs.DB.Project_Installation where x.ProjectId == projectId select x).ToList();
ListItem[] item = new ListItem[q.Count()];
for (int i = 0; i < q.Count(); i++)
{
item[i] = new ListItem(q[i].InstallationName ?? "", q[i].InstallationId.ToString());
}
return item;
}
/// <summary>
/// 根据项目Id判断是否存在项目装置信息
/// </summary>
/// <param name="projectId"></param>
/// <returns></returns>
public static bool IsExitProjectInstallation(string projectId)
{
return (from x in BLL.Funs.DB.Project_Installation where x.ProjectId == projectId select x).Count() > 0;
}
/// <summary>
/// 更新所有父级开始结束日期
/// </summary>
/// <param name="id"></param>
/// <param name="type"></param>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
public static void UpdateParentWBSDate(string id, string type, string dateType, DateTime? date)
{
if (type == "cnProfession")
{
Model.WBS_CnProfession cnProfession = BLL.CnProfessionService.GetCnProfessionByCnProfessionId(id);
if (cnProfession != null)
{
Model.Project_Installation installation = BLL.Project_InstallationService.GetInstallationByInstallationId(cnProfession.InstallationId);
if (installation != null)
{
bool change = false;
if (cnProfession.StartDate < installation.StartDate)
{
change = true;
installation.StartDate = cnProfession.StartDate;
}
if (cnProfession.EndDate > installation.EndDate)
{
change = true;
installation.EndDate = cnProfession.EndDate;
}
if (change)
{
BLL.Project_InstallationService.UpdateInstallation(installation);
}
}
}
}
else if (type == "unitProject")
{
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(id);
if (unitProject != null)
{
Model.WBS_CnProfession cnProfession = BLL.CnProfessionService.GetCnProfessionByCnProfessionId(unitProject.CnProfessionId);
if (cnProfession != null)
{
bool change = false;
if (unitProject.StartDate < cnProfession.StartDate)
{
change = true;
cnProfession.StartDate = unitProject.StartDate;
}
if (unitProject.EndDate > cnProfession.EndDate)
{
change = true;
cnProfession.EndDate = unitProject.EndDate;
}
if (change)
{
BLL.CnProfessionService.UpdateCnProfession(cnProfession);
UpdateParentWBSDate(cnProfession.CnProfessionId, "cnProfession", dateType, date);
}
}
}
}
else if (type == "childUnitProject")
{
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(id);
if (unitProject != null)
{
Model.Wbs_UnitProject parunitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(unitProject.SuperUnitProjectId);
if (parunitProject != null)
{
bool change = false;
if (unitProject.StartDate < parunitProject.StartDate)
{
change = true;
parunitProject.StartDate = unitProject.StartDate;
}
if (unitProject.EndDate > parunitProject.EndDate)
{
change = true;
parunitProject.EndDate = unitProject.EndDate;
}
if (change)
{
BLL.UnitProjectService.UpdateUnitProject(parunitProject);
UpdateParentWBSDate(parunitProject.UnitProjectId, "unitProject", dateType, date);
}
}
}
}
else if (type == "wbsSet")
{
Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(id);
if (wbsSet != null)
{
Model.Wbs_WbsSet parWbsSet1 = BLL.WbsSetService.GetWbsSetByWbsSetId(wbsSet.SuperWbsSetId);
if (parWbsSet1 != null) //当前不是分部
{
bool change = false;
if (wbsSet.StartDate < parWbsSet1.StartDate)
{
change = true;
parWbsSet1.StartDate = wbsSet.StartDate;
}
if (wbsSet.EndDate > parWbsSet1.EndDate)
{
change = true;
parWbsSet1.EndDate = wbsSet.EndDate;
}
if (change)
{
BLL.WbsSetService.UpdateWbsSet(parWbsSet1);
UpdateParentWBSDate(parWbsSet1.WbsSetId, "wbsSet", dateType, date);
}
}
else //当前是分部
{
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(wbsSet.UnitProjectId);
if (unitProject != null)
{
bool change = false;
if (wbsSet.StartDate < unitProject.StartDate)
{
change = true;
unitProject.StartDate = wbsSet.StartDate;
}
if (wbsSet.EndDate > unitProject.EndDate)
{
change = true;
unitProject.EndDate = wbsSet.EndDate;
}
if (change)
{
BLL.UnitProjectService.UpdateUnitProject(unitProject);
}
if (string.IsNullOrEmpty(unitProject.SuperUnitProjectId)) //当前为单位工程
{
UpdateParentWBSDate(unitProject.UnitProjectId, "unitProject", dateType, date);
}
else //当前为子单位工程
{
UpdateParentWBSDate(unitProject.UnitProjectId, "childUnitProject", dateType, date);
}
}
}
//更新处理计划值
List<Model.Wbs_WbsSet> childWbsSets = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(id);
if (childWbsSets.Count == 0 && wbsSet.WeightsMoney != null && wbsSet.WeightsMoney != 0) //当前为末级,且已分配权重金额
{
List<Model.WbsDetail> details = BLL.WbsDetailService.GetTotalWbsDetailsByToWbs(id);
if (details.Count > 0) //存在计划值
{
DateTime startDate, endDate, startMonth, endMonth;
decimal totalValue = 0;
List<DateTime> months = new List<DateTime>();
startDate = Convert.ToDateTime(wbsSet.StartDate);
endDate = Convert.ToDateTime(wbsSet.EndDate);
startMonth = Convert.ToDateTime(startDate.Year + "-" + startDate.Month + "-01");
endMonth = Convert.ToDateTime(endDate.Year + "-" + endDate.Month + "-01");
do
{
months.Add(startMonth);
startMonth = startMonth.AddMonths(1);
} while (startMonth <= endMonth);
if (wbsSet.IsPlanApprove == true)
{
wbsSet.IsPlanApprove = null;
BLL.WbsSetService.UpdateWbsSet(wbsSet);
}
//保存之前计划值版本
foreach (var detail in details)
{
Model.WbsDetailHistory detailHistory = new Model.WbsDetailHistory();
detailHistory.WbsDetailHistoryId = SQLHelper.GetNewID(typeof(Model.WbsDetailHistory));
detailHistory.ToWbs = detail.ToWbs;
detailHistory.ToFlag = detail.ToFlag;
detailHistory.Way = detail.Way;
detailHistory.Months = detail.Months;
detailHistory.PlanValue = detail.PlanValue;
detailHistory.PlanValueRate = detail.PlanValueRate;
detailHistory.VersionNum = wbsSet.VersionNum;
BLL.WbsDetailHistoryService.AddWbsDetailHistory(detailHistory);
}
List<Model.WbsDetail> beforeDetails = BLL.WbsDetailService.GetTotalWbsDetailsByYearMonth2(id, DateTime.Now);
if (beforeDetails.Count > 0) //当月(含)及之前存在计划值
{
decimal beforeCompleteValueTotal = 0; //之前月份累计完成值
List<DateTime> beforeMonths = months.Where(x => x <= DateTime.Now).ToList(); //获取当月及之前月份集合
List<DateTime> removeMonths = new List<DateTime>(); //需要移除的月份集合
for (int i = 0; i < beforeMonths.Count; i++)
{
Model.WbsDetail detail = details.FirstOrDefault(x => x.Months == months[i]);
if (detail != null)
{
if (detail.CompleteValue != null)
{
beforeCompleteValueTotal += Convert.ToDecimal(detail.CompleteValue);
removeMonths.Add(months[i]);
}
}
}
foreach (var item in removeMonths)
{
months.Remove(item); //得到需要重新分配计划值的月份集合
}
decimal lastWeightMoneys = Convert.ToDecimal(wbsSet.WeightsMoney) - beforeCompleteValueTotal; //剩余未完成计划值
for (int i = 0; i < months.Count; i++)
{
//对应月份已有的记录
Model.WbsDetail oldDetail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(id, 4, months[i]);
Model.WbsDetail detail = new Model.WbsDetail();
detail.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
detail.ToWbs = id;
detail.ToFlag = 4;
detail.Way = wbsSet.Way;
detail.Months = months[i];
if (i == months.Count - 1)
{
detail.PlanValue = decimal.Round(Convert.ToDecimal(lastWeightMoneys - totalValue), 2);
}
else
{
detail.PlanValue = decimal.Round(lastWeightMoneys / months.Count, 2);
}
detail.PlanValueRate = decimal.Round(Convert.ToDecimal(detail.PlanValue) / Convert.ToDecimal(wbsSet.WeightsMoney) * 100, 2);
totalValue += decimal.Round(Convert.ToDecimal(detail.PlanValue), 2);
if (oldDetail == null)
{
#region
BLL.WbsDetailService.AddWbsDetail(detail);
//循环保存所有上级分部分项对应记录
AddWbsParentDetail(Convert.ToDateTime(detail.Months), detail.PlanValue, wbsSet.SuperWbsSetId);
//保存对应单位工程及子单位工程
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(wbsSet.UnitProjectId);
Model.WbsDetail detailUnitProject = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(wbsSet.UnitProjectId, 3, Convert.ToDateTime(detail.Months));
if (unitProject != null)
{
if (detailUnitProject == null)
{
Model.WbsDetail newDetailUnitProject = new Model.WbsDetail();
newDetailUnitProject.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
newDetailUnitProject.ToWbs = wbsSet.UnitProjectId;
newDetailUnitProject.ToFlag = 3; //单位工程
newDetailUnitProject.Way = "A";
newDetailUnitProject.Months = detail.Months;
newDetailUnitProject.PlanValue = detail.PlanValue ?? 0;
newDetailUnitProject.PlanValueRate = decimal.Round(Convert.ToDecimal(newDetailUnitProject.PlanValue) / Convert.ToDecimal(unitProject.WeightsMoney) * 100, 2);
BLL.WbsDetailService.AddWbsDetail(newDetailUnitProject);
}
else
{
detailUnitProject.PlanValue += detail.PlanValue ?? 0;
detailUnitProject.PlanValueRate = decimal.Round(Convert.ToDecimal(detailUnitProject.PlanValue) / Convert.ToDecimal(unitProject.WeightsMoney) * 100, 2);
BLL.WbsDetailService.UpdateWbsDetail(detailUnitProject);
}
if (unitProject.SuperUnitProjectId != null) //存在单位工程
{
Model.Wbs_UnitProject parentUnitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(unitProject.SuperUnitProjectId);
Model.WbsDetail detailParentUnitProject = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(parentUnitProject.UnitProjectId, 3, Convert.ToDateTime(detail.Months));
if (detailParentUnitProject == null)
{
Model.WbsDetail newDetailParentUnitProject = new Model.WbsDetail();
newDetailParentUnitProject.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
newDetailParentUnitProject.ToWbs = parentUnitProject.UnitProjectId;
newDetailParentUnitProject.ToFlag = 3; //单位工程
newDetailParentUnitProject.Way = "A";
newDetailParentUnitProject.Months = detail.Months;
newDetailParentUnitProject.PlanValue = detail.PlanValue ?? 0;
newDetailParentUnitProject.PlanValueRate = decimal.Round(Convert.ToDecimal(newDetailParentUnitProject.PlanValue) / Convert.ToDecimal(parentUnitProject.WeightsMoney) * 100, 2);
BLL.WbsDetailService.AddWbsDetail(newDetailParentUnitProject);
}
else
{
detailParentUnitProject.PlanValue += detail.PlanValue ?? 0;
detailParentUnitProject.PlanValueRate = decimal.Round(Convert.ToDecimal(detailParentUnitProject.PlanValue) / Convert.ToDecimal(parentUnitProject.WeightsMoney) * 100, 2);
BLL.WbsDetailService.UpdateWbsDetail(detailParentUnitProject);
}
}
}
//保存对应专业
Model.WBS_CnProfession cnProfession = BLL.CnProfessionService.GetCnProfessionByCnProfessionId(wbsSet.CnProfessionId);
if (cnProfession != null)
{
Model.WbsDetail detailCnProfession = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(cnProfession.CnProfessionId, 2, Convert.ToDateTime(detail.Months));
if (detailCnProfession == null)
{
Model.WbsDetail newDetailCnProfession = new Model.WbsDetail();
newDetailCnProfession.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
newDetailCnProfession.ToWbs = wbsSet.CnProfessionId;
newDetailCnProfession.ToFlag = 2; //专业
newDetailCnProfession.Way = wbsSet.Way;
newDetailCnProfession.Months = detail.Months;
newDetailCnProfession.PlanValue = detail.PlanValue ?? 0;
newDetailCnProfession.PlanValueRate = decimal.Round(Convert.ToDecimal(newDetailCnProfession.PlanValue) / Convert.ToDecimal(cnProfession.WeightsMoney) * 100, 2);
BLL.WbsDetailService.AddWbsDetail(newDetailCnProfession);
}
else
{
detailCnProfession.PlanValue += detail.PlanValue ?? 0;
detailCnProfession.PlanValueRate = decimal.Round(Convert.ToDecimal(detailCnProfession.PlanValue) / Convert.ToDecimal(cnProfession.WeightsMoney) * 100, 2);
BLL.WbsDetailService.UpdateWbsDetail(detailCnProfession);
}
//保存对应装置
Model.Project_Installation installation = BLL.Project_InstallationService.GetInstallationByInstallationId(cnProfession.InstallationId);
if (installation != null)
{
Model.WbsDetail detailInstallation = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(installation.InstallationId, 1, Convert.ToDateTime(detail.Months));
if (detailInstallation == null)
{
Model.WbsDetail newDetailInstallation = new Model.WbsDetail();
newDetailInstallation.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
newDetailInstallation.ToWbs = installation.InstallationId;
newDetailInstallation.ToFlag = 1; //装置
newDetailInstallation.Way = wbsSet.Way;
newDetailInstallation.Months = detail.Months;
newDetailInstallation.PlanValue = detail.PlanValue ?? 0;
newDetailInstallation.PlanValueRate = decimal.Round(Convert.ToDecimal(newDetailInstallation.PlanValue) / Convert.ToDecimal(installation.WeightsMoney) * 100, 2);
BLL.WbsDetailService.AddWbsDetail(newDetailInstallation);
}
else
{
detailInstallation.PlanValue += detail.PlanValue ?? 0;
detailInstallation.PlanValueRate = decimal.Round(Convert.ToDecimal(detailInstallation.PlanValue) / Convert.ToDecimal(installation.WeightsMoney) * 100, 2);
BLL.WbsDetailService.UpdateWbsDetail(detailInstallation);
}
}
}
#endregion
}
else
{
#region
decimal? oldValue = oldDetail.PlanValue;
detail.WbsDetailId = oldDetail.WbsDetailId;
detail.CompleteValue = oldDetail.CompleteValue;
detail.CompleteValueRate = oldDetail.CompleteValueRate;
detail.RealValue = oldDetail.RealValue;
detail.RealValueRate = oldDetail.RealValueRate;
BLL.WbsDetailService.UpdateWbsDetail(detail);
//循环保存所有上级分部分项对应记录
UpdateWbsParentDetail(Convert.ToDateTime(detail.Months), detail.PlanValue, oldValue, wbsSet.SuperWbsSetId);
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(wbsSet.UnitProjectId);
Model.WbsDetail detailUnitProject = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(wbsSet.UnitProjectId, 3, Convert.ToDateTime(detail.Months));
if (unitProject != null)
{
if (detailUnitProject != null)
{
detailUnitProject.PlanValue += ((detail.PlanValue ?? 0) - (oldValue ?? 0));
detailUnitProject.PlanValueRate = decimal.Round(Convert.ToDecimal(detailUnitProject.PlanValue) / Convert.ToDecimal(unitProject.WeightsMoney) * 100, 2);
BLL.WbsDetailService.UpdateWbsDetail(detailUnitProject);
}
else
{
Model.WbsDetail newDetailUnitProject = new Model.WbsDetail();
newDetailUnitProject.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
newDetailUnitProject.ToWbs = wbsSet.UnitProjectId;
newDetailUnitProject.ToFlag = 3; //单位工程
newDetailUnitProject.Way = "A";
newDetailUnitProject.Months = detail.Months;
newDetailUnitProject.PlanValue = detail.PlanValue ?? 0;
newDetailUnitProject.PlanValueRate = decimal.Round(Convert.ToDecimal(newDetailUnitProject.PlanValue) / Convert.ToDecimal(unitProject.WeightsMoney) * 100, 2);
BLL.WbsDetailService.AddWbsDetail(newDetailUnitProject);
}
if (unitProject.SuperUnitProjectId != null) //存在单位工程
{
Model.Wbs_UnitProject parentUnitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(unitProject.SuperUnitProjectId);
Model.WbsDetail detailParentUnitProject = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(parentUnitProject.UnitProjectId, 3, Convert.ToDateTime(detail.Months));
if (detailParentUnitProject != null)
{
detailParentUnitProject.PlanValue += ((detail.PlanValue ?? 0) - (oldValue ?? 0));
detailParentUnitProject.PlanValueRate = decimal.Round(Convert.ToDecimal(detailParentUnitProject.PlanValue) / Convert.ToDecimal(parentUnitProject.WeightsMoney) * 100, 2);
BLL.WbsDetailService.UpdateWbsDetail(detailParentUnitProject);
}
else
{
Model.WbsDetail newDetailParentUnitProject = new Model.WbsDetail();
newDetailParentUnitProject.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
newDetailParentUnitProject.ToWbs = parentUnitProject.UnitProjectId;
newDetailParentUnitProject.ToFlag = 3; //单位工程
newDetailParentUnitProject.Way = "A";
newDetailParentUnitProject.Months = detail.Months;
newDetailParentUnitProject.PlanValue = detail.PlanValue ?? 0;
newDetailParentUnitProject.PlanValueRate = decimal.Round(Convert.ToDecimal(newDetailParentUnitProject.PlanValue) / Convert.ToDecimal(parentUnitProject.WeightsMoney) * 100, 2);
BLL.WbsDetailService.AddWbsDetail(newDetailParentUnitProject);
}
}
}
//保存对应专业
Model.WBS_CnProfession cnProfession = BLL.CnProfessionService.GetCnProfessionByCnProfessionId(wbsSet.CnProfessionId);
if (cnProfession != null)
{
Model.WbsDetail detailCnProfession = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(cnProfession.CnProfessionId, 2, Convert.ToDateTime(detail.Months));
if (detailCnProfession != null)
{
detailCnProfession.PlanValue += ((detail.PlanValue ?? 0) - (oldValue ?? 0));
detailCnProfession.PlanValueRate = decimal.Round(Convert.ToDecimal(detailCnProfession.PlanValue) / Convert.ToDecimal(cnProfession.WeightsMoney) * 100, 2);
BLL.WbsDetailService.UpdateWbsDetail(detailCnProfession);
}
else
{
Model.WbsDetail newDetailCnProfession = new Model.WbsDetail();
newDetailCnProfession.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
newDetailCnProfession.ToWbs = wbsSet.CnProfessionId;
newDetailCnProfession.ToFlag = 2; //专业
newDetailCnProfession.Way = wbsSet.Way;
newDetailCnProfession.Months = detail.Months;
newDetailCnProfession.PlanValue = detail.PlanValue ?? 0;
newDetailCnProfession.PlanValueRate = decimal.Round(Convert.ToDecimal(newDetailCnProfession.PlanValue) / Convert.ToDecimal(cnProfession.WeightsMoney) * 100, 2);
BLL.WbsDetailService.AddWbsDetail(newDetailCnProfession);
}
//保存对应装置
Model.Project_Installation installation = BLL.Project_InstallationService.GetInstallationByInstallationId(cnProfession.InstallationId);
if (installation != null)
{
Model.WbsDetail detailInstallation = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(installation.InstallationId, 1, Convert.ToDateTime(detail.Months));
if (detailInstallation != null)
{
detailInstallation.PlanValue += ((detail.PlanValue ?? 0) - (oldValue ?? 0));
detailInstallation.PlanValueRate = decimal.Round(Convert.ToDecimal(detailInstallation.PlanValue) / Convert.ToDecimal(installation.WeightsMoney) * 100, 2);
BLL.WbsDetailService.UpdateWbsDetail(detailInstallation);
}
else
{
Model.WbsDetail newDetailInstallation = new Model.WbsDetail();
newDetailInstallation.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
newDetailInstallation.ToWbs = installation.InstallationId;
newDetailInstallation.ToFlag = 1; //装置
newDetailInstallation.Way = wbsSet.Way;
newDetailInstallation.Months = detail.Months;
newDetailInstallation.PlanValue = detail.PlanValue ?? 0;
newDetailInstallation.PlanValueRate = decimal.Round(Convert.ToDecimal(newDetailInstallation.PlanValue) / Convert.ToDecimal(installation.WeightsMoney) * 100, 2);
BLL.WbsDetailService.AddWbsDetail(newDetailInstallation);
}
}
}
#endregion
}
}
}
else //计划开始日期在当月之后
{
for (int i = 0; i < months.Count; i++)
{
//对应月份已有的记录
Model.WbsDetail oldDetail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(id, 4, months[i]);
Model.WbsDetail detail = new Model.WbsDetail();
detail.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
detail.ToWbs = id;
detail.ToFlag = 4;
detail.Way = wbsSet.Way;
detail.Months = months[i];
if (i == months.Count - 1)
{
detail.PlanValue = decimal.Round(Convert.ToDecimal(wbsSet.WeightsMoney - totalValue), 2);
}
else
{
detail.PlanValue = WbsDetailService.GetMonthPlanValueByMonthCountAndMonthNumAndWeightMonth(months.Count, i + 1, Convert.ToDecimal(wbsSet.WeightsMoney));
}
detail.PlanValueRate = decimal.Round(Convert.ToDecimal(detail.PlanValue) / Convert.ToDecimal(wbsSet.WeightsMoney) * 100, 2);
totalValue += decimal.Round(Convert.ToDecimal(detail.PlanValue), 2);
if (oldDetail == null)
{
#region
BLL.WbsDetailService.AddWbsDetail(detail);
//循环保存所有上级分部分项对应记录
AddWbsParentDetail(Convert.ToDateTime(detail.Months), detail.PlanValue, wbsSet.SuperWbsSetId);
//保存对应单位工程及子单位工程
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(wbsSet.UnitProjectId);
Model.WbsDetail detailUnitProject = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(wbsSet.UnitProjectId, 3, Convert.ToDateTime(detail.Months));
if (unitProject != null)
{
if (detailUnitProject == null)
{
Model.WbsDetail newDetailUnitProject = new Model.WbsDetail();
newDetailUnitProject.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
newDetailUnitProject.ToWbs = wbsSet.UnitProjectId;
newDetailUnitProject.ToFlag = 3; //单位工程
newDetailUnitProject.Way = "A";
newDetailUnitProject.Months = detail.Months;
newDetailUnitProject.PlanValue = detail.PlanValue ?? 0;
newDetailUnitProject.PlanValueRate = decimal.Round(Convert.ToDecimal(newDetailUnitProject.PlanValue) / Convert.ToDecimal(unitProject.WeightsMoney) * 100, 2);
BLL.WbsDetailService.AddWbsDetail(newDetailUnitProject);
}
else
{
detailUnitProject.PlanValue += detail.PlanValue ?? 0;
detailUnitProject.PlanValueRate = decimal.Round(Convert.ToDecimal(detailUnitProject.PlanValue) / Convert.ToDecimal(unitProject.WeightsMoney) * 100, 2);
BLL.WbsDetailService.UpdateWbsDetail(detailUnitProject);
}
if (unitProject.SuperUnitProjectId != null) //存在单位工程
{
Model.Wbs_UnitProject parentUnitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(unitProject.SuperUnitProjectId);
Model.WbsDetail detailParentUnitProject = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(parentUnitProject.UnitProjectId, 3, Convert.ToDateTime(detail.Months));
if (detailParentUnitProject == null)
{
Model.WbsDetail newDetailParentUnitProject = new Model.WbsDetail();
newDetailParentUnitProject.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
newDetailParentUnitProject.ToWbs = parentUnitProject.UnitProjectId;
newDetailParentUnitProject.ToFlag = 3; //单位工程
newDetailParentUnitProject.Way = "A";
newDetailParentUnitProject.Months = detail.Months;
newDetailParentUnitProject.PlanValue = detail.PlanValue ?? 0;
newDetailParentUnitProject.PlanValueRate = decimal.Round(Convert.ToDecimal(newDetailParentUnitProject.PlanValue) / Convert.ToDecimal(parentUnitProject.WeightsMoney) * 100, 2);
BLL.WbsDetailService.AddWbsDetail(newDetailParentUnitProject);
}
else
{
detailParentUnitProject.PlanValue += detail.PlanValue ?? 0;
detailParentUnitProject.PlanValueRate = decimal.Round(Convert.ToDecimal(detailParentUnitProject.PlanValue) / Convert.ToDecimal(parentUnitProject.WeightsMoney) * 100, 2);
BLL.WbsDetailService.UpdateWbsDetail(detailParentUnitProject);
}
}
}
//保存对应专业
Model.WBS_CnProfession cnProfession = BLL.CnProfessionService.GetCnProfessionByCnProfessionId(wbsSet.CnProfessionId);
if (cnProfession != null)
{
Model.WbsDetail detailCnProfession = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(cnProfession.CnProfessionId, 2, Convert.ToDateTime(detail.Months));
if (detailCnProfession == null)
{
Model.WbsDetail newDetailCnProfession = new Model.WbsDetail();
newDetailCnProfession.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
newDetailCnProfession.ToWbs = wbsSet.CnProfessionId;
newDetailCnProfession.ToFlag = 2; //专业
newDetailCnProfession.Way = wbsSet.Way;
newDetailCnProfession.Months = detail.Months;
newDetailCnProfession.PlanValue = detail.PlanValue ?? 0;
newDetailCnProfession.PlanValueRate = decimal.Round(Convert.ToDecimal(newDetailCnProfession.PlanValue) / Convert.ToDecimal(cnProfession.WeightsMoney) * 100, 2);
BLL.WbsDetailService.AddWbsDetail(newDetailCnProfession);
}
else
{
detailCnProfession.PlanValue += detail.PlanValue ?? 0;
detailCnProfession.PlanValueRate = decimal.Round(Convert.ToDecimal(detailCnProfession.PlanValue) / Convert.ToDecimal(cnProfession.WeightsMoney) * 100, 2);
BLL.WbsDetailService.UpdateWbsDetail(detailCnProfession);
}
//保存对应装置
Model.Project_Installation installation = BLL.Project_InstallationService.GetInstallationByInstallationId(cnProfession.InstallationId);
if (installation != null)
{
Model.WbsDetail detailInstallation = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(installation.InstallationId, 1, Convert.ToDateTime(detail.Months));
if (detailInstallation == null)
{
Model.WbsDetail newDetailInstallation = new Model.WbsDetail();
newDetailInstallation.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
newDetailInstallation.ToWbs = installation.InstallationId;
newDetailInstallation.ToFlag = 1; //装置
newDetailInstallation.Way = wbsSet.Way;
newDetailInstallation.Months = detail.Months;
newDetailInstallation.PlanValue = detail.PlanValue ?? 0;
newDetailInstallation.PlanValueRate = decimal.Round(Convert.ToDecimal(newDetailInstallation.PlanValue) / Convert.ToDecimal(installation.WeightsMoney) * 100, 2);
BLL.WbsDetailService.AddWbsDetail(newDetailInstallation);
}
else
{
detailInstallation.PlanValue += detail.PlanValue ?? 0;
detailInstallation.PlanValueRate = decimal.Round(Convert.ToDecimal(detailInstallation.PlanValue) / Convert.ToDecimal(installation.WeightsMoney) * 100, 2);
BLL.WbsDetailService.UpdateWbsDetail(detailInstallation);
}
}
}
#endregion
}
else
{
#region
decimal? oldValue = oldDetail.PlanValue;
detail.WbsDetailId = oldDetail.WbsDetailId;
detail.CompleteValue = oldDetail.CompleteValue;
detail.CompleteValueRate = oldDetail.CompleteValueRate;
detail.RealValue = oldDetail.RealValue;
detail.RealValueRate = oldDetail.RealValueRate;
BLL.WbsDetailService.UpdateWbsDetail(detail);
//循环保存所有上级分部分项对应记录
UpdateWbsParentDetail(Convert.ToDateTime(detail.Months), detail.PlanValue, oldValue, wbsSet.SuperWbsSetId);
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(wbsSet.UnitProjectId);
Model.WbsDetail detailUnitProject = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(wbsSet.UnitProjectId, 3, Convert.ToDateTime(detail.Months));
if (unitProject != null)
{
if (detailUnitProject != null)
{
detailUnitProject.PlanValue += ((detail.PlanValue ?? 0) - (oldValue ?? 0));
detailUnitProject.PlanValueRate = decimal.Round(Convert.ToDecimal(detailUnitProject.PlanValue) / Convert.ToDecimal(unitProject.WeightsMoney) * 100, 2);
BLL.WbsDetailService.UpdateWbsDetail(detailUnitProject);
}
else
{
Model.WbsDetail newDetailUnitProject = new Model.WbsDetail();
newDetailUnitProject.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
newDetailUnitProject.ToWbs = wbsSet.UnitProjectId;
newDetailUnitProject.ToFlag = 3; //单位工程
newDetailUnitProject.Way = "A";
newDetailUnitProject.Months = detail.Months;
newDetailUnitProject.PlanValue = detail.PlanValue ?? 0;
newDetailUnitProject.PlanValueRate = decimal.Round(Convert.ToDecimal(newDetailUnitProject.PlanValue) / Convert.ToDecimal(unitProject.WeightsMoney) * 100, 2);
BLL.WbsDetailService.AddWbsDetail(newDetailUnitProject);
}
if (unitProject.SuperUnitProjectId != null) //存在单位工程
{
Model.Wbs_UnitProject parentUnitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(unitProject.SuperUnitProjectId);
Model.WbsDetail detailParentUnitProject = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(parentUnitProject.UnitProjectId, 3, Convert.ToDateTime(detail.Months));
if (detailParentUnitProject != null)
{
detailParentUnitProject.PlanValue += ((detail.PlanValue ?? 0) - (oldValue ?? 0));
detailParentUnitProject.PlanValueRate = decimal.Round(Convert.ToDecimal(detailParentUnitProject.PlanValue) / Convert.ToDecimal(parentUnitProject.WeightsMoney) * 100, 2);
BLL.WbsDetailService.UpdateWbsDetail(detailParentUnitProject);
}
else
{
Model.WbsDetail newDetailParentUnitProject = new Model.WbsDetail();
newDetailParentUnitProject.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
newDetailParentUnitProject.ToWbs = parentUnitProject.UnitProjectId;
newDetailParentUnitProject.ToFlag = 3; //单位工程
newDetailParentUnitProject.Way = "A";
newDetailParentUnitProject.Months = detail.Months;
newDetailParentUnitProject.PlanValue = detail.PlanValue ?? 0;
newDetailParentUnitProject.PlanValueRate = decimal.Round(Convert.ToDecimal(newDetailParentUnitProject.PlanValue) / Convert.ToDecimal(parentUnitProject.WeightsMoney) * 100, 2);
BLL.WbsDetailService.AddWbsDetail(newDetailParentUnitProject);
}
}
}
//保存对应专业
Model.WBS_CnProfession cnProfession = BLL.CnProfessionService.GetCnProfessionByCnProfessionId(wbsSet.CnProfessionId);
if (cnProfession != null)
{
Model.WbsDetail detailCnProfession = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(cnProfession.CnProfessionId, 2, Convert.ToDateTime(detail.Months));
if (detailCnProfession != null)
{
detailCnProfession.PlanValue += ((detail.PlanValue ?? 0) - (oldValue ?? 0));
detailCnProfession.PlanValueRate = decimal.Round(Convert.ToDecimal(detailCnProfession.PlanValue) / Convert.ToDecimal(cnProfession.WeightsMoney) * 100, 2);
BLL.WbsDetailService.UpdateWbsDetail(detailCnProfession);
}
else
{
Model.WbsDetail newDetailCnProfession = new Model.WbsDetail();
newDetailCnProfession.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
newDetailCnProfession.ToWbs = wbsSet.CnProfessionId;
newDetailCnProfession.ToFlag = 2; //专业
newDetailCnProfession.Way = wbsSet.Way;
newDetailCnProfession.Months = detail.Months;
newDetailCnProfession.PlanValue = detail.PlanValue ?? 0;
newDetailCnProfession.PlanValueRate = decimal.Round(Convert.ToDecimal(newDetailCnProfession.PlanValue) / Convert.ToDecimal(cnProfession.WeightsMoney) * 100, 2);
BLL.WbsDetailService.AddWbsDetail(newDetailCnProfession);
}
//保存对应装置
Model.Project_Installation installation = BLL.Project_InstallationService.GetInstallationByInstallationId(cnProfession.InstallationId);
if (installation != null)
{
Model.WbsDetail detailInstallation = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(installation.InstallationId, 1, Convert.ToDateTime(detail.Months));
if (detailInstallation != null)
{
detailInstallation.PlanValue += ((detail.PlanValue ?? 0) - (oldValue ?? 0));
detailInstallation.PlanValueRate = decimal.Round(Convert.ToDecimal(detailInstallation.PlanValue) / Convert.ToDecimal(installation.WeightsMoney) * 100, 2);
BLL.WbsDetailService.UpdateWbsDetail(detailInstallation);
}
else
{
Model.WbsDetail newDetailInstallation = new Model.WbsDetail();
newDetailInstallation.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
newDetailInstallation.ToWbs = installation.InstallationId;
newDetailInstallation.ToFlag = 1; //装置
newDetailInstallation.Way = wbsSet.Way;
newDetailInstallation.Months = detail.Months;
newDetailInstallation.PlanValue = detail.PlanValue ?? 0;
newDetailInstallation.PlanValueRate = decimal.Round(Convert.ToDecimal(newDetailInstallation.PlanValue) / Convert.ToDecimal(installation.WeightsMoney) * 100, 2);
BLL.WbsDetailService.AddWbsDetail(newDetailInstallation);
}
}
}
#endregion
}
}
}
}
}
}
}
}
/// <summary>
/// 更新所有子级开始结束日期
/// </summary>
/// <param name="id"></param>
/// <param name="type"></param>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
public static void UpdateChildWBSDate(string id, string type, string dateType, DateTime? date)
{
if (type == "installation")
{
Model.Project_Installation installation = BLL.Project_InstallationService.GetInstallationByInstallationId(id);
if (installation != null)
{
if (dateType == "StartDate")
{
installation.StartDate = date;
}
else
{
installation.EndDate = date;
}
BLL.Project_InstallationService.UpdateInstallation(installation);
var cnProfessions = from x in Funs.DB.WBS_CnProfession where x.InstallationId == id select x;
foreach (var cnProfession in cnProfessions)
{
UpdateChildWBSDate(cnProfession.CnProfessionId, "cnProfession", dateType, date);
}
}
}
else if (type == "cnProfession")
{
Model.WBS_CnProfession cnProfession = BLL.CnProfessionService.GetCnProfessionByCnProfessionId(id);
if (cnProfession != null)
{
if (dateType == "StartDate")
{
cnProfession.StartDate = date;
}
else
{
cnProfession.EndDate = date;
}
BLL.CnProfessionService.UpdateCnProfession(cnProfession);
var unitProjects = from x in Funs.DB.Wbs_UnitProject where x.CnProfessionId == cnProfession.CnProfessionId && x.SuperUnitProjectId == null orderby x.SortIndex, x.UnitProjectCode select x;
foreach (var unitProject in unitProjects)
{
UpdateChildWBSDate(unitProject.UnitProjectId, "unitProject", dateType, date);
}
}
}
else if (type == "unitProject")
{
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(id);
if (unitProject != null)
{
if (dateType == "StartDate")
{
unitProject.StartDate = date;
}
else
{
unitProject.EndDate = date;
}
BLL.UnitProjectService.UpdateUnitProject(unitProject);
var childUnitProjects = from x in Funs.DB.Wbs_UnitProject where x.SuperUnitProjectId == unitProject.UnitProjectId orderby x.SortIndex, x.UnitProjectCode select x;
if (childUnitProjects.Count() > 0) //存在子单位工程
{
foreach (var childUnitProject in childUnitProjects)
{
UpdateChildWBSDate(childUnitProject.UnitProjectId, "unitProject", dateType, date);
}
}
else //不存在子单位工程,加载分部工程
{
var wbsSet1s = from x in Funs.DB.Wbs_WbsSet where x.Flag == 1 && x.UnitProjectId == unitProject.UnitProjectId orderby x.SortIndex, x.WbsSetCode select x;
if (wbsSet1s.Count() > 0)
{
foreach (var wbsSet in wbsSet1s)
{
UpdateChildWBSDate(wbsSet.WbsSetId, "wbsSet", dateType, date);
}
}
else //单位工程下直接是分项内容,如质量行为
{
var wbsSet3s = from x in Funs.DB.Wbs_WbsSet where x.Flag == 3 && x.UnitProjectId == unitProject.UnitProjectId orderby x.SortIndex, x.WbsSetCode select x;
if (wbsSet3s.Count() > 0)
{
foreach (var wbsSet in wbsSet3s)
{
UpdateChildWBSDate(wbsSet.WbsSetId, "wbsSet", dateType, date);
}
}
}
}
}
}
else if (type == "childUnitProject")
{
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(id);
if (unitProject != null)
{
if (dateType == "StartDate")
{
unitProject.StartDate = date;
}
else
{
unitProject.EndDate = date;
}
BLL.UnitProjectService.UpdateUnitProject(unitProject);
var wbsSet1s = from x in Funs.DB.Wbs_WbsSet where x.Flag == 1 && x.UnitProjectId == unitProject.UnitProjectId orderby x.SortIndex, x.WbsSetCode select x;
foreach (var wbsSet in wbsSet1s)
{
UpdateChildWBSDate(wbsSet.WbsSetId, "wbsSet", dateType, date);
}
}
}
else if (type == "wbsSet")
{
Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(id);
if (wbsSet != null)
{
var childWbsSets = BLL.WbsSetService.GetWbsSetsBySuperWbsSetId(id);
if (childWbsSets.Count == 0) //当前为末级
{
if (wbsSet.IsPlanApprove == true)
{
wbsSet.IsPlanApprove = null; //末级计划值审核状态变为未审核
}
}
if (dateType == "StartDate")
{
wbsSet.StartDate = date;
}
else
{
wbsSet.EndDate = date;
}
BLL.WbsSetService.UpdateWbsSet(wbsSet);
if (childWbsSets.Count > 0) //当前不为末级
{
foreach (var childwbsSet in childWbsSets)
{
UpdateChildWBSDate(childwbsSet.WbsSetId, "wbsSet", dateType, date);
}
}
}
}
}
#region
/// <summary>
/// 增加分部分项
/// </summary>
/// <param name="years"></param>
/// <param name="months"></param>
/// <param name="planValue"></param>
/// <param name="parentId"></param>
public static void AddWbsParentDetail(DateTime months, decimal? planValue, string parentId)
{
Model.Wbs_WbsSet parentWbsSet1 = BLL.WbsSetService.GetWbsSetByWbsSetId(parentId);
if (parentWbsSet1 != null)
{
if (parentWbsSet1.SuperWbsSetId != null) //父节点不是分部节点
{
Model.WbsDetail detail1 = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(parentWbsSet1.WbsSetId, 4, months);
if (detail1 == null)
{
Model.WbsDetail newDetail1 = new Model.WbsDetail();
newDetail1.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
newDetail1.ToWbs = parentWbsSet1.WbsSetId;
newDetail1.ToFlag = 4;
newDetail1.Way = parentWbsSet1.Way;
newDetail1.Months = months;
newDetail1.PlanValue = planValue ?? 0;
newDetail1.PlanValueRate = decimal.Round(Convert.ToDecimal(newDetail1.PlanValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
BLL.WbsDetailService.AddWbsDetail(newDetail1);
}
else
{
detail1.PlanValue += planValue ?? 0;
detail1.PlanValueRate = decimal.Round(Convert.ToDecimal(detail1.PlanValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
BLL.WbsDetailService.UpdateWbsDetail(detail1);
}
AddWbsParentDetail(months, planValue, parentWbsSet1.SuperWbsSetId);
}
else
{
Model.WbsDetail detail1 = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(parentWbsSet1.WbsSetId, 4, months);
if (detail1 == null)
{
Model.WbsDetail newDetail1 = new Model.WbsDetail();
newDetail1.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
newDetail1.ToWbs = parentWbsSet1.WbsSetId;
newDetail1.ToFlag = 4;
newDetail1.Way = parentWbsSet1.Way;
newDetail1.Months = months;
newDetail1.PlanValue = planValue;
newDetail1.PlanValueRate = decimal.Round(Convert.ToDecimal(newDetail1.PlanValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
BLL.WbsDetailService.AddWbsDetail(newDetail1);
}
else
{
detail1.PlanValue += planValue;
detail1.PlanValueRate = decimal.Round(Convert.ToDecimal(detail1.PlanValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
BLL.WbsDetailService.UpdateWbsDetail(detail1);
}
}
}
}
#endregion
#region
/// <summary>
/// 更新分部分项
/// </summary>
/// <param name="years"></param>
/// <param name="months"></param>
/// <param name="planValue"></param>
/// <param name="parentId"></param>
public static void UpdateWbsParentDetail(DateTime months, decimal? planValue, decimal? oldPlanValue, string parentId)
{
Model.Wbs_WbsSet parentWbsSet1 = BLL.WbsSetService.GetWbsSetByWbsSetId(parentId);
if (parentWbsSet1 != null)
{
Model.WbsDetail detail1 = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(parentWbsSet1.WbsSetId, 4, months);
if (detail1 != null)
{
if (parentWbsSet1.SuperWbsSetId != null) //父节点不是分部节点
{
detail1.PlanValue += ((planValue ?? 0) - (oldPlanValue ?? 0));
detail1.PlanValueRate = decimal.Round(Convert.ToDecimal(detail1.PlanValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
BLL.WbsDetailService.UpdateWbsDetail(detail1);
UpdateWbsParentDetail(months, planValue, oldPlanValue, parentWbsSet1.SuperWbsSetId);
}
else
{
detail1.PlanValue += ((planValue ?? 0) - (oldPlanValue ?? 0));
detail1.PlanValueRate = decimal.Round(Convert.ToDecimal(detail1.PlanValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
BLL.WbsDetailService.UpdateWbsDetail(detail1);
}
}
}
}
#endregion
}
}