cjy 2 months ago
commit f1c1884beb

@ -86,13 +86,14 @@ namespace DS.Module.Core
var response = await SendRequestAsync(HttpMethod.Get, url); var response = await SendRequestAsync(HttpMethod.Get, url);
T? data = default; T? data = default;
if (response != null) if (response != null && response.IsSuccessStatusCode)
{ {
string json = await response.Content.ReadAsStringAsync(); string json = await response.Content.ReadAsStringAsync();
data = JsonConvert.DeserializeObject<T>(json); data = JsonConvert.DeserializeObject<T>(json);
return DataResult<T>.Success(data);
} }
return DataResult<T>.Success(data); return DataResult<T>.Failed(response.ReasonPhrase);
} }
/// <summary> /// <summary>
@ -107,13 +108,14 @@ namespace DS.Module.Core
{ {
var response = await SendRequestAsync(HttpMethod.Post, url, requestParams); var response = await SendRequestAsync(HttpMethod.Post, url, requestParams);
T? data = default; T? data = default;
if (response != null) if (response != null && response.IsSuccessStatusCode)
{ {
string json = await response.Content.ReadAsStringAsync(); string json = await response.Content.ReadAsStringAsync();
data = JsonConvert.DeserializeObject<T>(json); data = JsonConvert.DeserializeObject<T>(json);
return DataResult<T>.Success(data);
} }
return DataResult<T>.Success(data); return DataResult<T>.Failed(response.ReasonPhrase);
} }
/// <summary> /// <summary>

@ -8,7 +8,7 @@
/// <summary> /// <summary>
/// 忽略商品和服务税收分类合并编码提醒 /// 忽略商品和服务税收分类合并编码提醒
/// </summary> /// </summary>
public bool IgnoreSphfwssflhbbm { get; set; } public bool IgnoreSphfwssflhbbm { get; set; } = true;
/// <summary> /// <summary>
/// 请求体 /// 请求体

@ -22,4 +22,37 @@ namespace DS.WMS.Core.Invoice.Dtos
[DataMember(Name = "data")] [DataMember(Name = "data")]
public new T Data { get; set; } public new T Data { get; set; }
} }
public class InvoiceQuery
{
public List<InvoiceOrder> Order { get; set; }
}
public class InvoiceOrder
{
/// <summary>
/// 1已提交待上传,2已上传待开票,3开票成功,4开票失败
/// </summary>
public int State { get; set; }
/// <summary>
/// 发票号
/// </summary>
public string fphm { get; set; }
/// <summary>
/// 失败原因
/// </summary>
public string UpMessage { get; set; }
/// <summary>
/// 发票下载地址
/// </summary>
public string FileUrl { get; set; }
/// <summary>
/// 业务ID
/// </summary>
public string orderNo { get; set; }
}
} }

@ -306,11 +306,18 @@ namespace DS.WMS.Core.Invoice.Entity
[SugarColumn(ColumnDescription = "电子发票接口类型")] [SugarColumn(ColumnDescription = "电子发票接口类型")]
public InvoiceApiType? ApiType { get; set; } public InvoiceApiType? ApiType { get; set; }
/// <summary> ///// <summary>
/// 电子发票接口类型 ///// 电子发票接口类型
/// </summary> ///// </summary>
[SugarColumn(ColumnDescription = "电子发票接口类型", Length = 50, IsNullable = true)] //[SugarColumn(ColumnDescription = "电子发票接口类型", Length = 50, IsNullable = true)]
public string? ApiLine { get; set; } //public string? ApiLine { get; set; }
///// <summary>
///// 电子发票接口顺序号
///// </summary>
//[SugarColumn(ColumnDescription = "电子发票接口顺序号", Length = 50, IsNullable = true)]
//public string? ApiSerial { get; set; }
/// <summary> /// <summary>
/// 电子发票接口状态 /// 电子发票接口状态
@ -318,12 +325,6 @@ namespace DS.WMS.Core.Invoice.Entity
[SugarColumn(ColumnDescription = "电子发票接口状态", Length = 50, IsNullable = true)] [SugarColumn(ColumnDescription = "电子发票接口状态", Length = 50, IsNullable = true)]
public string? ApiStatus { get; set; } public string? ApiStatus { get; set; }
/// <summary>
/// 电子发票接口顺序号
/// </summary>
[SugarColumn(ColumnDescription = "电子发票接口顺序号", Length = 50, IsNullable = true)]
public string? ApiSerial { get; set; }
/// <summary> /// <summary>
/// 电子发票接口代码 /// 电子发票接口代码
/// </summary> /// </summary>

@ -1,6 +1,5 @@
using DS.Module.Core; using DS.Module.Core;
using DS.WMS.Core.Invoice.Dtos; using DS.WMS.Core.Invoice.Dtos;
using Newtonsoft.Json.Linq;
namespace DS.WMS.Core.Invoice.Interface namespace DS.WMS.Core.Invoice.Interface
{ {
@ -14,14 +13,21 @@ namespace DS.WMS.Core.Invoice.Interface
/// </summary> /// </summary>
/// <param name="ids">开票的发票ID</param> /// <param name="ids">开票的发票ID</param>
/// <returns></returns> /// <returns></returns>
Task<DataResult<JObject>> InitiateAsync(params long[] ids); Task<DataResult> InitiateAsync(params long[] ids);
/// <summary>
/// 更新发票号码
/// </summary>
/// <param name="sn">开票流水号</param>
/// <returns></returns>
Task<DataResult> UpdateInvoiceNumberAsync(string sn);
/// <summary> /// <summary>
/// 发票冲红 /// 发票冲红
/// </summary> /// </summary>
/// <param name="request">请求</param> /// <param name="request">请求</param>
/// <returns></returns> /// <returns></returns>
Task<DataResult<JObject>> ReverseAsync(InvoiceReversalRequest request); Task<DataResult> ReverseAsync(InvoiceReversalRequest request);
/// <summary> /// <summary>
/// 添加租户信息 /// 添加租户信息

@ -1,4 +1,5 @@
using DS.Module.Core; using DS.Module.Core;
using DS.Module.Core.Enums;
using DS.WMS.Core.Application.Entity; using DS.WMS.Core.Application.Entity;
using DS.WMS.Core.Application.Method; using DS.WMS.Core.Application.Method;
using DS.WMS.Core.Code.Entity; using DS.WMS.Core.Code.Entity;
@ -35,7 +36,7 @@ namespace DS.WMS.Core.Invoice.Method
/// </summary> /// </summary>
/// <param name="ids">发票ID</param> /// <param name="ids">发票ID</param>
/// <returns></returns> /// <returns></returns>
public async Task<DataResult<JObject>> InitiateAsync(params long[] ids) public async Task<DataResult> InitiateAsync(params long[] ids)
{ {
ArgumentNullException.ThrowIfNull(ids, nameof(ids)); ArgumentNullException.ThrowIfNull(ids, nameof(ids));
@ -47,7 +48,7 @@ namespace DS.WMS.Core.Invoice.Method
}).FirstAsync(); }).FirstAsync();
if (string.IsNullOrEmpty(userInfo.IdCardNo)) if (string.IsNullOrEmpty(userInfo.IdCardNo))
return DataResult<JObject>.FailedWithDesc(MultiLanguageConst.DrawerIDNumberIsNull); return DataResult.FailedWithDesc(MultiLanguageConst.DrawerIDNumberIsNull);
//请求参数设置 //请求参数设置
InvoiceIssuanceRequest request = new() InvoiceIssuanceRequest request = new()
@ -98,55 +99,122 @@ namespace DS.WMS.Core.Invoice.Method
}; };
if (request.order.Count == 0 || request.order.Any(x => x.invoiceDetail.Count == 0)) if (request.order.Count == 0 || request.order.Any(x => x.invoiceDetail.Count == 0))
return DataResult<JObject>.FailedWithDesc(MultiLanguageConst.InvoiceIncomplete); return DataResult.FailedWithDesc(MultiLanguageConst.InvoiceIncomplete);
var result = await api.PostAsync<InvoiceResult<string>>("/api/Invoice/services", request); var result = await api.PostAsync<InvoiceResult<string>>("/api/Invoice/services", request);
if (!result.Succeeded) if (!result.Succeeded)
return DataResult<JObject>.Failed(result.Message, result.MultiCode); return DataResult.Failed(result.Message, result.MultiCode);
var invResult = result.Data; var invResult = result.Data;
JObject? jObj = JObject.Parse(invResult.Data);
if (invResult.Success) if (invResult.Success)
{ {
return DataResult<JObject>.Success(jObj); string sn = invResult.Data; //开票成功返回流水号
var invoices = ids.Select(x => new Entity.Invoice { Id = x, SN = sn, ApiType = InvoiceApiType.Default }).ToList();
await TenantDb.Updateable(invoices).UpdateColumns(x => new { x.SN, x.ApiType }).ExecuteCommandAsync();
UpdateInvoiceNumberAsync(sn);
return DataResult.Success;
} }
else else
{ {
if (invResult.Code == 1) if (invResult.Code == 1)
return await InitiateAsync(ids); return await InitiateAsync(ids);
return DataResult<JObject>.FailedData(jObj, invResult.Message); return DataResult.Failed(invResult.Message);
} }
} }
/// <summary>
/// 更新发票号码
/// </summary>
/// <param name="sn">开票流水号</param>
/// <returns></returns>
public async Task<DataResult> UpdateInvoiceNumberAsync(string sn)
{
//调用查询API获取发票号
var result = await api.PostAsync<InvoiceResult<InvoiceQuery>>("/api/Invoice/GetInvoiceState", new { guid = sn });
if (!result.Succeeded)
return DataResult.Failed(result.Message, result.MultiCode);
var queryResult = result.Data;
if (queryResult == null || !queryResult.Success)
return DataResult.Failed(queryResult?.Message);
if (queryResult.Data.Order?.Count > 0)
{
List<Entity.Invoice> invoices = [];
foreach (var item in queryResult.Data.Order)
{
var inv = new Entity.Invoice
{
SN = sn,
BillNO = item.orderNo,
InvoiceNO = item.fphm,
ApiCode = item.State.ToString(),
ApiStatus = item.UpMessage,
PDFUrl = item.FileUrl
};
invoices.Add(inv);
if (string.IsNullOrEmpty(inv.ApiStatus))
{
switch (item.State)
{
case 1:
inv.ApiStatus = "已提交待上传";
break;
case 2:
inv.ApiStatus = "已上传待开票";
break;
case 3:
inv.ApiStatus = "开票成功";
break;
}
}
}
await TenantDb.Updateable(invoices).WhereColumns(x => x.BillNO)
.UpdateColumns(x => new
{
x.InvoiceNO,
x.ApiCode,
x.ApiStatus,
x.PDFUrl
}).ExecuteCommandAsync();
}
return DataResult.Success;
}
/// <summary> /// <summary>
/// 发票冲红 /// 发票冲红
/// </summary> /// </summary>
/// <param name="request"></param> /// <param name="request"></param>
/// <returns></returns> /// <returns></returns>
public async Task<DataResult<JObject>> ReverseAsync(InvoiceReversalRequest request) public async Task<DataResult> ReverseAsync(InvoiceReversalRequest request)
{ {
var invoice = await TenantDb.Queryable<Entity.Invoice>() var invoice = await TenantDb.Queryable<Entity.Invoice>()
.WhereIF(request.InvoiceId.HasValue, x => x.Id == request.InvoiceId) .WhereIF(request.InvoiceId.HasValue, x => x.Id == request.InvoiceId)
.WhereIF(!request.orderNo.IsNullOrEmpty(), x => x.BillNO == request.orderNo) .WhereIF(!request.orderNo.IsNullOrEmpty(), x => x.BillNO == request.orderNo)
.FirstAsync(); .FirstAsync();
if (invoice == null) if (invoice == null)
return DataResult<JObject>.FailedWithDesc(MultiLanguageConst.EmptyData); return DataResult.FailedWithDesc(MultiLanguageConst.EmptyData);
var req = new InvoiceReversalRequest { orderNo = invoice.BillNO }; var req = new InvoiceReversalRequest { orderNo = invoice.BillNO };
var result = await api.PostAsync<InvoiceResult<string>>("/api/Invoice/RedInvoicing", req); var result = await api.PostAsync<InvoiceResult<string>>("/api/Invoice/RedInvoicing", req);
if (!result.Succeeded) if (!result.Succeeded)
return DataResult<JObject>.Failed(result.Message, result.MultiCode); return DataResult.Failed(result.Message, result.MultiCode);
var invResult = result.Data; var invResult = result.Data;
JObject? jObj = JObject.Parse(invResult.Data); JObject? jObj = JObject.Parse(invResult.Data);
if (invResult.Success) if (invResult.Success)
return DataResult<JObject>.FailedData(jObj, invResult.Message); return DataResult.Failed(invResult.Message);
invoice.IsSetRed = true; invoice.IsSetRed = true;
invoice.RedReason = request.Reason; invoice.RedReason = request.Reason;
await TenantDb.Updateable(invoice).UpdateColumns(x => new { x.IsSetRed, x.RedReason }).ExecuteCommandAsync(); await TenantDb.Updateable(invoice).UpdateColumns(x => new { x.IsSetRed, x.RedReason }).ExecuteCommandAsync();
return DataResult<JObject>.Success(jObj); return DataResult.Success;
} }
/// <summary> /// <summary>

@ -45,11 +45,6 @@ namespace DS.WMS.Core.Settlement.Dtos
/// </summary> /// </summary>
public string? CustomerName { get; set; } public string? CustomerName { get; set; }
/// <summary>
/// 单据币别
/// </summary>
public string Currency { get; set; } = string.Empty;
/// <summary> /// <summary>
/// 汇率(当收/付申请单币别与结算币别一致时此字段可为null发票结算需要提前获取原始币别 /// 汇率(当收/付申请单币别与结算币别一致时此字段可为null发票结算需要提前获取原始币别
/// </summary> /// </summary>

@ -8,7 +8,7 @@ namespace DS.WMS.Core.Settlement.Interface
/// <summary> /// <summary>
/// 付费申请结算 /// 付费申请结算
/// </summary> /// </summary>
public interface IApplicationSettlementService : ISettlementService<Entity.ApplicationSettlement> public interface IApplicationSettlementService : ISettlementService<ApplicationSettlement>
{ {
/// <summary> /// <summary>
/// 获取分页列表 /// 获取分页列表

@ -1,13 +1,15 @@
using DS.Module.Core; using DS.Module.Core;
using DS.WMS.Core.Application.Dtos; using DS.WMS.Core.Application.Dtos;
using DS.WMS.Core.Invoice.Dtos; using DS.WMS.Core.Invoice.Dtos;
using DS.WMS.Core.Settlement.Dtos;
using DS.WMS.Core.Settlement.Entity;
namespace DS.WMS.Core.Settlement.Interface namespace DS.WMS.Core.Settlement.Interface
{ {
/// <summary> /// <summary>
/// 发票结算 /// 发票结算
/// </summary> /// </summary>
public interface IInvoiceSettlementService public interface IInvoiceSettlementService : ISettlementService<ApplicationSettlement>
{ {
/// <summary> /// <summary>
/// 获取待结算的发票申请列表 /// 获取待结算的发票申请列表
@ -22,5 +24,12 @@ namespace DS.WMS.Core.Settlement.Interface
/// <param name="ids"></param> /// <param name="ids"></param>
/// <returns></returns> /// <returns></returns>
Task<DataResult<List<ApplicationDetailDto>>> GetInvoiceDetailsAsync(params long[] ids); Task<DataResult<List<ApplicationDetailDto>>> GetInvoiceDetailsAsync(params long[] ids);
/// <summary>
/// 获取发票费用明细的原始币别
/// </summary>
/// <param name="documents"></param>
/// <returns></returns>
Task<DataResult<List<SettlementDocument>>> GetExchangesAsync(List<SettlementDocument> documents);
} }
} }

@ -447,7 +447,7 @@ namespace DS.WMS.Core.Settlement.Method
} }
protected override async Task<DataResult> PreSaveAsync(Entity.ApplicationSettlement settlement) protected override async Task<DataResult> PreSaveAsync(ApplicationSettlement settlement)
{ {
var appIds = settlement.Details.Select(x => x.ApplicationId).Distinct(); var appIds = settlement.Details.Select(x => x.ApplicationId).Distinct();
var appList = await TenantDb.Queryable<PaymentApplication>().Where(x => appIds.Contains(x.Id)) var appList = await TenantDb.Queryable<PaymentApplication>().Where(x => appIds.Contains(x.Id))

@ -37,8 +37,8 @@ namespace DS.WMS.Core.Settlement.Method
{ {
var whereList = request.GetConditionalModels(Db); var whereList = request.GetConditionalModels(Db);
var result = await TenantDb.Queryable<Invoice.Entity.Invoice>() var result = await TenantDb.Queryable<Invoice.Entity.Invoice>()
.InnerJoin<ApplicationDetail>((a, d) => d.Category == DetailCategory.InvoiceIssuance && a.Id == d.ApplicationId && d.OriginalAmount - d.OriginalProcessedAmount != 0) .InnerJoin<ApplicationDetail>((a, d) => d.Category == DetailCategory.InvoiceIssuance && a.Id == d.ApplicationId)
.InnerJoin<FeeRecord>((a, d, f) => (f.FeeStatus == FeeStatus.AuditPassed || f.FeeStatus == FeeStatus.PartialSettlement) && d.RecordId == f.Id && .InnerJoin<FeeRecord>((a, d, f) => d.RecordId == f.Id && (f.FeeStatus == FeeStatus.AuditPassed || f.FeeStatus == FeeStatus.PartialSettlement) &&
((f.Amount > 0 && d.OriginalAmount - d.OriginalProcessedAmount <= f.Amount - f.SettlementAmount - f.OrderAmount + f.OrderSettlementAmount) || ((f.Amount > 0 && d.OriginalAmount - d.OriginalProcessedAmount <= f.Amount - f.SettlementAmount - f.OrderAmount + f.OrderSettlementAmount) ||
(f.Amount < 0 && d.OriginalAmount - d.OriginalProcessedAmount >= f.Amount - f.SettlementAmount - f.OrderAmount + f.OrderSettlementAmount)) (f.Amount < 0 && d.OriginalAmount - d.OriginalProcessedAmount >= f.Amount - f.SettlementAmount - f.OrderAmount + f.OrderSettlementAmount))
) )
@ -122,7 +122,7 @@ namespace DS.WMS.Core.Settlement.Method
foreach (var document in documents) foreach (var document in documents)
{ {
document.ExchangeRates ??= []; document.ExchangeRates ??= [];
//获取该申请单下的全部币别 //获取该发票费用明细的全部币别
var items = list.FindAll(x => x.ApplicationId == document.Id); var items = list.FindAll(x => x.ApplicationId == document.Id);
foreach (var item in items) foreach (var item in items)
{ {
@ -212,8 +212,6 @@ namespace DS.WMS.Core.Settlement.Method
protected override async Task<DataResult> PreSaveAsync(ApplicationSettlement settlement) protected override async Task<DataResult> PreSaveAsync(ApplicationSettlement settlement)
{ {
//settlement.Mode = SettlementMode.InvoiceSettlement;
var appIds = settlement.Details.Select(x => x.ApplicationId).Distinct(); var appIds = settlement.Details.Select(x => x.ApplicationId).Distinct();
var appList = await TenantDb.Queryable<InvoiceApplication>().Where(x => appIds.Contains(x.Id)) var appList = await TenantDb.Queryable<InvoiceApplication>().Where(x => appIds.Contains(x.Id))
.Select(x => new .Select(x => new

@ -153,11 +153,11 @@ namespace DS.WMS.FeeApi.Controllers
/// <param name="idModel">开票的发票ID</param> /// <param name="idModel">开票的发票ID</param>
/// <returns></returns> /// <returns></returns>
[HttpPost, Route("Initiate")] [HttpPost, Route("Initiate")]
public async Task<DataResult<JObject>> InitiateAsync([FromServices] IInvoiceIssuanceService issuanceService, public async Task<DataResult> InitiateAsync([FromServices] IInvoiceIssuanceService issuanceService,
[FromBody] IdModel idModel) [FromBody] IdModel idModel)
{ {
if (!ModelState.IsValid) if (!ModelState.IsValid)
return DataResult<JObject>.Failed(ModelState.GetErrorMessage(), MultiLanguageConst.IllegalRequest); return DataResult.Failed(ModelState.GetErrorMessage(), MultiLanguageConst.IllegalRequest);
return await issuanceService.InitiateAsync(idModel.Ids); return await issuanceService.InitiateAsync(idModel.Ids);
} }
@ -169,7 +169,7 @@ namespace DS.WMS.FeeApi.Controllers
/// <param name="request">请求参数</param> /// <param name="request">请求参数</param>
/// <returns></returns> /// <returns></returns>
[HttpPost, Route("Reverse")] [HttpPost, Route("Reverse")]
public async Task<DataResult<JObject>> ReverseAsync([FromServices] IInvoiceIssuanceService issuanceService, public async Task<DataResult> ReverseAsync([FromServices] IInvoiceIssuanceService issuanceService,
[FromBody] InvoiceReversalRequest request) [FromBody] InvoiceReversalRequest request)
{ {
return await issuanceService.ReverseAsync(request); return await issuanceService.ReverseAsync(request);

@ -31,7 +31,7 @@ namespace DS.WMS.FeeApi.Controllers
/// <param name="items">业务ID与业务类型</param> /// <param name="items">业务ID与业务类型</param>
/// <returns></returns> /// <returns></returns>
[HttpPost, Route("GetCurrencies")] [HttpPost, Route("GetCurrencies")]
public async Task<DataResult<List<FeeClient>>> GetCurrenciesAsync(params FeeClient[] items) public async Task<DataResult<List<FeeClient>>> GetCurrenciesAsync([FromBody] params FeeClient[] items)
{ {
return await _service.GetCurrenciesAsync(items); return await _service.GetCurrenciesAsync(items);
} }

@ -2,6 +2,8 @@
using DS.Module.Core.Data; using DS.Module.Core.Data;
using DS.WMS.Core.Application.Dtos; using DS.WMS.Core.Application.Dtos;
using DS.WMS.Core.Invoice.Dtos; using DS.WMS.Core.Invoice.Dtos;
using DS.WMS.Core.Settlement.Dtos;
using DS.WMS.Core.Settlement.Entity;
using DS.WMS.Core.Settlement.Interface; using DS.WMS.Core.Settlement.Interface;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
@ -29,7 +31,7 @@ namespace DS.WMS.FeeApi.Controllers
/// <param name="request"></param> /// <param name="request"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost, Route("GetInvoiceList")] [HttpPost, Route("GetInvoiceList")]
public async Task<DataResult<List<InvoiceDto>>> GetInvoiceListAsync(PageRequest request) public async Task<DataResult<List<InvoiceDto>>> GetInvoiceListAsync([FromBody] PageRequest request)
{ {
return await _service.GetInvoiceListAsync(request); return await _service.GetInvoiceListAsync(request);
} }
@ -40,9 +42,31 @@ namespace DS.WMS.FeeApi.Controllers
/// <param name="idModel"></param> /// <param name="idModel"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost, Route("GetInvoiceDetails")] [HttpPost, Route("GetInvoiceDetails")]
public async Task<DataResult<List<ApplicationDetailDto>>> GetInvoiceDetailsAsync(IdModel idModel) public async Task<DataResult<List<ApplicationDetailDto>>> GetInvoiceDetailsAsync([FromBody] IdModel idModel)
{ {
return await _service.GetInvoiceDetailsAsync(idModel.Ids); return await _service.GetInvoiceDetailsAsync(idModel.Ids);
} }
/// <summary>
/// 获取发票费用明细的原始币别
/// </summary>
/// <param name="documents"></param>
/// <returns></returns>
[HttpPost, Route("GetExchanges")]
public async Task<DataResult<List<SettlementDocument>>> GetExchangesAsync([FromBody] List<SettlementDocument> documents)
{
return await _service.GetExchangesAsync(documents);
}
/// <summary>
/// 根据发票创建结算单
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost, Route("Save")]
public async Task<DataResult<ApplicationSettlement>> SaveAsync([FromBody] SettlementRequest<ApplicationSettlement> request)
{
return await _service.SaveAsync(request);
}
} }
} }

@ -30,7 +30,7 @@ namespace DS.WMS.FeeApi.Controllers
/// <param name="items">业务ID与业务类型</param> /// <param name="items">业务ID与业务类型</param>
/// <returns></returns> /// <returns></returns>
[HttpPost, Route("GetCurrencies")] [HttpPost, Route("GetCurrencies")]
public async Task<DataResult<List<FeeClient>>> GetCurrenciesAsync(params FeeClient[] items) public async Task<DataResult<List<FeeClient>>> GetCurrenciesAsync([FromBody] params FeeClient[] items)
{ {
return await _service.GetCurrenciesAsync(items); return await _service.GetCurrenciesAsync(items);
} }

@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<_PublishTargetUrl>D:\Publish\DS8\FeeApi</_PublishTargetUrl> <_PublishTargetUrl>D:\Publish\DS8\FeeApi</_PublishTargetUrl>
<History>True|2024-09-25T11:14:27.8906774Z||;True|2024-09-25T18:57:40.1435131+08:00||;True|2024-09-25T17:38:44.0915841+08:00||;True|2024-09-25T15:33:58.4630618+08:00||;True|2024-09-25T15:10:31.3022063+08:00||;False|2024-09-25T14:14:40.9640545+08:00||;True|2024-09-25T10:09:32.2558600+08:00||;True|2024-09-25T09:59:17.1525160+08:00||;False|2024-09-25T09:57:58.7265103+08:00||;False|2024-09-25T09:53:36.7732713+08:00||;False|2024-09-24T18:40:10.0166224+08:00||;True|2024-09-24T08:59:56.1995425+08:00||;True|2024-09-23T18:07:54.7222163+08:00||;True|2024-09-23T17:23:57.7568406+08:00||;True|2024-09-23T16:28:49.3169826+08:00||;True|2024-09-23T15:57:31.8052490+08:00||;True|2024-09-23T11:47:21.1445419+08:00||;True|2024-09-23T09:24:36.0732229+08:00||;True|2024-09-21T11:59:19.0549926+08:00||;True|2024-09-21T11:24:32.4451752+08:00||;True|2024-09-21T10:39:11.5297411+08:00||;True|2024-09-20T18:24:31.7827684+08:00||;True|2024-09-19T17:55:53.1666689+08:00||;True|2024-09-19T17:42:47.9061485+08:00||;True|2024-09-19T16:08:21.7225571+08:00||;False|2024-09-19T14:15:42.9318446+08:00||;True|2024-09-19T11:20:03.5567568+08:00||;True|2024-09-18T11:35:18.1509724+08:00||;True|2024-09-18T09:08:59.1152574+08:00||;True|2024-09-14T15:48:22.9374486+08:00||;True|2024-09-14T15:42:19.0503983+08:00||;True|2024-09-14T11:51:53.3339222+08:00||;True|2024-09-14T11:41:38.3542237+08:00||;True|2024-09-14T11:19:13.1037012+08:00||;True|2024-09-13T14:31:12.4598160+08:00||;True|2024-09-13T10:44:56.1241214+08:00||;False|2024-09-13T10:44:26.6088271+08:00||;False|2024-09-13T10:44:06.1615137+08:00||;False|2024-09-13T10:43:19.2432517+08:00||;False|2024-09-13T10:38:18.1663387+08:00||;True|2024-09-06T18:49:17.9435308+08:00||;True|2024-09-06T17:01:39.6646353+08:00||;True|2024-09-06T10:27:36.9990456+08:00||;True|2024-09-06T09:48:23.4236094+08:00||;True|2024-09-05T13:57:23.8452431+08:00||;True|2024-09-05T10:21:34.6675149+08:00||;True|2024-09-05T09:12:44.5610882+08:00||;True|2024-09-04T10:07:38.3707398+08:00||;True|2024-09-04T09:52:47.0574599+08:00||;True|2024-09-03T16:41:23.7516960+08:00||;True|2024-09-03T15:22:31.8718097+08:00||;True|2024-09-03T10:01:09.7656702+08:00||;False|2024-09-03T09:46:46.8956531+08:00||;True|2024-09-02T17:07:41.0268500+08:00||;True|2024-09-02T13:50:22.0203254+08:00||;True|2024-09-02T13:34:23.3441546+08:00||;True|2024-08-30T11:25:14.7431645+08:00||;True|2024-08-29T16:38:26.3491372+08:00||;True|2024-08-29T16:32:31.8580864+08:00||;False|2024-08-29T16:30:41.4763198+08:00||;True|2024-08-09T09:18:05.8484398+08:00||;True|2024-08-09T08:45:38.7858906+08:00||;True|2024-08-05T11:37:07.3133020+08:00||;True|2024-07-24T16:45:58.2272340+08:00||;True|2024-07-24T15:48:52.0128987+08:00||;True|2024-07-23T17:41:01.7494842+08:00||;True|2024-07-23T17:25:11.8773492+08:00||;True|2024-07-23T17:07:16.5460273+08:00||;True|2024-07-22T08:59:23.3235603+08:00||;True|2024-07-12T17:35:11.1225017+08:00||;True|2024-07-11T11:40:17.3581147+08:00||;True|2024-07-04T17:20:50.0175739+08:00||;True|2024-07-02T11:26:14.2092751+08:00||;True|2024-07-02T09:21:51.3513605+08:00||;True|2024-07-01T17:47:56.0407256+08:00||;True|2024-07-01T16:42:55.7374984+08:00||;True|2024-07-01T15:49:58.9266967+08:00||;True|2024-07-01T14:35:48.1117178+08:00||;True|2024-07-01T11:41:52.2969338+08:00||;True|2024-07-01T11:13:02.6561160+08:00||;True|2024-06-28T15:28:43.1470725+08:00||;True|2024-06-28T15:16:20.1999596+08:00||;True|2024-06-28T15:14:56.2534743+08:00||;True|2024-06-28T15:02:41.3033806+08:00||;True|2024-06-28T13:37:28.2462742+08:00||;True|2024-06-28T11:06:30.7400535+08:00||;True|2024-06-26T15:24:17.1939896+08:00||;True|2024-06-26T14:33:06.3530466+08:00||;True|2024-06-26T09:45:24.4055568+08:00||;True|2024-06-25T15:45:57.6052473+08:00||;True|2024-06-25T10:17:17.7408916+08:00||;False|2024-06-25T10:16:23.5639654+08:00||;False|2024-06-25T10:15:28.3857721+08:00||;False|2024-06-25T10:10:59.5536995+08:00||;False|2024-06-25T10:07:10.4050937+08:00||;True|2024-06-24T15:22:18.2672769+08:00||;True|2024-06-24T15:01:04.8153621+08:00||;False|2024-06-24T15:00:29.9618848+08:00||;True|2024-06-24T14:07:19.9401637+08:00||;False|2024-06-24T14:06:36.1250570+08:00||;</History> <History>True|2024-09-26T09:48:13.8526872Z||;True|2024-09-26T16:08:20.1746970+08:00||;True|2024-09-26T16:01:01.1501975+08:00||;False|2024-09-26T16:00:34.1516745+08:00||;True|2024-09-26T14:33:03.4007570+08:00||;True|2024-09-25T19:14:27.8906774+08:00||;True|2024-09-25T18:57:40.1435131+08:00||;True|2024-09-25T17:38:44.0915841+08:00||;True|2024-09-25T15:33:58.4630618+08:00||;True|2024-09-25T15:10:31.3022063+08:00||;False|2024-09-25T14:14:40.9640545+08:00||;True|2024-09-25T10:09:32.2558600+08:00||;True|2024-09-25T09:59:17.1525160+08:00||;False|2024-09-25T09:57:58.7265103+08:00||;False|2024-09-25T09:53:36.7732713+08:00||;False|2024-09-24T18:40:10.0166224+08:00||;True|2024-09-24T08:59:56.1995425+08:00||;True|2024-09-23T18:07:54.7222163+08:00||;True|2024-09-23T17:23:57.7568406+08:00||;True|2024-09-23T16:28:49.3169826+08:00||;True|2024-09-23T15:57:31.8052490+08:00||;True|2024-09-23T11:47:21.1445419+08:00||;True|2024-09-23T09:24:36.0732229+08:00||;True|2024-09-21T11:59:19.0549926+08:00||;True|2024-09-21T11:24:32.4451752+08:00||;True|2024-09-21T10:39:11.5297411+08:00||;True|2024-09-20T18:24:31.7827684+08:00||;True|2024-09-19T17:55:53.1666689+08:00||;True|2024-09-19T17:42:47.9061485+08:00||;True|2024-09-19T16:08:21.7225571+08:00||;False|2024-09-19T14:15:42.9318446+08:00||;True|2024-09-19T11:20:03.5567568+08:00||;True|2024-09-18T11:35:18.1509724+08:00||;True|2024-09-18T09:08:59.1152574+08:00||;True|2024-09-14T15:48:22.9374486+08:00||;True|2024-09-14T15:42:19.0503983+08:00||;True|2024-09-14T11:51:53.3339222+08:00||;True|2024-09-14T11:41:38.3542237+08:00||;True|2024-09-14T11:19:13.1037012+08:00||;True|2024-09-13T14:31:12.4598160+08:00||;True|2024-09-13T10:44:56.1241214+08:00||;False|2024-09-13T10:44:26.6088271+08:00||;False|2024-09-13T10:44:06.1615137+08:00||;False|2024-09-13T10:43:19.2432517+08:00||;False|2024-09-13T10:38:18.1663387+08:00||;True|2024-09-06T18:49:17.9435308+08:00||;True|2024-09-06T17:01:39.6646353+08:00||;True|2024-09-06T10:27:36.9990456+08:00||;True|2024-09-06T09:48:23.4236094+08:00||;True|2024-09-05T13:57:23.8452431+08:00||;True|2024-09-05T10:21:34.6675149+08:00||;True|2024-09-05T09:12:44.5610882+08:00||;True|2024-09-04T10:07:38.3707398+08:00||;True|2024-09-04T09:52:47.0574599+08:00||;True|2024-09-03T16:41:23.7516960+08:00||;True|2024-09-03T15:22:31.8718097+08:00||;True|2024-09-03T10:01:09.7656702+08:00||;False|2024-09-03T09:46:46.8956531+08:00||;True|2024-09-02T17:07:41.0268500+08:00||;True|2024-09-02T13:50:22.0203254+08:00||;True|2024-09-02T13:34:23.3441546+08:00||;True|2024-08-30T11:25:14.7431645+08:00||;True|2024-08-29T16:38:26.3491372+08:00||;True|2024-08-29T16:32:31.8580864+08:00||;False|2024-08-29T16:30:41.4763198+08:00||;True|2024-08-09T09:18:05.8484398+08:00||;True|2024-08-09T08:45:38.7858906+08:00||;True|2024-08-05T11:37:07.3133020+08:00||;True|2024-07-24T16:45:58.2272340+08:00||;True|2024-07-24T15:48:52.0128987+08:00||;True|2024-07-23T17:41:01.7494842+08:00||;True|2024-07-23T17:25:11.8773492+08:00||;True|2024-07-23T17:07:16.5460273+08:00||;True|2024-07-22T08:59:23.3235603+08:00||;True|2024-07-12T17:35:11.1225017+08:00||;True|2024-07-11T11:40:17.3581147+08:00||;True|2024-07-04T17:20:50.0175739+08:00||;True|2024-07-02T11:26:14.2092751+08:00||;True|2024-07-02T09:21:51.3513605+08:00||;True|2024-07-01T17:47:56.0407256+08:00||;True|2024-07-01T16:42:55.7374984+08:00||;True|2024-07-01T15:49:58.9266967+08:00||;True|2024-07-01T14:35:48.1117178+08:00||;True|2024-07-01T11:41:52.2969338+08:00||;True|2024-07-01T11:13:02.6561160+08:00||;True|2024-06-28T15:28:43.1470725+08:00||;True|2024-06-28T15:16:20.1999596+08:00||;True|2024-06-28T15:14:56.2534743+08:00||;True|2024-06-28T15:02:41.3033806+08:00||;True|2024-06-28T13:37:28.2462742+08:00||;True|2024-06-28T11:06:30.7400535+08:00||;True|2024-06-26T15:24:17.1939896+08:00||;True|2024-06-26T14:33:06.3530466+08:00||;True|2024-06-26T09:45:24.4055568+08:00||;True|2024-06-25T15:45:57.6052473+08:00||;True|2024-06-25T10:17:17.7408916+08:00||;False|2024-06-25T10:16:23.5639654+08:00||;False|2024-06-25T10:15:28.3857721+08:00||;False|2024-06-25T10:10:59.5536995+08:00||;False|2024-06-25T10:07:10.4050937+08:00||;</History>
<LastFailureDetails /> <LastFailureDetails />
</PropertyGroup> </PropertyGroup>
</Project> </Project>
Loading…
Cancel
Save