68 lines
2.6 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|