You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
2.1 KiB
58 lines
2.1 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
using Volo.Abp;
|
|
using Volo.Abp.Domain.Services;
|
|
using Win_in.Sfs.Shared.Framework;
|
|
|
|
namespace Win_in.Sfs.Label.Domain;
|
|
|
|
public class LabelDefinitionManager : DomainService, ILabelDefinitionManager
|
|
{
|
|
private readonly ILabelDefinitionRepository _labelDefinitionRepository;
|
|
private readonly ISerialNumberGenerator _numberGenerator;
|
|
|
|
public LabelDefinitionManager(ILabelDefinitionRepository labelDefinitionRepository, ISerialNumberGenerator numberGenerator)
|
|
{
|
|
_labelDefinitionRepository = labelDefinitionRepository;
|
|
_numberGenerator = numberGenerator;
|
|
}
|
|
|
|
public virtual async Task<LabelDefinition> GetByTypeAsync(string labelType)
|
|
{
|
|
var result = await _labelDefinitionRepository.FindAsync(p => p.Code == labelType).ConfigureAwait(false);
|
|
if (result == null)
|
|
{
|
|
throw new UserFriendlyException($"未找到 {labelType} 单据的配置信息");
|
|
}
|
|
return result;
|
|
}
|
|
|
|
private async Task<SerialNumberParam> GetNumberParamAsync(string labelType)
|
|
{
|
|
var labelDefinition = await GetByTypeAsync(labelType).ConfigureAwait(false);
|
|
var param = new SerialNumberParam(labelDefinition.Prefix, labelDefinition.Format,
|
|
labelDefinition.Separator, labelDefinition.SerialLength);
|
|
return param;
|
|
}
|
|
|
|
public virtual async Task<string> GenerateAsync(string labelType, DateTime time)
|
|
{
|
|
var param = await GetNumberParamAsync(labelType).ConfigureAwait(false);
|
|
var number = await _numberGenerator.CreateAsync(param, time).ConfigureAwait(false);
|
|
return number;
|
|
}
|
|
|
|
public virtual async Task<List<string>> GenerateManyAsync(string labelType, DateTime time, int count)
|
|
{
|
|
var numbers = new List<string>();
|
|
var param = await GetNumberParamAsync(labelType).ConfigureAwait(false);
|
|
for (var i = 0; i < count; i++)
|
|
{
|
|
var number = await _numberGenerator.CreateAsync(param, time).ConfigureAwait(false);
|
|
numbers.Add(number);
|
|
}
|
|
|
|
return numbers;
|
|
}
|
|
}
|
|
|