#TRS-ZS-56 交易、交易确认书编号规则
This commit is contained in:
@@ -47,6 +47,7 @@
|
||||
东莞,
|
||||
物产中大,
|
||||
红塔众鑫,
|
||||
山西固收
|
||||
山西固收,
|
||||
浙商,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,6 +93,8 @@ namespace YLErp.CustomizedBizLogic
|
||||
return new BizLogicWCZD();
|
||||
case CompanyEnum.山西固收:
|
||||
return new BizLogicShanXiGuShou();
|
||||
case CompanyEnum.浙商:
|
||||
return new BizLogicZheShang();
|
||||
case CompanyEnum.中基石化: //暂时:确认书模式 是国君的
|
||||
default:
|
||||
return new BizLogicGTJA();
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
using YLErp.BLL;
|
||||
using YLErp.DBModels;
|
||||
using YLErp.Modules;
|
||||
|
||||
namespace YLErp.CustomizedBizLogic
|
||||
{
|
||||
public class BizLogicZheShang : BizLogicDefault
|
||||
{
|
||||
/// <summary>
|
||||
/// 在交易确认前生成交易编号
|
||||
/// </summary>
|
||||
public override string GenerateTradeNumberBeforeConfirm(TradeNumberReqModel reqModel, YLContext db)
|
||||
{
|
||||
if (reqModel is null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(reqModel));
|
||||
}
|
||||
|
||||
//对于对冲交易、场内交易等没有设置客户的
|
||||
if (reqModel.clientId == 0)
|
||||
{
|
||||
return DateTime.Now.ToString("yyyyMMddHHmmssfff");
|
||||
}
|
||||
|
||||
var clientNumber = DataCacheProvider.GetClientDataSource().GetData(reqModel.clientId)?.Number.TrimToNull();
|
||||
//合并起来作为获取递增序号的取值条件
|
||||
var leftPart = string.Empty;
|
||||
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)
|
||||
.OrderByDescending(x => x.TradeNumber).Select(n => n.TradeNumber).FirstOrDefault() ?? string.Empty;
|
||||
|
||||
if (reqModel.importTrades != null && reqModel.importTrades.Any())
|
||||
{
|
||||
//获取导入交易中该客户最大的交易编号记录
|
||||
var importTradeNumber = reqModel.importTrades.Where(x => x.TradeNumber.StartsWith(leftPart) && x.TradeNumber.Length == fullSize)
|
||||
.OrderByDescending(x => x.TradeNumber).Select(n => n.TradeNumber).FirstOrDefault() ?? string.Empty;
|
||||
tradeNumber = tradeNumber.CompareTo(importTradeNumber) > 0 ? tradeNumber : importTradeNumber;
|
||||
}
|
||||
|
||||
//获取总的该用户最大的交易编号记录
|
||||
int newNumber = string.IsNullOrWhiteSpace(tradeNumber) ? 1 : (int.Parse(tradeNumber.Substring(leftPart.Length)) + 1);
|
||||
|
||||
return getTradeNumber(newNumber, leftPart, db);
|
||||
}
|
||||
|
||||
private string getTradeNumber(int newNumber, string leftPart, YLContext db)
|
||||
{
|
||||
if (newNumber < 1e4)
|
||||
{
|
||||
var childTradeNumberPart = leftPart + newNumber.ToString("D4") + "-";
|
||||
if (db.trade.Any(x => EF.Functions.Like(x.TradeNumber, $"{childTradeNumberPart}%") && x.ValidState != "InValid"))
|
||||
{
|
||||
return getTradeNumber(newNumber + 1, leftPart, db);
|
||||
}
|
||||
else
|
||||
{
|
||||
return leftPart + newNumber.ToString("D4");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception("该客户存在最大交易编号" + (newNumber - 1) + ",超出了限制规则9999,生成交易编号失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,11 +7,11 @@
|
||||
},
|
||||
"AllowedHosts": "*",
|
||||
"ConnectionStrings": {
|
||||
"ylcms": "server=221.229.106.161;uid=roottest;pooling=true;port=20306;pwd=YieldChain!@#$2020;database=yltrs_ylcms;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;",
|
||||
"yladmin": "server=221.229.106.161;uid=roottest;pooling=true;port=20306;pwd=YieldChain!@#$2020;database=yltrs_admin;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;",
|
||||
"ylclient": "server=221.229.106.161;uid=roottest;pooling=true;port=20306;pwd=YieldChain!@#$2020;database=yltrs_client;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;",
|
||||
"bondoms": "server=221.229.106.161;uid=roottest;pooling=true;port=20306;pwd=YieldChain!@#$2020;database=bond_oms;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;",
|
||||
"apex_oracle": "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=122.112.205.57)(PORT=11521)))(CONNECT_DATA=(SERVICE_NAME=xe)));User ID=system;Password=oracle;"
|
||||
"ylcms": "server=139.196.109.225;uid=root/YieldChain%8341;pooling=true;port=20306;pwd=Midnight001!@#$;database=yltrs_ylcms;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;",
|
||||
"yladmin": "server=139.196.109.225;uid=root/YieldChain%8341;pooling=true;port=20306;pwd=Midnight001!@#$;database=yltrs_admin;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;",
|
||||
"ylclient": "server=139.196.109.225;uid=root/YieldChain%8341;pooling=true;port=20306;pwd=Midnight001!@#$;database=yltrs_client;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;",
|
||||
"bondoms": "server=139.196.109.225;uid=root/YieldChain%8341;pooling=true;port=20306;pwd=Midnight001!@#$;database=bond_oms;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;",
|
||||
// "apex_oracle": "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=122.112.205.57)(PORT=11521)))(CONNECT_DATA=(SERVICE_NAME=xe)));User ID=system;Password=oracle;"
|
||||
},
|
||||
"AppSettings": {
|
||||
"VirtualPathRoot": "",
|
||||
|
||||
Reference in New Issue
Block a user