From 1c05cf2786334a6347f198049af67ac740e42b58 Mon Sep 17 00:00:00 2001 From: tongfei <244188119@qq.com> Date: Thu, 11 Apr 2024 11:04:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 14 +++++ .../Services/Public/SendMessageService.cs | 57 ++++++++++++++++++- 2 files changed, 70 insertions(+), 1 deletion(-) diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 54dd860f..f869a0d6 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -6207,6 +6207,20 @@ + + + 合并属性 + + + + + + + 按450个字开始分组 + + + + 上传文件 diff --git a/src/WMS.Web.Domain/Services/Public/SendMessageService.cs b/src/WMS.Web.Domain/Services/Public/SendMessageService.cs index 36bf59da..650bcdbe 100644 --- a/src/WMS.Web.Domain/Services/Public/SendMessageService.cs +++ b/src/WMS.Web.Domain/Services/Public/SendMessageService.cs @@ -265,7 +265,16 @@ namespace WMS.Web.Domain.Services if (!sms_result.IsSuccess && sms_result.Message == "isv.PARAM_LENGTH_LIMIT") { //分段发送:以字数480长度分段 - var contentParts = this.SplitContent(content, 480); + //var contentParts = this.SplitContent(content, 480); + //foreach (var partContent in contentParts) + //{ + // this.SendSms(item.PhoneNumbers, partContent); + //} + + //1.先合并属性:规格和数量 + var materials= this.MergeProperties(item.Details); + //2.按450个字分组成多个字符串集合 + var contentParts = this.MergeStrings(materials); foreach (var partContent in contentParts) { this.SendSms(item.PhoneNumbers, partContent); @@ -313,5 +322,51 @@ namespace WMS.Web.Domain.Services } return parts; } + + /// + /// 合并属性 + /// + /// + /// + public List MergeProperties(List details) + { + List result = new List(); + foreach (var det in details) + { + result.Add($"{det.Specifications} 数量{Convert.ToInt32(det.Qty)}"); + } + return result; + } + + /// + /// 按450个字开始分组 + /// + /// + /// + public List MergeStrings(List strings) + { + List result = new List(); + StringBuilder currentGroup = new StringBuilder(); + + foreach (var str in strings) + { + if (currentGroup.Length + str.Length > 450) + { + // 当前字符串超过50个字符,将当前分组加入结果集并重置currentGroup + result.Add(currentGroup.ToString()); + currentGroup.Clear(); + } + + // 添加当前字符串到当前分组 + currentGroup.Append(str); + } + + // 添加最后一个分组 + if (currentGroup.Length > 0) + { + result.Add(currentGroup.ToString()); + } + return result; + } } }