2328 lines
117 KiB
C#
2328 lines
117 KiB
C#
using BLL;
|
||
using Newtonsoft.Json.Linq;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Web.UI.WebControls;
|
||
|
||
namespace FineUIPro.Web.JDGL.WBSWeights
|
||
{
|
||
public partial class WeightsAudit : PageBase
|
||
{
|
||
#region 定义项
|
||
private static List<string> noApproveInstallationIds = new List<string>();
|
||
private static List<string> noApproveCnProfessionIds = new List<string>();
|
||
private static List<string> noApproveUnitProjectIds = new List<string>();
|
||
private static List<string> noApproveWbsSetIds = new List<string>();
|
||
#endregion
|
||
|
||
#region 页面加载
|
||
/// <summary>
|
||
/// 页面加载
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
protected void Page_Load(object sender, EventArgs e)
|
||
{
|
||
if (!IsPostBack)
|
||
{
|
||
List<string> parentUnitWorkIds = new List<string>();
|
||
List<string> wbsSetIds = new List<string>();
|
||
noApproveInstallationIds.Clear();
|
||
noApproveCnProfessionIds.Clear();
|
||
noApproveUnitProjectIds.Clear();
|
||
noApproveWbsSetIds.Clear();
|
||
|
||
if (this.CurrUser.Account == BLL.Const.sysglyId)
|
||
{
|
||
this.btnUpdateInstallationWeights.Hidden = false;
|
||
}
|
||
GetButtonPower();
|
||
InitTreeMenu();
|
||
this.Grid1.Hidden = true;
|
||
this.Grid2.Hidden = true;
|
||
}
|
||
else
|
||
{
|
||
if (GetRequestEventArgument() == "UPDATE_SUMMARY")
|
||
{
|
||
// 页面要求重新计算合计行的值
|
||
OutputSummaryData();
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 合计权重
|
||
/// <summary>
|
||
/// 合计权重
|
||
/// </summary>
|
||
private void OutputSummaryData()
|
||
{
|
||
Grid1.CommitChanges();
|
||
decimal lastWeights = 0, lastWeightsMoneys = 0;
|
||
decimal totalWeights = 0, totalWeightsMoneys = 0;
|
||
decimal firstWeightsMoneys = 0;
|
||
decimal changedWeights = 0, changeWeightsMoneys = 0;
|
||
decimal totalOtherWeights = 0, totalOtherWeightsMoneys = 0;
|
||
int i = 0, j = 0;
|
||
|
||
JObject firstValue = Grid1.GetMergedData()[0].Value<JObject>("values");
|
||
firstWeightsMoneys = firstValue.Value<decimal>("WeightsMoney");
|
||
|
||
foreach (JObject mergedRow in Grid1.GetMergedData())
|
||
{
|
||
if (j > 0)
|
||
{
|
||
JObject values = mergedRow.Value<JObject>("values");
|
||
|
||
string id = values.Value<string>("Id");
|
||
string type = values.Value<string>("Type");
|
||
|
||
if (values["Weights"].ToString() != "" && values["WeightsMoney"].ToString() != "")
|
||
{
|
||
|
||
totalWeights += values.Value<decimal>("Weights");
|
||
totalWeightsMoneys += values.Value<decimal>("WeightsMoney");
|
||
|
||
if (values["WeightsChanged"].ToString() != "")
|
||
{
|
||
changedWeights = values.Value<decimal>("WeightsChanged");
|
||
}
|
||
if (values["WeightsMoneyChange"].ToString() != "")
|
||
{
|
||
changeWeightsMoneys = values.Value<decimal>("WeightsMoneyChange");
|
||
}
|
||
// 获得除变化的所有其它项的权重的和
|
||
if (values.Value<decimal>("Weights") == changedWeights && values.Value<decimal>("WeightsMoney") == changeWeightsMoneys)
|
||
{
|
||
totalOtherWeights += values.Value<decimal>("Weights");
|
||
totalOtherWeightsMoneys += values.Value<decimal>("WeightsMoney");
|
||
}
|
||
}
|
||
}
|
||
j++;
|
||
}
|
||
|
||
foreach (JObject mergedRow in Grid1.GetMergedData())
|
||
{
|
||
if (i > 0)
|
||
{
|
||
decimal weights = 0, weightsMoneys = 0;
|
||
changeWeightsMoneys = 0;
|
||
changedWeights = 0;
|
||
JObject values = mergedRow.Value<JObject>("values");
|
||
string id = values.Value<string>("Id");
|
||
string type = values.Value<string>("Type");
|
||
|
||
if (values["Weights"].ToString() != "")
|
||
{
|
||
weights = values.Value<decimal>("Weights");
|
||
}
|
||
if (values["WeightsMoney"].ToString() != "")
|
||
{
|
||
weightsMoneys = values.Value<decimal>("WeightsMoney");
|
||
}
|
||
if (values["WeightsMoneyChange"].ToString() != "")
|
||
{
|
||
changeWeightsMoneys = values.Value<decimal>("WeightsMoneyChange");
|
||
}
|
||
if (values["WeightsChanged"].ToString() != "")
|
||
{
|
||
changedWeights = values.Value<decimal>("WeightsChanged");
|
||
}
|
||
|
||
// 权重比率发生变化
|
||
if (values["Weights"].ToString() != "")
|
||
{
|
||
if (changedWeights != values.Value<decimal>("Weights"))
|
||
{
|
||
if (totalWeights == 100)
|
||
{
|
||
weightsMoneys = firstWeightsMoneys - totalOtherWeightsMoneys;
|
||
}
|
||
else
|
||
{
|
||
weightsMoneys = decimal.Round((values.Value<decimal>("Weights") * firstWeightsMoneys / 100), 2);
|
||
}
|
||
lastWeights = values.Value<decimal>("Weights");
|
||
lastWeightsMoneys = weightsMoneys;
|
||
}
|
||
}
|
||
|
||
// 权重发生变化
|
||
if (values["WeightsMoney"].ToString() != "")
|
||
{
|
||
if (changeWeightsMoneys != values.Value<decimal>("WeightsMoney"))
|
||
{
|
||
if (totalWeightsMoneys == firstWeightsMoneys)
|
||
{
|
||
weights = 100 - totalOtherWeights;
|
||
}
|
||
else
|
||
{
|
||
weights = decimal.Round(((values.Value<decimal>("WeightsMoney") / firstWeightsMoneys) * 100), 2);
|
||
}
|
||
lastWeights = weights;
|
||
lastWeightsMoneys = values.Value<decimal>("WeightsMoney");
|
||
}
|
||
}
|
||
// 当权重发生变化时,保存到数据库中
|
||
if (changedWeights != weights || changedWeights != weightsMoneys)
|
||
{
|
||
if (type == "cnProfession")
|
||
{
|
||
Model.WBS_CnProfession wbs = BLL.CnProfessionService.GetCnProfessionByCnProfessionId(id);
|
||
if (wbs != null)
|
||
{
|
||
wbs.Weights = weights;
|
||
wbs.WeightsMoney = weightsMoneys;
|
||
}
|
||
}
|
||
if (type == "unitProject" || type == "childUnitProject")
|
||
{
|
||
Model.Wbs_UnitProject unit = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(id);
|
||
if (unit != null)
|
||
{
|
||
unit.Weights = weights;
|
||
unit.WeightsMoney = weightsMoneys;
|
||
}
|
||
}
|
||
if (type == "wbsSet")
|
||
{
|
||
Model.Wbs_WbsSet wbs = BLL.WbsSetService.GetWbsSetByWbsSetId(id);
|
||
if (wbs != null)
|
||
{
|
||
wbs.Weights = weights;
|
||
wbs.WeightsMoney = weightsMoneys;
|
||
}
|
||
}
|
||
Funs.DB.SubmitChanges();
|
||
}
|
||
this.Grid1.Rows[i].Values[7] = weights;
|
||
this.Grid1.Rows[i].Values[8] = weightsMoneys;
|
||
}
|
||
i++;
|
||
}
|
||
BindGrid();
|
||
if (this.Grid1.Rows.Count > 1)
|
||
{
|
||
JObject summary = new JObject();
|
||
summary.Add("ChildName", "合计:");
|
||
summary.Add("Weights", totalOtherWeights + lastWeights);
|
||
summary.Add("WeightsMoney", totalOtherWeightsMoneys + lastWeightsMoneys);
|
||
|
||
Grid1.SummaryData = summary;
|
||
}
|
||
else
|
||
{
|
||
Grid1.SummaryData = null;
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 修改关闭窗口
|
||
/// <summary>
|
||
/// 关闭窗口
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
protected void Window1_Close(object sender, WindowCloseEventArgs e)
|
||
{
|
||
ShowNotify("设置成功!", MessageBoxIcon.Success);
|
||
}
|
||
#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 && x.SuperInstallationId == "0" orderby x.InstallationCode select x;
|
||
foreach (var installation in installations)
|
||
{
|
||
TreeNode rootNode = new TreeNode();
|
||
if (noApproveInstallationIds.Contains(installation.InstallationId))
|
||
{
|
||
rootNode.Text = "<font color='#FF0000'>" + installation.InstallationName + "</font>";
|
||
}
|
||
else
|
||
{
|
||
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);
|
||
TreeNode emptyNode = new TreeNode();
|
||
emptyNode.Text = "";
|
||
emptyNode.NodeID = "";
|
||
rootNode.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();
|
||
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();
|
||
if (noApproveInstallationIds.Contains(installation.InstallationId))
|
||
{
|
||
newNode.Text = "<font color='#FF0000'>" + installation.InstallationName + "</font>";
|
||
}
|
||
else
|
||
{
|
||
newNode.Text = installation.InstallationName;
|
||
}
|
||
newNode.NodeID = installation.InstallationId;
|
||
newNode.CommandName = "installation";
|
||
newNode.CommandArgument = installation.Weights == null ? null : installation.Weights.ToString();
|
||
newNode.ToolTip = installation.InstallationCode;
|
||
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 orderby x.OldId select x;
|
||
if (cnProfessions.Count() > 0) //普通装置主项
|
||
{
|
||
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();
|
||
if (noApproveCnProfessionIds.Contains(cnProfession.CnProfessionId))
|
||
{
|
||
newNode.Text = "<font color='#FF0000'>" + cnProfession.CnProfessionName + "</font>";
|
||
}
|
||
else
|
||
{
|
||
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 //总图
|
||
{
|
||
var unitProjects = from x in Funs.DB.Wbs_UnitProject where x.InstallationId == e.Node.NodeID && x.SuperUnitProjectId == null orderby x.SortIndex, x.UnitProjectCode select x;
|
||
foreach (var unitProject in unitProjects)
|
||
{
|
||
var wbsSets = from x in Funs.DB.Wbs_WbsSet where x.UnitProjectId == unitProject.UnitProjectId && x.IsApprove == true select x;
|
||
if (wbsSets.Count() > 0)
|
||
{
|
||
TreeNode newNode = new TreeNode();
|
||
if (noApproveUnitProjectIds.Contains(unitProject.UnitProjectId))
|
||
{
|
||
newNode.Text = "<font color='#FF0000'>" + unitProject.UnitProjectName + "</font>";
|
||
}
|
||
else
|
||
{
|
||
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 == "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();
|
||
if (noApproveUnitProjectIds.Contains(unitProject.UnitProjectId))
|
||
{
|
||
newNode.Text = "<font color='#FF0000'>" + unitProject.UnitProjectName + "</font>";
|
||
}
|
||
else
|
||
{
|
||
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();
|
||
if (noApproveUnitProjectIds.Contains(childUnitProject.UnitProjectId))
|
||
{
|
||
newNode.Text = "<font color='#FF0000'>" + childUnitProject.UnitProjectName + "</font>";
|
||
}
|
||
else
|
||
{
|
||
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 && x.NoShow == null orderby x.SortIndex, x.WbsSetCode select x;
|
||
if (wbsSet1s.Count() > 0)
|
||
{
|
||
foreach (var wbsSet1 in wbsSet1s)
|
||
{
|
||
TreeNode newNode = new TreeNode();
|
||
if (noApproveWbsSetIds.Contains(wbsSet1.WbsSetId))
|
||
{
|
||
newNode.Text = "<font color='#FF0000'>" + wbsSet1.WbsSetName + "</font>";
|
||
}
|
||
else
|
||
{
|
||
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 && x.NoShow == null orderby x.SortIndex, x.WbsSetCode select x;
|
||
if (wbsSet3s.Count() > 0)
|
||
{
|
||
foreach (var wbsSet3 in wbsSet3s)
|
||
{
|
||
TreeNode newNode = new TreeNode();
|
||
if (noApproveWbsSetIds.Contains(wbsSet3.WbsSetId))
|
||
{
|
||
newNode.Text = "<font color='#FF0000'>" + wbsSet3.WbsSetName + "</font>";
|
||
}
|
||
else
|
||
{
|
||
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 && x.NoShow == null orderby x.SortIndex, x.WbsSetCode select x;
|
||
foreach (var wbsSet1 in wbsSet1s)
|
||
{
|
||
TreeNode newNode = new TreeNode();
|
||
if (noApproveWbsSetIds.Contains(wbsSet1.WbsSetId))
|
||
{
|
||
newNode.Text = "<font color='#FF0000'>" + wbsSet1.WbsSetName + "</font>";
|
||
}
|
||
else
|
||
{
|
||
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();
|
||
if (noApproveWbsSetIds.Contains(wbsSet.WbsSetId))
|
||
{
|
||
newNode.Text = "<font color='#FF0000'>" + wbsSet.WbsSetName + "</font>";
|
||
}
|
||
else
|
||
{
|
||
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 Tree点击事件
|
||
/// <summary>
|
||
/// Tree点击事件
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
protected void trWBS_NodeCommand(object sender, TreeCommandEventArgs e)
|
||
{
|
||
this.Grid1.Hidden = true;
|
||
this.Grid2.Hidden = true;
|
||
this.btnSave.Hidden = false;
|
||
this.Grid2.Columns[7].Hidden = true;
|
||
this.btnUpdateInstallationWeights.Hidden = true;
|
||
if (this.trWBS.SelectedNode.CommandName != "installation" && this.trWBS.SelectedNode.CommandName != "cnProfession" && this.trWBS.SelectedNode.CommandName != "unitProject") //非装置、专业、单位工程节点可以设置
|
||
{
|
||
if (this.trWBS.SelectedNode.CommandName == "childUnitProject")
|
||
{
|
||
var wbsSet1s = from x in Funs.DB.Wbs_WbsSet where x.UnitProjectId == this.trWBS.SelectedNodeID && x.Flag == 1 select x;
|
||
bool isShow = true; //子单位工程下只有一级子级时可以设置、分配权重
|
||
foreach (var wbsSet1 in wbsSet1s)
|
||
{
|
||
var wbsSet2s = from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == wbsSet1.WbsSetId select x;
|
||
if (wbsSet2s.Count() > 0)
|
||
{
|
||
isShow = false;
|
||
break;
|
||
}
|
||
}
|
||
if (isShow)
|
||
{
|
||
this.Grid2.Hidden = false;
|
||
this.Grid1.Hidden = false;
|
||
BindGrid2();
|
||
BindGrid();
|
||
OutputSummaryData();
|
||
}
|
||
else
|
||
{
|
||
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(this.trWBS.SelectedNodeID);
|
||
if (unitProject.EngineerQuantity != null) //设置过工程量
|
||
{
|
||
this.Grid2.Hidden = false;
|
||
BindGrid2();
|
||
this.Grid2.Columns[7].Hidden = false;
|
||
}
|
||
}
|
||
}
|
||
else if (this.trWBS.SelectedNode.CommandName == "wbsSet")
|
||
{
|
||
var wbsSet1s = from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == this.trWBS.SelectedNodeID select x;
|
||
bool isShow = true; //分部分项下只有一级子级时可以设置、分配权重
|
||
if (wbsSet1s.Count() > 0)
|
||
{
|
||
foreach (var wbsSet1 in wbsSet1s)
|
||
{
|
||
var wbsSet2s = from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == wbsSet1.WbsSetId && x.IsApprove == true select x;
|
||
if (wbsSet2s.Count() > 0)
|
||
{
|
||
isShow = false;
|
||
break;
|
||
}
|
||
}
|
||
if (isShow)
|
||
{
|
||
this.Grid2.Hidden = false;
|
||
this.Grid1.Hidden = false;
|
||
BindGrid2();
|
||
BindGrid();
|
||
OutputSummaryData();
|
||
}
|
||
else
|
||
{
|
||
Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(this.trWBS.SelectedNodeID);
|
||
if (wbsSet.EngineerQuantity != null) //设置过工程量
|
||
{
|
||
this.Grid2.Hidden = false;
|
||
BindGrid2();
|
||
this.Grid2.Columns[7].Hidden = false;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else if (this.trWBS.SelectedNode.CommandName == "installation")
|
||
{
|
||
string installationId = this.trWBS.SelectedNodeID;
|
||
Model.Project_Installation installation = BLL.Project_InstallationService.GetInstallationByInstallationId(installationId);
|
||
if (installation.SuperInstallationId == "0")
|
||
{
|
||
this.Grid1.Hidden = false;
|
||
this.btnUpdateInstallationWeights.Hidden = false;
|
||
this.btnSave.Hidden = true;
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 没有审核的项
|
||
/// <summary>
|
||
/// 没有审核的项
|
||
/// </summary>
|
||
private string noAuditText = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 判断上级是不是还有没审核权重项
|
||
/// </summary>
|
||
/// <param name="parentId"></param>
|
||
private void IsParentNoAudit(TreeNode tn)
|
||
{
|
||
if (tn.ParentNode != null)
|
||
{
|
||
if (tn.ParentNode.CommandName == "wbsSet")
|
||
{
|
||
Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(tn.ParentNode.NodeID);
|
||
if (wbsSet != null && (wbsSet.IsWeightsApprove == null || wbsSet.IsWeightsApprove == false))
|
||
{
|
||
noAuditText = noAuditText + wbsSet.WbsSetName + ",";
|
||
}
|
||
}
|
||
|
||
if (tn.ParentNode.CommandName == "unitProject" || tn.ParentNode.CommandName == "childUnitProject")
|
||
{
|
||
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(tn.ParentNode.NodeID);
|
||
if (unitProject != null && (unitProject.IsWeightsApprove == null || unitProject.IsWeightsApprove == false))
|
||
{
|
||
noAuditText = noAuditText + unitProject.UnitProjectName + ",";
|
||
}
|
||
}
|
||
|
||
if (tn.ParentNode.CommandName == "cnProfession")
|
||
{
|
||
Model.WBS_CnProfession cnProfession = BLL.CnProfessionService.GetCnProfessionByCnProfessionId(tn.ParentNode.NodeID);
|
||
if (cnProfession != null && (cnProfession.IsWeightsApprove == null || cnProfession.IsWeightsApprove == false))
|
||
{
|
||
noAuditText = noAuditText + cnProfession.CnProfessionName + ",";
|
||
}
|
||
}
|
||
IsParentNoAudit(tn.ParentNode);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 选择节点没有审核项
|
||
/// </summary>
|
||
/// <param name="tn"></param>
|
||
private void IsSelectNodeNoAudit(TreeNode tn)
|
||
{
|
||
if (tn != null)
|
||
{
|
||
if (tn.CommandName == "wbsSet")
|
||
{
|
||
Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(tn.NodeID);
|
||
if (wbsSet != null && (wbsSet.IsWeightsApprove == null || wbsSet.IsWeightsApprove == false))
|
||
{
|
||
noAuditText = noAuditText + wbsSet.WbsSetName + ",";
|
||
}
|
||
}
|
||
|
||
if (tn.CommandName == "unitProject" || tn.CommandName == "childUnitProject")
|
||
{
|
||
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(tn.NodeID);
|
||
if (unitProject != null && (unitProject.IsWeightsApprove == null || unitProject.IsWeightsApprove == false))
|
||
{
|
||
noAuditText = noAuditText + unitProject.UnitProjectName + ",";
|
||
}
|
||
}
|
||
|
||
if (tn.CommandName == "cnProfession")
|
||
{
|
||
Model.WBS_CnProfession cnProfession = BLL.CnProfessionService.GetCnProfessionByCnProfessionId(tn.NodeID);
|
||
if (cnProfession != null && (cnProfession.IsWeightsApprove == null || cnProfession.IsWeightsApprove == false))
|
||
{
|
||
noAuditText = noAuditText + cnProfession.CnProfessionName + ",";
|
||
}
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 保存方法
|
||
/// <summary>
|
||
/// 保存方法
|
||
/// </summary>
|
||
/// <param name="message"></param>
|
||
private void SaveData()
|
||
{
|
||
decimal totalMoney = 0, percents = 0, moneys = 0;
|
||
JObject firstValue = Grid1.GetMergedData()[0].Value<JObject>("values");
|
||
totalMoney = firstValue.Value<decimal>("WeightsMoney");
|
||
|
||
if (this.Grid1.Rows.Count > 1)
|
||
{
|
||
int j = 0; bool isLessThanZero = false;
|
||
foreach (JObject mergedRow in Grid1.GetMergedData())
|
||
{
|
||
if (j > 0)
|
||
{
|
||
JObject values = mergedRow.Value<JObject>("values");
|
||
if (values["Weights"].ToString() != "")
|
||
{
|
||
percents += values.Value<decimal>("Weights");
|
||
if (values.Value<decimal>("Weights") < 0)
|
||
{
|
||
isLessThanZero = true;
|
||
break;
|
||
}
|
||
}
|
||
if (values["WeightsMoney"].ToString() != "")
|
||
{
|
||
moneys += values.Value<decimal>("WeightsMoney");
|
||
if (values.Value<decimal>("WeightsMoney") < 0)
|
||
{
|
||
isLessThanZero = true;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
j++;
|
||
}
|
||
if (isLessThanZero == true)
|
||
{
|
||
ShowNotify("权重或权重比率不能为负值!", MessageBoxIcon.Success);
|
||
return;
|
||
}
|
||
if (percents != 100)
|
||
{
|
||
Alert.ShowInTop("占比值不是100%!", MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
}
|
||
Model.Project_Sys_Set sysSet = BLL.Project_SysSetService.GetSysSetBySetId("21", this.CurrUser.LoginProjectId);
|
||
int i = 0;
|
||
foreach (JObject mergedRow in Grid1.GetMergedData())
|
||
{
|
||
if (i > 0)
|
||
{
|
||
JObject values = mergedRow.Value<JObject>("values");
|
||
string rowId = values["Id"].ToString();
|
||
string type = values["Type"].ToString();
|
||
if (type == "childUnitProject")
|
||
{
|
||
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(rowId);
|
||
if (unitProject != null)
|
||
{
|
||
Model.Wbs_UnitProject unitProjectParent = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(unitProject.SuperUnitProjectId);
|
||
unitProject.Weights = Funs.GetNewDecimalOrZero(values["Weights"].ToString());
|
||
unitProject.WeightsMoney = unitProject.Weights * unitProjectParent.WeightsMoney / 100;
|
||
unitProject.IsWeightsApprove = true;
|
||
BLL.UnitProjectService.UpdateUnitProject(unitProject);
|
||
}
|
||
}
|
||
else if (type == "wbsSet")
|
||
{
|
||
Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(rowId);
|
||
if (wbsSet != null)
|
||
{
|
||
if (string.IsNullOrEmpty(wbsSet.SuperWbsSetId)) //父级为单位工程
|
||
{
|
||
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(wbsSet.UnitProjectId);
|
||
wbsSet.Weights = Funs.GetNewDecimalOrZero(values["Weights"].ToString());
|
||
wbsSet.WeightsMoney = wbsSet.Weights * unitProject.WeightsMoney / 100;
|
||
wbsSet.IsWeightsApprove = true;
|
||
BLL.WbsSetService.UpdateWbsSet(wbsSet);
|
||
}
|
||
else //父级为分部分项工程
|
||
{
|
||
Model.Wbs_WbsSet wbsSetParent = BLL.WbsSetService.GetWbsSetByWbsSetId(wbsSet.SuperWbsSetId);
|
||
wbsSet.Weights = Funs.GetNewDecimalOrZero(values["Weights"].ToString());
|
||
wbsSet.WeightsMoney = wbsSet.Weights * wbsSetParent.WeightsMoney / 100;
|
||
wbsSet.IsWeightsApprove = true;
|
||
BLL.WbsSetService.UpdateWbsSet(wbsSet);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
i++;
|
||
}
|
||
//BLL.Sys_LogService.AddLog(BLL.Const.System_9, this.CurrUser.LoginProjectId, this.CurrUser.UserId, "审核权重");
|
||
Alert.ShowInTop("保存成功!", MessageBoxIcon.Success);
|
||
}
|
||
#endregion
|
||
|
||
#region 根据比例(因权重发生变化造成数据不一致)更新子级权重
|
||
/// <summary>
|
||
/// 根据比例更新子级权重
|
||
/// </summary>
|
||
/// <param name="message"></param>
|
||
private void UpdateWeights(string id, string type)
|
||
{
|
||
decimal rate = 0, weights = 0, totalWeights = 0, values = 0;
|
||
int i = 0;
|
||
if (type == "installation")
|
||
{
|
||
var ins = BLL.Project_InstallationService.GetInstallationByInstallationId(id);
|
||
var cnProfession = from x in Funs.DB.WBS_CnProfession where x.InstallationId == id select x;
|
||
if (ins != null && ins.WeightsMoney != null)
|
||
{
|
||
weights = ins.WeightsMoney ?? 0;
|
||
}
|
||
if (cnProfession.Count() > 0)
|
||
{
|
||
rate = cnProfession.Sum(e => e.Weights ?? 0);
|
||
totalWeights = cnProfession.Sum(e => e.WeightsMoney ?? 0);
|
||
}
|
||
|
||
if (rate <= 100 && weights != totalWeights)
|
||
{
|
||
foreach (var q in cnProfession)
|
||
{
|
||
if (i == cnProfession.Count() - 1 && rate == 100)
|
||
{
|
||
q.WeightsMoney = weights - values;
|
||
}
|
||
else
|
||
{
|
||
q.WeightsMoney = decimal.Round(((q.Weights ?? 0) * weights / 100), 2);
|
||
values = values + q.WeightsMoney ?? 0;
|
||
}
|
||
Funs.DB.SubmitChanges();
|
||
|
||
i++;
|
||
}
|
||
}
|
||
}
|
||
if (type == "cnProfession")
|
||
{
|
||
var cn = BLL.CnProfessionService.GetCnProfessionByCnProfessionId(id);
|
||
var unit = from x in Funs.DB.Wbs_UnitProject where x.CnProfessionId == id select x;
|
||
if (cn != null && cn.WeightsMoney != null)
|
||
{
|
||
weights = cn.WeightsMoney ?? 0;
|
||
}
|
||
if (unit.Count() > 0)
|
||
{
|
||
rate = unit.Sum(e => e.Weights ?? 0);
|
||
totalWeights = unit.Sum(e => e.WeightsMoney ?? 0);
|
||
}
|
||
|
||
if (rate <= 100 && weights != totalWeights)
|
||
{
|
||
foreach (var q in unit)
|
||
{
|
||
if (i == unit.Count() - 1 && rate == 100)
|
||
{
|
||
q.WeightsMoney = weights - values;
|
||
}
|
||
else
|
||
{
|
||
q.WeightsMoney = decimal.Round(((q.Weights ?? 0) * weights / 100), 2);
|
||
values = values + q.WeightsMoney ?? 0;
|
||
}
|
||
Funs.DB.SubmitChanges();
|
||
|
||
i++;
|
||
}
|
||
}
|
||
}
|
||
|
||
if (type == "unitProject")
|
||
{
|
||
var unit = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(id);
|
||
var childUnit = from x in Funs.DB.Wbs_UnitProject where x.SuperUnitProjectId == id select x;
|
||
var wbs = from x in Funs.DB.Wbs_WbsSet where x.UnitProjectId == id && (x.Flag == 1 || x.SuperWbsSetId == null) select x;
|
||
if (unit != null && unit.WeightsMoney != null)
|
||
{
|
||
weights = unit.WeightsMoney ?? 0;
|
||
}
|
||
if (childUnit.Count() > 0)
|
||
{
|
||
rate = childUnit.Sum(e => e.Weights ?? 0);
|
||
totalWeights = childUnit.Sum(e => e.WeightsMoney ?? 0);
|
||
}
|
||
|
||
if (wbs.Count() > 0)
|
||
{
|
||
rate = wbs.Sum(e => e.Weights ?? 0);
|
||
totalWeights = wbs.Sum(e => e.WeightsMoney ?? 0);
|
||
}
|
||
|
||
if (rate <= 100 && weights != totalWeights)
|
||
{
|
||
if (childUnit.Count() > 0)
|
||
{
|
||
foreach (var q in childUnit)
|
||
{
|
||
if (i == childUnit.Count() - 1 && rate == 100)
|
||
{
|
||
q.WeightsMoney = weights - values;
|
||
}
|
||
else
|
||
{
|
||
q.WeightsMoney = decimal.Round(((q.Weights ?? 0) * weights / 100), 2);
|
||
values = values + q.WeightsMoney ?? 0;
|
||
}
|
||
Funs.DB.SubmitChanges();
|
||
|
||
i++;
|
||
}
|
||
}
|
||
if (wbs.Count() > 0)
|
||
{
|
||
foreach (var q in wbs)
|
||
{
|
||
if (i == wbs.Count() - 1 && rate == 100)
|
||
{
|
||
q.WeightsMoney = weights - values;
|
||
}
|
||
else
|
||
{
|
||
q.WeightsMoney = decimal.Round(((q.Weights ?? 0) * weights / 100), 2);
|
||
values = values + q.WeightsMoney ?? 0;
|
||
}
|
||
Funs.DB.SubmitChanges();
|
||
|
||
i++;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
if (type == "childUnitProject")
|
||
{
|
||
var unit = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(id);
|
||
var wbs = from x in Funs.DB.Wbs_WbsSet where x.UnitProjectId == id && (x.Flag == 1 || x.SuperWbsSetId == null) select x;
|
||
if (unit != null && unit.WeightsMoney != null)
|
||
{
|
||
weights = unit.WeightsMoney ?? 0;
|
||
}
|
||
|
||
if (wbs.Count() > 0)
|
||
{
|
||
rate = wbs.Sum(e => e.Weights ?? 0);
|
||
totalWeights = wbs.Sum(e => e.WeightsMoney ?? 0);
|
||
}
|
||
|
||
if (rate <= 100 && weights != totalWeights)
|
||
{
|
||
foreach (var q in wbs)
|
||
{
|
||
if (i == wbs.Count() - 1 && rate == 100)
|
||
{
|
||
q.WeightsMoney = weights - values;
|
||
}
|
||
else
|
||
{
|
||
q.WeightsMoney = decimal.Round(((q.Weights ?? 0) * weights / 100), 2);
|
||
values = values + q.WeightsMoney ?? 0;
|
||
}
|
||
Funs.DB.SubmitChanges();
|
||
|
||
i++;
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
if (type == "wbsSet")
|
||
{
|
||
var wbs = BLL.WbsSetService.GetWbsSetByWbsSetId(id);
|
||
var childWbs = from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == id select x;
|
||
if (wbs != null && wbs.WeightsMoney != null)
|
||
{
|
||
weights = wbs.WeightsMoney ?? 0;
|
||
}
|
||
|
||
if (childWbs.Count() > 0)
|
||
{
|
||
rate = childWbs.Sum(e => e.Weights ?? 0);
|
||
totalWeights = childWbs.Sum(e => e.WeightsMoney ?? 0);
|
||
}
|
||
|
||
if (rate <= 100 && weights != totalWeights)
|
||
{
|
||
foreach (var q in childWbs)
|
||
{
|
||
if (i == childWbs.Count() - 1 && rate == 100)
|
||
{
|
||
q.WeightsMoney = weights - values;
|
||
}
|
||
else
|
||
{
|
||
q.WeightsMoney = decimal.Round(((q.Weights ?? 0) * weights / 100), 2);
|
||
values = values + q.WeightsMoney ?? 0;
|
||
}
|
||
Funs.DB.SubmitChanges();
|
||
|
||
i++;
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
#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)
|
||
{
|
||
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(this.Grid1.Rows[0].DataKeys[0].ToString());
|
||
Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(this.Grid1.Rows[0].DataKeys[0].ToString());
|
||
if (unitProject != null)
|
||
{
|
||
if (unitProject.WeightsMoney == null || unitProject.WeightsMoney == 0)
|
||
{
|
||
Alert.ShowInTop("请先设置父级工作量!", MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
}
|
||
if (wbsSet != null)
|
||
{
|
||
if (wbsSet.WeightsMoney == null || wbsSet.WeightsMoney == 0)
|
||
{
|
||
Alert.ShowInTop("请先设置父级工作量!", MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
}
|
||
SaveData();
|
||
}
|
||
else
|
||
{
|
||
Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 提交
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
protected void btnSave2_Click(object sender, EventArgs e)
|
||
{
|
||
if (this.Grid2.Rows.Count > 0)
|
||
{
|
||
if (this.trWBS.SelectedNode.CommandName == "childUnitProject")
|
||
{
|
||
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(this.trWBS.SelectedNode.NodeID);
|
||
foreach (JObject mergedRow in Grid2.GetMergedData())
|
||
{
|
||
decimal oldWeightsMoney = unitProject.WeightsMoney ?? 0;
|
||
JObject values = mergedRow.Value<JObject>("values");
|
||
if (string.IsNullOrEmpty(values.Value<string>("EngineerQuantity")) || string.IsNullOrEmpty(values.Value<string>("BudgetUnitPrice")) || string.IsNullOrEmpty(values.Value<string>("CostUnivalent")))
|
||
{
|
||
Alert.ShowInTop("工程量、预算单价、成本单价不能为空!", MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
unitProject.EngineerQuantity = Convert.ToDecimal(values.Value<string>("EngineerQuantity"));
|
||
unitProject.Unit = values.Value<string>("Unit");
|
||
unitProject.BudgetUnitPrice = Convert.ToDecimal(values.Value<string>("BudgetUnitPrice"));
|
||
unitProject.CostUnivalent = Convert.ToDecimal(values.Value<string>("CostUnivalent"));
|
||
unitProject.WeightsMoney = unitProject.EngineerQuantity * unitProject.BudgetUnitPrice;
|
||
unitProject.IsWeightsApprove = true;
|
||
BLL.UnitProjectService.UpdateUnitProject(unitProject);
|
||
decimal money = Convert.ToDecimal(unitProject.WeightsMoney) - oldWeightsMoney;
|
||
UpdateParentWeightsMoney1(unitProject, money);
|
||
}
|
||
}
|
||
else if (this.trWBS.SelectedNode.CommandName == "wbsSet")
|
||
{
|
||
Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(this.trWBS.SelectedNode.NodeID);
|
||
foreach (JObject mergedRow in Grid2.GetMergedData())
|
||
{
|
||
decimal oldWeightsMoney = wbsSet.WeightsMoney ?? 0;
|
||
JObject values = mergedRow.Value<JObject>("values");
|
||
if (string.IsNullOrEmpty(values.Value<string>("EngineerQuantity")) || string.IsNullOrEmpty(values.Value<string>("BudgetUnitPrice")) || string.IsNullOrEmpty(values.Value<string>("CostUnivalent")))
|
||
{
|
||
Alert.ShowInTop("工程量、预算单价、成本单价不能为空!", MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
wbsSet.EngineerQuantity = Convert.ToDecimal(values.Value<string>("EngineerQuantity"));
|
||
wbsSet.Unit = values.Value<string>("Unit");
|
||
wbsSet.BudgetUnitPrice = Convert.ToDecimal(values.Value<string>("BudgetUnitPrice"));
|
||
wbsSet.CostUnivalent = Convert.ToDecimal(values.Value<string>("CostUnivalent"));
|
||
wbsSet.WeightsMoney = wbsSet.EngineerQuantity * wbsSet.BudgetUnitPrice;
|
||
wbsSet.IsWeightsApprove = true;
|
||
BLL.WbsSetService.UpdateWbsSet(wbsSet);
|
||
decimal money = Convert.ToDecimal(wbsSet.WeightsMoney) - oldWeightsMoney;
|
||
UpdateParentWeightsMoney2(wbsSet, money);
|
||
}
|
||
}
|
||
Alert.ShowInTop("保存成功!", MessageBoxIcon.Success);
|
||
}
|
||
else
|
||
{
|
||
Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 更新父级权重费用(当前级为子单位工程)
|
||
/// </summary>
|
||
/// <param name="childUnitProject"></param>
|
||
private void UpdateParentWeightsMoney1(Model.Wbs_UnitProject childUnitProject, decimal money)
|
||
{
|
||
//更新单位工程
|
||
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(childUnitProject.SuperUnitProjectId);
|
||
if (unitProject.WeightsMoney == null)
|
||
{
|
||
unitProject.WeightsMoney = money;
|
||
}
|
||
else
|
||
{
|
||
unitProject.WeightsMoney += money;
|
||
}
|
||
BLL.UnitProjectService.UpdateUnitProject(unitProject);
|
||
//更新专业
|
||
Model.WBS_CnProfession cnProfession = BLL.CnProfessionService.GetCnProfessionByCnProfessionId(childUnitProject.CnProfessionId);
|
||
if (cnProfession.WeightsMoney == null)
|
||
{
|
||
cnProfession.WeightsMoney = money;
|
||
}
|
||
else
|
||
{
|
||
cnProfession.WeightsMoney += money;
|
||
}
|
||
BLL.CnProfessionService.UpdateCnProfession(cnProfession);
|
||
//更新装置
|
||
//主项
|
||
Model.Project_Installation installation = BLL.Project_InstallationService.GetInstallationByInstallationId(childUnitProject.InstallationId);
|
||
if (installation.WeightsMoney == null)
|
||
{
|
||
installation.WeightsMoney = money;
|
||
}
|
||
else
|
||
{
|
||
installation.WeightsMoney += money;
|
||
}
|
||
BLL.Project_InstallationService.UpdateInstallation(installation);
|
||
//工序
|
||
Model.Project_Installation pInstallation = BLL.Project_InstallationService.GetInstallationByInstallationId(installation.SuperInstallationId);
|
||
if (pInstallation.WeightsMoney == null)
|
||
{
|
||
pInstallation.WeightsMoney = money;
|
||
}
|
||
else
|
||
{
|
||
pInstallation.WeightsMoney += money;
|
||
}
|
||
BLL.Project_InstallationService.UpdateInstallation(pInstallation);
|
||
//装置
|
||
Model.Project_Installation ppInstallation = BLL.Project_InstallationService.GetInstallationByInstallationId(pInstallation.SuperInstallationId);
|
||
if (ppInstallation.WeightsMoney == null)
|
||
{
|
||
ppInstallation.WeightsMoney = money;
|
||
}
|
||
else
|
||
{
|
||
ppInstallation.WeightsMoney += money;
|
||
}
|
||
BLL.Project_InstallationService.UpdateInstallation(ppInstallation);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 更新父级权重费用(当前级为分部分项工程)
|
||
/// </summary>
|
||
/// <param name="childUnitProject"></param>
|
||
private void UpdateParentWeightsMoney2(Model.Wbs_WbsSet wbsSet, decimal money)
|
||
{
|
||
//更新分部分项工程
|
||
Model.Wbs_WbsSet pWbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(wbsSet.SuperWbsSetId);
|
||
if (pWbsSet != null)
|
||
{
|
||
if (pWbsSet.WeightsMoney == null)
|
||
{
|
||
pWbsSet.WeightsMoney = money;
|
||
}
|
||
else
|
||
{
|
||
pWbsSet.WeightsMoney += money;
|
||
}
|
||
BLL.WbsSetService.UpdateWbsSet(pWbsSet);
|
||
Model.Wbs_WbsSet ppWbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(pWbsSet.SuperWbsSetId);
|
||
if (ppWbsSet != null)
|
||
{
|
||
if (ppWbsSet.WeightsMoney == null)
|
||
{
|
||
ppWbsSet.WeightsMoney = money;
|
||
}
|
||
else
|
||
{
|
||
ppWbsSet.WeightsMoney += money;
|
||
}
|
||
BLL.WbsSetService.UpdateWbsSet(ppWbsSet);
|
||
Model.Wbs_WbsSet pppWbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(ppWbsSet.SuperWbsSetId);
|
||
if (pppWbsSet != null)
|
||
{
|
||
if (pppWbsSet.WeightsMoney == null)
|
||
{
|
||
pppWbsSet.WeightsMoney = money;
|
||
}
|
||
else
|
||
{
|
||
pppWbsSet.WeightsMoney += money;
|
||
}
|
||
BLL.WbsSetService.UpdateWbsSet(pppWbsSet);
|
||
}
|
||
}
|
||
}
|
||
//更新单位工程
|
||
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(wbsSet.UnitProjectId);
|
||
if (unitProject.WeightsMoney == null)
|
||
{
|
||
unitProject.WeightsMoney = money;
|
||
}
|
||
else
|
||
{
|
||
unitProject.WeightsMoney += money;
|
||
}
|
||
BLL.UnitProjectService.UpdateUnitProject(unitProject);
|
||
Model.Wbs_UnitProject pUnitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(unitProject.SuperUnitProjectId);
|
||
if (pUnitProject != null)
|
||
{
|
||
if (pUnitProject.WeightsMoney == null)
|
||
{
|
||
pUnitProject.WeightsMoney = money;
|
||
}
|
||
else
|
||
{
|
||
pUnitProject.WeightsMoney += money;
|
||
}
|
||
BLL.UnitProjectService.UpdateUnitProject(pUnitProject);
|
||
}
|
||
if (unitProject.CnProfessionId != null) //非总图内容
|
||
{
|
||
//更新专业
|
||
Model.WBS_CnProfession cnProfession = BLL.CnProfessionService.GetCnProfessionByCnProfessionId(unitProject.CnProfessionId);
|
||
if (cnProfession.WeightsMoney == null)
|
||
{
|
||
cnProfession.WeightsMoney = money;
|
||
}
|
||
else
|
||
{
|
||
cnProfession.WeightsMoney += money;
|
||
}
|
||
BLL.CnProfessionService.UpdateCnProfession(cnProfession);
|
||
//更新装置
|
||
//主项
|
||
Model.Project_Installation installation = BLL.Project_InstallationService.GetInstallationByInstallationId(unitProject.InstallationId);
|
||
if (installation.WeightsMoney == null)
|
||
{
|
||
installation.WeightsMoney = money;
|
||
}
|
||
else
|
||
{
|
||
installation.WeightsMoney += money;
|
||
}
|
||
BLL.Project_InstallationService.UpdateInstallation(installation);
|
||
//工序
|
||
Model.Project_Installation pInstallation = BLL.Project_InstallationService.GetInstallationByInstallationId(installation.SuperInstallationId);
|
||
if (pInstallation.WeightsMoney == null)
|
||
{
|
||
pInstallation.WeightsMoney = money;
|
||
}
|
||
else
|
||
{
|
||
pInstallation.WeightsMoney += money;
|
||
}
|
||
BLL.Project_InstallationService.UpdateInstallation(pInstallation);
|
||
//装置
|
||
Model.Project_Installation ppInstallation = BLL.Project_InstallationService.GetInstallationByInstallationId(pInstallation.SuperInstallationId);
|
||
if (ppInstallation.WeightsMoney == null)
|
||
{
|
||
ppInstallation.WeightsMoney = money;
|
||
}
|
||
else
|
||
{
|
||
ppInstallation.WeightsMoney += money;
|
||
}
|
||
BLL.Project_InstallationService.UpdateInstallation(ppInstallation);
|
||
}
|
||
else //总图
|
||
{
|
||
Model.Project_Installation installation = BLL.Project_InstallationService.GetInstallationByInstallationId(unitProject.InstallationId);
|
||
if (installation.WeightsMoney == null)
|
||
{
|
||
installation.WeightsMoney = money;
|
||
}
|
||
else
|
||
{
|
||
installation.WeightsMoney += money;
|
||
}
|
||
BLL.Project_InstallationService.UpdateInstallation(installation);
|
||
}
|
||
}
|
||
|
||
#region 取消审核
|
||
/// <summary>
|
||
/// 判断子节点有没有审核权重项
|
||
/// </summary>
|
||
/// <param name="parentId"></param>
|
||
private bool IsChildAudit(GridRow row)
|
||
{
|
||
bool isAudit = false;
|
||
if (row.Values[14].ToString() == "cnProfession")
|
||
{
|
||
var unitProject = BLL.UnitProjectService.GetUnitProjectsBySuperUnitProjectId(row.RowID);
|
||
if (unitProject != null)
|
||
{
|
||
foreach (var unit in unitProject)
|
||
{
|
||
if (unit.IsWeightsApprove == true)
|
||
{
|
||
isAudit = true;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (row.Values[14].ToString() == "unitProject")
|
||
{
|
||
var childUnit = BLL.UnitProjectService.GetUnitProjectsBySuperUnitProjectId(row.RowID);
|
||
if (childUnit != null)
|
||
{
|
||
foreach (var child in childUnit)
|
||
{
|
||
if (child.IsWeightsApprove == true)
|
||
{
|
||
isAudit = true;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
var wbsSet = from x in Funs.DB.Wbs_WbsSet where x.UnitProjectId == row.RowID select x;
|
||
if (wbsSet != null)
|
||
{
|
||
foreach (var wbs in wbsSet)
|
||
{
|
||
if (wbs.IsWeightsApprove == true)
|
||
{
|
||
isAudit = true;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (row.Values[14].ToString() == "childUnitProject")
|
||
{
|
||
var wbsSet = from x in Funs.DB.Wbs_WbsSet where x.UnitProjectId == row.RowID select x;
|
||
if (wbsSet != null)
|
||
{
|
||
foreach (var wbs in wbsSet)
|
||
{
|
||
if (wbs.IsWeightsApprove == true)
|
||
{
|
||
isAudit = true;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
if (row.Values[14].ToString() == "wbsSet")
|
||
{
|
||
var wbsSet = BLL.WbsSetService.GetWbsSetsBySuperWbsSetId(row.RowID);
|
||
if (wbsSet != null)
|
||
{
|
||
foreach (var wbs in wbsSet)
|
||
{
|
||
if (wbs.IsWeightsApprove == true)
|
||
{
|
||
isAudit = true;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return isAudit;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 右键取消审核事件
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
protected void btnClearAudit_Click(object sender, EventArgs e)
|
||
{
|
||
//if (BLL.CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, Const.JDGL_WeightsAuditMenuId, Const.BtnCancelAuditing))
|
||
//{
|
||
if (IsChildAudit(Grid1.SelectedRow))
|
||
{
|
||
Alert.ShowInTop("该项的子项权重已设置审核,不能取消审核!", MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
else
|
||
{
|
||
if (Grid1.SelectedRow.Values[14].ToString() == "cnProfession")
|
||
{
|
||
var cn = BLL.CnProfessionService.GetCnProfessionByCnProfessionId(Grid1.SelectedRow.RowID);
|
||
if (cn != null)
|
||
{
|
||
cn.IsWeightsApprove = false;
|
||
}
|
||
}
|
||
if (Grid1.SelectedRow.Values[14].ToString() == "unitProject" || Grid1.SelectedRow.Values[14].ToString() == "childUnitProject")
|
||
{
|
||
var unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(Grid1.SelectedRow.RowID);
|
||
if (unitProject != null)
|
||
{
|
||
unitProject.IsWeightsApprove = false;
|
||
}
|
||
}
|
||
if (Grid1.SelectedRow.Values[14].ToString() == "wbsSet")
|
||
{
|
||
var wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(Grid1.SelectedRow.RowID);
|
||
if (wbsSet != null)
|
||
{
|
||
wbsSet.IsWeightsApprove = false;
|
||
}
|
||
}
|
||
Funs.DB.SubmitChanges();
|
||
BindGrid();
|
||
Alert.ShowInTop("已取消该项审核!", MessageBoxIcon.Warning);
|
||
}
|
||
//}
|
||
//else
|
||
//{
|
||
// Alert.ShowInTop("您没有消该项审权限,请于管理员联系!", MessageBoxIcon.Warning);
|
||
//}
|
||
}
|
||
#endregion
|
||
|
||
#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>
|
||
/// 分页下拉选择事件
|
||
/// </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>
|
||
/// 加载Grid2
|
||
/// </summary>
|
||
private void BindGrid2()
|
||
{
|
||
this.Grid2.Columns[4].Hidden = false;
|
||
this.Grid2.Columns[5].Hidden = false;
|
||
List<Model.WBSSetItem> items = new List<Model.WBSSetItem>();
|
||
Model.WBSSetItem item = new Model.WBSSetItem();
|
||
if (this.trWBS.SelectedNode != null)
|
||
{
|
||
if (this.trWBS.SelectedNode.CommandName == "childUnitProject")
|
||
{
|
||
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(this.trWBS.SelectedNode.NodeID);
|
||
if (unitProject != null)
|
||
{
|
||
item.Id = this.trWBS.SelectedNode.NodeID;
|
||
item.Code = unitProject.UnitProjectCode;
|
||
item.Name = unitProject.UnitProjectName;
|
||
item.Type = "unitProject";
|
||
item.StartDate = unitProject.StartDate;
|
||
item.EndDate = unitProject.EndDate;
|
||
item.Weights = unitProject.Weights;
|
||
item.WeightsMoney = unitProject.WeightsMoney;
|
||
item.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(item.WeightsMoney), 2).ToString();
|
||
item.EngineerQuantity = unitProject.EngineerQuantity;
|
||
string unit = string.Empty;
|
||
decimal? budgetUnitPrice = 0, costUnivalent = 0;
|
||
Model.Wbs_UnitProject pUnitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(unitProject.SuperUnitProjectId);
|
||
if (pUnitProject != null)
|
||
{
|
||
if (!string.IsNullOrEmpty(pUnitProject.Unit))
|
||
{
|
||
unit = pUnitProject.Unit;
|
||
}
|
||
if (pUnitProject.BudgetUnitPrice != null)
|
||
{
|
||
budgetUnitPrice = pUnitProject.BudgetUnitPrice;
|
||
this.Grid2.Columns[4].Hidden = true;
|
||
this.Grid2.Columns[5].Hidden = true;
|
||
}
|
||
if (pUnitProject.CostUnivalent != null)
|
||
{
|
||
costUnivalent = pUnitProject.CostUnivalent;
|
||
}
|
||
}
|
||
item.Unit = unitProject.Unit == null ? unit : unitProject.Unit;
|
||
item.BudgetUnitPrice = unitProject.BudgetUnitPrice == null ? budgetUnitPrice : unitProject.BudgetUnitPrice;
|
||
item.CostUnivalent = unitProject.CostUnivalent == null ? costUnivalent : unitProject.CostUnivalent;
|
||
item.ChildEngineerQuantitys = BLL.UnitProjectService.GetChildEngineerQuantitys(this.trWBS.SelectedNode.NodeID);
|
||
items.Add(item);
|
||
}
|
||
}
|
||
else if (this.trWBS.SelectedNode.CommandName == "wbsSet")
|
||
{
|
||
Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(this.trWBS.SelectedNode.NodeID);
|
||
item.Id = this.trWBS.SelectedNode.NodeID;
|
||
item.Code = wbsSet.WbsSetCode;
|
||
item.Name = wbsSet.WbsSetName;
|
||
item.Type = "wbsSet";
|
||
item.StartDate = wbsSet.StartDate;
|
||
item.EndDate = wbsSet.EndDate;
|
||
item.Weights = wbsSet.Weights;
|
||
item.WeightsMoney = wbsSet.WeightsMoney;
|
||
item.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(item.WeightsMoney), 2).ToString();
|
||
item.EngineerQuantity = wbsSet.EngineerQuantity;
|
||
string unit = string.Empty;
|
||
decimal? budgetUnitPrice = 0, costUnivalent = 0;
|
||
Model.Wbs_WbsSet pWbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(wbsSet.SuperWbsSetId);
|
||
if (pWbsSet != null)
|
||
{
|
||
if (pWbsSet.Unit != null)
|
||
{
|
||
unit = pWbsSet.Unit;
|
||
}
|
||
if (pWbsSet.BudgetUnitPrice != null)
|
||
{
|
||
budgetUnitPrice = pWbsSet.BudgetUnitPrice;
|
||
this.Grid2.Columns[4].Hidden = true;
|
||
this.Grid2.Columns[5].Hidden = true;
|
||
}
|
||
if (pWbsSet.CostUnivalent != null)
|
||
{
|
||
costUnivalent = pWbsSet.CostUnivalent;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
Model.Wbs_UnitProject pUnitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(wbsSet.UnitProjectId);
|
||
if (pUnitProject.Unit != null)
|
||
{
|
||
unit = pUnitProject.Unit;
|
||
}
|
||
if (pUnitProject.BudgetUnitPrice != null)
|
||
{
|
||
budgetUnitPrice = pUnitProject.BudgetUnitPrice;
|
||
this.Grid2.Columns[4].Hidden = true;
|
||
this.Grid2.Columns[5].Hidden = true;
|
||
}
|
||
if (pUnitProject.CostUnivalent != null)
|
||
{
|
||
costUnivalent = pUnitProject.CostUnivalent;
|
||
}
|
||
}
|
||
item.Unit = wbsSet.Unit == null ? unit : wbsSet.Unit;
|
||
item.BudgetUnitPrice = wbsSet.BudgetUnitPrice == null ? budgetUnitPrice : wbsSet.BudgetUnitPrice;
|
||
item.CostUnivalent = wbsSet.CostUnivalent == null ? costUnivalent : wbsSet.CostUnivalent;
|
||
item.ChildEngineerQuantitys = BLL.WbsSetService.GetChildEngineerQuantitys(this.trWBS.SelectedNode.NodeID);
|
||
items.Add(item);
|
||
}
|
||
this.Grid2.DataSource = items;
|
||
this.Grid2.DataBind();
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 加载Grid
|
||
/// </summary>
|
||
private void BindGrid()
|
||
{
|
||
List<Model.WBSSetItem> items = new List<Model.WBSSetItem>();
|
||
if (this.trWBS.SelectedNode != null)
|
||
{
|
||
if (this.trWBS.SelectedNode.CommandName == "installation")
|
||
{
|
||
this.Grid1.Columns[0].HeaderText = "装置";
|
||
this.Grid1.Columns[1].HeaderText = "专业";
|
||
Model.Project_Installation installation = BLL.Project_InstallationService.GetInstallationByInstallationId(this.trWBS.SelectedNodeID);
|
||
Model.WBSSetItem parentItem = new Model.WBSSetItem();
|
||
if (installation != null)
|
||
{
|
||
Model.Base_Project project = BLL.ProjectService.GetProjectByProjectId(this.CurrUser.LoginProjectId);
|
||
parentItem.Id = this.trWBS.SelectedNode.NodeID;
|
||
parentItem.Code = installation.InstallationCode;
|
||
parentItem.Name = installation.InstallationName;
|
||
parentItem.Type = "installation";
|
||
parentItem.StartDate = installation.StartDate;
|
||
parentItem.EndDate = installation.EndDate;
|
||
parentItem.Weights = installation.Weights;
|
||
if (project.ConstructionMoney != null)
|
||
{
|
||
parentItem.WeightsMoney = Convert.ToDecimal(project.ConstructionMoney * installation.Weights / 100);
|
||
parentItem.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(parentItem.WeightsMoney), 2).ToString();
|
||
}
|
||
items.Add(parentItem);
|
||
}
|
||
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 unitProjects = from x in Funs.DB.Wbs_UnitProject where x.CnProfessionId == cnProfession.CnProfessionId && x.IsApprove == true select x;
|
||
if (unitProjects.Count() > 0)
|
||
{
|
||
Model.WBSSetItem item = new Model.WBSSetItem();
|
||
item.Id = cnProfession.CnProfessionId;
|
||
item.ChildCode = cnProfession.CnProfessionCode;
|
||
item.ChildName = cnProfession.CnProfessionName;
|
||
item.Type = "cnProfession";
|
||
item.StartDate = cnProfession.StartDate;
|
||
item.EndDate = cnProfession.EndDate;
|
||
item.Weights = cnProfession.Weights;
|
||
item.WeightsMoney = cnProfession.WeightsMoney;
|
||
item.WeightsMoneys = parentItem.WeightsMoney;
|
||
if (item.WeightsMoney != null)
|
||
{
|
||
item.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(item.WeightsMoney), 2).ToString();
|
||
}
|
||
items.Add(item);
|
||
}
|
||
}
|
||
}
|
||
else if (this.trWBS.SelectedNode.CommandName == "cnProfession")
|
||
{
|
||
this.Grid1.Columns[0].HeaderText = "专业";
|
||
this.Grid1.Columns[1].HeaderText = "单位工程";
|
||
Model.WBS_CnProfession cnProfession = BLL.CnProfessionService.GetCnProfessionByCnProfessionId(this.trWBS.SelectedNode.NodeID);
|
||
Model.WBSSetItem parentItem = new Model.WBSSetItem();
|
||
if (cnProfession != null)
|
||
{
|
||
parentItem.Id = this.trWBS.SelectedNode.NodeID;
|
||
parentItem.Code = cnProfession.CnProfessionCode;
|
||
parentItem.Name = cnProfession.CnProfessionName;
|
||
parentItem.Type = "cnProfession";
|
||
parentItem.StartDate = cnProfession.StartDate;
|
||
parentItem.EndDate = cnProfession.EndDate;
|
||
parentItem.Weights = cnProfession.Weights;
|
||
parentItem.WeightsMoney = cnProfession.WeightsMoney;
|
||
parentItem.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(parentItem.WeightsMoney), 2).ToString();
|
||
items.Add(parentItem);
|
||
}
|
||
var unitProjects = from x in Funs.DB.Wbs_UnitProject where x.CnProfessionId == this.trWBS.SelectedNodeID && x.SuperUnitProjectId == null && x.IsApprove == true orderby x.SortIndex, x.UnitProjectCode select x;
|
||
foreach (var unitProject in unitProjects)
|
||
{
|
||
Model.WBSSetItem item = new Model.WBSSetItem();
|
||
item.Id = unitProject.UnitProjectId;
|
||
item.ChildCode = unitProject.UnitProjectCode;
|
||
item.ChildName = unitProject.UnitProjectName;
|
||
item.Type = "unitProject";
|
||
item.StartDate = unitProject.StartDate;
|
||
item.EndDate = unitProject.EndDate;
|
||
item.Weights = unitProject.Weights;
|
||
item.WeightsMoney = unitProject.WeightsMoney;
|
||
item.WeightsMoneys = parentItem.WeightsMoney;
|
||
if (item.WeightsMoney != null)
|
||
{
|
||
item.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(item.WeightsMoney), 2).ToString();
|
||
}
|
||
items.Add(item);
|
||
}
|
||
}
|
||
else if (this.trWBS.SelectedNode.CommandName == "unitProject")
|
||
{
|
||
this.Grid1.Columns[0].HeaderText = "单位工程";
|
||
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(this.trWBS.SelectedNode.NodeID);
|
||
Model.WBSSetItem parentItem = new Model.WBSSetItem();
|
||
if (unitProject != null)
|
||
{
|
||
parentItem.Id = this.trWBS.SelectedNode.NodeID;
|
||
parentItem.Code = unitProject.UnitProjectCode;
|
||
parentItem.Name = unitProject.UnitProjectName;
|
||
parentItem.Type = "unitProject";
|
||
parentItem.StartDate = unitProject.StartDate;
|
||
parentItem.EndDate = unitProject.EndDate;
|
||
parentItem.Weights = unitProject.Weights;
|
||
parentItem.WeightsMoney = unitProject.WeightsMoney;
|
||
parentItem.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(parentItem.WeightsMoney), 2).ToString();
|
||
items.Add(parentItem);
|
||
}
|
||
var childUnitProjects = from x in Funs.DB.Wbs_UnitProject where x.SuperUnitProjectId == this.trWBS.SelectedNode.NodeID && x.IsApprove == true orderby x.SortIndex, x.UnitProjectCode select x;
|
||
if (childUnitProjects.Count() > 0) //存在子单位工程
|
||
{
|
||
this.Grid1.Columns[1].HeaderText = "子单位工程";
|
||
foreach (var childUnitProject in childUnitProjects)
|
||
{
|
||
Model.WBSSetItem item = new Model.WBSSetItem();
|
||
item.Id = childUnitProject.UnitProjectId;
|
||
item.ChildCode = childUnitProject.UnitProjectCode;
|
||
item.ChildName = childUnitProject.UnitProjectName;
|
||
item.Type = "childUnitProject";
|
||
item.StartDate = childUnitProject.StartDate;
|
||
item.EndDate = childUnitProject.EndDate;
|
||
item.Weights = childUnitProject.Weights;
|
||
item.WeightsMoney = childUnitProject.WeightsMoney;
|
||
item.WeightsMoneys = parentItem.WeightsMoney;
|
||
if (item.WeightsMoney != null)
|
||
{
|
||
item.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(item.WeightsMoney), 2).ToString();
|
||
}
|
||
items.Add(item);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
this.Grid1.Columns[1].HeaderText = "分部工程";
|
||
var wbsSet1s = from x in Funs.DB.Wbs_WbsSet where x.Flag == 1 && x.UnitProjectId == this.trWBS.SelectedNode.NodeID && x.IsApprove == true orderby x.SortIndex, x.WbsSetCode select x;
|
||
if (wbsSet1s.Count() > 0)
|
||
{
|
||
foreach (var wbsSet1 in wbsSet1s)
|
||
{
|
||
Model.WBSSetItem item = new Model.WBSSetItem();
|
||
item.Id = wbsSet1.WbsSetId;
|
||
item.ChildCode = wbsSet1.WbsSetCode;
|
||
item.ChildName = wbsSet1.WbsSetName;
|
||
item.Type = "wbsSet";
|
||
item.StartDate = wbsSet1.StartDate;
|
||
item.EndDate = wbsSet1.EndDate;
|
||
item.Weights = wbsSet1.Weights;
|
||
item.WeightsMoney = wbsSet1.WeightsMoney;
|
||
item.WeightsMoneys = parentItem.WeightsMoney;
|
||
if (item.WeightsMoney != null)
|
||
{
|
||
item.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(item.WeightsMoney), 2).ToString();
|
||
}
|
||
items.Add(item);
|
||
}
|
||
}
|
||
else //单位工程下直接是分项内容,如质量行为
|
||
{
|
||
var wbsSet3s = from x in Funs.DB.Wbs_WbsSet where x.Flag == 3 && x.UnitProjectId == this.trWBS.SelectedNode.NodeID && x.IsApprove == true orderby x.SortIndex, x.WbsSetCode select x;
|
||
if (wbsSet3s.Count() > 0)
|
||
{
|
||
foreach (var wbsSet3 in wbsSet3s)
|
||
{
|
||
Model.WBSSetItem item = new Model.WBSSetItem();
|
||
item.Id = wbsSet3.WbsSetId;
|
||
item.ChildCode = wbsSet3.WbsSetCode;
|
||
item.ChildName = wbsSet3.WbsSetName;
|
||
item.Type = "wbsSet";
|
||
item.StartDate = wbsSet3.StartDate;
|
||
item.EndDate = wbsSet3.EndDate;
|
||
item.Weights = wbsSet3.Weights;
|
||
item.WeightsMoney = wbsSet3.WeightsMoney;
|
||
item.WeightsMoneys = parentItem.WeightsMoney;
|
||
if (item.WeightsMoney != null)
|
||
{
|
||
item.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(item.WeightsMoney), 2).ToString();
|
||
}
|
||
items.Add(item);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else if (this.trWBS.SelectedNode.CommandName == "childUnitProject")
|
||
{
|
||
this.Grid1.Columns[0].HeaderText = "子单位工程";
|
||
this.Grid1.Columns[1].HeaderText = "分部工程";
|
||
Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(this.trWBS.SelectedNode.NodeID);
|
||
Model.WBSSetItem parentItem = new Model.WBSSetItem();
|
||
if (unitProject != null)
|
||
{
|
||
parentItem.Id = this.trWBS.SelectedNode.NodeID;
|
||
parentItem.Code = unitProject.UnitProjectCode;
|
||
parentItem.Name = unitProject.UnitProjectName;
|
||
parentItem.Type = "unitProject";
|
||
parentItem.StartDate = unitProject.StartDate;
|
||
parentItem.EndDate = unitProject.EndDate;
|
||
parentItem.Weights = unitProject.Weights;
|
||
parentItem.WeightsMoney = unitProject.WeightsMoney;
|
||
parentItem.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(parentItem.WeightsMoney), 2).ToString();
|
||
items.Add(parentItem);
|
||
}
|
||
var wbsSet1s = from x in Funs.DB.Wbs_WbsSet where x.Flag == 1 && x.UnitProjectId == this.trWBS.SelectedNode.NodeID && x.IsApprove == true orderby x.SortIndex, x.WbsSetCode select x;
|
||
foreach (var wbsSet1 in wbsSet1s)
|
||
{
|
||
Model.WBSSetItem item = new Model.WBSSetItem();
|
||
item.Id = wbsSet1.WbsSetId;
|
||
item.ChildCode = wbsSet1.WbsSetCode;
|
||
item.ChildName = wbsSet1.WbsSetName;
|
||
item.Type = "wbsSet";
|
||
item.StartDate = wbsSet1.StartDate;
|
||
item.EndDate = wbsSet1.EndDate;
|
||
item.Weights = wbsSet1.Weights;
|
||
item.WeightsMoney = wbsSet1.WeightsMoney;
|
||
item.WeightsMoneys = parentItem.WeightsMoney;
|
||
if (item.WeightsMoney != null)
|
||
{
|
||
item.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(item.WeightsMoney), 2).ToString();
|
||
}
|
||
items.Add(item);
|
||
}
|
||
}
|
||
else if (this.trWBS.SelectedNode.CommandName == "wbsSet")
|
||
{
|
||
Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(this.trWBS.SelectedNode.NodeID);
|
||
string column0 = string.Empty;
|
||
if (wbsSet.Flag == 1)
|
||
{
|
||
column0 = "分部工程";
|
||
}
|
||
else if (wbsSet.Flag == 2)
|
||
{
|
||
column0 = "子分部工程";
|
||
}
|
||
else if (wbsSet.Flag == 3)
|
||
{
|
||
column0 = "分项工程";
|
||
}
|
||
else if (wbsSet.Flag == 4)
|
||
{
|
||
column0 = "子分项工程";
|
||
}
|
||
this.Grid1.Columns[0].HeaderText = column0;
|
||
Model.WBSSetItem parentItem = new Model.WBSSetItem();
|
||
if (wbsSet != null)
|
||
{
|
||
parentItem.Id = this.trWBS.SelectedNode.NodeID;
|
||
parentItem.Code = wbsSet.WbsSetCode;
|
||
parentItem.Name = wbsSet.WbsSetName;
|
||
parentItem.Type = "wbsSet";
|
||
parentItem.StartDate = wbsSet.StartDate;
|
||
parentItem.EndDate = wbsSet.EndDate;
|
||
parentItem.Weights = wbsSet.Weights;
|
||
parentItem.WeightsMoney = wbsSet.WeightsMoney;
|
||
if (parentItem.Weights != null && parentItem.WeightsMoney == null)
|
||
{
|
||
parentItem.WeightsMoney = wbsSet.WeightsMoney * parentItem.Weights / 100;
|
||
}
|
||
parentItem.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(parentItem.WeightsMoney), 2).ToString();
|
||
items.Add(parentItem);
|
||
}
|
||
var childWbsSets = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(this.trWBS.SelectedNode.NodeID);
|
||
string column1 = string.Empty;
|
||
if (childWbsSets.Count() > 0)
|
||
{
|
||
if (childWbsSets[0].Flag == 2)
|
||
{
|
||
column1 = "子分部工程";
|
||
}
|
||
else if (childWbsSets[0].Flag == 3)
|
||
{
|
||
column1 = "分项工程";
|
||
}
|
||
else if (childWbsSets[0].Flag == 4)
|
||
{
|
||
column1 = "子分项工程";
|
||
}
|
||
this.Grid1.Columns[1].HeaderText = column1;
|
||
}
|
||
else
|
||
{
|
||
this.Grid1.Columns[1].HeaderText = string.Empty;
|
||
}
|
||
foreach (var childWbsSet in childWbsSets)
|
||
{
|
||
Model.WBSSetItem item = new Model.WBSSetItem();
|
||
item.Id = childWbsSet.WbsSetId;
|
||
item.ChildCode = childWbsSet.WbsSetCode;
|
||
item.ChildName = childWbsSet.WbsSetName;
|
||
item.Type = "wbsSet";
|
||
item.StartDate = childWbsSet.StartDate;
|
||
item.EndDate = childWbsSet.EndDate;
|
||
item.Weights = childWbsSet.Weights;
|
||
item.WeightsMoney = childWbsSet.WeightsMoney;
|
||
item.WeightsMoneys = parentItem.WeightsMoney;
|
||
if (item.WeightsMoney != null)
|
||
{
|
||
item.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(item.WeightsMoney), 2).ToString();
|
||
}
|
||
items.Add(item);
|
||
}
|
||
}
|
||
this.Grid1.DataSource = items;
|
||
this.Grid1.DataBind();
|
||
if (this.Grid1.Rows.Count > 0)
|
||
{
|
||
Grid1.Rows[0].CellCssClasses[7] = "f-grid-cell-uneditable";
|
||
Grid1.Rows[0].CellCssClasses[8] = "f-grid-cell-uneditable";
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 判断按钮权限
|
||
/// <summary>
|
||
/// 判断按钮权限
|
||
/// </summary>
|
||
private void GetButtonPower()
|
||
{
|
||
if (Request.Params["value"] == "0")
|
||
{
|
||
return;
|
||
}
|
||
var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.WeightsAuditMenuId);
|
||
if (buttonList.Count() > 0)
|
||
{
|
||
if (buttonList.Contains(BLL.Const.BtnSave))
|
||
{
|
||
this.btnSave.Hidden = false;
|
||
this.btnSave2.Hidden = false;
|
||
}
|
||
if (buttonList.Contains(BLL.Const.BtnCancelAuditing))
|
||
{
|
||
this.btnClearAudit.Hidden = false;
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 计算装置权重
|
||
/// <summary>
|
||
/// 计算装置权重
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
protected void btnUpdateInstallationWeights_Click(object sender, EventArgs e)
|
||
{
|
||
if (this.trWBS.SelectedNode != null)
|
||
{
|
||
if (this.trWBS.SelectedNode.CommandName == "installation")
|
||
{
|
||
string installationId = this.trWBS.SelectedNodeID;
|
||
Model.Project_Installation installation = BLL.Project_InstallationService.GetInstallationByInstallationId(installationId);
|
||
if (installation.SuperInstallationId == "0")
|
||
{
|
||
var installations = (from x in Funs.DB.Project_Installation where x.ProjectId == this.CurrUser.LoginProjectId && x.SuperInstallationId == "0" select x).ToList();
|
||
decimal installationTotalMoney = installations.Sum(x => x.WeightsMoney ?? 0);
|
||
decimal totalInstallationWeights = 0;
|
||
for (int i = 0; i < installations.Count(); i++)
|
||
{
|
||
if (installations[i].WeightsMoney != null && installationTotalMoney > 0)
|
||
{
|
||
if (i != installations.Count() - 1)
|
||
{
|
||
decimal installationWeights = decimal.Round(Convert.ToDecimal(installations[i].WeightsMoney) / installationTotalMoney * 100, 2);
|
||
installations[i].Weights = installationWeights;
|
||
totalInstallationWeights += installationWeights;
|
||
BLL.Project_InstallationService.UpdateInstallation(installations[i]);
|
||
}
|
||
else //最后一项的权重为100减去前面项的权重
|
||
{
|
||
installations[i].Weights = 100 - totalInstallationWeights;
|
||
BLL.Project_InstallationService.UpdateInstallation(installations[i]);
|
||
}
|
||
}
|
||
}
|
||
//工序
|
||
var installation1s = (from x in Funs.DB.Project_Installation where x.ProjectId == this.CurrUser.LoginProjectId && x.SuperInstallationId == installationId select x).ToList();
|
||
if (installation1s.Count > 0) //非总图装置
|
||
{
|
||
decimal installation1TotalMoney = installation.WeightsMoney ?? 0;
|
||
decimal totalInstallation1Weights = 0;
|
||
for (int i = 0; i < installation1s.Count(); i++)
|
||
{
|
||
if (installation1s[i].WeightsMoney != null && installation1TotalMoney > 0)
|
||
{
|
||
if (i != installation1s.Count() - 1)
|
||
{
|
||
decimal installation1Weights = decimal.Round(Convert.ToDecimal(installation1s[i].WeightsMoney) / installation1TotalMoney * 100, 2);
|
||
installation1s[i].Weights = installation1Weights;
|
||
totalInstallation1Weights += installation1Weights;
|
||
BLL.Project_InstallationService.UpdateInstallation(installation1s[i]);
|
||
}
|
||
else //最后一项的权重为100减去前面项的权重
|
||
{
|
||
installation1s[i].Weights = 100 - totalInstallation1Weights;
|
||
BLL.Project_InstallationService.UpdateInstallation(installation1s[i]);
|
||
}
|
||
//主项
|
||
var installation2s = (from x in Funs.DB.Project_Installation where x.ProjectId == this.CurrUser.LoginProjectId && x.SuperInstallationId == installation1s[i].InstallationId select x).ToList();
|
||
decimal installation2TotalMoney = installation1s[i].WeightsMoney ?? 0;
|
||
decimal totalInstallation2Weights = 0;
|
||
for (int j = 0; j < installation2s.Count(); j++)
|
||
{
|
||
if (installation2s[j].WeightsMoney != null && installation2TotalMoney > 0)
|
||
{
|
||
if (j != installation2s.Count() - 1)
|
||
{
|
||
decimal weights = decimal.Round(Convert.ToDecimal(installation2s[j].WeightsMoney) / installation2TotalMoney * 100, 2);
|
||
installation2s[j].Weights = weights;
|
||
totalInstallation2Weights += weights;
|
||
BLL.Project_InstallationService.UpdateInstallation(installation2s[j]);
|
||
}
|
||
else //最后一项的权重为100减去前面项的权重
|
||
{
|
||
installation2s[j].Weights = 100 - totalInstallation2Weights;
|
||
BLL.Project_InstallationService.UpdateInstallation(installation2s[j]);
|
||
}
|
||
//专业
|
||
var cnProfessions = (from x in Funs.DB.WBS_CnProfession where x.ProjectId == this.CurrUser.LoginProjectId && x.InstallationId == installation2s[j].InstallationId select x).ToList();
|
||
decimal cnProfessionTotalMoney = installation2s[j].WeightsMoney ?? 0;
|
||
decimal totalCnProfessionWeights = 0;
|
||
for (int a = 0; a < cnProfessions.Count(); a++)
|
||
{
|
||
if (cnProfessions[a].WeightsMoney != null && cnProfessionTotalMoney > 0)
|
||
{
|
||
if (a != cnProfessions.Count() - 1)
|
||
{
|
||
decimal weights = decimal.Round(Convert.ToDecimal(cnProfessions[a].WeightsMoney) / cnProfessionTotalMoney * 100, 2);
|
||
cnProfessions[a].Weights = weights;
|
||
totalCnProfessionWeights += weights;
|
||
BLL.CnProfessionService.UpdateCnProfession(cnProfessions[a]);
|
||
}
|
||
else //最后一项的权重为100减去前面项的权重
|
||
{
|
||
cnProfessions[a].Weights = 100 - totalCnProfessionWeights;
|
||
BLL.CnProfessionService.UpdateCnProfession(cnProfessions[a]);
|
||
}
|
||
//单位工程
|
||
var unitProjects = (from x in Funs.DB.Wbs_UnitProject where x.ProjectId == this.CurrUser.LoginProjectId && x.SuperUnitProjectId == null && x.CnProfessionId == cnProfessions[a].CnProfessionId select x).ToList();
|
||
decimal unitProjectTotalMoney = cnProfessions[a].WeightsMoney ?? 0;
|
||
decimal totalUnitProjectWeights = 0;
|
||
for (int b = 0; b < unitProjects.Count(); b++)
|
||
{
|
||
if (unitProjects[b].WeightsMoney != null && unitProjectTotalMoney > 0)
|
||
{
|
||
if (b != unitProjects.Count() - 1)
|
||
{
|
||
decimal weights = decimal.Round(Convert.ToDecimal(unitProjects[b].WeightsMoney) / unitProjectTotalMoney * 100, 2);
|
||
unitProjects[b].Weights = weights;
|
||
totalUnitProjectWeights += weights;
|
||
BLL.UnitProjectService.UpdateUnitProject(unitProjects[b]);
|
||
}
|
||
else //最后一项的权重为100减去前面项的权重
|
||
{
|
||
unitProjects[b].Weights = 100 - totalUnitProjectWeights;
|
||
BLL.UnitProjectService.UpdateUnitProject(unitProjects[b]);
|
||
}
|
||
var childUnitProjects = (from x in Funs.DB.Wbs_UnitProject where x.SuperUnitProjectId == unitProjects[b].UnitProjectId select x).ToList();
|
||
if (childUnitProjects.Count > 0) //存在子单位工程
|
||
{
|
||
decimal childUnitProjectTotalMoney = unitProjects[b].WeightsMoney ?? 0;
|
||
decimal totalChildUnitProjectWeights = 0;
|
||
for (int c = 0; c < childUnitProjects.Count(); c++)
|
||
{
|
||
if (childUnitProjects[c].WeightsMoney != null && childUnitProjectTotalMoney > 0)
|
||
{
|
||
if (c != childUnitProjects.Count() - 1)
|
||
{
|
||
decimal weights = decimal.Round(Convert.ToDecimal(childUnitProjects[c].WeightsMoney) / childUnitProjectTotalMoney * 100, 2);
|
||
childUnitProjects[c].Weights = weights;
|
||
totalChildUnitProjectWeights += weights;
|
||
BLL.UnitProjectService.UpdateUnitProject(childUnitProjects[c]);
|
||
}
|
||
else //最后一项的权重为100减去前面项的权重
|
||
{
|
||
childUnitProjects[c].Weights = 100 - totalChildUnitProjectWeights;
|
||
BLL.UnitProjectService.UpdateUnitProject(childUnitProjects[c]);
|
||
}
|
||
SetWbsSetWeights(childUnitProjects[c]);
|
||
}
|
||
}
|
||
}
|
||
else //不存在子单位工程
|
||
{
|
||
SetWbsSetWeights(unitProjects[b]);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else //总图
|
||
{
|
||
var unitProjects = (from x in Funs.DB.Wbs_UnitProject where x.InstallationId == installationId && x.SuperUnitProjectId == null orderby x.SortIndex, x.UnitProjectCode select x).ToList();
|
||
decimal unitProjectTotalMoney = installation.WeightsMoney ?? 0;
|
||
decimal totalUnitProjectWeights = 0;
|
||
for (int b = 0; b < unitProjects.Count(); b++)
|
||
{
|
||
if (unitProjects[b].WeightsMoney != null && unitProjectTotalMoney > 0)
|
||
{
|
||
if (b != unitProjects.Count() - 1)
|
||
{
|
||
decimal weights = decimal.Round(Convert.ToDecimal(unitProjects[b].WeightsMoney) / unitProjectTotalMoney * 100, 2);
|
||
unitProjects[b].Weights = weights;
|
||
totalUnitProjectWeights += weights;
|
||
BLL.UnitProjectService.UpdateUnitProject(unitProjects[b]);
|
||
}
|
||
else //最后一项的权重为100减去前面项的权重
|
||
{
|
||
unitProjects[b].Weights = 100 - totalUnitProjectWeights;
|
||
BLL.UnitProjectService.UpdateUnitProject(unitProjects[b]);
|
||
}
|
||
SetWbsSetWeights(unitProjects[b]);
|
||
}
|
||
}
|
||
}
|
||
Alert.ShowInTop("计算成功!", MessageBoxIcon.Success);
|
||
}
|
||
else
|
||
{
|
||
Alert.ShowInTop("请选择一个装置!", MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
Alert.ShowInTop("请选择一个装置!", MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
Alert.ShowInTop("请选择装置!", MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 计算分部分项权重
|
||
/// </summary>
|
||
/// <param name="unitProject"></param>
|
||
private void SetWbsSetWeights(Model.Wbs_UnitProject unitProject)
|
||
{
|
||
var wbsSet1s = (from x in Funs.DB.Wbs_WbsSet where x.Flag == 1 && x.UnitProjectId == unitProject.UnitProjectId && x.IsApprove == true && x.NoShow == null orderby x.SortIndex, x.WbsSetCode select x).ToList();
|
||
decimal wbsSet1TotalMoney = unitProject.WeightsMoney ?? 0;
|
||
decimal totalWbsSet1Weights = 0;
|
||
for (int a = 0; a < wbsSet1s.Count(); a++)
|
||
{
|
||
if (wbsSet1s[a].WeightsMoney != null && wbsSet1TotalMoney > 0)
|
||
{
|
||
if (a != wbsSet1s.Count() - 1)
|
||
{
|
||
decimal weights = decimal.Round(Convert.ToDecimal(wbsSet1s[a].WeightsMoney) / wbsSet1TotalMoney * 100, 2);
|
||
wbsSet1s[a].Weights = weights;
|
||
totalWbsSet1Weights += weights;
|
||
BLL.WbsSetService.UpdateWbsSet(wbsSet1s[a]);
|
||
}
|
||
else //最后一项的权重为100减去前面项的权重
|
||
{
|
||
wbsSet1s[a].Weights = 100 - totalWbsSet1Weights;
|
||
BLL.WbsSetService.UpdateWbsSet(wbsSet1s[a]);
|
||
}
|
||
var wbsSet2s = (from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == wbsSet1s[a].WbsSetId && x.IsApprove == true && x.NoShow == null orderby x.SortIndex, x.WbsSetCode select x).ToList();
|
||
decimal wbsSet2TotalMoney = wbsSet1s[a].WeightsMoney ?? 0;
|
||
decimal totalWbsSet2Weights = 0;
|
||
for (int b = 0; b < wbsSet2s.Count(); b++)
|
||
{
|
||
if (wbsSet2s[b].WeightsMoney != null && wbsSet2TotalMoney > 0)
|
||
{
|
||
if (b != wbsSet2s.Count() - 1)
|
||
{
|
||
decimal weights = decimal.Round(Convert.ToDecimal(wbsSet2s[b].WeightsMoney) / wbsSet2TotalMoney * 100, 2);
|
||
wbsSet2s[b].Weights = weights;
|
||
totalWbsSet2Weights += weights;
|
||
BLL.WbsSetService.UpdateWbsSet(wbsSet2s[b]);
|
||
}
|
||
else //最后一项的权重为100减去前面项的权重
|
||
{
|
||
wbsSet2s[b].Weights = 100 - totalWbsSet2Weights;
|
||
BLL.WbsSetService.UpdateWbsSet(wbsSet2s[b]);
|
||
}
|
||
var wbsSet3s = (from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == wbsSet2s[b].WbsSetId && x.IsApprove == true && x.NoShow == null orderby x.SortIndex, x.WbsSetCode select x).ToList();
|
||
decimal wbsSet3TotalMoney = wbsSet2s[b].WeightsMoney ?? 0;
|
||
decimal totalWbsSet3Weights = 0;
|
||
for (int c = 0; c < wbsSet3s.Count(); c++)
|
||
{
|
||
if (wbsSet3s[c].WeightsMoney != null && wbsSet3TotalMoney > 0)
|
||
{
|
||
if (c != wbsSet3s.Count() - 1)
|
||
{
|
||
decimal weights = decimal.Round(Convert.ToDecimal(wbsSet3s[c].WeightsMoney) / wbsSet3TotalMoney * 100, 2);
|
||
wbsSet3s[c].Weights = weights;
|
||
totalWbsSet3Weights += weights;
|
||
BLL.WbsSetService.UpdateWbsSet(wbsSet3s[c]);
|
||
}
|
||
else //最后一项的权重为100减去前面项的权重
|
||
{
|
||
wbsSet3s[c].Weights = 100 - totalWbsSet3Weights;
|
||
BLL.WbsSetService.UpdateWbsSet(wbsSet3s[c]);
|
||
}
|
||
var wbsSet4s = (from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == wbsSet3s[c].WbsSetId && x.IsApprove == true && x.NoShow == null orderby x.SortIndex, x.WbsSetCode select x).ToList();
|
||
decimal wbsSet4TotalMoney = wbsSet3s[c].WeightsMoney ?? 0;
|
||
decimal totalWbsSet4Weights = 0;
|
||
for (int d = 0; d < wbsSet4s.Count(); d++)
|
||
{
|
||
if (wbsSet4s[d].WeightsMoney != null && wbsSet4TotalMoney > 0)
|
||
{
|
||
if (d != wbsSet4s.Count() - 1)
|
||
{
|
||
decimal weights = decimal.Round(Convert.ToDecimal(wbsSet4s[d].WeightsMoney) / wbsSet4TotalMoney * 100, 2);
|
||
wbsSet4s[d].Weights = weights;
|
||
totalWbsSet4Weights += weights;
|
||
BLL.WbsSetService.UpdateWbsSet(wbsSet4s[d]);
|
||
}
|
||
else //最后一项的权重为100减去前面项的权重
|
||
{
|
||
wbsSet4s[d].Weights = 100 - totalWbsSet4Weights;
|
||
BLL.WbsSetService.UpdateWbsSet(wbsSet4s[d]);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
private void UpdateWbsSetWeights(Model.Wbs_WbsSet wbsSet)
|
||
{
|
||
decimal surplusWbsSetWeightsMoney = Funs.GetNewDecimalOrZero(wbsSet.WeightsMoney.ToString()); //剩余专业费
|
||
int wbsIndex = 0;
|
||
var childWbsSets = from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == wbsSet.WbsSetId && x.IsApprove == true && x.Weights != null && x.Weights > 0 orderby x.Weights, x.SortIndex, x.WbsSetCode select x;
|
||
if (childWbsSets.Count() > 0)
|
||
{
|
||
var noWeightChildWbsSets = from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == wbsSet.WbsSetId && x.IsApprove == true && (x.Weights == null || x.Weights == 0) orderby x.Weights, x.SortIndex, x.WbsSetCode select x;
|
||
foreach (var noWeightChildWbsSet in noWeightChildWbsSets)
|
||
{
|
||
noWeightChildWbsSet.WeightsMoney = 0;
|
||
BLL.WbsSetService.UpdateWbsSet(noWeightChildWbsSet);
|
||
}
|
||
foreach (var childWbsSet in childWbsSets)
|
||
{
|
||
if (wbsIndex < childWbsSets.Count() - 1)
|
||
{
|
||
childWbsSet.WeightsMoney = decimal.Round(Convert.ToDecimal(wbsSet.WeightsMoney * childWbsSet.Weights / 100), 2);
|
||
}
|
||
else
|
||
{
|
||
childWbsSet.WeightsMoney = surplusWbsSetWeightsMoney;
|
||
}
|
||
BLL.WbsSetService.UpdateWbsSet(childWbsSet);
|
||
surplusWbsSetWeightsMoney = surplusWbsSetWeightsMoney - Funs.GetNewDecimalOrZero(childWbsSet.WeightsMoney.ToString());
|
||
UpdateWbsSetWeights(childWbsSet);
|
||
wbsIndex++;
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
}
|
||
} |