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