예제 #1
0
        public PublicMortgage QueryById(string id)
        {
            var baseaudit = _baseAuditDal.GetAllBase().FirstOrDefault(p => p.ID == id);

            if (baseaudit.IsNotNull())
            {
                var publicCase = _baseAuditDal.GetAllBase().Where(t => t.NewCaseNum == baseaudit.NewCaseNum).OrderByDescending(t => t.Version).FirstOrDefault(t => t.CaseStatus == CaseStatus.PublicMortgage || t.CaseStatus == CaseStatus.ConfrimPublic);

                if (publicCase.IsNotNull())
                {
                    return(_mortgageDal.GetAll().AsNoTracking().FirstOrDefault(p => p.ID == publicCase.ID));
                }
            }
            return(null);
        }
예제 #2
0
        /// <summary>
        /// 获取指定日期的各个状态案件的统计信息
        /// </summary>
        /// <param name="salesGroup">销售团队信息</param>
        /// <param name="date">日期</param>
        /// <returns>统计信息</returns>
        private DayStatisticsDto GetSingleGroupStatistics(SalesGroup salesGroup, DateTime date)
        {
            var      output    = new DayStatisticsDto();
            DateTime endDate   = date.AddDays(1.0);
            DateTime thisMonth = new DateTime(date.Year, date.Month, 1);
            DateTime nextMonth = thisMonth.AddMonths(1);

            // 审核案件
            var audits = _baseAuditDal.GetAllBase()
                         .Where(p => p.SalesGroupID == salesGroup.ID && p.CreateTime >= date && p.CreateTime < endDate)
                         .ToList();

            var monthAudits = _baseAuditDal.GetAllBase()
                              .Where(p => p.SalesGroupID == salesGroup.ID && p.CreateTime >= thisMonth && p.CreateTime < nextMonth);

            // 进件案件
            var baseCases = _baseCaseDal.GetAll()
                            .Where(p => p.SalesGroupID == salesGroup.ID && p.CreateTime > date && p.CreateTime < endDate && p.NewCaseNum != null);

            // 已签约案件
            var mortages = GetMortgages(audits).ToList();

            // 已放款案件
            var afterCases = GetLendings(audits).ToList();

            // 月放款案件
            var monthAfterCases = GetLendings(monthAudits);

            output.SalesGroupId   = salesGroup.ID;
            output.SalesGroupName = salesGroup.Company;

            output.BaseCaseCount  = baseCases.Count();
            output.BaseCaseAmount = baseCases.Sum(p => p.LoanAmount) ?? 0M;

            output.AuditCaseCount  = audits.Count(p => p.CaseStatus == CaseStatus.PublicMortgage);
            output.AuditCaseAmount = audits.Where(p => p.CaseStatus == CaseStatus.PublicMortgage).Sum(p => p.AuditAmount) ?? 0M;

            output.PublicCaseCount  = mortages.Count();
            output.PublicCaseAmount = mortages.Sum(p => p.ContractAmount) ?? 0M;

            output.AfterCaseCount  = afterCases.Count();
            output.AfterCaseAmount = afterCases.Sum(p => p.ContractAmount) ?? 0M;

            output.MonthAfterCaseAmount = monthAfterCases.Sum(p => p.ContractAmount) ?? 0M;
            output.MonthAfterCaseCount  = monthAfterCases.Count();

            return(output);
        }
예제 #3
0
 /// <summary>
 /// 获取最近版本案件
 /// </summary>
 /// <param name="casenum">案件号</param>
 /// <returns>案件信息</returns>
 private BaseAudit GetMaxVersionAudit(string casenum)
 {
     return(_auditDal.GetAllBase()
            .Where(p => p.NewCaseNum == casenum)
            .OrderByDescending(p => p.Version)
            .FirstOrDefault());
 }
예제 #4
0
        /// <summary>
        /// 年利率变更迁移
        /// </summary>
        public void TransferAnnualRate()
        {
            // step 1 年利率重新计算
            var baseAuditCases = _baseAuditDal.GetAllBase().Where(p => p.AuditRate != null || p.AnnualRate != null);

            baseAuditCases.ForEach(p =>
            {
                if (p.AuditRate != null && p.AuditRate < 2M)
                {
                    p.AuditRate = p.AuditRate * 12;
                }
                if (p.AnnualRate != null && p.AnnualRate < 2M)
                {
                    p.AnnualRate = p.AnnualRate * 12;
                }
            });
            _baseAuditDal.UpdateRange(baseAuditCases);
            _baseAuditDal.AcceptAllChange();
        }
예제 #5
0
        private void UpdateAuditCaseNum(BaseAuditDAL baseAuditDal, SalesGroupDAL salesGroupDal)
        {
            string[] caseNum = baseAuditDal.GetAll().Where(p => p.CaseNum != null).Select(p => p.CaseNum).Distinct().ToArray();
            caseNum.ForEach(p =>
            {
                var sameCaseNumCases = baseAuditDal.GetAllBase().Where(c => c.CaseNum == p).ToList();
                var salesGroupId     = sameCaseNumCases.First().SalesGroupID;

                var salesGroup = salesGroupDal.GetAll().First(t => t.ID == salesGroupId);
                sameCaseNumCases.ForEach(t =>
                {
                    t.CaseNum    = (Convert.ToInt32(t.CaseNum.Substring(4)) + 100000).ToString();
                    t.NewCaseNum = "L" + salesGroup.ShortCode + "-" + t.CaseNum;
                });

                baseAuditDal.UpdateRange(sameCaseNumCases);
                baseAuditDal.AcceptAllChange();
            });
        }
예제 #6
0
 public BaseAudit QueryById(string id)
 {
     return(_auditDal.GetAllBase().FirstOrDefault(p => p.ID == id));
 }