Browse Source

修改

FIS发货
回收料调整
客户退拆
完工收货报废
盘点
集成Redis
郑勃旭 2 years ago
parent
commit
2f9ef4073f
  1. 18
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/Balances/BalanceManager.cs
  2. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/CountJobs/CountJobAppService.cs
  3. 10
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/ItemTransformNotes/ItemTransformNoteAutoMapperProfile.cs
  4. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Plans/CountPlans/CountPlanAppService.cs
  5. 9
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Plans/CountPlans/CountPlanAutoMapperProfile.cs
  6. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestAppService.cs
  7. 94
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestFisAppService.cs
  8. 17
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ItemTransformRequests/ItemTransformRequestAppService.cs
  9. 250
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ProductRecycleRequests/ProductRecycleRequestAppService.cs
  10. 46
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ProductionReturnRequests/ProductionReturnRequestAppService.cs
  11. 13
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/ItemTransformRequestEventHandler.cs
  12. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/ProductRecycleRequestEventHandler.cs
  13. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/ItemTransformNoteEventHandler.cs

18
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/Balances/BalanceManager.cs

@ -244,15 +244,15 @@ public class BalanceManager : DomainService, IBalanceManager
balance.Status
).ConfigureAwait(false);
if (!existBalance.IsActive)
{
throw new UserFriendlyException(
$"箱码为{balance.PackingCode}," +
$"库位在{balance.LocationCode}," +
$"批次为{balance.Lot}," +
$"状态为{balance.Status.GetDisplayName()}" +
$"的库存是不可用状态");
}
//if (!existBalance.IsActive)
//{
// throw new UserFriendlyException(
// $"箱码为{balance.PackingCode}," +
// $"库位在{balance.LocationCode}," +
// $"批次为{balance.Lot}," +
// $"状态为{balance.Status.GetDisplayName()}" +
// $"的库存是不可用状态");
//}
existBalance.Qty = balance.Qty;
existBalance.ItemName = balance.ItemName;

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/CountJobs/CountJobAppService.cs

@ -71,6 +71,7 @@ public class CountJobAppService
throw new AbpValidationException(result.Errors);
}
var entity = ObjectMapper.Map<CountJobDTO, CountJob>(dto);
entity.Number = checkEntity.Number;
await _countJobManager.CompleteAsync(entity, CurrentUser).ConfigureAwait(false);
return dto;
}

10
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/ItemTransformNotes/ItemTransformNoteAutoMapperProfile.cs

@ -22,5 +22,15 @@ public partial class StoreApplicationAutoMapperProfile : Profile
.Ignore(x => x.TenantId)
.Ignore(x => x.Number)
.Ignore(x => x.Id);
CreateMap<ItemTransformNoteEditInput, ItemTransformNote>()
.IgnoreAuditedObjectProperties()
.Ignore(x => x.ConcurrencyStamp)
.Ignore(x => x.TenantId)
.Ignore(x => x.Number)
.Ignore(x => x.Id)
.Ignore(x=>x.ExtraProperties)
.Ignore(x => x.Remark)
;
}
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Plans/CountPlans/CountPlanAppService.cs

@ -106,7 +106,7 @@ public class CountPlanAppService :
public virtual async Task UpdateByJobAsync(CountPlanEditInput input)
{
var entity = ObjectMapper.Map<CountPlanEditInput, CountPlan>(input);
entity.Number = input.Number;
await _countPlanManager.CompleteByJobAsync(entity).ConfigureAwait(false);
}

9
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Plans/CountPlans/CountPlanAutoMapperProfile.cs

@ -39,5 +39,14 @@ public partial class StoreApplicationAutoMapperProfile : Profile
.Ignore(x => x.TenantId)
.Ignore(x => x.Number)
.Ignore(x => x.Id);
CreateMap<CountPlanEditInput, CountPlan>()
.IgnoreAuditedObjectProperties()
.Ignore(x => x.TenantId)
.Ignore(x => x.Number)
.Ignore(x => x.Id)
.Ignore(x => x.ExtraProperties)
.Ignore(x => x.Remark)
;
}
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestAppService.cs

@ -7,6 +7,7 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Win_in.Sfs.Basedata.Application.Contracts;
@ -29,7 +30,6 @@ public class DeliverRequestAppService :
{
private readonly IDeliverRequestManager _deliverRequestManager;
private readonly IAreaAppService _areaApp;
private readonly ICustomerAppService _customerApp;
private readonly ICustomerAddressAppService _customerAddressApp;

94
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestFisAppService.cs

@ -7,6 +7,7 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
@ -32,22 +33,97 @@ public class DeliverRequestFisAppService :
private readonly IAreaAppService _areaApp;
private readonly ICustomerAppService _customerApp;
private readonly ICustomerAddressAppService _customerAddressApp;
private readonly ITransactionTypeAppService _transactionTypeAppService;
private readonly IBalanceAppService _balanceAppService;
private readonly IItemBasicAppService _itemBasicAppService;
public DeliverRequestFisAppService(
IDeliverRequestRepository repository,
IDeliverRequestManager deliverRequestManager,
IAreaAppService areaApp,
ICustomerAppService customerApp,
ICustomerAddressAppService customerAddressApp
)
ICustomerAddressAppService customerAddressApp,
ITransactionTypeAppService transactionTypeAppService,
IBalanceAppService balanceAppService,
IItemBasicAppService itemBasicAppService)
: base(repository, deliverRequestManager)
{
_deliverRequestManager = deliverRequestManager;
_areaApp = areaApp;
_customerApp = customerApp;
_customerAddressApp = customerAddressApp;
_transactionTypeAppService = transactionTypeAppService;
_balanceAppService = balanceAppService;
_itemBasicAppService = itemBasicAppService;
}
#region 东阳
private async Task SetRequestAutoPropertiesAsync(DeliverRequest entity)
{
var tranType = await TransactionTypeAclService.GetByTransTypeAsync(EnumTransType.Deliver, EnumTransSubType.Deliver_FIS).ConfigureAwait(false);
Check.NotNull(tranType, "事务类型", "事务类型不存在");
entity.AutoCompleteJob = tranType.AutoCompleteJob;
entity.AutoSubmit = tranType.AutoSubmitRequest;
entity.AutoAgree = tranType.AutoAgreeRequest;
entity.AutoHandle = tranType.AutoHandleRequest;
entity.DirectCreateNote = tranType.DirectCreateNote;
entity.DeliverRequestType = EnumDeliverRequestType.FIS;
}
protected override async Task<Dictionary<DeliverRequest, EntityState>> ImportProcessingEntityAsync(Dictionary<DeliverRequest, EntityState> dictionary)
{
var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key);
foreach (var itemTransformRequest in addList)
{
itemTransformRequest.Worker = CurrentUser.GetUserName();
itemTransformRequest.CreatorId = CurrentUser.Id;
itemTransformRequest.DeliverRequestType = EnumDeliverRequestType.FIS;
await SetRequestAutoPropertiesAsync(itemTransformRequest).ConfigureAwait(false);
foreach (var detail in itemTransformRequest.Details)
{
var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
var transactionType = await _transactionTypeAppService.GetByTransTypeAsync(EnumTransType.Deliver,
EnumTransSubType.Deliver_FIS)
.ConfigureAwait(false);
var balances = await _balanceAppService.GetRecommendBalancesAsync(
new RecommendBalanceRequestInput()
{
ItemCode = itemBasicDto.Code,
Qty = detail.Qty,
LocationTypes = transactionType.OutLocationTypes,
LocationAreas = new List<string>() { detail.AreaCode },
Statuses = transactionType.OutInventoryStatuses
}).ConfigureAwait(false);
var balanceSumQty = balances.Sum(t => t.Qty);
if (balanceSumQty < detail.Qty)
{
throw new UserFriendlyException($"物料号 {detail.ItemCode} " +
$"在库位类型 {transactionType.OutLocationTypes.JoinAsString(",")}," +
$"库区 {detail.AreaCode} " +
$"状态 {transactionType.OutInventoryStatuses.JoinAsString(",")}" +
$"库存余额 {balanceSumQty} 小于 {detail.Qty}。");
}
detail.ItemDesc1 = itemBasicDto.Desc1;
detail.ItemDesc2 = itemBasicDto.Desc2;
detail.ItemName = itemBasicDto.Name;
detail.Uom = itemBasicDto.BasicUom;
}
}
return dictionary;
}
#endregion
[HttpPost("list")]
public override Task<PagedResultDto<DeliverRequestDTO>> GetPagedListByFilterAsync(
SfsStoreRequestInputBase sfsRequestInput,
@ -55,7 +131,7 @@ public class DeliverRequestFisAppService :
CancellationToken cancellationToken = default)
{
sfsRequestInput.Condition.Filters.Add(
new Filter(nameof(DeliverRequest.DeliverRequestType), "2"));
new Filter(nameof(DeliverRequest.DeliverRequestType), "FIS"));
return base.GetPagedListByFilterAsync(sfsRequestInput, includeDetails, cancellationToken);
}
@ -285,19 +361,7 @@ public class DeliverRequestFisAppService :
await SetRequestAutoPropertiesAsync(entity).ConfigureAwait(false);
}
private async Task SetRequestAutoPropertiesAsync(DeliverRequest entity)
{
var tranType = await TransactionTypeAclService.GetByTransTypeAsync(EnumTransType.Deliver, EnumTransSubType.Deliver_FIS).ConfigureAwait(false);
Check.NotNull(tranType, "事务类型", "事务类型不存在");
entity.AutoCompleteJob = tranType.AutoCompleteJob;
entity.AutoSubmit = tranType.AutoSubmitRequest;
entity.AutoAgree = tranType.AutoAgreeRequest;
entity.AutoHandle = tranType.AutoHandleRequest;
entity.DirectCreateNote = tranType.DirectCreateNote;
entity.DeliverRequestType = EnumDeliverRequestType.FIS;
}
#endregion
}

17
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ItemTransformRequests/ItemTransformRequestAppService.cs

@ -12,6 +12,7 @@ using Win_in.Sfs.Label.Application.Contracts;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared;
@ -31,14 +32,17 @@ public class ItemTransformRequestAppService :
private readonly IItemTransformRequestManager _manager;
private readonly IInventoryLabelAppService _inventoryLabelAppService;
private readonly IBalanceAppService _balanceAppService;
public ItemTransformRequestAppService(
IItemTransformRequestRepository repository,
IItemTransformRequestManager manager,
IInventoryLabelAppService inventoryLabelAppService) : base(repository, manager)
IInventoryLabelAppService inventoryLabelAppService,
IBalanceAppService balanceAppService) : base(repository, manager)
{
_manager = manager;
_inventoryLabelAppService = inventoryLabelAppService;
_balanceAppService = balanceAppService;
}
/// <summary>
@ -72,16 +76,27 @@ public class ItemTransformRequestAppService :
var fromLocationDto= await LocationAclService.GetByCodeAsync(detail.FromLocationCode).ConfigureAwait(false);
var toLocationDto= await LocationAclService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false);
var itemBasicDto=await ItemBasicAclService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
var balanceDto= await _balanceAppService.GetByItemLocationAndPackingAsync(detail.FromPackingCode, detail.ItemCode,
detail.FromLocationCode).ConfigureAwait(false);
detail.FromLocationArea = fromLocationDto.AreaCode;
detail.FromLocationErpCode = fromLocationDto.ErpLocationCode;
detail.FromLocationGroup = fromLocationDto.LocationGroupCode;
detail.FromWarehouseCode = fromLocationDto.WarehouseCode;
detail.FromSupplierBatch = balanceDto.SupplierBatch;
detail.FromLot = balanceDto.Lot;
detail.FromStatus = balanceDto.Status;
detail.ToSupplierBatch = string.Empty;
detail.ToLot = balanceDto.Lot;
detail.ToStatus = balanceDto.Status;
detail.ToLocationArea = toLocationDto.AreaCode;
detail.ToLocationErpCode = toLocationDto.ErpLocationCode;
detail.ToLocationGroup = toLocationDto.LocationGroupCode;
detail.ToWarehouseCode = toLocationDto.WarehouseCode;
detail.ItemDesc1 = itemBasicDto.Desc1;
detail.ItemDesc2= itemBasicDto.Desc2;
detail.ItemName= itemBasicDto.Name;

250
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ProductRecycleRequests/ProductRecycleRequestAppService.cs

@ -5,6 +5,7 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Volo.Abp;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
@ -17,6 +18,7 @@ namespace Win_in.Sfs.Wms.Store.Application;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Data;
using Volo.Abp.Domain.Entities;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Wms.Inventory.Application.Contracts;
@ -27,23 +29,32 @@ using Win_in.Sfs.Wms.Inventory.Application.Contracts;
[Route($"{StoreConsts.RootPath}product-recycle-request")]
public class ProductRecycleRequestAppService :
SfsStoreRequestAppServiceBase<ProductRecycleRequest, ProductRecycleRequestDTO, SfsStoreRequestInputBase, ProductRecycleRequestEditInput, ProductRecycleRequestDetail, ProductRecycleRequestDetailDTO, SfsStoreRequestInputBase, ProductRecycleRequestImportInput>,
SfsStoreRequestAppServiceBase<ProductRecycleRequest, ProductRecycleRequestDTO,
SfsStoreRequestInputBase, ProductRecycleRequestEditInput
, ProductRecycleRequestDetail, ProductRecycleRequestDetailDTO, SfsStoreRequestInputBase, ProductRecycleRequestImportInput>,
IProductRecycleRequestAppService
{
private readonly IProductRecycleRequestManager _productRecycleRequestManager;
private readonly IBomAppService _bomApp;
private readonly IItemStoreRelationAppService _itemStoreRelationApp;
private readonly IItemBasicAppService _itemBasicAppService;
private readonly IBalanceAppService _balanceAppService;
private readonly ILocationAppService _locationAppService;
private readonly ITransactionTypeAppService _transactionTypeAppService;
public ProductRecycleRequestAppService(
IProductRecycleRequestRepository repository,
IProductRecycleRequestManager productRecycleRequestManager,
IBomAppService bomApp,
IItemStoreRelationAppService itemStoreRelationApp)
IItemStoreRelationAppService itemStoreRelationApp, ILocationAppService locationAppService, IBalanceAppService balanceAppService, ITransactionTypeAppService transactionTypeAppService)
: base(repository, productRecycleRequestManager)
{
_productRecycleRequestManager = productRecycleRequestManager;
_bomApp = bomApp;
_itemStoreRelationApp = itemStoreRelationApp;
_locationAppService = locationAppService;
_balanceAppService = balanceAppService;
_transactionTypeAppService = transactionTypeAppService;
base.CreatePolicyName = ProductRecycleRequestPermissions.Create;
base.UpdatePolicyName = ProductRecycleRequestPermissions.Update;
@ -75,6 +86,100 @@ public class ProductRecycleRequestAppService :
throw new NotImplementedException();
}
#region 东阳
protected override async Task<Dictionary<ProductRecycleRequest, EntityState>> ImportProcessingEntityAsync(Dictionary<ProductRecycleRequest, EntityState> dictionary)
{
var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key);
foreach (var productRecycleRequest in addList)
{
await SetRequestAutoPropertiesAsync(productRecycleRequest)
.ConfigureAwait(false);
productRecycleRequest.Worker = CurrentUser.GetUserName();
foreach (var detail in productRecycleRequest.Details)
{
var balance = await _balanceAppService.GetByItemLocationAndPackingAsync(
string.Empty,
detail.ItemCode,
detail.LocationCode).ConfigureAwait(false);
if (balance != null)
{
detail.Status = balance.Status;
}
var locationDto = await _locationAppService.GetByCodeAsync(detail.LocationCode)
.ConfigureAwait(false);
await SetDetailPropertiesAsync(detail).ConfigureAwait(false);
}
}
return dictionary;
}
private async Task SetRequestAutoPropertiesAsync(ProductRecycleRequest entity)
{
var tranType = await _transactionTypeAppService.GetByTransTypeAsync(EnumTransType.ProductRecycle, EnumTransSubType.None).ConfigureAwait(false);
Check.NotNull(tranType, "事务类型", "事务类型不存在");
entity.AutoCompleteJob = tranType.AutoCompleteJob;
entity.AutoSubmit = tranType.AutoSubmitRequest;
entity.AutoAgree = tranType.AutoAgreeRequest;
entity.AutoHandle = tranType.AutoHandleRequest;
entity.DirectCreateNote = tranType.DirectCreateNote;
}
private async Task SetDetailPropertiesAsync(
ProductRecycleRequestDetail detail)
{
var item = await ItemBasicAclService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
if (item != null)
{
detail.ItemName = item.Name;
detail.ItemDesc1 = item.Desc1;
detail.ItemDesc2 = item.Desc2;
detail.Uom = item.BasicUom;
detail.Qty = detail.Qty;
}
var location = await LocationAclService.GetByCodeAsync(detail.LocationCode).ConfigureAwait(false);
if (location != null)
{
detail.LocationErpCode = location.ErpLocationCode;
detail.WarehouseCode = location.WarehouseCode;
detail.LocationGroup = location.LocationGroupCode;
detail.LocationArea = location.AreaCode;
}
var rawLocation = await LocationAclService.GetByCodeAsync(detail.RawLocationCode).ConfigureAwait(false);
if (rawLocation != null)
{
detail.RawLocationErpCode = rawLocation.ErpLocationCode;
detail.RawWarehouseCode = rawLocation.WarehouseCode;
detail.RawLocationArea = rawLocation.AreaCode;
detail.RawLocationGroup = rawLocation.LocationGroupCode;
}
var balance = await BalanceAclService.GetByItemLocationAndPackingAsync(
string.Empty,
detail.ItemCode,
detail.LocationCode).ConfigureAwait(false);
if (balance != null)
{
detail.Status = balance.Status;
}
}
#endregion
#region Import
protected virtual async Task CheckImportInputBusinessAsync(ProductRecycleRequestImportInput importInput, EnumImportMethod importMethod, List<ValidationResult> validationRresult)
@ -202,147 +307,6 @@ public class ProductRecycleRequestAppService :
return boms;
}
protected virtual async Task ImportDataAsync(List<ProductRecycleRequest> entites, List<ProductRecycleRequest> deleteEntities)
{
await _productRecycleRequestManager.ImportDataAsync(entites, deleteEntities).ConfigureAwait(false);
}
protected override Func<ProductRecycleRequestImportInput, object> GetEntityExpression()
{
return p => 1;
}
protected virtual async Task<(List<ProductRecycleRequest> entites, List<ProductRecycleRequest> deleteEntities)> BuildImportDataAsync(ImportResult<ProductRecycleRequestImportInput> importResult, EnumImportMethod importMethod = EnumImportMethod.Update, bool isAllowPartImport = false)
{
if (importResult.Data.Any(t => t.ReportStatus == EnumImportReportStatus.Failed))
{
if (!isAllowPartImport)
{
return (null, null);
}
}
var entites = new List<ProductRecycleRequest>();
var details = new List<ProductRecycleRequestDetail>();
var deleteEntites = new List<ProductRecycleRequest>();
var entityExpression = GetEntityExpression();
var groupList = importResult.Data.ToList().GroupBy(entityExpression).Distinct().ToList();
foreach (var group in groupList)
{
var input = group.FirstOrDefault();
var inputDetails = group.ToList();
if (!inputDetails.Any(t => t.ReportStatus == EnumImportReportStatus.Failed))
{
var exist = await GetEntityAsync(input).ConfigureAwait(false);
var entity = ObjectMapper.Map<ProductRecycleRequestImportInput, ProductRecycleRequest>(input);
await SetEntityPropertiesAsync(entity, input).ConfigureAwait(false);
switch (importMethod)
{
case EnumImportMethod.Update:
if (exist != null)
{
entity.SetId(exist.Id);
}
break;
case EnumImportMethod.Replace:
if (exist != null)
{
deleteEntites.Add(exist);
}
break;
}
foreach (var inputDetail in inputDetails)
{
var detail = ObjectMapper.Map<ProductRecycleRequestImportInput, ProductRecycleRequestDetail>(inputDetail);
detail.SetIdAndNumber(GuidGenerator, entity.Id, entity.Number);
await SetDetailPropertiesAsync(detail, input).ConfigureAwait(false);
entity.AddDetail(detail);
}
entites.Add(entity);
}
}
return (entites, deleteEntites);
}
private async Task SetDetailPropertiesAsync(
ProductRecycleRequestDetail detail,
ProductRecycleRequestImportInput input)
{
var item = await ItemBasicAclService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
if (item != null)
{
detail.ItemName = item.Name;
detail.ItemDesc1 = item.Desc1;
detail.ItemDesc2 = item.Desc2;
detail.Qty = input.Qty;
}
var location = await LocationAclService.GetByCodeAsync(detail.LocationCode).ConfigureAwait(false);
if (location != null)
{
detail.LocationErpCode = location.ErpLocationCode;
detail.WarehouseCode = location.WarehouseCode;
}
var rawLocation = await LocationAclService.GetByCodeAsync(detail.RawLocationCode).ConfigureAwait(false);
if (rawLocation != null)
{
detail.RawLocationErpCode = rawLocation.ErpLocationCode;
detail.RawWarehouseCode = rawLocation.WarehouseCode;
}
var balance = await BalanceAclService.GetByItemLocationAndPackingAsync(
string.Empty,
detail.ItemCode,
input.LocationCode).ConfigureAwait(false);
if (balance != null)
{
detail.Status = balance.Status;
}
detail.SetProperty(nameof(input.PreStartTime), input.PreStartTime);
detail.SetProperty(nameof(input.WorkHour), input.WorkHour);
}
private async Task SetEntityPropertiesAsync(ProductRecycleRequest entity, ProductRecycleRequestImportInput input)
{
entity.Worker = CurrentUser.GetUserName();
await SetRequestAutoPropertiesAsync(entity).ConfigureAwait(false);
}
private async Task SetRequestAutoPropertiesAsync(ProductRecycleRequest entity)
{
var tranType = await TransactionTypeAclService.GetByTransTypeAsync(EnumTransType.ProductRecycle, EnumTransSubType.None).ConfigureAwait(false);
Check.NotNull(tranType, "事务类型", "事务类型不存在");
entity.AutoCompleteJob = tranType.AutoCompleteJob;
entity.AutoSubmit = tranType.AutoSubmitRequest;
entity.AutoAgree = tranType.AutoAgreeRequest;
entity.AutoHandle = tranType.AutoHandleRequest;
entity.DirectCreateNote = tranType.DirectCreateNote;
}
#endregion
}

46
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ProductionReturnRequests/ProductionReturnRequestAppService.cs

@ -5,6 +5,7 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Volo.Abp;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
@ -27,22 +28,25 @@ public class ProductionReturnRequestAppService :
IProductionReturnRequestAppService
{
private readonly IProductionReturnRequestManager _productionReturnRequestManager;
private readonly IItemStoreRelationAppService _itemStoreRelationApp;
private readonly IPurchaseOrderAppService _purchaseOrderApp;
private readonly IItemBasicAppService _itemBasicAppService;
private readonly ILocationAppService _locationAppService;
public ProductionReturnRequestAppService(
IProductionReturnRequestRepository repository,
IProductionReturnRequestManager productionRequestReturnManager,
IItemStoreRelationAppService itemStoreRelationApp,
IPurchaseOrderAppService purchaseOrderApp
)
IPurchaseOrderAppService purchaseOrderApp,
IItemBasicAppService itemBasicAppService,
ILocationAppService locationAppService)
: base(repository, productionRequestReturnManager)
{
_productionReturnRequestManager = productionRequestReturnManager;
_itemStoreRelationApp = itemStoreRelationApp;
_purchaseOrderApp = purchaseOrderApp;
_itemBasicAppService = itemBasicAppService;
_locationAppService = locationAppService;
}
/// <summary>
@ -62,6 +66,40 @@ public class ProductionReturnRequestAppService :
return dto;
}
protected override async Task<Dictionary<ProductionReturnRequest, EntityState>> ImportProcessingEntityAsync(Dictionary<ProductionReturnRequest, EntityState> dictionary)
{
var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key);
foreach (var productionReturnRequest in addList)
{
productionReturnRequest.Worker = CurrentUser.GetUserName();
productionReturnRequest.CreatorId = CurrentUser.Id;
await SetRequestAutoPropertiesAsync(productionReturnRequest).ConfigureAwait(false);
foreach (var detail in productionReturnRequest.Details)
{
var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
detail.Uom = itemBasicDto.BasicUom;
detail.StdPackQty=itemBasicDto.StdPackQty;
var fromLocationDto= await _locationAppService.GetByCodeAsync(detail.FromLocationCode).ConfigureAwait(false);
var toLocationDto = await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false);
detail.FromLocationArea = fromLocationDto.AreaCode;
detail.FromWarehouseCode = fromLocationDto.WarehouseCode;
detail.FromLocationGroup = fromLocationDto.LocationGroupCode;
detail.FromLocationErpCode= fromLocationDto.ErpLocationCode;
detail.ToLocationArea = toLocationDto.AreaCode;
detail.ToWarehouseCode = toLocationDto.WarehouseCode;
detail.ToLocationGroup = toLocationDto.LocationGroupCode;
detail.ToLocationErpCode = toLocationDto.ErpLocationCode;
}
}
return dictionary;
}
#region import
protected virtual async Task CheckImportInputBusinessAsync(ProductionReturnRequestImportInput importInput, EnumImportMethod importMethod, List<ValidationResult> validationRresult)
{

13
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/ItemTransformRequestEventHandler.cs

@ -44,6 +44,16 @@ public class ItemTransformRequestEventHandler
{
var transformNoteDetail = new ItemTransformNoteDetailInput()
{
FromLocationCode = detail.FromLocationCode,
FromLocationArea = detail.FromLocationArea,
FromLocationErpCode = detail.FromLocationErpCode,
FromLocationGroup = detail.FromLocationGroup,
ToLocationArea = detail.ToLocationArea,
ToLocationCode = detail.ToLocationCode,
ToLocationErpCode = detail.ToLocationErpCode,
ToLocationGroup = detail.ToLocationGroup,
FromSupplierBatch = detail.FromSupplierBatch,
ItemCode = detail.ItemCode,
ToItemCode = detail.ToItemCode,
@ -52,7 +62,6 @@ public class ItemTransformRequestEventHandler
FromExpireDate = detail.FromExpireDate,
FromLot = detail.FromLot,
FromPackingCode = detail.FromPackingCode,
ToLocationCode = detail.ToLocationCode,
FromStatus = detail.FromStatus,
ToContainerCode = detail.ToContainerCode,
FromProduceDate = detail.FromProduceDate,
@ -74,6 +83,8 @@ public class ItemTransformRequestEventHandler
ToProduceDate = detail.ToProduceDate,
ToStatus = detail.ToStatus,
ToSupplierBatch = detail.ToSupplierBatch,
FromWarehouseCode = detail.FromWarehouseCode,
ToWarehouseCode = detail.ToWarehouseCode
};
createInput.Details.Add(transformNoteDetail);

4
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/ProductRecycleRequestEventHandler.cs

@ -99,7 +99,9 @@ public class ProductRecycleRequestEventHandler
LocationErpCode = detail.RawLocationErpCode,
WarehouseCode = detail.RawWarehouseCode,
Lot = string.Empty,
Status = EnumInventoryStatus.OK
Status = EnumInventoryStatus.OK,
LocationArea = detail.LocationArea,
LocationGroup = detail.LocationGroup,
};
if (item != null)

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/ItemTransformNoteEventHandler.cs

@ -72,7 +72,9 @@ public class ItemTransformNoteEventHandler
TransType = Type,
TransSubType = SubType,
TransInOut = EnumTransInOut.Out,
LocationArea = detail.FromLocationArea,
LocationGroup = detail.FromLocationGroup,
LocationErpCode = detail.FromLocationErpCode,
PackingCode = detail.FromPackingCode,
ItemCode = detail.ItemCode,
Lot = detail.FromLot,
@ -106,6 +108,9 @@ public class ItemTransformNoteEventHandler
ItemCode = detail.ToItemCode,
Lot = detail.ToLot,
Status = detail.ToStatus,
LocationArea = detail.ToLocationArea,
LocationGroup = detail.ToLocationGroup,
LocationErpCode = detail.ToLocationErpCode,
WarehouseCode = detail.ToWarehouseCode,
LocationCode = detail.ToLocationCode,
ContainerCode = detail.ToContainerCode,

Loading…
Cancel
Save