优化发送短信的来源数据
This commit is contained in:
@@ -155,7 +155,7 @@ namespace WMS.Web.Domain.Services
|
||||
/// 获取数据
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<Result<List<SendDataDto>>> GetSendContent()
|
||||
public async Task<(List<SendDataDto> sendDataList, List<InStockDetails> updateDetails)> GetSendContent()
|
||||
{
|
||||
//1.获取物料集合和组织集合和供应商的集合
|
||||
var materials = new List<ErpMaterialDto>();
|
||||
@@ -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<SendDataDto>();
|
||||
@@ -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<List<SendDataDto>>.ReSuccess(sendDataList);
|
||||
return (sendDataList, notSendDetails);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -223,63 +237,62 @@ namespace WMS.Web.Domain.Services
|
||||
{
|
||||
try
|
||||
{
|
||||
var update_taskDetailsIds = new List<int>();
|
||||
var update_DetailsIds = new List<int>();
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user