往来单位增加若干字段

usertest
嵇文龙 3 months ago
parent a4970cf033
commit 0098fd8e60

@ -115,4 +115,28 @@ namespace DS.Module.Core.Enums
[Description("未提货提醒")]
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.Data" Version="2.2.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.Filters" Version="8.0.2" />
<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.Interface.TaskInteraction;
using DS.WMS.Core.Sys.Interface;
using Masuit.Tools.Systems;
using Microsoft.Extensions.DependencyInjection;
using SqlSugar;
@ -406,6 +407,7 @@ namespace DS.WMS.Core.Application.Method
.Select((x, y) => new TEntity
{
Id = x.Id,
ApplicationNO = x.ApplicationNO,
Status = x.Status,
DetailCount = SqlFunc.AggregateCount(y.Id)
}).ToListAsync();
@ -427,12 +429,14 @@ namespace DS.WMS.Core.Application.Method
{
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
{
BusinessId = idArray[i],
TaskTypeName = auditType.ToString()
BusinessId = item.Id,
TaskTypeName = auditType.ToString(),
TaskTitle = $"【{auditType.GetDescription()}】{item.ApplicationNO}"
};
result = await taskService.CreateTaskAsync(req);

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

@ -1,9 +1,6 @@
using System.Runtime.Serialization;
using DS.Module.Core;
using DS.Module.Core.Enums;
using DS.WMS.Core.Info.Entity;
using FluentValidation;
using SqlSugar;
namespace DS.WMS.Core.Info.Dtos;
@ -482,6 +479,42 @@ public class ClientInfoReq
/// 服务项目代码
/// </summary>
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>

@ -98,112 +98,6 @@ public class ClientInfoRes
/// </summary>
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>
/// Desc:等级
/// </summary>
@ -513,4 +407,47 @@ public class ClientInfoRes
/// 服务项目代码
/// </summary>
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;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DS.WMS.Core.Info.Dtos
namespace DS.WMS.Core.Info.Dtos
{
/// <summary>
/// 检索往来单位

@ -406,4 +406,53 @@ public class InfoClient : SharedOrgModel<long>
[SugarColumn(ColumnDescription = "服务项目", ColumnDataType = "text", IsNullable = true)]
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>
/// <param name="request"></param>
/// <returns></returns>
DataResult<List<ClientInfoRes>> GetListByPage(PageRequest request);
Task<DataResult<List<ClientInfoRes>>> GetListAsync(PageRequest<ClientQuery> request);
/// <summary>
/// 编辑

@ -15,6 +15,7 @@ using DS.WMS.Core.Op.Dtos.TaskInteraction;
using DS.WMS.Core.Op.Entity;
using DS.WMS.Core.Op.Interface.TaskInteraction;
using DS.WMS.Core.Sys.Entity;
using Fasterflect;
using Mapster;
using Masuit.Tools.Systems;
using Microsoft.Extensions.DependencyInjection;
@ -42,6 +43,8 @@ public class ClientInfoService : ServiceBase, IClientInfoService
taskService = new Lazy<ITaskService>(serviceProvider.GetRequiredService<ITaskService>());
}
#region 审核
/// <summary>
/// 提交审核
/// </summary>
@ -246,26 +249,73 @@ public class ClientInfoService : ServiceBase, IClientInfoService
return rows > 0 ? DataResult.Success : DataResult.FailedWithDesc(nameof(MultiLanguageConst.Operation_Failed));
}
#endregion
/// <summary>
/// 列表
/// </summary>
/// <param name="request"></param>
/// <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 result = TenantDb.Queryable<InfoClient>()
.Where(whereList)
.Select<ClientInfoRes>().ToQueryPage(request.PageCondition);
foreach (var item in whereList)
{
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)
{
var ids = result.Data.SelectMany(x => x.SaleOrgIdList).Distinct();
var orgs = Db.Queryable<SysOrg>().Where(x => ids.Contains(x.Id)).Select(x => new { x.Id, x.OrgName }).ToList();
var ids = result.Data.Select(x => x.Id);
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)
{
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));
item.SaleOrgNames = string.Join(",", list.Select(x => x.OrgName));
}
@ -274,6 +324,26 @@ public class ClientInfoService : ServiceBase, IClientInfoService
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>
@ -292,9 +362,7 @@ public class ClientInfoService : ServiceBase, IClientInfoService
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())
{
return DataResult.Failed("客户信息已存在,请检查客户全称、简称或社会信用代码是否重复!", MultiLanguageConst.ClientInfoExist);
}
var tag = req.ClientTag.Adapt<InfoClientTag>();
//助记码

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

@ -86,10 +86,9 @@ public class ClientInfoController : ApiController
/// <returns></returns>
[HttpPost]
[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 res;
return await _invokeService.GetListAsync(request);
}
/// <summary>

Loading…
Cancel
Save