ChengDa_English/SGGL/FineUIPro.Web/JDGL/WBSPlan/WBSPlanSet.aspx.cs

2272 lines
135 KiB
C#
Raw Permalink 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 BLL;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.JDGL.WBSPlan
{
public partial class WBSPlanSet : PageBase
{
#region
/// <summary>
/// 页面加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
InitTreeMenu();
}
else
{
if (GetRequestEventArgument() == "UPDATE_SUMMARY")
{
// 页面要求重新计算合计行的值
OutputSummaryData();
}
}
}
#endregion
#region
/// <summary>
/// 计算合计
/// </summary>
private void OutputSummaryData()
{
decimal totalValue = 0, totalRate = 0, moneys = 0;
int i = 0;
JArray mergedData = Grid1.GetMergedData();
if (mergedData.Count() > 0)
{
JObject firstValues = mergedData[0].Value<JObject>("values");
if (!string.IsNullOrEmpty(firstValues.Value<string>("WeightsMoney")))
{
moneys = Convert.ToDecimal(firstValues.Value<string>("WeightsMoney"));
moneys = decimal.Round(moneys, 2);
}
foreach (JObject mergedRow in mergedData)
{
JObject values = mergedRow.Value<JObject>("values");
if (!string.IsNullOrEmpty(values.Value<string>("PlanValue")))
{
totalValue += Convert.ToDecimal(values.Value<string>("PlanValue"));
}
else
{
totalValue += 0;
}
if (moneys != 0)
{
totalRate = decimal.Round(totalValue / moneys * 100, 2);
}
else
{
totalRate = 0;
}
this.Grid1.Rows[i].Values[1] = values.Value<string>("PlanValue");
this.Grid1.Rows[i].Values[2] = totalValue;
this.Grid1.Rows[i].Values[3] = totalRate;
i++;
}
JObject summary = new JObject();
summary.Add("YearsMonthsStr", "未分配费用余额:");
summary.Add("PlanValue", moneys - totalValue);
Grid1.SummaryData = summary;
}
}
#endregion
#region
/// <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 installations = from x in Funs.DB.Project_Installation where x.ProjectId == this.CurrUser.LoginProjectId orderby x.InstallationCode select x;
foreach (var installation in installations)
{
TreeNode rootNode = new TreeNode();
rootNode.Text = installation.InstallationName;
rootNode.NodeID = installation.InstallationId;
rootNode.CommandName = "installation";
rootNode.CommandArgument = installation.Weights == null ? null : installation.Weights.ToString();
rootNode.ToolTip = installation.InstallationCode;
rootNode.EnableExpandEvent = true;
rootNode.EnableClickEvent = true;
this.trWBS.Nodes.Add(rootNode);
if (string.IsNullOrEmpty(Request.Params["ToWbs"])) //非计划调整弹出页面
{
TreeNode emptyNode = new TreeNode();
emptyNode.Text = "";
emptyNode.NodeID = "";
rootNode.Nodes.Add(emptyNode);
}
else //导航弹出页面
{
Model.Wbs_WbsSet wbsSetParm = BLL.WbsSetService.GetWbsSetByWbsSetId(Request.Params["ToWbs"]);
if (wbsSetParm != null)
{
string wbsSetParentId1 = string.Empty;
string wbsSetParentId2 = string.Empty;
string wbsSetParentId3 = string.Empty;
if (!string.IsNullOrEmpty(wbsSetParm.SuperWbsSetId))
{
wbsSetParentId1 = wbsSetParm.SuperWbsSetId;
Model.Wbs_WbsSet wbsSetParent1 = BLL.WbsSetService.GetWbsSetByWbsSetId(wbsSetParentId1);
if (wbsSetParent1 != null)
{
if (!string.IsNullOrEmpty(wbsSetParent1.SuperWbsSetId))
{
wbsSetParentId2 = wbsSetParent1.SuperWbsSetId;
Model.Wbs_WbsSet wbsSetParent2 = BLL.WbsSetService.GetWbsSetByWbsSetId(wbsSetParentId2);
if (wbsSetParent2 != null)
{
if (!string.IsNullOrEmpty(wbsSetParent2.SuperWbsSetId))
{
wbsSetParentId3 = wbsSetParent2.SuperWbsSetId;
}
}
}
}
}
Model.Wbs_UnitProject unitProject1 = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(wbsSetParm.UnitProjectId);
Model.WBS_CnProfession cnProfession1 = BLL.CnProfessionService.GetCnProfessionByCnProfessionId(wbsSetParm.CnProfessionId);
if (cnProfession1 != null)
{
if (cnProfession1.InstallationId == installation.InstallationId)
{
rootNode.Expanded = true;
var cnProfessions = from x in Funs.DB.WBS_CnProfession where x.InstallationId == cnProfession1.InstallationId orderby x.OldId select x;
foreach (var cnProfession in cnProfessions)
{
var unitProjects1 = from x in Funs.DB.Wbs_UnitProject where x.CnProfessionId == cnProfession.CnProfessionId && x.IsApprove == true select x;
if (unitProjects1.Count() > 0)
{
TreeNode newCnProfessionNode = new TreeNode();
newCnProfessionNode.Text = cnProfession.CnProfessionName;
newCnProfessionNode.NodeID = cnProfession.CnProfessionId;
newCnProfessionNode.CommandName = "cnProfession";
newCnProfessionNode.CommandArgument = cnProfession.Weights == null ? null : cnProfession.Weights.ToString();
newCnProfessionNode.ToolTip = cnProfession.CnProfessionCode;
newCnProfessionNode.EnableExpandEvent = true;
newCnProfessionNode.EnableClickEvent = true;
rootNode.Nodes.Add(newCnProfessionNode);
if (cnProfession.CnProfessionId != cnProfession1.CnProfessionId)
{
TreeNode emptyNode = new TreeNode();
emptyNode.Text = "";
emptyNode.NodeID = "";
newCnProfessionNode.Nodes.Add(emptyNode);
}
else
{
newCnProfessionNode.Expanded = true;
var unitProjects = from x in Funs.DB.Wbs_UnitProject where x.CnProfessionId == cnProfession1.CnProfessionId && x.SuperUnitProjectId == null && x.IsApprove == true orderby x.UnitProjectCode select x;
foreach (var unitProject in unitProjects)
{
TreeNode newUnitProjectNode = new TreeNode();
newUnitProjectNode.Text = unitProject.UnitProjectName;
newUnitProjectNode.NodeID = unitProject.UnitProjectId;
newUnitProjectNode.CommandName = "unitProject";
newUnitProjectNode.CommandArgument = unitProject.Weights == null ? null : unitProject.Weights.ToString();
newUnitProjectNode.ToolTip = unitProject.UnitProjectCode;
newUnitProjectNode.EnableExpandEvent = true;
newUnitProjectNode.EnableClickEvent = true;
newCnProfessionNode.Nodes.Add(newUnitProjectNode);
if (unitProject1.SuperUnitProjectId == null) //不存在子单位工程
{
if (unitProject1.UnitProjectId != unitProject.UnitProjectId)
{
TreeNode emptyNode = new TreeNode();
emptyNode.Text = "";
emptyNode.NodeID = "";
newUnitProjectNode.Nodes.Add(emptyNode);
}
else
{
newUnitProjectNode.Expanded = true;
var wbsSet1s = from x in Funs.DB.Wbs_WbsSet where x.Flag == 1 && x.UnitProjectId == unitProject1.UnitProjectId && x.IsApprove == true orderby x.WbsSetCode select x;
if (wbsSet1s.Count() > 0)
{
foreach (var wbsSet1 in wbsSet1s)
{
TreeNode newwbsSet1Node = new TreeNode();
newwbsSet1Node.Text = wbsSet1.WbsSetName;
newwbsSet1Node.NodeID = wbsSet1.WbsSetId;
newwbsSet1Node.CommandName = "wbsSet";
newwbsSet1Node.CommandArgument = wbsSet1.Weights == null ? null : wbsSet1.Weights.ToString();
newwbsSet1Node.ToolTip = wbsSet1.WbsSetCode;
newwbsSet1Node.EnableExpandEvent = true;
newwbsSet1Node.EnableClickEvent = true;
newUnitProjectNode.Nodes.Add(newwbsSet1Node);
var childWbsSets2 = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(newwbsSet1Node.NodeID);
if (childWbsSets2.Count() > 0)
{
if (BLL.WbsSetService.IsExitWbsSetById(wbsSet1.WbsSetId, wbsSetParm.WbsSetId))
{
newwbsSet1Node.Expanded = true;
foreach (var wbsSet2 in childWbsSets2)
{
TreeNode newwbsSet2Node = new TreeNode();
newwbsSet2Node.Text = wbsSet2.WbsSetName;
newwbsSet2Node.NodeID = wbsSet2.WbsSetId;
newwbsSet2Node.CommandName = "wbsSet";
newwbsSet2Node.CommandArgument = wbsSet2.Weights == null ? null : wbsSet2.Weights.ToString();
newwbsSet2Node.ToolTip = wbsSet2.WbsSetCode;
newwbsSet2Node.EnableExpandEvent = true;
newwbsSet2Node.EnableClickEvent = true;
newwbsSet1Node.Nodes.Add(newwbsSet2Node);
var childWbsSets3 = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(newwbsSet2Node.NodeID);
if (BLL.WbsSetService.IsExitWbsSetById(wbsSet2.WbsSetId, wbsSetParm.WbsSetId))
{
newwbsSet2Node.Expanded = true;
if (childWbsSets3.Count() > 0)
{
foreach (var wbsSet3 in childWbsSets3)
{
TreeNode newwbsSet3Node = new TreeNode();
newwbsSet3Node.Text = wbsSet3.WbsSetName;
newwbsSet3Node.NodeID = wbsSet3.WbsSetId;
newwbsSet3Node.CommandName = "wbsSet";
newwbsSet3Node.CommandArgument = wbsSet3.Weights == null ? null : wbsSet3.Weights.ToString();
newwbsSet3Node.ToolTip = wbsSet3.WbsSetCode;
newwbsSet3Node.EnableExpandEvent = true;
newwbsSet3Node.EnableClickEvent = true;
newwbsSet2Node.Nodes.Add(newwbsSet3Node);
var childWbsSets4 = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(newwbsSet3Node.NodeID);
if (BLL.WbsSetService.IsExitWbsSetById(wbsSet3.WbsSetId, wbsSetParm.WbsSetId))
{
newwbsSet3Node.Expanded = true;
if (childWbsSets4.Count() > 0)
{
foreach (var wbsSet4 in childWbsSets4)
{
TreeNode newwbsSet4Node = new TreeNode();
newwbsSet4Node.Text = wbsSet4.WbsSetName;
newwbsSet4Node.NodeID = wbsSet4.WbsSetId;
newwbsSet4Node.CommandName = "wbsSet";
newwbsSet4Node.CommandArgument = wbsSet4.Weights == null ? null : wbsSet4.Weights.ToString();
newwbsSet4Node.ToolTip = wbsSet4.WbsSetCode;
newwbsSet4Node.EnableExpandEvent = true;
newwbsSet4Node.EnableClickEvent = true;
newwbsSet3Node.Nodes.Add(newwbsSet4Node);
}
}
}
else
{
if (childWbsSets4.Count() > 0)
{
TreeNode emptyNode = new TreeNode();
emptyNode.Text = "";
emptyNode.NodeID = "";
newwbsSet3Node.Nodes.Add(emptyNode);
}
}
}
}
}
else
{
if (childWbsSets3.Count() > 0)
{
TreeNode emptyNode = new TreeNode();
emptyNode.Text = "";
emptyNode.NodeID = "";
newwbsSet2Node.Nodes.Add(emptyNode);
}
}
}
}
else
{
TreeNode emptyNode = new TreeNode();
emptyNode.Text = "";
emptyNode.NodeID = "";
newwbsSet1Node.Nodes.Add(emptyNode);
}
}
}
}
else //单位工程下直接是分项内容,如质量行为
{
var wbsSet3s = from x in Funs.DB.Wbs_WbsSet where x.Flag == 3 && x.UnitProjectId == unitProject1.UnitProjectId && x.IsApprove == true orderby x.WbsSetCode select x;
if (wbsSet3s.Count() > 0)
{
foreach (var wbsSet3 in wbsSet3s)
{
TreeNode newwbsSet3Node = new TreeNode();
newwbsSet3Node.Text = wbsSet3.WbsSetName;
newwbsSet3Node.NodeID = wbsSet3.WbsSetId;
newwbsSet3Node.CommandName = "wbsSet";
newwbsSet3Node.CommandArgument = wbsSet3.Weights == null ? null : wbsSet3.Weights.ToString();
newwbsSet3Node.ToolTip = wbsSet3.WbsSetCode;
newwbsSet3Node.EnableExpandEvent = true;
newwbsSet3Node.EnableClickEvent = true;
newUnitProjectNode.Nodes.Add(newwbsSet3Node);
}
}
}
}
}
else //存在子单位工程
{
if (unitProject1.SuperUnitProjectId != unitProject.UnitProjectId)
{
TreeNode emptyNode = new TreeNode();
emptyNode.Text = "";
emptyNode.NodeID = "";
newUnitProjectNode.Nodes.Add(emptyNode);
}
else
{
newUnitProjectNode.Expanded = true;
var childUnitProjects = BLL.UnitProjectService.GetUnitProjectsBySuperUnitProjectId(newUnitProjectNode.NodeID);
foreach (var childUnitProject in childUnitProjects)
{
TreeNode newChildUnitProjectNode = new TreeNode();
newChildUnitProjectNode.Text = childUnitProject.UnitProjectName;
newChildUnitProjectNode.NodeID = childUnitProject.UnitProjectId;
newChildUnitProjectNode.CommandName = "childUnitProject";
newChildUnitProjectNode.CommandArgument = childUnitProject.Weights == null ? null : childUnitProject.Weights.ToString();
newChildUnitProjectNode.ToolTip = childUnitProject.UnitProjectCode;
newChildUnitProjectNode.EnableExpandEvent = true;
newChildUnitProjectNode.EnableClickEvent = true;
newUnitProjectNode.Nodes.Add(newChildUnitProjectNode);
if (unitProject1.UnitProjectId != childUnitProject.UnitProjectId)
{
TreeNode emptyNode = new TreeNode();
emptyNode.Text = "";
emptyNode.NodeID = "";
newChildUnitProjectNode.Nodes.Add(emptyNode);
}
else
{
newChildUnitProjectNode.Expanded = true;
var wbsSet1s = from x in Funs.DB.Wbs_WbsSet where x.Flag == 1 && x.UnitProjectId == unitProject1.UnitProjectId && x.IsApprove == true orderby x.WbsSetCode select x;
foreach (var wbsSet1 in wbsSet1s)
{
TreeNode newwbsSet1Node = new TreeNode();
newwbsSet1Node.Text = wbsSet1.WbsSetName;
newwbsSet1Node.NodeID = wbsSet1.WbsSetId;
newwbsSet1Node.CommandName = "wbsSet";
newwbsSet1Node.CommandArgument = wbsSet1.Weights == null ? null : wbsSet1.Weights.ToString();
newwbsSet1Node.ToolTip = wbsSet1.WbsSetCode;
newwbsSet1Node.EnableExpandEvent = true;
newwbsSet1Node.EnableClickEvent = true;
newChildUnitProjectNode.Nodes.Add(newwbsSet1Node);
var childWbsSets2 = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(newwbsSet1Node.NodeID);
if (childWbsSets2.Count() > 0)
{
if (BLL.WbsSetService.IsExitWbsSetById(wbsSet1.WbsSetId, wbsSetParm.WbsSetId))
{
newwbsSet1Node.Expanded = true;
foreach (var wbsSet2 in childWbsSets2)
{
TreeNode newwbsSet2Node = new TreeNode();
newwbsSet2Node.Text = wbsSet2.WbsSetName;
newwbsSet2Node.NodeID = wbsSet2.WbsSetId;
newwbsSet2Node.CommandName = "wbsSet";
newwbsSet2Node.CommandArgument = wbsSet2.Weights == null ? null : wbsSet2.Weights.ToString();
newwbsSet2Node.ToolTip = wbsSet2.WbsSetCode;
newwbsSet2Node.EnableExpandEvent = true;
newwbsSet2Node.EnableClickEvent = true;
newwbsSet1Node.Nodes.Add(newwbsSet2Node);
var childWbsSets3 = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(newwbsSet2Node.NodeID);
if (BLL.WbsSetService.IsExitWbsSetById(wbsSet2.WbsSetId, wbsSetParm.WbsSetId))
{
newwbsSet2Node.Expanded = true;
if (childWbsSets3.Count() > 0)
{
foreach (var wbsSet3 in childWbsSets3)
{
TreeNode newwbsSet3Node = new TreeNode();
newwbsSet3Node.Text = wbsSet3.WbsSetName;
newwbsSet3Node.NodeID = wbsSet3.WbsSetId;
newwbsSet3Node.CommandName = "wbsSet";
newwbsSet3Node.CommandArgument = wbsSet3.Weights == null ? null : wbsSet3.Weights.ToString();
newwbsSet3Node.ToolTip = wbsSet3.WbsSetCode;
newwbsSet3Node.EnableExpandEvent = true;
newwbsSet3Node.EnableClickEvent = true;
newwbsSet2Node.Nodes.Add(newwbsSet3Node);
var childWbsSets4 = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(newwbsSet3Node.NodeID);
if (BLL.WbsSetService.IsExitWbsSetById(wbsSet3.WbsSetId, wbsSetParm.WbsSetId))
{
newwbsSet3Node.Expanded = true;
if (childWbsSets4.Count() > 0)
{
foreach (var wbsSet4 in childWbsSets4)
{
TreeNode newwbsSet4Node = new TreeNode();
newwbsSet4Node.Text = wbsSet4.WbsSetName;
newwbsSet4Node.NodeID = wbsSet4.WbsSetId;
newwbsSet4Node.CommandName = "wbsSet";
newwbsSet4Node.CommandArgument = wbsSet4.Weights == null ? null : wbsSet4.Weights.ToString();
newwbsSet4Node.ToolTip = wbsSet4.WbsSetCode;
newwbsSet4Node.EnableExpandEvent = true;
newwbsSet4Node.EnableClickEvent = true;
newwbsSet3Node.Nodes.Add(newwbsSet4Node);
}
}
}
else
{
if (childWbsSets4.Count() > 0)
{
TreeNode emptyNode = new TreeNode();
emptyNode.Text = "";
emptyNode.NodeID = "";
newwbsSet3Node.Nodes.Add(emptyNode);
}
}
}
}
}
else
{
if (childWbsSets3.Count() > 0)
{
TreeNode emptyNode = new TreeNode();
emptyNode.Text = "";
emptyNode.NodeID = "";
newwbsSet2Node.Nodes.Add(emptyNode);
}
}
}
}
else
{
TreeNode emptyNode = new TreeNode();
emptyNode.Text = "";
emptyNode.NodeID = "";
newwbsSet1Node.Nodes.Add(emptyNode);
}
}
}
}
}
}
}
}
}
}
}
}
}
this.trWBS.SelectedNodeID = wbsSetParm.WbsSetId;
this.GetGridTitle();
BindGrid();
OutputSummaryData();
}
}
}
}
#endregion
#region
/// <summary>
/// 展开树
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void trWBS_NodeExpand(object sender, TreeNodeEventArgs e)
{
e.Node.Nodes.Clear();
if (e.Node.CommandName == "installation") //展开装置/单元节点
{
var cnProfessions = from x in Funs.DB.WBS_CnProfession where x.InstallationId == e.Node.NodeID orderby x.OldId select x;
foreach (var cnProfession in cnProfessions)
{
var unitProjects = from x in Funs.DB.Wbs_UnitProject where x.CnProfessionId == cnProfession.CnProfessionId && x.IsApprove == true select x;
if (unitProjects.Count() > 0)
{
TreeNode newNode = new TreeNode();
newNode.Text = cnProfession.CnProfessionName;
newNode.NodeID = cnProfession.CnProfessionId;
newNode.CommandName = "cnProfession";
newNode.CommandArgument = cnProfession.Weights == null ? null : cnProfession.Weights.ToString();
newNode.ToolTip = cnProfession.CnProfessionCode;
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 == "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.CommandArgument = unitProject.Weights == null ? null : unitProject.Weights.ToString();
newNode.ToolTip = unitProject.UnitProjectCode;
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 == "unitProject") //展开单位工程节点
{
var childUnitProjects = from x in Funs.DB.Wbs_UnitProject where x.SuperUnitProjectId == e.Node.NodeID && x.IsApprove == true orderby x.SortIndex, x.UnitProjectCode select x;
if (childUnitProjects.Count() > 0) //存在子单位工程
{
foreach (var childUnitProject in childUnitProjects)
{
TreeNode newNode = new TreeNode();
newNode.Text = childUnitProject.UnitProjectName;
newNode.NodeID = childUnitProject.UnitProjectId;
newNode.CommandName = "childUnitProject";
newNode.CommandArgument = childUnitProject.Weights == null ? null : childUnitProject.Weights.ToString();
newNode.ToolTip = childUnitProject.UnitProjectCode;
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 wbsSet1s = from x in Funs.DB.Wbs_WbsSet where x.Flag == 1 && x.UnitProjectId == e.Node.NodeID && x.IsApprove == true orderby x.SortIndex, 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.CommandArgument = wbsSet1.Weights == null ? null : wbsSet1.Weights.ToString();
newNode.ToolTip = wbsSet1.WbsSetCode;
newNode.EnableExpandEvent = true;
newNode.EnableClickEvent = true;
e.Node.Nodes.Add(newNode);
var childWbsSets2 = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(newNode.NodeID);
if (childWbsSets2.Count() > 0)
{
TreeNode emptyNode = new TreeNode();
emptyNode.Text = "";
emptyNode.NodeID = "";
newNode.Nodes.Add(emptyNode);
}
}
}
else //单位工程下直接是分项内容,如质量行为
{
var wbsSet3s = from x in Funs.DB.Wbs_WbsSet where x.Flag == 3 && x.UnitProjectId == e.Node.NodeID && x.IsApprove == true orderby x.SortIndex, x.WbsSetCode select x;
if (wbsSet3s.Count() > 0)
{
foreach (var wbsSet3 in wbsSet3s)
{
TreeNode newNode = new TreeNode();
newNode.Text = wbsSet3.WbsSetName;
newNode.NodeID = wbsSet3.WbsSetId;
newNode.CommandName = "wbsSet";
newNode.CommandArgument = wbsSet3.Weights == null ? null : wbsSet3.Weights.ToString();
newNode.ToolTip = wbsSet3.WbsSetCode;
newNode.EnableExpandEvent = true;
newNode.EnableClickEvent = true;
e.Node.Nodes.Add(newNode);
var childWbsSets2 = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(newNode.NodeID);
if (childWbsSets2.Count() > 0)
{
TreeNode emptyNode = new TreeNode();
emptyNode.Text = "";
emptyNode.NodeID = "";
newNode.Nodes.Add(emptyNode);
}
}
}
}
}
}
else if (e.Node.CommandName == "childUnitProject") //展开子单位工程节点
{
var wbsSet1s = from x in Funs.DB.Wbs_WbsSet where x.Flag == 1 && x.UnitProjectId == e.Node.NodeID && x.IsApprove == true orderby x.SortIndex, x.WbsSetCode select x;
foreach (var wbsSet1 in wbsSet1s)
{
TreeNode newNode = new TreeNode();
newNode.Text = wbsSet1.WbsSetName;
newNode.NodeID = wbsSet1.WbsSetId;
newNode.CommandName = "wbsSet";
newNode.CommandArgument = wbsSet1.Weights == null ? null : wbsSet1.Weights.ToString();
newNode.ToolTip = wbsSet1.WbsSetCode;
newNode.EnableExpandEvent = true;
newNode.EnableClickEvent = true;
e.Node.Nodes.Add(newNode);
var childWbsSets2 = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(newNode.NodeID);
if (childWbsSets2.Count() > 0)
{
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.CommandArgument = wbsSet.Weights == null ? null : wbsSet.Weights.ToString();
newNode.ToolTip = wbsSet.WbsSetCode;
newNode.EnableExpandEvent = true;
newNode.EnableClickEvent = true;
e.Node.Nodes.Add(newNode);
var childWbsSets2 = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(newNode.NodeID);
if (childWbsSets2.Count() > 0)
{
TreeNode emptyNode = new TreeNode();
emptyNode.Text = "";
emptyNode.NodeID = "";
newNode.Nodes.Add(emptyNode);
}
}
}
}
#endregion
#region Grid表头
/// <summary>
/// 获取Grid表头
/// </summary>
private void GetGridTitle()
{
this.Grid1.Title = string.Empty;
string title = string.Empty;
string nodeTooltip = string.Empty;
string nodeText = string.Empty;
TreeNode parent1 = new TreeNode();
if (this.trWBS.SelectedNode != null)
{
nodeTooltip = this.trWBS.SelectedNode.ToolTip;
nodeText = this.trWBS.SelectedNode.Text;
parent1 = this.trWBS.SelectedNode.ParentNode;
}
if (parent1 != null)
{
TreeNode parent2 = parent1.ParentNode;
if (parent2 != null)
{
TreeNode parent3 = parent2.ParentNode;
if (parent3 != null)
{
TreeNode parent4 = parent3.ParentNode;
if (parent4 != null)
{
TreeNode parent5 = parent4.ParentNode;
if (parent5 != null)
{
TreeNode parent6 = parent5.ParentNode;
if (parent6 != null)
{
title = parent6.ToolTip + "-" + parent5.ToolTip + "-" + nodeTooltip + "/" + parent6.Text + "-" + parent5.Text + "-" + parent4.Text + "-" + parent3.Text + "-" + parent2.Text + "-" + parent1.Text + "-" + nodeText;
}
else
{
if (parent5.CommandName == "installation")
{
title = parent5.ToolTip + "-" + parent4.ToolTip + "-" + nodeTooltip + "/" + parent5.Text + "-" + parent4.Text + "-" + parent3.Text + "-" + parent2.Text + "-" + parent1.Text + "-" + nodeText;
}
}
}
else
{
if (parent4.CommandName == "installation")
{
title = parent4.ToolTip + "-" + parent3.ToolTip + "-" + nodeTooltip + "/" + parent4.Text + "-" + parent3.Text + "-" + parent2.Text + "-" + parent1.Text + "-" + nodeText;
}
}
}
else
{
if (parent3.CommandName == "installation")
{
title = parent3.ToolTip + "-" + parent2.ToolTip + "-" + nodeTooltip + "/" + parent3.Text + "-" + parent2.Text + "-" + parent1.Text + "-" + nodeText;
}
}
}
else
{
if (parent2.CommandName == "installation")
{
title = parent2.ToolTip + "-" + parent1.ToolTip + "-" + nodeTooltip + "/" + parent2.Text + "-" + parent1.Text + "-" + nodeText;
}
}
}
else
{
if (parent1.CommandName == "installation")
{
title = parent1.ToolTip + "-" + nodeTooltip + "/" + parent1.Text + "-" + nodeText;
}
}
}
else
{
title = nodeTooltip + "/" + nodeText;
}
this.Grid1.Title = title;
}
#endregion
#region Tree点击事件
/// <summary>
/// Tree点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void trWBS_NodeCommand(object sender, TreeCommandEventArgs e)
{
GetGridTitle();
BindGrid();
OutputSummaryData();
}
#endregion
#region
/// <summary>
/// 保存方法
/// </summary>
/// <param name="message"></param>
private void SaveData(string message)
{
decimal totalValue = 0, moneys = 0;
JArray mergedData = Grid1.GetMergedData();
JObject firstValues = mergedData[0].Value<JObject>("values");
if (!string.IsNullOrEmpty(firstValues.Value<string>("WeightsMoney")))
{
moneys = Convert.ToDecimal(firstValues.Value<string>("WeightsMoney"));
}
foreach (JObject mergedRow in mergedData)
{
JObject values = mergedRow.Value<JObject>("values");
if (!string.IsNullOrEmpty(values.Value<string>("PlanValue")))
{
totalValue += Convert.ToDecimal(values.Value<string>("PlanValue"));
}
else
{
totalValue += 0;
}
}
if (moneys != totalValue)
{
Alert.ShowInTop("金额分配不符合要求!", MessageBoxIcon.Warning);
return;
}
Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(this.trWBS.SelectedNodeID);
if (wbsSet != null)
{
if (wbsSet.IsPlanApprove == true)
{
wbsSet.IsPlanApprove = null;
BLL.WbsSetService.UpdateWbsSet(wbsSet);
btnSave.ConfirmText = string.Empty;
var details = from x in Funs.DB.WbsDetail where x.ToWbs == wbsSet.WbsSetId select x;
if (details.Count() > 0)
{
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);
}
}
}
}
string type = this.trWBS.SelectedNode.CommandName;
if (type == "wbsSet")
{
var childWbsSets = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(this.trWBS.SelectedNodeID);
if (childWbsSets.Count == 0) //当前为末级
{
foreach (JObject mergedRow in mergedData)
{
Model.WbsDetail detail = new Model.WbsDetail();
JObject values = mergedRow.Value<JObject>("values");
detail.WbsDetailId = values.Value<string>("WbsDetailId");
var oldDetail = BLL.WbsDetailService.GetWbsDetailByWbsDetailId(detail.WbsDetailId);
detail.ToWbs = values.Value<string>("ToWbs");
detail.ToFlag = Convert.ToInt32(values.Value<string>("ToFlag"));
detail.Way = values.Value<string>("Way");
detail.Months = Convert.ToDateTime(values.Value<string>("Months"));
if (!string.IsNullOrEmpty(values.Value<string>("PlanValue")))
{
detail.PlanValue = Convert.ToDecimal(values.Value<string>("PlanValue"));
oldDetail.PlanValue = Convert.ToDecimal(values.Value<string>("PlanValue"));
}
else
{
detail.PlanValue = 0;
oldDetail.PlanValue = 0;
}
if (moneys != 0)
{
detail.PlanValueRate = decimal.Round(Convert.ToDecimal(detail.PlanValue) / moneys * 100, 2);
oldDetail.PlanValueRate = detail.PlanValueRate;
}
else
{
detail.PlanValueRate = 0;
oldDetail.PlanValueRate = 0;
}
if (oldDetail == null)
{
BLL.WbsDetailService.AddWbsDetail(detail);
}
else
{
Funs.DB.SubmitChanges();
}
}
}
}
//BLL.Sys_LogService.AddLog(BLL.Const.System_9, this.CurrUser.LoginProjectId, this.CurrUser.UserId, "设置计划值");
if (!string.IsNullOrEmpty(Request.Params["ToWbs"]))
{
PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
}
else
{
if (!string.IsNullOrEmpty(message))
{
ShowNotify("保存成功!", MessageBoxIcon.Success);
}
}
}
#endregion
#region 2()
/// <summary>
/// 保存方法2(用于展开末级项时的自动保存)
/// </summary>
/// <param name="message"></param>
private void SaveData2()
{
Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(this.trWBS.SelectedNodeID);
for (int i = 0; i < this.Grid1.Rows.Count; i++)
{
string type = this.trWBS.SelectedNode.CommandName;
if (type == "wbsSet")
{
var childWbsSets = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(this.trWBS.SelectedNodeID);
if (childWbsSets.Count == 0) //当前为末级
{
Model.WbsDetail detail = new Model.WbsDetail();
detail.WbsDetailId = this.Grid1.Rows[i].Values[4].ToString();
detail.ToWbs = this.Grid1.Rows[i].Values[5].ToString();
detail.ToFlag = Convert.ToInt32(this.Grid1.Rows[i].Values[6].ToString());
detail.Way = this.Grid1.Rows[i].Values[7].ToString();
detail.Months = Convert.ToDateTime(this.Grid1.Rows[i].Values[9].ToString());
if (!string.IsNullOrEmpty(this.Grid1.Rows[i].Values[1].ToString()) && this.Grid1.Rows[i].Values[10].ToString() != "0")
{
detail.PlanValue = Convert.ToDecimal(this.Grid1.Rows[i].Values[1].ToString());
detail.PlanValueRate = decimal.Round(Convert.ToDecimal(detail.PlanValue) / Convert.ToDecimal(this.Grid1.Rows[i].Values[10].ToString()) * 100, 2);
}
var oldDetail = BLL.WbsDetailService.GetWbsDetailByWbsDetailId(detail.WbsDetailId);
if (oldDetail == null)
{
BLL.WbsDetailService.AddWbsDetail(detail);
}
}
}
}
//BLL.Sys_LogService.AddLog(BLL.Const.System_9, this.CurrUser.LoginProjectId, this.CurrUser.UserId, "设置计划值");
}
#endregion
#region
/// <summary>
/// 增加分部分项
/// </summary>
/// <param name="years"></param>
/// <param name="months"></param>
/// <param name="planValue"></param>
/// <param name="parentId"></param>
private void AddWbsParentDetail(DateTime months, decimal? planValue, string parentId, decimal? completeValue, decimal? realValue)
{
Model.Wbs_WbsSet parentWbsSet1 = BLL.WbsSetService.GetWbsSetByWbsSetId(parentId);
if (parentWbsSet1 != null)
{
if (parentWbsSet1.WeightsMoney != 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.CompleteValue = completeValue ?? 0;
newDetail1.RealValue = realValue ?? 0;
if (parentWbsSet1.WeightsMoney != null)
{
newDetail1.PlanValueRate = decimal.Round(Convert.ToDecimal(newDetail1.PlanValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
newDetail1.CompleteValueRate = decimal.Round(Convert.ToDecimal(newDetail1.CompleteValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
newDetail1.RealValueRate = decimal.Round(Convert.ToDecimal(newDetail1.RealValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
}
else
{
newDetail1.PlanValueRate = 0;
newDetail1.CompleteValueRate = 0;
newDetail1.RealValueRate = 0;
}
BLL.WbsDetailService.AddWbsDetail(newDetail1);
}
else
{
detail1.PlanValue += planValue ?? 0;
detail1.CompleteValue += completeValue ?? 0;
detail1.RealValue += realValue ?? 0;
if (parentWbsSet1.WeightsMoney != null)
{
detail1.PlanValueRate = decimal.Round(Convert.ToDecimal(detail1.PlanValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
detail1.CompleteValueRate = decimal.Round(Convert.ToDecimal(detail1.CompleteValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
detail1.RealValueRate = decimal.Round(Convert.ToDecimal(detail1.RealValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
}
else
{
detail1.PlanValueRate = 0;
detail1.CompleteValueRate = 0;
detail1.RealValueRate = 0;
}
BLL.WbsDetailService.UpdateWbsDetail(detail1);
}
AddWbsParentDetail(months, planValue, parentWbsSet1.SuperWbsSetId, completeValue, realValue);
}
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.CompleteValue = completeValue ?? 0;
newDetail1.RealValue = realValue ?? 0;
if (parentWbsSet1.WeightsMoney != null)
{
newDetail1.PlanValueRate = decimal.Round(Convert.ToDecimal(newDetail1.PlanValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
newDetail1.CompleteValueRate = decimal.Round(Convert.ToDecimal(newDetail1.CompleteValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
newDetail1.RealValueRate = decimal.Round(Convert.ToDecimal(newDetail1.RealValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
}
else
{
newDetail1.PlanValueRate = 0;
newDetail1.CompleteValueRate = 0;
newDetail1.RealValueRate = 0;
}
BLL.WbsDetailService.AddWbsDetail(newDetail1);
}
else
{
detail1.PlanValue += planValue;
detail1.CompleteValue += completeValue ?? 0;
detail1.RealValue += realValue ?? 0;
if (parentWbsSet1.WeightsMoney != null)
{
detail1.PlanValueRate = decimal.Round(Convert.ToDecimal(detail1.PlanValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
detail1.CompleteValueRate = decimal.Round(Convert.ToDecimal(detail1.CompleteValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
detail1.RealValueRate = decimal.Round(Convert.ToDecimal(detail1.RealValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
}
else
{
detail1.PlanValueRate = 0;
detail1.CompleteValueRate = 0;
detail1.RealValueRate = 0;
}
BLL.WbsDetailService.UpdateWbsDetail(detail1);
}
}
}
}
}
#endregion
#region
/// <summary>
/// 更新分部分项
/// </summary>
/// <param name="years"></param>
/// <param name="months"></param>
/// <param name="planValue"></param>
/// <param name="parentId"></param>
private 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
#region
/// <summary>
/// 保存
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSave_Click(object sender, EventArgs e)
{
if (this.Grid1.Rows.Count > 0)
{
SaveData("success");
}
else
{
Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning);
return;
}
}
#endregion
#region
/// <summary>
/// 查看之前版本
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSee_Click(object sender, EventArgs e)
{
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("SeeDetailHistory.aspx?ToWbs={0}", this.trWBS.SelectedNodeID, "编辑 - ")));
}
#endregion
#region
/// <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>
/// 加载Grid
/// </summary>
private void BindGrid()
{
this.btnSave.Hidden = true;
this.btnSee.Hidden = true;
DateTime startDate, endDate, startMonth, endMonth, parentStartDate, parentEndDate, parentStartMonth, parentEndMonth;
List<Model.WBSDetailItem> items = new List<Model.WBSDetailItem>();
List<DateTime> months = new List<DateTime>();
string column0 = string.Empty;
decimal totalValue = 0, totalRate = 0;
RenderField column = Grid1.FindColumn("PlanValue") as RenderField;
column.EnableColumnEdit = false;
if (this.trWBS.SelectedNode != null)
{
#region
if (this.trWBS.SelectedNode.CommandName == "wbsSet")
{
Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(this.trWBS.SelectedNode.NodeID);
if (wbsSet != null)
{
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);
column0 = "进度计划开始日期:" + string.Format("{0:yyyy-MM-dd}", startDate) + "<br/>进度计划结束日期:" + string.Format("{0:yyyy-MM-dd}", endDate);
this.Grid1.Columns[0].HeaderText = column0;
var childWbsSets = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(wbsSet.WbsSetId);
if (childWbsSets.Count == 0) //当前为末级
{
//获取父级节点的月份集合
List<DateTime> parentMonths = new List<DateTime>(); //父级节点的月份集合
string parentId = this.trWBS.SelectedNode.ParentNode.NodeID;
Model.Wbs_WbsSet parentWbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(parentId);
if (parentWbsSet != null) //父级为分部
{
parentStartDate = Convert.ToDateTime(parentWbsSet.StartDate);
parentEndDate = Convert.ToDateTime(parentWbsSet.EndDate);
parentStartMonth = Convert.ToDateTime(parentStartDate.Year + "-" + parentStartDate.Month + "-01");
parentEndMonth = Convert.ToDateTime(parentEndDate.Year + "-" + parentEndDate.Month + "-01");
do
{
parentMonths.Add(parentStartMonth);
parentStartMonth = parentStartMonth.AddMonths(1);
} while (parentStartMonth <= parentEndMonth);
}
else //父级为质量行为
{
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(parentId);
if (unitProject != null)
{
parentStartDate = Convert.ToDateTime(unitProject.StartDate);
parentEndDate = Convert.ToDateTime(unitProject.EndDate);
parentStartMonth = Convert.ToDateTime(parentStartDate.Year + "-" + parentStartDate.Month + "-01");
parentEndMonth = Convert.ToDateTime(parentEndDate.Year + "-" + parentEndDate.Month + "-01");
do
{
parentMonths.Add(parentStartMonth);
parentStartMonth = parentStartMonth.AddMonths(1);
} while (parentStartMonth <= parentEndMonth);
}
}
RenderField columnPlanValue = Grid1.FindColumn("PlanValue") as RenderField;
columnPlanValue.EnableColumnEdit = true;
if (wbsSet.IsPlanApprove == true)
{
btnSave.ConfirmText = String.Format("{0}的进度计划已审核并发布,确定重新设置进度计划并进行流程审批吗?", wbsSet.WbsSetName);
}
else
{
btnSave.ConfirmText = string.Empty;
}
if (BLL.CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, Const.WBSPlanAuditMenuId, Const.BtnSave))
{
this.btnSave.Hidden = false;
this.btnSee.Hidden = false;
}
for (int i = 0; i < months.Count; i++)
{
Model.WbsDetail detail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(wbsSet.WbsSetId, 4, months[i]);
if (detail == null)
{
Model.WBSDetailItem item = new Model.WBSDetailItem();
item.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
item.ToWbs = wbsSet.WbsSetId;
item.ToFlag = 4; //分部分项
item.Way = wbsSet.Way;
item.Months = months[i];
item.YearsMonthsStr = months[i].Year + "年" + months[i].Month + "月";
item.WeightsMoney = wbsSet.WeightsMoney;
if (wbsSet.WeightsMoney != null)
{
decimal moneys = decimal.Round(Convert.ToDecimal(wbsSet.WeightsMoney), 2);
if (i == months.Count - 1)
{
decimal lastPlanValue = decimal.Round(Convert.ToDecimal(wbsSet.WeightsMoney - totalValue), 2);
if (lastPlanValue >= 0)
{
item.PlanValue = lastPlanValue;
}
else
{
decimal value = decimal.Round(Convert.ToDecimal(totalValue - wbsSet.WeightsMoney), 2);
var detailList = BLL.WbsDetailService.GetTotalWbsDetailsByToWbs(wbsSet.WbsSetId);
while (value > 0)
{
foreach (var d in detailList)
{
if (value > 0 && d.PlanValue >= Convert.ToDecimal(0.01))
{
d.PlanValue = Convert.ToDecimal(Convert.ToDecimal(d.PlanValue) - Convert.ToDecimal(0.01));
d.PlanValueRate = decimal.Round(Convert.ToDecimal(d.PlanValue / wbsSet.WeightsMoney * 100), 2);
BLL.WbsDetailService.UpdateWbsDetail(d);
value = Convert.ToDecimal(value - Convert.ToDecimal(0.01));
}
}
}
item.PlanValue = 0;
}
}
else
{
item.PlanValue = WbsDetailService.GetMonthPlanValueByMonthCountAndMonthNumAndWeightMonth(months.Count, i + 1, Convert.ToDecimal(wbsSet.WeightsMoney));
}
if (wbsSet.WeightsMoney != 0)
{
item.PlanValueRate = decimal.Round(Convert.ToDecimal(item.PlanValue / wbsSet.WeightsMoney * 100), 2);
}
else
{
item.PlanValueRate = 0;
}
totalValue += decimal.Round(Convert.ToDecimal(item.PlanValue), 2);
totalRate += decimal.Round(Convert.ToDecimal(item.PlanValueRate), 2);
item.PlanValueTotal = totalValue;
item.PlanValueRateTotal = totalRate;
if (i == months.Count - 1)
{
if (wbsSet.WeightsMoney == totalValue)
{
item.PlanValueRateTotal = 100;
}
}
}
items.Add(item);
}
else
{
Model.WBSDetailItem item = new Model.WBSDetailItem();
item.WbsDetailId = detail.WbsDetailId;
item.ToWbs = detail.ToWbs;
item.ToFlag = 4; //分部分项
item.Way = detail.Way;
item.Months = months[i];
item.YearsMonthsStr = months[i].Year + "年" + months[i].Month + "月";
item.WeightsMoney = wbsSet.WeightsMoney;
if (detail.PlanValue != null)
{
item.PlanValue = decimal.Round(Convert.ToDecimal(detail.PlanValue), 2);
item.PlanValueRate = decimal.Round(Convert.ToDecimal(detail.PlanValueRate), 2);
totalValue += decimal.Round(Convert.ToDecimal(item.PlanValue), 2);
totalRate += decimal.Round(Convert.ToDecimal(item.PlanValueRate), 2);
item.PlanValueTotal = totalValue;
item.PlanValueRateTotal = totalRate;
if (i == months.Count - 1)
{
if (wbsSet.WeightsMoney == totalValue)
{
item.PlanValueRateTotal = 100;
}
}
}
items.Add(item);
}
}
for (int i = 0; i < parentMonths.Count; i++)
{
if (!months.Contains(parentMonths[i]))
{
Model.WbsDetail detail = (from x in Funs.DB.WbsDetail
where x.ToWbs == wbsSet.WbsSetId && x.Months == parentMonths[i]
select x).FirstOrDefault();
if (detail == null)
{
Model.WBSDetailItem item = new Model.WBSDetailItem();
item.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
item.ToWbs = wbsSet.WbsSetId;
item.ToFlag = 4; //分部分项
item.Way = wbsSet.Way;
item.Months = parentMonths[i];
item.YearsMonthsStr = parentMonths[i].Year + "年" + parentMonths[i].Month + "月";
item.WeightsMoney = wbsSet.WeightsMoney;
item.PlanValue = 0;
item.PlanValueRate = 0;
items.Add(item);
}
else
{
Model.WBSDetailItem item = new Model.WBSDetailItem();
item.WbsDetailId = detail.WbsDetailId;
item.ToWbs = wbsSet.WbsSetId;
item.ToFlag = 4; //分部分项
item.Way = wbsSet.Way;
item.Months = parentMonths[i];
item.YearsMonthsStr = parentMonths[i].Year + "年" + parentMonths[i].Month + "月";
item.WeightsMoney = wbsSet.WeightsMoney;
item.PlanValue = detail.PlanValue;
item.PlanValueRate = detail.PlanValueRate;
items.Add(item);
}
}
}
items = items.OrderBy(x => x.Months).ToList();
}
else //当前不为末级
{
for (int i = 0; i < months.Count; i++)
{
Model.WbsDetail detail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(wbsSet.WbsSetId, 4, months[i]);
if (detail != null)
{
Model.WBSDetailItem item = new Model.WBSDetailItem();
item.WbsDetailId = detail.WbsDetailId;
item.ToWbs = detail.ToWbs;
item.ToFlag = 4; //分部分项
item.Way = detail.Way;
item.Months = months[i];
item.YearsMonthsStr = months[i].Year + "年" + months[i].Month + "月";
item.WeightsMoney = wbsSet.WeightsMoney;
if (detail.PlanValue != null)
{
item.PlanValue = decimal.Round(Convert.ToDecimal(detail.PlanValue), 2);
item.PlanValueRate = decimal.Round(Convert.ToDecimal(detail.PlanValueRate), 2);
totalValue += decimal.Round(Convert.ToDecimal(item.PlanValue), 2);
totalRate += decimal.Round(Convert.ToDecimal(item.PlanValueRate), 2);
item.PlanValueTotal = totalValue;
item.PlanValueRateTotal = totalRate;
if (i == months.Count - 1)
{
if (wbsSet.WeightsMoney == totalValue)
{
item.PlanValueRateTotal = 100;
}
}
}
items.Add(item);
}
}
}
}
}
#endregion
#region /
else if (this.trWBS.SelectedNode.CommandName == "unitProject" || this.trWBS.SelectedNode.CommandName == "childUnitProject")
{
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(this.trWBS.SelectedNode.NodeID);
if (unitProject != null)
{
startDate = Convert.ToDateTime(unitProject.StartDate);
endDate = Convert.ToDateTime(unitProject.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);
column0 = "进度计划开始日期:" + string.Format("{0:yyyy-MM-dd}", startDate) + "<br/>进度计划结束日期:" + string.Format("{0:yyyy-MM-dd}", endDate);
this.Grid1.Columns[0].HeaderText = column0;
for (int i = 0; i < months.Count; i++)
{
Model.WbsDetail detail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(unitProject.UnitProjectId, 3, months[i]);
if (detail != null)
{
Model.WBSDetailItem item = new Model.WBSDetailItem();
item.WbsDetailId = detail.WbsDetailId;
item.ToWbs = detail.ToWbs;
item.ToFlag = 3; //单位工程/子单位工程
item.Way = detail.Way;
item.Months = months[i];
item.YearsMonthsStr = months[i].Year + "年" + months[i].Month + "月";
item.WeightsMoney = unitProject.WeightsMoney;
if (detail.PlanValue != null)
{
item.PlanValue = decimal.Round(Convert.ToDecimal(detail.PlanValue), 2);
item.PlanValueRate = decimal.Round(Convert.ToDecimal(detail.PlanValueRate), 2);
totalValue += decimal.Round(Convert.ToDecimal(item.PlanValue), 2);
totalRate += decimal.Round(Convert.ToDecimal(item.PlanValueRate), 2);
item.PlanValueTotal = totalValue;
item.PlanValueRateTotal = totalRate;
if (i == months.Count - 1)
{
if (unitProject.WeightsMoney == totalValue)
{
item.PlanValueRateTotal = 100;
}
}
}
items.Add(item);
}
}
}
}
#endregion
#region
else if (this.trWBS.SelectedNode.CommandName == "cnProfession")
{
Model.WBS_CnProfession cnProfession = BLL.CnProfessionService.GetCnProfessionByCnProfessionId(this.trWBS.SelectedNode.NodeID);
if (cnProfession != null)
{
startDate = Convert.ToDateTime(cnProfession.StartDate);
endDate = Convert.ToDateTime(cnProfession.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);
column0 = "进度计划开始日期:" + string.Format("{0:yyyy-MM-dd}", startDate) + "<br/>进度计划结束日期:" + string.Format("{0:yyyy-MM-dd}", endDate);
this.Grid1.Columns[0].HeaderText = column0;
for (int i = 0; i < months.Count; i++)
{
Model.WbsDetail detail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(cnProfession.CnProfessionId, 2, months[i]);
if (detail != null)
{
Model.WBSDetailItem item = new Model.WBSDetailItem();
item.WbsDetailId = detail.WbsDetailId;
item.ToWbs = detail.ToWbs;
item.ToFlag = 2; //专业
item.Way = detail.Way;
item.Months = months[i];
item.YearsMonthsStr = months[i].Year + "年" + months[i].Month + "月";
item.WeightsMoney = cnProfession.WeightsMoney;
if (detail.PlanValue != null)
{
item.PlanValue = decimal.Round(Convert.ToDecimal(detail.PlanValue), 2);
item.PlanValueRate = decimal.Round(Convert.ToDecimal(detail.PlanValueRate), 2);
totalValue += decimal.Round(Convert.ToDecimal(item.PlanValue), 2);
totalRate += decimal.Round(Convert.ToDecimal(item.PlanValueRate), 2);
item.PlanValueTotal = totalValue;
item.PlanValueRateTotal = totalRate;
if (i == months.Count - 1)
{
if (cnProfession.WeightsMoney == totalValue)
{
item.PlanValueRateTotal = 100;
}
}
}
items.Add(item);
}
}
}
}
#endregion
#region
else if (this.trWBS.SelectedNode.CommandName == "installation")
{
Model.Project_Installation installation = BLL.Project_InstallationService.GetInstallationByInstallationId(this.trWBS.SelectedNode.NodeID);
if (installation != null)
{
startDate = Convert.ToDateTime(installation.StartDate);
endDate = Convert.ToDateTime(installation.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);
column0 = "进度计划开始日期:" + string.Format("{0:yyyy-MM-dd}", startDate) + "<br/>进度计划结束日期:" + string.Format("{0:yyyy-MM-dd}", endDate);
this.Grid1.Columns[0].HeaderText = column0;
for (int i = 0; i < months.Count; i++)
{
Model.WbsDetail detail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(installation.InstallationId, 1, months[i]);
if (detail != null)
{
Model.WBSDetailItem item = new Model.WBSDetailItem();
item.WbsDetailId = detail.WbsDetailId;
item.ToWbs = detail.ToWbs;
item.ToFlag = 1; //装置
item.Way = detail.Way;
item.Months = months[i];
item.YearsMonthsStr = months[i].Year + "年" + months[i].Month + "月";
item.WeightsMoney = installation.WeightsMoney;
if (detail.PlanValue != null)
{
item.PlanValue = decimal.Round(Convert.ToDecimal(detail.PlanValue), 2);
item.PlanValueRate = decimal.Round(Convert.ToDecimal(detail.PlanValueRate), 2);
totalValue += decimal.Round(Convert.ToDecimal(item.PlanValue), 2);
totalRate += decimal.Round(Convert.ToDecimal(item.PlanValueRate), 2);
item.PlanValueTotal = totalValue;
item.PlanValueRateTotal = totalRate;
if (i == months.Count - 1)
{
if (installation.WeightsMoney == totalValue)
{
item.PlanValueRateTotal = 100;
}
}
}
items.Add(item);
}
}
}
}
#endregion
this.Grid1.DataSource = items;
this.Grid1.DataBind();
if (this.trWBS.SelectedNode.CommandName == "wbsSet")
{
Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(this.trWBS.SelectedNode.NodeID);
if (wbsSet != null)
{
var childWbsSets = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(wbsSet.WbsSetId);
if (childWbsSets.Count == 0) //当前为末级
{
SaveData2();
}
}
}
}
}
#endregion
#region
/// <summary>
/// 判断装置下权重是否都已审核
/// </summary>
/// <param name="ins"></param>
/// <returns></returns>
private bool IsWeightAudit(string ins)
{
int num = 0;
bool isWeightAudit = true;
var cn = from x in Funs.DB.WBS_CnProfession
join y in Funs.DB.Wbs_UnitProject on x.CnProfessionId equals y.CnProfessionId
where x.InstallationId == ins && y.IsApprove == true
&& (x.IsWeightsApprove == false || x.IsWeightsApprove == null)
select x;
num = cn.Count();
var unit = from x in Funs.DB.Wbs_UnitProject
join y in Funs.DB.WBS_CnProfession on x.CnProfessionId equals y.CnProfessionId
where y.InstallationId == ins && x.IsApprove == true && (x.IsWeightsApprove == false || x.IsWeightsApprove == null)
select x;
num = num + unit.Count();
var wbs = from x in Funs.DB.Wbs_WbsSet
join y in Funs.DB.WBS_CnProfession on x.CnProfessionId equals y.CnProfessionId
where y.InstallationId == ins && x.IsApprove == true && (x.IsWeightsApprove == false || x.IsWeightsApprove == null)
select x;
num = num + wbs.Count();
if (num > 0)
{
isWeightAudit = false;
}
return isWeightAudit;
}
#endregion
#region
/// <summary>
/// 判断装置下权重是否有负数
/// </summary>
/// <param name="ins"></param>
/// <returns></returns>
private bool IsWeightMinus(string ins)
{
int num = 0;
bool isWeightMinus = false;
var cn = from x in Funs.DB.WBS_CnProfession where x.InstallationId == ins && (x.WeightsMoney <= 0 || x.Weights <= 0) select x;
num = cn.Count();
var unit = from x in Funs.DB.Wbs_UnitProject
join y in Funs.DB.WBS_CnProfession on x.CnProfessionId equals y.CnProfessionId
where y.InstallationId == ins && x.IsApprove == true && (x.WeightsMoney <= 0 || x.Weights <= 0)
select x;
num = num + unit.Count();
var wbs = from x in Funs.DB.Wbs_WbsSet
join y in Funs.DB.WBS_CnProfession on x.CnProfessionId equals y.CnProfessionId
where y.InstallationId == ins && x.IsApprove == true && (x.WeightsMoney <= 0 || x.Weights <= 0)
select x;
num = num + wbs.Count();
if (num > 0)
{
isWeightMinus = true;
}
return isWeightMinus;
}
#endregion
#region
/// <summary>
/// 右键修改事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnMenuEdit_Click(object sender, EventArgs e)
{
if (this.trWBS.SelectedNode != null)
{
MergeNextWbsSet(trWBS.SelectedNodeID, trWBS.SelectedNode.CommandName);
Alert.ShowInTop("计划值合计完成!", MessageBoxIcon.Warning);
}
}
private void MergeNextWbsSet(string id, string type)
{
if (type == "installation")
{
var q = from x in Funs.DB.WbsDetail
join y in Funs.DB.WBS_CnProfession on x.ToWbs equals y.CnProfessionId
where y.InstallationId == id
group new { x.PlanValue, x.CompleteValue, x.RealValue } by new { x.Months }
into g
select new
{
Months = g.Key.Months,
PlanValue = g.Sum(x => x.PlanValue ?? 0),
CompleteValue = g.Sum(x => x.CompleteValue ?? 0),
RealValue = g.Sum(x => x.RealValue ?? 0)
};
if (q.Count() > 0)
{
foreach (var wbsSet in q)
{
AddWbsSetDetail(id, Convert.ToDateTime(wbsSet.Months), Convert.ToDecimal(wbsSet.PlanValue), Convert.ToDecimal(wbsSet.CompleteValue), Convert.ToDecimal(wbsSet.RealValue), 1);
}
}
}
if (type == "cnProfession")
{
var q = from x in Funs.DB.WbsDetail
join y in Funs.DB.Wbs_UnitProject on x.ToWbs equals y.UnitProjectId
where y.CnProfessionId == id && y.IsApprove == true
group new { x.PlanValue, x.CompleteValue, x.RealValue } by new { x.Months }
into g
select new
{
Months = g.Key.Months,
PlanValue = g.Sum(x => x.PlanValue ?? 0),
CompleteValue = g.Sum(x => x.CompleteValue ?? 0),
RealValue = g.Sum(x => x.RealValue ?? 0)
};
if (q.Count() > 0)
{
foreach (var wbsSet in q)
{
AddWbsSetDetail(id, Convert.ToDateTime(wbsSet.Months), Convert.ToDecimal(wbsSet.PlanValue), Convert.ToDecimal(wbsSet.CompleteValue), Convert.ToDecimal(wbsSet.RealValue), 2);
}
}
}
if (type == "unitProject")
{
var q = from x in Funs.DB.WbsDetail
join y in Funs.DB.Wbs_WbsSet on x.ToWbs equals y.WbsSetId
where y.UnitProjectId == id && y.Flag == 1 && y.IsApprove == true
group new { x.PlanValue, x.CompleteValue, x.RealValue } by new { x.Months }
into g
select new
{
Months = g.Key.Months,
PlanValue = g.Sum(x => x.PlanValue ?? 0),
CompleteValue = g.Sum(x => x.CompleteValue ?? 0),
RealValue = g.Sum(x => x.RealValue ?? 0)
};
// 质量行为
var z = from x in Funs.DB.WbsDetail
join y in Funs.DB.Wbs_WbsSet on x.ToWbs equals y.WbsSetId
where y.UnitProjectId == id && y.Flag == 3 && y.IsApprove == true
group new { x.PlanValue, x.CompleteValue, x.RealValue } by new { x.Months }
into g
select new
{
Months = g.Key.Months,
PlanValue = g.Sum(x => x.PlanValue ?? 0),
CompleteValue = g.Sum(x => x.CompleteValue ?? 0),
RealValue = g.Sum(x => x.RealValue ?? 0)
};
// 子单位工程
var c = from x in Funs.DB.WbsDetail
join y in Funs.DB.Wbs_UnitProject on x.ToWbs equals y.UnitProjectId
where y.SuperUnitProjectId == id && y.IsApprove == true
group new { x.PlanValue, x.CompleteValue, x.RealValue } by new { y.SuperUnitProjectId, x.Months }
into g
select new
{
ToWbs = g.Key.SuperUnitProjectId,
Months = g.Key.Months,
PlanValue = g.Sum(x => x.PlanValue ?? 0),
CompleteValue = g.Sum(x => x.CompleteValue ?? 0),
RealValue = g.Sum(x => x.RealValue ?? 0)
};
if (q.Count() > 0)
{
foreach (var wbsSet in q)
{
AddWbsSetDetail(id, Convert.ToDateTime(wbsSet.Months), Convert.ToDecimal(wbsSet.PlanValue), Convert.ToDecimal(wbsSet.CompleteValue), Convert.ToDecimal(wbsSet.RealValue), 3);
}
}
if (z.Count() > 0)
{
foreach (var wbsSet in z)
{
AddWbsSetDetail(id, Convert.ToDateTime(wbsSet.Months), Convert.ToDecimal(wbsSet.PlanValue), Convert.ToDecimal(wbsSet.CompleteValue), Convert.ToDecimal(wbsSet.RealValue), 3);
}
}
if (c.Count() > 0)
{
foreach (var wbsSet in c)
{
AddWbsSetDetail(id, Convert.ToDateTime(wbsSet.Months), Convert.ToDecimal(wbsSet.PlanValue), Convert.ToDecimal(wbsSet.CompleteValue), Convert.ToDecimal(wbsSet.RealValue), 3);
}
}
}
if (type == "childUnitProject")
{
var q = from x in Funs.DB.WbsDetail
join y in Funs.DB.Wbs_WbsSet on x.ToWbs equals y.WbsSetId
where y.UnitProjectId == id && y.Flag == 1 && y.IsApprove == true
group new { x.PlanValue, x.CompleteValue, x.RealValue } by new { x.Months }
into g
select new
{
Months = g.Key.Months,
PlanValue = g.Sum(x => x.PlanValue ?? 0),
CompleteValue = g.Sum(x => x.CompleteValue ?? 0),
RealValue = g.Sum(x => x.RealValue ?? 0)
};
if (q.Count() > 0)
{
foreach (var wbsSet in q)
{
AddWbsSetDetail(id, Convert.ToDateTime(wbsSet.Months), Convert.ToDecimal(wbsSet.PlanValue), Convert.ToDecimal(wbsSet.CompleteValue), Convert.ToDecimal(wbsSet.RealValue), 3);
}
}
}
if (type == "wbsSet")
{
var q = from x in Funs.DB.WbsDetail
join y in Funs.DB.Wbs_WbsSet on x.ToWbs equals y.WbsSetId
where y.SuperWbsSetId == id && y.IsApprove == true
group new { x.PlanValue, x.CompleteValue, x.RealValue } by new { x.Months }
into g
select new
{
Months = g.Key.Months,
PlanValue = g.Sum(x => x.PlanValue ?? 0),
CompleteValue = g.Sum(x => x.CompleteValue ?? 0),
RealValue = g.Sum(x => x.RealValue ?? 0)
};
if (q.Count() > 0)
{
foreach (var wbsSet in q)
{
AddWbsSetDetail(id, Convert.ToDateTime(wbsSet.Months), Convert.ToDecimal(wbsSet.PlanValue), Convert.ToDecimal(wbsSet.CompleteValue), Convert.ToDecimal(wbsSet.RealValue), 4);
}
}
}
}
#endregion
#region
/// <summary>
/// 自动审核设置装置末级分项计划值
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnAuditPlan_Click(object sender, EventArgs e)
{
if (this.trWBS.SelectedNode != null)
{
if (this.trWBS.SelectedNode.CommandName == "installation")
{
if (!IsWeightAudit(this.trWBS.SelectedNodeID))
{
Alert.ShowInTop("该装置下有未审核的权重设置!", MessageBoxIcon.Warning);
return;
}
if (!IsWeightAudit(this.trWBS.SelectedNodeID))
{
Alert.ShowInTop("该装置下有权重设置为0或负数", MessageBoxIcon.Warning);
return;
}
var cnProfessions = from x in Funs.DB.WBS_CnProfession where x.InstallationId == this.trWBS.SelectedNodeID orderby x.OldId select x;
foreach (var cnProfession in cnProfessions)
{
var wbsSets = from x in Funs.DB.Wbs_WbsSet where x.IsApprove == true && x.CnProfessionId == cnProfession.CnProfessionId select x;
foreach (var wbsSet in wbsSets)
{
DateTime startDate, endDate, startMonth, endMonth, parentStartDate, parentEndDate, parentStartMonth, parentEndMonth;
List<DateTime> months = new List<DateTime>();
string column0 = string.Empty;
decimal totalValue = 0, totalRate = 0;
var childWbsSets = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(wbsSet.WbsSetId);
if (childWbsSets.Count() == 0) //当前为末级
{
BLL.WbsSetService.UpdateWbsSetIsPlanApprove(wbsSet, true);
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);
//获取父级节点的月份集合
List<DateTime> parentMonths = new List<DateTime>(); //父级节点的月份集合
string parentId = wbsSet.SuperWbsSetId;
Model.Wbs_WbsSet parentWbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(parentId);
if (parentWbsSet != null) //父级为分部
{
parentStartDate = Convert.ToDateTime(parentWbsSet.StartDate);
parentEndDate = Convert.ToDateTime(parentWbsSet.EndDate);
parentStartMonth = Convert.ToDateTime(parentStartDate.Year + "-" + parentStartDate.Month + "-01");
parentEndMonth = Convert.ToDateTime(parentEndDate.Year + "-" + parentEndDate.Month + "-01");
do
{
parentMonths.Add(parentStartMonth);
parentStartMonth = parentStartMonth.AddMonths(1);
}
while (parentStartMonth <= parentEndMonth);
}
else //父级为质量行为
{
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(parentId);
if (unitProject != null)
{
parentStartDate = Convert.ToDateTime(unitProject.StartDate);
parentEndDate = Convert.ToDateTime(unitProject.EndDate);
parentStartMonth = Convert.ToDateTime(parentStartDate.Year + "-" + parentStartDate.Month + "-01");
parentEndMonth = Convert.ToDateTime(parentEndDate.Year + "-" + parentEndDate.Month + "-01");
do
{
parentMonths.Add(parentStartMonth);
parentStartMonth = parentStartMonth.AddMonths(1);
}
while (parentStartMonth <= parentEndMonth);
}
}
for (int i = 0; i < months.Count; i++)
{
Model.WbsDetail detail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(wbsSet.WbsSetId, 4, months[i]);
if (detail == null)
{
Model.WbsDetail item = new Model.WbsDetail();
item.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
item.ToWbs = wbsSet.WbsSetId;
item.ToFlag = 4; //分部分项
item.Way = wbsSet.Way;
item.Months = months[i];
if (wbsSet.WeightsMoney != null)
{
if (i == months.Count - 1)
{
decimal lastPlanValue = decimal.Round(Convert.ToDecimal(wbsSet.WeightsMoney - totalValue), 2);
if (lastPlanValue >= 0)
{
item.PlanValue = lastPlanValue;
}
}
else
{
item.PlanValue = WbsDetailService.GetMonthPlanValueByMonthCountAndMonthNumAndWeightMonth(months.Count, i + 1, Convert.ToDecimal(wbsSet.WeightsMoney));
}
if (wbsSet.WeightsMoney != 0)
{
item.PlanValueRate = decimal.Round(Convert.ToDecimal(item.PlanValue / wbsSet.WeightsMoney * 100), 2);
}
else
{
item.PlanValueRate = 0;
}
totalValue += item.PlanValue != null ? item.PlanValue.Value : 0;
totalRate += item.PlanValueRate != null ? item.PlanValueRate.Value : 0;
BLL.WbsDetailService.AddWbsDetail(item);
}
}
}
for (int i = 0; i < parentMonths.Count; i++)
{
if (!months.Contains(parentMonths[i]))
{
Model.WbsDetail detail = (from x in Funs.DB.WbsDetail
where x.ToWbs == wbsSet.WbsSetId && x.Months == parentMonths[i]
select x).FirstOrDefault();
if (detail == null)
{
Model.WbsDetail item = new Model.WbsDetail();
item.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
item.ToWbs = wbsSet.WbsSetId;
item.ToFlag = 4; //分部分项
item.Way = wbsSet.Way;
item.Months = parentMonths[i];
item.PlanValue = 0;
item.PlanValueRate = 0;
BLL.WbsDetailService.AddWbsDetail(item);
}
}
}
}
}
}
Alert.ShowInTop("自动分配计划值完成!", MessageBoxIcon.Warning);
}
else
{
Alert.ShowInTop("请选择一个装置!", MessageBoxIcon.Warning);
return;
}
}
else
{
Alert.ShowInTop("请选择装置!", MessageBoxIcon.Warning);
return;
}
}
#endregion
#region
/// <summary>
/// 逐级向上合并计划明细
/// </summary>
/// <param name="cnProfessionId"></param>
private void MergeWbsSetDetail(string cnProfessionId)
{
Model.SGGLDB db = Funs.DB;
// 分部分项
var wbsSetList4 = from x in db.WbsDetail
join y in db.Wbs_WbsSet on x.ToWbs equals y.WbsSetId
where y.CnProfessionId == cnProfessionId && y.Flag == 4 && y.IsApprove == true && y.SuperWbsSetId != null
group new { x.PlanValue, x.CompleteValue, x.RealValue } by new { y.SuperWbsSetId, x.Months }
into g
select new
{
ToWbs = g.Key.SuperWbsSetId,
Months = g.Key.Months,
PlanValue = g.Sum(x => x.PlanValue ?? 0),
CompleteValue = g.Sum(x => x.CompleteValue ?? 0),
RealValue = g.Sum(x => x.RealValue ?? 0)
};
if (wbsSetList4.Count() > 0)
{
foreach (var wbsSet in wbsSetList4)
{
AddWbsSetDetail(wbsSet.ToWbs, Convert.ToDateTime(wbsSet.Months), Convert.ToDecimal(wbsSet.PlanValue), Convert.ToDecimal(wbsSet.CompleteValue), Convert.ToDecimal(wbsSet.RealValue), 4);
}
}
var wbsSetList3 = from x in db.WbsDetail
join y in db.Wbs_WbsSet on x.ToWbs equals y.WbsSetId
where y.CnProfessionId == cnProfessionId && y.Flag == 3 && y.IsApprove == true && y.SuperWbsSetId != null
group new { x.PlanValue, x.CompleteValue, x.RealValue } by new { y.SuperWbsSetId, x.Months }
into g
select new
{
ToWbs = g.Key.SuperWbsSetId,
Months = g.Key.Months,
PlanValue = g.Sum(x => x.PlanValue ?? 0),
CompleteValue = g.Sum(x => x.CompleteValue ?? 0),
RealValue = g.Sum(x => x.RealValue ?? 0)
};
if (wbsSetList3.Count() > 0)
{
foreach (var wbsSet in wbsSetList3)
{
AddWbsSetDetail(wbsSet.ToWbs, Convert.ToDateTime(wbsSet.Months), Convert.ToDecimal(wbsSet.PlanValue), Convert.ToDecimal(wbsSet.CompleteValue), Convert.ToDecimal(wbsSet.RealValue), 4);
}
}
var wbsSetList2 = from x in db.WbsDetail
join y in db.Wbs_WbsSet on x.ToWbs equals y.WbsSetId
where y.CnProfessionId == cnProfessionId && y.Flag == 2 && y.IsApprove == true && y.SuperWbsSetId != null
group new { x.PlanValue, x.CompleteValue, x.RealValue } by new { y.SuperWbsSetId, x.Months }
into g
select new
{
ToWbs = g.Key.SuperWbsSetId,
Months = g.Key.Months,
PlanValue = g.Sum(x => x.PlanValue ?? 0),
CompleteValue = g.Sum(x => x.CompleteValue ?? 0),
RealValue = g.Sum(x => x.RealValue ?? 0)
};
if (wbsSetList2.Count() > 0)
{
foreach (var wbsSet in wbsSetList2)
{
AddWbsSetDetail(wbsSet.ToWbs, Convert.ToDateTime(wbsSet.Months), Convert.ToDecimal(wbsSet.PlanValue), Convert.ToDecimal(wbsSet.CompleteValue), Convert.ToDecimal(wbsSet.RealValue), 4);
}
}
// 单位工程及子单位工程
//质量行为
var wbsSetList = from x in db.WbsDetail
join y in db.Wbs_WbsSet on x.ToWbs equals y.WbsSetId
join z in db.Wbs_UnitProject on y.UnitProjectId equals z.UnitProjectId
where y.CnProfessionId == cnProfessionId && y.IsApprove == true && y.Flag == 3 && y.SuperWbsSetId == null
group new { x.PlanValue, x.CompleteValue, x.RealValue } by new { z.UnitProjectId, x.Months }
into g
select new
{
ToWbs = g.Key.UnitProjectId,
Months = g.Key.Months,
PlanValue = g.Sum(x => x.PlanValue ?? 0),
CompleteValue = g.Sum(x => x.CompleteValue ?? 0),
RealValue = g.Sum(x => x.RealValue ?? 0)
};
if (wbsSetList.Count() > 0)
{
foreach (var wbsSet in wbsSetList)
{
AddWbsSetDetail(wbsSet.ToWbs, Convert.ToDateTime(wbsSet.Months), Convert.ToDecimal(wbsSet.PlanValue), Convert.ToDecimal(wbsSet.CompleteValue), Convert.ToDecimal(wbsSet.RealValue), 3);
}
}
// 单位工程及子单位工程
var wbsSetList1 = from x in db.WbsDetail
join y in db.Wbs_WbsSet on x.ToWbs equals y.WbsSetId
join z in db.Wbs_UnitProject on y.UnitProjectId equals z.UnitProjectId
where y.CnProfessionId == cnProfessionId && y.IsApprove == true && z.IsApprove == true && y.Flag == 1
group new { x.PlanValue, x.CompleteValue, x.RealValue } by new { z.UnitProjectId, x.Months }
into g
select new
{
ToWbs = g.Key.UnitProjectId,
Months = g.Key.Months,
PlanValue = g.Sum(x => x.PlanValue ?? 0),
CompleteValue = g.Sum(x => x.CompleteValue ?? 0),
RealValue = g.Sum(x => x.RealValue ?? 0)
};
if (wbsSetList1.Count() > 0)
{
foreach (var wbsSet in wbsSetList1)
{
AddWbsSetDetail(wbsSet.ToWbs, Convert.ToDateTime(wbsSet.Months), Convert.ToDecimal(wbsSet.PlanValue), Convert.ToDecimal(wbsSet.CompleteValue), Convert.ToDecimal(wbsSet.RealValue), 3);
}
}
var wbsSetList0 = from x in db.WbsDetail
join y in db.Wbs_UnitProject on x.ToWbs equals y.UnitProjectId
//join z in db.Wbs_UnitProject on y.SuperUnitProjectId equals z.UnitProjectId
where y.CnProfessionId == cnProfessionId && y.IsApprove == true && y.SuperUnitProjectId != null
group new { x.PlanValue, x.CompleteValue, x.RealValue } by new { y.SuperUnitProjectId, x.Months }
into g
select new
{
ToWbs = g.Key.SuperUnitProjectId,
Months = g.Key.Months,
PlanValue = g.Sum(x => x.PlanValue ?? 0),
CompleteValue = g.Sum(x => x.CompleteValue ?? 0),
RealValue = g.Sum(x => x.RealValue ?? 0)
};
if (wbsSetList0.Count() > 0)
{
foreach (var wbsSet in wbsSetList0)
{
AddWbsSetDetail(wbsSet.ToWbs, Convert.ToDateTime(wbsSet.Months), Convert.ToDecimal(wbsSet.PlanValue), Convert.ToDecimal(wbsSet.CompleteValue), Convert.ToDecimal(wbsSet.RealValue), 3);
}
}
// 专业
var wbsSetList5 = from x in db.WbsDetail
join y in db.Wbs_UnitProject on x.ToWbs equals y.UnitProjectId
join z in db.WBS_CnProfession on y.CnProfessionId equals z.CnProfessionId
where y.CnProfessionId == cnProfessionId && y.IsApprove == true && y.SuperUnitProjectId == null
group new { x.PlanValue, x.CompleteValue, x.RealValue } by new { z.CnProfessionId, x.Months }
into g
select new
{
ToWbs = g.Key.CnProfessionId,
Months = g.Key.Months,
PlanValue = g.Sum(x => x.PlanValue ?? 0),
CompleteValue = g.Sum(x => x.CompleteValue ?? 0),
RealValue = g.Sum(x => x.RealValue ?? 0)
};
if (wbsSetList5.Count() > 0)
{
foreach (var wbsSet in wbsSetList5)
{
AddWbsSetDetail(wbsSet.ToWbs, Convert.ToDateTime(wbsSet.Months), Convert.ToDecimal(wbsSet.PlanValue), Convert.ToDecimal(wbsSet.CompleteValue), Convert.ToDecimal(wbsSet.RealValue), 2);
}
}
}
private void AddWbsSetDetail(string toWbs, DateTime months, decimal planValue, decimal completeValue, decimal realValue, int toFlag)
{
Model.SGGLDB db = Funs.DB;
decimal? weight = null;
if (toFlag == 4)
{
weight = BLL.WbsSetService.GetWbsSetByWbsSetId(toWbs).WeightsMoney;
}
if (toFlag == 3)
{
weight = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(toWbs).WeightsMoney;
}
if (toFlag == 2)
{
weight = BLL.CnProfessionService.GetCnProfessionByCnProfessionId(toWbs).WeightsMoney;
}
if (toFlag == 1)
{
weight = BLL.Project_InstallationService.GetInstallationByInstallationId(toWbs).WeightsMoney;
}
if (BLL.WbsDetailService.IsExitWbsDetailByToWbsOrMonth(toWbs, toFlag, months))
{
Model.WbsDetail updateDetail = (from x in db.WbsDetail where x.ToWbs == toWbs && x.Months == months && x.ToFlag == toFlag select x).FirstOrDefault();
updateDetail.PlanValue = planValue;
updateDetail.CompleteValue = completeValue;
updateDetail.RealValue = realValue;
if (weight != null && weight != 0)
{
updateDetail.PlanValueRate = decimal.Round(Convert.ToDecimal(planValue) / Convert.ToDecimal(weight) * 100, 2);
updateDetail.CompleteValueRate = decimal.Round(Convert.ToDecimal(completeValue) / Convert.ToDecimal(weight) * 100, 2);
updateDetail.RealValueRate = decimal.Round(Convert.ToDecimal(realValue) / Convert.ToDecimal(weight) * 100, 2);
}
db.SubmitChanges();
}
else
{
Model.WbsDetail newDetail = new Model.WbsDetail();
newDetail.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
newDetail.ToWbs = toWbs;
newDetail.ToFlag = toFlag;
newDetail.Way = "A";
newDetail.Months = months;
newDetail.PlanValue = planValue;
if (weight != null && weight != 0)
{
newDetail.PlanValueRate = decimal.Round(Convert.ToDecimal(planValue) / Convert.ToDecimal(weight) * 100, 2);
}
newDetail.CompleteValue = 0;
newDetail.RealValue = 0;
db.WbsDetail.InsertOnSubmit(newDetail);
db.SubmitChanges();
}
}
#endregion
#region
/// <summary>
/// 一键保存
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSaveInstrallion_Click(object sender, EventArgs e)
{
if (this.trWBS.SelectedNode != null)
{
if (this.trWBS.SelectedNode.CommandName == "installation")
{
string installationId = this.trWBS.SelectedNodeID;
if (!IsWeightAudit(installationId))
{
Alert.ShowInTop("该装置下有未审核的权重设置!", MessageBoxIcon.Warning);
return;
}
//专业
var profession = BLL.CnProfessionService.GetCnProfessionByInstallation(installationId);
foreach (var pro in profession)
{
MergeWbsSetDetail(pro.CnProfessionId);
}
var insList = from x in Funs.DB.WbsDetail
join y in Funs.DB.WBS_CnProfession on x.ToWbs equals y.CnProfessionId
where y.InstallationId == installationId
group new { x.PlanValue, x.CompleteValue, x.RealValue } by new { y.InstallationId, x.Months }
into g
select new
{
ToWbs = g.Key.InstallationId,
Months = g.Key.Months,
PlanValue = g.Sum(x => x.PlanValue ?? 0),
CompleteValue = g.Sum(x => x.CompleteValue ?? 0),
RealValue = g.Sum(x => x.RealValue ?? 0)
};
if (insList.Count() > 0)
{
foreach (var ins in insList)
{
AddWbsSetDetail(ins.ToWbs, Convert.ToDateTime(ins.Months), Convert.ToDecimal(ins.PlanValue), Convert.ToDecimal(ins.CompleteValue), Convert.ToDecimal(ins.RealValue), 1);
}
}
Alert.ShowInTop("一键保存成功!", MessageBoxIcon.Warning);
}
else
{
Alert.ShowInTop("请选择一个装置!", MessageBoxIcon.Warning);
return;
}
}
else
{
Alert.ShowInTop("请选择装置!", MessageBoxIcon.Warning);
return;
}
}
#endregion
}
}