104 lines
3.9 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|