496 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			496 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			C#
		
	
	
	
| 
								 | 
							
								using BLL;
							 | 
						|||
| 
								 | 
							
								using System;
							 | 
						|||
| 
								 | 
							
								using System.Collections.Generic;
							 | 
						|||
| 
								 | 
							
								using System.Data;
							 | 
						|||
| 
								 | 
							
								using System.Data.SqlClient;
							 | 
						|||
| 
								 | 
							
								using System.Linq;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								namespace FineUIPro.Web.JDGL.CostAnalysis
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    public partial class EarnedValueCurve : PageBase
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        #region 加载
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 加载页面
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="sender"></param>
							 | 
						|||
| 
								 | 
							
								        /// <param name="e"></param>
							 | 
						|||
| 
								 | 
							
								        protected void Page_Load(object sender, EventArgs e)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            if (!IsPostBack)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                BLL.UnitService.InitUnitDropDownList(this.drpUnit, this.CurrUser.LoginProjectId, true);
							 | 
						|||
| 
								 | 
							
								                BindChart();
							 | 
						|||
| 
								 | 
							
								                InitTreeMenu();
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        #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;
							 | 
						|||
| 
								 | 
							
								            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();
							 | 
						|||
| 
								 | 
							
								                rootNode.Text = installation.InstallationName;
							 | 
						|||
| 
								 | 
							
								                rootNode.NodeID = installation.InstallationId;
							 | 
						|||
| 
								 | 
							
								                rootNode.CommandName = "installation";
							 | 
						|||
| 
								 | 
							
								                rootNode.CommandArgument = installation.UnitId;
							 | 
						|||
| 
								 | 
							
								                rootNode.ToolTip = installation.InstallationCode;
							 | 
						|||
| 
								 | 
							
								                rootNode.EnableClickEvent = true;
							 | 
						|||
| 
								 | 
							
								                if (installation.InstallationName != "总图")
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    rootNode.Expanded = true;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                else
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    rootNode.EnableExpandEvent = true;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                this.trWBS.Nodes.Add(rootNode);
							 | 
						|||
| 
								 | 
							
								                var installation1s = from x in Funs.DB.Project_Installation
							 | 
						|||
| 
								 | 
							
								                                     where x.SuperInstallationId == installation.InstallationId
							 | 
						|||
| 
								 | 
							
								                                     orderby x.InstallationCode
							 | 
						|||
| 
								 | 
							
								                                     select x;
							 | 
						|||
| 
								 | 
							
								                if (installation1s.Count() > 0)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    foreach (var installation1 in installation1s)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        TreeNode newNode = new TreeNode();
							 | 
						|||
| 
								 | 
							
								                        newNode.Text = installation1.InstallationName;
							 | 
						|||
| 
								 | 
							
								                        newNode.NodeID = installation1.InstallationId;
							 | 
						|||
| 
								 | 
							
								                        newNode.CommandName = "installation";
							 | 
						|||
| 
								 | 
							
								                        newNode.CommandArgument = installation1.Weights == null ? null : installation1.Weights.ToString();
							 | 
						|||
| 
								 | 
							
								                        newNode.ToolTip = installation1.InstallationCode;
							 | 
						|||
| 
								 | 
							
								                        newNode.EnableClickEvent = true;
							 | 
						|||
| 
								 | 
							
								                        newNode.Expanded = true;
							 | 
						|||
| 
								 | 
							
								                        rootNode.Nodes.Add(newNode);
							 | 
						|||
| 
								 | 
							
								                        var installation2s = from x in Funs.DB.Project_Installation
							 | 
						|||
| 
								 | 
							
								                                             where x.SuperInstallationId == installation1.InstallationId
							 | 
						|||
| 
								 | 
							
								                                             orderby x.InstallationCode
							 | 
						|||
| 
								 | 
							
								                                             select x;
							 | 
						|||
| 
								 | 
							
								                        foreach (var installation2 in installation2s)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            TreeNode newNode2 = new TreeNode();
							 | 
						|||
| 
								 | 
							
								                            newNode2.Text = installation2.InstallationName;
							 | 
						|||
| 
								 | 
							
								                            newNode2.NodeID = installation2.InstallationId;
							 | 
						|||
| 
								 | 
							
								                            newNode2.CommandName = "installation";
							 | 
						|||
| 
								 | 
							
								                            newNode2.CommandArgument = installation2.Weights == null ? null : installation2.Weights.ToString();
							 | 
						|||
| 
								 | 
							
								                            newNode2.ToolTip = installation2.InstallationCode;
							 | 
						|||
| 
								 | 
							
								                            newNode2.EnableClickEvent = true;
							 | 
						|||
| 
								 | 
							
								                            newNode2.Expanded = true;
							 | 
						|||
| 
								 | 
							
								                            newNode.Nodes.Add(newNode2);
							 | 
						|||
| 
								 | 
							
								                            var cnProfessions = from x in Funs.DB.WBS_CnProfession where x.InstallationId == installation2.InstallationId orderby x.OldId select x;
							 | 
						|||
| 
								 | 
							
								                            foreach (var cnProfession in cnProfessions)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                var unitProjects = from x in Funs.DB.Wbs_UnitProject where x.CnProfessionId == cnProfession.CnProfessionId && x.IsApprove == true select x;
							 | 
						|||
| 
								 | 
							
								                                if (unitProjects.Count() > 0)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    TreeNode newNode3 = new TreeNode();
							 | 
						|||
| 
								 | 
							
								                                    newNode3.Text = cnProfession.CnProfessionName;
							 | 
						|||
| 
								 | 
							
								                                    newNode3.NodeID = cnProfession.CnProfessionId;
							 | 
						|||
| 
								 | 
							
								                                    newNode3.CommandName = "cnProfession";
							 | 
						|||
| 
								 | 
							
								                                    newNode3.CommandArgument = cnProfession.UnitId;
							 | 
						|||
| 
								 | 
							
								                                    newNode3.ToolTip = cnProfession.CnProfessionCode;
							 | 
						|||
| 
								 | 
							
								                                    newNode3.EnableExpandEvent = true;
							 | 
						|||
| 
								 | 
							
								                                    newNode3.EnableClickEvent = true;
							 | 
						|||
| 
								 | 
							
								                                    newNode2.Nodes.Add(newNode3);
							 | 
						|||
| 
								 | 
							
								                                    TreeNode emptyNode = new TreeNode();
							 | 
						|||
| 
								 | 
							
								                                    emptyNode.Text = "";
							 | 
						|||
| 
								 | 
							
								                                    emptyNode.NodeID = "";
							 | 
						|||
| 
								 | 
							
								                                    newNode3.Nodes.Add(emptyNode);
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                else
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    TreeNode emptyNode = new TreeNode();
							 | 
						|||
| 
								 | 
							
								                    emptyNode.Text = "";
							 | 
						|||
| 
								 | 
							
								                    emptyNode.NodeID = "";
							 | 
						|||
| 
								 | 
							
								                    rootNode.Nodes.Add(emptyNode);
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #region Tree展开事件
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 树展开事件
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="sender"></param>
							 | 
						|||
| 
								 | 
							
								        /// <param name="e"></param>
							 | 
						|||
| 
								 | 
							
								        protected void trWBS_NodeExpand(object sender, TreeNodeEventArgs e)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            BindChart();
							 | 
						|||
| 
								 | 
							
								            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();
							 | 
						|||
| 
								 | 
							
								                        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();
							 | 
						|||
| 
								 | 
							
								                                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();
							 | 
						|||
| 
								 | 
							
								                                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();
							 | 
						|||
| 
								 | 
							
								                    newNode.Text = unitProject.UnitProjectName;
							 | 
						|||
| 
								 | 
							
								                    newNode.NodeID = unitProject.UnitProjectId;
							 | 
						|||
| 
								 | 
							
								                    newNode.CommandName = "unitProject";
							 | 
						|||
| 
								 | 
							
								                    newNode.CommandArgument = unitProject.Weights == null ? null : unitProject.Weights.ToString();
							 | 
						|||
| 
								 | 
							
								                    newNode.ToolTip = unitProject.UnitProjectCode;
							 | 
						|||
| 
								 | 
							
								                    newNode.EnableExpandEvent = true;
							 | 
						|||
| 
								 | 
							
								                    newNode.EnableClickEvent = true;
							 | 
						|||
| 
								 | 
							
								                    e.Node.Nodes.Add(newNode);
							 | 
						|||
| 
								 | 
							
								                    TreeNode emptyNode = new TreeNode();
							 | 
						|||
| 
								 | 
							
								                    emptyNode.Text = "";
							 | 
						|||
| 
								 | 
							
								                    emptyNode.NodeID = "";
							 | 
						|||
| 
								 | 
							
								                    newNode.Nodes.Add(emptyNode);
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            else if (e.Node.CommandName == "unitProject")   //展开单位工程节点
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                var childUnitProjects = from x in Funs.DB.Wbs_UnitProject where x.SuperUnitProjectId == e.Node.NodeID && x.IsApprove == true orderby x.SortIndex, x.UnitProjectCode select x;
							 | 
						|||
| 
								 | 
							
								                if (childUnitProjects.Count() > 0)   //存在子单位工程
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    foreach (var childUnitProject in childUnitProjects)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        TreeNode newNode = new TreeNode();
							 | 
						|||
| 
								 | 
							
								                        newNode.Text = childUnitProject.UnitProjectName;
							 | 
						|||
| 
								 | 
							
								                        newNode.NodeID = childUnitProject.UnitProjectId;
							 | 
						|||
| 
								 | 
							
								                        newNode.CommandName = "childUnitProject";
							 | 
						|||
| 
								 | 
							
								                        newNode.CommandArgument = childUnitProject.Weights == null ? null : childUnitProject.Weights.ToString();
							 | 
						|||
| 
								 | 
							
								                        newNode.ToolTip = childUnitProject.UnitProjectCode;
							 | 
						|||
| 
								 | 
							
								                        newNode.EnableExpandEvent = true;
							 | 
						|||
| 
								 | 
							
								                        newNode.EnableClickEvent = true;
							 | 
						|||
| 
								 | 
							
								                        e.Node.Nodes.Add(newNode);
							 | 
						|||
| 
								 | 
							
								                        TreeNode emptyNode = new TreeNode();
							 | 
						|||
| 
								 | 
							
								                        emptyNode.Text = "";
							 | 
						|||
| 
								 | 
							
								                        emptyNode.NodeID = "";
							 | 
						|||
| 
								 | 
							
								                        newNode.Nodes.Add(emptyNode);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                else     //不存在子单位工程,加载分部工程
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    var wbsSet1s = from x in Funs.DB.Wbs_WbsSet where x.Flag == 1 && x.UnitProjectId == e.Node.NodeID && x.IsApprove == true && x.NoShow == null orderby x.SortIndex, x.WbsSetCode select x;
							 | 
						|||
| 
								 | 
							
								                    if (wbsSet1s.Count() > 0)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        foreach (var wbsSet1 in wbsSet1s)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            TreeNode newNode = new TreeNode();
							 | 
						|||
| 
								 | 
							
								                            newNode.Text = wbsSet1.WbsSetName;
							 | 
						|||
| 
								 | 
							
								                            newNode.NodeID = wbsSet1.WbsSetId;
							 | 
						|||
| 
								 | 
							
								                            newNode.CommandName = "wbsSet";
							 | 
						|||
| 
								 | 
							
								                            newNode.CommandArgument = wbsSet1.Weights == null ? null : wbsSet1.Weights.ToString();
							 | 
						|||
| 
								 | 
							
								                            newNode.ToolTip = wbsSet1.WbsSetCode;
							 | 
						|||
| 
								 | 
							
								                            newNode.EnableExpandEvent = true;
							 | 
						|||
| 
								 | 
							
								                            newNode.EnableClickEvent = true;
							 | 
						|||
| 
								 | 
							
								                            e.Node.Nodes.Add(newNode);
							 | 
						|||
| 
								 | 
							
								                            var childWbsSets2 = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(newNode.NodeID);
							 | 
						|||
| 
								 | 
							
								                            if (childWbsSets2.Count() > 0)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                TreeNode emptyNode = new TreeNode();
							 | 
						|||
| 
								 | 
							
								                                emptyNode.Text = "";
							 | 
						|||
| 
								 | 
							
								                                emptyNode.NodeID = "";
							 | 
						|||
| 
								 | 
							
								                                newNode.Nodes.Add(emptyNode);
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    else    //单位工程下直接是分项内容,如质量行为
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        var wbsSet3s = from x in Funs.DB.Wbs_WbsSet where x.Flag == 3 && x.UnitProjectId == e.Node.NodeID && x.IsApprove == true && x.NoShow == null orderby x.SortIndex, x.WbsSetCode select x;
							 | 
						|||
| 
								 | 
							
								                        if (wbsSet3s.Count() > 0)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            foreach (var wbsSet3 in wbsSet3s)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                TreeNode newNode = new TreeNode();
							 | 
						|||
| 
								 | 
							
								                                newNode.Text = wbsSet3.WbsSetName;
							 | 
						|||
| 
								 | 
							
								                                newNode.NodeID = wbsSet3.WbsSetId;
							 | 
						|||
| 
								 | 
							
								                                newNode.CommandName = "wbsSet";
							 | 
						|||
| 
								 | 
							
								                                newNode.CommandArgument = wbsSet3.Weights == null ? null : wbsSet3.Weights.ToString();
							 | 
						|||
| 
								 | 
							
								                                newNode.ToolTip = wbsSet3.WbsSetCode;
							 | 
						|||
| 
								 | 
							
								                                newNode.EnableExpandEvent = true;
							 | 
						|||
| 
								 | 
							
								                                newNode.EnableClickEvent = true;
							 | 
						|||
| 
								 | 
							
								                                e.Node.Nodes.Add(newNode);
							 | 
						|||
| 
								 | 
							
								                                var childWbsSets2 = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(newNode.NodeID);
							 | 
						|||
| 
								 | 
							
								                                if (childWbsSets2.Count() > 0)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    TreeNode emptyNode = new TreeNode();
							 | 
						|||
| 
								 | 
							
								                                    emptyNode.Text = "";
							 | 
						|||
| 
								 | 
							
								                                    emptyNode.NodeID = "";
							 | 
						|||
| 
								 | 
							
								                                    newNode.Nodes.Add(emptyNode);
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            else if (e.Node.CommandName == "childUnitProject")   //展开子单位工程节点
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                var wbsSet1s = from x in Funs.DB.Wbs_WbsSet where x.Flag == 1 && x.UnitProjectId == e.Node.NodeID && x.IsApprove == true && x.NoShow == null orderby x.SortIndex, x.WbsSetCode select x;
							 | 
						|||
| 
								 | 
							
								                foreach (var wbsSet1 in wbsSet1s)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    TreeNode newNode = new TreeNode();
							 | 
						|||
| 
								 | 
							
								                    newNode.Text = wbsSet1.WbsSetName;
							 | 
						|||
| 
								 | 
							
								                    newNode.NodeID = wbsSet1.WbsSetId;
							 | 
						|||
| 
								 | 
							
								                    newNode.CommandName = "wbsSet";
							 | 
						|||
| 
								 | 
							
								                    newNode.CommandArgument = wbsSet1.Weights == null ? null : wbsSet1.Weights.ToString();
							 | 
						|||
| 
								 | 
							
								                    newNode.ToolTip = wbsSet1.WbsSetCode;
							 | 
						|||
| 
								 | 
							
								                    newNode.EnableExpandEvent = true;
							 | 
						|||
| 
								 | 
							
								                    newNode.EnableClickEvent = true;
							 | 
						|||
| 
								 | 
							
								                    e.Node.Nodes.Add(newNode);
							 | 
						|||
| 
								 | 
							
								                    var childWbsSets2 = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(newNode.NodeID);
							 | 
						|||
| 
								 | 
							
								                    if (childWbsSets2.Count() > 0)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        TreeNode emptyNode = new TreeNode();
							 | 
						|||
| 
								 | 
							
								                        emptyNode.Text = "";
							 | 
						|||
| 
								 | 
							
								                        emptyNode.NodeID = "";
							 | 
						|||
| 
								 | 
							
								                        newNode.Nodes.Add(emptyNode);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            else if (e.Node.CommandName == "wbsSet")   //展开分部/子分部/分项/子分项工程节点
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                var childWbsSets = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(e.Node.NodeID);
							 | 
						|||
| 
								 | 
							
								                foreach (var wbsSet in childWbsSets)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    TreeNode newNode = new TreeNode();
							 | 
						|||
| 
								 | 
							
								                    newNode.Text = wbsSet.WbsSetName;
							 | 
						|||
| 
								 | 
							
								                    newNode.NodeID = wbsSet.WbsSetId;
							 | 
						|||
| 
								 | 
							
								                    newNode.CommandName = "wbsSet";
							 | 
						|||
| 
								 | 
							
								                    newNode.CommandArgument = wbsSet.Weights == null ? null : wbsSet.Weights.ToString();
							 | 
						|||
| 
								 | 
							
								                    newNode.ToolTip = wbsSet.WbsSetCode;
							 | 
						|||
| 
								 | 
							
								                    newNode.EnableExpandEvent = true;
							 | 
						|||
| 
								 | 
							
								                    newNode.EnableClickEvent = true;
							 | 
						|||
| 
								 | 
							
								                    e.Node.Nodes.Add(newNode);
							 | 
						|||
| 
								 | 
							
								                    var childWbsSets2 = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(newNode.NodeID);
							 | 
						|||
| 
								 | 
							
								                    if (childWbsSets2.Count() > 0)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        TreeNode emptyNode = new TreeNode();
							 | 
						|||
| 
								 | 
							
								                        emptyNode.Text = "";
							 | 
						|||
| 
								 | 
							
								                        emptyNode.NodeID = "";
							 | 
						|||
| 
								 | 
							
								                        newNode.Nodes.Add(emptyNode);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #region 下拉选择事件
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 单位下拉选择事件
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="sender"></param>
							 | 
						|||
| 
								 | 
							
								        /// <param name="e"></param>
							 | 
						|||
| 
								 | 
							
								        protected void drpUnit_SelectedIndexChanged(object sender, EventArgs e)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            List<string> nodeIds = new List<string>();
							 | 
						|||
| 
								 | 
							
								            if (this.drpUnit.SelectedValue != BLL.Const._Null)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                foreach (var item in this.trWBS.Nodes)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    if (item.CommandArgument == this.drpUnit.SelectedValue)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        nodeIds.Add(item.NodeID);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    foreach (var item1 in item.Nodes)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        foreach (var item2 in item1.Nodes)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            foreach (var item3 in item2.Nodes)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                if (item3.CommandArgument == this.drpUnit.SelectedValue)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    nodeIds.Add(item3.NodeID);
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            this.trWBS.SelectedNodeIDArray = nodeIds.ToArray();
							 | 
						|||
| 
								 | 
							
								            BindChart();
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #region Tree点击事件
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// Tree点击事件
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="sender"></param>
							 | 
						|||
| 
								 | 
							
								        /// <param name="e"></param>
							 | 
						|||
| 
								 | 
							
								        protected void trWBS_NodeCommand(object sender, TreeCommandEventArgs e)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            BindChart();
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #region 数据绑定
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 数据绑定
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        private void BindChart()
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            string[] nodeIds = this.trWBS.SelectedNodeIDArray;
							 | 
						|||
| 
								 | 
							
								            string toWbs = string.Empty;
							 | 
						|||
| 
								 | 
							
								            foreach (var nodeId in nodeIds)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                toWbs += nodeId + ",";
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            string strSql = "select distinct (cast(YEAR(Months) as varchar(4))+'.'+cast(MONTH(Months) as varchar(2))) as 月份,t.Months, (select SUM(PlanValue) from dbo.WbsDetail where Months=t.Months and CHARINDEX(ToWbs,@ToWbs)>0) as 计划值," +
							 | 
						|||
| 
								 | 
							
								                             "(select SUM(PlanValue) from dbo.WbsDetail where Months<=t.Months and CHARINDEX(ToWbs,@ToWbs)>0) as 计划累积值 ," +
							 | 
						|||
| 
								 | 
							
								                             "(select SUM(CompleteValue) from dbo.WbsDetail where Months=t.Months and CHARINDEX(ToWbs,@ToWbs)>0) as 完成值," +
							 | 
						|||
| 
								 | 
							
								                             "(select SUM(CompleteValue) from dbo.WbsDetail where Months<=t.Months and CHARINDEX(ToWbs,@ToWbs)>0) as 完成累积值," +
							 | 
						|||
| 
								 | 
							
								                             "(select SUM(RealValue) from dbo.WbsDetail where Months=t.Months and CHARINDEX(ToWbs,@ToWbs)>0) as 实耗值," +
							 | 
						|||
| 
								 | 
							
								                             "(select SUM(RealValue) from dbo.WbsDetail where Months<=t.Months and CHARINDEX(ToWbs,@ToWbs)>0) as 实耗累积值 " +
							 | 
						|||
| 
								 | 
							
								                             "from dbo.WbsDetail as t where CHARINDEX(t.ToWbs,@ToWbs)>0 order by t.Months";
							 | 
						|||
| 
								 | 
							
								            string date = DateTime.Now.Year + "-" + DateTime.Now.Month + "-01";
							 | 
						|||
| 
								 | 
							
								            SqlParameter[] parameter = new SqlParameter[]
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        new SqlParameter("@ToWbs",toWbs),
							 | 
						|||
| 
								 | 
							
								                        new SqlParameter("@Months",date),
							 | 
						|||
| 
								 | 
							
								                    };
							 | 
						|||
| 
								 | 
							
								            DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter);
							 | 
						|||
| 
								 | 
							
								            this.Grid1.DataSource = dt;
							 | 
						|||
| 
								 | 
							
								            this.Grid1.DataBind();
							 | 
						|||
| 
								 | 
							
								            this.ChartEV.CreateMaryChart(dt, 820, 320, null);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #region 将DataTable行列转换
							 | 
						|||
| 
								 | 
							
								        /// <summary>  
							 | 
						|||
| 
								 | 
							
								        /// 将DataTable行列转换  
							 | 
						|||
| 
								 | 
							
								        /// </summary>  
							 | 
						|||
| 
								 | 
							
								        /// <param name="src">要转换的DataTable</param>  
							 | 
						|||
| 
								 | 
							
								        /// <param name="columnHead">要作为Column的哪列</param>  
							 | 
						|||
| 
								 | 
							
								        /// <returns></returns>  
							 | 
						|||
| 
								 | 
							
								        private DataTable Col2Row(DataTable src, int columnHead)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            DataTable result = new DataTable();
							 | 
						|||
| 
								 | 
							
								            DataColumn myHead = src.Columns[columnHead];
							 | 
						|||
| 
								 | 
							
								            result.Columns.Add(myHead.ColumnName);
							 | 
						|||
| 
								 | 
							
								            FineUIPro.RenderField bf;
							 | 
						|||
| 
								 | 
							
								            bf = new FineUIPro.RenderField();
							 | 
						|||
| 
								 | 
							
								            bf.ColumnID = myHead.ColumnName;
							 | 
						|||
| 
								 | 
							
								            bf.DataField = myHead.ColumnName;
							 | 
						|||
| 
								 | 
							
								            bf.HeaderText = myHead.ColumnName;
							 | 
						|||
| 
								 | 
							
								            Grid1.Columns.Add(bf);
							 | 
						|||
| 
								 | 
							
								            for (int i = 0; i < src.Rows.Count; i++)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                result.Columns.Add(src.Rows[i][myHead].ToString());
							 | 
						|||
| 
								 | 
							
								                bf = new FineUIPro.RenderField();
							 | 
						|||
| 
								 | 
							
								                bf.ColumnID = src.Rows[i][myHead].ToString();
							 | 
						|||
| 
								 | 
							
								                bf.DataField = src.Rows[i][myHead].ToString();
							 | 
						|||
| 
								 | 
							
								                bf.HeaderText = src.Rows[i][myHead].ToString();
							 | 
						|||
| 
								 | 
							
								                Grid1.Columns.Add(bf);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            Grid1.DataKeyNames = new string[] { "月份" };
							 | 
						|||
| 
								 | 
							
								            foreach (DataColumn col in src.Columns)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                if (col == myHead)
							 | 
						|||
| 
								 | 
							
								                    continue;
							 | 
						|||
| 
								 | 
							
								                object[] newRow = new object[src.Rows.Count + 1];
							 | 
						|||
| 
								 | 
							
								                newRow[0] = col.ColumnName;
							 | 
						|||
| 
								 | 
							
								                for (int i = 0; i < src.Rows.Count; i++)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    newRow[i + 1] = src.Rows[i][col];
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                result.Rows.Add(newRow);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            return result;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        private DataTable Col2Row(DataTable src, string columnHead)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            for (int i = 0; i < src.Columns.Count; i++)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                if (src.Columns[i].ColumnName.ToUpper() == columnHead.ToUpper())
							 | 
						|||
| 
								 | 
							
								                    return Col2Row(src, i);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            return new DataTable();
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        #endregion
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |