diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
index 4084ea5a..aa10a6e7 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
@@ -2208,6 +2208,11 @@
明细ID
+
+
+ 客户编码
+
+
对应金蝶的明细ID
@@ -2703,6 +2708,16 @@
单据ID(等同-入库任务单ID)
+
+
+ 单据ID(等同-入库任务单明细ID)
+
+
+
+
+ 客户编码
+
+
箱ID
@@ -5284,9 +5299,9 @@
明细
-
+
- 任务明细ID
+ 入库明细ID
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index 30046a31..fc5ace10 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -813,6 +813,16 @@
任务单ID
+
+
+ 任务单明细ID
+
+
+
+
+ 客户编码
+
+
箱ID
@@ -848,6 +858,16 @@
序列号集
+
+
+ 是否已发送
+
+
+
+
+ 标记已发送
+
+
wms入库单ERP明细
@@ -2801,6 +2821,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
箱与任务单绑定(收货)关系表-仓储接口
@@ -4256,12 +4297,6 @@
-
-
-
-
-
-
执行
diff --git a/src/WMS.Web.Core/Dto/InStock/SaveInStockDetailsRequest.cs b/src/WMS.Web.Core/Dto/InStock/SaveInStockDetailsRequest.cs
index 78667c70..413ae5bb 100644
--- a/src/WMS.Web.Core/Dto/InStock/SaveInStockDetailsRequest.cs
+++ b/src/WMS.Web.Core/Dto/InStock/SaveInStockDetailsRequest.cs
@@ -16,6 +16,18 @@ namespace WMS.Web.Core.Dto.InStock
[Required(ErrorMessage = "任务单ID不能为空")]
public int TaskId { get; set; }
+ ///
+ /// 单据ID(等同-入库任务单明细ID)
+ ///
+ [Required(ErrorMessage = "任务单明细ID不能为空")]
+ public int TaskDetailId { get; set; }
+
+ ///
+ /// 客户编码
+ ///
+ [Required(ErrorMessage = "客户编码不能为空")]
+ public string CustomerCode { get; set; }
+
///
/// 箱ID
///
diff --git a/src/WMS.Web.Core/Dto/InStockTask/SourceBillNoQueryResponse.cs b/src/WMS.Web.Core/Dto/InStockTask/SourceBillNoQueryResponse.cs
index bf2d84da..95312b56 100644
--- a/src/WMS.Web.Core/Dto/InStockTask/SourceBillNoQueryResponse.cs
+++ b/src/WMS.Web.Core/Dto/InStockTask/SourceBillNoQueryResponse.cs
@@ -18,6 +18,11 @@ namespace WMS.Web.Core.Dto.InStockTask
///
public int DetailsId { get; set; }
+ ///
+ /// 客户编码
+ ///
+ public string CustomerCode { get; set; }
+
///
/// 对应金蝶的明细ID
///
diff --git a/src/WMS.Web.Core/Dto/SendDataDto.cs b/src/WMS.Web.Core/Dto/SendDataDto.cs
index 375e268b..a0d81cd5 100644
--- a/src/WMS.Web.Core/Dto/SendDataDto.cs
+++ b/src/WMS.Web.Core/Dto/SendDataDto.cs
@@ -45,10 +45,15 @@ namespace WMS.Web.Core.Dto
public class SendDataDetailsDto
{
+ /////
+ ///// 任务明细ID
+ /////
+ //public int TaskDetailId { get; set; }
+
///
- /// 任务明细ID
+ /// 入库明细ID
///
- public int TaskDetailId { get; set; }
+ public int InStockDetailId { get; set; }
///
/// 物料名称
diff --git a/src/WMS.Web.Domain/Entitys/InStockDetails.cs b/src/WMS.Web.Domain/Entitys/InStockDetails.cs
index 669e5950..c1fca920 100644
--- a/src/WMS.Web.Domain/Entitys/InStockDetails.cs
+++ b/src/WMS.Web.Domain/Entitys/InStockDetails.cs
@@ -28,6 +28,16 @@ namespace WMS.Web.Domain.Entitys
///
public int TaskId { get; set; }
+ ///
+ /// 任务单明细ID
+ ///
+ public int? TaskDetailId { get; set; }
+
+ ///
+ /// 客户编码
+ ///
+ public string CustomerCode { get; set; }
+
///
/// 箱ID
///
@@ -60,5 +70,18 @@ namespace WMS.Web.Domain.Entitys
/// 序列号集
///
public List SerialNumbers { get; set; } = new List();
+
+ ///
+ /// 是否已发送
+ ///
+ public bool? IsHasSend { get; set; } = false;
+
+ ///
+ /// 标记已发送
+ ///
+ public void HasSend()
+ {
+ this.IsHasSend = true;
+ }
}
}
diff --git a/src/WMS.Web.Domain/IService/Public/ISendMessageService.cs b/src/WMS.Web.Domain/IService/Public/ISendMessageService.cs
index 199524be..a7d12c62 100644
--- a/src/WMS.Web.Domain/IService/Public/ISendMessageService.cs
+++ b/src/WMS.Web.Domain/IService/Public/ISendMessageService.cs
@@ -30,12 +30,6 @@ namespace WMS.Web.Domain.IService
///
Task SendEmail(List toMailList, string textBody, string coustomerName);
- ///
- ///
- ///
- ///
- Task>> GetSendContent();
-
///
/// 执行
///
diff --git a/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs
index c53a6b74..48aad4d8 100644
--- a/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs
+++ b/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs
@@ -94,5 +94,26 @@ namespace WMS.Web.Domain.Infrastructure
///
///
Task> GetInStockTotalDetails(List taskIds);
+
+ ///
+ ///
+ ///
+ ///
+ Task> GetNotSendDetails();
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ Task> GetDetailsList(List ids);
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ Task UpdateRange(List entitys, bool isTransaction = true);
}
}
diff --git a/src/WMS.Web.Domain/Services/Public/SendMessageService.cs b/src/WMS.Web.Domain/Services/Public/SendMessageService.cs
index b8869284..33d30390 100644
--- a/src/WMS.Web.Domain/Services/Public/SendMessageService.cs
+++ b/src/WMS.Web.Domain/Services/Public/SendMessageService.cs
@@ -155,7 +155,7 @@ namespace WMS.Web.Domain.Services
/// 获取数据
///
///
- public async Task>> GetSendContent()
+ public async Task<(List sendDataList, List updateDetails)> GetSendContent()
{
//1.获取物料集合和组织集合和供应商的集合
var materials = new List();
@@ -166,7 +166,9 @@ namespace WMS.Web.Domain.Services
//客户
var customerList = await _subscribeNotificationRepositories.GetList();
//要处理发送的明细
- var notSendDetails = await _inStockTaskRepositories.GetNotSendErpDetails();
+ //var notSendDetails = await _inStockTaskRepositories.GetNotSendErpDetails();
+ var notSendDetails = await _inStockRepositories.GetNotSendDetails();
+
var sendDataList = new List();
@@ -174,12 +176,22 @@ namespace WMS.Web.Domain.Services
{
if (notSendDetails != null && notSendDetails.Count != 0)
{
- var taskIds = notSendDetails.GroupBy(x => x.Fid).Select(x => x.Key).ToList();
+ //var taskIds = notSendDetails.GroupBy(x => x.Fid).Select(x => x.Key).ToList();
+
+ //var instockTotalDetails = await _inStockRepositories.GetInStockTotalDetails(taskIds);
+ var instockTotalDetails = notSendDetails.GroupBy(x => new { x.TaskDetailId, x.CustomerCode, x.MaterialNumber }).Select(x => new
+ {
+ TaskDetailId = x.Key.TaskDetailId,
+ CustomerCode = x.Key.CustomerCode,
+ MaterialNumber = x.Key.MaterialNumber,
+ TotalQty = x.Sum(t => t.Qty)
+ }).ToList();
- var instockTotalDetails = await _inStockRepositories.GetInStockTotalDetails(taskIds);
foreach (var item in customerList)
{
- var current_notSendDetails = notSendDetails.Where(x => x.CustomerCode == item.CustomerNumber).ToList();
+ //var current_notSendDetails = notSendDetails.Where(x => x.CustomerCode == item.CustomerNumber).ToList();
+ //var current_notSendDetails = instockTotalDetails.Where(x => x.CustomerCode == item.CustomerNumber).ToList();
+ var current_notSendDetails = instockTotalDetails.Where(x => x.CustomerCode == item.CustomerNumber).ToList();
if (current_notSendDetails != null && current_notSendDetails.Count != 0)
{
var data = new SendDataDto();
@@ -195,13 +207,15 @@ namespace WMS.Web.Domain.Services
foreach (var current_det in current_notSendDetails)
{
var det = new SendDataDetailsDto();
- det.TaskDetailId = current_det.Id;
+ //det.TaskDetailId = current_det.Id;
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);
+ //det.Qty = instockTotalDetails.Where(x => x.TaskId == current_det.Fid && x.MaterialNumber == current_det.MaterialNumber).Sum(x => x.Qty);
+ det.Qty = current_det.TotalQty;
+ data.Details.Add(det);
+ //if (det.Qty > 0)
+ // data.Details.Add(det);
}
if (data.Details.Count != 0)
sendDataList.Add(data);
@@ -212,7 +226,7 @@ namespace WMS.Web.Domain.Services
}
}
- return Result>.ReSuccess(sendDataList);
+ return (sendDataList, notSendDetails);
}
///
@@ -223,63 +237,62 @@ namespace WMS.Web.Domain.Services
{
try
{
- var update_taskDetailsIds = new List();
+ var update_DetailsIds = new List();
- var sendContentList_result = await this.GetSendContent();
- if (sendContentList_result.IsSuccess)
+ var (sendContentList,updateList) = await this.GetSendContent();
+
+ if (sendContentList != null && sendContentList.Count != 0)
{
- var sendContentList = sendContentList_result.Data;
- if (sendContentList != null && sendContentList.Count != 0)
+ foreach (var item in sendContentList)
{
- foreach (var item in sendContentList)
+ var content = "";
+ int i = 1;
+ foreach (var det in item.Details)
{
+ if (i == item.Details.Count)
+ content = det.Specifications + " 数量" + Convert.ToInt32(det.Qty);
+ else
+ content = det.Specifications + " 数量" + Convert.ToInt32(det.Qty) + ",";
+ i = i + 1;
- var content = "";
- int i = 1;
- foreach (var det in item.Details)
- {
- update_taskDetailsIds.Add(det.TaskDetailId);
- if (i == item.Details.Count)
- content = det.Specifications + " 数量" + Convert.ToInt32(det.Qty);
- else
- content = det.Specifications + " 数量" + Convert.ToInt32(det.Qty) + ",";
- i = i + 1;
-
- }
- //邮箱
- await this.SendEmail(item.EmailList, content, item.CustomerName);
- //短信
- var sms_result = this.SendSms(item.PhoneNumbers, content);
- //内容过长-分段发送
- if (!sms_result.IsSuccess && sms_result.Message == "isv.PARAM_LENGTH_LIMIT")
- {
- //分段发送:以字数480长度分段
- var contentParts = this.SplitContent(content, 480);
- foreach (var partContent in contentParts)
- {
- this.SendSms(item.PhoneNumbers, partContent);
- }
-
- }
}
- //任务明细:修改的
- var tasksDetails = await _inStockTaskRepositories.GetDetailsList(update_taskDetailsIds.Distinct().ToList());
- if (tasksDetails != null && tasksDetails.Count != 0)
+ //邮箱
+ await this.SendEmail(item.EmailList, content, item.CustomerName);
+ //短信
+ var sms_result = this.SendSms(item.PhoneNumbers, content);
+ //内容过长-分段发送
+ if (!sms_result.IsSuccess && sms_result.Message == "isv.PARAM_LENGTH_LIMIT")
{
- tasksDetails.ForEach(x => { x.IsHasSend = true; });
-
- var update_Result = await _inStockTaskRepositories.UpdateRange(tasksDetails);
- if (!update_Result)
+ //分段发送:以字数480长度分段
+ var contentParts = this.SplitContent(content, 480);
+ foreach (var partContent in contentParts)
{
- _logger.LogInformation("发送消息:失败-修改任务明细->:" + JsonConvert.SerializeObject(tasksDetails));
+ this.SendSms(item.PhoneNumbers, partContent);
}
+
+ }
+ }
+
+ update_DetailsIds = updateList.Select(x => x.Id).ToList();
+ //任务明细:修改的
+ //var tasksDetails = await _inStockTaskRepositories.GetDetailsList(update_taskDetailsIds);
+ var inStockDetails = await _inStockRepositories.GetDetailsList(update_DetailsIds);
+ if (inStockDetails != null && inStockDetails.Count != 0)
+ {
+ inStockDetails.ForEach(x => { x.IsHasSend = true; });
+
+ var update_Result = await _inStockRepositories.UpdateRange(inStockDetails);
+ if (!update_Result)
+ {
+ _logger.LogInformation("发送消息:失败-修改入库明细->:" + JsonConvert.SerializeObject(inStockDetails));
}
}
- else
- _logger.LogInformation("发送消息:暂无可发送的通知明细");
}
+ else
+ _logger.LogInformation("发送消息:暂无可发送的通知明细");
+
return Result.ReSuccess();
}
diff --git a/src/WMS.Web.Repositories/InStockRepositories.cs b/src/WMS.Web.Repositories/InStockRepositories.cs
index b7f68d1a..c774d187 100644
--- a/src/WMS.Web.Repositories/InStockRepositories.cs
+++ b/src/WMS.Web.Repositories/InStockRepositories.cs
@@ -423,5 +423,57 @@ namespace WMS.Web.Repositories
{
return await _context.InStockTotalDetails.Where(x => taskIds.Contains(x.TaskId)).ToListAsync();
}
+
+ ///
+ /// 获取明细
+ ///
+ ///
+ public async Task> GetNotSendDetails()
+ {
+ return await _context.InStockDetails.Where(x =>x.IsHasSend != null && x.IsHasSend == false && !string.IsNullOrEmpty(x.CustomerCode)).ToListAsync();
+ }
+
+ ///
+ /// 列表
+ ///
+ ///
+ ///
+ public async Task> GetDetailsList(List ids)
+ {
+ var entitys = await _context.InStockDetails
+ .Where(f => ids.Contains(f.Id))
+ .ToListAsync();
+ return entitys;
+ }
+
+ ///
+ /// 批量修改-明细
+ ///
+ ///
+ ///
+ public async Task UpdateRange(List entitys, bool isTransaction = true)
+ {
+ IDbContextTransaction _transaction = null;
+ if (isTransaction)
+ _transaction = _context.Database.BeginTransaction();
+ {
+ try
+ {
+ List list = entitys.Select(s => s.Id).ToList();
+ var res = await _context.InStockDetails.AsNoTracking().Where(f => list.Contains(f.Id)).ToListAsync();
+ _mapper.ToMapList(entitys, res);
+ await _context.SaveChangesAsync();
+ if (_transaction != null)
+ _transaction.Commit();
+ }
+ catch (Exception ex)
+ {
+ if (_transaction != null)
+ _transaction.Rollback();
+ return false;
+ }
+ return true;
+ }
+ }
}
}
diff --git a/src/WMS.Web.Repositories/InStockTaskRepositories.cs b/src/WMS.Web.Repositories/InStockTaskRepositories.cs
index 692d13af..74a5b052 100644
--- a/src/WMS.Web.Repositories/InStockTaskRepositories.cs
+++ b/src/WMS.Web.Repositories/InStockTaskRepositories.cs
@@ -358,6 +358,7 @@ namespace WMS.Web.Repositories
{
Id = s.order.Id,
DetailsId = s.detail.Id,
+ CustomerCode=s.detail.CustomerCode,
SupplierId = s.detail.SupplierId,
OrgId = s.detail.OrgId,
OrgCode = s.detail.OrgCode,