Files
zszq-trs/YLErpDAL/CustomizedBizLogic/BizLogicZheQi.cs
T
2024-05-09 14:06:26 +08:00

104 lines
3.9 KiB
C#

using YLErp.BLL;
using YLErp.Modules;
namespace YLErp.CustomizedBizLogic
{
public class BizLogicZheQi : BizLogicDefault
{
public override string GenerateTradeNumberBeforeConfirm(TradeNumberReqModel reqModel, YLContext db)
{
var tradeNumbers = new List<string>();
var tradeDate = reqModel.trade.TradeDate ?? reqModel.trade.StartDate;
tradeNumbers = db.trade.Where(x => (x.ParentTradeId == 0 || x.IsGroup == 2) && x.ValidState != "InValid").Select(x => x.TradeNumber).ToList();
//获取导入
if (reqModel.importTrades != null)
{
tradeNumbers.AddRange(reqModel.importTrades.Where(O => O.TradeDate == tradeDate).Select(O => O.TradeNumber));
}
var tradeTag = "";
var client = DataCacheProvider.GetClientDataSource().GetData(reqModel.clientId);
if (client == null)
{
throw new ServiceException("客户不存在");
}
var tradeTypeEn = "";
if (reqModel.trade.TradeType == "远期")
{
tradeTypeEn = reqModel.trade.StructureType == "掉期" ? "SW" : "FW";
}
else if (reqModel.trade.TradeType == "收益互换")
{
tradeTypeEn = "SW";
}
else
{
tradeTypeEn = "OP";
}
tradeTag = $"{tradeTypeEn}{reqModel.trade.TradeDate?.ToString("yyMMdd")}";
var count = tradeNumbers.Count(O => O != null ? O.Contains(tradeTag) : false);
var tradeNumber = "";
do
{
count++;
tradeNumber = $"{client.Number}{tradeTag}{count.ToString("000")}X";
} while (tradeNumbers.Contains(tradeNumber));
return tradeNumber;
}
public override string GenerateSubTradeNumberBeforeConfirm(trade curLeg, trade masterTrade, int legIndex, YLContext db)
{
string tradeNumber = masterTrade.TradeNumber + legIndex.ToString();
//var client = DataCacheProvider.GetClientDataSource().GetData(masterTrade.ClientId);
//tradeNumber = tradeNumber.Replace(client.Number, "");
return tradeNumber;
}
public override void GenerateClientCode(Client clientObj, IQueryable<Client> clientDbQuery)
{
var clientPrefix = "ZQ";
if (string.IsNullOrWhiteSpace(clientObj.BusinessType))
{
throw new ServiceException("缺少 行业类型");
}
if (clientObj.BusinessType.Contains("券商"))
{
clientPrefix += "A";
}
else if (clientObj.BusinessType.Contains("保险"))
{
clientPrefix += "B";
}
else if (clientObj.BusinessType.Contains("期子") || clientObj.BusinessType.Contains("风险管理子公司"))
{
clientPrefix += "C";
}
else if (clientObj.BusinessType.Contains("基金管理人"))
{
clientPrefix += "D";
}
else if (clientObj.BusinessType.Contains("产品") || clientObj.ClientType == "产品")
{
clientPrefix += "F";
}
else if (clientObj.BusinessType.Contains("银行"))
{
clientPrefix += "G";
}
else
{
clientPrefix += "Z";
}
var clientNumberList = clientDbQuery.Where(O => O.Number.StartsWith(clientPrefix)).Select(O => O.Number).ToArray();
var clientNumber = "";
var count = clientNumberList.Length;
do
{
count++;
clientNumber = $"{clientPrefix}{count.ToString("0000")}";
} while (clientNumberList.Contains(clientNumber));
clientObj.Number = clientNumber;
}
}
}