842 lines
		
	
	
		
			46 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			842 lines
		
	
	
		
			46 KiB
		
	
	
	
		
			C#
		
	
	
	
| 
								 | 
							
								using System;
							 | 
						|||
| 
								 | 
							
								using System.Collections.Generic;
							 | 
						|||
| 
								 | 
							
								using System.Data;
							 | 
						|||
| 
								 | 
							
								using System.Linq;
							 | 
						|||
| 
								 | 
							
								using System.Web;
							 | 
						|||
| 
								 | 
							
								using System.Web.UI;
							 | 
						|||
| 
								 | 
							
								using System.Web.UI.WebControls;
							 | 
						|||
| 
								 | 
							
								using BLL;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								namespace FineUIPro.Web.JDGL.Check
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    public partial class ProgressStatistics : PageBase
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        protected void Page_Load(object sender, EventArgs e)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            if (!IsPostBack)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                Funs.FineUIPleaseSelect(this.drpProjectType);
							 | 
						|||
| 
								 | 
							
								                Funs.FineUIPleaseSelect(this.drpUnitWork);
							 | 
						|||
| 
								 | 
							
								                //UnitWorkService.InitUnitWorkDownList(drpUnitWork, this.CurrUser.LoginProjectId, true);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        protected void btnQuery_Click(object sender, EventArgs e)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            BindGrid();
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 绑定数据
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        public void BindGrid()
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            DataTable tb = new DataTable();
							 | 
						|||
| 
								 | 
							
								            DateTime startDate, endDate, startMonth, endMonth, startDay, endDay, endDayItem;
							 | 
						|||
| 
								 | 
							
								            List<DateTime> months = new List<DateTime>();
							 | 
						|||
| 
								 | 
							
								            List<DateTime> weeks = new List<DateTime>();
							 | 
						|||
| 
								 | 
							
								            List<DateTime> days = new List<DateTime>();
							 | 
						|||
| 
								 | 
							
								            Model.Base_Project project = BLL.ProjectService.GetProjectByProjectId(this.CurrUser.LoginProjectId);
							 | 
						|||
| 
								 | 
							
								            //默认开始结束日期为项目开始结束日期
							 | 
						|||
| 
								 | 
							
								            startDate = Convert.ToDateTime(project.StartDate);
							 | 
						|||
| 
								 | 
							
								            endDate = DateTime.Now.Date.AddDays(1).AddSeconds(-1);
							 | 
						|||
| 
								 | 
							
								            if (!string.IsNullOrEmpty(this.txtStartTime.Text.Trim()))
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                startDate = Convert.ToDateTime(this.txtStartTime.Text.Trim());
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            if (!string.IsNullOrEmpty(this.txtEndTime.Text.Trim()))
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                endDate = Convert.ToDateTime(this.txtEndTime.Text.Trim()).AddDays(1).AddSeconds(-1);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            string isDataOK = string.Empty;
							 | 
						|||
| 
								 | 
							
								            if (this.ckbData.Checked)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                isDataOK = "True";
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            List<Model.WBS_UnitWork> unitWorks = new List<Model.WBS_UnitWork>();
							 | 
						|||
| 
								 | 
							
								            List<Model.WBS_WorkPackage> workPackages = new List<Model.WBS_WorkPackage>();
							 | 
						|||
| 
								 | 
							
								            List<Model.WBS_ControlItemAndCycle> controlItemAndCycles = new List<Model.WBS_ControlItemAndCycle>();
							 | 
						|||
| 
								 | 
							
								            List<Model.View_Check_SoptCheckDetail> soptCheckDetails = new List<Model.View_Check_SoptCheckDetail>();
							 | 
						|||
| 
								 | 
							
								            unitWorks = BLL.UnitWorkService.GetUnitWorkLists(this.CurrUser.LoginProjectId);
							 | 
						|||
| 
								 | 
							
								            decimal totalUnitWorkWeights = 0;
							 | 
						|||
| 
								 | 
							
								            bool noWeights = false;
							 | 
						|||
| 
								 | 
							
								            bool noProjectWeights = false;
							 | 
						|||
| 
								 | 
							
								            string[] unitWorkIds = this.drpUnitWork.SelectedValueArray;
							 | 
						|||
| 
								 | 
							
								            if (unitWorkIds.Length == 1 && unitWorkIds[0] == BLL.Const._Null)   //统计项目
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                workPackages = BLL.WorkPackageService.GetAllWorkPackagesByProjectId(this.CurrUser.LoginProjectId);
							 | 
						|||
| 
								 | 
							
								                controlItemAndCycles = BLL.ControlItemAndCycleService.GetControlItemAndCyclesByProjectIdAndDate(this.CurrUser.LoginProjectId, endDate);
							 | 
						|||
| 
								 | 
							
								                soptCheckDetails = BLL.SpotCheckDetailService.GetViewSpotCheckDetailsByProjectIdAndDate(this.CurrUser.LoginProjectId, endDate, isDataOK);
							 | 
						|||
| 
								 | 
							
								                var unitWork = Funs.DB.WBS_UnitWork.FirstOrDefault(x => x.ProjectId == this.CurrUser.LoginProjectId && x.Weights == null);
							 | 
						|||
| 
								 | 
							
								                if (unitWork != null)   //存在没有权重值的单位工程
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    noProjectWeights = true;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            else   //统计单位工程(多选)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                workPackages = BLL.WorkPackageService.GetAllWorkPackagesByUnitWorkIds(unitWorkIds);
							 | 
						|||
| 
								 | 
							
								                controlItemAndCycles = BLL.ControlItemAndCycleService.GetControlItemAndCyclesByUnitWorkIdsAndDate(unitWorkIds, endDate);
							 | 
						|||
| 
								 | 
							
								                soptCheckDetails = BLL.SpotCheckDetailService.GetViewSpotCheckDetailsByUnitWorkIdsAndDate(unitWorkIds, endDate, isDataOK);
							 | 
						|||
| 
								 | 
							
								                foreach (var item in unitWorkIds)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    var unitWork = BLL.UnitWorkService.GetUnitWorkByUnitWorkId(item);
							 | 
						|||
| 
								 | 
							
								                    if (unitWork != null)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        if (unitWork.Weights != null)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            totalUnitWorkWeights += Convert.ToDecimal(unitWork.Weights);
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        else
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            noWeights = true;
							 | 
						|||
| 
								 | 
							
								                            break;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            if (noWeights && unitWorkIds.Length > 1)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                Alert.ShowInTop("请先设置所选单位工程的权重值!", MessageBoxIcon.Warning);
							 | 
						|||
| 
								 | 
							
								                return;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            if (noProjectWeights)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                Alert.ShowInTop("请先设置所有单位工程的权重值!", MessageBoxIcon.Warning);
							 | 
						|||
| 
								 | 
							
								                return;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            //if (this.drpUnitWork.SelectedValue != BLL.Const._Null)
							 | 
						|||
| 
								 | 
							
								            //{
							 | 
						|||
| 
								 | 
							
								            //    workPackages = BLL.WorkPackageService.GetAllWorkPackagesByUnitWorkId(this.drpUnitWork.SelectedValue);
							 | 
						|||
| 
								 | 
							
								            //    controlItemAndCycles = BLL.ControlItemAndCycleService.GetControlItemAndCyclesByUnitWorkIdAndDate(this.drpUnitWork.SelectedValue, endDate);
							 | 
						|||
| 
								 | 
							
								            //    soptCheckDetails = BLL.SpotCheckDetailService.GetViewSpotCheckDetailsByUnitWorkIdAndDate(this.drpUnitWork.SelectedValue, endDate, isDataOK);
							 | 
						|||
| 
								 | 
							
								            //}
							 | 
						|||
| 
								 | 
							
								            //else
							 | 
						|||
| 
								 | 
							
								            //{
							 | 
						|||
| 
								 | 
							
								            //    workPackages = BLL.WorkPackageService.GetAllWorkPackagesByProjectId(this.CurrUser.LoginProjectId);
							 | 
						|||
| 
								 | 
							
								            //    controlItemAndCycles = BLL.ControlItemAndCycleService.GetControlItemAndCyclesByProjectIdAndDate(this.CurrUser.LoginProjectId, endDate);
							 | 
						|||
| 
								 | 
							
								            //    soptCheckDetails = BLL.SpotCheckDetailService.GetViewSpotCheckDetailsByProjectIdAndDate(this.CurrUser.LoginProjectId, endDate, isDataOK);
							 | 
						|||
| 
								 | 
							
								            //}
							 | 
						|||
| 
								 | 
							
								            decimal lastDPlanTotal = 0;
							 | 
						|||
| 
								 | 
							
								            decimal lastDCompleteTotal = 0;
							 | 
						|||
| 
								 | 
							
								            #region 按月
							 | 
						|||
| 
								 | 
							
								            if (this.rblType.SelectedValue == "Month")
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                tb.Columns.Add("月");
							 | 
						|||
| 
								 | 
							
								                startMonth = Convert.ToDateTime(startDate.Year + "-" + startDate.Month + "-01");
							 | 
						|||
| 
								 | 
							
								                endMonth = Convert.ToDateTime(endDate.Year + "-" + endDate.Month + "-01");
							 | 
						|||
| 
								 | 
							
								                do
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    months.Add(startMonth);
							 | 
						|||
| 
								 | 
							
								                    startMonth = startMonth.AddMonths(1);
							 | 
						|||
| 
								 | 
							
								                } while (startMonth <= endMonth);
							 | 
						|||
| 
								 | 
							
								                tb.Columns.Add("计划值");
							 | 
						|||
| 
								 | 
							
								                tb.Columns.Add("累计计划值");
							 | 
						|||
| 
								 | 
							
								                tb.Columns.Add("实际值");
							 | 
						|||
| 
								 | 
							
								                tb.Columns.Add("累计实际值");
							 | 
						|||
| 
								 | 
							
								                for (int i = 0; i < months.Count; i++)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    DataRow row = tb.NewRow();
							 | 
						|||
| 
								 | 
							
								                    row[0] = string.Format("{0:yyyy-MM}", months[i]);
							 | 
						|||
| 
								 | 
							
								                    //对应月份的记录
							 | 
						|||
| 
								 | 
							
								                    decimal dPlan = 0, dPlan1 = 0, dPlanTotal = 0, dComplete = 0, dComplete1 = 0, dCompleteMonth = 0, dCompleteTotal = 0;
							 | 
						|||
| 
								 | 
							
								                    //当月及之前所有工作包内容
							 | 
						|||
| 
								 | 
							
								                    var totalPlanCompleteControlItemAndCycles = controlItemAndCycles.Where(x => x.PlanCompleteDate < months[i].AddMonths(1));
							 | 
						|||
| 
								 | 
							
								                    //当月及之前所有验收合格记录
							 | 
						|||
| 
								 | 
							
								                    var totalSoptCheckDetails = soptCheckDetails.Where(x => x.SpotCheckDate < months[i].AddMonths(1));
							 | 
						|||
| 
								 | 
							
								                    foreach (var item in totalPlanCompleteControlItemAndCycles)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            var workPackage1 = workPackages.FirstOrDefault(x => x.WorkPackageId == item.WorkPackageId);
							 | 
						|||
| 
								 | 
							
								                            if (workPackage1 != null)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                //逐级递推计算权重计划值
							 | 
						|||
| 
								 | 
							
								                                dPlan1 = Convert.ToDecimal((workPackage1.Weights ?? 0) / 100) * Convert.ToDecimal(item.Weights / 100);
							 | 
						|||
| 
								 | 
							
								                                var workPackage2 = workPackages.FirstOrDefault(x => x.WorkPackageId == workPackage1.SuperWorkPackageId);
							 | 
						|||
| 
								 | 
							
								                                if (workPackage2 != null)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    dPlan1 = Convert.ToDecimal((workPackage2.Weights ?? 0) / 100) * dPlan1;
							 | 
						|||
| 
								 | 
							
								                                    var workPackage3 = workPackages.FirstOrDefault(x => x.WorkPackageId == workPackage2.SuperWorkPackageId);
							 | 
						|||
| 
								 | 
							
								                                    if (workPackage3 != null)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        dPlan1 = Convert.ToDecimal((workPackage3.Weights ?? 0) / 100) * dPlan1;
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            if (unitWorkIds.Length == 1 && unitWorkIds[0] == BLL.Const._Null)   //按项目统计时,再乘以单位工程权重
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                var unitWork = unitWorks.FirstOrDefault(x => x.UnitWorkId == workPackage1.UnitWorkId);
							 | 
						|||
| 
								 | 
							
								                                if (unitWork != null)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    dPlan1 = Convert.ToDecimal((unitWork.Weights ?? 0) / 100) * dPlan1;
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            else
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                if (unitWorkIds.Length > 1)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    var unitWork = unitWorks.FirstOrDefault(x => x.UnitWorkId == workPackage1.UnitWorkId);
							 | 
						|||
| 
								 | 
							
								                                    if (unitWork != null && totalUnitWorkWeights > 0)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        dPlan1 = Convert.ToDecimal((unitWork.Weights ?? 0) / totalUnitWorkWeights) * dPlan1;
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        if (item.PlanCompleteDate >= months[i])   //当月计划完成记录
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            dPlan += dPlan1;   //累加当月值
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        dPlanTotal += dPlan1;   //累加累计值
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    foreach (var item in controlItemAndCycles)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        //实际值
							 | 
						|||
| 
								 | 
							
								                        var itemSoptCheckDetails = soptCheckDetails.Where(x => x.ControlItemAndCycleId == item.ControlItemAndCycleId && x.SpotCheckDate < months[i].AddMonths(1));
							 | 
						|||
| 
								 | 
							
								                        var itemMonthSoptCheckDetails = soptCheckDetails.Where(x => x.ControlItemAndCycleId == item.ControlItemAndCycleId && x.SpotCheckDate >= months[i] && x.SpotCheckDate < months[i].AddMonths(1));
							 | 
						|||
| 
								 | 
							
								                        if (itemSoptCheckDetails.Count() > 0)  //存在验收合格的记录
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            //工作包实际值
							 | 
						|||
| 
								 | 
							
								                            dComplete1 = Convert.ToDecimal(itemSoptCheckDetails.Count()) / Convert.ToDecimal(item.CheckNum) * Convert.ToDecimal(item.Weights);
							 | 
						|||
| 
								 | 
							
								                            var workPackage1 = workPackages.FirstOrDefault(x => x.WorkPackageId == item.WorkPackageId);
							 | 
						|||
| 
								 | 
							
								                            if (workPackage1 != null)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                //逐级递推计算权重计划值
							 | 
						|||
| 
								 | 
							
								                                dComplete1 = Convert.ToDecimal((workPackage1.Weights ?? 0) / 100) * Convert.ToDecimal(dComplete1 / 100);
							 | 
						|||
| 
								 | 
							
								                                var workPackage2 = workPackages.FirstOrDefault(x => x.WorkPackageId == workPackage1.SuperWorkPackageId);
							 | 
						|||
| 
								 | 
							
								                                if (workPackage2 != null)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    dComplete1 = Convert.ToDecimal((workPackage2.Weights ?? 0) / 100) * dComplete1;
							 | 
						|||
| 
								 | 
							
								                                    var workPackage3 = workPackages.FirstOrDefault(x => x.WorkPackageId == workPackage2.SuperWorkPackageId);
							 | 
						|||
| 
								 | 
							
								                                    if (workPackage3 != null)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        dComplete1 = Convert.ToDecimal((workPackage3.Weights ?? 0) / 100) * dComplete1;
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            if (unitWorkIds.Length == 1 && unitWorkIds[0] == BLL.Const._Null)   //按项目统计时,再乘以单位工程权重
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                var unitWork = unitWorks.FirstOrDefault(x => x.UnitWorkId == workPackage1.UnitWorkId);
							 | 
						|||
| 
								 | 
							
								                                if (unitWork != null)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    dComplete1 = Convert.ToDecimal((unitWork.Weights ?? 0) / 100) * dComplete1;
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            else
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                if (unitWorkIds.Length > 1)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    var unitWork = unitWorks.FirstOrDefault(x => x.UnitWorkId == workPackage1.UnitWorkId);
							 | 
						|||
| 
								 | 
							
								                                    if (unitWork != null && totalUnitWorkWeights > 0)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        dComplete1 = Convert.ToDecimal((unitWork.Weights ?? 0) / totalUnitWorkWeights) * dComplete1;
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            dCompleteTotal += dComplete1;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        if (itemMonthSoptCheckDetails.Count() > 0)  //当月存在验收合格的记录
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            //工作包实际值
							 | 
						|||
| 
								 | 
							
								                            dCompleteMonth = Convert.ToDecimal(itemMonthSoptCheckDetails.Count()) / Convert.ToDecimal(item.CheckNum) * Convert.ToDecimal(item.Weights);
							 | 
						|||
| 
								 | 
							
								                            var workPackage1 = workPackages.FirstOrDefault(x => x.WorkPackageId == item.WorkPackageId);
							 | 
						|||
| 
								 | 
							
								                            if (workPackage1 != null)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                //逐级递推计算权重计划值
							 | 
						|||
| 
								 | 
							
								                                dCompleteMonth = Convert.ToDecimal((workPackage1.Weights ?? 0) / 100) * Convert.ToDecimal(dCompleteMonth / 100);
							 | 
						|||
| 
								 | 
							
								                                var workPackage2 = workPackages.FirstOrDefault(x => x.WorkPackageId == workPackage1.SuperWorkPackageId);
							 | 
						|||
| 
								 | 
							
								                                if (workPackage2 != null)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    dCompleteMonth = Convert.ToDecimal((workPackage2.Weights ?? 0) / 100) * dCompleteMonth;
							 | 
						|||
| 
								 | 
							
								                                    var workPackage3 = workPackages.FirstOrDefault(x => x.WorkPackageId == workPackage2.SuperWorkPackageId);
							 | 
						|||
| 
								 | 
							
								                                    if (workPackage3 != null)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        dCompleteMonth = Convert.ToDecimal((workPackage3.Weights ?? 0) / 100) * dCompleteMonth;
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            if (unitWorkIds.Length == 1 && unitWorkIds[0] == BLL.Const._Null)   //按项目统计时,再乘以单位工程权重
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                var unitWork = unitWorks.FirstOrDefault(x => x.UnitWorkId == workPackage1.UnitWorkId);
							 | 
						|||
| 
								 | 
							
								                                if (unitWork != null)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    dCompleteMonth = Convert.ToDecimal((unitWork.Weights ?? 0) / 100) * dCompleteMonth;
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            else
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                if (unitWorkIds.Length > 1)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    var unitWork = unitWorks.FirstOrDefault(x => x.UnitWorkId == workPackage1.UnitWorkId);
							 | 
						|||
| 
								 | 
							
								                                    if (unitWork != null && totalUnitWorkWeights > 0)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        dCompleteMonth = Convert.ToDecimal((unitWork.Weights ?? 0) / totalUnitWorkWeights) * dCompleteMonth;
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            dComplete += dCompleteMonth;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    row[1] = dPlan.ToString();   //计划值
							 | 
						|||
| 
								 | 
							
								                    if (dPlanTotal != lastDPlanTotal) //当期累计计划值不等于上月累计计划值时,再保存累计计划值
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        row[2] = dPlanTotal.ToString();   //累计计划值
							 | 
						|||
| 
								 | 
							
								                        for (int j = 0; j < i; j++)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            if (string.IsNullOrEmpty(tb.Rows[j][2].ToString()))
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                tb.Rows[j][2] = lastDPlanTotal.ToString();
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    else
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        if (dPlanTotal == 0)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            row[2] = "0";   //累计计划值
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        else
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            row[2] = null;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    lastDPlanTotal = dPlanTotal;
							 | 
						|||
| 
								 | 
							
								                    row[3] = dComplete.ToString();   //实际值
							 | 
						|||
| 
								 | 
							
								                    if (dCompleteTotal != lastDCompleteTotal) //当期累计实际值不等于上月累计实际值时,再保存累计实际值
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        row[4] = dCompleteTotal.ToString();   //累计实际值
							 | 
						|||
| 
								 | 
							
								                        for (int j = 0; j < i; j++)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            if (string.IsNullOrEmpty(tb.Rows[j][4].ToString()))
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                tb.Rows[j][4] = lastDCompleteTotal.ToString();
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    else
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        if (dCompleteTotal == 0)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            row[4] = "0";   //累计实际值
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        else
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            row[4] = null;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    lastDCompleteTotal = dCompleteTotal;
							 | 
						|||
| 
								 | 
							
								                    tb.Rows.Add(row);
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            #endregion
							 | 
						|||
| 
								 | 
							
								            #region 按周
							 | 
						|||
| 
								 | 
							
								            else if (this.rblType.SelectedValue == "Week")
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                tb.Columns.Add("周");
							 | 
						|||
| 
								 | 
							
								                int w = 1;
							 | 
						|||
| 
								 | 
							
								                tb.Columns.Add("计划值");
							 | 
						|||
| 
								 | 
							
								                tb.Columns.Add("累计计划值");
							 | 
						|||
| 
								 | 
							
								                tb.Columns.Add("实际值");
							 | 
						|||
| 
								 | 
							
								                tb.Columns.Add("累计实际值");
							 | 
						|||
| 
								 | 
							
								                startDay = startDate;
							 | 
						|||
| 
								 | 
							
								                endDay = endDate;
							 | 
						|||
| 
								 | 
							
								                do
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    endDayItem = startDay.AddDays(6);
							 | 
						|||
| 
								 | 
							
								                    if (endDayItem > endDate)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        endDayItem = endDate;
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    DataRow row = tb.NewRow();
							 | 
						|||
| 
								 | 
							
								                    row[0] = "第" + w.ToString() + "周";
							 | 
						|||
| 
								 | 
							
								                    //对应周的记录
							 | 
						|||
| 
								 | 
							
								                    decimal dPlan = 0, dPlan1 = 0, dPlanTotal = 0, dComplete = 0, dComplete1 = 0, dCompleteWeek = 0, dCompleteTotal = 0;
							 | 
						|||
| 
								 | 
							
								                    //当周及之前所有工作包内容
							 | 
						|||
| 
								 | 
							
								                    var totalPlanCompleteControlItemAndCycles = controlItemAndCycles.Where(x => x.PlanCompleteDate < endDayItem);
							 | 
						|||
| 
								 | 
							
								                    //当周及之前所有验收合格记录
							 | 
						|||
| 
								 | 
							
								                    var totalSoptCheckDetails = soptCheckDetails.Where(x => x.SpotCheckDate < endDayItem);
							 | 
						|||
| 
								 | 
							
								                    foreach (var item in totalPlanCompleteControlItemAndCycles)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            var workPackage1 = workPackages.FirstOrDefault(x => x.WorkPackageId == item.WorkPackageId);
							 | 
						|||
| 
								 | 
							
								                            if (workPackage1 != null)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                //逐级递推计算权重计划值
							 | 
						|||
| 
								 | 
							
								                                dPlan1 = Convert.ToDecimal((workPackage1.Weights ?? 0) / 100) * Convert.ToDecimal(item.Weights / 100);
							 | 
						|||
| 
								 | 
							
								                                var workPackage2 = workPackages.FirstOrDefault(x => x.WorkPackageId == workPackage1.SuperWorkPackageId);
							 | 
						|||
| 
								 | 
							
								                                if (workPackage2 != null)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    dPlan1 = Convert.ToDecimal((workPackage2.Weights ?? 0) / 100) * dPlan1;
							 | 
						|||
| 
								 | 
							
								                                    var workPackage3 = workPackages.FirstOrDefault(x => x.WorkPackageId == workPackage2.SuperWorkPackageId);
							 | 
						|||
| 
								 | 
							
								                                    if (workPackage3 != null)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        dPlan1 = Convert.ToDecimal((workPackage3.Weights ?? 0) / 100) * dPlan1;
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            if (unitWorkIds.Length == 1 && unitWorkIds[0] == BLL.Const._Null)   //按项目统计时,再乘以单位工程权重
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                var unitWork = unitWorks.FirstOrDefault(x => x.UnitWorkId == workPackage1.UnitWorkId);
							 | 
						|||
| 
								 | 
							
								                                if (unitWork != null)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    dPlan1 = Convert.ToDecimal((unitWork.Weights ?? 0) / 100) * dPlan1;
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            else
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                if (unitWorkIds.Length > 1)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    var unitWork = unitWorks.FirstOrDefault(x => x.UnitWorkId == workPackage1.UnitWorkId);
							 | 
						|||
| 
								 | 
							
								                                    if (unitWork != null && totalUnitWorkWeights > 0)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        dPlan1 = Convert.ToDecimal((unitWork.Weights ?? 0) / totalUnitWorkWeights) * dPlan1;
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        if (item.PlanCompleteDate >= startDay)   //当周计划完成记录
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            dPlan += dPlan1;   //累加当周值
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        dPlanTotal += dPlan1;   //累加累计值
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    foreach (var item in controlItemAndCycles)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        //实际值
							 | 
						|||
| 
								 | 
							
								                        var itemSoptCheckDetails = soptCheckDetails.Where(x => x.ControlItemAndCycleId == item.ControlItemAndCycleId && x.SpotCheckDate < endDayItem);
							 | 
						|||
| 
								 | 
							
								                        var itemWeekSoptCheckDetails = soptCheckDetails.Where(x => x.ControlItemAndCycleId == item.ControlItemAndCycleId && x.SpotCheckDate >= startDay && x.SpotCheckDate < endDayItem.AddDays(1));
							 | 
						|||
| 
								 | 
							
								                        if (itemSoptCheckDetails.Count() > 0)  //存在验收合格的记录
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            //工作包实际值
							 | 
						|||
| 
								 | 
							
								                            dComplete1 = Convert.ToDecimal(itemSoptCheckDetails.Count()) / Convert.ToDecimal(item.CheckNum) * Convert.ToDecimal(item.Weights);
							 | 
						|||
| 
								 | 
							
								                            var workPackage1 = workPackages.FirstOrDefault(x => x.WorkPackageId == item.WorkPackageId);
							 | 
						|||
| 
								 | 
							
								                            if (workPackage1 != null)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                //逐级递推计算权重计划值
							 | 
						|||
| 
								 | 
							
								                                dComplete1 = Convert.ToDecimal((workPackage1.Weights ?? 0) / 100) * Convert.ToDecimal(dComplete1 / 100);
							 | 
						|||
| 
								 | 
							
								                                var workPackage2 = workPackages.FirstOrDefault(x => x.WorkPackageId == workPackage1.SuperWorkPackageId);
							 | 
						|||
| 
								 | 
							
								                                if (workPackage2 != null)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    dComplete1 = Convert.ToDecimal((workPackage2.Weights ?? 0) / 100) * dComplete1;
							 | 
						|||
| 
								 | 
							
								                                    var workPackage3 = workPackages.FirstOrDefault(x => x.WorkPackageId == workPackage2.SuperWorkPackageId);
							 | 
						|||
| 
								 | 
							
								                                    if (workPackage3 != null)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        dComplete1 = Convert.ToDecimal((workPackage3.Weights ?? 0) / 100) * dComplete1;
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            if (unitWorkIds.Length == 1 && unitWorkIds[0] == BLL.Const._Null)   //按项目统计时,再乘以单位工程权重
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                var unitWork = unitWorks.FirstOrDefault(x => x.UnitWorkId == workPackage1.UnitWorkId);
							 | 
						|||
| 
								 | 
							
								                                if (unitWork != null)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    dComplete1 = Convert.ToDecimal((unitWork.Weights ?? 0) / 100) * dComplete1;
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            else
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                if (unitWorkIds.Length > 1)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    var unitWork = unitWorks.FirstOrDefault(x => x.UnitWorkId == workPackage1.UnitWorkId);
							 | 
						|||
| 
								 | 
							
								                                    if (unitWork != null && totalUnitWorkWeights > 0)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        dComplete1 = Convert.ToDecimal((unitWork.Weights ?? 0) / totalUnitWorkWeights) * dComplete1;
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            dCompleteTotal += dComplete1;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        if (itemWeekSoptCheckDetails.Count() > 0)  //当周存在验收合格的记录
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            //工作包实际值
							 | 
						|||
| 
								 | 
							
								                            dCompleteWeek = Convert.ToDecimal(itemWeekSoptCheckDetails.Count()) / Convert.ToDecimal(item.CheckNum) * Convert.ToDecimal(item.Weights);
							 | 
						|||
| 
								 | 
							
								                            var workPackage1 = workPackages.FirstOrDefault(x => x.WorkPackageId == item.WorkPackageId);
							 | 
						|||
| 
								 | 
							
								                            if (workPackage1 != null)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                //逐级递推计算权重计划值
							 | 
						|||
| 
								 | 
							
								                                dCompleteWeek = Convert.ToDecimal((workPackage1.Weights ?? 0) / 100) * Convert.ToDecimal(dCompleteWeek / 100);
							 | 
						|||
| 
								 | 
							
								                                var workPackage2 = workPackages.FirstOrDefault(x => x.WorkPackageId == workPackage1.SuperWorkPackageId);
							 | 
						|||
| 
								 | 
							
								                                if (workPackage2 != null)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    dCompleteWeek = Convert.ToDecimal((workPackage2.Weights ?? 0) / 100) * dCompleteWeek;
							 | 
						|||
| 
								 | 
							
								                                    var workPackage3 = workPackages.FirstOrDefault(x => x.WorkPackageId == workPackage2.SuperWorkPackageId);
							 | 
						|||
| 
								 | 
							
								                                    if (workPackage3 != null)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        dCompleteWeek = Convert.ToDecimal((workPackage3.Weights ?? 0) / 100) * dCompleteWeek;
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            if (unitWorkIds.Length == 1 && unitWorkIds[0] == BLL.Const._Null)   //按项目统计时,再乘以单位工程权重
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                var unitWork = unitWorks.FirstOrDefault(x => x.UnitWorkId == workPackage1.UnitWorkId);
							 | 
						|||
| 
								 | 
							
								                                if (unitWork != null)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    dCompleteWeek = Convert.ToDecimal((unitWork.Weights ?? 0) / 100) * dCompleteWeek;
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            else
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                if (unitWorkIds.Length > 1)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    var unitWork = unitWorks.FirstOrDefault(x => x.UnitWorkId == workPackage1.UnitWorkId);
							 | 
						|||
| 
								 | 
							
								                                    if (unitWork != null && totalUnitWorkWeights > 0)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        dCompleteWeek = Convert.ToDecimal((unitWork.Weights ?? 0) / totalUnitWorkWeights) * dCompleteWeek;
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            dComplete += dCompleteWeek;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    row[1] = dPlan.ToString();   //计划值
							 | 
						|||
| 
								 | 
							
								                    if (dPlanTotal != lastDPlanTotal) //当期累计计划值不等于上月累计计划值时,再保存累计计划值
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        row[2] = dPlanTotal.ToString();   //累计计划值
							 | 
						|||
| 
								 | 
							
								                        for (int j = 0; j < tb.Rows.Count; j++)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            if (string.IsNullOrEmpty(tb.Rows[j][2].ToString()))
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                tb.Rows[j][2] = lastDPlanTotal.ToString();
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    else
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        if (dPlanTotal == 0)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            row[2] = "0";   //累计计划值
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        else
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            row[2] = null;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    lastDPlanTotal = dPlanTotal;
							 | 
						|||
| 
								 | 
							
								                    row[3] = dComplete.ToString();   //实际值
							 | 
						|||
| 
								 | 
							
								                    if (dCompleteTotal != lastDCompleteTotal) //当期累计实际值不等于上月累计实际值时,再保存累计实际值
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        row[4] = dCompleteTotal.ToString();   //累计实际值
							 | 
						|||
| 
								 | 
							
								                        for (int j = 0; j < tb.Rows.Count; j++)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            if (string.IsNullOrEmpty(tb.Rows[j][4].ToString()))
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                tb.Rows[j][4] = lastDCompleteTotal.ToString();
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    else
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        if (dCompleteTotal == 0)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            row[4] = "0";   //累计实际值
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        else
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            row[4] = null;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    lastDCompleteTotal = dCompleteTotal;
							 | 
						|||
| 
								 | 
							
								                    tb.Rows.Add(row);
							 | 
						|||
| 
								 | 
							
								                    startDay = startDay.AddDays(7);
							 | 
						|||
| 
								 | 
							
								                    w++;
							 | 
						|||
| 
								 | 
							
								                } while (startDay <= endDay);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            #endregion
							 | 
						|||
| 
								 | 
							
								            #region 按天
							 | 
						|||
| 
								 | 
							
								            else
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                tb.Columns.Add("天");
							 | 
						|||
| 
								 | 
							
								                tb.Columns.Add("计划值");
							 | 
						|||
| 
								 | 
							
								                tb.Columns.Add("累计计划值");
							 | 
						|||
| 
								 | 
							
								                tb.Columns.Add("实际值");
							 | 
						|||
| 
								 | 
							
								                tb.Columns.Add("累计实际值");
							 | 
						|||
| 
								 | 
							
								                startDay = startDate;
							 | 
						|||
| 
								 | 
							
								                endDay = endDate;
							 | 
						|||
| 
								 | 
							
								                do
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    endDayItem = startDay.AddDays(1);
							 | 
						|||
| 
								 | 
							
								                    if (endDayItem > endDate)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        endDayItem = endDate;
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    DataRow row = tb.NewRow();
							 | 
						|||
| 
								 | 
							
								                    row[0] = string.Format("{0:MM-dd}", startDay);
							 | 
						|||
| 
								 | 
							
								                    //对应天的记录
							 | 
						|||
| 
								 | 
							
								                    decimal dPlan = 0, dPlan1 = 0, dPlanTotal = 0, dComplete = 0, dComplete1 = 0, dCompleteDay = 0, dCompleteTotal = 0;
							 | 
						|||
| 
								 | 
							
								                    //当天及之前所有工作包内容
							 | 
						|||
| 
								 | 
							
								                    var totalPlanCompleteControlItemAndCycles = controlItemAndCycles.Where(x => x.PlanCompleteDate < endDayItem);
							 | 
						|||
| 
								 | 
							
								                    //当天及之前所有验收合格记录
							 | 
						|||
| 
								 | 
							
								                    var totalSoptCheckDetails = soptCheckDetails.Where(x => x.SpotCheckDate < endDayItem);
							 | 
						|||
| 
								 | 
							
								                    foreach (var item in totalPlanCompleteControlItemAndCycles)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            var workPackage1 = workPackages.FirstOrDefault(x => x.WorkPackageId == item.WorkPackageId);
							 | 
						|||
| 
								 | 
							
								                            if (workPackage1 != null)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                //逐级递推计算权重计划值
							 | 
						|||
| 
								 | 
							
								                                dPlan1 = Convert.ToDecimal((workPackage1.Weights ?? 0) / 100) * Convert.ToDecimal(item.Weights / 100);
							 | 
						|||
| 
								 | 
							
								                                var workPackage2 = workPackages.FirstOrDefault(x => x.WorkPackageId == workPackage1.SuperWorkPackageId);
							 | 
						|||
| 
								 | 
							
								                                if (workPackage2 != null)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    dPlan1 = Convert.ToDecimal((workPackage2.Weights ?? 0) / 100) * dPlan1;
							 | 
						|||
| 
								 | 
							
								                                    var workPackage3 = workPackages.FirstOrDefault(x => x.WorkPackageId == workPackage2.SuperWorkPackageId);
							 | 
						|||
| 
								 | 
							
								                                    if (workPackage3 != null)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        dPlan1 = Convert.ToDecimal((workPackage3.Weights ?? 0) / 100) * dPlan1;
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            if (unitWorkIds.Length == 1 && unitWorkIds[0] == BLL.Const._Null)   //按项目统计时,再乘以单位工程权重
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                var unitWork = unitWorks.FirstOrDefault(x => x.UnitWorkId == workPackage1.UnitWorkId);
							 | 
						|||
| 
								 | 
							
								                                if (unitWork != null)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    dPlan1 = Convert.ToDecimal((unitWork.Weights ?? 0) / 100) * dPlan1;
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            else
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                if (unitWorkIds.Length > 1)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    var unitWork = unitWorks.FirstOrDefault(x => x.UnitWorkId == workPackage1.UnitWorkId);
							 | 
						|||
| 
								 | 
							
								                                    if (unitWork != null && totalUnitWorkWeights > 0)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        dPlan1 = Convert.ToDecimal((unitWork.Weights ?? 0) / totalUnitWorkWeights) * dPlan1;
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        if (item.PlanCompleteDate >= startDay)   //当天计划完成记录
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            dPlan += dPlan1;   //累加当天值
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        dPlanTotal += dPlan1;   //累加累计值
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    foreach (var item in controlItemAndCycles)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        //实际值
							 | 
						|||
| 
								 | 
							
								                        var itemSoptCheckDetails = soptCheckDetails.Where(x => x.ControlItemAndCycleId == item.ControlItemAndCycleId && x.SpotCheckDate < endDayItem);
							 | 
						|||
| 
								 | 
							
								                        var itemDaySoptCheckDetails = soptCheckDetails.Where(x => x.ControlItemAndCycleId == item.ControlItemAndCycleId && x.SpotCheckDate >= startDay && x.SpotCheckDate < endDayItem);
							 | 
						|||
| 
								 | 
							
								                        if (itemSoptCheckDetails.Count() > 0)  //存在验收合格的记录
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            //工作包实际值
							 | 
						|||
| 
								 | 
							
								                            dComplete1 = Convert.ToDecimal(itemSoptCheckDetails.Count()) / Convert.ToDecimal(item.CheckNum) * Convert.ToDecimal(item.Weights);
							 | 
						|||
| 
								 | 
							
								                            var workPackage1 = workPackages.FirstOrDefault(x => x.WorkPackageId == item.WorkPackageId);
							 | 
						|||
| 
								 | 
							
								                            if (workPackage1 != null)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                //逐级递推计算权重计划值
							 | 
						|||
| 
								 | 
							
								                                dComplete1 = Convert.ToDecimal((workPackage1.Weights ?? 0) / 100) * Convert.ToDecimal(dComplete1 / 100);
							 | 
						|||
| 
								 | 
							
								                                var workPackage2 = workPackages.FirstOrDefault(x => x.WorkPackageId == workPackage1.SuperWorkPackageId);
							 | 
						|||
| 
								 | 
							
								                                if (workPackage2 != null)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    dComplete1 = Convert.ToDecimal((workPackage2.Weights ?? 0) / 100) * dComplete1;
							 | 
						|||
| 
								 | 
							
								                                    var workPackage3 = workPackages.FirstOrDefault(x => x.WorkPackageId == workPackage2.SuperWorkPackageId);
							 | 
						|||
| 
								 | 
							
								                                    if (workPackage3 != null)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        dComplete1 = Convert.ToDecimal((workPackage3.Weights ?? 0) / 100) * dComplete1;
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            if (unitWorkIds.Length == 1 && unitWorkIds[0] == BLL.Const._Null)   //按项目统计时,再乘以单位工程权重
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                var unitWork = unitWorks.FirstOrDefault(x => x.UnitWorkId == workPackage1.UnitWorkId);
							 | 
						|||
| 
								 | 
							
								                                if (unitWork != null)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    dComplete1 = Convert.ToDecimal((unitWork.Weights ?? 0) / 100) * dComplete1;
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            else
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                if (unitWorkIds.Length > 1)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    var unitWork = unitWorks.FirstOrDefault(x => x.UnitWorkId == workPackage1.UnitWorkId);
							 | 
						|||
| 
								 | 
							
								                                    if (unitWork != null && totalUnitWorkWeights > 0)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        dComplete1 = Convert.ToDecimal((unitWork.Weights ?? 0) / totalUnitWorkWeights) * dComplete1;
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            dCompleteTotal += dComplete1;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        if (itemDaySoptCheckDetails.Count() > 0)  //当天存在验收合格的记录
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            //工作包实际值
							 | 
						|||
| 
								 | 
							
								                            dCompleteDay = Convert.ToDecimal(itemDaySoptCheckDetails.Count()) / Convert.ToDecimal(item.CheckNum) * Convert.ToDecimal(item.Weights);
							 | 
						|||
| 
								 | 
							
								                            var workPackage1 = workPackages.FirstOrDefault(x => x.WorkPackageId == item.WorkPackageId);
							 | 
						|||
| 
								 | 
							
								                            if (workPackage1 != null)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                //逐级递推计算权重计划值
							 | 
						|||
| 
								 | 
							
								                                dCompleteDay = Convert.ToDecimal((workPackage1.Weights ?? 0) / 100) * Convert.ToDecimal(dCompleteDay / 100);
							 | 
						|||
| 
								 | 
							
								                                var workPackage2 = workPackages.FirstOrDefault(x => x.WorkPackageId == workPackage1.SuperWorkPackageId);
							 | 
						|||
| 
								 | 
							
								                                if (workPackage2 != null)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    dCompleteDay = Convert.ToDecimal((workPackage2.Weights ?? 0) / 100) * dCompleteDay;
							 | 
						|||
| 
								 | 
							
								                                    var workPackage3 = workPackages.FirstOrDefault(x => x.WorkPackageId == workPackage2.SuperWorkPackageId);
							 | 
						|||
| 
								 | 
							
								                                    if (workPackage3 != null)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        dCompleteDay = Convert.ToDecimal((workPackage3.Weights ?? 0) / 100) * dCompleteDay;
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            if (unitWorkIds.Length == 1 && unitWorkIds[0] == BLL.Const._Null)   //按项目统计时,再乘以单位工程权重
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                var unitWork = unitWorks.FirstOrDefault(x => x.UnitWorkId == workPackage1.UnitWorkId);
							 | 
						|||
| 
								 | 
							
								                                if (unitWork != null)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    dCompleteDay = Convert.ToDecimal((unitWork.Weights ?? 0) / 100) * dCompleteDay;
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            else
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                if (unitWorkIds.Length > 1)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    var unitWork = unitWorks.FirstOrDefault(x => x.UnitWorkId == workPackage1.UnitWorkId);
							 | 
						|||
| 
								 | 
							
								                                    if (unitWork != null && totalUnitWorkWeights > 0)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        dCompleteDay = Convert.ToDecimal((unitWork.Weights ?? 0) / totalUnitWorkWeights) * dCompleteDay;
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            dComplete += dCompleteDay;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    row[1] = dPlan.ToString();   //计划值
							 | 
						|||
| 
								 | 
							
								                    if (dPlanTotal != lastDPlanTotal) //当期累计计划值不等于上月累计计划值时,再保存累计计划值
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        row[2] = dPlanTotal.ToString();   //累计计划值
							 | 
						|||
| 
								 | 
							
								                        for (int j = 0; j < tb.Rows.Count; j++)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            if (string.IsNullOrEmpty(tb.Rows[j][2].ToString()))
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                tb.Rows[j][2] = lastDPlanTotal.ToString();
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    else
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        if (dPlanTotal == 0)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            row[2] = "0";   //累计计划值
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        else
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            row[2] = null;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    lastDPlanTotal = dPlanTotal;
							 | 
						|||
| 
								 | 
							
								                    row[3] = dComplete.ToString();   //实际值
							 | 
						|||
| 
								 | 
							
								                    if (dCompleteTotal != lastDCompleteTotal) //当期累计实际值不等于上月累计实际值时,再保存累计实际值
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        row[4] = dCompleteTotal.ToString();   //累计实际值
							 | 
						|||
| 
								 | 
							
								                        for (int j = 0; j < tb.Rows.Count; j++)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            if (string.IsNullOrEmpty(tb.Rows[j][4].ToString()))
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                tb.Rows[j][4] = lastDCompleteTotal.ToString();
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    else
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        if (dCompleteTotal == 0)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            row[4] = "0";   //累计实际值
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        else
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            row[4] = null;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    lastDCompleteTotal = dCompleteTotal;
							 | 
						|||
| 
								 | 
							
								                    tb.Rows.Add(row);
							 | 
						|||
| 
								 | 
							
								                    startDay = startDay.AddDays(1);
							 | 
						|||
| 
								 | 
							
								                } while (startDay <= endDay);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            #endregion
							 | 
						|||
| 
								 | 
							
								            this.ChartEV.CreateMaryChart(tb, 1300, 580, null);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        protected void drpProjectType_SelectedIndexChanged(object sender, EventArgs e)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            this.drpUnitWork.Items.Clear();
							 | 
						|||
| 
								 | 
							
								            string[] array = this.drpProjectType.SelectedValueArray;
							 | 
						|||
| 
								 | 
							
								            List<string> str = new List<string>();
							 | 
						|||
| 
								 | 
							
								            List<Model.WBS_UnitWork> list = new List<Model.WBS_UnitWork>();
							 | 
						|||
| 
								 | 
							
								            List<Model.WBS_UnitWork> list1 = new List<Model.WBS_UnitWork>();
							 | 
						|||
| 
								 | 
							
								            if (array.Length == 1 && array[0] == BLL.Const._Null)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                return;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            if (array.Length == 0)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                str.Add(BLL.Const._Null);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            else
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                foreach (var item in array)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    if (item != BLL.Const._Null)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        str.Add(item);
							 | 
						|||
| 
								 | 
							
								                        list = BLL.UnitWorkService.GetUnitWorkDownList(item, this.CurrUser.LoginProjectId);
							 | 
						|||
| 
								 | 
							
								                        for (int i = 0; i < list.Count; i++)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            list1.Add(list[i]);
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            ListItem[] ListItem = new ListItem[list1.Count()];
							 | 
						|||
| 
								 | 
							
								            for (int i = 0; i < list1.Count(); i++)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                if (list1[i].ProjectType == "1")
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    ListItem[i] = new ListItem(list1[i].UnitWorkCode + "-" + list1[i].UnitWorkName + "(建筑)", list1[i].UnitWorkId.ToString());
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                else
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    ListItem[i] = new ListItem(list1[i].UnitWorkCode + "-" + list1[i].UnitWorkName + "(安装)", list1[i].UnitWorkId.ToString());
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            this.drpUnitWork.DataTextField = "Text";
							 | 
						|||
| 
								 | 
							
								            this.drpUnitWork.DataValueField = "Value";
							 | 
						|||
| 
								 | 
							
								            this.drpUnitWork.DataSource = ListItem;
							 | 
						|||
| 
								 | 
							
								            this.drpUnitWork.DataBind();
							 | 
						|||
| 
								 | 
							
								            Funs.FineUIPleaseSelect(this.drpUnitWork);
							 | 
						|||
| 
								 | 
							
								            this.drpUnitWork.SelectedIndex = 0;
							 | 
						|||
| 
								 | 
							
								            this.drpProjectType.SelectedValueArray = str.ToArray();
							 | 
						|||
| 
								 | 
							
								            //UnitWorkService.InitUnitWorkDownList(drpUnitWork, this.CurrUser.LoginProjectId, true);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        protected void drpUnitWork_SelectedIndexChanged(object sender, EventArgs e)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            List<string> str = new List<string>();
							 | 
						|||
| 
								 | 
							
								            string[] array = this.drpUnitWork.SelectedValueArray;
							 | 
						|||
| 
								 | 
							
								            if (array.Length == 1 && array[0] == BLL.Const._Null)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                return;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            if (array.Length == 0)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                str.Add(BLL.Const._Null);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            else
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                foreach (var item in array)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    if (item != BLL.Const._Null)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        str.Add(item);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            this.drpUnitWork.SelectedValueArray = str.ToArray();
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |