短信服务
This commit is contained in:
@@ -103,5 +103,19 @@
|
||||
"QuartzJobDescription": "OpsJob",
|
||||
"QuartzTriggerIdentity": "OpsTrigger",
|
||||
"QuartzTriggerDescription": "OpsJobTrigger"
|
||||
},
|
||||
"EmailOptions": {
|
||||
"SmtpServer": "smtp.qiye.aliyun.com",
|
||||
"SmtpPort": 587,
|
||||
"SenderName": "Ԫ<><D4AA>ʱ<EFBFBD><CAB1>",
|
||||
"SendTitle": "<22><>Ԫ<EFBFBD><D4AA>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>-<2D><>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>֪ͨ",
|
||||
"SenderEmail": "info@f2b211.com",
|
||||
"SenderEmailPwd": "K4h6GgxZYGMYV1Bb"
|
||||
},
|
||||
"SmsOptions": {
|
||||
"AccessKeyId": "LTAI5tBJg6KeDV2V1NiS7Ngi",
|
||||
"AccessKeySecret": "MAC8bMovSFyCgRQGkfhVcL1jvLJ8cP",
|
||||
"SignName": "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>ʱ<EFBFBD><CAB1>",
|
||||
"TemplateCode": "SMS_465408787"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -956,6 +956,11 @@
|
||||
销售订单
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.Erp.ErpInStockResultDto.CustomerCode">
|
||||
<summary>
|
||||
客户编码
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.Erp.ErpInventoryDto.MaterialNumber">
|
||||
<summary>
|
||||
物料编码
|
||||
@@ -5229,6 +5234,61 @@
|
||||
每页条数 不传默认每页10 条
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.SendDataDto.CustomerCode">
|
||||
<summary>
|
||||
客户编码
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.SendDataDto.CustomerName">
|
||||
<summary>
|
||||
客户名称
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.SendDataDto.PhoneNumbers">
|
||||
<summary>
|
||||
手机号码
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.SendDataDto.Emails">
|
||||
<summary>
|
||||
邮箱
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.SendDataDto.EmailList">
|
||||
<summary>
|
||||
邮箱
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.SendDataDto.Details">
|
||||
<summary>
|
||||
明细
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Core.Dto.SendDataDetailsDto">
|
||||
<summary>
|
||||
明细
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.SendDataDetailsDto.MaterialName">
|
||||
<summary>
|
||||
物料名称
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.SendDataDetailsDto.MaterialNumber">
|
||||
<summary>
|
||||
物料编码
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.SendDataDetailsDto.Specifications">
|
||||
<summary>
|
||||
物料规格型号
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.SendDataDetailsDto.Qty">
|
||||
<summary>
|
||||
数量
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Core.Dto.SerialNumbers.SerialNumbersResponse">
|
||||
<summary>
|
||||
序列号信息
|
||||
|
||||
@@ -935,11 +935,6 @@
|
||||
来源单号
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Domain.Entitys.InStockTask.SaleBillNo">
|
||||
<summary>
|
||||
销售订单号
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Domain.Entitys.InStockTask.Status">
|
||||
<summary>
|
||||
入库状态
|
||||
@@ -1194,6 +1189,26 @@
|
||||
是否作废
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Domain.Entitys.InStockTaskDetails.SaleBillNo">
|
||||
<summary>
|
||||
销售订单号
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Domain.Entitys.InStockTaskDetails.CustomerCode">
|
||||
<summary>
|
||||
客户编码
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Domain.Entitys.InStockTaskDetails.IsHasSend">
|
||||
<summary>
|
||||
是否已发送
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:WMS.Web.Domain.Entitys.InStockTaskDetails.HasSend">
|
||||
<summary>
|
||||
标记已发送
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Domain.Entitys.InStockTotalDetails">
|
||||
<summary>
|
||||
wms入库单-汇总明细
|
||||
@@ -2751,6 +2766,13 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WMS.Web.Domain.Infrastructure.IInStockRepositories.GetInStockTotalDetails(System.Collections.Generic.List{System.Int32})">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="taskIds"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Domain.Infrastructure.IInStockTaskBoxRepositories">
|
||||
<summary>
|
||||
箱与任务单绑定(收货)关系表-仓储接口
|
||||
@@ -2915,6 +2937,12 @@
|
||||
<param name="isTransaction"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WMS.Web.Domain.Infrastructure.IInStockTaskRepositories.GetNotSendErpDetails">
|
||||
<summary>
|
||||
获取明细
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Domain.Infrastructure.IInventoryDetailsRepositories">
|
||||
<summary>
|
||||
库存相关-仓储接口
|
||||
@@ -3552,11 +3580,6 @@
|
||||
盘点单服务
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Domain.IService.IAliyunSmsService">
|
||||
<summary>
|
||||
阿里云短息服务
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Domain.IService.Public.IErpBasicDataExtendService">
|
||||
<summary>
|
||||
erp基础数据:扩展服务接口
|
||||
@@ -4128,6 +4151,39 @@
|
||||
<param name="customerStockCode"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Domain.IService.ISendMessageService">
|
||||
<summary>
|
||||
发送消息服务
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:WMS.Web.Domain.IService.ISendMessageService.SendSms(System.String,System.String)">
|
||||
<summary>
|
||||
短信发送
|
||||
</summary>
|
||||
<param name="phoneNumbers"></param>
|
||||
<param name="content"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WMS.Web.Domain.IService.ISendMessageService.SendEmail(System.Collections.Generic.List{MimeKit.MailboxAddress},System.String)">
|
||||
<summary>
|
||||
邮箱发送
|
||||
</summary>
|
||||
<param name="toMailList"></param>
|
||||
<param name="textBody"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WMS.Web.Domain.IService.ISendMessageService.GetSendContent">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WMS.Web.Domain.IService.ISendMessageService.Execute">
|
||||
<summary>
|
||||
执行
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Domain.Mappers.AppMapper">
|
||||
<summary>
|
||||
mapper映射
|
||||
@@ -4209,6 +4265,41 @@
|
||||
公司ID
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Domain.Options.EmailOptions">
|
||||
<summary>
|
||||
邮箱
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Domain.Options.EmailOptions.SmtpServer">
|
||||
<summary>
|
||||
SMTP 服务器地址
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Domain.Options.EmailOptions.SmtpPort">
|
||||
<summary>
|
||||
SMTP 服务器端口号
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Domain.Options.EmailOptions.SenderName">
|
||||
<summary>
|
||||
名称
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Domain.Options.EmailOptions.SendTitle">
|
||||
<summary>
|
||||
主题
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Domain.Options.EmailOptions.SenderEmail">
|
||||
<summary>
|
||||
发件人邮箱地址
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Domain.Options.EmailOptions.SenderEmailPwd">
|
||||
<summary>
|
||||
发件人邮箱密码
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Domain.Options.ErpOptions">
|
||||
<summary>
|
||||
erp相关配置文件
|
||||
@@ -4394,6 +4485,31 @@
|
||||
触发器描述
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Domain.Options.SmsOptions">
|
||||
<summary>
|
||||
短信配置项
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Domain.Options.SmsOptions.AccessKeyId">
|
||||
<summary>
|
||||
访问凭证ID
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Domain.Options.SmsOptions.AccessKeySecret">
|
||||
<summary>
|
||||
访问秘钥
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Domain.Options.SmsOptions.SignName">
|
||||
<summary>
|
||||
短信签名
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Domain.Options.SmsOptions.TemplateCode">
|
||||
<summary>
|
||||
短信模板编号
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Domain.Options.SoaOptions.Url">
|
||||
<summary>
|
||||
单点系统地址
|
||||
@@ -4455,6 +4571,18 @@
|
||||
<param name="context"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Domain.QuartzJob.SendQuartzJob">
|
||||
<summary>
|
||||
发送信息的定时任务
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:WMS.Web.Domain.QuartzJob.SendQuartzJob.Execute(Quartz.IJobExecutionContext)">
|
||||
<summary>
|
||||
执行方法
|
||||
</summary>
|
||||
<param name="context"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Domain.Services.BackRecordService">
|
||||
<summary>
|
||||
出入库回退上下架:服务接口
|
||||
@@ -5125,11 +5253,6 @@
|
||||
<param name="id"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Domain.Services.AliyunSmsService">
|
||||
<summary>
|
||||
阿里云短息服务
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Domain.Services.Public.ErpBaseDataSync">
|
||||
<summary>
|
||||
同步erp基础数据
|
||||
@@ -5863,6 +5986,39 @@
|
||||
<param name="customerStockCode"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Domain.Services.SendMessageService">
|
||||
<summary>
|
||||
阿里云短息服务
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:WMS.Web.Domain.Services.SendMessageService.SendSms(System.String,System.String)">
|
||||
<summary>
|
||||
短信发送
|
||||
</summary>
|
||||
<param name="phoneNumbers"></param>
|
||||
<param name="content"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WMS.Web.Domain.Services.SendMessageService.SendEmail(System.Collections.Generic.List{MimeKit.MailboxAddress},System.String)">
|
||||
<summary>
|
||||
邮箱发送消息
|
||||
</summary>
|
||||
<param name="toMailList"></param>
|
||||
<param name="textBody"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WMS.Web.Domain.Services.SendMessageService.GetSendContent">
|
||||
<summary>
|
||||
获取数据
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WMS.Web.Domain.Services.SendMessageService.Execute">
|
||||
<summary>
|
||||
执行
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WMS.Web.Domain.Services.QiniuUploadService.Upload(System.String,System.IO.Stream,System.Boolean)">
|
||||
<summary>
|
||||
上传文件
|
||||
|
||||
@@ -83,5 +83,10 @@ namespace WMS.Web.Core.Dto.Erp
|
||||
/// 销售订单
|
||||
/// </summary>
|
||||
public string SaleBillNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 客户编码
|
||||
/// </summary>
|
||||
public string CustomerCode { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,5 +78,6 @@ namespace WMS.Web.Core.Dto.InStockTask
|
||||
/// 序列号
|
||||
/// </summary>
|
||||
public string SerialNumbers { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
65
src/WMS.Web.Core/Dto/SendDataDto.cs
Normal file
65
src/WMS.Web.Core/Dto/SendDataDto.cs
Normal file
@@ -0,0 +1,65 @@
|
||||
using MimeKit;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace WMS.Web.Core.Dto
|
||||
{
|
||||
public class SendDataDto
|
||||
{
|
||||
/// <summary>
|
||||
/// 客户编码
|
||||
/// </summary>
|
||||
public string CustomerCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 客户名称
|
||||
/// </summary>
|
||||
public string CustomerName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 手机号码
|
||||
/// </summary>
|
||||
public string PhoneNumbers { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 邮箱
|
||||
/// </summary>
|
||||
public string Emails { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 邮箱
|
||||
/// </summary>
|
||||
public List<MailboxAddress> EmailList { get; set; } = new List<MailboxAddress>();
|
||||
|
||||
/// <summary>
|
||||
/// 明细
|
||||
/// </summary>
|
||||
public List<SendDataDetailsDto> Details { get; set; } = new List<SendDataDetailsDto>();
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 明细
|
||||
/// </summary>
|
||||
public class SendDataDetailsDto
|
||||
{
|
||||
/// <summary>
|
||||
/// 物料名称
|
||||
/// </summary>
|
||||
public string MaterialName { get; set; }
|
||||
/// <summary>
|
||||
/// 物料编码
|
||||
/// </summary>
|
||||
public string MaterialNumber { get; set; }
|
||||
/// <summary>
|
||||
/// 物料规格型号
|
||||
/// </summary>
|
||||
public string Specifications { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 数量
|
||||
/// </summary>
|
||||
public decimal Qty { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,7 @@
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.IdentityModel.Tokens" Version="5.5.0" />
|
||||
<PackageReference Include="MySql.Data" Version="8.0.29" />
|
||||
<PackageReference Include="NETCore.MailKit" Version="2.1.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
<PackageReference Include="NPinyin.Core" Version="3.0.0" />
|
||||
<PackageReference Include="Npoi.Mapper" Version="3.5.1" />
|
||||
|
||||
@@ -28,10 +28,10 @@ namespace WMS.Web.Domain.Entitys
|
||||
/// </summary>
|
||||
public string SourceBillNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 销售订单号
|
||||
/// </summary>
|
||||
public string SaleBillNo { get; set; }
|
||||
///// <summary>
|
||||
///// 销售订单号
|
||||
///// </summary>
|
||||
//public string SaleBillNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入库状态
|
||||
|
||||
@@ -78,5 +78,28 @@ namespace WMS.Web.Domain.Entitys
|
||||
/// </summary>
|
||||
public bool? IsRepeal { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// 销售订单号
|
||||
/// </summary>
|
||||
public string SaleBillNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 客户编码
|
||||
/// </summary>
|
||||
public string CustomerCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否已发送
|
||||
/// </summary>
|
||||
public bool? IsHasSend { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// 标记已发送
|
||||
/// </summary>
|
||||
public void HasSend()
|
||||
{
|
||||
this.IsHasSend = true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace WMS.Web.Domain.IService
|
||||
{
|
||||
/// <summary>
|
||||
/// 阿里云短息服务
|
||||
/// </summary>
|
||||
public interface IAliyunSmsService
|
||||
{
|
||||
}
|
||||
}
|
||||
45
src/WMS.Web.Domain/IService/Public/ISendMessageService.cs
Normal file
45
src/WMS.Web.Domain/IService/Public/ISendMessageService.cs
Normal file
@@ -0,0 +1,45 @@
|
||||
using MimeKit;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using WMS.Web.Core.Dto;
|
||||
using WMS.Web.Core.Internal.Results;
|
||||
|
||||
namespace WMS.Web.Domain.IService
|
||||
{
|
||||
/// <summary>
|
||||
/// 发送消息服务
|
||||
/// </summary>
|
||||
public interface ISendMessageService
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 短信发送
|
||||
/// </summary>
|
||||
/// <param name="phoneNumbers"></param>
|
||||
/// <param name="content"></param>
|
||||
/// <returns></returns>
|
||||
bool SendSms(string phoneNumbers, string content);
|
||||
|
||||
/// <summary>
|
||||
/// 邮箱发送
|
||||
/// </summary>
|
||||
/// <param name="toMailList"></param>
|
||||
/// <param name="textBody"></param>
|
||||
/// <returns></returns>
|
||||
Task<Result> SendEmail(List<MailboxAddress> toMailList, string textBody);
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<Result<List<SendDataDto>>> GetSendContent();
|
||||
|
||||
/// <summary>
|
||||
/// 执行
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<Result> Execute();
|
||||
}
|
||||
}
|
||||
@@ -87,5 +87,12 @@ namespace WMS.Web.Domain.Infrastructure
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<InStockErpDetails> GetLastBillNo();
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="taskIds"></param>
|
||||
/// <returns></returns>
|
||||
Task<List<InStockTotalDetails>> GetInStockTotalDetails(List<int> taskIds);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,5 +125,11 @@ namespace WMS.Web.Domain.Infrastructure
|
||||
/// <param name="isTransaction"></param>
|
||||
/// <returns></returns>
|
||||
Task<InStockTask> Update(InStockTask entity, bool isTransaction = true);
|
||||
|
||||
/// <summary>
|
||||
/// 获取明细
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<List<InStockTaskDetails>> GetNotSendErpDetails();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ namespace WMS.Web.Domain.Mappers
|
||||
//ERP-同步结果对象统一映射
|
||||
CreateMap<ErpInStockResultDto, InStockTask>()
|
||||
.ForMember(x => x.SourceBillNo, ops => ops.MapFrom(x => x.BillNo))
|
||||
.ForMember(x => x.SaleBillNo, ops => ops.MapFrom(x => x.SaleBillNo))
|
||||
//.ForMember(x => x.SaleBillNo, ops => ops.MapFrom(x => x.SaleBillNo))
|
||||
.ForMember(x => x.OrgCode, ops => ops.MapFrom(x => x.OrgCode))
|
||||
.ForMember(x => x.SupplierId, ops => ops.MapFrom(x => x.SupplierId))
|
||||
.ForMember(x => x.CreateTime, ops => ops.MapFrom(x => x.CreateTime));
|
||||
@@ -73,6 +73,8 @@ namespace WMS.Web.Domain.Mappers
|
||||
.ForMember(x => x.FactoryPrice, ops => ops.MapFrom(x => x.FactoryPrice))
|
||||
.ForMember(x => x.AccruedQty, ops => ops.MapFrom(x => x.Qty))
|
||||
.ForMember(x => x.Remark, ops => ops.MapFrom(x => x.Remark))
|
||||
.ForMember(x => x.SaleBillNo, ops => ops.MapFrom(x => x.SaleBillNo))
|
||||
.ForMember(x => x.CustomerCode, ops => ops.MapFrom(x => x.CustomerCode))
|
||||
.ReverseMap();
|
||||
#endregion
|
||||
|
||||
|
||||
42
src/WMS.Web.Domain/Options/EmailOptions.cs
Normal file
42
src/WMS.Web.Domain/Options/EmailOptions.cs
Normal file
@@ -0,0 +1,42 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace WMS.Web.Domain.Options
|
||||
{
|
||||
/// <summary>
|
||||
/// 邮箱
|
||||
/// </summary>
|
||||
public class EmailOptions
|
||||
{
|
||||
/// <summary>
|
||||
/// SMTP 服务器地址
|
||||
/// </summary>
|
||||
public string SmtpServer { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// SMTP 服务器端口号
|
||||
/// </summary>
|
||||
public int SmtpPort { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 名称
|
||||
/// </summary>
|
||||
public string SenderName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 主题
|
||||
/// </summary>
|
||||
public string SendTitle { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 发件人邮箱地址
|
||||
/// </summary>
|
||||
public string SenderEmail { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 发件人邮箱密码
|
||||
/// </summary>
|
||||
public string SenderEmailPwd { get; set; }
|
||||
}
|
||||
}
|
||||
32
src/WMS.Web.Domain/Options/SmsOptions.cs
Normal file
32
src/WMS.Web.Domain/Options/SmsOptions.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace WMS.Web.Domain.Options
|
||||
{
|
||||
/// <summary>
|
||||
/// 短信配置项
|
||||
/// </summary>
|
||||
public class SmsOptions
|
||||
{
|
||||
/// <summary>
|
||||
/// 访问凭证ID
|
||||
/// </summary>
|
||||
public string AccessKeyId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 访问秘钥
|
||||
/// </summary>
|
||||
public string AccessKeySecret { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 短信签名
|
||||
/// </summary>
|
||||
public string SignName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 短信模板编号
|
||||
/// </summary>
|
||||
public string TemplateCode { get; set; }
|
||||
}
|
||||
}
|
||||
63
src/WMS.Web.Domain/QuartzJob/SendQuartzJob.cs
Normal file
63
src/WMS.Web.Domain/QuartzJob/SendQuartzJob.cs
Normal file
@@ -0,0 +1,63 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Quartz;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using WMS.Web.Domain.IService;
|
||||
|
||||
namespace WMS.Web.Domain.QuartzJob
|
||||
{
|
||||
/// <summary>
|
||||
/// 发送信息的定时任务
|
||||
/// </summary>
|
||||
public class SendQuartzJob : IJob
|
||||
{
|
||||
private readonly ILogger<SendQuartzJob> _logger;
|
||||
private readonly IServiceScopeFactory _serviceScopeFactory;
|
||||
private readonly ISendMessageService _sendMessageService;
|
||||
|
||||
public SendQuartzJob(ILogger<SendQuartzJob> logger,
|
||||
IServiceScopeFactory serviceScopeFactory,
|
||||
ISendMessageService sendMessageService)
|
||||
{
|
||||
this._logger = logger;
|
||||
_serviceScopeFactory = serviceScopeFactory;
|
||||
_sendMessageService = sendMessageService;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 执行方法
|
||||
/// </summary>
|
||||
/// <param name="context"></param>
|
||||
/// <returns></returns>
|
||||
public async Task Execute(IJobExecutionContext context)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
//1.记录:开始时间
|
||||
var begindatetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
||||
_logger.LogInformation($"发送通知信息:执行开始时间->{begindatetime}");
|
||||
var result= await _sendMessageService.Execute();
|
||||
if (!result.IsSuccess)
|
||||
{
|
||||
_logger.LogInformation($"发送通知信息:执行失败->{result.Message}");
|
||||
}
|
||||
|
||||
//3.记录:结束时间
|
||||
var enddatetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
||||
_logger.LogInformation($"发送通知信息:执行结束时间->{begindatetime}");
|
||||
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogInformation($"发送通知信息:定时任务执行失败->{ex.Message}");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using WMS.Web.Domain.IService;
|
||||
using Aliyun.Acs.Core;
|
||||
using Aliyun.Acs.Core.Profile;
|
||||
using Aliyun.Acs.Dysmsapi.Model.V20170525;
|
||||
using Aliyun.Acs.Core.Exceptions;
|
||||
|
||||
namespace WMS.Web.Domain.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// 阿里云短息服务
|
||||
/// </summary>
|
||||
public class AliyunSmsService: IAliyunSmsService
|
||||
{
|
||||
private readonly ILogger<AliyunSmsService> _logger;
|
||||
private readonly IAcsClient profile;
|
||||
|
||||
public AliyunSmsService(ILogger<AliyunSmsService> logger, string accessKeyId, string accessKeySecret)
|
||||
{
|
||||
_logger = logger;
|
||||
profile = new DefaultAcsClient(DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret));
|
||||
}
|
||||
|
||||
public bool SendSms(string phoneNumbers, string templateCode, string signName, string templateParam = null)
|
||||
{
|
||||
SendSmsRequest request = new SendSmsRequest
|
||||
{
|
||||
PhoneNumbers = phoneNumbers,
|
||||
SignName = signName,
|
||||
TemplateCode = templateCode,
|
||||
TemplateParam = templateParam
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
SendSmsResponse response = profile.GetAcsResponse(request);
|
||||
return response.Code == "OK";
|
||||
}
|
||||
catch (ServerException ex)
|
||||
{
|
||||
// 处理服务端异常
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
catch (ClientException ex)
|
||||
{
|
||||
// 处理客户端异常
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -183,7 +183,7 @@ namespace WMS.Web.Domain.Services.Public
|
||||
//3.获取金蝶采购订单:拼接参数和条件
|
||||
var query = new ErpBillQueryDto(token_result.Data);
|
||||
var param = new ErpBillQueryParamDto(FormIdParam.PUR_PurchaseOrder.ToString());
|
||||
param.FieldKeys = "FBillNo,FSupplierId,FPurchaseOrgId,FMaterialId.FNumber,FSOSTOCKID,FQty,FEntryNote,FCreateDate,FCHUCHANGPRICE,FSOSTOCKID.FNumber,FStockInQty,FPurchaseOrgId.FNumber,FPOOrderEntry_FEntryID,FDEMANDBILLNO";
|
||||
param.FieldKeys = "FBillNo,FSupplierId,FPurchaseOrgId,FMaterialId.FNumber,FSOSTOCKID,FQty,FEntryNote,FCreateDate,FCHUCHANGPRICE,FSOSTOCKID.FNumber,FStockInQty,FPurchaseOrgId.FNumber,FPOOrderEntry_FEntryID,FDEMANDBILLNO,F_client.FNumber";
|
||||
param.Limit = 10000;
|
||||
//查询条件:备注其中的条件值以金蝶的值为准!!!
|
||||
//1.创建时间在两天前和当天时间之间
|
||||
@@ -263,6 +263,7 @@ namespace WMS.Web.Domain.Services.Public
|
||||
lis.OrgCode = item[11];
|
||||
lis.ErpDetailId = Convert.ToInt32(item[12]);
|
||||
lis.SaleBillNo = item[13];
|
||||
lis.CustomerCode = item[14];
|
||||
lis.Type = (int)InstockType.Purchase;
|
||||
erp_list.Add(lis);
|
||||
}
|
||||
|
||||
249
src/WMS.Web.Domain/Services/Public/SendMessageService.cs
Normal file
249
src/WMS.Web.Domain/Services/Public/SendMessageService.cs
Normal file
@@ -0,0 +1,249 @@
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using WMS.Web.Domain.IService;
|
||||
using Aliyun.Acs.Core;
|
||||
using Aliyun.Acs.Core.Profile;
|
||||
using Aliyun.Acs.Dysmsapi.Model.V20170525;
|
||||
using Aliyun.Acs.Core.Exceptions;
|
||||
using WMS.Web.Core.Internal.Results;
|
||||
using System.Threading.Tasks;
|
||||
using WMS.Web.Domain.Options;
|
||||
using Microsoft.Extensions.Options;
|
||||
using MimeKit;
|
||||
using MailKit.Net.Smtp;
|
||||
using MailKit.Security;
|
||||
using Newtonsoft.Json;
|
||||
using WMS.Web.Domain.Infrastructure;
|
||||
using WMS.Web.Core.Dto;
|
||||
using System.Linq;
|
||||
using WMS.Web.Domain.IService.Public;
|
||||
using WMS.Web.Core.Dto.Erp;
|
||||
|
||||
namespace WMS.Web.Domain.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// 阿里云短息服务
|
||||
/// </summary>
|
||||
public class SendMessageService: ISendMessageService
|
||||
{
|
||||
private readonly ILogger<SendMessageService> _logger;
|
||||
private readonly IClientProfile profile;
|
||||
private readonly DefaultAcsClient client;
|
||||
private readonly EmailOptions _emailOptions;
|
||||
private readonly SmsOptions _smsOptions;
|
||||
private readonly IInStockRepositories _inStockRepositories;
|
||||
private readonly IInStockTaskRepositories _inStockTaskRepositories;
|
||||
private readonly IErpBasicDataExtendService _erpBasicDataExtendService;
|
||||
private readonly ISubscribeNotificationRepositories _subscribeNotificationRepositories;
|
||||
private readonly IErpService _erpService;
|
||||
|
||||
public SendMessageService(ILogger<SendMessageService> logger,
|
||||
IOptions<EmailOptions> emailOptions,
|
||||
IOptions<SmsOptions> smsOptions,
|
||||
IInStockRepositories inStockRepositories,
|
||||
IErpService erpService,
|
||||
IErpBasicDataExtendService erpBasicDataExtendService,
|
||||
IInStockTaskRepositories inStockTaskRepositories,
|
||||
ISubscribeNotificationRepositories subscribeNotificationRepositories)
|
||||
{
|
||||
_logger = logger;
|
||||
_erpService = erpService;
|
||||
_inStockRepositories = inStockRepositories;
|
||||
_erpBasicDataExtendService = erpBasicDataExtendService;
|
||||
_inStockTaskRepositories = inStockTaskRepositories;
|
||||
_subscribeNotificationRepositories = subscribeNotificationRepositories;
|
||||
_emailOptions = emailOptions?.Value;
|
||||
_smsOptions = smsOptions?.Value;
|
||||
profile = DefaultProfile.GetProfile("cn-hangzhou", _smsOptions.AccessKeyId, _smsOptions.AccessKeySecret);
|
||||
client = new DefaultAcsClient(profile);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 短信发送
|
||||
/// </summary>
|
||||
/// <param name="phoneNumbers"></param>
|
||||
/// <param name="content"></param>
|
||||
/// <returns></returns>
|
||||
public bool SendSms(string phoneNumbers, string content)
|
||||
{
|
||||
// 构造短信请求
|
||||
SendSmsRequest request = new SendSmsRequest();
|
||||
request.PhoneNumbers = phoneNumbers; // 目标手机号
|
||||
request.SignName = _smsOptions.SignName; // 短信签名
|
||||
request.TemplateCode = _smsOptions.TemplateCode; // 短信模板编号
|
||||
request.TemplateParam = "{\"material\":\"" + content+"\"}"; // 模板参数,根据实际情况填写
|
||||
|
||||
try
|
||||
{
|
||||
// 发送短信
|
||||
SendSmsResponse response = client.GetAcsResponse(request);
|
||||
_logger.LogInformation("短信发送消息:成功->手机号码:" + phoneNumbers + " 内容:" + content);
|
||||
return true;
|
||||
}
|
||||
catch (ServerException e)
|
||||
{
|
||||
_logger.LogInformation($"短信发送消息:Server失败:{e.ErrorMessage}->手机号码:" + phoneNumbers + " 内容:" + content);
|
||||
return false;
|
||||
}
|
||||
catch (ClientException e)
|
||||
{
|
||||
_logger.LogInformation($"短信发送消息:Client失败:{e.ErrorMessage}->手机号码:" + phoneNumbers + " 内容:" + content);
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 邮箱发送消息
|
||||
/// </summary>
|
||||
/// <param name="toMailList"></param>
|
||||
/// <param name="textBody"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<Result> SendEmail(List<MailboxAddress> toMailList,string textBody)
|
||||
{
|
||||
// 创建 MimeMessage 实例
|
||||
MimeMessage message = new MimeMessage();
|
||||
message.From.Add(new MailboxAddress(_emailOptions.SenderName, _emailOptions.SenderEmail)); // 设置发件人姓名和邮箱地址
|
||||
//message.To.Add(new MailboxAddress("Recipient Name", "244188119@qq.com")); // 设置收件人姓名和邮箱地址
|
||||
message.To.AddRange(toMailList);
|
||||
message.Subject = _emailOptions.SendTitle+$"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}"; // 设置邮件主题
|
||||
|
||||
// 创建邮件正文
|
||||
BodyBuilder bodyBuilder = new BodyBuilder();
|
||||
bodyBuilder.TextBody = textBody; // 设置纯文本内容
|
||||
//bodyBuilder.HtmlBody = "<p>This is a <b>test</b> email sent from <i>.NETCore.MailKit</i>.lst</p>"; // 设置 HTML 内容
|
||||
message.Body = bodyBuilder.ToMessageBody();
|
||||
|
||||
try
|
||||
{
|
||||
// 连接 SMTP 服务器并发送邮件
|
||||
using (SmtpClient client = new SmtpClient())
|
||||
{
|
||||
await client.ConnectAsync(_emailOptions.SmtpServer, _emailOptions.SmtpPort, SecureSocketOptions.StartTls); // 连接 SMTP 服务器
|
||||
await client.AuthenticateAsync(_emailOptions.SenderEmail, _emailOptions.SenderEmailPwd); // 进行身份验证
|
||||
await client.SendAsync(message); // 发送邮件
|
||||
await client.DisconnectAsync(true); // 断开连接
|
||||
}
|
||||
_logger.LogInformation("邮箱发送消息:成功->收件方:"+JsonConvert.SerializeObject(toMailList)+" 内容:"+textBody);
|
||||
return Result.ReSuccess();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogInformation("邮箱发送消息:失败->收件方:" + JsonConvert.SerializeObject(toMailList) + " 内容:" + textBody);
|
||||
return Result.ReFailure("邮箱发送失败:"+ex.Message,50006);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取数据
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<Result<List<SendDataDto>>> GetSendContent()
|
||||
{
|
||||
//1.获取物料集合和组织集合和供应商的集合
|
||||
var materials = new List<ErpMaterialDto>();
|
||||
var materials_result = await _erpService.BillQueryForMaterial();
|
||||
if (materials_result.IsSuccess)
|
||||
materials = materials_result.Data.ToList();
|
||||
|
||||
//客户
|
||||
var customerList= await _subscribeNotificationRepositories.GetList();
|
||||
//要处理发送的明细
|
||||
var notSendDetails=await _inStockTaskRepositories.GetNotSendErpDetails();
|
||||
|
||||
|
||||
var sendDataList = new List<SendDataDto>();
|
||||
if (customerList != null && customerList.Count != 0)
|
||||
{
|
||||
if (notSendDetails != null && notSendDetails.Count != 0)
|
||||
{
|
||||
var taskIds= notSendDetails.GroupBy(x => x.Fid).Select(x => x.Key).ToList();
|
||||
|
||||
var instockTotalDetails= await _inStockRepositories.GetInStockTotalDetails(taskIds);
|
||||
foreach (var item in customerList)
|
||||
{
|
||||
var current_notSendDetails= notSendDetails.Where(x => x.CustomerCode == item.CustomerNumber).ToList();
|
||||
if (current_notSendDetails != null && current_notSendDetails.Count != 0)
|
||||
{
|
||||
var data = new SendDataDto();
|
||||
data.CustomerCode = item.CustomerNumber;
|
||||
data.CustomerName = item.CustomerName;
|
||||
data.PhoneNumbers = string.Join(",", item.Telephones);
|
||||
data.Emails= string.Join(",", item.Emails);
|
||||
foreach (var ema in item.Emails)
|
||||
{
|
||||
data.EmailList.Add(new MailboxAddress("Recipient Name", ema));
|
||||
}
|
||||
|
||||
foreach (var current_det in current_notSendDetails)
|
||||
{
|
||||
var det = new SendDataDetailsDto();
|
||||
det.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, current_det.MaterialNumber);
|
||||
det.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, current_det.MaterialNumber);
|
||||
det.MaterialNumber = current_det.MaterialNumber;
|
||||
det.Qty=instockTotalDetails.Where(x => x.TaskId == current_det.Fid && x.MaterialNumber == current_det.MaterialNumber).Sum(x => x.Qty);
|
||||
if (det.Qty > 0)
|
||||
data.Details.Add(det);
|
||||
}
|
||||
if (data.Details.Count != 0)
|
||||
sendDataList.Add(data);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return Result<List<SendDataDto>>.ReSuccess(sendDataList);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 执行
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<Result> Execute()
|
||||
{
|
||||
try
|
||||
{
|
||||
var sendContentList_result = await this.GetSendContent();
|
||||
if (sendContentList_result.IsSuccess)
|
||||
{
|
||||
var sendContentList = sendContentList_result.Data;
|
||||
|
||||
if (sendContentList != null && sendContentList.Count != 0)
|
||||
{
|
||||
|
||||
foreach (var item in sendContentList)
|
||||
{
|
||||
|
||||
var content = "";
|
||||
int i = 1;
|
||||
foreach (var det in item.Details)
|
||||
{
|
||||
if (i == item.Details.Count)
|
||||
content = det.Specifications + " X 数量" + det.Qty;
|
||||
else
|
||||
content = det.Specifications + " X 数量" + det.Qty + ",";
|
||||
i = i + 1;
|
||||
|
||||
}
|
||||
//邮箱
|
||||
await this.SendEmail(item.EmailList, content);
|
||||
//短信
|
||||
this.SendSms(item.PhoneNumbers, content);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return Result.ReSuccess();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return Result.ReFailure("发送失败:"+ex.Message,50006);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,7 @@
|
||||
<PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Http" Version="3.1.10" />
|
||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="5.0.0" />
|
||||
<PackageReference Include="NETCore.MailKit" Version="2.1.0" />
|
||||
<PackageReference Include="Pomelo.AspNetCore.TimedJob" Version="2.0.0-rtm-10046" />
|
||||
<PackageReference Include="Qiniu" Version="8.0.0" />
|
||||
<PackageReference Include="SkiaSharp" Version="2.80.3" />
|
||||
|
||||
@@ -178,6 +178,13 @@ namespace WMS.Web.Repositories.DependencyInjection
|
||||
Services.Configure<OpsOptions>(Configuration.GetSection("OpsOptions"));
|
||||
Services.AddOptions<QiniuOptions>();
|
||||
Services.Configure<QiniuOptions>(Configuration.GetSection("Qiniu"));
|
||||
Services.AddOptions<EmailOptions>();
|
||||
Services.Configure<EmailOptions>(Configuration.GetSection("EmailOptions"));
|
||||
Services.AddOptions<SmsOptions>();
|
||||
Services.Configure<SmsOptions>(Configuration.GetSection("SmsOptions"));
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -296,6 +303,8 @@ namespace WMS.Web.Repositories.DependencyInjection
|
||||
Services.AddTransient<IInventoryDetailsService, InventoryDetailsService>();
|
||||
Services.AddTransient<IInStockTaskBoxService, InStockTaskBoxService>();
|
||||
Services.AddTransient<IBoxMarkService, BoxMarkService>();
|
||||
Services.AddTransient<ISendMessageService, SendMessageService>();
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -420,5 +420,15 @@ namespace WMS.Web.Repositories
|
||||
var entity = await _context.InStockErpDetails.OrderByDescending(x => x.Id).FirstOrDefaultAsync();
|
||||
return entity;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="taskIds"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<InStockTotalDetails>> GetInStockTotalDetails(List<int> taskIds)
|
||||
{
|
||||
return await _context.InStockTotalDetails.Where(x => taskIds.Contains(x.TaskId)).ToListAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -141,7 +141,7 @@ namespace WMS.Web.Repositories
|
||||
if (suppliers_result.IsSuccess)
|
||||
suppliers = suppliers_result.Data.ToList();
|
||||
|
||||
var entity = await _context.InStockTask.Where(x => x.Id == id).FirstOrDefaultAsync();
|
||||
var entity = await _context.InStockTask.Include(x=>x.Details).Where(x => x.Id == id).FirstOrDefaultAsync();
|
||||
|
||||
if (entity != null)
|
||||
{
|
||||
@@ -149,8 +149,8 @@ namespace WMS.Web.Repositories
|
||||
{
|
||||
Id = entity.Id,
|
||||
BillNo = entity.BillNo,
|
||||
SaleBillNo= (string.Join(",", entity.Details.Select(x => x.SaleBillNo).ToList()).TrimEnd(',')),
|
||||
SourceBillNo = entity.SourceBillNo,
|
||||
SaleBillNo = entity.SaleBillNo,
|
||||
Status = entity.Status.GetRemark(),
|
||||
Type = entity.Type.GetRemark(),
|
||||
Supplier = _erpBasicDataExtendService.GetSupplierName(suppliers, entity.SupplierId??0),
|
||||
@@ -207,7 +207,11 @@ namespace WMS.Web.Repositories
|
||||
{
|
||||
x.SerialNumbers = (string.Join(",", serialNumbList.Where(x => x.MaterialNumber == x.MaterialNumber).Select(x => x.SerialNumber).ToList())).TrimEnd(',');
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
response.Boxs = boxList;
|
||||
}
|
||||
else
|
||||
@@ -753,5 +757,14 @@ namespace WMS.Web.Repositories
|
||||
|
||||
return (list, total);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取明细
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<List<InStockTaskDetails>> GetNotSendErpDetails()
|
||||
{
|
||||
return await _context.InStockTaskDetails.Where(x =>x.AccruedQty!=0 && x.IsHasSend != null && x.IsHasSend == false && !string.IsNullOrEmpty(x.SaleBillNo) && !string.IsNullOrEmpty(x.CustomerCode)).ToListAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user