Ejemplo n.º 1
0
        /// <summary>
        /// 业务逻辑
        /// </summary>
        protected override void ExecuteMethod()
        {
            //查询所有日账单
            var list = enterpriseOrderRep.GetBillEveryDaysListByEnterpriseIdsBill(Parameter.billId, null);

            if (!list.Any())
            {
                throw new AggregateException("日账单不存在!");
            }
            //修改月账单状态和已还款金额
            var res = billRep.UpdateBillByBillid(Parameter.billId, 1);
            //修改日账单状态
            var billordersId = "Gl" + DateTime.Now.ToString("yyyyMMddhhmmss");
            var resday       = billEveryDayRep.UpdateBillEveryDaysByBillid(Parameter.billId, null, billordersId);
            //修改差旅订单还款状态
            var resorder = new EnterpriseOrderRep().UpdateEnterpriseOrderlistByBillEveryDayId(list, 4);
            //更新授信余额
            var limitresult = LimitAmount(list, billordersId);

            //判断更新是否成功
            if (res > 0 && resday > 0)
            {
                if (!limitresult.Result)
                {
                    throw new AggregateException("提前还款成功,恢复授信金额失败!");
                }
                Result.Data = resday;
            }
            else
            {
                throw new AggregateException("账单数据更新失败!");
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 分销商月限额
        /// </summary>
        private bool VerifyDistrbutorBalance()
        {
            //分销商配置月限额
            if (null != _userAccount && null != _userAccount.CreditAmount && 0.001m < _userAccount.CreditAmount)
            {
                var distributeAmount = EnterpriseOrderRep.GetDistributSum(Parameter.PayCenterCode);
                if (distributeAmount + _manageRiskModels.Values.SelectMany(t => t).Sum(t => t.OrderAmount) >
                    _userAccount.CreditAmount)
                {
                    _verifyResults.Add(new Tuple <string, string>("", "此分销商到达授信限额"));
                    return(false);
                }
            }


            return(true);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 验证企业状态,及余额
        /// </summary>
        private bool VerifyEnterpriseStatus()
        {
            var result = true;

            //验证企业状态
            var enterprseDic = _manageRiskModels;

            var enterprseIds = enterprseDic.Keys.ToList();

            //获取有效企业及余额
            _enterpriseWhiteLists = EnterpriseWhiteRep.GetEnterpriseWhiteLists(enterprseIds, Parameter.PayCenterCode).ToList();

            //无效企业
            var unUsefullEnterprises = enterprseDic.Keys.ToList().Except(_enterpriseWhiteLists.Select(t => t.EnterpriseWhiteListID).ToList()).ToList();

            if (unUsefullEnterprises.Any())
            {
                unUsefullEnterprises.ForEach(item =>
                {
                    //记录无效企业信息
                    //删除无效企业
                    enterprseDic.Remove(item);

                    _verifyResults.Add(new Tuple <string, string>("", item + ",企业不在白名单"));

                    result = false;
                });
            }

            var hasMonthLimitEnterprise = _enterpriseWhiteLists.Where(t => 1 == t.MonthStatue).ToList();

            //配置月限额企业的已导入未还款订单
            var enterpriseOrdersDic = hasMonthLimitEnterprise.Count() > 0 ?
                                      EnterpriseOrderRep.GetEnterpriseOrderSum(hasMonthLimitEnterprise.Select(t => t.EnterpriseWhiteListID),
                                                                               new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1),
                                                                               new DateTime(DateTime.Now.Year, DateTime.Now.Month + 1, 1)).GroupBy(t => t.Item1).ToDictionary(t => t.Key, t => t.Sum(e => e.Item2)) : new Dictionary <long, decimal>();

            //验证企业余额
            _enterpriseWhiteLists.Foreach(item =>
            {
                //当前企业导入的订单金额
                var enterpriseSum = enterprseDic.ContainsKey(item.EnterpriseWhiteListID)
                    ? enterprseDic[item.EnterpriseWhiteListID].Sum(t => t.OrderAmount)
                    : 0.0m;

                //是否有月限额限制
                var hasMonthLimit = enterpriseOrdersDic.ContainsKey(item.EnterpriseWhiteListID);

                if (hasMonthLimit)
                {
                    //已导入返现,未还款的订单金额
                    var ordersSum = enterpriseOrdersDic[item.EnterpriseWhiteListID] + enterpriseSum;

                    if (ordersSum > item.CreditMonthAmount)
                    {
                        enterprseDic.Remove(item.EnterpriseWhiteListID);
                        _verifyResults.Add(new Tuple <string, string>("", item.EnterpriseWhiteListID + ",企业达到月限额"));
                        result = false;
                    }
                }
                else
                {
                    if (enterpriseSum > item.AccountBalance)
                    {
                        //剔除余额不足
                        enterprseDic.Remove(item.EnterpriseWhiteListID);
                        _verifyResults.Add(new Tuple <string, string>("", item.EnterpriseWhiteListID + ",企业余额不足"));
                        result = false;
                    }
                }
            });

            return(result);
        }
Ejemplo n.º 4
0
        //数据重复验证(票号)
        private bool RemovalTicket()
        {
            var result = true;

            var ticketNums = _manageRiskModels.Values.SelectMany(x => x).ToList();;

            //
            var ticketNoDic = ticketNums.GroupBy(t => t.TicketNum).ToDictionary(t => t.Key, t => t.Count());


            //var hasRepeatTicket = ticketNoDic.Values.Count(t => t > 1) > 0;
            //Excel原始数据验证是否重复
            ticketNoDic.Foreach(item =>
            {
                if (1 < item.Value)
                {
                    _verifyResults.Add(new Tuple <string, string>("", item.Key + "票号重复。"));

                    result = false;
                }
            });


            var ticketNoes = ticketNoDic.Keys.ToList();

            var cacheTicket = GetCacheTickets();

            var unionList = cacheTicket?.Where(t => ticketNoes.Contains(t)) ?? new List <string>();

            unionList.Foreach(item =>
            {
                _verifyResults.Add(new Tuple <string, string>("", item + "票号已存在。"));
                result = false;
            });


            //数据库验证重复
            var exsitOrders = EnterpriseOrderRep.GetTravelOrdersByTickets(ticketNoes);

            //剔除重复数据
            exsitOrders.ForEach(item =>
            {
                if (item.EnterpriseWhiteListID == null || !_manageRiskModels.ContainsKey((long)item.EnterpriseWhiteListID.Value))
                {
                    return;
                }

                var removeModel = _manageRiskModels[(long)item.EnterpriseWhiteListID].FirstOrDefault(t => t.TicketNum == item.TicketNo);
                _verifyResults.Add(new Tuple <string, string>("", item.TicketNo + "票号已存在。"));

                _manageRiskModels[(long)item.EnterpriseWhiteListID].Remove(removeModel);


                if (1 > _manageRiskModels[(long)item.EnterpriseWhiteListID].Count)
                {
                    _manageRiskModels.Remove((long)item.EnterpriseWhiteListID);
                }

                result = false;
            });

            return(result);
        }