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;
+ }
+ }
+ }
}
}