using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using Volo.Abp.Application.Services; using Volo.Abp.Validation; using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Wms.DataExchange.Application.Contracts.Iac.Qad; using Win_in.Sfs.Wms.DataExchange.Domain.Iac.Qad; namespace Win_in.Sfs.Wms.DataExchange.Application.Iac.Qad; /// /// QAD物料(Part) /// //[Authorize(IncomingToWmsPermissions.Default)] [Authorize] [Microsoft.AspNetCore.Components.Route($"{DataExchangeConsts.RouteRoot}part")] [ApiExplorerSettings(GroupName = SwaggerGroupConsts.WmsWebApi)] public class PartAppService : ApplicationService, IPartAppService { private readonly IItemBasicAppService _itemBasicAppService; private readonly IPartRepository _partRepository; private readonly IConfiguration _configuration; public PartAppService( IItemBasicAppService itemBasicAppService, IPartRepository partRepository, IConfiguration configuration ) { _itemBasicAppService = itemBasicAppService; _partRepository = partRepository; _configuration = configuration; } /// /// 物料(Part) /// /// QAD物料(Part) /// [HttpPost("")] [Volo.Abp.Uow.UnitOfWork(isTransactional: false)] public virtual async Task> AddAsync(PartInput input) { var entity = ObjectMapper.Map(input); try { //调用业务接口前,先做业务数据校验 //数据格式校验使用ABP提供的校验模块(Application.Contract.PartInputValidator),不需要在这里实现 Validator.CheckCompany(_configuration, entity.Company); Validator.CheckSite(_configuration, entity.Site); //将接口实体转换为业务输入实体 var createInput = ObjectMapper.Map(entity); switch (entity.Status) { case "INACTIVE": createInput.Status = Shared.Domain.Shared.EnumItemStatus.Disable; break; default: createInput.Status = Shared.Domain.Shared.EnumItemStatus.Active; break; } if (string.IsNullOrEmpty(createInput.AbcClass)) { createInput.AbcClass = "Z";//客户要求逻辑 } //调用业务接口,新增或更新业务数据 await _itemBasicAppService.UpsertAsync(createInput).ConfigureAwait(false); } catch (Exception ex) { var baseEx = ex.GetBaseException(); entity.ErrorCode = 1; entity.ErrorMessage = baseEx.Message; } var ret = await _partRepository.InsertAsync(entity, true).ConfigureAwait(false); var dto = ObjectMapper.Map(ret); dto.CreationTime = Clock.Now; if (dto.ErrorCode != 0) { throw new AbpValidationException(new List { new(dto.ErrorMessage) }); } else { return new OkObjectResult(dto); } } }