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