#TRS-ZS-229 客户编号规则
This commit is contained in:
@@ -56,5 +56,25 @@ namespace YieldChain.Helpers
|
||||
//注意:英文字母不会转大写
|
||||
return PinyinHelper.GetPinyinInitials(strChinese);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 汉字转拼音首字母
|
||||
/// <para>处理了"银行","分行","支行","总行"</para>
|
||||
/// </summary>
|
||||
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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<Client> 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user