118 lines
3.8 KiB
C#
118 lines
3.8 KiB
C#
using YLErp.BLL;
|
|
using YLErp.Modules;
|
|
|
|
namespace YLErp.CustomizedBizLogic
|
|
{
|
|
public class BizLogicZJ : BizLogicDefault
|
|
{
|
|
public override string GenerateTradeNumberBeforeConfirm(TradeNumberReqModel reqModel, YLContext db)
|
|
{
|
|
if (reqModel is null)
|
|
{
|
|
throw new ArgumentNullException(nameof(reqModel));
|
|
}
|
|
|
|
if (reqModel.trade.TradeDate == null)
|
|
{
|
|
throw new Exception("生成合同编号失败,请先确认该交易成交日期!");
|
|
}
|
|
|
|
var client = DataCacheProvider.GetClientDataSource().GetData(reqModel.clientId);
|
|
if (client == null)
|
|
{
|
|
throw new Exception("未找到客户!");
|
|
}
|
|
var code = "";
|
|
|
|
var trade = reqModel.trade;
|
|
var prefix = "";
|
|
var um = DataCacheProvider.GetUnderlyingDataSource().GetData(trade.UnderlyingCode);
|
|
var IsBuy = false;
|
|
|
|
if (trade.TradeType == "收益互换")
|
|
{
|
|
var swapTrade = trade.trade_swap;
|
|
if (swapTrade == null)
|
|
{
|
|
swapTrade = db.trade_swap.AsNoTracking().FirstOrDefault(n => n.TradeId == trade.id);
|
|
}
|
|
if (swapTrade != null && swapTrade.PayLongShort == "多头")
|
|
{
|
|
IsBuy = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (trade.BuySell == "买入")
|
|
{
|
|
IsBuy = true;
|
|
}
|
|
}
|
|
prefix += trade.TradeDate?.ToString("yyyyMMdd") + "_" + client.Number + "_" + um.UnderlyingCode + "_";
|
|
|
|
if (IsBuy)
|
|
{
|
|
prefix += "B_";
|
|
}
|
|
else
|
|
{
|
|
prefix += "S_";
|
|
}
|
|
|
|
var tradeNumbers =
|
|
db.trade
|
|
.Where(O =>
|
|
O.TradeNumber.StartsWith(prefix)
|
|
&& O.ValidState != "InValid").Select(O => O.TradeNumber).OrderByDescending(O => O);
|
|
var tradeNumber = tradeNumbers.FirstOrDefault();
|
|
var tradeCount = 0;
|
|
if (string.IsNullOrWhiteSpace(tradeNumber) || !int.TryParse(tradeNumber.Substring(prefix.Length), out tradeCount))
|
|
{
|
|
tradeCount = 0;
|
|
}
|
|
do
|
|
{
|
|
code = $"{prefix}{tradeCount}";
|
|
tradeCount++;
|
|
} while (tradeNumbers.Contains(code));
|
|
return code;
|
|
}
|
|
|
|
public string GenerateFlowNumber(trade_swap_flow reqModel, YLContext db)
|
|
{
|
|
if (reqModel is null)
|
|
{
|
|
throw new ArgumentNullException(nameof(reqModel));
|
|
}
|
|
|
|
if (reqModel.TradeDate == null)
|
|
{
|
|
throw new Exception("生成合同编号失败,请先确认该流水成交日期!");
|
|
}
|
|
|
|
var code = "";
|
|
|
|
var prefix = "";
|
|
var um = DataCacheProvider.GetUnderlyingDataSource().GetData(reqModel.UnderlyingCode);
|
|
prefix += reqModel.TradeDate?.ToString("yyyyMMdd") + "_" + reqModel.ClientNumber + "_" + um.UnderlyingCode + "_" + reqModel.BuySell + "_";
|
|
|
|
|
|
var numbers =
|
|
db.trade_swap_flow
|
|
.Where(O => O.Number.StartsWith(prefix)).Select(O => O.Number).OrderByDescending(O => O);
|
|
var flowNumber = numbers.FirstOrDefault();
|
|
var flowCount = 0;
|
|
if (string.IsNullOrWhiteSpace(flowNumber) || !int.TryParse(flowNumber.Substring(prefix.Length), out flowCount))
|
|
{
|
|
flowCount = 0;
|
|
}
|
|
do
|
|
{
|
|
code = $"{prefix}{flowCount}";
|
|
flowCount++;
|
|
} while (numbers.Contains(code));
|
|
return code;
|
|
}
|
|
}
|
|
}
|