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

68 lines
2.6 KiB
C#

using YLErp.BLL;
namespace YLErp.CustomizedBizLogic
{
class BizLogicHongYe : BizLogicDefault
{
public override string GenerateTradeNumberBeforeConfirm(TradeNumberReqModel reqModel, YLContext db)
{
if (reqModel is null)
{
throw new ArgumentNullException(nameof(reqModel));
}
if (!string.IsNullOrWhiteSpace(reqModel.trade.TradeNumber)) { return reqModel.trade.TradeNumber; }
if (!reqModel.trade.TradeDate.HasValue) { throw new Exception("交易日期不存在,无法生成交易编号!"); }
var client = GetClient(reqModel.clientId);
if (string.IsNullOrEmpty(client.Code))
{
throw new Exception("客户代码未填写,无法生成交易编号!");
}
lock (_clientCodeLock)
{
string code = "";
string codePrefix = "";
var tradeNumbers = new List<string>();
codePrefix = "HYZBOTC";
codePrefix += reqModel.trade.TradeDate?.ToString("yyyy");
codePrefix += GetClient(reqModel.clientId)?.Code;
codePrefix += "148-";
tradeNumbers = db.trade.Where(x => x.ParentTradeId == 0 && x.TradeNumber.StartsWith(codePrefix)).Select(x => x.TradeNumber).ToList();
int number = tradeNumbers.Count;
do
{
number++;
code = codePrefix + number.ToString("0");
if (!tradeNumbers.Contains(code))
{ break; }
} while (true);
return code;
}
}
public override void GenerateClientCode(Client clientObj, IQueryable<Client> clientDbQuery)
{
if (!string.IsNullOrEmpty(clientObj.Number)) { return; }
lock (_clientCodeLock)
{
DateTime date = DateTime.Now;
int number = 0;
var code = "";
string codePrefix = date.ToString("yyyyMMdd");
var existingClientCodes = clientDbQuery.Where(x => x.Number != null && x.Number != "").Select(x => x.Number).ToList();
number = existingClientCodes.Count();
do
{
number++;
code = codePrefix + number.ToString("00");
if (!existingClientCodes.Contains(code))
{ break; }
} while (true);
clientObj.Number = code;
}
}
}
}