唐明亮 2 years ago
parent
commit
0c69b416eb
  1. 45
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/Balances/DTOs/BalanceUpdateItemBasicInfoDto.cs
  2. 6
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/Balances/IBalanceAppService.cs
  3. 41
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Balances/BalanceAppService.cs
  4. 18
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/Balances/BalanceManager.cs
  5. 1
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/Balances/BalanceValidateExtension.cs
  6. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/BackFlusNotes/IBackFlushNoteAppService.cs
  7. 19
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/BackFlushNotes/BackFlushNoteAppService.cs
  8. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/CountNotes/CountNoteAppService.cs
  9. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/CountAdjustRequestEventHandler.cs

45
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/Balances/DTOs/BalanceUpdateItemBasicInfoDto.cs

@ -0,0 +1,45 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace Win_in.Sfs.Wms.Inventory.Application.Contracts;
/// <summary>
/// 库存更新物品基础信息
/// </summary>
public class BalanceUpdateItemBasicInfoDto
{
/// <summary>
/// 库存更新物品基础信息
/// </summary>
public List<BalanceUpdateItemBasicInfo> BalanceUpdateItemBasicInfos { get; set; }
}
/// <summary>
/// 库存更新物品基础信息
/// </summary>
public class BalanceUpdateItemBasicInfo
{
/// <summary>
/// 物品编码
/// </summary>
[Display(Name = "物品编码")]
public string ItemCode { get; set; }
/// <summary>
/// 物品名称
/// </summary>
[Display(Name = "物品名称")]
public string ItemName { get; set; }
/// <summary>
/// 物品描述1
/// </summary>
[Display(Name = "物品描述1")]
public string ItemDesc1 { get; set; }
/// <summary>
/// 物品描述2
/// </summary>
[Display(Name = "物品描述2")]
public string ItemDesc2 { get; set; }
}

6
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/Balances/IBalanceAppService.cs

@ -151,4 +151,10 @@ public interface IBalanceAppService
string lot, string lot,
string locationCode, string locationCode,
EnumInventoryStatus status); EnumInventoryStatus status);
/// <summary>
/// 库存余额更新物品基础信息
/// </summary>
Task UpdateItemBasicInfoAsync(BalanceUpdateItemBasicInfoDto balanceUpdateItemBasicInfoDto);
} }

41
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Balances/BalanceAppService.cs

@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Repositories;
using Win_in.Sfs.Shared.Application.Contracts; using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
@ -650,4 +651,44 @@ public class BalanceAppService
} }
#endregion Get #endregion Get
/// <summary>
/// 库存余额更新物品基础信息
/// </summary>
[HttpPost("update/item-basic-info")]
public async Task UpdateItemBasicInfoAsync(BalanceUpdateItemBasicInfoDto balanceUpdateItemBasicInfoDto)
{
// 物品编码
var itemCodes = balanceUpdateItemBasicInfoDto.BalanceUpdateItemBasicInfos?.Select(c => c.ItemCode);
itemCodes = itemCodes?.Where(t => string.IsNullOrWhiteSpace(t) == false);
if (itemCodes == null || itemCodes.Any() == false)
{
return;
}
// 获取库存余额
var entitys = await _repository.GetListAsync(p =>
itemCodes.Contains(p.ItemCode)).ConfigureAwait(false);
if (entitys.Count <= 0)
{
return;
}
// 库存余额更新物品基础信息
var entitysGroup = entitys.GroupBy(t => t.ItemCode);
foreach (var entity in entitysGroup)
{
var balanceUpdateItemBasicInfo = balanceUpdateItemBasicInfoDto.BalanceUpdateItemBasicInfos.FirstOrDefault(t => t.ItemCode == entity.Key);
foreach (var item in entity)
{
item.ItemName = balanceUpdateItemBasicInfo.ItemName ?? item.ItemName;
item.ItemDesc1 = balanceUpdateItemBasicInfo.ItemDesc1 ?? item.ItemDesc1;
item.ItemDesc2 = balanceUpdateItemBasicInfo.ItemDesc2 ?? item.ItemDesc2;
}
}
await _repository.UpdateManyAsync(entitys).ConfigureAwait(false);
}
} }

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

@ -451,14 +451,14 @@ public class BalanceManager : DomainService, IBalanceManager
{ {
expression = expression.And(p => p.ExpireDate > DateTime.Now); expression = expression.And(p => p.ExpireDate > DateTime.Now);
} }
//筛选有效库区 //筛选有效库区 2023-6-29 李智慧 王旭 袁静雯 确认不需要做区域校验
if (validLocationAreas.Any() ) //if (validLocationAreas.Any())
{ //{
if (!string.IsNullOrEmpty(validLocationAreas[0])) // if (!string.IsNullOrEmpty(validLocationAreas[0]))
{ // {
expression = expression.And(p => validLocationAreas.Contains(p.LocationArea)); // expression = expression.And(p => validLocationAreas.Contains(p.LocationArea));
} // }
} //}
var allBalances = await var allBalances = await
(await _balanceRepository.GetDbSetAsync().ConfigureAwait(false)) (await _balanceRepository.GetDbSetAsync().ConfigureAwait(false))
.Where(expression) .Where(expression)
@ -606,7 +606,7 @@ public class BalanceManager : DomainService, IBalanceManager
Logger.LogDebug($"{traceId}:RequestQty:{requestQty},RemainQty:{remainingQty},AvailableQty:{balanceQty},RecommendQty:{recommendQty}"); Logger.LogDebug($"{traceId}:RequestQty:{requestQty},RemainQty:{remainingQty},AvailableQty:{balanceQty},RecommendQty:{recommendQty}");
return recommendQty; return recommendQty;
} }
/// <summary> /// <summary>
/// 计算推荐库位 /// 计算推荐库位
/// </summary> /// </summary>

1
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/Balances/BalanceValidateExtension.cs

@ -108,7 +108,6 @@ public static class BalanceValidateExtension
/// <returns></returns> /// <returns></returns>
public static List<Balance> SortByFifo(this List<Balance> balances) public static List<Balance> SortByFifo(this List<Balance> balances)
{ {
return balances return balances
.OrderBy(p => p.Lot) .OrderBy(p => p.Lot)
.ThenBy(p => p.ArriveDate) .ThenBy(p => p.ArriveDate)

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/BackFlusNotes/IBackFlushNoteAppService.cs

@ -9,5 +9,5 @@ ISfsStoreMasterReadOnlyAppServiceBase<BackFlushNoteDTO, SfsStoreRequestInputBase
{ {
Task<List<BackFlushNoteDTO>> CreateManyAsync(List<BackFlushNoteEditInput> inputs); Task<List<BackFlushNoteDTO>> CreateManyAsync(List<BackFlushNoteEditInput> inputs);
Task<List<BackFlushNoteDTO>> GetListByProductRecycleNumber(string number); Task<List<BackFlushNoteDTO>> GetListByProductRecycleNumberAsync(string number);
} }

19
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/BackFlushNotes/BackFlushNoteAppService.cs

@ -32,7 +32,7 @@ public class BackFlushNoteAppService :
{ {
var entities = ObjectMapper.Map<List<BackFlushNoteEditInput>, List<BackFlushNote>>(inputs); var entities = ObjectMapper.Map<List<BackFlushNoteEditInput>, List<BackFlushNote>>(inputs);
entities = await ProcessingBackFlushNoteData(entities).ConfigureAwait(false); entities = await ProcessingBackFlushNoteDataAsync(entities).ConfigureAwait(false);
entities = await _backFlushNoteManager.CreateManyAsync(entities).ConfigureAwait(false); entities = await _backFlushNoteManager.CreateManyAsync(entities).ConfigureAwait(false);
@ -42,7 +42,7 @@ public class BackFlushNoteAppService :
} }
[HttpGet("by-product-recyle-number")] [HttpGet("by-product-recyle-number")]
public async Task<List<BackFlushNoteDTO>> GetListByProductRecycleNumber(string number) public async Task<List<BackFlushNoteDTO>> GetListByProductRecycleNumberAsync(string number)
{ {
var entities = await _repository.GetListAsync(t => t.ProductRecycleNumber == number, true) var entities = await _repository.GetListAsync(t => t.ProductRecycleNumber == number, true)
.ConfigureAwait(false); .ConfigureAwait(false);
@ -54,11 +54,16 @@ public class BackFlushNoteAppService :
/// 处理数据 /// 处理数据
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
private async Task<List<BackFlushNote>> ProcessingBackFlushNoteData(List<BackFlushNote> backFlushNotes) private async Task<List<BackFlushNote>> ProcessingBackFlushNoteDataAsync(List<BackFlushNote> backFlushNotes)
{ {
if (backFlushNotes != null && backFlushNotes.Count > 0) if (backFlushNotes != null && backFlushNotes.Count > 0)
{ {
// 主零件号
var itemCodes = backFlushNotes.Select(t => t.ItemCode); var itemCodes = backFlushNotes.Select(t => t.ItemCode);
// 从零件号
var detailsItemCodes = backFlushNotes.SelectMany(t => t.Details).Select(t => t.ItemCode);
itemCodes = itemCodes.Concat(detailsItemCodes).Distinct();
List<ItemBasicDTO> itemBasicDtos = await _itemBasicAppService.GetByCodesAsync(itemCodes).ConfigureAwait(false); List<ItemBasicDTO> itemBasicDtos = await _itemBasicAppService.GetByCodesAsync(itemCodes).ConfigureAwait(false);
backFlushNotes.ForEach(t => backFlushNotes.ForEach(t =>
@ -70,8 +75,12 @@ public class BackFlushNoteAppService :
t.ItemDesc2 = itemBasicDto.Desc2; t.ItemDesc2 = itemBasicDto.Desc2;
t.Details.ForEach(tDetail => t.Details.ForEach(tDetail =>
{ {
tDetail.ItemDesc1 = itemBasicDto.Desc1; var detailsItemBasicDto = itemBasicDtos.FirstOrDefault(w => w.Code == tDetail.ItemCode);
tDetail.ItemDesc2 = itemBasicDto.Desc2; if (detailsItemBasicDto != null)
{
tDetail.ItemDesc1 = detailsItemBasicDto.Desc1;
tDetail.ItemDesc2 = detailsItemBasicDto.Desc2;
}
}); });
} }
}); });

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/CountNotes/CountNoteAppService.cs

@ -95,6 +95,8 @@ public class CountNoteAppService :
detail.LocationGroup = locationDto.LocationGroupCode; detail.LocationGroup = locationDto.LocationGroupCode;
detail.LocationErpCode = locationDto.ErpLocationCode; detail.LocationErpCode = locationDto.ErpLocationCode;
detail.WarehouseCode = locationDto.WarehouseCode; detail.WarehouseCode = locationDto.WarehouseCode;
detail.PackingCode=detail.PackingCode ?? "";
detail.Lot = detail.Lot ?? "";
detail.ItemCode = itemcBasicDto.Code; detail.ItemCode = itemcBasicDto.Code;
detail.ItemDesc1 = itemcBasicDto.Desc1; detail.ItemDesc1 = itemcBasicDto.Desc1;

6
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/CountAdjustRequestEventHandler.cs

@ -50,6 +50,12 @@ public class CountAdjustRequestEventHandler
{ {
if (entity.DirectCreateNote) if (entity.DirectCreateNote)
{ {
entity.Details.ForEach(p =>
{
p.PackingCode = p.PackingCode ?? "";
p.Lot = p.Lot ?? "";
p.ContainerCode = p.ContainerCode ?? "";
});
await ThawBalancesAsync(entity).ConfigureAwait(false); await ThawBalancesAsync(entity).ConfigureAwait(false);
var note = await BuildCountAdjustNoteCreateInputAsync(entity).ConfigureAwait(false); var note = await BuildCountAdjustNoteCreateInputAsync(entity).ConfigureAwait(false);

Loading…
Cancel
Save