Example #1
0
        public static TargetPlanDetail ToVModel(this A_TargetPlanDetail value)
        {
            TargetPlanDetail result = new TargetPlanDetail
            {
                ID           = value.ID,
                SystemID     = value.SystemID,
                IsDeleted    = value.IsDeleted,
                FinMonth     = value.FinMonth,
                FinYear      = value.FinYear,
                CreateTime   = value.CreateTime,
                CreatorName  = value.CreatorName,
                ModifierName = value.ModifierName,
                ModifyTime   = value.ModifyTime,
                TargetID     = value.TargetID,
                CompanyID    = value.CompanyID,
                TargetPlanID = value.TargetPlanID,
                Target       = value.Target,
                Versionend   = value.Versionend,
                VersionStart = value.VersionStart,
                CompanyName  = StaticResource.Instance.GetCompanyModel(value.CompanyID).CompanyName,
                OpeningTime  = StaticResource.Instance.GetCompanyModel(value.CompanyID).OpeningTime,
            };

            return(result);
        }
Example #2
0
        /// <summary>
        /// 添加计划指标明细
        /// </summary>
        /// <param name="_BTargetPlan">计划指标</param>
        public void AddTargetPlanDetail(B_TargetPlan _BTargetPlan)
        {
            IList <B_TargetPlanDetail> listTargetPlanDetail = B_TargetplandetailOperator.Instance.GetTargetplandetailList(_BTargetPlan.ID);

            List <B_TargetPlanDetail> B_TargetPlanDetail = new List <B_TargetPlanDetail>();

            if (listTargetPlanDetail.Count == 0)
            {
                A_TargetPlan ATargetPlan = A_TargetplanOperator.Instance.GetTargetplanList(Guid.Parse(ddlSystem.SelectedValue), FinYear).FirstOrDefault();
                //如果A表有数据从A表取数据,否则取B表上一版本的数据。
                if (ATargetPlan != null)
                {
                    //从A表获取数据插入B表
                    _BTargetPlan.Description = ATargetPlan.Description;                                                                             //月报说明
                    B_TargetplanOperator.Instance.UpdateTargetplan(_BTargetPlan);                                                                   //更新月报说明

                    IList <A_TargetPlanDetail> listATargetPlanDetail = A_TargetplandetailOperator.Instance.GetTargetplandetailList(ATargetPlan.ID); // .Instance.GetAMonthlyreportdetailList(ATargetPlan.ID);
                    if (listATargetPlanDetail.Count > 0)
                    {
                        foreach (A_TargetPlanDetail A_TargetPlanDetail in listATargetPlanDetail)
                        {
                            A_TargetPlanDetail.TargetPlanID = _BTargetPlan.ID;
                            A_TargetPlanDetail.ID           = Guid.NewGuid();

                            B_TargetPlanDetail.Add(A_TargetPlanDetail.ToBModel());
                        }
                    }
                }
                else
                {
                    B_TargetPlan BTargetPlan = B_TargetplanOperator.Instance.GetTargetPlanByProgressOrApproved(Guid.Parse(ddlSystem.SelectedValue), FinYear);
                    if (BTargetPlan != null)
                    {
                        //从B表获取上一版本数据插入B表
                        IList <B_TargetPlanDetail> LastListBTargetPlanDetail = B_TargetplandetailOperator.Instance.GetTargetplandetailList(BTargetPlan.ID); // B_MonthlyreportdetailOperator.Instance.GetMonthlyreportdetailList(_BTargetPlan.ID);
                        if (LastListBTargetPlanDetail.Count > 0)
                        {
                            foreach (B_TargetPlanDetail TargetPlanDetail in LastListBTargetPlanDetail)
                            {
                                TargetPlanDetail.TargetPlanID = _BTargetPlan.ID;
                                TargetPlanDetail.ID           = Guid.NewGuid();
                                B_TargetPlanDetail.Add(TargetPlanDetail);
                            }
                        }
                    }
                }

                //判断当前B_TargetPlaID在明细表中是否有数据。
                if (B_TargetPlanDetail.Count > 0)
                {
                    _BTargetPlan.Status = 5;
                    B_TargetplanOperator.Instance.UpdateTargetplan(_BTargetPlan);                                  //更新计划指标表
                    B_TargetplandetailOperator.Instance.AddOrUpdateTargetPlanDetail(B_TargetPlanDetail, "Insert"); //更新计划指标明细表
                }
            }
        }
Example #3
0
        public static B_TargetPlanDetail ToBModel(this A_TargetPlanDetail value)
        {
            B_TargetPlanDetail result = new B_TargetPlanDetail
            {
                ID           = value.ID,
                SystemID     = value.SystemID,
                IsDeleted    = value.IsDeleted,
                FinMonth     = value.FinMonth,
                FinYear      = value.FinYear,
                CreateTime   = value.CreateTime,
                CreatorName  = value.CreatorName,
                ModifierName = value.ModifierName,
                ModifyTime   = value.ModifyTime,
                TargetID     = value.TargetID,
                CompanyID    = value.CompanyID,
                TargetPlanID = value.TargetPlanID,
                Target       = value.Target,
                Versionend   = value.Versionend,
                VersionStart = value.VersionStart,
            };

            return(result);
        }
Example #4
0
        /// <summary>
        /// 项目公司的总数(第一步:1)
        /// </summary>
        /// <param name="_TargetList">指标基础表</param>
        /// <param name="_ReportDetail">明细数据</param>
        /// <param name="_TargetPlanList">计划指标表</param>
        /// <param name="companyModel">公司实体</param>
        /// <param name="IsQuery">上报:false ,查询:true (因有历史版本,所以需要区分)</param>
        /// <returns></returns>
        private List <V_ProjectTarget> SingleProTargetLists(List <C_Target> _TargetList, List <MonthlyReportDetail> _ReportDetail, List <A_TargetPlanDetail> _TargetPlanList, C_Company companyModel, bool IsQuery)
        {
            /* 此段代码的解释:
             * 这里计算项目系统的合计数据,因计划数都是从指标计划表中获取,而实际数都是从人员上报得到的,导致不同的数据源
             * 这里考虑到以后计算方便,只在基础表C_Company表中添加了每个系统的“南区合计”的公司,但是在B_MonthlyReportDetail表中不存储数据
             * 同时在指标计划表中,也做了“南区合计”的指标按月分解数据,这样便于取数和计算。
             * 本方法主要就是将这些数据拼装成一条新的List,追加到现有的明细表上,好用于前台的展示
             */

            List <V_ProjectTarget> _ProTargetLists = new List <V_ProjectTarget>();


            List <A_TargetPlanDetail> TargetPlanListByYear = new List <A_TargetPlanDetail>();

            //如果从查询页面进入
            if (IsQuery)
            {
                //查询的时候按照版本查询,从B表中查出后转换成A表的数据
                List <B_TargetPlanDetail> _bTargetPlanList = new List <B_TargetPlanDetail>();

                _bTargetPlanList = B_TargetplandetailOperator.Instance.GetTargetplandetailList(_ReportDetail[0].TargetPlanID).ToList();

                _bTargetPlanList.ForEach(tp => TargetPlanListByYear.Add(tp.ToAModel()));
            }
            else
            {
                //获取当前的系统指标
                TargetPlanListByYear = StaticResource.Instance.GetTargetPlanList(companyModel.SystemID, FinYear);
            }


            foreach (C_Target itemTarget in _TargetList.OrderBy(g => g.Sequence))
            {
                V_ProjectTarget VModel = new V_ProjectTarget();

                //从明细表中获取数据
                MonthlyReportDetail tempModel = null;
                if (_ReportDetail.Count > 0)
                {
                    tempModel = _ReportDetail.Find(f => f.TargetID == itemTarget.ID);
                }


                if (tempModel == null)
                {
                    tempModel = new MonthlyReportDetail();

                    VModel.ProMonthlyReportDetailID = Guid.Empty;
                }
                VModel.ProMonthlyReportDetailID = tempModel.ID;
                VModel.ProTargetID         = itemTarget.ID;
                VModel.ProTargetName       = itemTarget.TargetName;
                VModel.ProTargetSequence   = itemTarget.Sequence;
                VModel.ProCompayID         = companyModel.ID;
                VModel.IsMissTarget        = false;
                VModel.IsMissTargetCurrent = false;
                VModel.Counter             = 0;
                //VModel.FirstMissTargetDate = tempModel.FirstMissTargetDate;

                //去指标分解表中找到 区域合计的指标
                A_TargetPlanDetail targetModel = null;
                if (_TargetPlanList.Count > 0)
                {
                    targetModel = _TargetPlanList.Find(f => f.TargetID == itemTarget.ID && f.FinMonth == FinMonth && f.FinYear == FinYear && f.CompanyID == companyModel.ID);

                    if (targetModel != null)
                    {
                        //区域:当月计划数 ,这个从指标计划中获取
                        VModel.NPlanAmmount = targetModel.Target;                                                                                                                                      //区域:当月计划数 ,这个从指标计划中获取
                        //区域:当月累计计划数
                        VModel.NAccumulativePlanAmmount = TargetPlanListByYear.Where(p => p.FinMonth <= FinMonth && p.TargetID == itemTarget.ID && p.CompanyID == companyModel.ID).Sum(s => s.Target); // ?累计的指标怎么算?

                        //年度计划值
                        VModel.NPlanAmmountByYear = TargetPlanListByYear.Where(t => t.CompanyID == companyModel.ID && t.TargetID == itemTarget.ID).Sum(s => s.Target);
                    }
                    else
                    {
                        VModel.NPlanAmmount = 0;                                                                                                                                                       //区域:当月计划数 ,这个从指标计划中获取
                        //区域:当月累计计划数
                        VModel.NAccumulativePlanAmmount = TargetPlanListByYear.Where(p => p.FinMonth <= FinMonth && p.TargetID == itemTarget.ID && p.CompanyID == companyModel.ID).Sum(s => s.Target); // ?累计的指标怎么算?

                        //年度计划值
                        VModel.NPlanAmmountByYear = TargetPlanListByYear.Where(t => t.CompanyID == companyModel.ID && t.TargetID == itemTarget.ID).Sum(s => s.Target);
                    }
                }
                else
                {
                    //没有给计划指标
                    VModel.NPlanAmmount             = 0;
                    VModel.NAccumulativePlanAmmount = 0;
                    VModel.NPlanAmmountByYear       = 0;
                    //   continue;
                }


                if (_ReportDetail.Count > 0)
                {
                    VModel.NActualAmmount = _ReportDetail.Where(p => p.FinMonth <= FinMonth && p.TargetID == itemTarget.ID).Sum(p => p.NActualAmmount);  //区域:从B表明细数据中汇总当月的实际数
                }
                else
                {
                    VModel.NActualAmmount = 0;
                }

                if (VModel.NPlanAmmount == 0)
                {
                    VModel.NActualRate  = "";
                    VModel.NDisplayRate = "/";
                }
                else
                {
                    VModel.NActualRate  = "";
                    VModel.NDisplayRate = Math.Round((VModel.NActualAmmount / VModel.NPlanAmmount), 5, MidpointRounding.AwayFromZero).ToString("P1");;
                }

                //区域:当月累计计划数
                // VModel.NAccumulativePlanAmmount = TargetPlanListByYear.Where(p => p.FinMonth <= FinMonth && p.TargetID == itemTarget.ID && p.CompanyID == companyModel.ID).Sum(s => s.Target);  // ?累计的指标怎么算?

                if (_ReportDetail.Count > 0)
                {
                    VModel.NAccumulativeActualAmmount = _ReportDetail.Where(p => p.FinMonth <= FinMonth && p.TargetID == itemTarget.ID).Sum(p => p.NAccumulativeActualAmmount);
                }
                else
                {
                    VModel.NAccumulativeActualAmmount = 0;
                }

                if (VModel.NAccumulativePlanAmmount == 0)
                {
                    VModel.NAccumulativeActualRate  = "";
                    VModel.NAccumulativeDisplayRate = "/";
                }
                else
                {
                    VModel.NAccumulativeActualRate  = "";
                    VModel.NAccumulativeDisplayRate = Math.Round((VModel.NAccumulativeActualAmmount / VModel.NAccumulativePlanAmmount), 5, MidpointRounding.AwayFromZero).ToString("P1");;
                }

                VModel.NActualAmmountByYear = 0;

                ////年度计划值
                //VModel.NPlanAmmountByYear = TargetPlanListByYear.Where(t => t.CompanyID == companyModel.ID && t.TargetID == itemTarget.ID).Sum(s => s.Target);

                //年度指标完成比例
                if (VModel.NPlanAmmountByYear != 0)
                {
                    VModel.NDisplayRateByYear = Math.Round((VModel.NAccumulativeActualAmmount / VModel.NPlanAmmountByYear), 5, MidpointRounding.AwayFromZero).ToString("P1");
                }
                else
                {
                    VModel.NPlanAmmountByYear = 0;
                    VModel.NDisplayRateByYear = "/";
                }
                VModel.NActualRateByYear = "";

                _ProTargetLists.Add(VModel);
            }

            return(_ProTargetLists);
        }
Example #5
0
        /// <summary>
        /// 项目公司的指标
        /// </summary>
        /// <param name="companyModel"></param>
        /// <param name="_isPlan">是获取计划指标分解表</param>
        /// <param name="_ReportDetail">明细数据</param>
        /// <param name="_TargetPlanList">指标分解表</param>
        /// <returns></returns>
        private List <V_ProjectTarget> ProTargetLists(C_Company companyModel, string _isPlan, List <MonthlyReportDetail> _ReportDetail, List <A_TargetPlanDetail> _TargetPlanList)
        {
            List <V_ProjectTarget> _ProTargetLists = new List <V_ProjectTarget>();

            List <C_Target> targetList = StaticResource.Instance.TargetList[_SystemID].ToList();

            //获取当前的系统指标
            List <A_TargetPlanDetail> TargetPlanListByYear = StaticResource.Instance.GetTargetPlanList(_System.ID, FinYear);

            //循环指标

            if (_isPlan == "ProPlan") //计划指标分解表
            {
                foreach (C_Target itemTarget in targetList.OrderBy(o => o.Sequence))
                {
                    V_ProjectTarget VModel = new V_ProjectTarget();

                    A_TargetPlanDetail targetModel = null;
                    if (_TargetPlanList.Count > 0)
                    {
                        targetModel = _TargetPlanList.Find(f => f.TargetID == itemTarget.ID);
                    }
                    else
                    {
                        continue;
                    }

                    if (targetModel != null && targetModel.ID != Guid.Empty)
                    {
                        VModel.ProTargetID         = itemTarget.ID;
                        VModel.ProTargetName       = itemTarget.TargetName;
                        VModel.ProTargetSequence   = itemTarget.Sequence;
                        VModel.ProCompayID         = companyModel.ID;
                        VModel.IsMissTarget        = false;
                        VModel.IsMissTargetCurrent = false;
                        VModel.Counter             = 0;

                        VModel.NPlanAmmount   = targetModel.Target;
                        VModel.NActualAmmount = 0;

                        VModel.NAccumulativePlanAmmount   = TargetPlanListByYear.Where(p => p.FinMonth <= FinMonth && p.TargetID == itemTarget.ID && p.CompanyID == companyModel.ID).Sum(s => s.Target); // ?累计的指标怎么算?
                        VModel.NAccumulativeActualAmmount = 0;

                        _ProTargetLists.Add(VModel);
                    }
                }
            }
            else //上报过,在明细表中了
            {
                foreach (C_Target itemTarget in targetList.OrderBy(o => o.Sequence))
                {
                    V_ProjectTarget VModel = new V_ProjectTarget();

                    MonthlyReportDetail tempModel = null;
                    if (_ReportDetail.Count > 0)
                    {
                        tempModel = _ReportDetail.Find(f => f.TargetID == itemTarget.ID);
                    }
                    else
                    {
                        continue;
                    }
                    if (tempModel != null && tempModel.ID != Guid.Empty)
                    {
                        VModel.ProMonthlyReportDetailID = tempModel.ID;
                        VModel.ProTargetID         = itemTarget.ID;
                        VModel.ProTargetName       = tempModel.TargetName;
                        VModel.ProTargetSequence   = itemTarget.Sequence;
                        VModel.ProCompayID         = companyModel.ID;
                        VModel.IsMissTarget        = tempModel.IsMissTarget;
                        VModel.IsMissTargetCurrent = tempModel.IsMissTargetCurrent;
                        VModel.Counter             = tempModel.Counter;
                        VModel.FirstMissTargetDate = tempModel.FirstMissTargetDate;

                        VModel.NPlanAmmount   = tempModel.NPlanAmmount;
                        VModel.NActualAmmount = tempModel.NActualAmmount;
                        VModel.NActualRate    = tempModel.NActualRate;
                        VModel.NDisplayRate   = tempModel.NDisplayRate;

                        VModel.NAccumulativePlanAmmount   = tempModel.NAccumulativePlanAmmount;
                        VModel.NAccumulativeActualAmmount = tempModel.NAccumulativeActualAmmount;
                        VModel.NAccumulativeActualRate    = tempModel.NAccumulativeActualRate;
                        VModel.NAccumulativeDisplayRate   = tempModel.NAccumulativeDisplayRate;

                        VModel.NActualAmmountByYear = 0;

                        //年度计划值
                        VModel.NPlanAmmountByYear = TargetPlanListByYear.Where(t => t.CompanyID == companyModel.ID && t.TargetID == itemTarget.ID).Sum(s => s.Target);
                        if (VModel.NPlanAmmountByYear != 0)
                        {
                            VModel.NDisplayRateByYear = Math.Round((VModel.NAccumulativeActualAmmount / VModel.NPlanAmmountByYear), 5, MidpointRounding.AwayFromZero).ToString("P1");
                        }
                        else
                        {
                            VModel.NPlanAmmountByYear = 0;
                            VModel.NDisplayRateByYear = "/";
                        }
                        VModel.NActualRateByYear = "";

                        _ProTargetLists.Add(VModel);
                    }
                }
            }
            return(_ProTargetLists);
        }
        public B_MonthlyReportDetail Calculation(B_MonthlyReportDetail RptDetail, bool WithCounter = true)
        {
            B_MonthlyReportDetail rpt = RptDetail;

            rpt.ReturnType          = 0;
            rpt.Counter             = 0;
            rpt.IsMissTarget        = false;
            rpt.IsMissTargetCurrent = false;

            C_Target T          = StaticResource.Instance.TargetList[RptDetail.SystemID].Find(t => t.ID == RptDetail.TargetID);
            bool     IsBaseline = false;

            if (T != null && T.BaseLine.Year == rpt.FinYear && T.BaseLine.Month == rpt.FinMonth)
            {
                IsBaseline = true;
            }

            //是否能够改动计划,如果能改,取Excel数据,不能改取系统计划数(在Taget Configuration配置)
            List <A_TargetPlanDetail> listCurrentMonthData = StaticResource.Instance.GetTargetPlanList(rpt.SystemID, rpt.FinYear).ToList().Where(p => p.FinMonth == rpt.FinMonth && p.CompanyID == rpt.CompanyID).ToList();

            if (listCurrentMonthData.Count > 0)
            {
                A_TargetPlanDetail currentMonthData = listCurrentMonthData[0];
                bool IsModifiy = false;
                if (currentMonthData.Target != RptDetail.OPlanAmmount)
                {
                    //获取当前指标
                    List <C_Target> listTarget = StaticResource.Instance.GetTargetList(RptDetail.SystemID, RptDetail.CreateTime).ToList().Where(p => p.ID == RptDetail.TargetID).ToList();
                    if (listTarget.Count > 0)
                    {
                        //获取当前指标的Configuration
                        IList <System.Xml.Linq.XElement> xmlConfiguration = listTarget[0].Configuration.Elements("IsModifyTargetPlanDetail").ToList();
                        if (xmlConfiguration.Count > 0)
                        {
                            //判断当前指标是否可以修改
                            if (xmlConfiguration.ToList()[0].GetAttributeValue("IsModifiy", "") == "True")
                            {
                                IsModifiy = true;
                            }
                        }
                    }
                }
                //如果IsModifiy为True,则计划数可以修改,否则反之。
                if (IsModifiy == false)
                {
                    RptDetail.OPlanAmmount = currentMonthData.Target;
                }
            }



            A_MonthlyReportDetail lastMonthData = A_MonthlyreportdetailOperator.Instance.GetAMonthlyreportdetail(rpt.SystemID, rpt.CompanyID, rpt.TargetID, rpt.FinYear, rpt.FinMonth - 1);

            if (lastMonthData != null)
            {
                rpt.NAccumulativeActualAmmount = lastMonthData.NAccumulativeActualAmmount + rpt.NActualAmmount;
                rpt.OAccumulativeActualAmmount = lastMonthData.OAccumulativeActualAmmount + rpt.OActualAmmount;
                //重新考核需要特殊处理,直接获取累计指标,无承诺补回时间
                if (!IsBaseline)
                {
                    rpt.NAccumulativePlanAmmount = lastMonthData.NAccumulativePlanAmmount + rpt.NPlanAmmount;
                    rpt.OAccumulativePlanAmmount = lastMonthData.OAccumulativePlanAmmount + rpt.OPlanAmmount;
                    rpt.CommitDate   = lastMonthData.CurrentMonthCommitDate;
                    rpt.CommitReason = lastMonthData.CurrentMonthCommitReason;
                }
                else
                {
                    IList <A_TargetPlanDetail> ATPD = StaticResource.Instance.GetTargetPlanList(rpt.SystemID, rpt.FinYear).FindAll(P => P.CompanyID == rpt.CompanyID && P.TargetID == rpt.TargetID && P.FinMonth <= rpt.FinMonth);
                    rpt.NAccumulativePlanAmmount = ATPD.Sum(p => p.Target);
                    rpt.OAccumulativePlanAmmount = ATPD.Sum(p => p.Target);
                }
            }
            else
            {
                if (WithCounter)
                {
                    rpt.NAccumulativeActualAmmount = rpt.NActualAmmount;
                    rpt.NAccumulativePlanAmmount   = rpt.NPlanAmmount;
                    rpt.OAccumulativeActualAmmount = rpt.OActualAmmount;
                    rpt.OAccumulativePlanAmmount   = rpt.OPlanAmmount;
                }
            }


            //特殊处理差额,针对指标
            XElement element = null;

            if (T != null)
            {
                element = T.Configuration;
            }
            XElement subElement = null;

            bool IsDifferenceException = false;

            if (element != null && element.Element("IsDifferenceExceptionTarget") != null)
            {
                subElement            = element.Elements("IsDifferenceExceptionTarget").ToList()[0];
                IsDifferenceException = subElement.GetAttributeValue("value", false);
            }

            if (!IsDifferenceException)
            {
                rpt.NAccumulativeDifference = rpt.NAccumulativeActualAmmount - rpt.NAccumulativePlanAmmount;
                rpt.OAccumulativeDifference = rpt.OAccumulativeActualAmmount - rpt.OAccumulativePlanAmmount;

                rpt.NDifference = rpt.NActualAmmount - rpt.NPlanAmmount;
                rpt.ODifference = rpt.OActualAmmount - rpt.OPlanAmmount;
            }

            rpt = (B_MonthlyReportDetail)this[T.TargetType.ToString()].Calculation(RptDetail);

            if (T != null && T.NeedEvaluation)
            {
                DateTime ReportDate = DateTime.MinValue;
                DateTime.TryParse(rpt.FinYear + "-" + rpt.FinMonth + "-1 00:00:00", out ReportDate);
                ReportDate = ReportDate.AddMonths(1).AddMinutes(-5);
                //累计未完成情况

                //上月累计未完成

                if (!IsBaseline)  //从1月开始重新计算
                {
                    if (lastMonthData != null && (lastMonthData.IsMissTarget || lastMonthData.NAccumulativeDifference < 0))
                    {
                        if (rpt.IsMissTarget || rpt.NAccumulativeDifference < 0)
                        {
                            if (lastMonthData.CurrentMonthCommitDate >= ReportDate)
                            {
                                rpt.ReturnType = (int)EnumReturnType.Returning;
                                if (lastMonthData.ReturnType_Sub == EnumHelper.GetEnumDescription(typeof(EnumReturnType_Sub), (int)EnumReturnType_Sub.Sub_UnableReturnByYear))
                                {
                                    rpt.ReturnDescription = lastMonthData.ReturnDescription;
                                }
                            }
                            else
                            {
                                rpt.ReturnType = (int)EnumReturnType.NotReturn;
                            }
                            if (rpt.IsMissTarget && WithCounter)
                            {
                                rpt.Counter = lastMonthData.Counter + 1;
                            }
                        }
                        else
                        {
                            if (lastMonthData.CurrentMonthCommitDate >= ReportDate)
                            {
                                rpt.ReturnType = (int)EnumReturnType.AccomplishInadvance;
                            }
                            else
                            {
                                rpt.ReturnType = (int)EnumReturnType.Accomplish;
                            }
                            if (WithCounter)
                            {
                                rpt.Counter             = 0;
                                rpt.FirstMissTargetDate = null;
                            }
                        }

                        //要求期限,是本月
                        if (lastMonthData.CurrentMonthCommitDate < ReportDate && lastMonthData.CurrentMonthCommitDate >= ReportDate.AddMonths(-1))
                        {
                            rpt.IsCommitDate = 1;
                        }
                        else
                        {
                            rpt.IsCommitDate = 0;
                        }
                    }
                    //无上月数据(1月)或上月累计完成
                    else
                    {
                        if (rpt.IsMissTarget || rpt.NAccumulativeDifference < 0)
                        {
                            rpt.ReturnType = (int)EnumReturnType.New;
                            if (rpt.IsMissTarget && WithCounter)
                            {
                                rpt.Counter             = 1;
                                rpt.FirstMissTargetDate = ReportDate;
                            }
                        }
                    }
                }
                //无上月数据(1月)或上月累计完成
                //重新计算
                else
                {
                    if (rpt.IsMissTarget || rpt.NAccumulativeDifference < 0)
                    {
                        rpt.ReturnType = (int)EnumReturnType.New;
                        if (rpt.IsMissTarget && WithCounter)
                        {
                            rpt.Counter             = 1;
                            rpt.FirstMissTargetDate = ReportDate;
                        }
                    }
                }
            }
            else
            {
                rpt.IsMissTarget        = false;
                rpt.IsMissTargetCurrent = false;
            }

            return(rpt);
        }
Example #7
0
        public List <DictionaryVmodel> GetTagetPlanViewModel(Guid SystemID)
        {
            //获取当前月计划数据
            List <A_TargetPlanDetail> listTargetPlan = A_TargetplandetailOperator.Instance.GetTargetplandetailListBySYNC(FinYear, FinMonth);

            //StaticResource.Instance.GetTargetPlanList(_System.ID, FinYear, FinMonth);

            //获取当前月与之前月的计划数据
            List <A_TargetPlanDetail> listTargetPlanToYear = StaticResource.Instance.GetTargetPlanList(_System.ID, FinYear);

            //得到当前系统的所有公司
            List <C_Company> listComPany = StaticResource.Instance.CompanyList[_System.ID];

            List <DictionaryVmodel>    listDV = new List <DictionaryVmodel>();
            List <TargetPlanViewModel> listTargetPlanViewModel = null;
            TargetPlanViewModel        tpvm = null;

            List <C_Target> PlanTarget = new List <C_Target>();

            PlanTarget = _Target;


            if (listTargetPlanToYear != null && listTargetPlanToYear.Count() > 0)
            {
                B_TargetPlan Bt = B_TargetplanOperator.Instance.GetTargetPlanByID(listTargetPlanToYear[0].TargetPlanID);
                PlanTarget = StaticResource.Instance.GetTargetList(_System.ID, Bt.CreateTime).ToList();
            }
            else
            {
                PlanTarget = StaticResource.Instance.GetTargetList(_System.ID, DateTime.Now).ToList();
            }

            foreach (C_Target Ctarget in PlanTarget.Where(p => p.NeedReport == true).OrderBy(p => p.Sequence))
            {
                listTargetPlanViewModel = new List <TargetPlanViewModel>();
                //根据指标得到此指标下的计划数
                List <A_TargetPlanDetail> listTP = listTargetPlan.Where(p => p.TargetID == Ctarget.ID).ToList();
                foreach (C_Company company in listComPany)
                {
                    //判断计划指标分解表中是否存在当前公司
                    if (listTP.Where(p => p.CompanyID == company.ID).Count() > 0)
                    {
                        A_TargetPlanDetail btp = listTP.Where(p => p.CompanyID == company.ID).ToList().FirstOrDefault();
                        tpvm              = new TargetPlanViewModel();
                        tpvm.ID           = company.ID;
                        tpvm.CompanyName  = company.CompanyName;
                        tpvm.NPlanAmmount = btp.Target;
                        List <A_TargetPlanDetail> lst = listTargetPlanToYear.Where(p => p.CompanyID == company.ID &&
                                                                                   p.TargetID == Ctarget.ID && p.FinMonth <= FinMonth).ToList();

                        tpvm.NAccumulativePlanAmmount = lst.Sum(p => p.Target);
                        tpvm.NActualAmmount           = btp.JQNDifference;
                        listTargetPlanViewModel.Add(tpvm);
                    }
                }

                string strHtmlTemplate = GetComplateMonthReportDetailHtmlTemplate(_System.Configuration);
                listDV.Add(new DictionaryVmodel(Ctarget.TargetName, listTargetPlanViewModel, "Target", strHtmlTemplate));
            }
            return(listDV);
        }