cjy 3 months ago
commit 246a765131

@ -115,4 +115,28 @@ namespace DS.Module.Core.Enums
[Description("未提货提醒")] [Description("未提货提醒")]
UndeliveredGoodsReminder = 1 << 12 UndeliveredGoodsReminder = 1 << 12
} }
/// <summary>
/// 往来单位特性
/// </summary>
[Flags]
public enum ClientAttribute
{
/// <summary>
/// 未设置
/// </summary>
None = 0,
/// <summary>
/// 客户
/// </summary>
[Description("客户")]
Customer = 1 << 0,
/// <summary>
/// 供应商
/// </summary>
[Description("供应商")]
Supplier = 1 << 1
}
} }

@ -51,7 +51,7 @@
<PackageReference Include="Snowflake.Core" Version="2.0.0" /> <PackageReference Include="Snowflake.Core" Version="2.0.0" />
<PackageReference Include="Snowflake.Data" Version="2.2.0" /> <PackageReference Include="Snowflake.Data" Version="2.2.0" />
<PackageReference Include="SqlSugar.IOC" Version="2.0.0" /> <PackageReference Include="SqlSugar.IOC" Version="2.0.0" />
<PackageReference Include="SqlSugarCore" Version="5.1.4.166" /> <PackageReference Include="SqlSugarCore" Version="5.1.4.167" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.7.0" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="6.7.0" />
<PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="8.0.2" /> <PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="8.0.2" />
<PackageReference Include="Swashbuckle.AspNetCore.Swagger" Version="6.7.0" /> <PackageReference Include="Swashbuckle.AspNetCore.Swagger" Version="6.7.0" />

@ -11,6 +11,7 @@ using DS.WMS.Core.Flow.Interface;
using DS.WMS.Core.Op.Dtos.TaskInteraction; using DS.WMS.Core.Op.Dtos.TaskInteraction;
using DS.WMS.Core.Op.Interface.TaskInteraction; using DS.WMS.Core.Op.Interface.TaskInteraction;
using DS.WMS.Core.Sys.Interface; using DS.WMS.Core.Sys.Interface;
using Masuit.Tools.Systems;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using SqlSugar; using SqlSugar;
@ -406,6 +407,7 @@ namespace DS.WMS.Core.Application.Method
.Select((x, y) => new TEntity .Select((x, y) => new TEntity
{ {
Id = x.Id, Id = x.Id,
ApplicationNO = x.ApplicationNO,
Status = x.Status, Status = x.Status,
DetailCount = SqlFunc.AggregateCount(y.Id) DetailCount = SqlFunc.AggregateCount(y.Id)
}).ToListAsync(); }).ToListAsync();
@ -427,12 +429,14 @@ namespace DS.WMS.Core.Application.Method
{ {
if (hasAuthorized) if (hasAuthorized)
{ {
for (int i = 0; i < idArray.Length; i++) for (int i = 0; i < list.Count; i++)
{ {
var item = list[i];
var req = new TaskCreationRequest var req = new TaskCreationRequest
{ {
BusinessId = idArray[i], BusinessId = item.Id,
TaskTypeName = auditType.ToString() TaskTypeName = auditType.ToString(),
TaskTitle = $"【{auditType.GetDescription()}】{item.ApplicationNO}"
}; };
result = await taskService.CreateTaskAsync(req); result = await taskService.CreateTaskAsync(req);

@ -33,10 +33,6 @@
<ExcludeFromSingleFile>true</ExcludeFromSingleFile> <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content> </Content>
<Content Include="Op\Templates\订舱委托.cshtml">
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="Finance\Dtos\" /> <Folder Include="Finance\Dtos\" />

@ -10,12 +10,12 @@ namespace DS.WMS.Core.Fee.Dtos
public class FeeStatItem public class FeeStatItem
{ {
/// <summary> /// <summary>
/// 应收款总计 /// 应收款总计(人民币合计)
/// </summary> /// </summary>
public decimal ReceivableTotal { get; set; } public decimal ReceivableTotal { get; set; }
/// <summary> /// <summary>
/// 应付款总计 /// 应付款总计(人民币合计)
/// </summary> /// </summary>
public decimal PayableTotal { get; set; } public decimal PayableTotal { get; set; }
@ -25,7 +25,7 @@ namespace DS.WMS.Core.Fee.Dtos
public decimal ProfitTotal { get { return ReceivableTotal - PayableTotal; } } public decimal ProfitTotal { get { return ReceivableTotal - PayableTotal; } }
/// <summary> /// <summary>
/// 利润率 /// 利润率(利润/应付)
/// </summary> /// </summary>
public string ProfitMargin public string ProfitMargin
{ {
@ -34,8 +34,8 @@ namespace DS.WMS.Core.Fee.Dtos
if (PayableTotal == 0) if (PayableTotal == 0)
return string.Empty; return string.Empty;
//利润率=利润÷成本×100% //利润率=利润÷应付/应收×100%
return string.Concat(Math.Round(ReceivableTotal / PayableTotal * 100, 2, MidpointRounding.AwayFromZero), "%"); return string.Concat(Math.Round(ProfitTotal / PayableTotal * 100, 2, MidpointRounding.AwayFromZero), "%");
} }
} }
@ -309,18 +309,18 @@ namespace DS.WMS.Core.Fee.Dtos
PayableTotal = localPayable + otherPayable;//应付合计 PayableTotal = localPayable + otherPayable;//应付合计
//人民币 //人民币
ReceivableCNY = _source.Where(x => x.FeeType == FeeType.Receivable && x.Currency == "CNY").Sum(x => x.Amount).GetValueOrDefault(); ReceivableCNY = _source.Where(x => x.FeeType == FeeType.Receivable && x.Currency == FeeCurrency.RMB_CODE).Sum(x => x.Amount).GetValueOrDefault();
PayableCNY = _source.Where(x => x.FeeType == FeeType.Payable && x.Currency == "CNY").Sum(x => x.Amount).GetValueOrDefault(); PayableCNY = _source.Where(x => x.FeeType == FeeType.Payable && x.Currency == FeeCurrency.RMB_CODE).Sum(x => x.Amount).GetValueOrDefault();
//美元 //美元
ReceivableUSD = _source.Where(x => x.FeeType == FeeType.Receivable && x.Currency == "USD").Sum(x => x.Amount).GetValueOrDefault(); ReceivableUSD = _source.Where(x => x.FeeType == FeeType.Receivable && x.Currency == FeeCurrency.USD_CODE).Sum(x => x.Amount).GetValueOrDefault();
PayableUSD = _source.Where(x => x.FeeType == FeeType.Payable && x.Currency == "USD").Sum(x => x.Amount).GetValueOrDefault(); PayableUSD = _source.Where(x => x.FeeType == FeeType.Payable && x.Currency == FeeCurrency.USD_CODE).Sum(x => x.Amount).GetValueOrDefault();
//其他 //其他
ReceivableOther = _source.Where(x => x.FeeType == FeeType.Receivable && x.Currency != "USD" && x.Currency != "CNY").Sum(x => x.Amount).GetValueOrDefault(); ReceivableOther = _source.Where(x => x.FeeType == FeeType.Receivable && x.Currency != FeeCurrency.USD_CODE && x.Currency != FeeCurrency.RMB_CODE).Sum(x => x.Amount).GetValueOrDefault();
PayableOther = _source.Where(x => x.FeeType == FeeType.Payable && x.Currency != "USD" && x.Currency != "CNY").Sum(x => x.Amount).GetValueOrDefault(); PayableOther = _source.Where(x => x.FeeType == FeeType.Payable && x.Currency != FeeCurrency.USD_CODE && x.Currency != FeeCurrency.RMB_CODE).Sum(x => x.Amount).GetValueOrDefault();
//按客户统计 //按客户统计
ByCustomer = (from s in _source ByCustomer = (from s in _source
@ -330,12 +330,12 @@ namespace DS.WMS.Core.Fee.Dtos
CustomerName = g.Key, CustomerName = g.Key,
ReceivableTotal = g.Where(x => x.FeeType == FeeType.Receivable).Sum(x => x.Amount).GetValueOrDefault(), ReceivableTotal = g.Where(x => x.FeeType == FeeType.Receivable).Sum(x => x.Amount).GetValueOrDefault(),
PayableTotal = g.Where(x => x.FeeType == FeeType.Payable).Sum(x => x.Amount).GetValueOrDefault(), PayableTotal = g.Where(x => x.FeeType == FeeType.Payable).Sum(x => x.Amount).GetValueOrDefault(),
ReceivableCNY = g.Where(x => x.FeeType == FeeType.Receivable && x.Currency == "CNY").Sum(x => x.Amount).GetValueOrDefault(), ReceivableCNY = g.Where(x => x.FeeType == FeeType.Receivable && x.Currency == FeeCurrency.RMB_CODE).Sum(x => x.Amount).GetValueOrDefault(),
PayableCNY = g.Where(x => x.FeeType == FeeType.Payable && x.Currency == "CNY").Sum(x => x.Amount).GetValueOrDefault(), PayableCNY = g.Where(x => x.FeeType == FeeType.Payable && x.Currency == FeeCurrency.RMB_CODE).Sum(x => x.Amount).GetValueOrDefault(),
ReceivableUSD = g.Where(x => x.FeeType == FeeType.Receivable && x.Currency == "USD").Sum(x => x.Amount).GetValueOrDefault(), ReceivableUSD = g.Where(x => x.FeeType == FeeType.Receivable && x.Currency == FeeCurrency.USD_CODE).Sum(x => x.Amount).GetValueOrDefault(),
PayableUSD = g.Where(x => x.FeeType == FeeType.Payable && x.Currency == "USD").Sum(x => x.Amount).GetValueOrDefault(), PayableUSD = g.Where(x => x.FeeType == FeeType.Payable && x.Currency == FeeCurrency.USD_CODE).Sum(x => x.Amount).GetValueOrDefault(),
ReceivableOther = g.Where(x => x.FeeType == FeeType.Receivable && x.Currency != "USD" && x.Currency != "CNY").Sum(x => x.Amount * x.ExchangeRate).GetValueOrDefault(), ReceivableOther = g.Where(x => x.FeeType == FeeType.Receivable && x.Currency != FeeCurrency.USD_CODE && x.Currency != FeeCurrency.RMB_CODE).Sum(x => x.Amount * x.ExchangeRate).GetValueOrDefault(),
PayableOther = g.Where(x => x.FeeType == FeeType.Payable && x.Currency != "USD" && x.Currency != "CNY").Sum(x => x.Amount * x.ExchangeRate).GetValueOrDefault() PayableOther = g.Where(x => x.FeeType == FeeType.Payable && x.Currency != FeeCurrency.USD_CODE && x.Currency != FeeCurrency.RMB_CODE).Sum(x => x.Amount * x.ExchangeRate).GetValueOrDefault()
}).ToList(); }).ToList();
ByCustomer.Add(new ByCustomerStat ByCustomer.Add(new ByCustomerStat
{ {
@ -358,12 +358,12 @@ namespace DS.WMS.Core.Fee.Dtos
BillNO = g.Key, BillNO = g.Key,
ReceivableTotal = g.Where(x => x.FeeType == FeeType.Receivable).Sum(x => x.Amount).GetValueOrDefault(), ReceivableTotal = g.Where(x => x.FeeType == FeeType.Receivable).Sum(x => x.Amount).GetValueOrDefault(),
PayableTotal = g.Where(x => x.FeeType == FeeType.Payable).Sum(x => x.Amount).GetValueOrDefault(), PayableTotal = g.Where(x => x.FeeType == FeeType.Payable).Sum(x => x.Amount).GetValueOrDefault(),
ReceivableCNY = g.Where(x => x.FeeType == FeeType.Receivable && x.Currency == "CNY").Sum(x => x.Amount).GetValueOrDefault(), ReceivableCNY = g.Where(x => x.FeeType == FeeType.Receivable && x.Currency == FeeCurrency.RMB_CODE).Sum(x => x.Amount).GetValueOrDefault(),
PayableCNY = g.Where(x => x.FeeType == FeeType.Payable && x.Currency == "CNY").Sum(x => x.Amount).GetValueOrDefault(), PayableCNY = g.Where(x => x.FeeType == FeeType.Payable && x.Currency == FeeCurrency.RMB_CODE).Sum(x => x.Amount).GetValueOrDefault(),
ReceivableUSD = g.Where(x => x.FeeType == FeeType.Receivable && x.Currency == "USD").Sum(x => x.Amount).GetValueOrDefault(), ReceivableUSD = g.Where(x => x.FeeType == FeeType.Receivable && x.Currency == FeeCurrency.USD_CODE).Sum(x => x.Amount).GetValueOrDefault(),
PayableUSD = g.Where(x => x.FeeType == FeeType.Payable && x.Currency == "USD").Sum(x => x.Amount).GetValueOrDefault(), PayableUSD = g.Where(x => x.FeeType == FeeType.Payable && x.Currency == FeeCurrency.USD_CODE).Sum(x => x.Amount).GetValueOrDefault(),
ReceivableOther = g.Where(x => x.FeeType == FeeType.Receivable && x.Currency != "USD" && x.Currency != "CNY").Sum(x => x.Amount * x.ExchangeRate).GetValueOrDefault(), ReceivableOther = g.Where(x => x.FeeType == FeeType.Receivable && x.Currency != FeeCurrency.USD_CODE && x.Currency != FeeCurrency.RMB_CODE).Sum(x => x.Amount * x.ExchangeRate).GetValueOrDefault(),
PayableOther = g.Where(x => x.FeeType == FeeType.Payable && x.Currency != "USD" && x.Currency != "CNY").Sum(x => x.Amount * x.ExchangeRate).GetValueOrDefault() PayableOther = g.Where(x => x.FeeType == FeeType.Payable && x.Currency != FeeCurrency.USD_CODE && x.Currency != FeeCurrency.RMB_CODE).Sum(x => x.Amount * x.ExchangeRate).GetValueOrDefault()
}).ToList(); }).ToList();
ByBusiness.Add(new ByBusinessStat ByBusiness.Add(new ByBusinessStat
{ {

@ -400,8 +400,24 @@ namespace DS.WMS.Core.Fee.Entity
{ {
if (TaxRate == 0) if (TaxRate == 0)
{ {
UnitPrice = TaxUnitPrice; if (TaxUnitPrice == 0)
NoTaxAmount = Amount; {
TaxUnitPrice = UnitPrice;
}
else if (UnitPrice == 0)
{
UnitPrice = TaxUnitPrice;
}
if (Amount == 0)
{
Amount = NoTaxAmount;
}
else if (NoTaxAmount == 0)
{
NoTaxAmount = Amount;
}
} }
else else
{ {

@ -1,9 +1,11 @@
using DS.Module.Core; using DS.Module.Core;
using DS.WMS.Core.Fee.Dtos; using DS.WMS.Core.Fee.Dtos;
using DS.WMS.Core.Sys.Dtos;
namespace DS.WMS.Core.Fee.Interface; namespace DS.WMS.Core.Fee.Interface;
/// <summary>
/// 汇率服务
/// </summary>
public interface IFeeCurrencyExchangeService public interface IFeeCurrencyExchangeService
{ {
/// <summary> /// <summary>
@ -34,4 +36,5 @@ public interface IFeeCurrencyExchangeService
/// <param name="exchange">币别信息</param> /// <param name="exchange">币别信息</param>
/// <returns></returns> /// <returns></returns>
Task<DataResult<ExchangeRate>> GetExchangeRateAsync(ExchangeRate exchange); Task<DataResult<ExchangeRate>> GetExchangeRateAsync(ExchangeRate exchange);
} }

@ -465,7 +465,7 @@ namespace DS.WMS.Core.Fee.Method
} }
/// <summary> /// <summary>
/// 获取业务相关联的费用统计 /// 获取业务费用统计
/// </summary> /// </summary>
/// <param name="id">业务ID</param> /// <param name="id">业务ID</param>
/// <param name="businessType">业务类型</param> /// <param name="businessType">业务类型</param>

@ -205,7 +205,7 @@ namespace DS.WMS.Core.Fee.Method
/// <returns></returns> /// <returns></returns>
protected internal async Task FetchExchangeRateAsync(IEnumerable<FeeRecord> items) protected internal async Task FetchExchangeRateAsync(IEnumerable<FeeRecord> items)
{ {
var exRecords = items.Where(x => x.ExchangeRate == null && x.Currency != x.LocalCurrency); var exRecords = items.Where(x => x.Currency != x.LocalCurrency);
if (exRecords.Any()) if (exRecords.Any())
{ {
var exchanges = exRecords.GroupBy(x => new var exchanges = exRecords.GroupBy(x => new
@ -233,27 +233,6 @@ namespace DS.WMS.Core.Fee.Method
item.ExchangeRate = exchangeRates.Find(x => x.CurrencyFrom == item.Currency && item.ExchangeRate = exchangeRates.Find(x => x.CurrencyFrom == item.Currency &&
x.CurrencyTo == item.LocalCurrency && x.FeeType == item.FeeType)?.Rate; x.CurrencyTo == item.LocalCurrency && x.FeeType == item.FeeType)?.Rate;
} }
//var codes = exRecords.Select(x => x.Currency).Distinct().ToList();
//var currencies = await TenantDb.Queryable<FeeCurrency>().Where(x => codes.Contains(x.CodeName)).Includes(x => x.Exchanges).ToListAsync();
//DateTime dtNow = DateTime.Now;
//foreach (var item in exRecords)
//{
// var currency = currencies.Find(x => x.CodeName == item.Currency);
// if (currency != null)
// {
// item.ExchangeRate = currency.DefaultRate;
// if (currency.Exchanges != null && currency.Exchanges.Count > 0)
// {
// //取当前时间范围内的最新一条
// var exchange = currency.Exchanges.FindAll(x => x.Status == StatusEnum.Enable &&
// x.StartDate >= dtNow && x.EndDate <= dtNow).OrderByDescending(x => x.UpdateTime).FirstOrDefault();
// if (exchange != null)
// item.ExchangeRate = item.FeeType == FeeType.Receivable ? exchange.DRValue : exchange.CRValue;
// }
// }
//}
} }
} }

@ -1,9 +1,6 @@
using System.Runtime.Serialization; using System.Runtime.Serialization;
using DS.Module.Core;
using DS.Module.Core.Enums; using DS.Module.Core.Enums;
using DS.WMS.Core.Info.Entity;
using FluentValidation; using FluentValidation;
using SqlSugar;
namespace DS.WMS.Core.Info.Dtos; namespace DS.WMS.Core.Info.Dtos;
@ -482,6 +479,42 @@ public class ClientInfoReq
/// 服务项目代码 /// 服务项目代码
/// </summary> /// </summary>
public string[]? ServiceItemCodes { get; set; } public string[]? ServiceItemCodes { get; set; }
/// <summary>
/// 推送设置
/// </summary>
public ClientAttribute[]? ClientAttributes { get; set; }
[IgnoreDataMember]
public ClientAttribute Attribute
{
get
{
if (ClientAttributes == null || ClientAttributes.Length == 0)
return ClientAttribute.None;
ClientAttribute flags = ClientAttribute.None;
for (int i = 0; i < ClientAttributes.Length; i++)
flags |= ClientAttributes[i];
return flags;
}
}
/// <summary>
/// 客户等级A/B/C/D
/// </summary>
public string? Grade { get; set; }
/// <summary>
/// 注册资金
/// </summary>
public decimal? RegisteredCapital { get; set; }
/// <summary>
/// 注册时间
/// </summary>
public DateTime? RegistrationTime { get; set; }
} }
/// <summary> /// <summary>

@ -98,112 +98,6 @@ public class ClientInfoRes
/// </summary> /// </summary>
public bool IsStop { get; set; } public bool IsStop { get; set; }
///// <summary>
///// Desc:发票抬头1
///// </summary>
//public string BillRises1 { get; set; }
///// <summary>
///// Desc:发票抬头2
///// </summary>
//public string BillRises2 { get; set; }
///// <summary>
///// Desc:美元支票抬头
///// </summary>
//public string USDBillRises { get; set; }
///// <summary>
///// Desc:人民币支票抬头
///// </summary>
//public string RMBBillRises { get; set; }
///// <summary>
///// Desc:人民币开户银行
///// </summary>
//public string RMBBank { get; set; }
///// <summary>
///// Desc:人民币账号
///// </summary>
//public string RMBAccount { get; set; }
///// <summary>
///// Desc:人民币联机行号
///// </summary>
//public string RMBOnlineNO { get; set; }
///// <summary>
///// Desc:美元开户银行
///// </summary>
//public string USDBank { get; set; }
///// <summary>
///// Desc:美元账号
///// </summary>
//public string USDAccount { get; set; }
///// <summary>
///// Desc:美元联机行号
///// </summary>
//public string USDOnlineNO { get; set; }
///// <summary>
///// Desc:自定义属性1
///// </summary>
//public string CustomAttributes1 { get; set; }
///// <summary>
///// Desc:自定义属性2
///// </summary>
//public string CustomAttributes2 { get; set; }
///// <summary>
///// Desc:美元信用最大金额
///// </summary>
//public decimal? USDMaxAmountCredit { get; set; } = 0;
///// <summary>
///// Desc:人民币信用最大金额
///// </summary>
//public decimal? RMBMaxAmountCredit { get; set; } = 0;
///// <summary>
///// Desc:信用最大金额RMB+USD
///// </summary>
//public decimal? MaxAmountCredit { get; set; } = 0;
///// <summary>
///// Desc:结算方式编码
///// </summary>
//public string StlName { get; set; }
///// <summary>
///// Desc:美金汇率
///// </summary>
//public decimal? USDExchangeRate { get; set; }
///// <summary>
///// Desc:月结算时间
///// </summary>
//public string StlDate { get; set; }
///// <summary>
///// Desc:上半月结算时间
///// </summary>
//public string StlFirstHalfDate { get; set; }
///// <summary>
///// Desc:下半月结算时间
///// </summary>
//public string StlMiddleDate { get; set; }
///// <summary>
///// Desc:票结结算时间
///// </summary>
//public string InvoiceStlDate { get; set; }
/// <summary> /// <summary>
/// Desc:等级 /// Desc:等级
/// </summary> /// </summary>
@ -513,4 +407,47 @@ public class ClientInfoRes
/// 服务项目代码 /// 服务项目代码
/// </summary> /// </summary>
public string[]? ServiceItemCodes { get; set; } public string[]? ServiceItemCodes { get; set; }
[IgnoreDataMember]
public ClientAttribute Attribute { get; set; }
/// <summary>
/// 推送设置
/// </summary>
public ClientAttribute[]? Attributes
{
get
{
if (Attribute == ClientAttribute.None)
return [];
return Attribute.Split().Where(x => x != ClientAttribute.None).ToArray();
}
}
/// <summary>
/// 客户等级A/B/C/D
/// </summary>
public string? Grade { get; set; }
/// <summary>
/// 注册资金
/// </summary>
public decimal? RegisteredCapital { get; set; }
/// <summary>
/// 注册时间
/// </summary>
public DateTime? RegistrationTime { get; set; }
/// <summary>
/// 默认联系人
/// </summary>
public ClientContactRes? DefaultContact { get; set; }
/// <summary>
/// 最新账期
/// </summary>
public ClientAccountDateRes? LastAccountDate { get; set; }
} }

@ -0,0 +1,23 @@
namespace DS.WMS.Core.Info.Dtos
{
/// <summary>
/// 往来单位附加查询条件
/// </summary>
public class ClientQuery
{
/// <summary>
/// 联系方式:电话/手机/邮箱
/// </summary>
public string? ContactInfo { get; set; }
/// <summary>
/// 是否合同到期
/// </summary>
public bool? IsContractExpired { get; set; }
/// <summary>
/// 客户标记
/// </summary>
public QueryClientInfo? ClientTag { get; set; }
}
}

@ -0,0 +1,23 @@
namespace DS.WMS.Core.Info.Dtos
{
/// <summary>
/// 往来单位使用情况
/// </summary>
public class ClientUsage
{
/// <summary>
/// ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 往来单位简称
/// </summary>
public string? Name { get; set; }
/// <summary>
/// 是否已使用
/// </summary>
public bool IsUsed { get; set; }
}
}

@ -1,10 +1,4 @@
using System; namespace DS.WMS.Core.Info.Dtos
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DS.WMS.Core.Info.Dtos
{ {
/// <summary> /// <summary>
/// 检索往来单位 /// 检索往来单位

@ -406,4 +406,53 @@ public class InfoClient : SharedOrgModel<long>
[SugarColumn(ColumnDescription = "服务项目", ColumnDataType = "text", IsNullable = true)] [SugarColumn(ColumnDescription = "服务项目", ColumnDataType = "text", IsNullable = true)]
public string? ServiceItem { get; set; } public string? ServiceItem { get; set; }
/// <summary>
/// 往来单位属性
/// </summary>
[SugarColumn(ColumnDescription = "往来单位属性")]
public ClientAttribute Attribute { get; set; }
/// <summary>
/// 客户等级A/B/C/D
/// </summary>
[SugarColumn(ColumnDescription = "客户等级", Length = 1, IsNullable = true)]
public string? Grade { get; set; }
/// <summary>
/// 注册资金
/// </summary>
[SugarColumn(ColumnDescription = "注册资金", IsNullable = true)]
public decimal? RegisteredCapital { get; set; }
/// <summary>
/// 注册时间
/// </summary>
[SugarColumn(ColumnDescription = "注册时间", IsNullable = true)]
public DateTime? RegistrationTime { get; set; }
///// <summary>
///// 往来单位标记
///// </summary>
//[Navigate(NavigateType.OneToOne, nameof(InfoClientTag.ClientId))]
//public InfoClientTag? Tag { get; set; }
///// <summary>
///// 账期
///// </summary>
//[Navigate(NavigateType.OneToMany, nameof(InfoClientAccountDate.ClientId))]
//public List<InfoClientAccountDate>? Accounts { get; set; }
///// <summary>
///// 联系人
///// </summary>
//[Navigate(NavigateType.OneToMany, nameof(InfoClientContact.ClientId))]
//public List<InfoClientContact>? Contacts { get; set; }
///// <summary>
///// 合同
///// </summary>
//[Navigate(NavigateType.OneToMany, nameof(InfoClientContract.ClientId))]
//public List<InfoClientContract>? Contracts { get; set; }
} }

@ -44,7 +44,7 @@ public interface IClientInfoService
/// </summary> /// </summary>
/// <param name="request"></param> /// <param name="request"></param>
/// <returns></returns> /// <returns></returns>
DataResult<List<ClientInfoRes>> GetListByPage(PageRequest request); Task<DataResult<List<ClientInfoRes>>> GetListAsync(PageRequest<ClientQuery> request);
/// <summary> /// <summary>
/// 编辑 /// 编辑

@ -15,6 +15,7 @@ using DS.WMS.Core.Op.Dtos.TaskInteraction;
using DS.WMS.Core.Op.Entity; using DS.WMS.Core.Op.Entity;
using DS.WMS.Core.Op.Interface.TaskInteraction; using DS.WMS.Core.Op.Interface.TaskInteraction;
using DS.WMS.Core.Sys.Entity; using DS.WMS.Core.Sys.Entity;
using Fasterflect;
using Mapster; using Mapster;
using Masuit.Tools.Systems; using Masuit.Tools.Systems;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
@ -42,6 +43,8 @@ public class ClientInfoService : ServiceBase, IClientInfoService
taskService = new Lazy<ITaskService>(serviceProvider.GetRequiredService<ITaskService>()); taskService = new Lazy<ITaskService>(serviceProvider.GetRequiredService<ITaskService>());
} }
#region 审核
/// <summary> /// <summary>
/// 提交审核 /// 提交审核
/// </summary> /// </summary>
@ -246,26 +249,73 @@ public class ClientInfoService : ServiceBase, IClientInfoService
return rows > 0 ? DataResult.Success : DataResult.FailedWithDesc(nameof(MultiLanguageConst.Operation_Failed)); return rows > 0 ? DataResult.Success : DataResult.FailedWithDesc(nameof(MultiLanguageConst.Operation_Failed));
} }
#endregion
/// <summary> /// <summary>
/// 列表 /// 列表
/// </summary> /// </summary>
/// <param name="request"></param> /// <param name="request"></param>
/// <returns></returns> /// <returns></returns>
public DataResult<List<ClientInfoRes>> GetListByPage(PageRequest request) public async Task<DataResult<List<ClientInfoRes>>> GetListAsync(PageRequest<ClientQuery> request)
{ {
//序列化查询条件 //序列化查询条件
var whereList = request.GetConditionalModels(Db); var whereList = request.GetConditionalModels(Db);
var result = TenantDb.Queryable<InfoClient>() foreach (var item in whereList)
.Where(whereList) {
.Select<ClientInfoRes>().ToQueryPage(request.PageCondition); var condition = (ConditionalModel)item;
condition.FieldName = "c." + condition.FieldName.ToUpperCamelCase();
}
var query = TenantDb.Queryable<InfoClient>()
.LeftJoin<InfoClientContact>((c, c1) => c.Id == c1.ClientId)
.LeftJoin<InfoClientContract>((c, c1, c2) => c.Id == c2.ClientId)
.InnerJoinIF<InfoClientTag>(request.OtherQueryCondition?.ClientTag != null, (c, c1, c2, ct) => c.Id == ct.ClientId);
if (!string.IsNullOrEmpty(request.OtherQueryCondition?.ContactInfo))
query = query.Where((c, c1, c2) => c1.Tel.Contains(request.OtherQueryCondition.ContactInfo) ||
c1.Mobile.Contains(request.OtherQueryCondition.ContactInfo) || c1.Email.Contains(request.OtherQueryCondition.ContactInfo));
if (request.OtherQueryCondition != null && request.OtherQueryCondition.IsContractExpired.GetValueOrDefault())
query = query.Where((c, c1, c2) => SqlFunc.GetDate() > c2.EndDate);
if (request.OtherQueryCondition?.ClientTag != null)
{
var props = Array.FindAll(request.OtherQueryCondition.ClientTag.GetType().GetProperties(), x => x.Name.StartsWith("Is") && x.PropertyType == typeof(bool));
foreach (var prop in props)
{
object val = PropertyInfoExtensions.Get(prop, request.OtherQueryCondition.ClientTag);
if (val != null && val is bool value && value)
{
whereList.Add(new ConditionalModel
{
ConditionalType = ConditionalType.Equal,
FieldName = "ct." + prop.Name,
FieldValue = "1"
});
}
}
}
var result = await query.Where(whereList).Select<ClientInfoRes>().ToQueryPageAsync(request.PageCondition);
if (result.Data?.Count > 0) if (result.Data?.Count > 0)
{ {
var ids = result.Data.SelectMany(x => x.SaleOrgIdList).Distinct(); var ids = result.Data.Select(x => x.Id);
var orgs = Db.Queryable<SysOrg>().Where(x => ids.Contains(x.Id)).Select(x => new { x.Id, x.OrgName }).ToList(); var contacts = TenantDb.Queryable<InfoClientContact>().Where(x => ids.Contains(x.ClientId) && x.IsDefault)
.Select<ClientContactRes>().ToList();
var accountDates = TenantDb.Queryable<InfoClientAccountDate>().Where(x => ids.Contains(x.ClientId) && x.Id ==
SqlFunc.Subqueryable<InfoClientAccountDate>().Where(y => y.Id == x.Id).Select(y => SqlFunc.AggregateMax(y.Id))
).Select<ClientAccountDateRes>().ToList();
var ids2 = result.Data.SelectMany(x => x.SaleOrgIdList).Distinct();
var orgs = Db.Queryable<SysOrg>().Where(x => ids2.Contains(x.Id)).Select(x => new { x.Id, x.OrgName }).ToList();
foreach (var item in result.Data) foreach (var item in result.Data)
{ {
item.DefaultContact = contacts.Find(x => x.ClientId == item.Id);
item.LastAccountDate = accountDates.Find(x => x.ClientId == item.Id);
var list = orgs.FindAll(x => item.SaleOrgIdList.Contains(x.Id)); var list = orgs.FindAll(x => item.SaleOrgIdList.Contains(x.Id));
item.SaleOrgNames = string.Join(",", list.Select(x => x.OrgName)); item.SaleOrgNames = string.Join(",", list.Select(x => x.OrgName));
} }
@ -274,6 +324,26 @@ public class ClientInfoService : ServiceBase, IClientInfoService
return result; return result;
} }
/// <summary>
/// 确定往来单位是否已使用
/// </summary>
/// <param name="ids">往来单位ID</param>
/// <returns></returns>
public async Task<DataResult<List<ClientUsage>>> GetUsageAsync(params long[] ids)
{
var list = await TenantDb.Queryable<InfoClient>()
.Select(c => new ClientUsage
{
Id = c.Id,
Name = c.ShortName,
IsUsed = SqlFunc.Subqueryable<SeaExport>().Where(s => c.Id == s.CustomerId || c.Id == s.ForwarderId || c.Id == s.YardId).Any()
}).ToListAsync();
var result = DataResult<List<ClientUsage>>.Success(list);
result.Count = list.Count;
return result;
}
/// <summary> /// <summary>
/// 编辑 /// 编辑
/// </summary> /// </summary>
@ -292,9 +362,7 @@ public class ClientInfoService : ServiceBase, IClientInfoService
if (req.Id == 0) if (req.Id == 0)
{ {
if (TenantDb.Queryable<InfoClient>().Where(x => (x.ShortName == req.ShortName.Trim() || x.Description == req.Description.Trim() || x.TaxNo == req.TaxNo.Trim())).Any()) if (TenantDb.Queryable<InfoClient>().Where(x => (x.ShortName == req.ShortName.Trim() || x.Description == req.Description.Trim() || x.TaxNo == req.TaxNo.Trim())).Any())
{
return DataResult.Failed("客户信息已存在,请检查客户全称、简称或社会信用代码是否重复!", MultiLanguageConst.ClientInfoExist); return DataResult.Failed("客户信息已存在,请检查客户全称、简称或社会信用代码是否重复!", MultiLanguageConst.ClientInfoExist);
}
var tag = req.ClientTag.Adapt<InfoClientTag>(); var tag = req.ClientTag.Adapt<InfoClientTag>();
//助记码 //助记码
@ -319,10 +387,8 @@ public class ClientInfoService : ServiceBase, IClientInfoService
{ {
return DataResult.Failed("请检查客户全称、简称或社会信用代码是否重复!", MultiLanguageConst.ClientInfoExist); return DataResult.Failed("请检查客户全称、简称或社会信用代码是否重复!", MultiLanguageConst.ClientInfoExist);
} }
//助记码
data.CodeName = PinYinUtil.GetFristLetter(data.ShortName);
tag = req.ClientTag.Adapt(tag);
tag = req.ClientTag.Adapt(tag);
data.ServiceItem = data.ServiceItem ?? string.Empty; data.ServiceItem = data.ServiceItem ?? string.Empty;
TenantDb.Updateable(data).RemoveDataCache($"{SqlSugarCacheConst.InfoClient}{User.TenantId}") TenantDb.Updateable(data).RemoveDataCache($"{SqlSugarCacheConst.InfoClient}{User.TenantId}")
.IgnoreColumns(ignoreAllNullColumns: true) .IgnoreColumns(ignoreAllNullColumns: true)

@ -42,7 +42,7 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction.ActionExecutor.Booking
{ {
await TaskService.SetTaskBaseDescription(context.TaskInfo.BusinessId, TaskBaseTypeEnum.WAIT_BOOKING, MESSAGE); await TaskService.SetTaskBaseDescription(context.TaskInfo.BusinessId, TaskBaseTypeEnum.WAIT_BOOKING, MESSAGE);
await LogService.WriteLogAsync(context.TaskInfo, MESSAGE + Environment.NewLine + "请求参数:" await LogService.WriteLogAsync(context.TaskInfo, MESSAGE + Environment.NewLine + "请求参数:"
+ JsonConvert.SerializeObject(req) + Environment.NewLine + "响应参数:" + result.Data); + JsonConvert.SerializeObject(req) + Environment.NewLine + "响应参数:" + result.Message);
return; return;
} }

@ -1,107 +0,0 @@
@* @model DS.WMS.Core.Op.Entity.MailTemplateModel<DS.WMS.Core.Op.Dtos.SeaExportRes> *@
@{
var item = Model.Primary;
}
<style>
.parent {
position: relative;
height: 300px;
width: 300px;
}
.child {
position: absolute;
bottom: 0;
right: 0;
width: 50px;
height: 50px;
}
.title {
background-color: darkblue;
color: whitesmoke;
font-size: 20px;
font-weight: 300;
}
</style>
<span>*** Auto Email, please reply to all (delete sender Admin)!If only reply to sender, we will not be able to find and deal with it! ***</span>
<br />
Dear @Model.Contacts
<div class="title">
RE: BOOKING - JOB NO.
</div>
请查看附件中的订舱委托请2小时内先行回复订舱号给我们并帮忙催促船东尽快放舱如下信息同订舱委托一致便于您查阅
CARRIER@item.Carrier
S/QXX
ETD : @item.ETD
POL: @item.LoadPort
POD: @item.DischargePort
FPOD: @item.DeliveryPlace
VOL: XX
Commdity: XX取中文品名
HS CODE: @item.HSCode
POD FREE TIME
REMARK
(取供应商备注)
此票订舱我司对接同事的联系方式如下,任何问题请及时跟我们沟通,谢谢!
<table>
<thead>
<tr>
<th>CN Name</th>
<th>Name</th>
<th>Tel No.</th>
<th>Mobile/Wechat/QQ</th>
<th>Email</th>
<th>Position</th>
</tr>
</thead>
<tbody>
<tr>
<td>邵 芳</td>
<td>Candy</td>
<td>0532-80688387</td>
<td>13375570007 2853083550</td>
<td>candy@sunniness.net</td>
<td>Cooperation</td>
</tr>
<tr>
<td>魏涛</td>
<td>Wilson</td>
<td>0532-80688353</td>
<td>13969858993 2853083555</td>
<td>ope@sunniness.net</td>
<td>OP manager</td>
</tr>
<tr>
<td>徐平平</td>
<td>Cathy</td>
<td>0532-80688350</td>
<td>13969662965 2853083551</td>
<td>opg@sunniness.net</td>
<td>Document</td>
</tr>
</tbody>
</table>
<div class="parent">
<div id="sign" class="child">
@* Tks + Brgds
Candy SHAO 邵芳 (此处用当票操作的信息)
General Manager | SUNNINESS LOGISTICS CO.,LTD.
TEL: +86-0532-80688387 |MB./We chat: +86-18866622731|QQ:2853083553 | Email:candy@sunniness.net *@
</div>
</div>
@* 此邮件模板是订舱委托推送的邮件模板,在商务订单审核通过后,自动生成,并推送:
1蓝色是调取系统数据、红色是醒目提醒
2订舱委托PDF格式作为附件一起发出
3邮件发给订舱代理联系人抄送我司销售/客服和操作/单证;未勾选推送的订舱代理,仅推送我司干系人! *@

@ -1,122 +0,0 @@
@* @model DS.WMS.Core.Op.Entity.MailTemplateModel
@{
var item = Model.Primary;
} *@
<style>
.parent {
position: relative;
height: 300px;
width: 300px;
}
.child {
position: absolute;
bottom: 0;
right: 0;
width: 50px;
height: 50px;
}
.title {
background-color: darkblue;
color: whitesmoke;
font-size: 20px;
font-weight: 300;
}
</style>
TO:
<span>*** Auto Email, please reply to all (delete sender Admin)!If only reply to sender, we will not be able to find and deal with it! ***</span>
<br />
Dear @Model.Contacts
<div class="title">
RE: BOOKING - @Model.Primary.CustomerNo
</div>
<br />
请查看附件中的订舱委托请2小时内先行回复订舱号给我们并帮忙催促船东尽快放舱如下信息同订舱委托一致便于您查阅
<br />
CARRIER@Model.Primary.Carrier
<br />
S/QXX <br />
ETD : @Model.Primary.ETD
<br />
<br />
POL: @Model.Primary.LoadPort
<br />
POD: @Model.Primary.DischargePort
<br />
FPOD: @Model.Primary.DeliveryPlace
<br />
VOL: @Model.Primary.CntrTotal
<br />
Commdity: @Model.Primary.GoodsName
<br />
HS CODE: @Model.Primary.HSCode
<br />
POD FREE TIME<br />
REMARK@Model.Primary.BookingRemark
<br />
此票订舱我司对接同事的联系方式如下,任何问题请及时跟我们沟通,谢谢!<br />
<table>
<thead>
<tr>
<th>CN Name</th>
<th>Name</th>
<th>Tel No.</th>
<th>Mobile/Wechat/QQ</th>
<th>Email</th>
<th>Position</th>
</tr>
</thead>
<tbody>
<tr>
<td>@Model.Sales.Name</td>
<td>@Model.Sales.EnName</td>
<td>@Model.Sales.Tel</td>
<td>@Model.Sales.Mobile</td>
<td>@Model.Sales.Email</td>
<td>Cooperation</td>
</tr>
<tr>
<td>@Model.Operator.Name</td>
<td>@Model.Operator.EnName</td>
<td>@Model.Operator.Tel</td>
<td>@Model.Operator.Mobile</td>
<td>@Model.Operator.Email</td>
<td>OP manager</td>
</tr>
<tr>
<td>@Model.Document.Name</td>
<td>@Model.Document.EnName</td>
<td>@Model.Document.Tel</td>
<td>@Model.Document.Mobile</td>
<td>@Model.Document.Email</td>
<td>Document</td>
</tr>
</tbody>
</table>
<br />
<br />
<div class="parent">
<div id="sign" class="child">
Tks + Brgds<br />
@Model.Document.EnName @Model.Document.Name (此处用当票操作的信息)
General Manager | SUNNINESS LOGISTICS CO.,LTD.
TEL: +86-@Model.Document.Tel |MB./We chat: @Model.Document.Mobile|QQ:2853083553 | Email:@Model.Document.Email
</div>
</div>
@* 此邮件模板是订舱委托推送的邮件模板,在商务订单审核通过后,自动生成,并推送:
1蓝色是调取系统数据、红色是醒目提醒
2订舱委托PDF格式作为附件一起发出
3邮件发给订舱代理联系人抄送我司销售/客服和操作/单证;未勾选推送的订舱代理,仅推送我司干系人! *@

@ -0,0 +1,71 @@
@* @model DS.WMS.Core.Op.Entity.MailTemplateModel *@
<p>TO:</p>
<p><span style="color: #e03e2d;"> *** Auto Email, please reply to all (delete sender Admin)!If only reply to sender, we will not be able to find and deal with it! ***</span></p>
<p><br />Dear @Model.Contacts</p>
<div class="title"><span style="font-size: 14pt; background-color: #c2e0f4;"><strong>RE: BOOKING - @Model.Primary.CustomerNo</strong></span></div>
<p style="line-height: 2;"><br />请查看附件中的订舱委托请2小时内先行回复订舱号给我们并帮忙催促船东尽快放舱如下信息同订舱委托一致便于您查阅 <br />CARRIER@Model.Primary.Carrier <br />S/Q@Model.Primary.ContractNo<br />ETD : @Model.Primary.ETD <br /><br />POL: @Model.Primary.LoadPort <br />POD: @Model.Primary.DischargePort <br />FPOD: @Model.Primary.DeliveryPlace <br />VOL: @Model.Primary.CntrTotal <br />Commdity: @Model.Primary.GoodsName <br />HS CODE: @Model.Primary.HSCode <br />POD FREE TIME<br />REMARK@Model.Primary.BookingRemark</p>
<p><br /><strong><span style="color: #34495e;">此票订舱我司对接同事的联系方式如下,任何问题请及时跟我们沟通,谢谢!</span></strong></p>
<table style="border: 2px solid black;">
<thead style="border: 2px solid black;background-color:#C2C2C2;">
<tr>
<th>CN Name</th>
<th>Name</th>
<th>Tel No.</th>
<th>Mobile/Wechat/QQ</th>
<th>Email</th>
<th>Position</th>
</tr>
</thead>
<tbody>
<tr>
<td>@Model.Sales.Name</td>
<td>@Model.Sales.EnName</td>
<td>@Model.Sales.Tel</td>
<td>@Model.Sales.Mobile</td>
<td>@Model.Sales.Email</td>
<td>Cooperation</td>
</tr>
<tr>
<td>@Model.Operator.Name</td>
<td>@Model.Operator.EnName</td>
<td>@Model.Operator.Tel</td>
<td>@Model.Operator.Mobile</td>
<td>@Model.Operator.Email</td>
<td>OPmanager</td>
</tr>
<tr>
<td>@Model.Document.Name</td>
<td>@Model.Document.EnName</td>
<td>@Model.Document.Tel</td>
<td>@Model.Document.Mobile</td>
<td>@Model.Document.Email</td>
<td>Document</td>
</tr>
</tbody>
</table>
<p><br /><br /></p>
<div class="parent">
@* 注意!!id=sign的元素在发送邮件时程序会自动插入当前发件人的用户签名 *@
<div id="sign" class="child">
Tks + B&rsquo;rgds&nbsp;&nbsp;<br />
@Model.Document.EnName&nbsp;@Model.Document.Name&nbsp;
</div>
<div>
@if(Model.Primary.SourceName == "WSL")
{
<span>@Model.Operator.Name</span>
<span>@Model.Operator.EnName</span>
}
else if(Model.Primary.SourceName == "WSL")
{
<span>@Model.Sales.Name</span>
<span>@Model.Sales.EnName</span>
}
</div
<div class="child">General Manager | <span style="color: #e67e23;">SUNNINESS LOGISTICS CO.,LTD.&nbsp;</span> &nbsp;
</div>
<div class="child"><strong>TEL:</strong> @Model.Document.Tel&nbsp; &nbsp;|<strong>MB./We chat: </strong>@Model.Document.Mobile|<strong>QQ:</strong>2853083553 | <strong>Email:</strong>@Model.Document.Email</div>
</div>

@ -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-06T09:01:39.6646353Z||;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||;True|2024-06-21T15:13:57.4273503+08:00||;True|2024-06-21T15:04:37.8218608+08:00||;True|2024-06-21T14:12:48.0266638+08:00||;True|2024-06-21T13:52:30.0950155+08:00||;True|2024-06-20T11:02:42.9508506+08:00||;True|2024-06-19T11:43:01.1899282+08:00||;True|2024-06-19T11:23:01.2938141+08:00||;True|2024-06-18T08:51:21.6222152+08:00||;True|2024-06-17T09:20:35.0804494+08:00||;True|2024-06-17T08:41:58.1319484+08:00||;True|2024-06-17T08:38:09.0137102+08:00||;True|2024-06-14T15:19:45.7395180+08:00||;True|2024-06-14T14:38:49.7094421+08:00||;True|2024-06-14T14:27:39.2815370+08:00||;True|2024-06-14T09:42:21.5397525+08:00||;True|2024-06-13T16:03:39.8475642+08:00||;True|2024-06-13T14:12:10.1725629+08:00||;True|2024-06-13T10:46:52.6971321+08:00||;True|2024-06-11T17:03:44.8328978+08:00||;True|2024-06-06T17:41:51.1810315+08:00||;True|2024-06-06T10:57:27.8273617+08:00||;True|2024-06-04T14:23:21.3742450+08:00||;True|2024-05-31T17:01:42.4717460+08:00||;True|2024-05-31T13:56:03.0734064+08:00||;True|2024-05-31T08:45:52.3549394+08:00||;True|2024-05-30T17:16:32.8907958+08:00||;True|2024-05-30T16:18:06.9957657+08:00||;True|2024-05-29T15:44:18.4051203+08:00||;True|2024-05-29T15:11:03.1518632+08:00||;True|2024-05-29T14:52:26.0823495+08:00||;True|2024-05-29T11:17:20.2245101+08:00||;True|2024-05-29T08:36:28.9569161+08:00||;True|2024-05-28T08:44:31.4427261+08:00||;False|2024-05-28T08:44:02.5254826+08:00||;True|2024-05-27T15:16:32.9413631+08:00||;True|2024-05-27T15:03:42.9803879+08:00||;True|2024-05-27T08:49:54.3933663+08:00||;True|2024-05-27T08:46:13.5862236+08:00||;True|2024-05-23T17:19:32.8154451+08:00||;True|2024-05-23T17:19:01.4587615+08:00||;True|2024-05-22T16:52:42.2166228+08:00||;</History> <History>True|2024-09-06T10:49:17.9435308Z||;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||;True|2024-06-21T15:13:57.4273503+08:00||;True|2024-06-21T15:04:37.8218608+08:00||;True|2024-06-21T14:12:48.0266638+08:00||;True|2024-06-21T13:52:30.0950155+08:00||;True|2024-06-20T11:02:42.9508506+08:00||;True|2024-06-19T11:43:01.1899282+08:00||;True|2024-06-19T11:23:01.2938141+08:00||;True|2024-06-18T08:51:21.6222152+08:00||;True|2024-06-17T09:20:35.0804494+08:00||;True|2024-06-17T08:41:58.1319484+08:00||;True|2024-06-17T08:38:09.0137102+08:00||;True|2024-06-14T15:19:45.7395180+08:00||;True|2024-06-14T14:38:49.7094421+08:00||;True|2024-06-14T14:27:39.2815370+08:00||;True|2024-06-14T09:42:21.5397525+08:00||;True|2024-06-13T16:03:39.8475642+08:00||;True|2024-06-13T14:12:10.1725629+08:00||;True|2024-06-13T10:46:52.6971321+08:00||;True|2024-06-11T17:03:44.8328978+08:00||;True|2024-06-06T17:41:51.1810315+08:00||;True|2024-06-06T10:57:27.8273617+08:00||;True|2024-06-04T14:23:21.3742450+08:00||;True|2024-05-31T17:01:42.4717460+08:00||;True|2024-05-31T13:56:03.0734064+08:00||;True|2024-05-31T08:45:52.3549394+08:00||;True|2024-05-30T17:16:32.8907958+08:00||;True|2024-05-30T16:18:06.9957657+08:00||;True|2024-05-29T15:44:18.4051203+08:00||;True|2024-05-29T15:11:03.1518632+08:00||;True|2024-05-29T14:52:26.0823495+08:00||;True|2024-05-29T11:17:20.2245101+08:00||;True|2024-05-29T08:36:28.9569161+08:00||;True|2024-05-28T08:44:31.4427261+08:00||;False|2024-05-28T08:44:02.5254826+08:00||;True|2024-05-27T15:16:32.9413631+08:00||;True|2024-05-27T15:03:42.9803879+08:00||;True|2024-05-27T08:49:54.3933663+08:00||;True|2024-05-27T08:46:13.5862236+08:00||;True|2024-05-23T17:19:32.8154451+08:00||;True|2024-05-23T17:19:01.4587615+08:00||;</History>
<LastFailureDetails /> <LastFailureDetails />
</PropertyGroup> </PropertyGroup>
</Project> </Project>

@ -86,10 +86,9 @@ public class ClientInfoController : ApiController
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
[Route("GetClientInfoList")] [Route("GetClientInfoList")]
public DataResult<List<ClientInfoRes>> GetClientInfoList([FromBody] PageRequest request) public async Task<DataResult<List<ClientInfoRes>>> GetListAsync([FromBody] PageRequest<ClientQuery> request)
{ {
var res = _invokeService.GetListByPage(request); return await _invokeService.GetListAsync(request);
return res;
} }
/// <summary> /// <summary>

Loading…
Cancel
Save