/// <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("账单数据更新失败!"); } }
/// <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); }
/// <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); }
//数据重复验证(票号) 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); }