74 lines
2.8 KiB
C#
74 lines
2.8 KiB
C#
using YLErp.BLL;
|
|
using YLErp.Modules;
|
|
namespace YLErp.CustomizedBizLogic
|
|
{
|
|
/// <summary>
|
|
/// 国贸启润
|
|
/// </summary>
|
|
public class BizLogicGuoMao : BizLogicDefault
|
|
{
|
|
//交易编号:客户编号-JY-开仓日期+001
|
|
/// <summary>
|
|
/// 生成交易编号
|
|
/// </summary>
|
|
/// <param name="reqModel"></param>
|
|
/// <param name="db"></param>
|
|
/// <returns></returns>
|
|
public override string GenerateTradeNumberBeforeConfirm(TradeNumberReqModel reqModel, YLContext db)
|
|
{
|
|
//判断交易编号Model是否为空
|
|
if (reqModel is null)
|
|
{
|
|
throw new ArgumentNullException(nameof(reqModel));
|
|
}
|
|
//判断交易编号是否为空
|
|
if (!string.IsNullOrWhiteSpace(reqModel.trade.TradeNumber))
|
|
{
|
|
return reqModel.trade.TradeNumber;
|
|
}
|
|
string tradeCode = "-JY-";
|
|
//判断开仓时间是否为空
|
|
if (!reqModel.trade.TradeDate.HasValue)
|
|
{
|
|
throw new Exception("交易日期不存在,无法生成交易编号!");
|
|
}
|
|
//根据客户id查询出来该客户
|
|
var client = DbContextFactory.GetClientDbContext(null).client.Where(x => x.id == reqModel.clientId).FirstOrDefault();
|
|
if (client == null)
|
|
{
|
|
throw new Exception("未找到客户");
|
|
}
|
|
//取出客户编号
|
|
var clientNumber = client.Number;
|
|
//判断客户编号是否为空
|
|
if (clientNumber == null)
|
|
{
|
|
throw new Exception("客户编号不能为空");
|
|
}
|
|
//取出当前开仓时间
|
|
string tradeDate = reqModel.trade.TradeDate?.ToString("yyyyMMdd");
|
|
var tradeNumbers = new List<string>();
|
|
string tradeNumber = clientNumber + tradeCode + tradeDate;
|
|
tradeNumbers = db.trade.Where(x => x.TradeNumber.StartsWith(tradeNumber) && x.ParentTradeId == 0&&x.ClientId== client.id).Select(x => x.TradeNumber).ToList();
|
|
//获取录入
|
|
if (reqModel.importTrades != null)
|
|
{
|
|
tradeNumbers.AddRange(reqModel.importTrades.Where(o => string.IsNullOrEmpty(o.TradeNumber)).Select(o => o.TradeNumber));
|
|
}
|
|
string ergodic = "";
|
|
//记录当前笔数
|
|
int number = tradeNumbers.Count;
|
|
do
|
|
{
|
|
number++;
|
|
ergodic = tradeNumber + number.ToString("000");
|
|
if (!tradeNumbers.Contains(ergodic))
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
while (true);
|
|
return ergodic;
|
|
}
|
|
}
|
|
} |