From 931a4f56d71b625b2781d8574e8369128330fcb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AC=B4=E6=94=BF=20=E6=97=B6?= Date: Tue, 15 Apr 2025 18:42:19 +0800 Subject: [PATCH] =?UTF-8?q?#TRS-ZS-229=20=E5=AE=A2=E6=88=B7=E7=BC=96?= =?UTF-8?q?=E5=8F=B7=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Framework/YLErp.Core/Helpers/PingYinHelper.cs | 20 +++++++++++++ .../CustomizedBizLogic/BizLogicZheShang.cs | 28 +++++++++++++++++-- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/Framework/YLErp.Core/Helpers/PingYinHelper.cs b/Framework/YLErp.Core/Helpers/PingYinHelper.cs index 64f41890..3daee0dc 100644 --- a/Framework/YLErp.Core/Helpers/PingYinHelper.cs +++ b/Framework/YLErp.Core/Helpers/PingYinHelper.cs @@ -56,5 +56,25 @@ namespace YieldChain.Helpers //注意:英文字母不会转大写 return PinyinHelper.GetPinyinInitials(strChinese); } + + /// + /// 汉字转拼音首字母 + /// 处理了"银行","分行","支行","总行" + /// + public static string GetFirstPinYin_Enhance(string strChinese) + { + if (string.IsNullOrWhiteSpace(strChinese)) + { + return string.Empty; + } + string pinyin = PinyinHelper.GetPinyin(strChinese, "|"); + pinyin = pinyin + .Replace("YIN|XING", "YIN|HANG") + .Replace("FEN|XING", "FEN|HANG") + .Replace("ZHI|XING", "ZHI|HANG") + .Replace("ZHONG|XING", "ZHONG|HANG"); + return string.Join("", (from x in pinyin.Split('|') + select x.Substring(0, 1)).ToArray()); + } } } diff --git a/YLErpDAL/CustomizedBizLogic/BizLogicZheShang.cs b/YLErpDAL/CustomizedBizLogic/BizLogicZheShang.cs index ae4d7190..a591f06a 100644 --- a/YLErpDAL/CustomizedBizLogic/BizLogicZheShang.cs +++ b/YLErpDAL/CustomizedBizLogic/BizLogicZheShang.cs @@ -1,4 +1,6 @@ -using YLErp.BLL; +using TinyPinyin; +using YieldChain.Helpers; +using YLErp.BLL; using YLErp.DBModels; using YLErp.Modules; @@ -28,7 +30,7 @@ namespace YLErp.CustomizedBizLogic var fullSize = 0; leftPart = $"ZSZQ-IS-{reqModel.trade.TradeDate:yyyyMMdd}"; fullSize = leftPart.Length + 4; //获取数据库该用户最大的交易编号记录 - var tradeNumber = db.trade.Where(x => x.TradeNumber.StartsWith(leftPart) && x.TradeNumber.Length == fullSize&&x.ValidState!=ConsGlobal.InValid) + var tradeNumber = db.trade.Where(x => x.TradeNumber.StartsWith(leftPart) && x.TradeNumber.Length == fullSize && x.ValidState != ConsGlobal.InValid) .OrderByDescending(x => x.TradeNumber).Select(n => n.TradeNumber).FirstOrDefault() ?? string.Empty; if (reqModel.importTrades != null && reqModel.importTrades.Any()) @@ -64,5 +66,27 @@ namespace YLErp.CustomizedBizLogic throw new Exception("该客户存在最大交易编号" + (newNumber - 1) + ",超出了限制规则9999,生成交易编号失败"); } } + + public override void GenerateClientCode(Client clientObj, IQueryable clientDbQuery) + { + if (string.IsNullOrWhiteSpace(clientObj.Number)) + { + var firstPY = PingYinHelper.GetFirstPinYin_Enhance(clientObj.Name); + var year = DateTime.Now.ToString("yy"); + var result = ""; + lock (_clientCodeLock) + { + var existingClientCodes = clientDbQuery.Where(x => x.Number.StartsWith(year)).Select(x => x.Number).ToList(); + var number = existingClientCodes.Count(); + do + { + number++; + result = year + number.ToString("000"); + } while (existingClientCodes.Any(O => O.StartsWith(result))); + + clientObj.Number = result + firstPY; + } + } + } } }