2385 lines
		
	
	
		
			163 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			2385 lines
		
	
	
		
			163 KiB
		
	
	
	
		
			C#
		
	
	
	
| using BLL;
 | |
| using Newtonsoft.Json.Linq;
 | |
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Linq;
 | |
| 
 | |
| namespace FineUIPro.Web.JDGL.WBSCompleteAndReal
 | |
| {
 | |
|     public partial class WBSCompleteAudit : 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)
 | |
|             {
 | |
|                 this.txtMonths.Text = string.Format("{0:yyyy-MM-dd}", DateTime.Now);
 | |
|                 GetNoApproveIds();
 | |
|                 InitTreeMenu();
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 if (GetRequestEventArgument() == "UPDATE_SUMMARY")
 | |
|                 {
 | |
|                     // 页面要求重新计算合计行的值
 | |
|                     OutputSummaryData();
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private void GetNoApproveIds()
 | |
|         {
 | |
|             List<string> parentUnitWorkIds = new List<string>();
 | |
|             List<string> wbsSetIds = new List<string>();
 | |
|             noApproveInstallationIds.Clear();
 | |
|             noApproveCnProfessionIds.Clear();
 | |
|             noApproveUnitProjectIds.Clear();
 | |
|             noApproveWbsSetIds.Clear();            
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region 计算合计 不用了
 | |
|         /// <summary>
 | |
|         /// 计算合计
 | |
|         /// </summary>
 | |
|         private void OutputSummaryData()
 | |
|         {
 | |
|             if (this.Grid1.Rows.Count > 0)
 | |
|             {
 | |
|                 decimal totalCompleteValueSum = 0, totalRateSum = 0, totalRateSumAll = 0, totalRealValueSum = 0, totalCompleteValueSumAll = 0,
 | |
|                     weightsMoneySum = Funs.GetNewDecimalOrZero(this.Grid1.Rows[0].Values[29].ToString());
 | |
|                 for (int i = 0; i < this.Grid1.Rows.Count; i++)
 | |
|                 {
 | |
|                     if (i > 0)
 | |
|                     {
 | |
|                         decimal weightsMoney = Funs.GetNewDecimalOrZero(this.Grid1.Rows[i].Values[29].ToString());  //总计划费用
 | |
|                         decimal totalComplete = Funs.GetNewDecimalOrZero(this.Grid1.Rows[i].Values[30].ToString());  //累计完成值
 | |
|                         decimal lastMoney = weightsMoney - totalComplete;   //剩余未完成值
 | |
|                         if (Funs.GetNewDecimalOrZero(this.Grid1.Rows[i].Values[14].ToString()) > lastMoney && lastMoney > 0)
 | |
|                         {
 | |
|                             this.Grid1.Rows[i].Values[14] = lastMoney;
 | |
|                             this.Grid1.Rows[i].Values[15] = decimal.Round(lastMoney / weightsMoney * 100, 2);
 | |
|                         }
 | |
|                         totalCompleteValueSum += Funs.GetNewDecimalOrZero(this.Grid1.Rows[i].Values[14].ToString());
 | |
|                         if (string.IsNullOrEmpty(this.Grid1.Rows[i].Values[19].ToString()))
 | |
|                         {
 | |
|                             totalRealValueSum += Funs.GetNewDecimalOrZero(this.Grid1.Rows[i].Values[14].ToString());
 | |
|                         }
 | |
|                         else
 | |
|                         {
 | |
|                             totalRealValueSum += Funs.GetNewDecimalOrZero(this.Grid1.Rows[i].Values[19].ToString());
 | |
|                         }
 | |
|                     }
 | |
|                     string id = this.Grid1.Rows[i].Values[32].ToString();
 | |
|                     if (id.Length > 10)
 | |
|                     {
 | |
|                         decimal totalCompleteValue = 0, totalRate = 0, totalRealValue = 0;
 | |
|                         if (!string.IsNullOrEmpty(this.Grid1.Rows[i].Values[14].ToString()) && !string.IsNullOrEmpty(this.Grid1.Rows[i].Values[29].ToString()))
 | |
|                         {
 | |
|                             decimal completeValue = Funs.GetNewDecimalOrZero(this.Grid1.Rows[i].Values[14].ToString());
 | |
|                             decimal weightsMoney = Funs.GetNewDecimalOrZero(this.Grid1.Rows[i].Values[29].ToString());
 | |
|                             if (!string.IsNullOrEmpty(this.Grid1.Rows[i].Values[16].ToString()))
 | |
|                             {
 | |
|                                 totalCompleteValue = Funs.GetNewDecimalOrZero(this.Grid1.Rows[i].Values[30].ToString()) + completeValue;
 | |
|                                 totalRate = decimal.Round(totalCompleteValue / weightsMoney * 100, 2);
 | |
|                                 this.Grid1.Rows[i].Values[16] = totalCompleteValue;
 | |
|                                 this.Grid1.Rows[i].Values[17] = totalRate;
 | |
|                                 this.Grid1.Rows[i].Values[22] = totalCompleteValue - Funs.GetNewDecimalOrZero(this.Grid1.Rows[i].Values[11].ToString());
 | |
|                                 if (weightsMoney == totalCompleteValue)
 | |
|                                 {
 | |
|                                     this.Grid1.Rows[i].Values[17] = 100;
 | |
|                                 }
 | |
|                             }
 | |
|                             if (string.IsNullOrEmpty(this.Grid1.Rows[i].Values[19].ToString()))   //实耗值没有时,默认完成值为实耗值
 | |
|                             {
 | |
|                                 this.Grid1.Rows[i].Values[19] = completeValue;
 | |
|                                 totalRealValue = Funs.GetNewDecimalOrZero(this.Grid1.Rows[i].Values[31].ToString()) + completeValue;
 | |
|                                 this.Grid1.Rows[i].Values[20] = totalRealValue;
 | |
|                                 this.Grid1.Rows[i].Values[23] = totalCompleteValue - totalRealValue;
 | |
|                             }
 | |
|                         }
 | |
|                         if (!string.IsNullOrEmpty(this.Grid1.Rows[i].Values[19].ToString()))
 | |
|                         {
 | |
|                             decimal realValue = Funs.GetNewDecimalOrZero(this.Grid1.Rows[i].Values[19].ToString());
 | |
|                             this.Grid1.Rows[i].Values[19] = realValue;
 | |
|                             totalRealValue = Funs.GetNewDecimalOrZero(this.Grid1.Rows[i].Values[31].ToString()) + realValue;
 | |
|                             if (!string.IsNullOrEmpty(this.Grid1.Rows[i].Values[16].ToString()))
 | |
|                             {
 | |
|                                 totalCompleteValue = Funs.GetNewDecimalOrZero(this.Grid1.Rows[i].Values[16].ToString());
 | |
|                             }
 | |
|                             this.Grid1.Rows[i].Values[20] = totalRealValue;
 | |
|                             this.Grid1.Rows[i].Values[23] = totalCompleteValue - totalRealValue;
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|                 totalRateSum = decimal.Round(totalCompleteValueSum / weightsMoneySum * 100, 2);
 | |
|                 this.Grid1.Rows[0].Values[14] = totalCompleteValueSum;
 | |
|                 this.Grid1.Rows[0].Values[15] = totalRateSum;
 | |
|                 totalCompleteValueSumAll = Funs.GetNewDecimalOrZero(this.Grid1.Rows[0].Values[30].ToString()) + totalCompleteValueSum;
 | |
|                 totalRateSumAll = decimal.Round(totalCompleteValueSumAll / weightsMoneySum * 100, 2);
 | |
|                 this.Grid1.Rows[0].Values[16] = totalCompleteValueSumAll;
 | |
|                 this.Grid1.Rows[0].Values[17] = totalRateSumAll;
 | |
|                 this.Grid1.Rows[0].Values[19] = totalRealValueSum;
 | |
|                 this.Grid1.Rows[0].Values[20] = Funs.GetNewDecimalOrZero(this.Grid1.Rows[0].Values[31].ToString()) + totalRealValueSum;
 | |
|                 this.Grid1.Rows[0].Values[22] = totalCompleteValueSumAll - Funs.GetNewDecimalOrZero(this.Grid1.Rows[0].Values[11].ToString());
 | |
|                 this.Grid1.Rows[0].Values[23] = totalCompleteValueSumAll - (Funs.GetNewDecimalOrZero(this.Grid1.Rows[0].Values[31].ToString()) + totalRealValueSum);
 | |
|             }
 | |
|         }
 | |
|         #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)
 | |
|         {           
 | |
|             BindGrid();
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region  保存方法
 | |
|         /// <summary>
 | |
|         /// 保存方法
 | |
|         /// </summary>
 | |
|         /// <param name="sender"></param>
 | |
|         /// <param name="e"></param>
 | |
|         private void SaveData(string message)
 | |
|         {
 | |
|             if (this.Grid1.Rows.Count == 0)
 | |
|             {
 | |
|                 Alert.ShowInTop("请先选择一条记录!", MessageBoxIcon.Warning);
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             JArray mergedData = Grid1.GetMergedData();
 | |
|             int i = 0;
 | |
|             foreach (JObject mergedRow in mergedData)
 | |
|             {
 | |
|                 if (i > 0)
 | |
|                 {
 | |
|                     JObject values = mergedRow.Value<JObject>("values");
 | |
|                     string type = this.trWBS.SelectedNode.CommandName;
 | |
|                     if (type == "wbsSet")
 | |
|                     {
 | |
|                         var oldDetail = BLL.WbsDetailService.GetWbsDetailByWbsDetailId(this.Grid1.Rows[i].Values[27].ToString());
 | |
|                         decimal oldEngineeringQuantity = oldDetail.EngineeringQuantity ?? 0;
 | |
|                         decimal oldCompleteValue = oldDetail.CompleteValue ?? 0;
 | |
|                         decimal oldRealValue = oldDetail.RealValue ?? 0;
 | |
| 
 | |
|                         Model.WbsDetail detail = BLL.WbsDetailService.GetWbsDetailByWbsDetailId(this.Grid1.Rows[i].Values[27].ToString());
 | |
|                         Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(detail.ToWbs);
 | |
|                         if (message == "submit")
 | |
|                         {
 | |
|                             if (detail.IsCompleteApprove == null)
 | |
|                             {
 | |
|                                 detail.IsCompleteApprove = true;
 | |
|                             }
 | |
|                         }
 | |
|                         if (!string.IsNullOrEmpty(values.Value<string>("EngineerQuantity")))
 | |
|                         {
 | |
|                             detail.EngineeringQuantity = Convert.ToDecimal(values.Value<string>("EngineerQuantity"));
 | |
|                         }
 | |
|                         else
 | |
|                         {
 | |
|                             detail.EngineeringQuantity = 0;
 | |
|                         }
 | |
|                         if (!string.IsNullOrEmpty(values.Value<string>("CompleteValue")))
 | |
|                         {
 | |
|                             detail.CompleteValue = Convert.ToDecimal(values.Value<string>("CompleteValue"));
 | |
|                             detail.CompleteValueRate = decimal.Round(Convert.ToDecimal(detail.CompleteValue) / Convert.ToDecimal(wbsSet.WeightsMoney) * 100, 2);
 | |
|                         }
 | |
|                         else
 | |
|                         {
 | |
|                             detail.CompleteValue = 0;
 | |
|                             detail.CompleteValueRate = 0;
 | |
|                         }
 | |
|                         if (!string.IsNullOrEmpty(values.Value<string>("RealValue")))
 | |
|                         {
 | |
|                             detail.RealValue = Convert.ToDecimal(values.Value<string>("RealValue"));
 | |
|                             detail.RealValueRate = decimal.Round(Convert.ToDecimal(detail.RealValue) / Convert.ToDecimal(wbsSet.WeightsMoney) * 100, 2);
 | |
|                         }
 | |
|                         else
 | |
|                         {
 | |
|                             detail.RealValue = 0;
 | |
|                             detail.RealValueRate = 0;
 | |
|                         }
 | |
|                         BLL.WbsDetailService.UpdateWbsDetail(detail);
 | |
|                         //循环保存所有上级分部分项对应记录
 | |
|                         UpdateWbsParentDetail(Convert.ToDateTime(detail.Months), detail.CompleteValue, oldCompleteValue, detail.RealValue, oldRealValue, wbsSet.SuperWbsSetId, detail.EngineeringQuantity, oldEngineeringQuantity);
 | |
|                         Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(wbsSet.UnitProjectId);
 | |
|                         Model.WbsDetail detailUnitProject = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(wbsSet.UnitProjectId, 3, Convert.ToDateTime(detail.Months));
 | |
|                         if (unitProject != null)
 | |
|                         {
 | |
|                             if (detailUnitProject != null)
 | |
|                             {
 | |
|                                 if (detailUnitProject.CompleteValue != null)
 | |
|                                 {
 | |
|                                     detailUnitProject.CompleteValue += ((detail.CompleteValue ?? 0) - oldCompleteValue);
 | |
|                                 }
 | |
|                                 else
 | |
|                                 {
 | |
|                                     detailUnitProject.CompleteValue = detail.CompleteValue ?? 0;
 | |
|                                 }
 | |
|                                 detailUnitProject.CompleteValueRate = decimal.Round(Convert.ToDecimal(detailUnitProject.CompleteValue) / Convert.ToDecimal(unitProject.WeightsMoney) * 100, 2);
 | |
|                                 if (detailUnitProject.RealValue != null)
 | |
|                                 {
 | |
|                                     detailUnitProject.RealValue += ((detail.RealValue ?? 0) - oldRealValue);
 | |
|                                 }
 | |
|                                 else
 | |
|                                 {
 | |
|                                     detailUnitProject.RealValue = detail.RealValue ?? 0;
 | |
|                                 }
 | |
|                                 detailUnitProject.IsCompleteApprove = true;
 | |
|                                 detailUnitProject.RealValueRate = decimal.Round(Convert.ToDecimal(detailUnitProject.RealValue) / Convert.ToDecimal(unitProject.WeightsMoney) * 100, 2);
 | |
|                                 BLL.WbsDetailService.UpdateWbsDetail(detailUnitProject);
 | |
|                             }
 | |
|                             if (unitProject.SuperUnitProjectId != null)   //存在单位工程
 | |
|                             {
 | |
|                                 Model.Wbs_UnitProject parentUnitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(unitProject.SuperUnitProjectId);
 | |
|                                 Model.WbsDetail detailParentUnitProject = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(parentUnitProject.UnitProjectId, 3, Convert.ToDateTime(detail.Months));
 | |
|                                 if (detailParentUnitProject != null)
 | |
|                                 {
 | |
|                                     if (detailParentUnitProject.CompleteValue != null)
 | |
|                                     {
 | |
|                                         detailParentUnitProject.CompleteValue += ((detail.CompleteValue ?? 0) - oldCompleteValue);
 | |
|                                     }
 | |
|                                     else
 | |
|                                     {
 | |
|                                         detailParentUnitProject.CompleteValue = detail.CompleteValue ?? 0;
 | |
|                                     }
 | |
|                                     detailParentUnitProject.CompleteValueRate = decimal.Round(Convert.ToDecimal(detailParentUnitProject.CompleteValue) / Convert.ToDecimal(parentUnitProject.WeightsMoney) * 100, 2);
 | |
|                                     if (detailParentUnitProject.RealValue != null)
 | |
|                                     {
 | |
|                                         detailParentUnitProject.RealValue += ((detail.RealValue ?? 0) - oldRealValue);
 | |
|                                     }
 | |
|                                     else
 | |
|                                     {
 | |
|                                         detailParentUnitProject.RealValue = detail.RealValue ?? 0;
 | |
|                                     }
 | |
|                                     detailParentUnitProject.IsCompleteApprove = true;
 | |
|                                     detailParentUnitProject.RealValueRate = decimal.Round(Convert.ToDecimal(detailParentUnitProject.RealValue) / Convert.ToDecimal(parentUnitProject.WeightsMoney) * 100, 2);
 | |
|                                     BLL.WbsDetailService.UpdateWbsDetail(detailParentUnitProject);
 | |
|                                 }
 | |
|                             }
 | |
|                         }
 | |
|                         //保存对应专业
 | |
|                         Model.WBS_CnProfession cnProfession = BLL.CnProfessionService.GetCnProfessionByCnProfessionId(wbsSet.CnProfessionId);
 | |
|                         if (cnProfession != null)
 | |
|                         {
 | |
|                             Model.WbsDetail detailCnProfession = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(cnProfession.CnProfessionId, 2, Convert.ToDateTime(detail.Months));
 | |
|                             if (detailCnProfession != null)
 | |
|                             {
 | |
|                                 if (detailCnProfession.CompleteValue != null)
 | |
|                                 {
 | |
|                                     detailCnProfession.CompleteValue += ((detail.CompleteValue ?? 0) - oldCompleteValue);
 | |
|                                 }
 | |
|                                 else
 | |
|                                 {
 | |
|                                     detailCnProfession.CompleteValue = detail.CompleteValue ?? 0;
 | |
|                                 }
 | |
|                                 detailCnProfession.CompleteValueRate = decimal.Round(Convert.ToDecimal(detailCnProfession.CompleteValue) / Convert.ToDecimal(cnProfession.WeightsMoney) * 100, 2);
 | |
|                                 if (detailCnProfession.RealValue != null)
 | |
|                                 {
 | |
|                                     detailCnProfession.RealValue += ((detail.RealValue ?? 0) - oldRealValue);
 | |
|                                 }
 | |
|                                 else
 | |
|                                 {
 | |
|                                     detailCnProfession.RealValue = detail.RealValue ?? 0;
 | |
|                                 }
 | |
|                                 detailCnProfession.IsCompleteApprove = true;
 | |
|                                 detailCnProfession.RealValueRate = decimal.Round(Convert.ToDecimal(detailCnProfession.RealValue) / Convert.ToDecimal(cnProfession.WeightsMoney) * 100, 2);
 | |
|                                 BLL.WbsDetailService.UpdateWbsDetail(detailCnProfession);
 | |
|                             }
 | |
|                             //保存对应装置
 | |
|                             Model.Project_Installation installation = BLL.Project_InstallationService.GetInstallationByInstallationId(cnProfession.InstallationId);
 | |
|                             if (installation != null)
 | |
|                             {
 | |
|                                 Model.WbsDetail detailInstallation = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(installation.InstallationId, 1, Convert.ToDateTime(detail.Months));
 | |
|                                 if (detailInstallation != null)
 | |
|                                 {
 | |
|                                     if (detailInstallation.CompleteValue != null)
 | |
|                                     {
 | |
|                                         detailInstallation.CompleteValue += ((detail.CompleteValue ?? 0) - oldCompleteValue);
 | |
|                                     }
 | |
|                                     else
 | |
|                                     {
 | |
|                                         detailInstallation.CompleteValue = detail.CompleteValue ?? 0;
 | |
|                                     }
 | |
|                                     detailInstallation.CompleteValueRate = decimal.Round(Convert.ToDecimal(detailInstallation.CompleteValue) / Convert.ToDecimal(installation.WeightsMoney) * 100, 2);
 | |
|                                     if (detailInstallation.RealValue != null)
 | |
|                                     {
 | |
|                                         detailInstallation.RealValue += ((detail.RealValue ?? 0) - oldRealValue);
 | |
|                                     }
 | |
|                                     else
 | |
|                                     {
 | |
|                                         detailInstallation.RealValue = detail.RealValue ?? 0;
 | |
|                                     }
 | |
|                                     detailInstallation.IsCompleteApprove = true;
 | |
|                                     detailInstallation.RealValueRate = decimal.Round(Convert.ToDecimal(detailInstallation.RealValue) / Convert.ToDecimal(installation.WeightsMoney) * 100, 2);
 | |
|                                     BLL.WbsDetailService.UpdateWbsDetail(detailInstallation);
 | |
|                                     if (installation.SuperInstallationId != "0")  //一般装置
 | |
|                                     {
 | |
|                                         //主项
 | |
|                                         Model.Project_Installation pInstallation = BLL.Project_InstallationService.GetInstallationByInstallationId(installation.SuperInstallationId);
 | |
|                                         Model.WbsDetail pDetailInstallation = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(installation.SuperInstallationId, 1, Convert.ToDateTime(detail.Months));
 | |
|                                         if (pDetailInstallation.CompleteValue != null)
 | |
|                                         {
 | |
|                                             pDetailInstallation.CompleteValue += ((detail.CompleteValue ?? 0) - oldCompleteValue);
 | |
|                                         }
 | |
|                                         else
 | |
|                                         {
 | |
|                                             pDetailInstallation.CompleteValue = detail.CompleteValue ?? 0;
 | |
|                                         }
 | |
|                                         pDetailInstallation.CompleteValueRate = decimal.Round(Convert.ToDecimal(pDetailInstallation.CompleteValue) / Convert.ToDecimal(installation.WeightsMoney) * 100, 2);
 | |
|                                         if (pDetailInstallation.RealValue != null)
 | |
|                                         {
 | |
|                                             pDetailInstallation.RealValue += ((detail.RealValue ?? 0) - oldRealValue);
 | |
|                                         }
 | |
|                                         else
 | |
|                                         {
 | |
|                                             pDetailInstallation.RealValue = detail.RealValue ?? 0;
 | |
|                                         }
 | |
|                                         pDetailInstallation.IsCompleteApprove = true;
 | |
|                                         pDetailInstallation.RealValueRate = decimal.Round(Convert.ToDecimal(pDetailInstallation.RealValue) / Convert.ToDecimal(installation.WeightsMoney) * 100, 2);
 | |
|                                         BLL.WbsDetailService.UpdateWbsDetail(pDetailInstallation);
 | |
|                                         //装置
 | |
|                                         Model.WbsDetail ppDetailInstallation = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(pInstallation.SuperInstallationId, 1, Convert.ToDateTime(detail.Months));
 | |
|                                         if (ppDetailInstallation.CompleteValue != null)
 | |
|                                         {
 | |
|                                             ppDetailInstallation.CompleteValue += ((detail.CompleteValue ?? 0) - oldCompleteValue);
 | |
|                                         }
 | |
|                                         else
 | |
|                                         {
 | |
|                                             ppDetailInstallation.CompleteValue = detail.CompleteValue ?? 0;
 | |
|                                         }
 | |
|                                         ppDetailInstallation.CompleteValueRate = decimal.Round(Convert.ToDecimal(ppDetailInstallation.CompleteValue) / Convert.ToDecimal(installation.WeightsMoney) * 100, 2);
 | |
|                                         if (ppDetailInstallation.RealValue != null)
 | |
|                                         {
 | |
|                                             ppDetailInstallation.RealValue += ((detail.RealValue ?? 0) - oldRealValue);
 | |
|                                         }
 | |
|                                         else
 | |
|                                         {
 | |
|                                             ppDetailInstallation.RealValue = detail.RealValue ?? 0;
 | |
|                                         }
 | |
|                                         ppDetailInstallation.IsCompleteApprove = true;
 | |
|                                         ppDetailInstallation.RealValueRate = decimal.Round(Convert.ToDecimal(ppDetailInstallation.RealValue) / Convert.ToDecimal(installation.WeightsMoney) * 100, 2);
 | |
|                                         BLL.WbsDetailService.UpdateWbsDetail(ppDetailInstallation);
 | |
|                                     }
 | |
| 
 | |
|                                 }
 | |
|                             }
 | |
|                         }
 | |
|                         else   //总图
 | |
|                         {
 | |
|                             Model.Project_Installation installation = BLL.Project_InstallationService.GetInstallationByInstallationId(wbsSet.InstallationId);
 | |
|                             if (installation != null)
 | |
|                             {
 | |
|                                 Model.WbsDetail detailInstallation = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(installation.InstallationId, 1, Convert.ToDateTime(detail.Months));
 | |
|                                 if (detailInstallation != null)
 | |
|                                 {
 | |
|                                     if (detailInstallation.CompleteValue != null)
 | |
|                                     {
 | |
|                                         detailInstallation.CompleteValue += ((detail.CompleteValue ?? 0) - oldCompleteValue);
 | |
|                                     }
 | |
|                                     else
 | |
|                                     {
 | |
|                                         detailInstallation.CompleteValue = detail.CompleteValue ?? 0;
 | |
|                                     }
 | |
|                                     detailInstallation.CompleteValueRate = decimal.Round(Convert.ToDecimal(detailInstallation.CompleteValue) / Convert.ToDecimal(installation.WeightsMoney) * 100, 2);
 | |
|                                     if (detailInstallation.RealValue != null)
 | |
|                                     {
 | |
|                                         detailInstallation.RealValue += ((detail.RealValue ?? 0) - oldRealValue);
 | |
|                                     }
 | |
|                                     else
 | |
|                                     {
 | |
|                                         detailInstallation.RealValue = detail.RealValue ?? 0;
 | |
|                                     }
 | |
|                                     detailInstallation.IsCompleteApprove = true;
 | |
|                                     detailInstallation.RealValueRate = decimal.Round(Convert.ToDecimal(detailInstallation.RealValue) / Convert.ToDecimal(installation.WeightsMoney) * 100, 2);
 | |
|                                     BLL.WbsDetailService.UpdateWbsDetail(detailInstallation);
 | |
|                                 }
 | |
|                             }
 | |
|                         }
 | |
|                     }
 | |
|                     else if (type == "childUnitProject")
 | |
|                     {
 | |
|                         var oldDetail = BLL.WbsDetailService.GetWbsDetailByWbsDetailId(this.Grid1.Rows[i].Values[27].ToString());
 | |
|                         decimal oldEngineeringQuantity = oldDetail.EngineeringQuantity ?? 0;
 | |
|                         decimal oldCompleteValue = oldDetail.CompleteValue ?? 0;
 | |
|                         decimal oldRealValue = oldDetail.RealValue ?? 0;
 | |
|                         var childWbsSets = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(this.trWBS.SelectedNodeID);
 | |
|                         if (childWbsSets.Count == 0)   //当前为末级
 | |
|                         {
 | |
|                             Model.WbsDetail detail = BLL.WbsDetailService.GetWbsDetailByWbsDetailId(this.Grid1.Rows[i].Values[27].ToString());
 | |
|                             Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(detail.ToWbs);
 | |
|                             if (message == "submit")
 | |
|                             {
 | |
|                                 if (detail.IsCompleteApprove == null)
 | |
|                                 {
 | |
|                                     detail.IsCompleteApprove = true;
 | |
|                                 }
 | |
|                                 else
 | |
|                                 {
 | |
|                                     Alert.ShowInTop(wbsSet.WbsSetName + "的当月完成值已审批完成!", MessageBoxIcon.Warning);
 | |
|                                     return;
 | |
|                                 }
 | |
|                             }
 | |
|                             if (!string.IsNullOrEmpty(values.Value<string>("EngineerQuantity")))
 | |
|                             {
 | |
|                                 detail.EngineeringQuantity = Convert.ToDecimal(values.Value<string>("EngineerQuantity"));
 | |
|                             }
 | |
|                             else
 | |
|                             {
 | |
|                                 detail.EngineeringQuantity = 0;
 | |
|                             }
 | |
|                             if (!string.IsNullOrEmpty(values.Value<string>("CompleteValue")))
 | |
|                             {
 | |
|                                 detail.CompleteValue = Convert.ToDecimal(values.Value<string>("CompleteValue"));
 | |
|                                 detail.CompleteValueRate = decimal.Round(Convert.ToDecimal(detail.CompleteValue) / Convert.ToDecimal(wbsSet.WeightsMoney) * 100, 2);
 | |
|                             }
 | |
|                             else
 | |
|                             {
 | |
|                                 detail.CompleteValue = 0;
 | |
|                                 detail.CompleteValueRate = 0;
 | |
|                             }
 | |
|                             if (!string.IsNullOrEmpty(values.Value<string>("RealValue")))
 | |
|                             {
 | |
|                                 detail.RealValue = Convert.ToDecimal(values.Value<string>("RealValue"));
 | |
|                                 detail.RealValueRate = decimal.Round(Convert.ToDecimal(detail.RealValue) / Convert.ToDecimal(wbsSet.WeightsMoney) * 100, 2);
 | |
|                             }
 | |
|                             else
 | |
|                             {
 | |
|                                 detail.RealValue = 0;
 | |
|                                 detail.RealValueRate = 0;
 | |
|                             }
 | |
| 
 | |
|                             BLL.WbsDetailService.UpdateWbsDetail(detail);
 | |
|                             //循环保存所有上级分部分项对应记录
 | |
|                             UpdateWbsParentDetail(Convert.ToDateTime(detail.Months), detail.CompleteValue, oldCompleteValue, detail.RealValue, oldRealValue, this.trWBS.SelectedNode.ParentNode.NodeID, detail.EngineeringQuantity, oldEngineeringQuantity);
 | |
|                             Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(wbsSet.UnitProjectId);
 | |
|                             Model.WbsDetail detailUnitProject = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(wbsSet.UnitProjectId, 3, Convert.ToDateTime(detail.Months));
 | |
|                             if (unitProject != null)
 | |
|                             {
 | |
|                                 if (detailUnitProject != null)
 | |
|                                 {
 | |
|                                     if (detailUnitProject.CompleteValue != null)
 | |
|                                     {
 | |
|                                         detailUnitProject.CompleteValue += ((detail.CompleteValue ?? 0) - oldCompleteValue);
 | |
|                                     }
 | |
|                                     else
 | |
|                                     {
 | |
|                                         detailUnitProject.CompleteValue = detail.CompleteValue ?? 0;
 | |
|                                     }
 | |
|                                     detailUnitProject.CompleteValueRate = decimal.Round(Convert.ToDecimal(detailUnitProject.CompleteValue) / Convert.ToDecimal(unitProject.WeightsMoney) * 100, 2);
 | |
|                                     if (detailUnitProject.RealValue != null)
 | |
|                                     {
 | |
|                                         detailUnitProject.RealValue += ((detail.RealValue ?? 0) - oldRealValue);
 | |
|                                     }
 | |
|                                     else
 | |
|                                     {
 | |
|                                         detailUnitProject.RealValue = detail.RealValue ?? 0;
 | |
|                                     }
 | |
|                                     if (unitProject.EngineerQuantity != null && unitProject.EngineerQuantity > 0)
 | |
|                                     {
 | |
|                                         if (detailUnitProject.EngineeringQuantity != null)
 | |
|                                         {
 | |
|                                             detailUnitProject.EngineeringQuantity += detail.EngineeringQuantity - oldEngineeringQuantity;
 | |
|                                         }
 | |
|                                         else
 | |
|                                         {
 | |
|                                             detailUnitProject.EngineeringQuantity = detail.EngineeringQuantity ?? 0;
 | |
|                                         }
 | |
|                                     }
 | |
|                                     detailUnitProject.IsCompleteApprove = true;
 | |
|                                     detailUnitProject.RealValueRate = decimal.Round(Convert.ToDecimal(detailUnitProject.RealValue) / Convert.ToDecimal(unitProject.WeightsMoney) * 100, 2);
 | |
|                                     BLL.WbsDetailService.UpdateWbsDetail(detailUnitProject);
 | |
|                                 }
 | |
|                                 if (unitProject.SuperUnitProjectId != null)   //存在单位工程
 | |
|                                 {
 | |
|                                     Model.Wbs_UnitProject parentUnitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(unitProject.SuperUnitProjectId);
 | |
|                                     Model.WbsDetail detailParentUnitProject = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(parentUnitProject.UnitProjectId, 3, Convert.ToDateTime(detail.Months));
 | |
|                                     if (detailParentUnitProject != null)
 | |
|                                     {
 | |
|                                         if (detailParentUnitProject.CompleteValue != null)
 | |
|                                         {
 | |
|                                             detailParentUnitProject.CompleteValue += ((detail.CompleteValue ?? 0) - oldCompleteValue);
 | |
|                                         }
 | |
|                                         else
 | |
|                                         {
 | |
|                                             detailParentUnitProject.CompleteValue = detail.CompleteValue ?? 0;
 | |
|                                         }
 | |
|                                         detailParentUnitProject.CompleteValueRate = decimal.Round(Convert.ToDecimal(detailParentUnitProject.CompleteValue) / Convert.ToDecimal(parentUnitProject.WeightsMoney) * 100, 2);
 | |
|                                         if (detailParentUnitProject.RealValue != null)
 | |
|                                         {
 | |
|                                             detailParentUnitProject.RealValue += ((detail.RealValue ?? 0) - oldRealValue);
 | |
|                                         }
 | |
|                                         else
 | |
|                                         {
 | |
|                                             detailParentUnitProject.RealValue = detail.RealValue ?? 0;
 | |
|                                         }
 | |
|                                         detailParentUnitProject.IsCompleteApprove = true;
 | |
|                                         detailParentUnitProject.RealValueRate = decimal.Round(Convert.ToDecimal(detailParentUnitProject.RealValue) / Convert.ToDecimal(parentUnitProject.WeightsMoney) * 100, 2);
 | |
|                                         BLL.WbsDetailService.UpdateWbsDetail(detailParentUnitProject);
 | |
|                                     }
 | |
|                                 }
 | |
|                             }
 | |
|                             //保存对应专业
 | |
|                             Model.WBS_CnProfession cnProfession = BLL.CnProfessionService.GetCnProfessionByCnProfessionId(wbsSet.CnProfessionId);
 | |
|                             if (cnProfession != null)
 | |
|                             {
 | |
|                                 Model.WbsDetail detailCnProfession = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(cnProfession.CnProfessionId, 2, Convert.ToDateTime(detail.Months));
 | |
|                                 if (detailCnProfession != null)
 | |
|                                 {
 | |
|                                     if (detailCnProfession.CompleteValue != null)
 | |
|                                     {
 | |
|                                         detailCnProfession.CompleteValue += ((detail.CompleteValue ?? 0) - oldCompleteValue);
 | |
|                                     }
 | |
|                                     else
 | |
|                                     {
 | |
|                                         detailCnProfession.CompleteValue = detail.CompleteValue ?? 0;
 | |
|                                     }
 | |
|                                     detailCnProfession.CompleteValueRate = decimal.Round(Convert.ToDecimal(detailCnProfession.CompleteValue) / Convert.ToDecimal(cnProfession.WeightsMoney) * 100, 2);
 | |
|                                     if (detailCnProfession.RealValue != null)
 | |
|                                     {
 | |
|                                         detailCnProfession.RealValue += ((detail.RealValue ?? 0) - oldRealValue);
 | |
|                                     }
 | |
|                                     else
 | |
|                                     {
 | |
|                                         detailCnProfession.RealValue = detail.RealValue ?? 0;
 | |
|                                     }
 | |
|                                     detailCnProfession.IsCompleteApprove = true;
 | |
|                                     detailCnProfession.RealValueRate = decimal.Round(Convert.ToDecimal(detailCnProfession.RealValue) / Convert.ToDecimal(cnProfession.WeightsMoney) * 100, 2);
 | |
|                                     BLL.WbsDetailService.UpdateWbsDetail(detailCnProfession);
 | |
|                                 }
 | |
|                                 //保存对应装置
 | |
|                                 Model.Project_Installation installation = BLL.Project_InstallationService.GetInstallationByInstallationId(cnProfession.InstallationId);
 | |
|                                 if (installation != null)
 | |
|                                 {
 | |
|                                     Model.WbsDetail detailInstallation = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(installation.InstallationId, 1, Convert.ToDateTime(detail.Months));
 | |
|                                     if (detailInstallation != null)
 | |
|                                     {
 | |
|                                         if (detailInstallation.CompleteValue != null)
 | |
|                                         {
 | |
|                                             detailInstallation.CompleteValue += ((detail.CompleteValue ?? 0) - oldCompleteValue);
 | |
|                                         }
 | |
|                                         else
 | |
|                                         {
 | |
|                                             detailInstallation.CompleteValue = detail.CompleteValue ?? 0;
 | |
|                                         }
 | |
|                                         detailInstallation.CompleteValueRate = decimal.Round(Convert.ToDecimal(detailInstallation.CompleteValue) / Convert.ToDecimal(installation.WeightsMoney) * 100, 2);
 | |
|                                         if (detailInstallation.RealValue != null)
 | |
|                                         {
 | |
|                                             detailInstallation.RealValue += ((detail.RealValue ?? 0) - oldRealValue);
 | |
|                                         }
 | |
|                                         else
 | |
|                                         {
 | |
|                                             detailInstallation.RealValue = detail.RealValue ?? 0;
 | |
|                                         }
 | |
|                                         detailInstallation.IsCompleteApprove = true;
 | |
|                                         detailInstallation.RealValueRate = decimal.Round(Convert.ToDecimal(detailInstallation.RealValue) / Convert.ToDecimal(installation.WeightsMoney) * 100, 2);
 | |
|                                         BLL.WbsDetailService.UpdateWbsDetail(detailInstallation);
 | |
|                                         if (installation.SuperInstallationId != "0")  //一般装置
 | |
|                                         {
 | |
|                                             //主项
 | |
|                                             Model.Project_Installation pInstallation = BLL.Project_InstallationService.GetInstallationByInstallationId(installation.SuperInstallationId);
 | |
|                                             Model.WbsDetail pDetailInstallation = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(installation.SuperInstallationId, 1, Convert.ToDateTime(detail.Months));
 | |
|                                             if (pDetailInstallation.CompleteValue != null)
 | |
|                                             {
 | |
|                                                 pDetailInstallation.CompleteValue += ((detail.CompleteValue ?? 0) - oldCompleteValue);
 | |
|                                             }
 | |
|                                             else
 | |
|                                             {
 | |
|                                                 pDetailInstallation.CompleteValue = detail.CompleteValue ?? 0;
 | |
|                                             }
 | |
|                                             pDetailInstallation.CompleteValueRate = decimal.Round(Convert.ToDecimal(pDetailInstallation.CompleteValue) / Convert.ToDecimal(installation.WeightsMoney) * 100, 2);
 | |
|                                             if (pDetailInstallation.RealValue != null)
 | |
|                                             {
 | |
|                                                 pDetailInstallation.RealValue += ((detail.RealValue ?? 0) - oldRealValue);
 | |
|                                             }
 | |
|                                             else
 | |
|                                             {
 | |
|                                                 pDetailInstallation.RealValue = detail.RealValue ?? 0;
 | |
|                                             }
 | |
|                                             pDetailInstallation.IsCompleteApprove = true;
 | |
|                                             pDetailInstallation.RealValueRate = decimal.Round(Convert.ToDecimal(pDetailInstallation.RealValue) / Convert.ToDecimal(installation.WeightsMoney) * 100, 2);
 | |
|                                             BLL.WbsDetailService.UpdateWbsDetail(pDetailInstallation);
 | |
|                                             //装置
 | |
|                                             Model.WbsDetail ppDetailInstallation = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(pInstallation.SuperInstallationId, 1, Convert.ToDateTime(detail.Months));
 | |
|                                             if (ppDetailInstallation.CompleteValue != null)
 | |
|                                             {
 | |
|                                                 ppDetailInstallation.CompleteValue += ((detail.CompleteValue ?? 0) - oldCompleteValue);
 | |
|                                             }
 | |
|                                             else
 | |
|                                             {
 | |
|                                                 ppDetailInstallation.CompleteValue = detail.CompleteValue ?? 0;
 | |
|                                             }
 | |
|                                             ppDetailInstallation.CompleteValueRate = decimal.Round(Convert.ToDecimal(ppDetailInstallation.CompleteValue) / Convert.ToDecimal(installation.WeightsMoney) * 100, 2);
 | |
|                                             if (ppDetailInstallation.RealValue != null)
 | |
|                                             {
 | |
|                                                 ppDetailInstallation.RealValue += ((detail.RealValue ?? 0) - oldRealValue);
 | |
|                                             }
 | |
|                                             else
 | |
|                                             {
 | |
|                                                 ppDetailInstallation.RealValue = detail.RealValue ?? 0;
 | |
|                                             }
 | |
|                                             ppDetailInstallation.IsCompleteApprove = true;
 | |
|                                             ppDetailInstallation.RealValueRate = decimal.Round(Convert.ToDecimal(ppDetailInstallation.RealValue) / Convert.ToDecimal(installation.WeightsMoney) * 100, 2);
 | |
|                                             BLL.WbsDetailService.UpdateWbsDetail(ppDetailInstallation);
 | |
|                                         }
 | |
|                                     }
 | |
|                                 }
 | |
|                             }
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|                 i++;
 | |
|             }
 | |
|             //BLL.Sys_LogService.AddLog(BLL.Const.System_9, this.CurrUser.LoginProjectId, this.CurrUser.UserId, "审核完成值/实耗值");
 | |
|             if (message == "success")
 | |
|             {
 | |
|                 ShowNotify("保存成功!", MessageBoxIcon.Success);
 | |
|             }
 | |
|             else if (message == "submit")
 | |
|             {
 | |
|                 ShowNotify("保存成功!", MessageBoxIcon.Success);
 | |
|             }
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region  更新分部分项
 | |
|         /// <summary>
 | |
|         /// 更新分部分项
 | |
|         /// </summary>
 | |
|         /// <param name="years"></param>
 | |
|         /// <param name="months"></param>
 | |
|         /// <param name="planValue"></param>
 | |
|         /// <param name="parentId"></param>
 | |
|         private void UpdateWbsParentDetail(DateTime months, decimal? completeValue, decimal oldCompleteValue, decimal? realValue, decimal oldRealValue, string parentId, decimal? engineeringQuantity, decimal oldEngineeringQuantity)
 | |
|         {
 | |
|             Model.Wbs_WbsSet parentWbsSet1 = BLL.WbsSetService.GetWbsSetByWbsSetId(parentId);
 | |
|             if (parentWbsSet1 != null)
 | |
|             {
 | |
|                 Model.WbsDetail detail1 = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(parentWbsSet1.WbsSetId, 4, months);
 | |
|                 if (detail1 != null)
 | |
|                 {
 | |
|                     if (parentWbsSet1.SuperWbsSetId != null)   //父节点不是分部节点
 | |
|                     {
 | |
|                         if (detail1.CompleteValue != null)
 | |
|                         {
 | |
|                             detail1.CompleteValue += ((completeValue ?? 0) - oldCompleteValue);
 | |
|                         }
 | |
|                         else
 | |
|                         {
 | |
|                             detail1.CompleteValue = completeValue ?? 0;
 | |
|                         }
 | |
|                         if (detail1.RealValue != null)
 | |
|                         {
 | |
|                             detail1.RealValue += ((realValue ?? 0) - oldRealValue);
 | |
|                         }
 | |
|                         else
 | |
|                         {
 | |
|                             detail1.RealValue = realValue ?? 0;
 | |
|                         }
 | |
|                         if (parentWbsSet1.EngineerQuantity != null && parentWbsSet1.EngineerQuantity > 0)
 | |
|                         {
 | |
|                             if (detail1.EngineeringQuantity != null)
 | |
|                             {
 | |
|                                 detail1.EngineeringQuantity += ((engineeringQuantity ?? 0) - oldEngineeringQuantity);
 | |
|                             }
 | |
|                             else
 | |
|                             {
 | |
|                                 detail1.EngineeringQuantity = engineeringQuantity ?? 0;
 | |
|                             }
 | |
|                         }
 | |
|                         detail1.IsCompleteApprove = true;
 | |
|                         detail1.CompleteValueRate = decimal.Round(Convert.ToDecimal(detail1.CompleteValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
 | |
|                         BLL.WbsDetailService.UpdateWbsDetail(detail1);
 | |
|                         UpdateWbsParentDetail(months, completeValue, oldCompleteValue, realValue, oldRealValue, parentWbsSet1.SuperWbsSetId, engineeringQuantity, oldEngineeringQuantity);
 | |
|                     }
 | |
|                     else
 | |
|                     {
 | |
|                         if (detail1.CompleteValue != null)
 | |
|                         {
 | |
|                             detail1.CompleteValue += ((completeValue ?? 0) - oldCompleteValue);
 | |
|                         }
 | |
|                         else
 | |
|                         {
 | |
|                             detail1.CompleteValue = completeValue ?? 0;
 | |
|                         }
 | |
|                         if (detail1.RealValue != null)
 | |
|                         {
 | |
|                             detail1.RealValue += ((realValue ?? 0) - oldRealValue);
 | |
|                         }
 | |
|                         else
 | |
|                         {
 | |
|                             detail1.RealValue = realValue ?? 0;
 | |
|                         }
 | |
|                         if (parentWbsSet1.EngineerQuantity != null && parentWbsSet1.EngineerQuantity > 0)
 | |
|                         {
 | |
|                             if (detail1.EngineeringQuantity != null)
 | |
|                             {
 | |
|                                 detail1.EngineeringQuantity += ((engineeringQuantity ?? 0) - oldEngineeringQuantity);
 | |
|                             }
 | |
|                             else
 | |
|                             {
 | |
|                                 detail1.EngineeringQuantity = engineeringQuantity ?? 0;
 | |
|                             }
 | |
|                         }
 | |
|                         detail1.IsCompleteApprove = true;
 | |
|                         detail1.CompleteValueRate = decimal.Round(Convert.ToDecimal(detail1.CompleteValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
 | |
|                         BLL.WbsDetailService.UpdateWbsDetail(detail1);
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region  提交、保存按钮
 | |
|         /// <summary>
 | |
|         /// 提交
 | |
|         /// </summary>
 | |
|         /// <param name="sender"></param>
 | |
|         /// <param name="e"></param>
 | |
|         protected void btnSave_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             if (this.Grid1.Rows.Count > 0)
 | |
|             {
 | |
|                 SaveData("submit");
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning);
 | |
|                 return;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 保存
 | |
|         /// </summary>
 | |
|         /// <param name="sender"></param>
 | |
|         /// <param name="e"></param>
 | |
|         protected void btnSave1_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             if (this.Grid1.Rows.Count > 0)
 | |
|             {
 | |
|                 SaveData("success");
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning);
 | |
|                 return;
 | |
|             }
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region  绑定数据Grid1
 | |
|         /// <summary>
 | |
|         /// 绑定数据Grid1
 | |
|         /// </summary>
 | |
|         /// <param name="sender"></param>
 | |
|         /// <param name="e"></param>
 | |
|         protected void Grid1_FilterChange(object sender, EventArgs e)
 | |
|         {
 | |
|             BindGrid();
 | |
|         }
 | |
| 
 | |
|         protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
 | |
|         {
 | |
|             Grid1.PageIndex = e.NewPageIndex;
 | |
|             BindGrid();
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Grid1排序
 | |
|         /// </summary>
 | |
|         /// <param name="sender"></param>
 | |
|         /// <param name="e"></param>
 | |
|         protected void Grid1_Sort(object sender, GridSortEventArgs e)
 | |
|         {
 | |
|             Grid1.SortDirection = e.SortDirection;
 | |
|             Grid1.SortField = e.SortField;
 | |
|             BindGrid();
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 加载Grid
 | |
|         /// </summary>
 | |
|         private void BindGrid()
 | |
|         {
 | |
|             if (!string.IsNullOrEmpty(this.txtMonths.Text.Trim()))
 | |
|             {
 | |
|                 var wbsDetails = from x in Funs.DB.WbsDetail select x;
 | |
|                 Model.Project_Sys_Set completeAndRealSet = BLL.Project_SysSetService.GetSysSetBySetId("22", this.CurrUser.LoginProjectId);
 | |
|                 DateTime date = DateTime.Now.Date;
 | |
|                 DateTime nowMonth = Convert.ToDateTime(date.Year + "-" + date.Month + "-01");
 | |
|                 DateTime minDate, maxDate;
 | |
|                 if (completeAndRealSet != null)
 | |
|                 {
 | |
|                     minDate = nowMonth.AddMonths(-Convert.ToInt32(completeAndRealSet.SetValue));
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     minDate = nowMonth;
 | |
|                 }
 | |
|                 maxDate = nowMonth.AddMonths(1).AddDays(-1);
 | |
|                 DateTime month = Convert.ToDateTime(this.txtMonths.Text.Trim() + "-01");
 | |
|                 this.btnSave1.Hidden = true;
 | |
|                 List<Model.WBSSetItem> items = new List<Model.WBSSetItem>();
 | |
|                 bool showSave = false;
 | |
|                 if (this.trWBS.SelectedNode != null)
 | |
|                 {
 | |
|                     #region 分部分项
 | |
|                     if (this.trWBS.SelectedNode.CommandName == "wbsSet")
 | |
|                     {
 | |
|                         Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(this.trWBS.SelectedNode.NodeID);
 | |
|                         if (wbsSet != null)
 | |
|                         {
 | |
|                             var childWbsSets = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(wbsSet.WbsSetId);
 | |
|                             if (childWbsSets.Count == 0)   //当前为末级
 | |
|                             {
 | |
|                                 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;
 | |
|                                 this.Grid1.Columns[1].HeaderText = string.Empty;
 | |
|                                 RenderField columnCompleteValue = Grid1.FindColumn("CompleteValue") as RenderField;
 | |
|                                 RenderField columnCompleteValueRate = Grid1.FindColumn("CompleteValueRate") as RenderField;
 | |
|                                 RenderField columnRealValue = Grid1.FindColumn("RealValue") as RenderField;
 | |
|                                 columnCompleteValue.EnableColumnEdit = true;
 | |
|                                 columnCompleteValueRate.EnableColumnEdit = true;
 | |
|                                 columnRealValue.EnableColumnEdit = true;
 | |
| 
 | |
|                                 Model.WbsDetail detail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(wbsSet.WbsSetId, 4, month);
 | |
|                                 if (detail != null)
 | |
|                                 {
 | |
|                                     List<Model.WbsDetail> totalDetails = BLL.WbsDetailService.GetTotalWbsDetailsByYearMonth(wbsSet.WbsSetId, 4, month);
 | |
|                                     Model.WBSSetItem item = new Model.WBSSetItem();
 | |
|                                     item.Id = wbsSet.WbsSetId;
 | |
|                                     item.WbsDetailId = detail.WbsDetailId;
 | |
|                                     item.EngineerQuantity = detail.EngineeringQuantity;
 | |
|                                     item.Code = wbsSet.WbsSetCode;
 | |
|                                     item.Name = wbsSet.WbsSetName;
 | |
|                                     item.Weights = wbsSet.Weights;
 | |
|                                     item.WeightsMoney = wbsSet.WeightsMoney;
 | |
|                                     item.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(item.WeightsMoney), 2).ToString();
 | |
|                                     if (detail.CompleteValue != null)
 | |
|                                     {
 | |
|                                         item.CompleteValue = decimal.Round(Convert.ToDecimal(detail.CompleteValue), 2);
 | |
|                                         item.CompleteValueRate = decimal.Round(Convert.ToDecimal(detail.CompleteValue) / Convert.ToDecimal(item.WeightsMoney) * 100, 2);
 | |
|                                     }
 | |
|                                     item.CompleteValueTotal = decimal.Round(Convert.ToDecimal(totalDetails.Sum(x => x.CompleteValue ?? 0)), 2);
 | |
|                                     item.CompleteValueTotalPart = item.CompleteValueTotal - (detail.CompleteValue ?? 0);
 | |
|                                     if (item.WeightsMoney > 0)
 | |
|                                     {
 | |
|                                         item.CompleteValueRateTotal = decimal.Round(Convert.ToDecimal(item.CompleteValueTotal) / Convert.ToDecimal(item.WeightsMoney) * 100, 2);
 | |
|                                     }
 | |
|                                     if (detail.RealValue != null)
 | |
|                                     {
 | |
|                                         item.RealValue = decimal.Round(Convert.ToDecimal(detail.RealValue), 2);
 | |
|                                     }
 | |
|                                     item.RealValueTotal = decimal.Round(Convert.ToDecimal(totalDetails.Sum(x => x.RealValue ?? 0)), 2);
 | |
|                                     item.RealValueTotalPart = item.RealValueTotal - (detail.RealValue ?? 0);
 | |
|                                     item.StartDate = wbsSet.StartDate;
 | |
|                                     item.EndDate = wbsSet.EndDate;
 | |
|                                     item.PlanValue = decimal.Round(Convert.ToDecimal(detail.PlanValue ?? 0), 2);
 | |
|                                     item.PlanValueTotal = decimal.Round(Convert.ToDecimal(totalDetails.Sum(x => x.PlanValue ?? 0)), 2);
 | |
|                                     if (item.WeightsMoney > 0)
 | |
|                                     {
 | |
|                                         item.PlanValueRateTotal = decimal.Round(Convert.ToDecimal(item.PlanValueTotal) / Convert.ToDecimal(item.WeightsMoney) * 100, 2);
 | |
|                                     }
 | |
|                                     item.SVValue = item.CompleteValueTotal - item.PlanValueTotal;
 | |
|                                     item.CVValue = item.CompleteValueTotal - item.RealValueTotal;
 | |
|                                     items.Add(item);
 | |
|                                 }
 | |
|                             }
 | |
|                             else   //当前不为末级
 | |
|                             {
 | |
|                                 string column0 = string.Empty;
 | |
|                                 if (wbsSet.Flag == 1)
 | |
|                                 {
 | |
|                                     column0 = "分部工程";
 | |
|                                 }
 | |
|                                 else if (wbsSet.Flag == 2)
 | |
|                                 {
 | |
|                                     column0 = "子分部工程";
 | |
|                                 }
 | |
|                                 else if (wbsSet.Flag == 3)
 | |
|                                 {
 | |
|                                     column0 = "分项工程";
 | |
|                                 }
 | |
|                                 this.Grid1.Columns[0].HeaderText = column0;
 | |
|                                 string column1 = string.Empty;
 | |
|                                 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;
 | |
|                                 if (month >= minDate && month <= maxDate)
 | |
|                                 {
 | |
|                                     if (BLL.CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, Const.WBSCompleteAuditMenuId, Const.BtnSave))
 | |
|                                     {
 | |
|                                         showSave = true;
 | |
|                                     }
 | |
|                                 }
 | |
|                                 Model.WbsDetail detail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(wbsSet.WbsSetId, 4, month);
 | |
|                                 if (detail != null)
 | |
|                                 {
 | |
|                                     List<Model.WbsDetail> totalDetails = BLL.WbsDetailService.GetTotalWbsDetailsByYearMonth(wbsSet.WbsSetId, 4, month);
 | |
|                                     Model.WBSSetItem item = new Model.WBSSetItem();
 | |
|                                     item.Id = wbsSet.WbsSetId;
 | |
|                                     item.EngineerQuantity = detail.EngineeringQuantity;
 | |
|                                     item.WbsDetailId = detail.WbsDetailId;
 | |
|                                     item.Code = wbsSet.WbsSetCode;
 | |
|                                     item.Name = wbsSet.WbsSetName;
 | |
|                                     item.Weights = wbsSet.Weights;
 | |
|                                     item.WeightsMoney = wbsSet.WeightsMoney;
 | |
|                                     item.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(item.WeightsMoney), 2).ToString();
 | |
|                                     item.BudgetUnitPrice = wbsSet.BudgetUnitPrice;
 | |
|                                     item.CostUnivalent = wbsSet.CostUnivalent;
 | |
|                                     if (detail.CompleteValue != null)
 | |
|                                     {
 | |
|                                         item.CompleteValue = decimal.Round(Convert.ToDecimal(detail.CompleteValue), 2);
 | |
|                                         item.CompleteValueRate = decimal.Round(Convert.ToDecimal(detail.CompleteValue) / Convert.ToDecimal(item.WeightsMoney) * 100, 2);
 | |
|                                     }
 | |
|                                     item.CompleteValueTotal = decimal.Round(Convert.ToDecimal(totalDetails.Sum(x => x.CompleteValue ?? 0)), 2);
 | |
|                                     item.CompleteValueTotalPart = item.CompleteValueTotal - (detail.CompleteValue ?? 0);
 | |
|                                     if (item.WeightsMoney > 0)
 | |
|                                     {
 | |
|                                         item.CompleteValueRateTotal = decimal.Round(Convert.ToDecimal(item.CompleteValueTotal) / Convert.ToDecimal(item.WeightsMoney) * 100, 2);
 | |
|                                     }
 | |
|                                     if (detail.RealValue != null)
 | |
|                                     {
 | |
|                                         item.RealValue = decimal.Round(Convert.ToDecimal(detail.RealValue), 2);
 | |
|                                     }
 | |
|                                     item.RealValueTotal = decimal.Round(Convert.ToDecimal(totalDetails.Sum(x => x.RealValue ?? 0)), 2);
 | |
|                                     item.RealValueTotalPart = item.RealValueTotal - (detail.RealValue ?? 0);
 | |
|                                     item.StartDate = wbsSet.StartDate;
 | |
|                                     item.EndDate = wbsSet.EndDate;
 | |
|                                     item.PlanValue = decimal.Round(Convert.ToDecimal(detail.PlanValue ?? 0), 2);
 | |
|                                     item.PlanValueTotal = decimal.Round(Convert.ToDecimal(totalDetails.Sum(x => x.PlanValue ?? 0)), 2);
 | |
|                                     if (item.WeightsMoney > 0)
 | |
|                                     {
 | |
|                                         item.PlanValueRateTotal = decimal.Round(Convert.ToDecimal(item.PlanValueTotal) / Convert.ToDecimal(item.WeightsMoney) * 100, 2);
 | |
|                                     }
 | |
|                                     item.SVValue = item.CompleteValueTotal - item.PlanValueTotal;
 | |
|                                     item.CVValue = item.CompleteValueTotal - item.RealValueTotal;
 | |
|                                     items.Add(item);
 | |
|                                     foreach (var childWbsSet in childWbsSets)
 | |
|                                     {
 | |
|                                         Model.WbsDetail childDetail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(childWbsSet.WbsSetId, 4, month);
 | |
|                                         if (childDetail != null)
 | |
|                                         {
 | |
|                                             List<Model.WbsDetail> totalChildDetails = BLL.WbsDetailService.GetTotalWbsDetailsByYearMonth(childWbsSet.WbsSetId, 4, month);
 | |
|                                             Model.WBSSetItem childItem = new Model.WBSSetItem();
 | |
|                                             childItem.Id = childWbsSet.WbsSetId;
 | |
|                                             childItem.EngineerQuantity = childDetail.EngineeringQuantity;
 | |
|                                             childItem.WbsDetailId = childDetail.WbsDetailId;
 | |
|                                             childItem.ChildCode = childWbsSet.WbsSetCode;
 | |
|                                             childItem.ChildName = childWbsSet.WbsSetName;
 | |
|                                             childItem.BudgetUnitPrice = wbsSet.BudgetUnitPrice;
 | |
|                                             childItem.CostUnivalent = wbsSet.CostUnivalent;
 | |
|                                             childItem.Weights = childWbsSet.Weights;
 | |
|                                             childItem.WeightsMoney = childWbsSet.WeightsMoney;
 | |
|                                             childItem.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(childItem.WeightsMoney), 2).ToString();
 | |
|                                             if (childDetail.CompleteValue != null)
 | |
|                                             {
 | |
|                                                 childItem.CompleteValue = decimal.Round(Convert.ToDecimal(childDetail.CompleteValue), 2);
 | |
|                                                 childItem.CompleteValueRate = decimal.Round(Convert.ToDecimal(childDetail.CompleteValue) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                             }
 | |
|                                             childItem.CompleteValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.CompleteValue ?? 0)), 2);
 | |
|                                             childItem.CompleteValueTotalPart = childItem.CompleteValueTotal - (childDetail.CompleteValue ?? 0);
 | |
|                                             if (childItem.WeightsMoney > 0)
 | |
|                                             {
 | |
|                                                 childItem.CompleteValueRateTotal = decimal.Round(Convert.ToDecimal(childItem.CompleteValueTotal) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                             }
 | |
|                                             if (childDetail.RealValue != null)
 | |
|                                             {
 | |
|                                                 childItem.RealValue = decimal.Round(Convert.ToDecimal(childDetail.RealValue), 2);
 | |
|                                             }
 | |
|                                             childItem.RealValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.RealValue ?? 0)), 2);
 | |
|                                             childItem.RealValueTotalPart = childItem.RealValueTotal - (childDetail.RealValue ?? 0);
 | |
|                                             childItem.StartDate = childWbsSet.StartDate;
 | |
|                                             childItem.EndDate = childWbsSet.EndDate;
 | |
|                                             childItem.PlanValue = decimal.Round(Convert.ToDecimal(childDetail.PlanValue ?? 0), 2);
 | |
|                                             childItem.PlanValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.PlanValue ?? 0)), 2);
 | |
|                                             if (childItem.WeightsMoney > 0)
 | |
|                                             {
 | |
|                                                 childItem.PlanValueRateTotal = decimal.Round(Convert.ToDecimal(childItem.PlanValueTotal) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                             }
 | |
|                                             childItem.SVValue = childItem.CompleteValueTotal - childItem.PlanValueTotal;
 | |
|                                             childItem.CVValue = childItem.CompleteValueTotal - childItem.RealValueTotal;
 | |
|                                             items.Add(childItem);
 | |
|                                         }
 | |
|                                     }
 | |
|                                 }
 | |
|                             }
 | |
|                         }
 | |
|                     }
 | |
|                     #endregion
 | |
|                     #region  子单位工程
 | |
|                     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);
 | |
|                         if (unitProject.EngineerQuantity != null && unitProject.EngineerQuantity > 0)   //已设置工作量
 | |
|                         {
 | |
|                             this.btnSave1.Hidden = false;
 | |
|                         }
 | |
|                         Model.WbsDetail detail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(unitProject.UnitProjectId, 3, month);
 | |
|                         if (detail != null)
 | |
|                         {
 | |
|                             List<Model.WbsDetail> totalDetails = BLL.WbsDetailService.GetTotalWbsDetailsByYearMonth(unitProject.UnitProjectId, 3, month);
 | |
|                             Model.WBSSetItem item = new Model.WBSSetItem();
 | |
|                             item.Id = unitProject.UnitProjectId;
 | |
|                             item.WbsDetailId = detail.WbsDetailId;
 | |
|                             item.EngineerQuantity = detail.EngineeringQuantity;
 | |
|                             item.Code = unitProject.UnitProjectCode;
 | |
|                             item.Name = unitProject.UnitProjectName;
 | |
|                             item.Weights = unitProject.Weights;
 | |
|                             item.WeightsMoney = unitProject.WeightsMoney;
 | |
|                             item.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(item.WeightsMoney), 2).ToString();
 | |
|                             if (detail.CompleteValue != null)
 | |
|                             {
 | |
|                                 item.CompleteValue = decimal.Round(Convert.ToDecimal(detail.CompleteValue), 2);
 | |
|                                 item.CompleteValueRate = decimal.Round(Convert.ToDecimal(detail.CompleteValue) / Convert.ToDecimal(item.WeightsMoney) * 100, 2);
 | |
|                             }
 | |
|                             item.CompleteValueTotal = decimal.Round(Convert.ToDecimal(totalDetails.Sum(x => x.CompleteValue ?? 0)), 2);
 | |
|                             if (item.WeightsMoney > 0)
 | |
|                             {
 | |
|                                 item.CompleteValueRateTotal = decimal.Round(Convert.ToDecimal(item.CompleteValueTotal) / Convert.ToDecimal(item.WeightsMoney) * 100, 2);
 | |
|                             }
 | |
|                             if (detail.RealValue != null)
 | |
|                             {
 | |
|                                 item.RealValue = decimal.Round(Convert.ToDecimal(detail.RealValue), 2);
 | |
|                             }
 | |
|                             item.RealValueTotal = decimal.Round(Convert.ToDecimal(totalDetails.Sum(x => x.RealValue ?? 0)), 2);
 | |
|                             item.StartDate = unitProject.StartDate;
 | |
|                             item.EndDate = unitProject.EndDate;
 | |
|                             item.PlanValue = decimal.Round(Convert.ToDecimal(detail.PlanValue ?? 0), 2);
 | |
|                             item.PlanValueTotal = decimal.Round(Convert.ToDecimal(totalDetails.Sum(x => x.PlanValue ?? 0)), 2);
 | |
|                             if (item.WeightsMoney > 0)
 | |
|                             {
 | |
|                                 item.PlanValueRateTotal = decimal.Round(Convert.ToDecimal(item.PlanValueTotal) / Convert.ToDecimal(item.WeightsMoney) * 100, 2);
 | |
|                             }
 | |
|                             item.SVValue = item.CompleteValueTotal - item.PlanValueTotal;
 | |
|                             item.CVValue = item.CompleteValueTotal - item.RealValueTotal;
 | |
|                             items.Add(item);
 | |
|                             var childWbsSets = from x in Funs.DB.Wbs_WbsSet where x.Flag == 1 && x.UnitProjectId == this.trWBS.SelectedNode.NodeID && x.IsApprove == true orderby x.WbsSetCode select x;
 | |
|                             foreach (var childWbsSet in childWbsSets)
 | |
|                             {
 | |
|                                 Model.WbsDetail childDetail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(childWbsSet.WbsSetId, 4, month);
 | |
|                                 if (childDetail != null)
 | |
|                                 {
 | |
|                                     List<Model.WbsDetail> totalChildDetails = BLL.WbsDetailService.GetTotalWbsDetailsByYearMonth(childWbsSet.WbsSetId, 4, month);
 | |
|                                     Model.WBSSetItem childItem = new Model.WBSSetItem();
 | |
|                                     childItem.Id = childWbsSet.WbsSetId;
 | |
|                                     childItem.EngineerQuantity = childDetail.EngineeringQuantity;
 | |
|                                     childItem.WbsDetailId = childDetail.WbsDetailId;
 | |
|                                     childItem.ChildCode = childWbsSet.WbsSetCode;
 | |
|                                     childItem.ChildName = childWbsSet.WbsSetName;
 | |
|                                     childItem.BudgetUnitPrice = unitProject.BudgetUnitPrice;
 | |
|                                     childItem.CostUnivalent = unitProject.CostUnivalent;
 | |
|                                     childItem.Weights = childWbsSet.Weights;
 | |
|                                     childItem.WeightsMoney = childWbsSet.WeightsMoney;
 | |
|                                     childItem.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(childItem.WeightsMoney), 2).ToString();
 | |
|                                     if (childDetail.CompleteValue != null)
 | |
|                                     {
 | |
|                                         childItem.CompleteValue = decimal.Round(Convert.ToDecimal(childDetail.CompleteValue), 2);
 | |
|                                         childItem.CompleteValueRate = decimal.Round(Convert.ToDecimal(childDetail.CompleteValue) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                     }
 | |
|                                     childItem.CompleteValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.CompleteValue ?? 0)), 2);
 | |
|                                     if (childItem.WeightsMoney > 0)
 | |
|                                     {
 | |
|                                         childItem.CompleteValueRateTotal = decimal.Round(Convert.ToDecimal(childItem.CompleteValueTotal) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                     }
 | |
|                                     if (childDetail.RealValue != null)
 | |
|                                     {
 | |
|                                         childItem.RealValue = decimal.Round(Convert.ToDecimal(childDetail.RealValue), 2);
 | |
|                                     }
 | |
|                                     childItem.RealValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.RealValue ?? 0)), 2);
 | |
|                                     childItem.StartDate = childWbsSet.StartDate;
 | |
|                                     childItem.EndDate = childWbsSet.EndDate;
 | |
|                                     childItem.PlanValue = decimal.Round(Convert.ToDecimal(childDetail.PlanValue ?? 0), 2);
 | |
|                                     childItem.PlanValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.PlanValue ?? 0)), 2);
 | |
|                                     if (childItem.WeightsMoney > 0)
 | |
|                                     {
 | |
|                                         childItem.PlanValueRateTotal = decimal.Round(Convert.ToDecimal(childItem.PlanValueTotal) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                     }
 | |
|                                     childItem.SVValue = childItem.CompleteValueTotal - childItem.PlanValueTotal;
 | |
|                                     childItem.CVValue = childItem.CompleteValueTotal - childItem.RealValueTotal;
 | |
|                                     items.Add(childItem);
 | |
|                                 }
 | |
|                             }
 | |
|                         }
 | |
|                     }
 | |
|                     #endregion
 | |
|                     #region  单位工程
 | |
|                     else if (this.trWBS.SelectedNode.CommandName == "unitProject")
 | |
|                     {
 | |
|                         this.Grid1.Columns[0].HeaderText = "单位工程";
 | |
|                         Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(this.trWBS.SelectedNode.NodeID);
 | |
|                         Model.WbsDetail detail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(unitProject.UnitProjectId, 3, month);
 | |
| 
 | |
|                         if (detail != null)
 | |
|                         {
 | |
|                             List<Model.WbsDetail> totalDetails = BLL.WbsDetailService.GetTotalWbsDetailsByYearMonth(unitProject.UnitProjectId, 3, month);
 | |
|                             Model.WBSSetItem item = new Model.WBSSetItem();
 | |
|                             item.Id = unitProject.UnitProjectId;
 | |
|                             item.WbsDetailId = detail.WbsDetailId;
 | |
|                             item.Code = unitProject.UnitProjectCode;
 | |
|                             item.Name = unitProject.UnitProjectName;
 | |
|                             item.Weights = unitProject.Weights;
 | |
|                             item.WeightsMoney = unitProject.WeightsMoney;
 | |
|                             item.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(item.WeightsMoney), 2).ToString();
 | |
|                             if (detail.CompleteValue != null)
 | |
|                             {
 | |
|                                 item.CompleteValue = decimal.Round(Convert.ToDecimal(detail.CompleteValue), 2);
 | |
|                                 item.CompleteValueRate = decimal.Round(Convert.ToDecimal(detail.CompleteValue) / Convert.ToDecimal(item.WeightsMoney) * 100, 2);
 | |
|                             }
 | |
|                             item.CompleteValueTotal = decimal.Round(Convert.ToDecimal(totalDetails.Sum(x => x.CompleteValue ?? 0)), 2);
 | |
|                             if (item.WeightsMoney > 0)
 | |
|                             {
 | |
|                                 item.CompleteValueRateTotal = decimal.Round(Convert.ToDecimal(item.CompleteValueTotal) / Convert.ToDecimal(item.WeightsMoney) * 100, 2);
 | |
|                             }
 | |
|                             if (detail.RealValue != null)
 | |
|                             {
 | |
|                                 item.RealValue = decimal.Round(Convert.ToDecimal(detail.RealValue), 2);
 | |
|                             }
 | |
|                             item.RealValueTotal = decimal.Round(Convert.ToDecimal(totalDetails.Sum(x => x.RealValue ?? 0)), 2);
 | |
|                             item.StartDate = unitProject.StartDate;
 | |
|                             item.EndDate = unitProject.EndDate;
 | |
|                             item.PlanValue = decimal.Round(Convert.ToDecimal(detail.PlanValue ?? 0), 2);
 | |
|                             item.PlanValueTotal = decimal.Round(Convert.ToDecimal(totalDetails.Sum(x => x.PlanValue ?? 0)), 2);
 | |
|                             if (item.WeightsMoney > 0)
 | |
|                             {
 | |
|                                 item.PlanValueRateTotal = decimal.Round(Convert.ToDecimal(item.PlanValueTotal) / Convert.ToDecimal(item.WeightsMoney) * 100, 2);
 | |
|                             }
 | |
|                             item.SVValue = item.CompleteValueTotal - item.PlanValueTotal;
 | |
|                             item.CVValue = item.CompleteValueTotal - item.RealValueTotal;
 | |
|                             items.Add(item);
 | |
|                         }
 | |
|                         if (unitProject.UnitProjectName == "质量行为")
 | |
|                         {
 | |
|                             if (month >= minDate && month <= maxDate)
 | |
|                             {
 | |
|                                 if (BLL.CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, Const.WBSCompleteAuditMenuId, Const.BtnSave))
 | |
|                                 {
 | |
|                                     this.btnSave1.Hidden = false;
 | |
|                                 }
 | |
|                             }
 | |
|                             var childWbsSets = 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;
 | |
|                             RenderField columnCompleteValue = Grid1.FindColumn("CompleteValue") as RenderField;
 | |
|                             RenderField columnCompleteValueRate = Grid1.FindColumn("CompleteValueRate") as RenderField;
 | |
|                             RenderField columnRealValue = Grid1.FindColumn("RealValue") as RenderField;
 | |
|                             columnCompleteValue.EnableColumnEdit = true;
 | |
|                             columnCompleteValueRate.EnableColumnEdit = true;
 | |
|                             columnRealValue.EnableColumnEdit = true;
 | |
|                             foreach (var childWbsSet in childWbsSets)
 | |
|                             {
 | |
|                                 Model.WbsDetail childDetail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(childWbsSet.WbsSetId, 4, month);
 | |
|                                 if (childDetail != null)
 | |
|                                 {
 | |
|                                     List<Model.WbsDetail> totalChildDetails = BLL.WbsDetailService.GetTotalWbsDetailsByYearMonth(childWbsSet.WbsSetId, 4, month);
 | |
|                                     Model.WBSSetItem item = new Model.WBSSetItem();
 | |
|                                     item.Id = childWbsSet.WbsSetId;
 | |
|                                     item.WbsDetailId = childDetail.WbsDetailId;
 | |
|                                     item.Code = childWbsSet.WbsSetCode;
 | |
|                                     item.Name = childWbsSet.WbsSetName;
 | |
|                                     item.Weights = childWbsSet.Weights;
 | |
|                                     item.WeightsMoney = childWbsSet.WeightsMoney;
 | |
|                                     item.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(item.WeightsMoney), 2).ToString();
 | |
|                                     if (childDetail.CompleteValue != null)
 | |
|                                     {
 | |
|                                         item.CompleteValue = decimal.Round(Convert.ToDecimal(childDetail.CompleteValue), 2);
 | |
|                                         item.CompleteValueRate = decimal.Round(Convert.ToDecimal(childDetail.CompleteValue) / Convert.ToDecimal(item.WeightsMoney) * 100, 2);
 | |
|                                     }
 | |
|                                     item.CompleteValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.CompleteValue ?? 0)), 2);
 | |
|                                     item.CompleteValueTotalPart = item.CompleteValueTotal - (childDetail.CompleteValue ?? 0);
 | |
|                                     if (item.WeightsMoney > 0)
 | |
|                                     {
 | |
|                                         item.CompleteValueRateTotal = decimal.Round(Convert.ToDecimal(item.CompleteValueTotal) / Convert.ToDecimal(item.WeightsMoney) * 100, 2);
 | |
|                                     }
 | |
|                                     if (childDetail.RealValue != null)
 | |
|                                     {
 | |
|                                         item.RealValue = decimal.Round(Convert.ToDecimal(childDetail.RealValue), 2);
 | |
|                                     }
 | |
|                                     item.RealValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.RealValue ?? 0)), 2);
 | |
|                                     item.RealValueTotalPart = item.RealValueTotal - (childDetail.RealValue ?? 0);
 | |
|                                     item.StartDate = childWbsSet.StartDate;
 | |
|                                     item.EndDate = childWbsSet.EndDate;
 | |
|                                     item.PlanValue = decimal.Round(Convert.ToDecimal(childDetail.PlanValue ?? 0), 2);
 | |
|                                     item.PlanValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.PlanValue ?? 0)), 2);
 | |
|                                     if (item.WeightsMoney > 0)
 | |
|                                     {
 | |
|                                         item.PlanValueRateTotal = decimal.Round(Convert.ToDecimal(item.PlanValueTotal) / Convert.ToDecimal(item.WeightsMoney) * 100, 2);
 | |
|                                     }
 | |
|                                     item.SVValue = item.CompleteValueTotal - item.PlanValueTotal;
 | |
|                                     item.CVValue = item.CompleteValueTotal - item.RealValueTotal;
 | |
|                                     items.Add(item);
 | |
|                                 }
 | |
|                             }
 | |
|                         }
 | |
|                         else
 | |
|                         {
 | |
|                             var childUnitProjects = from x in Funs.DB.Wbs_UnitProject where x.SuperUnitProjectId == this.trWBS.SelectedNode.NodeID && x.IsApprove == true orderby x.UnitProjectCode select x;
 | |
|                             if (childUnitProjects.Count() > 0)   //存在子单位工程
 | |
|                             {
 | |
|                                 this.Grid1.Columns[1].HeaderText = "子单位工程";
 | |
|                                 foreach (var childUnitProject in childUnitProjects)
 | |
|                                 {
 | |
|                                     Model.WbsDetail childDetail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(childUnitProject.UnitProjectId, 3, month);
 | |
|                                     if (childDetail != null)
 | |
|                                     {
 | |
|                                         List<Model.WbsDetail> totalChildDetails = BLL.WbsDetailService.GetTotalWbsDetailsByYearMonth(childUnitProject.UnitProjectId, 3, month);
 | |
|                                         Model.WBSSetItem childItem = new Model.WBSSetItem();
 | |
|                                         childItem.Id = childUnitProject.UnitProjectId;
 | |
|                                         childItem.WbsDetailId = childDetail.WbsDetailId;
 | |
|                                         childItem.ChildCode = childUnitProject.UnitProjectCode;
 | |
|                                         childItem.ChildName = childUnitProject.UnitProjectName;
 | |
|                                         childItem.Weights = childUnitProject.Weights;
 | |
|                                         childItem.WeightsMoney = childUnitProject.WeightsMoney;
 | |
|                                         childItem.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(childItem.WeightsMoney), 2).ToString();
 | |
|                                         if (childDetail.CompleteValue != null)
 | |
|                                         {
 | |
|                                             childItem.CompleteValue = decimal.Round(Convert.ToDecimal(childDetail.CompleteValue), 2);
 | |
|                                             childItem.CompleteValueRate = decimal.Round(Convert.ToDecimal(childDetail.CompleteValue) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                         }
 | |
|                                         childItem.CompleteValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.CompleteValue ?? 0)), 2);
 | |
|                                         if (childItem.WeightsMoney > 0)
 | |
|                                         {
 | |
|                                             childItem.CompleteValueRateTotal = decimal.Round(Convert.ToDecimal(childItem.CompleteValueTotal) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                         }
 | |
|                                         if (childDetail.RealValue != null)
 | |
|                                         {
 | |
|                                             childItem.RealValue = decimal.Round(Convert.ToDecimal(childDetail.RealValue), 2);
 | |
|                                         }
 | |
|                                         childItem.RealValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.RealValue ?? 0)), 2);
 | |
|                                         childItem.StartDate = childUnitProject.StartDate;
 | |
|                                         childItem.EndDate = childUnitProject.EndDate;
 | |
|                                         childItem.PlanValue = decimal.Round(Convert.ToDecimal(childDetail.PlanValue ?? 0), 2);
 | |
|                                         childItem.PlanValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.PlanValue ?? 0)), 2);
 | |
|                                         if (childItem.WeightsMoney > 0)
 | |
|                                         {
 | |
|                                             childItem.PlanValueRateTotal = decimal.Round(Convert.ToDecimal(childItem.PlanValueTotal) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                         }
 | |
|                                         childItem.SVValue = childItem.CompleteValueTotal - childItem.PlanValueTotal;
 | |
|                                         childItem.CVValue = childItem.CompleteValueTotal - childItem.RealValueTotal;
 | |
|                                         items.Add(childItem);
 | |
|                                     }
 | |
|                                 }
 | |
|                             }
 | |
|                             else   //不存在子单位工程
 | |
|                             {
 | |
|                                 this.Grid1.Columns[1].HeaderText = "分部工程";
 | |
|                                 var childWbsSets = from x in Funs.DB.Wbs_WbsSet where x.Flag == 1 && x.UnitProjectId == this.trWBS.SelectedNode.NodeID && x.IsApprove == true orderby x.WbsSetCode select x;
 | |
|                                 foreach (var childWbsSet in childWbsSets)
 | |
|                                 {
 | |
|                                     Model.WbsDetail childDetail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(childWbsSet.WbsSetId, 4, month);
 | |
|                                     if (childDetail != null)
 | |
|                                     {
 | |
|                                         List<Model.WbsDetail> totalChildDetails = BLL.WbsDetailService.GetTotalWbsDetailsByYearMonth(childWbsSet.WbsSetId, 4, month);
 | |
|                                         Model.WBSSetItem childItem = new Model.WBSSetItem();
 | |
|                                         childItem.Id = childWbsSet.WbsSetId;
 | |
|                                         childItem.WbsDetailId = childDetail.WbsDetailId;
 | |
|                                         childItem.ChildCode = childWbsSet.WbsSetCode;
 | |
|                                         childItem.ChildName = childWbsSet.WbsSetName;
 | |
|                                         childItem.Weights = childWbsSet.Weights;
 | |
|                                         childItem.WeightsMoney = childWbsSet.WeightsMoney;
 | |
|                                         childItem.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(childItem.WeightsMoney), 2).ToString();
 | |
|                                         if (childDetail.CompleteValue != null)
 | |
|                                         {
 | |
|                                             childItem.CompleteValue = decimal.Round(Convert.ToDecimal(childDetail.CompleteValue), 2);
 | |
|                                             childItem.CompleteValueRate = decimal.Round(Convert.ToDecimal(childDetail.CompleteValue) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                         }
 | |
|                                         childItem.CompleteValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.CompleteValue ?? 0)), 2);
 | |
|                                         if (childItem.WeightsMoney > 0)
 | |
|                                         {
 | |
|                                             childItem.CompleteValueRateTotal = decimal.Round(Convert.ToDecimal(childItem.CompleteValueTotal) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                         }
 | |
|                                         if (childDetail.RealValue != null)
 | |
|                                         {
 | |
|                                             childItem.RealValue = decimal.Round(Convert.ToDecimal(childDetail.RealValue), 2);
 | |
|                                         }
 | |
|                                         childItem.RealValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.RealValue ?? 0)), 2);
 | |
|                                         childItem.StartDate = childWbsSet.StartDate;
 | |
|                                         childItem.EndDate = childWbsSet.EndDate;
 | |
|                                         childItem.PlanValue = decimal.Round(Convert.ToDecimal(childDetail.PlanValue ?? 0), 2);
 | |
|                                         childItem.PlanValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.PlanValue ?? 0)), 2);
 | |
|                                         if (childItem.WeightsMoney > 0)
 | |
|                                         {
 | |
|                                             childItem.PlanValueRateTotal = decimal.Round(Convert.ToDecimal(childItem.PlanValueTotal) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                         }
 | |
|                                         childItem.SVValue = childItem.CompleteValueTotal - childItem.PlanValueTotal;
 | |
|                                         childItem.CVValue = childItem.CompleteValueTotal - childItem.RealValueTotal;
 | |
|                                         items.Add(childItem);
 | |
|                                     }
 | |
|                                 }
 | |
|                             }
 | |
|                         }
 | |
|                     }
 | |
|                     #endregion
 | |
|                     #region  专业
 | |
|                     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.WbsDetail detail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(cnProfession.CnProfessionId, 2, month);
 | |
|                         if (detail != null)
 | |
|                         {
 | |
|                             List<Model.WbsDetail> totalDetails = BLL.WbsDetailService.GetTotalWbsDetailsByYearMonth(cnProfession.CnProfessionId, 2, month);
 | |
|                             Model.WBSSetItem item = new Model.WBSSetItem();
 | |
|                             item.Id = cnProfession.CnProfessionId;
 | |
|                             item.WbsDetailId = detail.WbsDetailId;
 | |
|                             item.Code = cnProfession.CnProfessionCode;
 | |
|                             item.Name = cnProfession.CnProfessionName;
 | |
|                             item.Weights = cnProfession.Weights;
 | |
|                             item.WeightsMoney = cnProfession.WeightsMoney;
 | |
|                             item.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(item.WeightsMoney), 2).ToString();
 | |
|                             if (detail.CompleteValue != null)
 | |
|                             {
 | |
|                                 item.CompleteValue = decimal.Round(Convert.ToDecimal(detail.CompleteValue), 2);
 | |
|                                 item.CompleteValueRate = decimal.Round(Convert.ToDecimal(detail.CompleteValue) / Convert.ToDecimal(item.WeightsMoney) * 100, 2);
 | |
|                             }
 | |
|                             item.CompleteValueTotal = decimal.Round(Convert.ToDecimal(totalDetails.Sum(x => x.CompleteValue ?? 0)), 2);
 | |
|                             if (item.WeightsMoney > 0)
 | |
|                             {
 | |
|                                 item.CompleteValueRateTotal = decimal.Round(Convert.ToDecimal(item.CompleteValueTotal) / Convert.ToDecimal(item.WeightsMoney) * 100, 2);
 | |
|                             }
 | |
|                             if (detail.RealValue != null)
 | |
|                             {
 | |
|                                 item.RealValue = decimal.Round(Convert.ToDecimal(detail.RealValue), 2);
 | |
|                             }
 | |
|                             item.RealValueTotal = decimal.Round(Convert.ToDecimal(totalDetails.Sum(x => x.RealValue ?? 0)), 2);
 | |
|                             item.StartDate = cnProfession.StartDate;
 | |
|                             item.EndDate = cnProfession.EndDate;
 | |
|                             item.PlanValue = decimal.Round(Convert.ToDecimal(detail.PlanValue ?? 0), 2);
 | |
|                             item.PlanValueTotal = decimal.Round(Convert.ToDecimal(totalDetails.Sum(x => x.PlanValue ?? 0)), 2);
 | |
|                             if (item.WeightsMoney > 0)
 | |
|                             {
 | |
|                                 item.PlanValueRateTotal = decimal.Round(Convert.ToDecimal(item.PlanValueTotal) / Convert.ToDecimal(item.WeightsMoney) * 100, 2);
 | |
|                             }
 | |
|                             item.SVValue = item.CompleteValueTotal - item.PlanValueTotal;
 | |
|                             item.CVValue = item.CompleteValueTotal - item.RealValueTotal;
 | |
|                             items.Add(item);
 | |
|                             var childUnitProjects = from x in Funs.DB.Wbs_UnitProject where x.CnProfessionId == this.trWBS.SelectedNodeID && x.SuperUnitProjectId == null && x.IsApprove == true orderby x.UnitProjectCode select x;
 | |
|                             foreach (var childUnitProject in childUnitProjects)
 | |
|                             {
 | |
|                                 Model.WbsDetail childDetail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(childUnitProject.UnitProjectId, 3, month);
 | |
|                                 if (childDetail != null)
 | |
|                                 {
 | |
|                                     List<Model.WbsDetail> totalChildDetails = BLL.WbsDetailService.GetTotalWbsDetailsByYearMonth(childUnitProject.UnitProjectId, 3, month);
 | |
|                                     Model.WBSSetItem childItem = new Model.WBSSetItem();
 | |
|                                     childItem.Id = childUnitProject.UnitProjectId;
 | |
|                                     childItem.WbsDetailId = childDetail.WbsDetailId;
 | |
|                                     childItem.ChildCode = childUnitProject.UnitProjectCode;
 | |
|                                     childItem.ChildName = childUnitProject.UnitProjectName;
 | |
|                                     childItem.Weights = childUnitProject.Weights;
 | |
|                                     childItem.WeightsMoney = childUnitProject.WeightsMoney;
 | |
|                                     childItem.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(childItem.WeightsMoney), 2).ToString();
 | |
|                                     if (childDetail.CompleteValue != null)
 | |
|                                     {
 | |
|                                         childItem.CompleteValue = decimal.Round(Convert.ToDecimal(childDetail.CompleteValue), 2);
 | |
|                                         childItem.CompleteValueRate = decimal.Round(Convert.ToDecimal(childDetail.CompleteValue) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                     }
 | |
|                                     childItem.CompleteValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.CompleteValue ?? 0)), 2);
 | |
|                                     if (childItem.WeightsMoney > 0)
 | |
|                                     {
 | |
|                                         childItem.CompleteValueRateTotal = decimal.Round(Convert.ToDecimal(childItem.CompleteValueTotal) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                     }
 | |
|                                     if (childDetail.RealValue != null)
 | |
|                                     {
 | |
|                                         childItem.RealValue = decimal.Round(Convert.ToDecimal(childDetail.RealValue), 2);
 | |
|                                     }
 | |
|                                     childItem.RealValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.RealValue ?? 0)), 2);
 | |
|                                     childItem.StartDate = childUnitProject.StartDate;
 | |
|                                     childItem.EndDate = childUnitProject.EndDate;
 | |
|                                     childItem.PlanValue = decimal.Round(Convert.ToDecimal(childDetail.PlanValue ?? 0), 2);
 | |
|                                     childItem.PlanValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.PlanValue ?? 0)), 2);
 | |
|                                     if (childItem.WeightsMoney > 0)
 | |
|                                     {
 | |
|                                         childItem.PlanValueRateTotal = decimal.Round(Convert.ToDecimal(childItem.PlanValueTotal) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                     }
 | |
|                                     childItem.SVValue = childItem.CompleteValueTotal - childItem.PlanValueTotal;
 | |
|                                     childItem.CVValue = childItem.CompleteValueTotal - childItem.RealValueTotal;
 | |
|                                     items.Add(childItem);
 | |
|                                 }
 | |
|                             }
 | |
|                         }
 | |
|                     }
 | |
|                     #endregion
 | |
|                     #region  装置
 | |
|                     else 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.SelectedNode.NodeID);
 | |
|                         Model.WbsDetail detail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(installation.InstallationId, 1, month);
 | |
|                         if (detail != null)
 | |
|                         {
 | |
|                             List<Model.WbsDetail> totalDetails = BLL.WbsDetailService.GetTotalWbsDetailsByYearMonth(installation.InstallationId, 1, month);
 | |
|                             Model.WBSSetItem item = new Model.WBSSetItem();
 | |
|                             item.Id = installation.InstallationId;
 | |
|                             item.WbsDetailId = detail.WbsDetailId;
 | |
|                             item.Code = installation.InstallationCode;
 | |
|                             item.Name = installation.InstallationName;
 | |
|                             item.Weights = installation.Weights;
 | |
|                             item.WeightsMoney = installation.WeightsMoney;
 | |
|                             item.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(item.WeightsMoney), 2).ToString();
 | |
|                             if (detail.CompleteValue != null)
 | |
|                             {
 | |
|                                 item.CompleteValue = decimal.Round(Convert.ToDecimal(detail.CompleteValue), 2);
 | |
|                                 item.CompleteValueRate = decimal.Round(Convert.ToDecimal(detail.CompleteValue) / Convert.ToDecimal(item.WeightsMoney) * 100, 2);
 | |
|                             }
 | |
|                             item.CompleteValueTotal = decimal.Round(Convert.ToDecimal(totalDetails.Sum(x => x.CompleteValue ?? 0)), 2);
 | |
|                             if (item.WeightsMoney > 0)
 | |
|                             {
 | |
|                                 item.CompleteValueRateTotal = decimal.Round(Convert.ToDecimal(item.CompleteValueTotal) / Convert.ToDecimal(item.WeightsMoney) * 100, 2);
 | |
|                             }
 | |
|                             if (detail.RealValue != null)
 | |
|                             {
 | |
|                                 item.RealValue = decimal.Round(Convert.ToDecimal(detail.RealValue), 2);
 | |
|                             }
 | |
|                             item.RealValueTotal = decimal.Round(Convert.ToDecimal(totalDetails.Sum(x => x.RealValue ?? 0)), 2);
 | |
|                             item.StartDate = installation.StartDate;
 | |
|                             item.EndDate = installation.EndDate;
 | |
|                             item.PlanValue = decimal.Round(Convert.ToDecimal(detail.PlanValue ?? 0), 2);
 | |
|                             item.PlanValueTotal = decimal.Round(Convert.ToDecimal(totalDetails.Sum(x => x.PlanValue ?? 0)), 2);
 | |
|                             if (item.WeightsMoney > 0)
 | |
|                             {
 | |
|                                 item.PlanValueRateTotal = decimal.Round(Convert.ToDecimal(item.PlanValueTotal) / Convert.ToDecimal(item.WeightsMoney) * 100, 2);
 | |
|                             }
 | |
|                             item.SVValue = item.CompleteValueTotal - item.PlanValueTotal;
 | |
|                             item.CVValue = item.CompleteValueTotal - item.RealValueTotal;
 | |
|                             items.Add(item);
 | |
|                             if (installation.SuperInstallationId != "0")   //工序或主项
 | |
|                             {
 | |
|                                 var cnProfessions = from x in Funs.DB.WBS_CnProfession where x.InstallationId == this.trWBS.SelectedNodeID orderby x.OldId select x;
 | |
|                                 if (cnProfessions.Count() > 0)    //工序
 | |
|                                 {
 | |
|                                     foreach (var cnProfession in cnProfessions)
 | |
|                                     {
 | |
|                                         #region  计划日期已结束但尚未完成的项增加当月记录
 | |
|                                         var wbsSets = from x in Funs.DB.Wbs_WbsSet
 | |
|                                                       where x.CnProfessionId == cnProfession.CnProfessionId && x.IsApprove == true
 | |
|                                                       select x;
 | |
|                                         //末级节点计划日期已结束但尚未完成的项集合
 | |
|                                         List<Model.Wbs_WbsSet> addDetailWbsSets = new List<Model.Wbs_WbsSet>();
 | |
|                                         foreach (var wbsSet in wbsSets)
 | |
|                                         {
 | |
|                                             if (BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(wbsSet.WbsSetId).Count == 0)   //末级节点
 | |
|                                             {
 | |
|                                                 var details = from x in wbsDetails
 | |
|                                                               where x.ToWbs == wbsSet.WbsSetId && x.IsCompleteApprove == null
 | |
|                                                               orderby x.Months descending
 | |
|                                                               select x;
 | |
|                                                 if (details.Count() == 0)  //所有月份记录都已审核
 | |
|                                                 {
 | |
|                                                     //累计完成值
 | |
|                                                     var completeValueList = from x in wbsDetails
 | |
|                                                                             where x.ToWbs == wbsSet.WbsSetId
 | |
|                                                                             select x.CompleteValue;
 | |
|                                                     decimal totalCompleteValue = 0;
 | |
|                                                     foreach (var completeValue in completeValueList)
 | |
|                                                     {
 | |
|                                                         totalCompleteValue += completeValue ?? 0;
 | |
|                                                     }
 | |
|                                                     if (totalCompleteValue < wbsSet.WeightsMoney)   //累计完成值小于总计划值
 | |
|                                                     {
 | |
|                                                         addDetailWbsSets.Add(wbsSet);
 | |
|                                                     }
 | |
|                                                 }
 | |
|                                             }
 | |
|                                         }
 | |
|                                         foreach (var addDetailWbsSet in addDetailWbsSets)
 | |
|                                         {
 | |
|                                             Model.WbsDetail newWbsDetail = new Model.WbsDetail();
 | |
|                                             newWbsDetail.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
 | |
|                                             newWbsDetail.ToWbs = addDetailWbsSet.WbsSetId;
 | |
|                                             newWbsDetail.ToFlag = 4;
 | |
|                                             newWbsDetail.Way = addDetailWbsSet.Way;
 | |
|                                             newWbsDetail.Months = month;
 | |
|                                             newWbsDetail.PlanValue = 0;
 | |
|                                             newWbsDetail.PlanValueRate = 0;
 | |
|                                             newWbsDetail.CompleteValue = 0;
 | |
|                                             newWbsDetail.CompleteValueRate = 0;
 | |
|                                             newWbsDetail.RealValue = 0;
 | |
|                                             newWbsDetail.RealValueRate = 0;
 | |
|                                             if (BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(addDetailWbsSet.WbsSetId, 4, month) == null)
 | |
|                                             {
 | |
|                                                 BLL.WbsDetailService.AddWbsDetail(newWbsDetail);
 | |
|                                                 //循环保存所有上级分部分项对应记录
 | |
|                                                 AddWbsParentDetail(month, 0, addDetailWbsSet.SuperWbsSetId, 0, 0);
 | |
|                                                 //保存对应单位工程及子单位工程
 | |
|                                                 Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(addDetailWbsSet.UnitProjectId);
 | |
|                                                 Model.WbsDetail detailUnitProject = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(addDetailWbsSet.UnitProjectId, 3, month);
 | |
|                                                 if (unitProject != null)
 | |
|                                                 {
 | |
|                                                     if (detailUnitProject == null)
 | |
|                                                     {
 | |
|                                                         Model.WbsDetail newDetailUnitProject = new Model.WbsDetail();
 | |
|                                                         newDetailUnitProject.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
 | |
|                                                         newDetailUnitProject.ToWbs = addDetailWbsSet.UnitProjectId;
 | |
|                                                         newDetailUnitProject.ToFlag = 3;    //单位工程
 | |
|                                                         newDetailUnitProject.Way = "A";
 | |
|                                                         newDetailUnitProject.Months = month;
 | |
|                                                         newDetailUnitProject.PlanValue = 0;
 | |
|                                                         newDetailUnitProject.PlanValueRate = 0;
 | |
|                                                         BLL.WbsDetailService.AddWbsDetail(newDetailUnitProject);
 | |
|                                                     }
 | |
|                                                     else
 | |
|                                                     {
 | |
|                                                         detailUnitProject.PlanValue += 0;
 | |
|                                                         detailUnitProject.PlanValueRate = 0;
 | |
|                                                         BLL.WbsDetailService.UpdateWbsDetail(detailUnitProject);
 | |
|                                                     }
 | |
|                                                     if (unitProject.SuperUnitProjectId != null)   //存在单位工程
 | |
|                                                     {
 | |
|                                                         Model.Wbs_UnitProject parentUnitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(unitProject.SuperUnitProjectId);
 | |
|                                                         Model.WbsDetail detailParentUnitProject = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(parentUnitProject.UnitProjectId, 3, month);
 | |
|                                                         if (detailParentUnitProject == null)
 | |
|                                                         {
 | |
|                                                             Model.WbsDetail newDetailParentUnitProject = new Model.WbsDetail();
 | |
|                                                             newDetailParentUnitProject.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
 | |
|                                                             newDetailParentUnitProject.ToWbs = parentUnitProject.UnitProjectId;
 | |
|                                                             newDetailParentUnitProject.ToFlag = 3;   //单位工程
 | |
|                                                             newDetailParentUnitProject.Way = "A";
 | |
|                                                             newDetailParentUnitProject.Months = month;
 | |
|                                                             newDetailParentUnitProject.PlanValue = 0;
 | |
|                                                             newDetailParentUnitProject.PlanValueRate = 0;
 | |
|                                                             BLL.WbsDetailService.AddWbsDetail(newDetailParentUnitProject);
 | |
|                                                         }
 | |
|                                                         else
 | |
|                                                         {
 | |
|                                                             detailParentUnitProject.PlanValue += 0;
 | |
|                                                             detailParentUnitProject.PlanValueRate = 0;
 | |
|                                                             BLL.WbsDetailService.UpdateWbsDetail(detailParentUnitProject);
 | |
|                                                         }
 | |
|                                                     }
 | |
|                                                 }
 | |
|                                                 //保存对应专业
 | |
|                                                 if (cnProfession != null)
 | |
|                                                 {
 | |
|                                                     Model.WbsDetail detailCnProfession = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(cnProfession.CnProfessionId, 2, month);
 | |
|                                                     if (detailCnProfession == null)
 | |
|                                                     {
 | |
|                                                         Model.WbsDetail newDetailCnProfession = new Model.WbsDetail();
 | |
|                                                         newDetailCnProfession.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
 | |
|                                                         newDetailCnProfession.ToWbs = cnProfession.CnProfessionId;
 | |
|                                                         newDetailCnProfession.ToFlag = 2;  //专业
 | |
|                                                         newDetailCnProfession.Way = "A";
 | |
|                                                         newDetailCnProfession.Months = month;
 | |
|                                                         newDetailCnProfession.PlanValue = 0;
 | |
|                                                         newDetailCnProfession.PlanValueRate = 0;
 | |
|                                                         BLL.WbsDetailService.AddWbsDetail(newDetailCnProfession);
 | |
|                                                     }
 | |
|                                                     else
 | |
|                                                     {
 | |
|                                                         detailCnProfession.PlanValue += 0;
 | |
|                                                         detailCnProfession.PlanValueRate = 0;
 | |
|                                                         BLL.WbsDetailService.UpdateWbsDetail(detailCnProfession);
 | |
|                                                     }
 | |
|                                                     //保存对应装置
 | |
|                                                     if (installation != null)
 | |
|                                                     {
 | |
|                                                         Model.WbsDetail detailInstallation = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(installation.InstallationId, 1, month);
 | |
|                                                         if (detailInstallation == null)
 | |
|                                                         {
 | |
|                                                             Model.WbsDetail newDetailInstallation = new Model.WbsDetail();
 | |
|                                                             newDetailInstallation.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
 | |
|                                                             newDetailInstallation.ToWbs = installation.InstallationId;
 | |
|                                                             newDetailInstallation.ToFlag = 1;  //装置
 | |
|                                                             newDetailInstallation.Way = "A";
 | |
|                                                             newDetailInstallation.Months = month;
 | |
|                                                             newDetailInstallation.PlanValue = 0;
 | |
|                                                             newDetailInstallation.PlanValueRate = 0;
 | |
|                                                             BLL.WbsDetailService.AddWbsDetail(newDetailInstallation);
 | |
|                                                         }
 | |
|                                                         else
 | |
|                                                         {
 | |
|                                                             detailInstallation.PlanValue += 0;
 | |
|                                                             detailInstallation.PlanValueRate = 0;
 | |
|                                                             BLL.WbsDetailService.UpdateWbsDetail(detailInstallation);
 | |
|                                                         }
 | |
|                                                     }
 | |
|                                                 }
 | |
|                                             }
 | |
|                                         }
 | |
|                                         #endregion
 | |
|                                         Model.WbsDetail childDetail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(cnProfession.CnProfessionId, 2, month);
 | |
|                                         if (childDetail != null)
 | |
|                                         {
 | |
|                                             List<Model.WbsDetail> totalChildDetails = BLL.WbsDetailService.GetTotalWbsDetailsByYearMonth(cnProfession.CnProfessionId, 2, month);
 | |
|                                             Model.WBSSetItem childItem = new Model.WBSSetItem();
 | |
|                                             childItem.Id = cnProfession.CnProfessionId;
 | |
|                                             childItem.WbsDetailId = childDetail.WbsDetailId;
 | |
|                                             childItem.ChildCode = cnProfession.CnProfessionCode;
 | |
|                                             childItem.ChildName = cnProfession.CnProfessionName;
 | |
|                                             childItem.Weights = cnProfession.Weights;
 | |
|                                             childItem.WeightsMoney = cnProfession.WeightsMoney;
 | |
|                                             childItem.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(childItem.WeightsMoney), 2).ToString();
 | |
|                                             if (childDetail.CompleteValue != null)
 | |
|                                             {
 | |
|                                                 childItem.CompleteValue = decimal.Round(Convert.ToDecimal(childDetail.CompleteValue), 2);
 | |
|                                                 childItem.CompleteValueRate = decimal.Round(Convert.ToDecimal(childDetail.CompleteValue) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                             }
 | |
|                                             childItem.CompleteValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.CompleteValue ?? 0)), 2);
 | |
|                                             if (childItem.WeightsMoney > 0)
 | |
|                                             {
 | |
|                                                 childItem.CompleteValueRateTotal = decimal.Round(Convert.ToDecimal(childItem.CompleteValueTotal) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                             }
 | |
|                                             if (childDetail.RealValue != null)
 | |
|                                             {
 | |
|                                                 childItem.RealValue = decimal.Round(Convert.ToDecimal(childDetail.RealValue), 2);
 | |
|                                             }
 | |
|                                             childItem.RealValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.RealValue ?? 0)), 2);
 | |
|                                             childItem.StartDate = cnProfession.StartDate;
 | |
|                                             childItem.EndDate = cnProfession.EndDate;
 | |
|                                             childItem.PlanValue = decimal.Round(Convert.ToDecimal(childDetail.PlanValue ?? 0), 2);
 | |
|                                             childItem.PlanValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.PlanValue ?? 0)), 2);
 | |
|                                             if (childItem.WeightsMoney > 0)
 | |
|                                             {
 | |
|                                                 childItem.PlanValueRateTotal = decimal.Round(Convert.ToDecimal(childItem.PlanValueTotal) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                             }
 | |
|                                             childItem.SVValue = childItem.CompleteValueTotal - childItem.PlanValueTotal;
 | |
|                                             childItem.CVValue = childItem.CompleteValueTotal - childItem.RealValueTotal;
 | |
|                                             items.Add(childItem);
 | |
|                                         }
 | |
|                                     }
 | |
|                                 }
 | |
|                                 else
 | |
|                                 {
 | |
|                                     var installation2s = from x in Funs.DB.Project_Installation where x.SuperInstallationId == this.trWBS.SelectedNodeID orderby x.InstallationCode select x;
 | |
|                                     foreach (var installation2 in installation2s)
 | |
|                                     {
 | |
|                                         Model.WbsDetail childDetail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(installation2.InstallationId, 1, month);
 | |
|                                         if (childDetail != null)
 | |
|                                         {
 | |
|                                             List<Model.WbsDetail> totalChildDetails = BLL.WbsDetailService.GetTotalWbsDetailsByYearMonth(installation2.InstallationId, 1, month);
 | |
|                                             Model.WBSSetItem childItem = new Model.WBSSetItem();
 | |
|                                             childItem.Id = installation2.InstallationId;
 | |
|                                             childItem.WbsDetailId = childDetail.WbsDetailId;
 | |
|                                             childItem.ChildCode = installation2.InstallationCode;
 | |
|                                             childItem.ChildName = installation2.InstallationName;
 | |
|                                             childItem.Weights = installation2.Weights;
 | |
|                                             childItem.WeightsMoney = installation2.WeightsMoney;
 | |
|                                             childItem.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(childItem.WeightsMoney), 2).ToString();
 | |
|                                             if (childDetail.CompleteValue != null)
 | |
|                                             {
 | |
|                                                 childItem.CompleteValue = decimal.Round(Convert.ToDecimal(childDetail.CompleteValue), 2);
 | |
|                                                 childItem.CompleteValueRate = decimal.Round(Convert.ToDecimal(childDetail.CompleteValue) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                             }
 | |
|                                             childItem.CompleteValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.CompleteValue ?? 0)), 2);
 | |
|                                             if (childItem.WeightsMoney > 0)
 | |
|                                             {
 | |
|                                                 childItem.CompleteValueRateTotal = decimal.Round(Convert.ToDecimal(childItem.CompleteValueTotal) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                             }
 | |
|                                             if (childDetail.RealValue != null)
 | |
|                                             {
 | |
|                                                 childItem.RealValue = decimal.Round(Convert.ToDecimal(childDetail.RealValue), 2);
 | |
|                                             }
 | |
|                                             childItem.RealValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.RealValue ?? 0)), 2);
 | |
|                                             childItem.StartDate = installation2.StartDate;
 | |
|                                             childItem.EndDate = installation2.EndDate;
 | |
|                                             childItem.PlanValue = decimal.Round(Convert.ToDecimal(childDetail.PlanValue ?? 0), 2);
 | |
|                                             childItem.PlanValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.PlanValue ?? 0)), 2);
 | |
|                                             if (childItem.WeightsMoney > 0)
 | |
|                                             {
 | |
|                                                 childItem.PlanValueRateTotal = decimal.Round(Convert.ToDecimal(childItem.PlanValueTotal) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                             }
 | |
|                                             childItem.SVValue = childItem.CompleteValueTotal - childItem.PlanValueTotal;
 | |
|                                             childItem.CVValue = childItem.CompleteValueTotal - childItem.RealValueTotal;
 | |
|                                             items.Add(childItem);
 | |
|                                         }
 | |
|                                     }
 | |
|                                 }
 | |
|                             }
 | |
|                             else
 | |
|                             {
 | |
|                                 var installation1s = from x in Funs.DB.Project_Installation where x.SuperInstallationId == this.trWBS.SelectedNodeID orderby x.InstallationCode select x;
 | |
|                                 if (installation1s.Count() > 0)   //普通装置
 | |
|                                 {
 | |
|                                     foreach (var installation1 in installation1s)
 | |
|                                     {
 | |
|                                         Model.WbsDetail childDetail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(installation1.InstallationId, 1, month);
 | |
|                                         if (childDetail != null)
 | |
|                                         {
 | |
|                                             List<Model.WbsDetail> totalChildDetails = BLL.WbsDetailService.GetTotalWbsDetailsByYearMonth(installation1.InstallationId, 1, month);
 | |
|                                             Model.WBSSetItem childItem = new Model.WBSSetItem();
 | |
|                                             childItem.Id = installation1.InstallationId;
 | |
|                                             childItem.WbsDetailId = childDetail.WbsDetailId;
 | |
|                                             childItem.ChildCode = installation1.InstallationCode;
 | |
|                                             childItem.ChildName = installation1.InstallationName;
 | |
|                                             childItem.Weights = installation1.Weights;
 | |
|                                             childItem.WeightsMoney = installation1.WeightsMoney;
 | |
|                                             childItem.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(childItem.WeightsMoney), 2).ToString();
 | |
|                                             if (childDetail.CompleteValue != null)
 | |
|                                             {
 | |
|                                                 childItem.CompleteValue = decimal.Round(Convert.ToDecimal(childDetail.CompleteValue), 2);
 | |
|                                                 childItem.CompleteValueRate = decimal.Round(Convert.ToDecimal(childDetail.CompleteValue) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                             }
 | |
|                                             childItem.CompleteValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.CompleteValue ?? 0)), 2);
 | |
|                                             if (childItem.WeightsMoney > 0)
 | |
|                                             {
 | |
|                                                 childItem.CompleteValueRateTotal = decimal.Round(Convert.ToDecimal(childItem.CompleteValueTotal) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                             }
 | |
|                                             if (childDetail.RealValue != null)
 | |
|                                             {
 | |
|                                                 childItem.RealValue = decimal.Round(Convert.ToDecimal(childDetail.RealValue), 2);
 | |
|                                             }
 | |
|                                             childItem.RealValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.RealValue ?? 0)), 2);
 | |
|                                             childItem.StartDate = installation1.StartDate;
 | |
|                                             childItem.EndDate = installation1.EndDate;
 | |
|                                             childItem.PlanValue = decimal.Round(Convert.ToDecimal(childDetail.PlanValue ?? 0), 2);
 | |
|                                             childItem.PlanValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.PlanValue ?? 0)), 2);
 | |
|                                             if (childItem.WeightsMoney > 0)
 | |
|                                             {
 | |
|                                                 childItem.PlanValueRateTotal = decimal.Round(Convert.ToDecimal(childItem.PlanValueTotal) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                             }
 | |
|                                             childItem.SVValue = childItem.CompleteValueTotal - childItem.PlanValueTotal;
 | |
|                                             childItem.CVValue = childItem.CompleteValueTotal - childItem.RealValueTotal;
 | |
|                                             items.Add(childItem);
 | |
|                                         }
 | |
|                                     }
 | |
|                                 }
 | |
|                                 else   //总图
 | |
|                                 {
 | |
|                                     var unitProjects = from x in Funs.DB.Wbs_UnitProject where x.InstallationId == this.trWBS.SelectedNodeID orderby x.UnitProjectCode select x;
 | |
|                                     foreach (var unitProject in unitProjects)
 | |
|                                     {
 | |
|                                         Model.WbsDetail childDetail = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(unitProject.UnitProjectId, 3, month);
 | |
|                                         if (childDetail != null)
 | |
|                                         {
 | |
|                                             List<Model.WbsDetail> totalChildDetails = BLL.WbsDetailService.GetTotalWbsDetailsByYearMonth(unitProject.UnitProjectId, 3, month);
 | |
|                                             Model.WBSSetItem childItem = new Model.WBSSetItem();
 | |
|                                             childItem.Id = unitProject.UnitProjectId;
 | |
|                                             childItem.WbsDetailId = childDetail.WbsDetailId;
 | |
|                                             childItem.ChildCode = unitProject.UnitProjectCode;
 | |
|                                             childItem.ChildName = unitProject.UnitProjectName;
 | |
|                                             childItem.Weights = unitProject.Weights;
 | |
|                                             childItem.WeightsMoney = unitProject.WeightsMoney;
 | |
|                                             childItem.WeightsMoneyStr = decimal.Round(Convert.ToDecimal(childItem.WeightsMoney), 2).ToString();
 | |
|                                             if (childDetail.CompleteValue != null)
 | |
|                                             {
 | |
|                                                 childItem.CompleteValue = decimal.Round(Convert.ToDecimal(childDetail.CompleteValue), 2);
 | |
|                                                 childItem.CompleteValueRate = decimal.Round(Convert.ToDecimal(childDetail.CompleteValue) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                             }
 | |
|                                             childItem.CompleteValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.CompleteValue ?? 0)), 2);
 | |
|                                             if (childItem.WeightsMoney > 0)
 | |
|                                             {
 | |
|                                                 childItem.CompleteValueRateTotal = decimal.Round(Convert.ToDecimal(childItem.CompleteValueTotal) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                             }
 | |
|                                             if (childDetail.RealValue != null)
 | |
|                                             {
 | |
|                                                 childItem.RealValue = decimal.Round(Convert.ToDecimal(childDetail.RealValue), 2);
 | |
|                                             }
 | |
|                                             childItem.RealValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.RealValue ?? 0)), 2);
 | |
|                                             childItem.StartDate = unitProject.StartDate;
 | |
|                                             childItem.EndDate = unitProject.EndDate;
 | |
|                                             childItem.PlanValue = decimal.Round(Convert.ToDecimal(childDetail.PlanValue ?? 0), 2);
 | |
|                                             childItem.PlanValueTotal = decimal.Round(Convert.ToDecimal(totalChildDetails.Sum(x => x.PlanValue ?? 0)), 2);
 | |
|                                             if (childItem.WeightsMoney > 0)
 | |
|                                             {
 | |
|                                                 childItem.PlanValueRateTotal = decimal.Round(Convert.ToDecimal(childItem.PlanValueTotal) / Convert.ToDecimal(childItem.WeightsMoney) * 100, 2);
 | |
|                                             }
 | |
|                                             childItem.SVValue = childItem.CompleteValueTotal - childItem.PlanValueTotal;
 | |
|                                             childItem.CVValue = childItem.CompleteValueTotal - childItem.RealValueTotal;
 | |
|                                             items.Add(childItem);
 | |
|                                         }
 | |
|                                     }
 | |
|                                 }
 | |
|                             }
 | |
|                         }
 | |
|                     }
 | |
|                     #endregion
 | |
|                     this.Grid1.DataSource = items;
 | |
|                     this.Grid1.DataBind();
 | |
|                     if (this.trWBS.SelectedNode.CommandName == "wbsSet")
 | |
|                     {
 | |
|                         int notEndLevel = 0;    //子级集合中的末级数量
 | |
|                         for (int i = 1; i < this.Grid1.Rows.Count; i++)
 | |
|                         {
 | |
|                             string wbsDetailId = this.Grid1.Rows[i].DataKeys[0].ToString();
 | |
|                             Model.WbsDetail wbsDetail = BLL.WbsDetailService.GetWbsDetailByWbsDetailId(wbsDetailId);
 | |
|                             if (wbsDetail != null)
 | |
|                             {
 | |
|                                 List<Model.Wbs_WbsSet> childWbsSets = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(wbsDetail.ToWbs);
 | |
|                                 if (childWbsSets.Count > 0)
 | |
|                                 {
 | |
|                                     Grid1.Rows[i].CellCssClasses[14] = "f-grid-cell-uneditable";
 | |
|                                     Grid1.Rows[i].CellCssClasses[15] = "f-grid-cell-uneditable";
 | |
|                                     Grid1.Rows[i].CellCssClasses[19] = "f-grid-cell-uneditable";
 | |
|                                     notEndLevel++;
 | |
|                                 }
 | |
|                             }
 | |
|                         }
 | |
|                         if (notEndLevel == (this.Grid1.Rows.Count - 1))       //所有grid子集项均为含有末级的项
 | |
|                         {
 | |
|                             showSave = false;
 | |
|                         }
 | |
|                         if (showSave)
 | |
|                         {
 | |
|                             this.btnSave1.Hidden = false;
 | |
|                         }
 | |
|                     }
 | |
|                     for (int i = 1; i < this.Grid1.Rows.Count; i++)
 | |
|                     {
 | |
| 
 | |
|                         if ((Funs.GetNewDecimalOrZero(Grid1.Rows[i].Values[30].ToString()) + Funs.GetNewDecimalOrZero(Grid1.Rows[i].Values[14].ToString())) < Funs.GetNewDecimalOrZero(Grid1.Rows[i].Values[29].ToString()) && Convert.ToDateTime(Grid1.Rows[i].Values[26].ToString()) < month)  //计划已结束但尚未完成的项红色提醒
 | |
|                         {
 | |
|                             Grid1.Rows[i].RowCssClass = "red";
 | |
|                         }
 | |
|                         if (Convert.ToDateTime(Grid1.Rows[i].Values[25].ToString()) >= month.AddMonths(1))    //计划尚未开始的项底色为灰
 | |
|                         {
 | |
|                             Grid1.Rows[i].RowCssClass = "hui";
 | |
|                         }
 | |
|                         if ((Funs.GetNewDecimalOrZero(Grid1.Rows[i].Values[30].ToString()) + Funs.GetNewDecimalOrZero(Grid1.Rows[i].Values[14].ToString())) == Funs.GetNewDecimalOrZero(Grid1.Rows[i].Values[29].ToString()))    ////之前累计完成值+当月值等于总计划费用的项绿色提醒
 | |
|                         {
 | |
|                             Grid1.Rows[i].RowCssClass = "green";
 | |
|                         }
 | |
|                     }
 | |
|                     for (int i = 0; i < this.Grid1.Rows.Count; i++)
 | |
|                     {
 | |
|                         if (i == 0)
 | |
|                         {
 | |
|                             Grid1.Rows[i].CellCssClasses[12] = "f-grid-cell-uneditable";
 | |
|                         }
 | |
|                         Grid1.Rows[i].CellCssClasses[14] = "f-grid-cell-uneditable";
 | |
|                         Grid1.Rows[i].CellCssClasses[15] = "f-grid-cell-uneditable";
 | |
|                         Grid1.Rows[i].CellCssClasses[19] = "f-grid-cell-uneditable";
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 Alert.ShowInTop("请选择月份!", MessageBoxIcon.Warning);
 | |
|                 return;
 | |
|             }
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region  增加分部分项
 | |
|         /// <summary>
 | |
|         /// 增加分部分项
 | |
|         /// </summary>
 | |
|         /// <param name="years"></param>
 | |
|         /// <param name="months"></param>
 | |
|         /// <param name="planValue"></param>
 | |
|         /// <param name="parentId"></param>
 | |
|         private void AddWbsParentDetail(DateTime months, decimal? planValue, string parentId, decimal? completeValue, decimal? realValue)
 | |
|         {
 | |
|             Model.Wbs_WbsSet parentWbsSet1 = BLL.WbsSetService.GetWbsSetByWbsSetId(parentId);
 | |
|             if (parentWbsSet1 != null)
 | |
|             {
 | |
|                 if (parentWbsSet1.WeightsMoney != null)
 | |
|                 {
 | |
|                     if (parentWbsSet1.SuperWbsSetId != null)   //父节点不是分部节点
 | |
|                     {
 | |
|                         Model.WbsDetail detail1 = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(parentWbsSet1.WbsSetId, 4, months);
 | |
|                         if (detail1 == null)
 | |
|                         {
 | |
|                             Model.WbsDetail newDetail1 = new Model.WbsDetail();
 | |
|                             newDetail1.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
 | |
|                             newDetail1.ToWbs = parentWbsSet1.WbsSetId;
 | |
|                             newDetail1.ToFlag = 4;
 | |
|                             newDetail1.Way = parentWbsSet1.Way;
 | |
|                             newDetail1.Months = months;
 | |
|                             newDetail1.PlanValue = planValue ?? 0;
 | |
|                             newDetail1.CompleteValue = completeValue ?? 0;
 | |
|                             newDetail1.RealValue = realValue ?? 0;
 | |
|                             if (parentWbsSet1.WeightsMoney != null)
 | |
|                             {
 | |
|                                 newDetail1.PlanValueRate = decimal.Round(Convert.ToDecimal(newDetail1.PlanValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
 | |
|                                 newDetail1.CompleteValueRate = decimal.Round(Convert.ToDecimal(newDetail1.CompleteValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
 | |
|                                 newDetail1.RealValueRate = decimal.Round(Convert.ToDecimal(newDetail1.RealValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
 | |
|                             }
 | |
|                             else
 | |
|                             {
 | |
|                                 newDetail1.PlanValueRate = 0;
 | |
|                                 newDetail1.CompleteValueRate = 0;
 | |
|                                 newDetail1.RealValueRate = 0;
 | |
|                             }
 | |
|                             BLL.WbsDetailService.AddWbsDetail(newDetail1);
 | |
|                         }
 | |
|                         else
 | |
|                         {
 | |
|                             detail1.PlanValue += planValue ?? 0;
 | |
|                             detail1.CompleteValue += completeValue ?? 0;
 | |
|                             detail1.RealValue += realValue ?? 0;
 | |
|                             if (parentWbsSet1.WeightsMoney != null)
 | |
|                             {
 | |
|                                 detail1.PlanValueRate = decimal.Round(Convert.ToDecimal(detail1.PlanValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
 | |
|                                 detail1.CompleteValueRate = decimal.Round(Convert.ToDecimal(detail1.CompleteValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
 | |
|                                 detail1.RealValueRate = decimal.Round(Convert.ToDecimal(detail1.RealValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
 | |
|                             }
 | |
|                             else
 | |
|                             {
 | |
|                                 detail1.PlanValueRate = 0;
 | |
|                                 detail1.CompleteValueRate = 0;
 | |
|                                 detail1.RealValueRate = 0;
 | |
|                             }
 | |
|                             BLL.WbsDetailService.UpdateWbsDetail(detail1);
 | |
|                         }
 | |
|                         AddWbsParentDetail(months, planValue, parentWbsSet1.SuperWbsSetId, completeValue, realValue);
 | |
|                     }
 | |
|                     else
 | |
|                     {
 | |
|                         Model.WbsDetail detail1 = BLL.WbsDetailService.GetWbsDetailByWbsFlagYearMonth(parentWbsSet1.WbsSetId, 4, months);
 | |
|                         if (detail1 == null)
 | |
|                         {
 | |
|                             Model.WbsDetail newDetail1 = new Model.WbsDetail();
 | |
|                             newDetail1.WbsDetailId = SQLHelper.GetNewID(typeof(Model.WbsDetail));
 | |
|                             newDetail1.ToWbs = parentWbsSet1.WbsSetId;
 | |
|                             newDetail1.ToFlag = 4;
 | |
|                             newDetail1.Way = parentWbsSet1.Way;
 | |
|                             newDetail1.Months = months;
 | |
|                             newDetail1.PlanValue = planValue;
 | |
|                             newDetail1.CompleteValue = completeValue ?? 0;
 | |
|                             newDetail1.RealValue = realValue ?? 0;
 | |
|                             if (parentWbsSet1.WeightsMoney != null)
 | |
|                             {
 | |
|                                 newDetail1.PlanValueRate = decimal.Round(Convert.ToDecimal(newDetail1.PlanValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
 | |
|                                 newDetail1.CompleteValueRate = decimal.Round(Convert.ToDecimal(newDetail1.CompleteValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
 | |
|                                 newDetail1.RealValueRate = decimal.Round(Convert.ToDecimal(newDetail1.RealValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
 | |
|                             }
 | |
|                             else
 | |
|                             {
 | |
|                                 newDetail1.PlanValueRate = 0;
 | |
|                                 newDetail1.CompleteValueRate = 0;
 | |
|                                 newDetail1.RealValueRate = 0;
 | |
|                             }
 | |
|                             BLL.WbsDetailService.AddWbsDetail(newDetail1);
 | |
|                         }
 | |
|                         else
 | |
|                         {
 | |
|                             detail1.PlanValue += planValue;
 | |
|                             detail1.CompleteValue += completeValue ?? 0;
 | |
|                             detail1.RealValue += realValue ?? 0;
 | |
|                             if (parentWbsSet1.WeightsMoney != null)
 | |
|                             {
 | |
|                                 detail1.PlanValueRate = decimal.Round(Convert.ToDecimal(detail1.PlanValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
 | |
|                                 detail1.CompleteValueRate = decimal.Round(Convert.ToDecimal(detail1.CompleteValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
 | |
|                                 detail1.RealValueRate = decimal.Round(Convert.ToDecimal(detail1.RealValue) / Convert.ToDecimal(parentWbsSet1.WeightsMoney) * 100, 2);
 | |
|                             }
 | |
|                             else
 | |
|                             {
 | |
|                                 detail1.PlanValueRate = 0;
 | |
|                                 detail1.CompleteValueRate = 0;
 | |
|                                 detail1.RealValueRate = 0;
 | |
|                             }
 | |
|                             BLL.WbsDetailService.UpdateWbsDetail(detail1);
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region  月份选择事件
 | |
|         /// <summary>
 | |
|         /// 月份选择事件
 | |
|         /// </summary>
 | |
|         /// <param name="sender"></param>
 | |
|         /// <param name="e"></param>
 | |
|         protected void txtMonths_TextChanged(object sender, EventArgs e)
 | |
|         {
 | |
|             GetNoApproveIds();
 | |
|             InitTreeMenu();
 | |
|             BindGrid();
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region 修正完成值
 | |
|         protected void btnMenuCorrect_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             if (this.trWBS.SelectedNode.CommandName == "unitProject")
 | |
|             {
 | |
|                 Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(this.trWBS.SelectedNodeID);
 | |
|                 var wbsSets = from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == null && x.UnitProjectId == this.trWBS.SelectedNodeID select x;
 | |
|                 foreach (var wbsSet in wbsSets)
 | |
|                 {
 | |
| 
 | |
|                 }
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 Alert.ShowInTop("请选择单位工程进行操作!", MessageBoxIcon.Warning);
 | |
|                 return;
 | |
|             }
 | |
|         }
 | |
|         #endregion
 | |
|     }
 | |
| } |