using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using BLL;
namespace FineUIPro.Web.Transfer.Chart
{
    public partial class TransferChart : PageBase
    {
        #region 定义项
        /// 
        /// 项目主键
        /// 
        public string ProjectId
        {
            get
            {
                return (string)ViewState["ProjectId"];
            }
            set
            {
                ViewState["ProjectId"] = value;
            }
        }
        #endregion
        #region 加载页面
        /// 
        /// 加载页面
        /// 
        /// 
        /// 
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.ProjectId = this.CurrUser.LoginProjectId;
                if (!string.IsNullOrEmpty(Request.Params["projectId"]))
                {
                    this.ProjectId = Request.Params["projectId"];
                }
                //this.AnalyseData();
            }
        }
        #endregion
        /// 
        /// 统计分析
        /// 
        /// 
        /// 
        protected void BtnAnalyse_Click(object sender, EventArgs e)
        {
            this.AnalyseData();
        }
        #region 统计
        private void AnalyseData() {
            if (string.IsNullOrEmpty(ProjectId))
            {
                Alert.ShowInTop("项目未获取到,请刷新页面。", MessageBoxIcon.Warning);
                return;
            }
            var sTime = DateTime.Now.AddDays(-7);
            var eTime = DateTime.Now;
            if (string.IsNullOrEmpty(txtStarTime.Text) || string.IsNullOrEmpty(txtEndTime.Text))
            {
                Alert.ShowInTop("请选择日期。", MessageBoxIcon.Warning);
                return;
            }
            else
            {
                sTime = Convert.ToDateTime(txtStarTime.Text);
                eTime = Convert.ToDateTime(txtEndTime.Text).AddMonths(1).AddDays(-1);
            }
            var AfinishedCountSum = 0;//总的实际完成数量
            var PfinishedCountSum = 0;//总的计划完成数量
            //获取总的实际完成数量和总的计划完成数量
            switch (drpType.SelectedValue)
            {
                #region 全部
                case "":
                    //根据当前计划完成日期 查询总的计划完成的数量
                    var systemListbyDate = Funs.DB.View_TransferDetail.Where(x => x.Projectid == ProjectId
                                 && x.FDate >= sTime
                                 && x.FDate <= eTime
                                 && x.Status.ToLower() == "finished").ToList();
                    //查询TestPackage 去重
                    var testpackageList = (from x in systemListbyDate select x.TestPackage).Distinct();
                    foreach (var item in testpackageList) {
                        //查询第12个表的数量
                        var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                         && x.Test_Package == item
                        ).ToList();
                        //如果查到
                        if (punchlistFromList.Count > 0)
                        {
                            //12表当前日期完成的数量
                            var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                            //如果完成的数量等于总得数量,则是完成
                            if (punchlistFromFinshCount == punchlistFromList.Count)
                            {
                                PfinishedCountSum += 1;
                            }
                        }
                        else {
                            PfinishedCountSum += 1;
                        }
                    }
                    //获取当前日期内实际完成的数量
                    systemListbyDate = Funs.DB.View_TransferDetail.Where(x => x.Projectid == ProjectId
                                 && x.ADate >= sTime
                                 && x.ADate <= eTime
                                 && x.Status.ToLower() == "finished").ToList();
                    testpackageList = (from x in systemListbyDate select x.TestPackage).Distinct();
                    foreach (var item in testpackageList)
                    {
                        //查询第12个表的数量
                        var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                         && x.Test_Package == item
                        ).ToList();
                        //如果查到
                        if (punchlistFromList.Count > 0)
                        {
                            //12表当前日期完成的数量
                            var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                            //如果完成的数量等于总得数量,则是完成
                            if (punchlistFromFinshCount == punchlistFromList.Count)
                            {
                                AfinishedCountSum += 1;
                            }
                        }
                        else
                        {
                            AfinishedCountSum += 1;
                        }
                    }
                    break;
                #endregion
                #region Piping
                
                case "Piping":
                    //根据当前计划完成日期 查询总的计划完成的数量
                     var systemListbyDate1 = Funs.DB.Transfer_Piping.Where(x => x.ProjectId == ProjectId
                                 && x.TestPackageFINISH >= sTime
                                 && x.TestPackageFINISH <= eTime
                                 && x.FINALStatus.ToLower() == "finished").ToList();
                    //查询TestPackage 去重
                     testpackageList = (from x in systemListbyDate1 select x.TestPackage).Distinct();
                    foreach (var item in testpackageList)
                    {
                        //查询第12个表的数量
                        var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                         && x.Test_Package == item
                        ).ToList();
                        //如果查到
                        if (punchlistFromList.Count > 0)
                        {
                            //12表当前日期完成的数量
                            var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                            //如果完成的数量等于总得数量,则是完成
                            if (punchlistFromFinshCount == punchlistFromList.Count)
                            {
                                PfinishedCountSum += 1;
                            }
                        }
                        else
                        {
                            PfinishedCountSum += 1;
                        }
                    }
                    //获取当前日期内实际完成的数量
                    systemListbyDate1 = Funs.DB.Transfer_Piping.Where(x => x.ProjectId == ProjectId
                                 && x.CompleteTime >= sTime
                                 && x.CompleteTime <= eTime
                                 && x.FINALStatus.ToLower() == "finished").ToList();
                    testpackageList = (from x in systemListbyDate1 select x.TestPackage).Distinct();
                    foreach (var item in testpackageList)
                    {
                        //查询第12个表的数量
                        var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                         && x.Test_Package == item
                        ).ToList();
                        //如果查到
                        if (punchlistFromList.Count > 0)
                        {
                            //12表当前日期完成的数量
                            var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                            //如果完成的数量等于总得数量,则是完成
                            if (punchlistFromFinshCount == punchlistFromList.Count)
                            {
                                AfinishedCountSum += 1;
                            }
                        }
                        else
                        {
                            AfinishedCountSum += 1;
                        }
                    }
                    break;
                #endregion
                #region Static Equipment
               
                case "Static Equipment":
                    //根据当前计划完成日期 查询总的计划完成的数量
                    var systemListbyDate2 = Funs.DB.Transfer_StaticEquipment.Where(x => x.ProjectId == ProjectId
                                && x.TestPackageFINISH >= sTime
                                && x.TestPackageFINISH <= eTime
                                && x.MechanicalFINALStatus.ToLower() == "finished").ToList();
                    //查询TestPackage 去重
                    testpackageList = (from x in systemListbyDate2 select x.TestPackage).Distinct();
                    foreach (var item in testpackageList)
                    {
                        //查询第12个表的数量
                        var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                         && x.Test_Package == item
                        ).ToList();
                        //如果查到
                        if (punchlistFromList.Count > 0)
                        {
                            //12表当前日期完成的数量
                            var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                            //如果完成的数量等于总得数量,则是完成
                            if (punchlistFromFinshCount == punchlistFromList.Count)
                            {
                                PfinishedCountSum += 1;
                            }
                        }
                        else
                        {
                            PfinishedCountSum += 1;
                        }
                    }
                    //获取当前日期内实际完成的数量
                    systemListbyDate2=Funs.DB.Transfer_StaticEquipment.Where(x => x.ProjectId == ProjectId
                                && x.CompleteTime >= sTime
                                && x.CompleteTime <= eTime
                                && x.MechanicalFINALStatus.ToLower() == "finished").ToList();
                    testpackageList = (from x in systemListbyDate2 select x.TestPackage).Distinct();
                    foreach (var item in testpackageList)
                    {
                        //查询第12个表的数量
                        var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                         && x.Test_Package == item
                        ).ToList();
                        //如果查到
                        if (punchlistFromList.Count > 0)
                        {
                            //12表当前日期完成的数量
                            var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                            //如果完成的数量等于总得数量,则是完成
                            if (punchlistFromFinshCount == punchlistFromList.Count)
                            {
                                AfinishedCountSum += 1;
                            }
                        }
                        else
                        {
                            AfinishedCountSum += 1;
                        }
                    }
                    break;
                #endregion
                #region Rotating Equipment
                
                case "Rotating Equipment":
                    //根据当前计划完成日期 查询总的计划完成的数量
                    var systemListbyDate3 = Funs.DB.Transfer_RotatingEquipment.Where(x => x.ProjectId == ProjectId
                                && x.TestPackageFINISH >= sTime
                                && x.TestPackageFINISH <= eTime
                                && x.MechanicalFINALStatus.ToLower() == "finished").ToList();
                    //查询TestPackage 去重
                    testpackageList = (from x in systemListbyDate3 select x.TestPackage).Distinct();
                    foreach (var item in testpackageList)
                    {
                        //查询第12个表的数量
                        var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                         && x.Test_Package == item
                        ).ToList();
                        //如果查到
                        if (punchlistFromList.Count > 0)
                        {
                            //12表当前日期完成的数量
                            var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                            //如果完成的数量等于总得数量,则是完成
                            if (punchlistFromFinshCount == punchlistFromList.Count)
                            {
                                PfinishedCountSum += 1;
                            }
                        }
                        else
                        {
                            PfinishedCountSum += 1;
                        }
                    }
                    //获取当前日期内实际完成的数量
                    systemListbyDate3 = Funs.DB.Transfer_RotatingEquipment.Where(x => x.ProjectId == ProjectId
                                  && x.CompleteTime >= sTime
                                  && x.CompleteTime <= eTime
                                  && x.MechanicalFINALStatus.ToLower() == "finished").ToList();
                    testpackageList = (from x in systemListbyDate3 select x.TestPackage).Distinct();
                    foreach (var item in testpackageList)
                    {
                        //查询第12个表的数量
                        var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                         && x.Test_Package == item
                        ).ToList();
                        //如果查到
                        if (punchlistFromList.Count > 0)
                        {
                            //12表当前日期完成的数量
                            var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                            //如果完成的数量等于总得数量,则是完成
                            if (punchlistFromFinshCount == punchlistFromList.Count)
                            {
                                AfinishedCountSum += 1;
                            }
                        }
                        else
                        {
                            AfinishedCountSum += 1;
                        }
                    }
                    break;
                #endregion
                #region Instrumentation
               
                case "Instrumentation":
                    //根据当前计划完成日期 查询总的计划完成的数量
                    var systemListbyDate4 = Funs.DB.Transfer_Instrumentation.Where(x => x.ProjectId == ProjectId
                                && x.Test_Package_FINISH >= sTime
                                && x.Test_Package_FINISH <= eTime
                                && x.FINAL_Status.ToLower() == "finished").ToList();
                    //查询TestPackage 去重
                    testpackageList = (from x in systemListbyDate4 select x.Test_Package).Distinct();
                    foreach (var item in testpackageList)
                    {
                        //查询第12个表的数量
                        var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                         && x.Test_Package == item
                        ).ToList();
                        //如果查到
                        if (punchlistFromList.Count > 0)
                        {
                            //12表当前日期完成的数量
                            var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                            //如果完成的数量等于总得数量,则是完成
                            if (punchlistFromFinshCount == punchlistFromList.Count)
                            {
                                PfinishedCountSum += 1;
                            }
                        }
                        else
                        {
                            PfinishedCountSum += 1;
                        }
                    }
                    //获取当前日期内实际完成的数量
                    systemListbyDate4 = Funs.DB.Transfer_Instrumentation.Where(x => x.ProjectId == ProjectId
                               && x.CompleteTime >= sTime
                               && x.CompleteTime <= eTime
                               && x.FINAL_Status.ToLower() == "finished").ToList();
                    testpackageList = (from x in systemListbyDate4 select x.Test_Package).Distinct();
                    foreach (var item in testpackageList)
                    {
                        //查询第12个表的数量
                        var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                         && x.Test_Package == item
                        ).ToList();
                        //如果查到
                        if (punchlistFromList.Count > 0)
                        {
                            //12表当前日期完成的数量
                            var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                            //如果完成的数量等于总得数量,则是完成
                            if (punchlistFromFinshCount == punchlistFromList.Count)
                            {
                                AfinishedCountSum += 1;
                            }
                        }
                        else
                        {
                            AfinishedCountSum += 1;
                        }
                    }
                    break;
                #endregion
                #region Electrical
              
                case "Electrical":
                    //根据当前计划完成日期 查询总的计划完成的数量
                    var systemListbyDate5 = Funs.DB.Transfer_Electrical.Where(x => x.ProjectId == ProjectId
                                && x.Test_Package_FINISH >= sTime
                                && x.Test_Package_FINISH <= eTime
                                && x.FINAL_Status.ToLower() == "finished").ToList();
                    //查询TestPackage 去重
                    testpackageList = (from x in systemListbyDate5 select x.Test_Package).Distinct();
                    foreach (var item in testpackageList)
                    {
                        //查询第12个表的数量
                        var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                         && x.Test_Package == item
                        ).ToList();
                        //如果查到
                        if (punchlistFromList.Count > 0)
                        {
                            //12表当前日期完成的数量
                            var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                            //如果完成的数量等于总得数量,则是完成
                            if (punchlistFromFinshCount == punchlistFromList.Count)
                            {
                                PfinishedCountSum += 1;
                            }
                        }
                        else
                        {
                            PfinishedCountSum += 1;
                        }
                    }
                    //获取当前日期内实际完成的数量
                    systemListbyDate5 = Funs.DB.Transfer_Electrical.Where(x => x.ProjectId == ProjectId
                               && x.CompleteTime >= sTime
                               && x.CompleteTime <= eTime
                               && x.FINAL_Status.ToLower() == "finished").ToList();
                    testpackageList = (from x in systemListbyDate5 select x.Test_Package).Distinct();
                    foreach (var item in testpackageList)
                    {
                        //查询第12个表的数量
                        var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                         && x.Test_Package == item
                        ).ToList();
                        //如果查到
                        if (punchlistFromList.Count > 0)
                        {
                            //12表当前日期完成的数量
                            var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                            //如果完成的数量等于总得数量,则是完成
                            if (punchlistFromFinshCount == punchlistFromList.Count)
                            {
                                AfinishedCountSum += 1;
                            }
                        }
                        else
                        {
                            AfinishedCountSum += 1;
                        }
                    }
                    break;
                #endregion
                #region Civil Structure
               
                case "Civil Structure":
                    //根据当前计划完成日期 查询总的计划完成的数量
                    var systemListbyDate6 = Funs.DB.Transfer_Civil_Structure.Where(x => x.ProjectId == ProjectId
                                && x.Test_Package_FINISH >= sTime
                                && x.Test_Package_FINISH <= eTime
                                && x.FINAL_Status.ToLower() == "finished").ToList();
                    //查询TestPackage 去重
                    testpackageList = (from x in systemListbyDate6 select x.Test_Package).Distinct();
                    foreach (var item in testpackageList)
                    {
                        //查询第12个表的数量
                        var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                         && x.Test_Package == item
                        ).ToList();
                        //如果查到
                        if (punchlistFromList.Count > 0)
                        {
                            //12表当前日期完成的数量
                            var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                            //如果完成的数量等于总得数量,则是完成
                            if (punchlistFromFinshCount == punchlistFromList.Count)
                            {
                                PfinishedCountSum += 1;
                            }
                        }
                        else
                        {
                            PfinishedCountSum += 1;
                        }
                    }
                    //获取当前日期内实际完成的数量
                    systemListbyDate6 = Funs.DB.Transfer_Civil_Structure.Where(x => x.ProjectId == ProjectId
                               && x.CompleteTime >= sTime
                               && x.CompleteTime <= eTime
                               && x.FINAL_Status.ToLower() == "finished").ToList();
                    testpackageList = (from x in systemListbyDate6 select x.Test_Package).Distinct();
                    foreach (var item in testpackageList)
                    {
                        //查询第12个表的数量
                        var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                         && x.Test_Package == item
                        ).ToList();
                        //如果查到
                        if (punchlistFromList.Count > 0)
                        {
                            //12表当前日期完成的数量
                            var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                            //如果完成的数量等于总得数量,则是完成
                            if (punchlistFromFinshCount == punchlistFromList.Count)
                            {
                                AfinishedCountSum += 1;
                            }
                        }
                        else
                        {
                            AfinishedCountSum += 1;
                        }
                    }
                    break;
                #endregion
                #region Firefighting
                
                case "Firefighting":
                    //根据当前计划完成日期 查询总的计划完成的数量
                    var systemListbyDate7 = Funs.DB.Transfer_Firefighting.Where(x => x.ProjectId == ProjectId
                                && x.Test_Package_FINISH >= sTime
                                && x.Test_Package_FINISH <= eTime
                                && x.FINAL_Status.ToLower() == "finished").ToList();
                    //查询TestPackage 去重
                    testpackageList = (from x in systemListbyDate7 select x.Test_Package).Distinct();
                    foreach (var item in testpackageList)
                    {
                        //查询第12个表的数量
                        var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                         && x.Test_Package == item
                        ).ToList();
                        //如果查到
                        if (punchlistFromList.Count > 0)
                        {
                            //12表当前日期完成的数量
                            var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                            //如果完成的数量等于总得数量,则是完成
                            if (punchlistFromFinshCount == punchlistFromList.Count)
                            {
                                PfinishedCountSum += 1;
                            }
                        }
                        else
                        {
                            PfinishedCountSum += 1;
                        }
                    }
                    //获取当前日期内实际完成的数量
                    systemListbyDate7 = Funs.DB.Transfer_Firefighting.Where(x => x.ProjectId == ProjectId
                               && x.CompleteTime >= sTime
                               && x.CompleteTime <= eTime
                               && x.FINAL_Status.ToLower() == "finished").ToList();
                    testpackageList = (from x in systemListbyDate7 select x.Test_Package).Distinct();
                    foreach (var item in testpackageList)
                    {
                        //查询第12个表的数量
                        var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                         && x.Test_Package == item
                        ).ToList();
                        //如果查到
                        if (punchlistFromList.Count > 0)
                        {
                            //12表当前日期完成的数量
                            var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                            //如果完成的数量等于总得数量,则是完成
                            if (punchlistFromFinshCount == punchlistFromList.Count)
                            {
                                AfinishedCountSum += 1;
                            }
                        }
                        else
                        {
                            AfinishedCountSum += 1;
                        }
                    }
                    break;
                #endregion
                #region Telecom
              
                case "Telecom":
                    //根据当前计划完成日期 查询总的计划完成的数量
                    var systemListbyDate8 = Funs.DB.Transfer_Telecom.Where(x => x.ProjectId == ProjectId
                                && x.Test_Package_FINISH >= sTime
                                && x.Test_Package_FINISH <= eTime
                                && x.FINAL_Status.ToLower() == "finished").ToList();
                    //查询TestPackage 去重
                    testpackageList = (from x in systemListbyDate8 select x.Test_Package).Distinct();
                    foreach (var item in testpackageList)
                    {
                        //查询第12个表的数量
                        var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                         && x.Test_Package == item
                        ).ToList();
                        //如果查到
                        if (punchlistFromList.Count > 0)
                        {
                            //12表当前日期完成的数量
                            var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                            //如果完成的数量等于总得数量,则是完成
                            if (punchlistFromFinshCount == punchlistFromList.Count)
                            {
                                PfinishedCountSum += 1;
                            }
                        }
                        else
                        {
                            PfinishedCountSum += 1;
                        }
                    }
                    //获取当前日期内实际完成的数量
                    systemListbyDate8 = Funs.DB.Transfer_Telecom.Where(x => x.ProjectId == ProjectId
                               && x.CompleteTime >= sTime
                               && x.CompleteTime <= eTime
                               && x.FINAL_Status.ToLower() == "finished").ToList();
                    testpackageList = (from x in systemListbyDate8 select x.Test_Package).Distinct();
                    foreach (var item in testpackageList)
                    {
                        //查询第12个表的数量
                        var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                         && x.Test_Package == item
                        ).ToList();
                        //如果查到
                        if (punchlistFromList.Count > 0)
                        {
                            //12表当前日期完成的数量
                            var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                            //如果完成的数量等于总得数量,则是完成
                            if (punchlistFromFinshCount == punchlistFromList.Count)
                            {
                                AfinishedCountSum += 1;
                            }
                        }
                        else
                        {
                            AfinishedCountSum += 1;
                        }
                    }
                    break;
                #endregion
                #region Plumbing
               
                case "Plumbing":
                    //根据当前计划完成日期 查询总的计划完成的数量
                    var systemListbyDate9 = Funs.DB.Transfer_Plumbing.Where(x => x.ProjectId == ProjectId
                                && x.Test_Package_FINISH >= sTime
                                && x.Test_Package_FINISH <= eTime
                                && x.FINAL_Status.ToLower() == "finished").ToList();
                    //查询TestPackage 去重
                    testpackageList = (from x in systemListbyDate9 select x.Test_Package).Distinct();
                    foreach (var item in testpackageList)
                    {
                        //查询第12个表的数量
                        var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                         && x.Test_Package == item
                        ).ToList();
                        //如果查到
                        if (punchlistFromList.Count > 0)
                        {
                            //12表当前日期完成的数量
                            var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                            //如果完成的数量等于总得数量,则是完成
                            if (punchlistFromFinshCount == punchlistFromList.Count)
                            {
                                PfinishedCountSum += 1;
                            }
                        }
                        else
                        {
                            PfinishedCountSum += 1;
                        }
                    }
                    //获取当前日期内实际完成的数量
                    systemListbyDate9 = Funs.DB.Transfer_Plumbing.Where(x => x.ProjectId == ProjectId
                               && x.CompleteTime >= sTime
                               && x.CompleteTime <= eTime
                               && x.FINAL_Status.ToLower() == "finished").ToList();
                    testpackageList = (from x in systemListbyDate9 select x.Test_Package).Distinct();
                    foreach (var item in testpackageList)
                    {
                        //查询第12个表的数量
                        var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                         && x.Test_Package == item
                        ).ToList();
                        //如果查到
                        if (punchlistFromList.Count > 0)
                        {
                            //12表当前日期完成的数量
                            var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                            //如果完成的数量等于总得数量,则是完成
                            if (punchlistFromFinshCount == punchlistFromList.Count)
                            {
                                AfinishedCountSum += 1;
                            }
                        }
                        else
                        {
                            AfinishedCountSum += 1;
                        }
                    }
                    break;
                #endregion
                #region HVAC
               
                case "HVAC":
                    //根据当前计划完成日期 查询总的计划完成的数量
                    var systemListbyDate10 = Funs.DB.Transfer_HVAC.Where(x => x.ProjectId == ProjectId
                                && x.Test_Package_FINISH >= sTime
                                && x.Test_Package_FINISH <= eTime
                                && x.FINAL_Status.ToLower() == "finished").ToList();
                    //查询TestPackage 去重
                    testpackageList = (from x in systemListbyDate10 select x.Test_Package).Distinct();
                    foreach (var item in testpackageList)
                    {
                        //查询第12个表的数量
                        var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                         && x.Test_Package == item
                        ).ToList();
                        //如果查到
                        if (punchlistFromList.Count > 0)
                        {
                            //12表当前日期完成的数量
                            var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                            //如果完成的数量等于总得数量,则是完成
                            if (punchlistFromFinshCount == punchlistFromList.Count)
                            {
                                PfinishedCountSum += 1;
                            }
                        }
                        else
                        {
                            PfinishedCountSum += 1;
                        }
                    }
                    //获取当前日期内实际完成的数量
                    systemListbyDate10 = Funs.DB.Transfer_HVAC.Where(x => x.ProjectId == ProjectId
                               && x.CompleteTime >= sTime
                               && x.CompleteTime <= eTime
                               && x.FINAL_Status.ToLower() == "finished").ToList();
                    testpackageList = (from x in systemListbyDate10 select x.Test_Package).Distinct();
                    foreach (var item in testpackageList)
                    {
                        //查询第12个表的数量
                        var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                         && x.Test_Package == item
                        ).ToList();
                        //如果查到
                        if (punchlistFromList.Count > 0)
                        {
                            //12表当前日期完成的数量
                            var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                            //如果完成的数量等于总得数量,则是完成
                            if (punchlistFromFinshCount == punchlistFromList.Count)
                            {
                                AfinishedCountSum += 1;
                            }
                        }
                        else
                        {
                            AfinishedCountSum += 1;
                        }
                    }
                    break;
                    #endregion
            }
            DataTable dtTime = new DataTable();
            dtTime.Columns.Add("日期", typeof(string));
            dtTime.Columns.Add("Actual Finished(%)", typeof(string));
            dtTime.Columns.Add("Plan Finished(%)", typeof(string));
            for (var i = sTime; i <= eTime; i = i.AddMonths(1)) {
                var AfinishedCount = 0;//实际完成数量
                var PfinishedCount = 0;//计划完成数量
                DataRow rowTime = dtTime.NewRow();
                rowTime["日期"] = string.Format("{0:yyyy-MM}", i);
                switch (drpType.SelectedValue)
                {
                    #region 全部
                    case "":
                        //递增形式,开始日期就是选中的开始日期
                        //根据当前计划完成日期 查询完成的数量
                        var systemListbyDate = Funs.DB.View_TransferDetail.Where(x => x.Projectid == ProjectId
                                     && x.FDate >= sTime
                                     && x.FDate < Convert.ToDateTime(rowTime["日期"]).AddMonths(1)
                                     && x.Status.ToLower()== "finished").ToList();
                        //查询TestPackage的总数量,状态是完成的。
                        var testpackageList = (from x in systemListbyDate select x.TestPackage).Distinct();
                        foreach (var item in testpackageList) {
                            //查询第12个表的数量
                            var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                             && x.Test_Package == item
                            ).ToList();
                            //如果查到
                            if (punchlistFromList.Count > 0)
                            {
                                //12表当前日期完成的数量
                                var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                                //如果完成的数量等于总得数量,则是完成
                                if (punchlistFromFinshCount == punchlistFromList.Count)
                                {
                                    PfinishedCount += 1;
                                }
                            }
                            else
                            {
                                PfinishedCount += 1;
                            }
                        }
                        //完成的数量:xx完成/总的完成 *100
                        var Pcount = ((Convert.ToDouble(PfinishedCount) / Convert.ToDouble(PfinishedCountSum)));
                        if (PfinishedCount==0)
                        {
                            Pcount = 0;
                        }
                        rowTime["Plan Finished(%)"] = Pcount;
                        //实际的完成数量
                        systemListbyDate = Funs.DB.View_TransferDetail.Where(x => x.Projectid == ProjectId
                                     && x.ADate >= sTime
                                     && x.ADate < Convert.ToDateTime(rowTime["日期"]).AddMonths(1)
                                     && x.Status.ToLower() == "finished").ToList();
                        //查询TestPackage的总数量,状态是完成的。
                        testpackageList = (from x in systemListbyDate select x.TestPackage).Distinct();
                        foreach (var item in testpackageList)
                        {
                            //查询第12个表的数量
                            var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                             && x.Test_Package == item
                            ).ToList();
                            //如果查到
                            if (punchlistFromList.Count > 0)
                            {
                                //12表当前日期完成的数量
                                var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                                //如果完成的数量等于总得数量,则是完成
                                if (punchlistFromFinshCount == punchlistFromList.Count)
                                {
                                    AfinishedCount += 1;
                                }
                            }
                            else
                            {
                                AfinishedCount += 1;
                            }
                        }
                        //完成的数量:xx完成/总的完成 *100
                        var Acount = ((Convert.ToDouble(AfinishedCount) / Convert.ToDouble(AfinishedCountSum)));
                        if (AfinishedCount==0)
                        {
                            Acount = 0;
                        }
                        rowTime["Actual Finished(%)"] = Acount;
                        dtTime.Rows.Add(rowTime);
                        continue;
                    #endregion
                    #region Piping
                    case "Piping":
                        //递增形式,开始日期就是选中的开始日期
                        //根据当前计划完成日期 查询完成的数量
                        var systemListbyDate1 = Funs.DB.Transfer_Piping.Where(x => x.ProjectId == ProjectId
                                     && x.TestPackageFINISH >= sTime
                                     && x.TestPackageFINISH < Convert.ToDateTime(rowTime["日期"]).AddMonths(1)
                                     && x.FINALStatus.ToLower() == "finished").ToList();
                        //查询TestPackage的总数量,状态是完成的。
                        testpackageList = (from x in systemListbyDate1 select x.TestPackage).Distinct();
                        foreach (var item in testpackageList)
                        {
                            //查询第12个表的数量
                            var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                             && x.Test_Package == item
                            ).ToList();
                            //如果查到
                            if (punchlistFromList.Count > 0)
                            {
                                //12表当前日期完成的数量
                                var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                                //如果完成的数量等于总得数量,则是完成
                                if (punchlistFromFinshCount == punchlistFromList.Count)
                                {
                                    PfinishedCount += 1;
                                }
                            }
                            else
                            {
                                PfinishedCount += 1;
                            }
                        }
                        //完成的数量:xx完成/总的完成 *100
                        Pcount = ((Convert.ToDouble(PfinishedCount) / Convert.ToDouble(PfinishedCountSum)));
                        if (PfinishedCount == 0)
                        {
                            Pcount = 0;
                        }
                        rowTime["Plan Finished(%)"] = Pcount;
                        //实际的完成数量
                        systemListbyDate1 = Funs.DB.Transfer_Piping.Where(x => x.ProjectId == ProjectId
                                     && x.CompleteTime >= sTime
                                     && x.CompleteTime < Convert.ToDateTime(rowTime["日期"]).AddMonths(1)
                                     && x.FINALStatus.ToLower() == "finished").ToList();
                        //查询TestPackage的总数量,状态是完成的。
                        testpackageList = (from x in systemListbyDate1 select x.TestPackage).Distinct();
                        foreach (var item in testpackageList)
                        {
                            //查询第12个表的数量
                            var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                             && x.Test_Package == item
                            ).ToList();
                            //如果查到
                            if (punchlistFromList.Count > 0)
                            {
                                //12表当前日期完成的数量
                                var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                                //如果完成的数量等于总得数量,则是完成
                                if (punchlistFromFinshCount == punchlistFromList.Count)
                                {
                                    AfinishedCount += 1;
                                }
                            }
                            else
                            {
                                AfinishedCount += 1;
                            }
                        }
                        //完成的数量:xx完成/总的完成 *100
                        if (AfinishedCount == 0)
                        {
                            Acount = 0;
                            rowTime["Actual Finished(%)"] = Acount;
                            dtTime.Rows.Add(rowTime);
                        }
                        else {
                            Acount = ((Convert.ToDouble(AfinishedCount) / Convert.ToDouble(AfinishedCountSum)));
                            rowTime["Actual Finished(%)"] = Acount;
                            dtTime.Rows.Add(rowTime);
                        }
                        
                        continue;
                    #endregion
                    #region Static Equipment
                    case "Static Equipment":
                        //递增形式,开始日期就是选中的开始日期
                        //根据当前计划完成日期 查询完成的数量
                        var systemListbyDate2 = Funs.DB.Transfer_StaticEquipment.Where(x => x.ProjectId == ProjectId
                                     && x.TestPackageFINISH >= sTime
                                     && x.TestPackageFINISH < Convert.ToDateTime(rowTime["日期"]).AddMonths(1)
                                     && x.MechanicalFINALStatus.ToLower() == "finished").ToList();
                        //查询TestPackage的总数量,状态是完成的。
                        testpackageList = (from x in systemListbyDate2 select x.TestPackage).Distinct();
                        foreach (var item in testpackageList)
                        {
                            //查询第12个表的数量
                            var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                             && x.Test_Package == item
                            ).ToList();
                            //如果查到
                            if (punchlistFromList.Count > 0)
                            {
                                //12表当前日期完成的数量
                                var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                                //如果完成的数量等于总得数量,则是完成
                                if (punchlistFromFinshCount == punchlistFromList.Count)
                                {
                                    PfinishedCount += 1;
                                }
                            }
                            else
                            {
                                PfinishedCount += 1;
                            }
                        }
                        //完成的数量:xx完成/总的完成 *100
                        Pcount = ((Convert.ToDouble(PfinishedCount) / Convert.ToDouble(PfinishedCountSum)));
                        if (PfinishedCount == 0)
                        {
                            Pcount = 0;
                        }
                        rowTime["Plan Finished(%)"] = Pcount;
                        //实际的完成数量
                        systemListbyDate2 = Funs.DB.Transfer_StaticEquipment.Where(x => x.ProjectId == ProjectId
                                     && x.CompleteTime >= sTime
                                     && x.CompleteTime < Convert.ToDateTime(rowTime["日期"]).AddMonths(1)
                                     && x.MechanicalFINALStatus.ToLower() == "finished").ToList();
                        //查询TestPackage的总数量,状态是完成的。
                        testpackageList = (from x in systemListbyDate2 select x.TestPackage).Distinct();
                        foreach (var item in testpackageList)
                        {
                            //查询第12个表的数量
                            var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                             && x.Test_Package == item
                            ).ToList();
                            //如果查到
                            if (punchlistFromList.Count > 0)
                            {
                                //12表当前日期完成的数量
                                var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                                //如果完成的数量等于总得数量,则是完成
                                if (punchlistFromFinshCount == punchlistFromList.Count)
                                {
                                    AfinishedCount += 1;
                                }
                            }
                            else
                            {
                                AfinishedCount += 1;
                            }
                        }
                        //完成的数量:xx完成/总的完成 *100
                        if (AfinishedCount == 0)
                        {
                            Acount = 0;
                            rowTime["Actual Finished(%)"] = Acount;
                            dtTime.Rows.Add(rowTime);
                        }
                        else
                        {
                            Acount = ((Convert.ToDouble(AfinishedCount) / Convert.ToDouble(AfinishedCountSum)));
                            rowTime["Actual Finished(%)"] = Acount;
                            dtTime.Rows.Add(rowTime);
                        }
                        continue;
                    #endregion
                    #region Rotating Equipment
                    case "Rotating Equipment":
                        //递增形式,开始日期就是选中的开始日期
                        //根据当前计划完成日期 查询完成的数量
                        var systemListbyDate3 = Funs.DB.Transfer_RotatingEquipment.Where(x => x.ProjectId == ProjectId
                                     && x.TestPackageFINISH >= sTime
                                     && x.TestPackageFINISH < Convert.ToDateTime(rowTime["日期"]).AddMonths(1)
                                     && x.MechanicalFINALStatus.ToLower() == "finished").ToList();
                        //查询TestPackage的总数量,状态是完成的。
                        testpackageList = (from x in systemListbyDate3 select x.TestPackage).Distinct();
                        foreach (var item in testpackageList)
                        {
                            //查询第12个表的数量
                            var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                             && x.Test_Package == item
                            ).ToList();
                            //如果查到
                            if (punchlistFromList.Count > 0)
                            {
                                //12表当前日期完成的数量
                                var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                                //如果完成的数量等于总得数量,则是完成
                                if (punchlistFromFinshCount == punchlistFromList.Count)
                                {
                                    PfinishedCount += 1;
                                }
                            }
                            else
                            {
                                PfinishedCount += 1;
                            }
                        }
                        //完成的数量:xx完成/总的完成 *100
                        Pcount = ((Convert.ToDouble(PfinishedCount) / Convert.ToDouble(PfinishedCountSum)));
                        if (PfinishedCount == 0)
                        {
                            Pcount = 0;
                        }
                        rowTime["Plan Finished(%)"] = Pcount;
                        //实际的完成数量
                        systemListbyDate3 = Funs.DB.Transfer_RotatingEquipment.Where(x => x.ProjectId == ProjectId
                                     && x.CompleteTime >= sTime
                                     && x.CompleteTime < Convert.ToDateTime(rowTime["日期"]).AddMonths(1)
                                     && x.MechanicalFINALStatus.ToLower() == "finished").ToList();
                        //查询TestPackage的总数量,状态是完成的。
                        testpackageList = (from x in systemListbyDate3 select x.TestPackage).Distinct();
                        foreach (var item in testpackageList)
                        {
                            //查询第12个表的数量
                            var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                             && x.Test_Package == item
                            ).ToList();
                            //如果查到
                            if (punchlistFromList.Count > 0)
                            {
                                //12表当前日期完成的数量
                                var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                                //如果完成的数量等于总得数量,则是完成
                                if (punchlistFromFinshCount == punchlistFromList.Count)
                                {
                                    AfinishedCount += 1;
                                }
                            }
                            else
                            {
                                AfinishedCount += 1;
                            }
                        }
                        //完成的数量:xx完成/总的完成 *100
                        if (AfinishedCount == 0)
                        {
                            Acount = 0;
                            rowTime["Actual Finished(%)"] = Acount;
                            dtTime.Rows.Add(rowTime);
                        }
                        else
                        {
                            Acount = ((Convert.ToDouble(AfinishedCount) / Convert.ToDouble(AfinishedCountSum)));
                            rowTime["Actual Finished(%)"] = Acount;
                            dtTime.Rows.Add(rowTime);
                        }
                        continue;
                    #endregion
                    #region Instrumentation
                    case "Transfer_Instrumentation":
                        //递增形式,开始日期就是选中的开始日期
                        //根据当前计划完成日期 查询完成的数量
                        var systemListbyDate4 = Funs.DB.Transfer_Instrumentation.Where(x => x.ProjectId == ProjectId
                                     && x.Test_Package_FINISH >= sTime
                                     && x.Test_Package_FINISH < Convert.ToDateTime(rowTime["日期"]).AddMonths(1)
                                     && x.FINAL_Status.ToLower() == "finished").ToList();
                        //查询TestPackage的总数量,状态是完成的。
                        testpackageList = (from x in systemListbyDate4 select x.Test_Package).Distinct();
                        foreach (var item in testpackageList)
                        {
                            //查询第12个表的数量
                            var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                             && x.Test_Package == item
                            ).ToList();
                            //如果查到
                            if (punchlistFromList.Count > 0)
                            {
                                //12表当前日期完成的数量
                                var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                                //如果完成的数量等于总得数量,则是完成
                                if (punchlistFromFinshCount == punchlistFromList.Count)
                                {
                                    PfinishedCount += 1;
                                }
                            }
                            else
                            {
                                PfinishedCount += 1;
                            }
                        }
                        //完成的数量:xx完成/总的完成 *100
                        Pcount = ((Convert.ToDouble(PfinishedCount) / Convert.ToDouble(PfinishedCountSum)));
                        if (PfinishedCount == 0)
                        {
                            Pcount = 0;
                        }
                        rowTime["Plan Finished(%)"] = Pcount;
                        //实际的完成数量
                        systemListbyDate4 = Funs.DB.Transfer_Instrumentation.Where(x => x.ProjectId == ProjectId
                                     && x.CompleteTime >= sTime
                                     && x.CompleteTime < Convert.ToDateTime(rowTime["日期"]).AddMonths(1)
                                     && x.FINAL_Status.ToLower() == "finished").ToList();
                        //查询TestPackage的总数量,状态是完成的。
                        testpackageList = (from x in systemListbyDate4 select x.Test_Package).Distinct();
                        foreach (var item in testpackageList)
                        {
                            //查询第12个表的数量
                            var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                             && x.Test_Package == item
                            ).ToList();
                            //如果查到
                            if (punchlistFromList.Count > 0)
                            {
                                //12表当前日期完成的数量
                                var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                                //如果完成的数量等于总得数量,则是完成
                                if (punchlistFromFinshCount == punchlistFromList.Count)
                                {
                                    AfinishedCount += 1;
                                }
                            }
                            else
                            {
                                AfinishedCount += 1;
                            }
                        }
                        //完成的数量:xx完成/总的完成 *100
                        if (AfinishedCount == 0)
                        {
                            Acount = 0;
                            rowTime["Actual Finished(%)"] = Acount;
                            dtTime.Rows.Add(rowTime);
                        }
                        else
                        {
                            Acount = ((Convert.ToDouble(AfinishedCount) / Convert.ToDouble(AfinishedCountSum)));
                            rowTime["Actual Finished(%)"] = Acount;
                            dtTime.Rows.Add(rowTime);
                        }
                        continue;
                    #endregion
                    #region Electrical
                    case "Electrical":
                        //递增形式,开始日期就是选中的开始日期
                        //根据当前计划完成日期 查询完成的数量
                        var systemListbyDate5 = Funs.DB.Transfer_Electrical.Where(x => x.ProjectId == ProjectId
                                     && x.Test_Package_FINISH >= sTime
                                     && x.Test_Package_FINISH < Convert.ToDateTime(rowTime["日期"]).AddMonths(1)
                                     && x.FINAL_Status.ToLower() == "finished").ToList();
                        //查询TestPackage的总数量,状态是完成的。
                        testpackageList = (from x in systemListbyDate5 select x.Test_Package).Distinct();
                        foreach (var item in testpackageList)
                        {
                            //查询第12个表的数量
                            var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                             && x.Test_Package == item
                            ).ToList();
                            //如果查到
                            if (punchlistFromList.Count > 0)
                            {
                                //12表当前日期完成的数量
                                var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                                //如果完成的数量等于总得数量,则是完成
                                if (punchlistFromFinshCount == punchlistFromList.Count)
                                {
                                    PfinishedCount += 1;
                                }
                            }
                            else
                            {
                                PfinishedCount += 1;
                            }
                        }
                        //完成的数量:xx完成/总的完成 *100
                        Pcount = ((Convert.ToDouble(PfinishedCount) / Convert.ToDouble(PfinishedCountSum)));
                        if (PfinishedCount == 0)
                        {
                            Pcount = 0;
                        }
                        rowTime["Plan Finished(%)"] = Pcount;
                        //实际的完成数量
                        systemListbyDate5 = Funs.DB.Transfer_Electrical.Where(x => x.ProjectId == ProjectId
                                     && x.CompleteTime >= sTime
                                     && x.CompleteTime < Convert.ToDateTime(rowTime["日期"]).AddMonths(1)
                                     && x.FINAL_Status.ToLower() == "finished").ToList();
                        //查询TestPackage的总数量,状态是完成的。
                        testpackageList = (from x in systemListbyDate5 select x.Test_Package).Distinct();
                        foreach (var item in testpackageList)
                        {
                            //查询第12个表的数量
                            var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                             && x.Test_Package == item
                            ).ToList();
                            //如果查到
                            if (punchlistFromList.Count > 0)
                            {
                                //12表当前日期完成的数量
                                var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                                //如果完成的数量等于总得数量,则是完成
                                if (punchlistFromFinshCount == punchlistFromList.Count)
                                {
                                    AfinishedCount += 1;
                                }
                            }
                            else
                            {
                                AfinishedCount += 1;
                            }
                        }
                        //完成的数量:xx完成/总的完成 *100
                        if (AfinishedCount == 0)
                        {
                            Acount = 0;
                            rowTime["Actual Finished(%)"] = Acount;
                            dtTime.Rows.Add(rowTime);
                        }
                        else
                        {
                            Acount = ((Convert.ToDouble(AfinishedCount) / Convert.ToDouble(AfinishedCountSum)));
                            rowTime["Actual Finished(%)"] = Acount;
                            dtTime.Rows.Add(rowTime);
                        }
                        continue;
                    #endregion
                    #region Civil Structure
                    case "Civil Structure":
                        //递增形式,开始日期就是选中的开始日期
                        //根据当前计划完成日期 查询完成的数量
                        var systemListbyDate6 = Funs.DB.Transfer_Civil_Structure.Where(x => x.ProjectId == ProjectId
                                     && x.Test_Package_FINISH >= sTime
                                     && x.Test_Package_FINISH < Convert.ToDateTime(rowTime["日期"]).AddMonths(1)
                                     && x.FINAL_Status.ToLower() == "finished").ToList();
                        //查询TestPackage的总数量,状态是完成的。
                        testpackageList = (from x in systemListbyDate6 select x.Test_Package).Distinct();
                        foreach (var item in testpackageList)
                        {
                            //查询第12个表的数量
                            var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                             && x.Test_Package == item
                            ).ToList();
                            //如果查到
                            if (punchlistFromList.Count > 0)
                            {
                                //12表当前日期完成的数量
                                var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                                //如果完成的数量等于总得数量,则是完成
                                if (punchlistFromFinshCount == punchlistFromList.Count)
                                {
                                    PfinishedCount += 1;
                                }
                            }
                            else
                            {
                                PfinishedCount += 1;
                            }
                        }
                        //完成的数量:xx完成/总的完成 *100
                        Pcount = ((Convert.ToDouble(PfinishedCount) / Convert.ToDouble(PfinishedCountSum)));
                        if (PfinishedCount == 0)
                        {
                            Pcount = 0;
                        }
                        rowTime["Plan Finished(%)"] = Pcount;
                        //实际的完成数量
                        systemListbyDate6 = Funs.DB.Transfer_Civil_Structure.Where(x => x.ProjectId == ProjectId
                                     && x.CompleteTime >= sTime
                                     && x.CompleteTime < Convert.ToDateTime(rowTime["日期"]).AddMonths(1)
                                     && x.FINAL_Status.ToLower() == "finished").ToList();
                        //查询TestPackage的总数量,状态是完成的。
                        testpackageList = (from x in systemListbyDate6 select x.Test_Package).Distinct();
                        foreach (var item in testpackageList)
                        {
                            //查询第12个表的数量
                            var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                             && x.Test_Package == item
                            ).ToList();
                            //如果查到
                            if (punchlistFromList.Count > 0)
                            {
                                //12表当前日期完成的数量
                                var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                                //如果完成的数量等于总得数量,则是完成
                                if (punchlistFromFinshCount == punchlistFromList.Count)
                                {
                                    AfinishedCount += 1;
                                }
                            }
                            else
                            {
                                AfinishedCount += 1;
                            }
                        }
                        //完成的数量:xx完成/总的完成 *100
                        if (AfinishedCount == 0)
                        {
                            Acount = 0;
                            rowTime["Actual Finished(%)"] = Acount;
                            dtTime.Rows.Add(rowTime);
                        }
                        else
                        {
                            Acount = ((Convert.ToDouble(AfinishedCount) / Convert.ToDouble(AfinishedCountSum)));
                            rowTime["Actual Finished(%)"] = Acount;
                            dtTime.Rows.Add(rowTime);
                        }
                        continue;
                    #endregion
                    #region Firefighting
                    case "Firefighting":
                        //递增形式,开始日期就是选中的开始日期
                        //根据当前计划完成日期 查询完成的数量
                        var systemListbyDate8 = Funs.DB.Transfer_Firefighting.Where(x => x.ProjectId == ProjectId
                                     && x.Test_Package_FINISH >= sTime
                                     && x.Test_Package_FINISH < Convert.ToDateTime(rowTime["日期"]).AddMonths(1)
                                     && x.FINAL_Status.ToLower() == "finished").ToList();
                        //查询TestPackage的总数量,状态是完成的。
                        testpackageList = (from x in systemListbyDate8 select x.Test_Package).Distinct();
                        foreach (var item in testpackageList)
                        {
                            //查询第12个表的数量
                            var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                             && x.Test_Package == item
                            ).ToList();
                            //如果查到
                            if (punchlistFromList.Count > 0)
                            {
                                //12表当前日期完成的数量
                                var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                                //如果完成的数量等于总得数量,则是完成
                                if (punchlistFromFinshCount == punchlistFromList.Count)
                                {
                                    PfinishedCount += 1;
                                }
                            }
                            else
                            {
                                PfinishedCount += 1;
                            }
                        }
                        //完成的数量:xx完成/总的完成 *100
                        Pcount = ((Convert.ToDouble(PfinishedCount) / Convert.ToDouble(PfinishedCountSum)));
                        if (PfinishedCount == 0)
                        {
                            Pcount = 0;
                        }
                        rowTime["Plan Finished(%)"] = Pcount;
                        //实际的完成数量
                        systemListbyDate8 = Funs.DB.Transfer_Firefighting.Where(x => x.ProjectId == ProjectId
                                     && x.CompleteTime >= sTime
                                     && x.CompleteTime < Convert.ToDateTime(rowTime["日期"]).AddMonths(1)
                                     && x.FINAL_Status.ToLower() == "finished").ToList();
                        //查询TestPackage的总数量,状态是完成的。
                        testpackageList = (from x in systemListbyDate8 select x.Test_Package).Distinct();
                        foreach (var item in testpackageList)
                        {
                            //查询第12个表的数量
                            var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                             && x.Test_Package == item
                            ).ToList();
                            //如果查到
                            if (punchlistFromList.Count > 0)
                            {
                                //12表当前日期完成的数量
                                var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                                //如果完成的数量等于总得数量,则是完成
                                if (punchlistFromFinshCount == punchlistFromList.Count)
                                {
                                    AfinishedCount += 1;
                                }
                            }
                            else
                            {
                                AfinishedCount += 1;
                            }
                        }
                        //完成的数量:xx完成/总的完成 *100
                        if (AfinishedCount == 0)
                        {
                            Acount = 0;
                            rowTime["Actual Finished(%)"] = Acount;
                            dtTime.Rows.Add(rowTime);
                        }
                        else
                        {
                            Acount = ((Convert.ToDouble(AfinishedCount) / Convert.ToDouble(AfinishedCountSum)));
                            rowTime["Actual Finished(%)"] = Acount;
                            dtTime.Rows.Add(rowTime);
                        }
                        continue;
                    #endregion
                    #region Telecom
                    case "Telecom":
                        //递增形式,开始日期就是选中的开始日期
                        //根据当前计划完成日期 查询完成的数量
                        var systemListbyDate9 = Funs.DB.Transfer_Telecom.Where(x => x.ProjectId == ProjectId
                                     && x.Test_Package_FINISH >= sTime
                                     && x.Test_Package_FINISH < Convert.ToDateTime(rowTime["日期"]).AddMonths(1)
                                     && x.FINAL_Status.ToLower() == "finished").ToList();
                        //查询TestPackage的总数量,状态是完成的。
                        testpackageList = (from x in systemListbyDate9 select x.Test_Package).Distinct();
                        foreach (var item in testpackageList)
                        {
                            //查询第12个表的数量
                            var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                             && x.Test_Package == item
                            ).ToList();
                            //如果查到
                            if (punchlistFromList.Count > 0)
                            {
                                //12表当前日期完成的数量
                                var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                                //如果完成的数量等于总得数量,则是完成
                                if (punchlistFromFinshCount == punchlistFromList.Count)
                                {
                                    PfinishedCount += 1;
                                }
                            }
                            else
                            {
                                PfinishedCount += 1;
                            }
                        }
                        //完成的数量:xx完成/总的完成 *100
                        Pcount = ((Convert.ToDouble(PfinishedCount) / Convert.ToDouble(PfinishedCountSum)));
                        if (PfinishedCount == 0)
                        {
                            Pcount = 0;
                        }
                        rowTime["Plan Finished(%)"] = Pcount;
                        //实际的完成数量
                        systemListbyDate9 = Funs.DB.Transfer_Telecom.Where(x => x.ProjectId == ProjectId
                                     && x.CompleteTime >= sTime
                                     && x.CompleteTime < Convert.ToDateTime(rowTime["日期"]).AddMonths(1)
                                     && x.FINAL_Status.ToLower() == "finished").ToList();
                        //查询TestPackage的总数量,状态是完成的。
                        testpackageList = (from x in systemListbyDate9 select x.Test_Package).Distinct();
                        foreach (var item in testpackageList)
                        {
                            //查询第12个表的数量
                            var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                             && x.Test_Package == item
                            ).ToList();
                            //如果查到
                            if (punchlistFromList.Count > 0)
                            {
                                //12表当前日期完成的数量
                                var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                                //如果完成的数量等于总得数量,则是完成
                                if (punchlistFromFinshCount == punchlistFromList.Count)
                                {
                                    AfinishedCount += 1;
                                }
                            }
                            else
                            {
                                AfinishedCount += 1;
                            }
                        }
                        //完成的数量:xx完成/总的完成 *100
                        if (AfinishedCount == 0)
                        {
                            Acount = 0;
                            rowTime["Actual Finished(%)"] = Acount;
                            dtTime.Rows.Add(rowTime);
                        }
                        else
                        {
                            Acount = ((Convert.ToDouble(AfinishedCount) / Convert.ToDouble(AfinishedCountSum)));
                            rowTime["Actual Finished(%)"] = Acount;
                            dtTime.Rows.Add(rowTime);
                        }
                        continue;
                    #endregion
                    #region Plumbing
                    case "Plumbing":
                        //递增形式,开始日期就是选中的开始日期
                        //根据当前计划完成日期 查询完成的数量
                        var systemListbyDate10 = Funs.DB.Transfer_Plumbing.Where(x => x.ProjectId == ProjectId
                                     && x.Test_Package_FINISH >= sTime
                                     && x.Test_Package_FINISH < Convert.ToDateTime(rowTime["日期"]).AddMonths(1)
                                     && x.FINAL_Status.ToLower() == "finished").ToList();
                        //查询TestPackage的总数量,状态是完成的。
                        testpackageList = (from x in systemListbyDate10 select x.Test_Package).Distinct();
                        foreach (var item in testpackageList)
                        {
                            //查询第12个表的数量
                            var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                             && x.Test_Package == item
                            ).ToList();
                            //如果查到
                            if (punchlistFromList.Count > 0)
                            {
                                //12表当前日期完成的数量
                                var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                                //如果完成的数量等于总得数量,则是完成
                                if (punchlistFromFinshCount == punchlistFromList.Count)
                                {
                                    PfinishedCount += 1;
                                }
                            }
                            else
                            {
                                PfinishedCount += 1;
                            }
                        }
                        //完成的数量:xx完成/总的完成 *100
                        Pcount = ((Convert.ToDouble(PfinishedCount) / Convert.ToDouble(PfinishedCountSum)));
                        if (PfinishedCount == 0)
                        {
                            Pcount = 0;
                        }
                        rowTime["Plan Finished(%)"] = Pcount;
                        //实际的完成数量
                        systemListbyDate10 = Funs.DB.Transfer_Plumbing.Where(x => x.ProjectId == ProjectId
                                     && x.CompleteTime >= sTime
                                     && x.CompleteTime < Convert.ToDateTime(rowTime["日期"]).AddMonths(1)
                                     && x.FINAL_Status.ToLower() == "finished").ToList();
                        //查询TestPackage的总数量,状态是完成的。
                        testpackageList = (from x in systemListbyDate10 select x.Test_Package).Distinct();
                        foreach (var item in testpackageList)
                        {
                            //查询第12个表的数量
                            var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                             && x.Test_Package == item
                            ).ToList();
                            //如果查到
                            if (punchlistFromList.Count > 0)
                            {
                                //12表当前日期完成的数量
                                var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                                //如果完成的数量等于总得数量,则是完成
                                if (punchlistFromFinshCount == punchlistFromList.Count)
                                {
                                    AfinishedCount += 1;
                                }
                            }
                            else
                            {
                                AfinishedCount += 1;
                            }
                        }
                        //完成的数量:xx完成/总的完成 *100
                        if (AfinishedCount == 0)
                        {
                            Acount = 0;
                            rowTime["Actual Finished(%)"] = Acount;
                            dtTime.Rows.Add(rowTime);
                        }
                        else
                        {
                            Acount = ((Convert.ToDouble(AfinishedCount) / Convert.ToDouble(AfinishedCountSum)));
                            rowTime["Actual Finished(%)"] = Acount;
                            dtTime.Rows.Add(rowTime);
                        }
                        continue;
                    #endregion
                    #region HVAC
                    case "HVAC":
                        //递增形式,开始日期就是选中的开始日期
                        //根据当前计划完成日期 查询完成的数量
                        var systemListbyDate11 = Funs.DB.Transfer_HVAC.Where(x => x.ProjectId == ProjectId
                                     && x.Test_Package_FINISH >= sTime
                                     && x.Test_Package_FINISH < Convert.ToDateTime(rowTime["日期"]).AddMonths(1)
                                     && x.FINAL_Status.ToLower() == "finished").ToList();
                        //查询TestPackage的总数量,状态是完成的。
                        testpackageList = (from x in systemListbyDate11 select x.Test_Package).Distinct();
                        foreach (var item in testpackageList)
                        {
                            //查询第12个表的数量
                            var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                             && x.Test_Package == item
                            ).ToList();
                            //如果查到
                            if (punchlistFromList.Count > 0)
                            {
                                //12表当前日期完成的数量
                                var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                                //如果完成的数量等于总得数量,则是完成
                                if (punchlistFromFinshCount == punchlistFromList.Count)
                                {
                                    PfinishedCount += 1;
                                }
                            }
                            else
                            {
                                PfinishedCount += 1;
                            }
                        }
                        //完成的数量:xx完成/总的完成 *100
                        Pcount = ((Convert.ToDouble(PfinishedCount) / Convert.ToDouble(PfinishedCountSum)));
                        if (PfinishedCount == 0)
                        {
                            Pcount = 0;
                        }
                        rowTime["Plan Finished(%)"] = Pcount;
                        //实际的完成数量
                        systemListbyDate11 = Funs.DB.Transfer_HVAC.Where(x => x.ProjectId == ProjectId
                                     && x.CompleteTime >= sTime
                                     && x.CompleteTime < Convert.ToDateTime(rowTime["日期"]).AddMonths(1)
                                     && x.FINAL_Status.ToLower() == "finished").ToList();
                        //查询TestPackage的总数量,状态是完成的。
                        testpackageList = (from x in systemListbyDate11 select x.Test_Package).Distinct();
                        foreach (var item in testpackageList)
                        {
                            //查询第12个表的数量
                            var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId
                             && x.Test_Package == item
                            ).ToList();
                            //如果查到
                            if (punchlistFromList.Count > 0)
                            {
                                //12表当前日期完成的数量
                                var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count();
                                //如果完成的数量等于总得数量,则是完成
                                if (punchlistFromFinshCount == punchlistFromList.Count)
                                {
                                    AfinishedCount += 1;
                                }
                            }
                            else
                            {
                                AfinishedCount += 1;
                            }
                        }
                        //完成的数量:xx完成/总的完成 *100
                        if (AfinishedCount == 0)
                        {
                            Acount = 0;
                            rowTime["Actual Finished(%)"] = Acount;
                            dtTime.Rows.Add(rowTime);
                        }
                        else
                        {
                            Acount = ((Convert.ToDouble(AfinishedCount) / Convert.ToDouble(AfinishedCountSum)));
                            rowTime["Actual Finished(%)"] = Acount;
                            dtTime.Rows.Add(rowTime);
                        }
                        continue;
                        #endregion
                }
            }
            this.ChartUc.CreateChartBaifenbi(BLL.ChartControlService.GetDataSourceChartByYijiao(dtTime, "PROGRESS REPORT", "Line", 1300, 600, false));
        }
        #endregion
    }
}