using DS.WMS.Core.Fee.Dtos; using DS.WMS.Core.Fee.Entity; using DS.WMS.Core.Invoice.Entity; using DS.WMS.Core.QuarztJobs.Dtos; using DS.WMS.Core.QuarztJobs.Interface; using DS.WMS.Core.QuarztJobs.Other; using DS.WMS.Core.Sys.Entity; using Masuit.Tools; using Microsoft.AspNet.SignalR.Infrastructure; using Microsoft.Extensions.DependencyInjection; using Newtonsoft.Json; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DS.WMS.Core.QuarztJobs.Method { /// /// 银行流水 /// public class BankStatementService : IBankStatementService { private static readonly HttpClient _httpClient = new HttpClient { Timeout = TimeSpan.FromSeconds(60) }; ISqlSugarClient? db; public BankStatementService(IServiceProvider serviceProvider) { db = serviceProvider.GetRequiredService(); } public async Task GetBankStatement() { //获取组织机构请求授权列表 if (db == null) { return; } var orgauthlist = db.Queryable().ClearFilter().Where(t => t.Deleted == false && t.Type == "BankStatement").ToList(); //遍历授权数据集 foreach (var item in orgauthlist) { //组织请求远程接口api数据 GetBankStatementPost model = new GetBankStatementPost(); model.AccountName = item.Key; // "青岛东胜伟业软件有限公司"; model.AccountKey = item.Secret;// "bbb4ce881f31c954e4d18018b41126d4"; model.BeginDate = DateTime.Now.AddDays(-1).ToString("yyyyMMdd"); //往前查24小时的银行流水数据 model.EndDate = DateTime.Now.ToString("yyyyMMdd"); var result = await HttpHellp.PostAsync("http://47.104.90.170:9876/sync", JsonConvert.SerializeObject(model)); List datalist = new List(); //处理返回结果 var info = JsonConvert.DeserializeObject(result); if (info != null && info.result != null) { var dbLink = await db.Queryable().ClearFilter().Where(t => t.TenantId == item.TenantId).FirstAsync(); SqlSugarClient? tenantDb = null; //查询租户数据库中是否有当前数据 tenantDb = new SqlSugarClient(new ConnectionConfig { ConfigId = dbLink.Id, ConnectionString = dbLink.Connection, DbType = dbLink.DbType, IsAutoCloseConnection = true }); var listdt = info.result.Select(t => t.TransactionReferenceNumber).ToList(); var ininviceinfo = tenantDb.Queryable().Where(x =>listdt .Contains(x.TransactionReferenceNumber)).ToList(); foreach (var itemdata in info.result) { //数据库中银行流水为空,则添加银行流水数据数据 if (ininviceinfo.Where(t => t.TransactionReferenceNumber == itemdata.TransactionReferenceNumber).Count() == 0) { BankStatement bs = new BankStatement(); bs.Id = SnowFlakeSingle.Instance.NextId(); bs.OrgId = item.OrgId; bs.Custom = itemdata.Custom; bs.BankName = itemdata.BankName; bs.AccountName = itemdata.AccountName; bs.AccountId = itemdata.AccountId; bs.TransactionType = itemdata.TransactionType; bs.BusinessType = itemdata.BusinessType; bs.AccountHoldingBankNumberOfPayer = itemdata.AccountHoldingBankNumberOfPayer; bs.PayerAccountBank = itemdata.PayerAccountBank; bs.PayerAccountNumber = itemdata.PayerAccountNumber; bs.PayerName = itemdata.PayerName; bs.AccountHoldingBankNumberOfPayee = itemdata.AccountHoldingBankNumberOfPayee; bs.PayeeAccountBank = itemdata.PayeeAccountBank; bs.PayeeAccountNumber = itemdata.PayeeAccountNumber; bs.PayeeName = itemdata.PayeeName; bs.TransactionDate = itemdata.TransactionDate; bs.TransactionTime = itemdata.TransactionTime; bs.TradeCurrency = itemdata.TradeCurrency; bs.TradeAmount = itemdata.TradeAmount; bs.AfterTransactionBalance = itemdata.AfterTransactionBalance; bs.ValueDate = itemdata.ValueDate; bs.ExchangeRate = itemdata.ExchangeRate; bs.TransactionReferenceNumber = itemdata.TransactionReferenceNumber; bs.OnlineBankingTransactionRef = itemdata.OnlineBankingTransactionRef; bs.CustomerTransactionRef = itemdata.CustomerTransactionRef; bs.VoucherType = itemdata.VoucherType; bs.VoucherNumber = itemdata.VoucherNumber; bs.RecordID = itemdata.RecordID; bs.Reference = itemdata.Reference; bs.Purpose = itemdata.Purpose; bs.Remark = itemdata.Remark; bs.Remarks = itemdata.Remarks; bs.Reserve1 = itemdata.Reserve1; bs.Reserve2 = itemdata.Reserve2; bs.Reserve3 = itemdata.Reserve3; bs.OpeningBankNumberOfNominalPayer = itemdata.OpeningBankNumberOfNominalPayer; bs.OpeningBankNameOfNominalPayer = itemdata.OpeningBankNameOfNominalPayer; bs.AccountNumberOfNominalPayer = itemdata.AccountNumberOfNominalPayer; bs.NameOfNominalPayer = itemdata.NameOfNominalPayer; bs.OpeningBankNumberOfNominalPayee = itemdata.OpeningBankNumberOfNominalPayee; bs.OpeningBankNameOfNominalPayee = itemdata.OpeningBankNameOfNominalPayee; bs.AccountNumberOfNominalPayee = itemdata.AccountNumberOfNominalPayee; bs.NameOfNominalPayee = itemdata.NameOfNominalPayee; bs.FilePaths = itemdata.FilePaths; bs.DataCreateTime = itemdata.CreateTime; bs.PayDataTime = DateTime.ParseExact(($"{itemdata.TransactionDate} {itemdata.TransactionTime}"), "yyyyMMdd HH:mm:ss", System.Globalization.CultureInfo.CurrentCulture); ; //交易时间 bs.CreateTime = DateTime.Now; //await tenantDb.Insertable(bs).ExecuteCommandAsync(); datalist.Add(bs); } } await tenantDb.Insertable(datalist).ExecuteCommandAsync(); } } } } }