2021-04-30 10:28:37 +08:00
|
|
|
|
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)
|
|
|
|
|
{
|
2021-08-13 11:15:59 +08:00
|
|
|
|
var installation = Funs.DB.Project_Installation.FirstOrDefault(x => x.InstallationId == installationId);
|
|
|
|
|
if (installation != null)
|
2021-04-30 10:28:37 +08:00
|
|
|
|
{
|
2021-08-13 11:15:59 +08:00
|
|
|
|
if (installation.IsEnd == true)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
2021-04-30 10:28:37 +08:00
|
|
|
|
}
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
|
2021-10-22 10:10:15 +08:00
|
|
|
|
/// <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");
|
|
|
|
|
}
|
|
|
|
|
|
2021-04-30 10:28:37 +08:00
|
|
|
|
/// <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;
|
|
|
|
|
}
|
|
|
|
|
|
2021-08-13 11:15:59 +08:00
|
|
|
|
/// <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;
|
|
|
|
|
}
|
|
|
|
|
|
2021-04-30 10:28:37 +08:00
|
|
|
|
/// <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;
|
2021-08-13 11:15:59 +08:00
|
|
|
|
newIns.IsEnd = installation.IsEnd;
|
2021-04-30 10:28:37 +08:00
|
|
|
|
|
|
|
|
|
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;
|
2021-08-13 11:15:59 +08:00
|
|
|
|
newIns.IsEnd = installation.IsEnd;
|
2021-04-30 10:28:37 +08:00
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
}
|