using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Volo.Abp; using Volo.Abp.Caching; using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Domain; using Win_in.Sfs.Basedata.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared; namespace Win_in.Sfs.Basedata.Application; [Authorize] [Route($"{BasedataConsts.RootPath}erplocation-item")] public class ErpLocationItemAppService : SfsBaseDataAppServiceBase , IErpLocationItemAppService { private readonly IErpLocationItemManager _manager; private new readonly IErpLocationItemRepository _repository; public ErpLocationItemAppService( IErpLocationItemRepository repository , IDistributedCache cache , IErpLocationItemManager manager , IItemBasicAppService itemBasicAppService) : base(repository, cache) { base.CreatePolicyName = ErpLocationItemPermissions.Create; base.UpdatePolicyName = ErpLocationItemPermissions.Update; base.DeletePolicyName = ErpLocationItemPermissions.Delete; _repository = repository; _manager = manager; } /// /// 检查物料和储位对应关系是否存在 /// /// /// /// /// [HttpGet("check-item-erplocation-is-available")] public virtual async Task CheckItemErpLocationIsAvailable(string itemCode,string erpLocationCode) { var entity = await _repository.FindAsync(p => p.ItemCode == itemCode && p.ErpLocationCode== erpLocationCode).ConfigureAwait(false); if (entity == null) { throw new UserFriendlyException($"未找到物料代码为 {itemCode} 和储位代码 {erpLocationCode} 的对应关系"); } return true; } [HttpPost("upsert")] public virtual async Task UpsertAsync(ErpLocationItemEditInput input) { var entity = ObjectMapper.Map(input); await _repository.UpsertAsync(entity).ConfigureAwait(false); } [HttpGet("list/by-item")] public virtual async Task> GetListByItemCodeAsync(string itemCode) { var entities = await _repository.GetListAsync(c => c.ItemCode == itemCode).ConfigureAwait(false); var dtos = ObjectMapper.Map, List>(entities); return dtos; } protected override async Task ValidateImportModelAsync(ErpLocationItemImportInput importInput, List validationRresult) { await base.CheckItemBasicItemCodeAsync(importInput.ItemCode, validationRresult).ConfigureAwait(false); } }