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

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;
}
}
}