/// <summary> /// Генерация входящего номера /// </summary> /// <param name="document">Материал</param> public void GenerateDocumentIncomingNumber(Document document) { if (!string.IsNullOrEmpty(document.IncomingNumber)) { return; } var documentType = _niisContext.DicDocumentTypes.FirstOrDefault(d => d.Id == document.TypeId); if (DicDocumentTypeCodes.IgnoreGenerateIncomingNumber().Contains(documentType?.Code)) { return; } if (document.DocumentType != DocumentType.Incoming) { throw new Exception("Can not generate incoming number for not incoming document!"); } var commonDivision = GetDicDivisionByCode(DicDivisionCodes.RGP_NIIS); var division = GetDicDivisionById(document.DivisionId ?? 0); if (division == null) { division = commonDivision; } var count = GetNextCount(NumberGenerator.DocumentIncomingNumberCodePrefix + division.Code); document.IncomingNumber = $"{DateTime.Now.Year}-{count:D5}"; }
public async Task ExecuteAsync(Document document) { if (!string.IsNullOrEmpty(document.IncomingNumber)) { return; } var documentType = await Executor.GetQuery <GetDicDocumentTypeByIdQuery>().Process(q => q.ExecuteAsync(document.TypeId)); if (DicDocumentTypeCodes.IgnoreGenerateIncomingNumber().Contains(documentType?.Code)) { return; } if (document.DocumentType != DocumentType.Incoming) { throw new Exception("Can not generate incoming number for not incoming document!"); } var division = Executor.GetQuery <GetDicDivisionByIdQuery>() .Process(q => q.Execute(document.DivisionId ?? 0)); if (division == null) { throw new DataNotFoundException(nameof(DicDepartment), DataNotFoundException.OperationType.Read, document.Id); } int count; if (division.Code.Equals(DicDivisionCodes.RGP_NIIS)) { count = Executor.GetHandler <GetNextCountHandler>().Process(h => h.Execute(NumberGenerator.DocumentIncomingNumberCodePrefix + division.Code)); document.IncomingNumber = $"{DateTime.Now.Year}-{count:D5}"; } else { if (document.IncomingNumberFilial != null) { return; } count = Executor.GetHandler <GetNextCountHandler>().Process(h => h.Execute(NumberGenerator.DocumentIncomingNumberFilialCodePrefix + division.Code)); document.IncomingNumberFilial = $"{count:D5}-{division.IncomingNumberCode}"; } }