/// <summary>
        /// 获取公司当年的整个指标总数
        /// </summary>
        public List <V_PlanTargetModel> GetAnnualPlanTarget(Guid TargetPlanID, int FinYear)
        {
            string sql = string.Empty;

            sql += @" SELECT FinYear ,TargetID ,  CompanyID ,SUM(Target)  AS Target FROM 
					 dbo.B_TargetPlanDetail WHERE TargetPlanID =@TargetPlanID AND FinYear =@FinYear 
					  GROUP BY FinYear ,TargetID ,CompanyID"                    ;

            SqlParameter pTargetPlanID = CreateSqlParameter("@TargetPlanID", System.Data.DbType.Guid, TargetPlanID);
            SqlParameter pYear         = CreateSqlParameter("@FinYear", System.Data.DbType.Int32, FinYear);

            DataTable dt = ExecuteReturnTable(sql, pTargetPlanID, pYear);

            List <V_PlanTargetModel> data = new List <V_PlanTargetModel>();

            if (dt != null && dt.Rows.Count > 0)
            {
                dt.Rows.Cast <System.Data.DataRow>().ForEach(row =>
                {
                    V_PlanTargetModel item = new V_PlanTargetModel();
                    ORMapping.DataRowToObject(row, item);
                    data.Add(item);
                });
            }

            return(data);
        }
        bool IsSingleTarget        = false; // Update 2015-5-13  是否单个指标

        public List <DictionaryVmodel> GetMissTargetRptDataSource(ReportInstance RptModel, C_System sys)
        {
            #region 初始化
            MissTargetList     = new List <MonthlyReportDetail>();
            MissTargetTextList = new List <MonthlyReportDetail>();
            ReportDetails      = new List <MonthlyReportDetail>();
            targetList         = new List <C_Target>();

            #endregion

            _System    = sys;
            FinMonth   = RptModel.FinMonth;
            FinYear    = RptModel.FinYear;
            targetList = RptModel._Target;


            List <VGroup> GroupList = new List <VGroup>();
            XElement      element   = null;

            //加载XML,系统配置信息
            element = _System.Configuration; //局部

            if (element.Elements("Misstarget").Elements("Group") != null)
            {
                List <XElement> Groups = element.Elements("Misstarget").Elements("Group").ToList();
                foreach (XElement group in Groups)
                {
                    GroupList.Add(new VGroup(group));
                }
            }

            //-------Update 2015 -5-13 区分未完成的时候是单个指标,还是组合指标 start
            if (element.Elements("Misstarget").ToList().Count > 0)
            {
                XElement subElement = element.Elements("Misstarget").ToList()[0];

                IsSingleTarget = subElement.GetAttributeValue("IsSingleTarget", false);
            }
            //-------Update 2015 -5-13 区分未完成的时候是单个指标,还是组合指标  End


            ReportDetails = RptModel.ReportDetails;

            //当月未完成A或B表指标
            if (ReportDetails != null && ReportDetails.Count > 0)
            {
                MissTargetList = ReportDetails; //当月的数据

                int lastFinMonth = 0;

                if (FinMonth == 1)
                {
                    lastFinMonth = 0;
                }
                else
                {
                    lastFinMonth = FinMonth - 1;
                }

                //找到上个月的数据 , 上个月的数据只能在A表中
                //List<A_MonthlyReportDetail> AList = A_MonthlyreportdetailOperator.Instance.GetAMonthlyreportdetailList(RptModel._System.ID, FinYear, lastFinMonth).ToList();
                List <A_MonthlyReportDetail> AList = A_MonthlyreportdetailOperator.Instance.GetAMonthlyReportDetailListForTargetPlanID(RptModel._System.ID, FinYear, lastFinMonth, RptModel.TargetPlanID).ToList();


                // 获取各个公司全年的总指标数据
                List <V_PlanTargetModel> VPlanTargeList = A_TargetplandetailOperator.Instance.GetAnnualPlanTarget(ReportDetails[0].TargetPlanID, FinYear);

                //上月的数据
                LastMissTargetList = new List <MonthlyReportDetail>();
                AList.ForEach(P => LastMissTargetList.Add(P.ToVModel()));

                foreach (MonthlyReportDetail item in MissTargetList)
                {
                    MonthlyReportDetail LastTempDetai = LastMissTargetList.Find(p => p.CompanyID == item.CompanyID && p.TargetID == item.TargetID);

                    V_PlanTargetModel PTM = VPlanTargeList.Find(Tp => Tp.CompanyID == item.CompanyID && Tp.TargetID == item.TargetID);

                    //将全年指标总数加进去
                    if (PTM != null)
                    {
                        item.AnnualTargetPlanValue = PTM.Target;
                    }

                    //判断上个月是否有数据
                    if (LastTempDetai != null)
                    {
                        item.LastNAccumulativeActualAmmount = LastTempDetai.NAccumulativeActualAmmount;
                        item.LastNAccumulativeDifference    = LastTempDetai.NAccumulativeDifference;
                        item.LastNAccumulativePlanAmmount   = LastTempDetai.NAccumulativePlanAmmount;
                        item.AddDifference    = item.NAccumulativeDifference - item.LastNAccumulativeDifference;
                        item.LastIsMissTarget = LastTempDetai.IsMissTarget;
                        item.LastIsCommitDate = LastTempDetai.IsCommitDate;
                    }
                    else
                    {
                        item.AddDifference = item.NAccumulativeDifference - 0;
                    }

                    MissTargetTextList.Add(item);
                }
            }

            Dictionary <string, object> Alldata = new Dictionary <string, object>();

            List <DictionaryVmodel> ReturnList = new List <DictionaryVmodel>();

            //补回情况,分组List
            foreach (var Group in GroupList.OrderBy(G => G.Senquence))
            {
                DictionaryVmodel Vmodel = new DictionaryVmodel();
                Vmodel.Name             = Group.TargetName;
                Vmodel.ObjValue         = FormartVData(Group, "MissTarget", Group.TargetName);
                Vmodel.Mark             = "Group";
                Vmodel.GuoupID          = Group.TargetName;
                Vmodel.TargetGroupCount = Group.TargetIDs.Count();
                Vmodel.SystemName       = _System.SystemName;
                ReturnList.Add(Vmodel);
            }
            return(ReturnList);
        }
        public List <DictionaryVmodel> GetCurrentMissTargetRptDataSource(ReportInstance RptModel, C_System sys)
        {
            _System       = sys;
            FinMonth      = RptModel.FinMonth;
            FinYear       = RptModel.FinYear;
            ReportDetails = RptModel.ReportDetails;

            List <MonthlyReportDetail> MissTargetList     = new List <MonthlyReportDetail>();
            List <MonthlyReportDetail> LastMissTargetList = new List <MonthlyReportDetail>();
            List <MonthlyReportDetail> MissTargetTextList = new List <MonthlyReportDetail>();

            //加载XML
            List <VGroup> lstVGroup = GetDirectlyMissTargetXml(_System.Configuration);

            //当月未完成A或B表指标
            if (ReportDetails != null && ReportDetails.Count > 0)
            {
                MissTargetList = ReportDetails; //当月的数据
                int lastFinMonth = 0;
                if (FinMonth == 1)
                {
                    lastFinMonth = 0;
                }
                else
                {
                    lastFinMonth = FinMonth - 1;
                }

                //找到上个月的数据 , 上个月的数据只能在A表中
                //List<A_MonthlyReportDetail> AList = A_MonthlyreportdetailOperator.Instance.GetAMonthlyreportdetailList(RptModel._System.ID, FinYear, lastFinMonth).ToList();
                List <A_MonthlyReportDetail> AList = A_MonthlyreportdetailOperator.Instance.GetAMonthlyReportDetailListForTargetPlanID(RptModel._System.ID, FinYear, lastFinMonth, RptModel.TargetPlanID).ToList();


                // 获取各个公司全年的总指标数据
                List <V_PlanTargetModel> VPlanTargeList = A_TargetplandetailOperator.Instance.GetAnnualPlanTarget(ReportDetails[0].TargetPlanID, FinYear);

                //上月的数据
                LastMissTargetList = new List <MonthlyReportDetail>();
                AList.ForEach(P => LastMissTargetList.Add(P.ToVModel()));

                foreach (MonthlyReportDetail item in MissTargetList)
                {
                    V_PlanTargetModel PTM = VPlanTargeList.Find(Tp => Tp.CompanyID == item.CompanyID && Tp.TargetID == item.TargetID);

                    //将全年指标总数加进去
                    if (PTM != null)
                    {
                        item.AnnualTargetPlanValue = PTM.Target;
                    }

                    //判断上个月是否有数据
                    MonthlyReportDetail LastMrd = LastMissTargetList.Find(p => p.CompanyID == item.CompanyID && p.TargetID == item.TargetID);
                    if (LastMrd != null)
                    {
                        item.LastNAccumulativeActualAmmount = LastMrd.NAccumulativeActualAmmount;
                        item.LastNAccumulativeDifference    = LastMrd.NAccumulativeDifference;
                        item.LastNAccumulativePlanAmmount   = LastMrd.NAccumulativePlanAmmount;
                        item.AddDifference = item.NAccumulativeDifference - item.LastNAccumulativeDifference;
                    }
                    else
                    {
                        item.AddDifference = item.NAccumulativeDifference - 0;
                    }

                    MissTargetTextList.Add(item);
                }
            }

            Dictionary <string, object> Alldata = new Dictionary <string, object>();

            List <DictionaryVmodel>    ReturnList                = new List <DictionaryVmodel>();
            List <MonthlyReportDetail> AllMissTargetDetail       = new List <MonthlyReportDetail>();
            List <MonthlyReportDetail> ListMonthReportDetailTemp = new List <MonthlyReportDetail>();

            ListMonthReportDetailTemp.Clear();
            AllMissTargetDetail.Clear();
            foreach (VGroup vGroup in lstVGroup)
            {
                foreach (Guid guid in vGroup.TargetIDs)
                {
                    ListMonthReportDetailTemp.AddRange(MissTargetTextList.Where(p => p.TargetID == guid));
                }
                AllMissTargetDetail.AddRange(FormatData(ListMonthReportDetailTemp, vGroup));
                ListMonthReportDetailTemp.Clear();
            }

            ReturnList.Add(new DictionaryVmodel("", AllMissTargetDetail));

            return(ReturnList);
        }