Browse Source

修改 安全库存

集成Redis
郑勃旭 2 years ago
parent
commit
a9b07dee09
  1. 65
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/SafetyStockBalances/DTOs/SafetyStockBalancesDto.cs
  2. 12
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/SafetyStockBalances/ISafetyStockBalancesAppservice.cs
  3. 109
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/SafetyStockBalances/SafetyStockBalancesAppservice.cs

65
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/SafetyStockBalances/DTOs/SafetyStockBalancesDto.cs

@ -0,0 +1,65 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DocumentFormat.OpenXml.Wordprocessing;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Inventory.Domain;
namespace Win_in.Sfs.Wms.Inventory;
public class SafetyStockBalancesDto: SfsBasicDTOBase
{
/// <summary>
/// 物品代码
/// </summary>
[Display(Name = "物品代码")]
public string ItemCode { get; set; }
/// <summary>
/// 仓库代码
/// </summary>
[Display(Name = "仓库代码")]
public string WarehouseCode { get; set; }
/// <summary>
/// 存储关系类型
/// </summary>
[Display(Name = "存储关系类型")]
public EnumStoreRelationType StoreRelationType { get; set; }
/// <summary>
/// 存储关系代码
/// </summary>
[Display(Name = "存储关系代码")]
public string StoreValue { get; set; }
/// <summary>
/// 最大库存
/// </summary>
[Display(Name = "最大库存")]
public decimal MaxStock { get; set; }
/// <summary>
/// 最小库存
/// </summary>
[Display(Name = "最小库存")]
public decimal MinStock { get; set; }
/// <summary>
/// 安全库存
/// </summary>
[Display(Name = "安全库存")]
public decimal SafetyStock { get; set; }
/// <summary>
/// 安全库存状态
/// </summary>
[Display(Name = "安全库存状态")]
public string SafetyStockStatus { get; set; }
public List<BalanceDTO> BalancesDtos { get; set; } = new List<BalanceDTO>();
}

12
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/SafetyStockBalances/ISafetyStockBalancesAppservice.cs

@ -0,0 +1,12 @@
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Win_in.Sfs.Basedata.Application.Contracts;
namespace Win_in.Sfs.Wms.Inventory.Application.Contracts;
public interface
ISafetyStockBalancesAppservice : ISfsInventoryCrudAppServiceBase<BalanceDTO, SfsInventoryRequestInputBase, BalanceEditInput>
{
Task<PagedResultDto<SafetyStockBalancesDto>> GetPagedListByFilterAsync(
SfsBaseDataRequestInputBase sfsBaseDataRequestInputBase);
}

109
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/SafetyStockBalances/SafetyStockBalancesAppservice.cs

@ -0,0 +1,109 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.Application.Dtos;
using Win_in.Sfs.Basedata.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;
using Win_in.Sfs.Wms.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Inventory.Domain;
using Win_in.Sfs.Wms.Inventory.Domain.Shared;
namespace Win_in.Sfs.Wms.Inventory;
/// <summary>
/// 安全库存
/// </summary>
[Route($"{InventoryConsts.RootPath}safety-stock-inventory-balance")]
[ApiExplorerSettings(GroupName = nameof(Inventory))]
public class SafetyStockBalancesAppservice : SfsInventoryAppServiceBase<Balance, BalanceDTO,
SfsInventoryRequestInputBase,
BalanceEditInput, EmptyImportInput>, ISafetyStockBalancesAppservice
{
private readonly IItemSafetyStockAppService _itemSafetyStockAppService;
private readonly IBalanceAppService _balanceAppService;
public SafetyStockBalancesAppservice(IBalanceRepository repository,
IItemSafetyStockAppService itemSafetyStockAppService,
IBalanceAppService balanceAppService) : base(repository)
{
_itemSafetyStockAppService = itemSafetyStockAppService;
_balanceAppService = balanceAppService;
}
[HttpPost("list-page")]
public async Task<PagedResultDto<SafetyStockBalancesDto>> GetPagedListByFilterAsync(
SfsBaseDataRequestInputBase sfsBaseDataRequestInputBase)
{
var pagedResultDto = new PagedResultDto<SafetyStockBalancesDto>();
var resultDto = await _itemSafetyStockAppService.GetPagedListByFilterAsync(sfsBaseDataRequestInputBase)
.ConfigureAwait(false);
pagedResultDto.TotalCount = resultDto.TotalCount;
var stockBalancesDtos = new List<SafetyStockBalancesDto>();
foreach (var stockDto in resultDto.Items)
{
var safetyStockBalancesDto = new SafetyStockBalancesDto();
safetyStockBalancesDto.Id = stockDto.Id;
safetyStockBalancesDto.ItemCode = stockDto.ItemCode;
safetyStockBalancesDto.StoreValue=stockDto.StoreValue;
safetyStockBalancesDto.MaxStock=stockDto.MaxStock;
safetyStockBalancesDto.MinStock=stockDto.MinStock;
safetyStockBalancesDto.SafetyStock=stockDto.SafetyStock;
safetyStockBalancesDto.StoreRelationType=stockDto.StoreRelationType;
safetyStockBalancesDto.WarehouseCode=stockDto.WarehouseCode;
//库存查询条件
var input = new SfsInventoryRequestInputBase { Condition = new Condition { Filters = new List<Filter>() } };
input.Condition.Filters.Add(new Filter(nameof(BalanceDTO.ItemCode), safetyStockBalancesDto.ItemCode));
switch (stockDto.StoreRelationType)
{
case EnumStoreRelationType.None:
break;
case EnumStoreRelationType.Warehouse:
input.Condition.Filters.Add(new Filter(nameof(BalanceDTO.WarehouseCode), safetyStockBalancesDto.StoreValue));
break;
case EnumStoreRelationType.Area:
input.Condition.Filters.Add(new Filter(nameof(BalanceDTO.LocationArea), safetyStockBalancesDto.StoreValue));
break;
case EnumStoreRelationType.StoreGroup:
input.Condition.Filters.Add(new Filter(nameof(BalanceDTO.LocationGroup), safetyStockBalancesDto.StoreValue));
break;
case EnumStoreRelationType.Location:
input.Condition.Filters.Add(new Filter(nameof(BalanceDTO.LocationCode), safetyStockBalancesDto.StoreValue));
break;
default:
throw new ArgumentOutOfRangeException();
}
//符合条件的库存
safetyStockBalancesDto.BalancesDtos = await _balanceAppService.GetAllListByFilterAsync(input).ConfigureAwait(false);
var sumQty = safetyStockBalancesDto.BalancesDtos.Sum(p => p.Qty);
if (sumQty > safetyStockBalancesDto.SafetyStock)
{
safetyStockBalancesDto.SafetyStockStatus = ConsoleColor.Green.ToString();
}
else if(sumQty == safetyStockBalancesDto.SafetyStock)
{
safetyStockBalancesDto.SafetyStockStatus = ConsoleColor.Yellow.ToString();
}
else
{
safetyStockBalancesDto.SafetyStockStatus = ConsoleColor.Red.ToString();
}
stockBalancesDtos.Add(safetyStockBalancesDto);
}
pagedResultDto.Items = stockBalancesDtos;
return pagedResultDto;
}
}
Loading…
Cancel
Save