From a8c2c0685ad438649192b3746a2e7dfcd5f34755 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=A4=E6=97=BA?= Date: Wed, 22 May 2024 13:41:57 +0800 Subject: [PATCH] =?UTF-8?q?#TRS-ZS-56=20=E4=BA=A4=E6=98=93=E3=80=81?= =?UTF-8?q?=E4=BA=A4=E6=98=93=E7=A1=AE=E8=AE=A4=E4=B9=A6=E7=BC=96=E5=8F=B7?= =?UTF-8?q?=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Configuration/Enums/CompanyEnum.cs | 3 +- .../CustomizedBizLogic/BizLogicSingleton.cs | 2 + .../CustomizedBizLogic/BizLogicZheShang.cs | 68 +++++++++++++++++++ YLErpWeb/appsettings.local.json | 10 +-- 4 files changed, 77 insertions(+), 6 deletions(-) create mode 100644 YLErpDAL/CustomizedBizLogic/BizLogicZheShang.cs diff --git a/Framework/YLErp.Core/Configuration/Enums/CompanyEnum.cs b/Framework/YLErp.Core/Configuration/Enums/CompanyEnum.cs index 9fb9c920..6c77bc21 100644 --- a/Framework/YLErp.Core/Configuration/Enums/CompanyEnum.cs +++ b/Framework/YLErp.Core/Configuration/Enums/CompanyEnum.cs @@ -47,6 +47,7 @@ 东莞, 物产中大, 红塔众鑫, - 山西固收 + 山西固收, + 浙商, } } diff --git a/YLErpDAL/CustomizedBizLogic/BizLogicSingleton.cs b/YLErpDAL/CustomizedBizLogic/BizLogicSingleton.cs index 146eae80..db07ae5e 100644 --- a/YLErpDAL/CustomizedBizLogic/BizLogicSingleton.cs +++ b/YLErpDAL/CustomizedBizLogic/BizLogicSingleton.cs @@ -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(); diff --git a/YLErpDAL/CustomizedBizLogic/BizLogicZheShang.cs b/YLErpDAL/CustomizedBizLogic/BizLogicZheShang.cs new file mode 100644 index 00000000..ae4d7190 --- /dev/null +++ b/YLErpDAL/CustomizedBizLogic/BizLogicZheShang.cs @@ -0,0 +1,68 @@ +using YLErp.BLL; +using YLErp.DBModels; +using YLErp.Modules; + +namespace YLErp.CustomizedBizLogic +{ + public class BizLogicZheShang : BizLogicDefault + { + /// + /// 在交易确认前生成交易编号 + /// + 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,生成交易编号失败"); + } + } + } +} diff --git a/YLErpWeb/appsettings.local.json b/YLErpWeb/appsettings.local.json index 3a0c0456..19682449 100644 --- a/YLErpWeb/appsettings.local.json +++ b/YLErpWeb/appsettings.local.json @@ -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": "",