using DS.Module.Core;
using DS.Module.Core.Extensions;
using DS.Module.SqlSugar;
using DS.Module.UserModule;
using DS.WMS.Core.Fee.Entity;
using DS.WMS.Core.Invoice.Dtos;
using DS.WMS.Core.Invoice.Entity;
using DS.WMS.Core.Invoice.Interface;
using DS.WMS.Core.TaskPlat.Dtos;
using MathNet.Numerics.Distributions;
using Microsoft.Extensions.DependencyInjection;
using SqlSugar;
namespace DS.WMS.Core.Invoice.Method
{
///
/// 银行流水相关
///
public class BankStatementService : IBankStatementService
{
private readonly IServiceProvider _serviceProvider;
private readonly ISaasDbService saasService;
private readonly IUser user;
private readonly ISqlSugarClient db;
///
/// 初始化
///
///
public BankStatementService(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
saasService = _serviceProvider.GetRequiredService();
db = _serviceProvider.GetRequiredService();
user = _serviceProvider.GetRequiredService();
}
///
/// 获取银行流水列表
///
///
///
///
public async Task>> GetBankStatementList(PageRequest request)
{
var tenantDb = saasService.GetBizDbScopeById(user.TenantId);
var result = await tenantDb.Queryable()
.Where(t => t.OrgId == user.OrgId)
.WhereIF(!string.IsNullOrWhiteSpace(request.OtherQueryCondition.AccountId), t => t.AccountId == request.OtherQueryCondition.AccountId)//银行账户
.WhereIF(!string.IsNullOrWhiteSpace(request.OtherQueryCondition.BusinessType), t => t.BusinessType.Contains(request.OtherQueryCondition.BusinessType))//交易类型
.WhereIF(!string.IsNullOrWhiteSpace(request.OtherQueryCondition.PayerAccountNumber), t => t.BusinessType.Contains(request.OtherQueryCondition.PayerAccountNumber))//付款方银行账户
.WhereIF(!string.IsNullOrWhiteSpace(request.OtherQueryCondition.PayerName), t => t.BusinessType.Contains(request.OtherQueryCondition.PayerName))//付款人名称
.WhereIF(request.OtherQueryCondition.StartDate != null, t => t.PayDataTime >= request.OtherQueryCondition.StartDate)
.WhereIF(request.OtherQueryCondition.EndDate != null, t => t.PayDataTime >= request.OtherQueryCondition.EndDate)
.Select(t => new GetBankStatementOutPut
{
Id = t.Id,
},true)
.ToQueryPageAsync(request.PageCondition);
return result;
}
///
/// 获取银行账号列表
///
///
///
public async Task>> GetBankAccountList()
{
var tenantDb = saasService.GetBizDbScopeById(user.TenantId);
var list = tenantDb.Queryable()
.Where(t => t.OrgId == user.OrgId)
.GroupBy(it => new { it.BankName, it.AccountId }) //可以多字段
.Select(it => new GetBankAccountListOutput
{
BankName = it.BankName,
AccountId = it.AccountId
}).ToList();
return DataResult>.Success(list);
}
}
}