using YLErp.BLL; using YLErp.Modules; namespace YLErp.CustomizedBizLogic { /// /// 广期 /// public class BizLogicGuangQi : BizLogicDefault { //交易编号:GQZB+成交日期+客户编号+01顺序 /// /// 生成交易编号 /// /// /// /// 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 = "GQZB"; //判断开仓时间是否为空 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 (string.IsNullOrWhiteSpace(clientNumber)) { throw new Exception("客户编号不能为空"); } //取出当前开仓时间 string tradeDate = reqModel.trade.TradeDate?.ToString("yyyyMMdd"); var tradeNumbers = new List(); string tradeNumber = tradeCode+ tradeDate + clientNumber; tradeNumbers = db.trade.Where(x =>x.ClientId== client.id&&x.TradeNumber.StartsWith(tradeNumber) && x.ParentTradeId == 0).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("-00"); if (!tradeNumbers.Contains(ergodic)) { break; } } while (true); return ergodic; } } }