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.
85 lines
3.0 KiB
85 lines
3.0 KiB
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<ErpLocationItem, ErpLocationItemDTO, SfsBaseDataRequestInputBase, ErpLocationItemEditInput, ErpLocationItemImportInput>
|
|
, IErpLocationItemAppService
|
|
{
|
|
private readonly IErpLocationItemManager _manager;
|
|
private new readonly IErpLocationItemRepository _repository;
|
|
|
|
public ErpLocationItemAppService(
|
|
IErpLocationItemRepository repository
|
|
, IDistributedCache<ErpLocationItemDTO> cache
|
|
, IErpLocationItemManager manager
|
|
, IItemBasicAppService itemBasicAppService) : base(repository, cache)
|
|
{
|
|
base.CreatePolicyName = ErpLocationItemPermissions.Create;
|
|
base.UpdatePolicyName = ErpLocationItemPermissions.Update;
|
|
base.DeletePolicyName = ErpLocationItemPermissions.Delete;
|
|
_repository = repository;
|
|
_manager = manager;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 检查物料和储位对应关系是否存在
|
|
/// </summary>
|
|
/// <param name="itemCode"></param>
|
|
/// <param name="erpLocationCode"></param>
|
|
/// <returns></returns>
|
|
/// <exception cref="UserFriendlyException"></exception>
|
|
[HttpGet("check-item-erplocation-is-available")]
|
|
public virtual async Task<bool> 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<ErpLocationItemEditInput, ErpLocationItem>(input);
|
|
await _repository.UpsertAsync(entity).ConfigureAwait(false);
|
|
}
|
|
|
|
[HttpGet("list/by-item")]
|
|
public virtual async Task<List<ErpLocationItemDTO>> GetListByItemCodeAsync(string itemCode)
|
|
{
|
|
var entities = await _repository.GetListAsync(c => c.ItemCode == itemCode).ConfigureAwait(false);
|
|
var dtos = ObjectMapper.Map<List<ErpLocationItem>, List<ErpLocationItemDTO>>(entities);
|
|
return dtos;
|
|
}
|
|
|
|
|
|
|
|
protected override async Task ValidateImportModelAsync(ErpLocationItemImportInput importInput, List<ValidationResult> validationRresult)
|
|
{
|
|
await base.CheckItemBasicItemCodeAsync(importInput.ItemCode, validationRresult).ConfigureAwait(false);
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|