CNCEC_SUBQHSE_WUHUAN/SGGL/FineUIPro.Web/JDGL/WBS/WorkloadInput.aspx.cs

1013 lines
51 KiB
C#

using BLL;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.JDGL.WBS
{
public partial class WorkloadInput : PageBase
{
#region
/// <summary>
/// 页面加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GetButtonPower();
InitTreeMenu();
this.txtMonths.Text = string.Format("{0:yyyy-MM}", DateTime.Now);
//Funs.FineUIPleaseSelect(this.drpWeek);
}
}
/// <summary>
/// 树加载
/// </summary>
private void InitTreeMenu()
{
this.trWBS.Nodes.Clear();
this.trWBS.ShowBorder = false;
this.trWBS.ShowHeader = false;
this.trWBS.EnableIcons = true;
this.trWBS.AutoScroll = true;
this.trWBS.EnableSingleClickExpand = true;
//var project = BLL.ProjectService.GetProjectByProjectId(this.CurrUser.LoginProjectId);
//if (project != null)
//{
// TreeNode rootNode = new TreeNode();
// rootNode.Text = project.ProjectName;
// rootNode.NodeID = project.ProjectId;
// rootNode.CommandName = "project";
// rootNode.EnableExpandEvent = true;
// this.trWBS.Nodes.Add(rootNode);
// if (BLL.Project_InstallationService.IsExitProjectInstallation(project.ProjectId))
// {
// TreeNode emptyNode = new TreeNode();
// emptyNode.Text = "";
// emptyNode.NodeID = "";
// rootNode.Nodes.Add(emptyNode);
// }
//}
Model.Project_Installation installation = BLL.Project_InstallationService.GetProjectInstallationByProjectId(this.CurrUser.LoginProjectId);
if (installation != null)
{
TreeNode newNode = new TreeNode();
newNode.Text = "[" + installation.InstallationCode + "]" + installation.InstallationName;
newNode.NodeID = installation.InstallationId;
newNode.CommandName = "installation";
newNode.EnableExpandEvent = true;
newNode.EnableClickEvent = true;
newNode.EnableCheckBox = false;
this.trWBS.Nodes.Add(newNode);
TreeNode emptyNode = new TreeNode();
emptyNode.Text = "";
emptyNode.NodeID = "";
newNode.Nodes.Add(emptyNode);
}
}
#endregion
#region
/// <summary>
/// 树节点展开
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void trWBS_NodeExpand(object sender, TreeNodeEventArgs e)
{
e.Node.Nodes.Clear();
bool needAddTempNode = false; //是否需要增加空节点
if (e.Node.CommandName == "project") //展开项目节点
{
var installations = from x in Funs.DB.Project_Installation
where x.ProjectId == e.Node.NodeID && x.SuperInstallationId == "0"
orderby x.InstallationCode
select x;
foreach (var installation in installations)
{
TreeNode newNode = new TreeNode();
newNode.Text = "[" + installation.InstallationCode + "]" + installation.InstallationName;
newNode.NodeID = installation.InstallationId;
newNode.CommandName = "installation";
newNode.EnableExpandEvent = true;
newNode.EnableClickEvent = true;
e.Node.Nodes.Add(newNode);
TreeNode emptyNode = new TreeNode();
emptyNode.Text = "";
emptyNode.NodeID = "";
newNode.Nodes.Add(emptyNode);
}
}
else if (e.Node.CommandName == "installation") //展开装置/单元节点
{
var installations = from x in Funs.DB.Project_Installation
where x.SuperInstallationId == e.Node.NodeID
orderby x.InstallationCode
select x;
if (installations.Count() > 0)
{
foreach (var installation in installations)
{
TreeNode newNode = new TreeNode();
newNode.Text = "[" + installation.InstallationCode + "]" + installation.InstallationName;
newNode.NodeID = installation.InstallationId;
newNode.CommandName = "installation";
newNode.EnableExpandEvent = true;
newNode.EnableClickEvent = true;
e.Node.Nodes.Add(newNode);
TreeNode emptyNode = new TreeNode();
emptyNode.Text = "";
emptyNode.NodeID = "";
newNode.Nodes.Add(emptyNode);
}
}
else
{
var cnProfessions = from x in Funs.DB.WBS_CnProfession where x.InstallationId == e.Node.NodeID && x.IsApprove == true orderby x.OldId select x;
if (cnProfessions.Count() > 0) //普通装置主项
{
foreach (var cnProfession in cnProfessions)
{
TreeNode newNode = new TreeNode();
newNode.Text = cnProfession.CnProfessionName;
newNode.NodeID = cnProfession.CnProfessionId;
newNode.CommandName = "cnProfession";
newNode.EnableExpandEvent = true;
newNode.EnableClickEvent = true;
e.Node.Nodes.Add(newNode);
TreeNode emptyNode = new TreeNode();
emptyNode.Text = "";
emptyNode.NodeID = "";
newNode.Nodes.Add(emptyNode);
}
}
else //总图
{
var unitProjects = from x in Funs.DB.Wbs_UnitProject where x.InstallationId == e.Node.NodeID && x.SuperUnitProjectId == null && x.IsApprove == true orderby x.SortIndex, x.UnitProjectCode select x;
foreach (var unitProject in unitProjects)
{
TreeNode newNode = new TreeNode();
newNode.Text = unitProject.UnitProjectName;
newNode.NodeID = unitProject.UnitProjectId;
newNode.CommandName = "unitProject";
newNode.EnableExpandEvent = true;
if (unitProject.IsApprove == true)
{
newNode.Checked = true;
}
else
{
newNode.Checked = false;
}
newNode.EnableClickEvent = true;
e.Node.Nodes.Add(newNode);
TreeNode emptyNode = new TreeNode();
emptyNode.Text = "";
emptyNode.NodeID = "";
newNode.Nodes.Add(emptyNode);
}
}
}
}
else if (e.Node.CommandName == "cnProfession") //展开专业节点
{
var unitProjects = from x in Funs.DB.Wbs_UnitProject where x.CnProfessionId == e.Node.NodeID && x.SuperUnitProjectId == null && x.IsApprove == true orderby x.SortIndex, x.UnitProjectCode select x;
foreach (var unitProject in unitProjects)
{
TreeNode newNode = new TreeNode();
newNode.Text = unitProject.UnitProjectName;
newNode.NodeID = unitProject.UnitProjectId;
newNode.CommandName = "unitProject";
newNode.EnableExpandEvent = true;
newNode.EnableCheckBox = true;
newNode.EnableCheckEvent = true;
if (unitProject.IsSelected == true && unitProject.IsApprove == null)
{
unitProject.IsApprove = true;
BLL.UnitProjectService.UpdateUnitProject(unitProject);
}
if (unitProject.IsApprove == true)
{
newNode.Checked = true;
}
else
{
newNode.Checked = false;
}
newNode.EnableClickEvent = true;
e.Node.Nodes.Add(newNode);
TreeNode emptyNode = new TreeNode();
emptyNode.Text = "";
emptyNode.NodeID = "";
newNode.Nodes.Add(emptyNode);
}
}
else if (e.Node.CommandName == "unitProject") //展开单位工程节点
{
var wbsSet1s = from x in Funs.DB.Wbs_WbsSet where x.UnitProjectId == e.Node.NodeID && x.SuperWbsSetId == null && x.IsApprove == true orderby x.WbsSetCode select x;
if (wbsSet1s.Count() > 0)
{
foreach (var wbsSet1 in wbsSet1s)
{
TreeNode newNode = new TreeNode();
newNode.Text = wbsSet1.WbsSetName;
newNode.NodeID = wbsSet1.WbsSetId;
newNode.CommandName = "wbsSet";
newNode.EnableExpandEvent = true;
newNode.EnableCheckBox = true;
newNode.EnableCheckEvent = true;
newNode.EnableClickEvent = true;
e.Node.Nodes.Add(newNode);
var wbsSets = BLL.WbsSetService.GetWbsSetsBySuperWbsSetId(wbsSet1.WbsSetId);
if (wbsSets.Count > 0)
{
TreeNode emptyNode = new TreeNode();
emptyNode.Text = "";
emptyNode.NodeID = "";
newNode.Nodes.Add(emptyNode);
}
//needAddTempNode = false;
//var wbsSets = BLL.WbsSetService.GetWbsSetsBySuperWbsSetId(wbsSet1.WbsSetId);
//foreach (var wbsSet in wbsSets)
//{
// var childWbsSets = from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == wbsSet.WbsSetId select x;
// if (childWbsSets.Count() > 0)
// {
// needAddTempNode = true;
// break;
// }
//}
//if (needAddTempNode)
//{
// TreeNode emptyNode = new TreeNode();
// emptyNode.Text = "";
// emptyNode.NodeID = "";
// newNode.Nodes.Add(emptyNode);
//}
}
}
}
else if (e.Node.CommandName == "wbsSet") //展开分部/子分部/分项/子分项工程节点
{
var childWbsSets = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(e.Node.NodeID);
foreach (var wbsSet in childWbsSets)
{
TreeNode newNode = new TreeNode();
newNode.Text = wbsSet.WbsSetName;
newNode.NodeID = wbsSet.WbsSetId;
newNode.CommandName = "wbsSet";
newNode.EnableExpandEvent = true;
newNode.EnableClickEvent = true;
e.Node.Nodes.Add(newNode);
var wbsSets = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(wbsSet.WbsSetId);
if (wbsSets.Count > 0)
{
TreeNode emptyNode = new TreeNode();
emptyNode.Text = "";
emptyNode.NodeID = "";
newNode.Nodes.Add(emptyNode);
}
//needAddTempNode = false;
//var wbsSets = BLL.WbsSetService.GetWbsSetsBySuperWbsSetId(wbsSet.WbsSetId);
//foreach (var wbsSetc in wbsSets)
//{
// var childWbsSets1 = from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == wbsSetc.WbsSetId select x;
// if (childWbsSets1.Count() > 0)
// {
// needAddTempNode = true;
// break;
// }
//}
//if (needAddTempNode)
//{
// TreeNode emptyNode = new TreeNode();
// emptyNode.Text = "";
// emptyNode.NodeID = "";
// newNode.Nodes.Add(emptyNode);
//}
}
}
}
#endregion
#region Tree点击事件
/// <summary>
/// Tree点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void trWBS_NodeCommand(object sender, TreeCommandEventArgs e)
{
InitWeek();
this.Grid1.Columns[4].HeaderText = "本月计划完成量";
this.Grid1.Columns[7].HeaderText = "本月完成量";
BindGrid();
}
#endregion
#region
/// <summary>
/// 关闭窗口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
ShowNotify("录入成功!", MessageBoxIcon.Success);
}
#endregion
/// <summary>
/// 右键录入事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnMenuEdit_Click(object sender, EventArgs e)
{
if (this.trWBS.SelectedNode != null)
{
if (this.trWBS.SelectedNode.CommandName != "project" && this.trWBS.SelectedNode.CommandName != "installation" && this.trWBS.SelectedNode.CommandName != "cnProfession") //非项目、装置、专业节点可以修改
{
this.hdSelectId.Text = this.trWBS.SelectedNode.NodeID;
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("WorkloadInputEdit.aspx?Id={0}", this.trWBS.SelectedNode.NodeID, "编辑 - ")));
}
}
else
{
ShowNotify("请选择树节点!", MessageBoxIcon.Warning);
}
}
/// <summary>
/// 右键导入事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnMenuImport_Click(object sender, EventArgs e)
{
if (this.trWBS.SelectedNode != null)
{
if (this.trWBS.SelectedNode.CommandName != "project" && this.trWBS.SelectedNode.CommandName != "installation" && this.trWBS.SelectedNode.CommandName != "cnProfession") //非项目、装置、专业节点可以修改
{
this.hdSelectId.Text = this.trWBS.SelectedNode.NodeID;
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("WorkloadInputIn.aspx?Id={0}", this.trWBS.SelectedNode.NodeID, "编辑 - ")));
}
}
else
{
ShowNotify("请选择树节点!", MessageBoxIcon.Warning);
}
}
#region
/// <summary>
/// 保存
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSave_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(this.txtMonths.Text.Trim()))
{
Alert.ShowInTop("请选择月份!", MessageBoxIcon.Warning);
return;
}
DateTime months = Convert.ToDateTime(this.txtMonths.Text.Trim() + "-01");
if (Grid1.Rows.Count > 0)
{
decimal changeThisPlanValue = 0, changeThisRealCost = 0, changeThisPlanCost = 0, //当月总变化完成成本、完成预算
oldThisPlanValue = 0, oldThisRealCost = 0, oldThisPlanCost = 0,
thisPlanValue = 0, thisRealCost = 0, thisPlanCost = 0;
JArray mergedData = Grid1.GetMergedData();
//if (this.drpWeek.SelectedValue == BLL.Const._Null) //保存月记录
//{
foreach (JObject mergedRow in mergedData)
{
oldThisPlanValue = 0;
oldThisRealCost = 0;
oldThisPlanCost = 0;
JObject values = mergedRow.Value<JObject>("values");
string costControlDetailId = values.Value<string>("CostControlDetailId");
string costControlId = values.Value<string>("CostControlId");
string thisNum = values.Value<string>("ThisNum");
string planPrice = values.Value<string>("PlanPrice");
Model.WBS_CostControlDetail costControlDetail = BLL.CostControlDetailService.GetCostControlDetailByCostControlDetailId(costControlDetailId);
Model.WBS_CostControl costControl = BLL.CostControlService.GetCostControlByCostControlId(costControlId);
if (costControlDetail != null)
{
oldThisRealCost = (costControlDetail.ThisNum ?? 0) * (costControl.RealPrice ?? 0);
oldThisPlanCost = (costControlDetail.ThisNum ?? 0) * (costControl.PlanPrice ?? 0);
if (!string.IsNullOrEmpty(thisNum))
{
costControlDetail.ThisNum = Convert.ToDecimal(thisNum);
}
thisPlanValue = (costControlDetail.PlanNum ?? 0) * (costControl.PlanPrice ?? 0);
thisRealCost = (costControlDetail.ThisNum ?? 0) * (costControl.RealPrice ?? 0);
thisPlanCost = (costControlDetail.ThisNum ?? 0) * (costControl.PlanPrice ?? 0);
BLL.CostControlDetailService.UpdateCostControlDetail(costControlDetail);
}
else
{
costControlDetail = new Model.WBS_CostControlDetail();
costControlDetail.CostControlDetailId = costControlDetailId;
costControlDetail.CostControlId = costControlId;
costControlDetail.Months = months;
if (!string.IsNullOrEmpty(thisNum))
{
costControlDetail.ThisNum = Convert.ToDecimal(thisNum);
}
thisPlanValue = 0;
thisRealCost = (costControlDetail.ThisNum ?? 0) * (costControl.RealPrice ?? 0);
thisPlanCost = (costControlDetail.ThisNum ?? 0) * (costControl.PlanPrice ?? 0);
BLL.CostControlDetailService.AddCostControlDetail(costControlDetail);
}
//累加变化值,计算总的变化值
changeThisRealCost += thisRealCost - oldThisRealCost;
changeThisPlanCost += thisPlanCost - oldThisPlanCost;
}
//累计所有子节点的计划值
var costControls = BLL.CostControlService.GetCostControlsByWbsSetId(this.trWBS.SelectedNodeID);
foreach (var item in costControls)
{
Model.WBS_CostControlDetail costControlDetail = BLL.CostControlDetailService.GetCostControlDetailByCostControlIdAndMonths(item.CostControlId, months);
if (costControlDetail != null)
{
changeThisPlanValue += (costControlDetail.PlanNum ?? 0) * (item.PlanPrice ?? 0);
}
}
Model.WBS_CostControlParentDetail parentDetail = BLL.CostControlParentDetailService.GetCostControlParentDetailByParentIdAndMonths(this.trWBS.SelectedNodeID, months);
if (parentDetail != null) //如果工作项节点存在,则计算计划值差异值
{
changeThisPlanValue = changeThisPlanValue - (parentDetail.ThisPlanValue ?? 0);
}
//更新树节点
Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(this.trWBS.SelectedNodeID);
//更新工作包、工作项
UpdateWbsSetDetail(this.trWBS.SelectedNodeID, months, changeThisPlanValue, changeThisRealCost, changeThisPlanCost);
//更新分部
Model.WBS_CostControlParentDetail unitProjectDetail = BLL.CostControlParentDetailService.GetCostControlParentDetailByParentIdAndMonths(wbsSet.UnitProjectId, months);
if (unitProjectDetail != null)
{
unitProjectDetail.ThisPlanValue += changeThisPlanValue;
unitProjectDetail.ThisRealCost += changeThisRealCost;
unitProjectDetail.ThisPlanCost += changeThisPlanCost;
BLL.CostControlParentDetailService.UpdateCostControlParentDetail(unitProjectDetail);
}
else
{
unitProjectDetail = new Model.WBS_CostControlParentDetail();
unitProjectDetail.CostControlParentDetailId = SQLHelper.GetNewID();
unitProjectDetail.ParentId = wbsSet.UnitProjectId;
unitProjectDetail.Months = months;
unitProjectDetail.ThisPlanValue = changeThisPlanValue;
unitProjectDetail.ThisRealCost = changeThisRealCost;
unitProjectDetail.ThisPlanCost = changeThisPlanCost;
BLL.CostControlParentDetailService.AddCostControlParentDetail(unitProjectDetail);
}
//更新专业
Model.WBS_CostControlParentDetail cnProfessionDetail = BLL.CostControlParentDetailService.GetCostControlParentDetailByParentIdAndMonths(wbsSet.CnProfessionId, months);
if (cnProfessionDetail != null)
{
cnProfessionDetail.ThisPlanValue += changeThisPlanValue;
cnProfessionDetail.ThisRealCost += changeThisRealCost;
cnProfessionDetail.ThisPlanCost += changeThisPlanCost;
BLL.CostControlParentDetailService.UpdateCostControlParentDetail(cnProfessionDetail);
}
else
{
cnProfessionDetail = new Model.WBS_CostControlParentDetail();
cnProfessionDetail.CostControlParentDetailId = SQLHelper.GetNewID();
cnProfessionDetail.ParentId = wbsSet.CnProfessionId;
cnProfessionDetail.Months = months;
cnProfessionDetail.ThisPlanValue = changeThisPlanValue;
cnProfessionDetail.ThisRealCost = changeThisRealCost;
cnProfessionDetail.ThisPlanCost = changeThisPlanCost;
BLL.CostControlParentDetailService.AddCostControlParentDetail(cnProfessionDetail);
}
//更新装置
UpdateInstallationDetail(wbsSet.InstallationId, months, changeThisPlanValue, changeThisRealCost, changeThisPlanCost);
//}
//else //保存周记录
//{
// string[] strs = this.drpWeek.SelectedValue.Split(',');
// DateTime startDate = Convert.ToDateTime(strs[0]);
// DateTime endDate = Convert.ToDateTime(strs[1]);
// foreach (JObject mergedRow in mergedData)
// {
// oldThisPlanValue = 0;
// oldThisRealCost = 0;
// oldThisPlanCost = 0;
// JObject values = mergedRow.Value<JObject>("values");
// string costControlDetailId = values.Value<string>("CostControlDetailId");
// string costControlId = values.Value<string>("CostControlId");
// string thisNum = values.Value<string>("ThisNum");
// string planPrice = values.Value<string>("PlanPrice");
// Model.WBS_CostControlDetail costControlDetail = BLL.CostControlDetailService.GetCostControlDetailByCostControlDetailId(costControlDetailId);
// Model.WBS_CostControl costControl = BLL.CostControlService.GetCostControlByCostControlId(costControlId);
// if (costControlDetail != null)
// {
// oldThisRealCost = (costControlDetail.ThisNum ?? 0) * (costControl.RealPrice ?? 0);
// oldThisPlanCost = (costControlDetail.ThisNum ?? 0) * (costControl.PlanPrice ?? 0);
// if (!string.IsNullOrEmpty(thisNum))
// {
// costControlDetail.ThisNum = Convert.ToDecimal(thisNum);
// }
// thisPlanValue = (costControlDetail.PlanNum ?? 0) * (costControl.PlanPrice ?? 0);
// thisRealCost = (costControlDetail.ThisNum ?? 0) * (costControl.RealPrice ?? 0);
// thisPlanCost = (costControlDetail.ThisNum ?? 0) * (costControl.PlanPrice ?? 0);
// BLL.CostControlDetailService.UpdateCostControlDetail(costControlDetail);
// }
// else
// {
// costControlDetail = new Model.WBS_CostControlDetail();
// costControlDetail.CostControlDetailId = costControlDetailId;
// costControlDetail.CostControlId = costControlId;
// costControlDetail.Months = months;
// costControlDetail.StartDate = startDate;
// costControlDetail.EndDate = endDate;
// if (!string.IsNullOrEmpty(thisNum))
// {
// costControlDetail.ThisNum = Convert.ToDecimal(thisNum);
// }
// thisPlanValue = 0;
// thisRealCost = (costControlDetail.ThisNum ?? 0) * (costControl.RealPrice ?? 0);
// thisPlanCost = (costControlDetail.ThisNum ?? 0) * (costControl.PlanPrice ?? 0);
// BLL.CostControlDetailService.AddCostControlDetail(costControlDetail);
// }
// //累加变化值,计算总的变化值
// changeThisRealCost += thisRealCost - oldThisRealCost;
// changeThisPlanCost += thisPlanCost - oldThisPlanCost;
// }
// //累计所有子节点的计划值
// var costControls = BLL.CostControlService.GetCostControlsByWbsSetId(this.trWBS.SelectedNodeID);
// foreach (var item in costControls)
// {
// Model.WBS_CostControlDetail costControlDetail = BLL.CostControlDetailService.GetCostControlDetailByCostControlIdAndMonthsWeek(item.CostControlId, months, startDate);
// if (costControlDetail != null)
// {
// changeThisPlanValue += (costControlDetail.PlanNum ?? 0) * (item.PlanPrice ?? 0);
// }
// }
// Model.WBS_CostControlParentDetail parentDetail = BLL.CostControlParentDetailService.GetCostControlParentDetailByParentIdAndMonthsWeek(this.trWBS.SelectedNodeID, months, startDate);
// if (parentDetail != null) //如果工作项节点存在,则计算计划值差异值
// {
// changeThisPlanValue = changeThisPlanValue - (parentDetail.ThisPlanValue ?? 0);
// }
// //更新树节点
// Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(this.trWBS.SelectedNodeID);
// //更新工作包、工作项
// UpdateWeekWbsSetDetail(this.trWBS.SelectedNodeID, months, startDate, endDate, changeThisPlanValue, changeThisRealCost, changeThisPlanCost);
// //更新分部
// Model.WBS_CostControlParentDetail unitProjectDetail = BLL.CostControlParentDetailService.GetCostControlParentDetailByParentIdAndMonthsWeek(wbsSet.UnitProjectId, months, startDate);
// if (unitProjectDetail != null)
// {
// unitProjectDetail.ThisPlanValue += changeThisPlanValue;
// unitProjectDetail.ThisRealCost += changeThisRealCost;
// unitProjectDetail.ThisPlanCost += changeThisPlanCost;
// BLL.CostControlParentDetailService.UpdateCostControlParentDetail(unitProjectDetail);
// }
// else
// {
// unitProjectDetail = new Model.WBS_CostControlParentDetail();
// unitProjectDetail.CostControlParentDetailId = SQLHelper.GetNewID();
// unitProjectDetail.ParentId = wbsSet.UnitProjectId;
// unitProjectDetail.Months = months;
// unitProjectDetail.StartDate = startDate;
// unitProjectDetail.EndDate = endDate;
// unitProjectDetail.ThisPlanValue = changeThisPlanValue;
// unitProjectDetail.ThisRealCost = changeThisRealCost;
// unitProjectDetail.ThisPlanCost = changeThisPlanCost;
// BLL.CostControlParentDetailService.AddCostControlParentDetail(unitProjectDetail);
// }
// //更新专业
// Model.WBS_CostControlParentDetail cnProfessionDetail = BLL.CostControlParentDetailService.GetCostControlParentDetailByParentIdAndMonthsWeek(wbsSet.CnProfessionId, months, startDate);
// if (cnProfessionDetail != null)
// {
// cnProfessionDetail.ThisPlanValue += changeThisPlanValue;
// cnProfessionDetail.ThisRealCost += changeThisRealCost;
// cnProfessionDetail.ThisPlanCost += changeThisPlanCost;
// BLL.CostControlParentDetailService.UpdateCostControlParentDetail(cnProfessionDetail);
// }
// else
// {
// cnProfessionDetail = new Model.WBS_CostControlParentDetail();
// cnProfessionDetail.CostControlParentDetailId = SQLHelper.GetNewID();
// cnProfessionDetail.ParentId = wbsSet.CnProfessionId;
// cnProfessionDetail.Months = months;
// cnProfessionDetail.StartDate = startDate;
// cnProfessionDetail.EndDate = endDate;
// cnProfessionDetail.ThisPlanValue = changeThisPlanValue;
// cnProfessionDetail.ThisRealCost = changeThisRealCost;
// cnProfessionDetail.ThisPlanCost = changeThisPlanCost;
// BLL.CostControlParentDetailService.AddCostControlParentDetail(cnProfessionDetail);
// }
// //更新装置
// UpdateWeekInstallationDetail(wbsSet.InstallationId, months, startDate, endDate, changeThisPlanValue, changeThisRealCost, changeThisPlanCost);
//}
//BindGrid();
Alert.ShowInTop("保存成功!", MessageBoxIcon.Success);
}
else
{
Alert.ShowInTop("请选择工作项节点!", MessageBoxIcon.Warning);
}
}
#endregion
#region
/// <summary>
/// 更新月工作包、工作项
/// </summary>
/// <param name="years"></param>
/// <param name="months"></param>
/// <param name="planValue"></param>
/// <param name="parentId"></param>
private void UpdateWbsSetDetail(string wbsSetId, DateTime months, decimal changeThisPlanValue, decimal changeThisRealCost, decimal changeThisPlanCost)
{
Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(wbsSetId);
if (wbsSet != null)
{
Model.WBS_CostControlParentDetail parentDetail = BLL.CostControlParentDetailService.GetCostControlParentDetailByParentIdAndMonths(wbsSetId, months);
if (parentDetail != null)
{
parentDetail.ThisPlanValue += changeThisPlanValue;
parentDetail.ThisRealCost += changeThisRealCost;
parentDetail.ThisPlanCost += changeThisPlanCost;
BLL.CostControlParentDetailService.UpdateCostControlParentDetail(parentDetail);
}
else
{
parentDetail = new Model.WBS_CostControlParentDetail();
parentDetail.CostControlParentDetailId = SQLHelper.GetNewID();
parentDetail.ParentId = wbsSetId;
parentDetail.Months = months;
parentDetail.ThisPlanValue = changeThisPlanValue;
parentDetail.ThisRealCost = changeThisRealCost;
parentDetail.ThisPlanCost = changeThisPlanCost;
BLL.CostControlParentDetailService.AddCostControlParentDetail(parentDetail);
}
if (wbsSet.SuperWbsSetId != null) //还存在上级节点,需要继续循环
{
UpdateWbsSetDetail(wbsSet.SuperWbsSetId, months, changeThisPlanValue, changeThisRealCost, changeThisPlanCost);
}
}
}
/// <summary>
/// 更新周工作包、工作项
/// </summary>
/// <param name="years"></param>
/// <param name="months"></param>
/// <param name="planValue"></param>
/// <param name="parentId"></param>
private void UpdateWeekWbsSetDetail(string wbsSetId, DateTime months, DateTime startDate, DateTime endDate, decimal changeThisPlanValue, decimal changeThisRealCost, decimal changeThisPlanCost)
{
Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(wbsSetId);
if (wbsSet != null)
{
Model.WBS_CostControlParentDetail parentDetail = BLL.CostControlParentDetailService.GetCostControlParentDetailByParentIdAndMonthsWeek(wbsSetId, months, startDate);
if (parentDetail != null)
{
parentDetail.ThisPlanValue += changeThisPlanValue;
parentDetail.ThisRealCost += changeThisRealCost;
parentDetail.ThisPlanCost += changeThisPlanCost;
BLL.CostControlParentDetailService.UpdateCostControlParentDetail(parentDetail);
}
else
{
parentDetail = new Model.WBS_CostControlParentDetail();
parentDetail.CostControlParentDetailId = SQLHelper.GetNewID();
parentDetail.ParentId = wbsSetId;
parentDetail.Months = months;
parentDetail.StartDate = startDate;
parentDetail.EndDate = endDate;
parentDetail.ThisPlanValue = changeThisPlanValue;
parentDetail.ThisRealCost = changeThisRealCost;
parentDetail.ThisPlanCost = changeThisPlanCost;
BLL.CostControlParentDetailService.AddCostControlParentDetail(parentDetail);
}
if (wbsSet.SuperWbsSetId != null) //还存在上级节点,需要继续循环
{
UpdateWeekWbsSetDetail(wbsSet.SuperWbsSetId, months, startDate, endDate, changeThisPlanValue, changeThisRealCost, changeThisPlanCost);
}
}
}
#endregion
#region
/// <summary>
/// 更新月装置
/// </summary>
/// <param name="years"></param>
/// <param name="months"></param>
/// <param name="planValue"></param>
/// <param name="parentId"></param>
private void UpdateInstallationDetail(string installationId, DateTime months, decimal changeThisPlanValue, decimal changeThisRealCost, decimal changeThisPlanCost)
{
Model.Project_Installation installation = BLL.Project_InstallationService.GetInstallationByInstallationId(installationId);
if (installation != null)
{
Model.WBS_CostControlParentDetail parentDetail = BLL.CostControlParentDetailService.GetCostControlParentDetailByParentIdAndMonths(installationId, months);
if (parentDetail != null)
{
parentDetail.ThisPlanValue += changeThisPlanValue;
parentDetail.ThisRealCost += changeThisRealCost;
parentDetail.ThisPlanCost += changeThisPlanCost;
BLL.CostControlParentDetailService.UpdateCostControlParentDetail(parentDetail);
}
else
{
parentDetail = new Model.WBS_CostControlParentDetail();
parentDetail.CostControlParentDetailId = SQLHelper.GetNewID();
parentDetail.ParentId = installationId;
parentDetail.Months = months;
parentDetail.ThisPlanValue = changeThisPlanValue;
parentDetail.ThisRealCost = changeThisRealCost;
parentDetail.ThisPlanCost = changeThisPlanCost;
BLL.CostControlParentDetailService.AddCostControlParentDetail(parentDetail);
}
if (installation.SuperInstallationId != null) //还存在上级节点,需要继续循环
{
UpdateInstallationDetail(installation.SuperInstallationId, months, changeThisPlanValue, changeThisRealCost, changeThisPlanCost);
}
}
}
/// <summary>
/// 更新周装置
/// </summary>
/// <param name="years"></param>
/// <param name="months"></param>
/// <param name="planValue"></param>
/// <param name="parentId"></param>
private void UpdateWeekInstallationDetail(string installationId, DateTime months, DateTime startDate, DateTime endDate, decimal changeThisPlanValue, decimal changeThisRealCost, decimal changeThisPlanCost)
{
Model.Project_Installation installation = BLL.Project_InstallationService.GetInstallationByInstallationId(installationId);
if (installation != null)
{
Model.WBS_CostControlParentDetail parentDetail = BLL.CostControlParentDetailService.GetCostControlParentDetailByParentIdAndMonths(installationId, months);
if (parentDetail != null)
{
parentDetail.ThisPlanValue += changeThisPlanValue;
parentDetail.ThisRealCost += changeThisRealCost;
parentDetail.ThisPlanCost += changeThisPlanCost;
BLL.CostControlParentDetailService.UpdateCostControlParentDetail(parentDetail);
}
else
{
parentDetail = new Model.WBS_CostControlParentDetail();
parentDetail.CostControlParentDetailId = SQLHelper.GetNewID();
parentDetail.ParentId = installationId;
parentDetail.Months = months;
parentDetail.StartDate = startDate;
parentDetail.EndDate = endDate;
parentDetail.ThisPlanValue = changeThisPlanValue;
parentDetail.ThisRealCost = changeThisRealCost;
parentDetail.ThisPlanCost = changeThisPlanCost;
BLL.CostControlParentDetailService.AddCostControlParentDetail(parentDetail);
}
if (installation.SuperInstallationId != null) //还存在上级节点,需要继续循环
{
UpdateWeekInstallationDetail(installation.SuperInstallationId, months, startDate, endDate, changeThisPlanValue, changeThisRealCost, changeThisPlanCost);
}
}
}
#endregion
#region
private string upStartDate = string.Empty;
private string upEndDate = string.Empty;
protected void Grid1_RowDataBound(object sender, GridRowEventArgs e)
{
string id = e.RowID;
}
/// <summary>
/// 绑定数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_FilterChange(object sender, EventArgs e)
{
BindGrid();
}
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
Grid1.PageIndex = e.NewPageIndex;
BindGrid();
}
/// <summary>
/// Grid1排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, GridSortEventArgs e)
{
Grid1.SortDirection = e.SortDirection;
Grid1.SortField = e.SortField;
BindGrid();
}
/// <summary>
/// 分页下拉选择事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
BindGrid();
}
/// <summary>
/// 加载Grid
/// </summary>
private void BindGrid()
{
if (!string.IsNullOrEmpty(this.txtMonths.Text.Trim()))
{
DateTime months = Convert.ToDateTime(this.txtMonths.Text.Trim() + "-01");
//var codeList = BLL.WbsSetMatchCostControlService.GetWbsSetMatchCostControls(this.trWBS.SelectedNodeID);
//Model.Wbs_WbsSet wbeSet = BLL.WbsSetService.GetWbsSetByWbsSetId(this.trWBS.SelectedNodeID);
//if (codeList.Count > 0) //存在费控对应关系项
//{
//List<string> codes = new List<string>();
//foreach (var item in codeList)
//{
// codes.Add(item.CostControlCode);
//}
//var list = BLL.CostControlService.GetCostControlsByCostControlCodes(codes, this.trWBS.SelectedNodeID);
var list = BLL.CostControlService.GetSelectedCostControlsByWbsSetId(this.trWBS.SelectedNodeID);
if (list.Count > 0)
{
List<Model.View_WBS_CostControlDetail> details = new List<Model.View_WBS_CostControlDetail>();
//if (this.drpWeek.SelectedValue == BLL.Const._Null) //月份记录
//{
this.Grid1.Columns[4].HeaderText = "本月计划完成量";
this.Grid1.Columns[7].HeaderText = "本月完成量";
foreach (var item in list)
{
Model.View_WBS_CostControlDetail detail = BLL.CostControlDetailService.GetViewCostControlDetailByCostControlIdAndMonth(item.CostControlId, months);
if (detail == null)
{
detail = new Model.View_WBS_CostControlDetail();
detail.CostControlDetailId = SQLHelper.GetNewID();
detail.CostControlId = item.CostControlId;
detail.CostControlCode = item.CostControlCode;
detail.CostControlName = item.CostControlName;
detail.TotalNum = item.TotalNum;
detail.Unit = item.Unit;
detail.PlanNum = null;
detail.RealPrice = item.RealPrice;
detail.PlanPrice = item.PlanPrice;
}
if (detail.ThisNum == 0)
{
detail.ThisNum = null;
}
details.Add(detail);
}
//}
//else //周记录
//{
// this.Grid1.Columns[4].HeaderText = "本周计划完成量";
// this.Grid1.Columns[7].HeaderText = "本周完成量";
// foreach (var item in list)
// {
// if (item.TotalNum != null)
// {
// DateTime startDate = Convert.ToDateTime(this.drpWeek.SelectedValue.Split(',')[0]);
// Model.View_WBS_CostControlDetail detail = BLL.CostControlDetailService.GetViewCostControlDetailByCostControlIdAndMonthWeek(item.CostControlId, months, startDate);
// if (detail == null)
// {
// detail = new Model.View_WBS_CostControlDetail();
// detail.CostControlDetailId = SQLHelper.GetNewID();
// detail.CostControlId = item.CostControlId;
// detail.CostControlCode = item.CostControlCode;
// detail.CostControlName = item.CostControlName;
// detail.TotalNum = item.TotalNum;
// detail.Unit = item.Unit;
// detail.PlanNum = null;
// detail.RealPrice = item.RealPrice;
// detail.PlanPrice = item.PlanPrice;
// }
// else
// {
// Model.WBS_CostControlDetail oldDetail = BLL.CostControlDetailService.GetCostControlDetailByCostControlDetailId(detail.CostControlDetailId);
// if (oldDetail.PlanNum != null)
// {
// detail.PlanNum = Convert.ToDouble(oldDetail.PlanNum);
// }
// else
// {
// detail.PlanNum = null;
// }
// if (oldDetail.ThisNum != null)
// {
// detail.ThisNum = Convert.ToDouble(oldDetail.ThisNum);
// }
// else
// {
// detail.ThisNum = null;
// }
// }
// details.Add(detail);
// }
// }
//}
Grid1.DataSource = details;
Grid1.DataBind();
}
else
{
Grid1.DataSource = null;
Grid1.DataBind();
}
}
}
#endregion
#region
/// <summary>
/// 获取按钮权限
/// </summary>
/// <param name="button"></param>
/// <returns></returns>
private void GetButtonPower()
{
if (Request.Params["value"] == "0")
{
return;
}
var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.WorkloadInputMenuId);
if (buttonList.Count() > 0)
{
if (buttonList.Contains(BLL.Const.BtnSave))
{
this.btnMenuEdit.Hidden = false;
}
}
}
#endregion
#region
protected void InitWeek()
{
if (!string.IsNullOrEmpty(this.txtMonths.Text.Trim()))
{
DateTime months = Convert.ToDateTime(this.txtMonths.Text.Trim() + "-01");
string costControlId = string.Empty;
var list = BLL.CostControlService.GetCostControlsByWbsSetId(this.trWBS.SelectedNodeID);
if (list.Count > 0)
{
foreach (var item in list)
{
if (item.TotalNum != null)
{
if (BLL.CostControlDetailService.IsExitWeekCostControlDetailByCostControlIdAndMonth(item.CostControlId, months))
{
//BLL.CostControlDetailService.InitWeekPlanList(this.drpWeek, item.CostControlId, months, true);
//this.drpWeek.SelectedValue = BLL.Const._Null;
break;
}
}
}
}
}
}
#endregion
#region
/// <summary>
/// 月份选择事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void txtMonths_TextChanged(object sender, EventArgs e)
{
BindGrid();
//InitWeek();
}
#endregion
protected void drpWeek_SelectedIndexChanged(object sender, EventArgs e)
{
BindGrid();
}
}
}