CNCEC_SUBQHSE_WUHUAN/SGGL/FineUIPro.Web/JDGL/WBSWeights/WeightsAudit.aspx.cs

2328 lines
117 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using 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
}
}