From b0b9bb36066ebb0875ae3ddc0cbe7d1c984cc976 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=83=91=E6=B8=A4=E6=97=AD=5BIrelia=5D?= <366601522@qq.com>
Date: Tue, 25 Apr 2023 23:28:45 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=AD=E6=96=87=E6=8F=90?=
=?UTF-8?q?=E9=86=92?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Notes/CountNotes/CountNoteAppService.cs | 92 ++++++++----
.../DeliverRequestFisAppService.cs | 56 ++++++--
.../ItemTransformRequestAppService.cs | 131 +++++++++++++-----
.../MaterialRequestAppService.cs | 24 ++++
.../PurchaseReturnRequestAppService.cs | 28 ++--
5 files changed, 250 insertions(+), 81 deletions(-)
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/CountNotes/CountNoteAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/CountNotes/CountNoteAppService.cs
index 47cdf7440..828b6c6ee 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/CountNotes/CountNoteAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/CountNotes/CountNoteAppService.cs
@@ -8,7 +8,6 @@ using Microsoft.EntityFrameworkCore;
using Volo.Abp;
using Volo.Abp.Domain.Repositories;
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.Store.Application.Contracts;
@@ -18,11 +17,10 @@ using Win_in.Sfs.Wms.Store.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application;
///
-/// 盘点记录
+/// 盘点记录
///
[Authorize]
[Route($"{StoreConsts.RootPath}count-note")]
-
public class CountNoteAppService :
SfsStoreWithDetailsAppServiceBase
- /// 用来重写 导入数据时可以加工数据
+ /// 用来重写 导入数据时可以加工数据
///
///
///
- protected override async Task> ImportProcessingEntityAsync(Dictionary dictionary)
+ protected override async Task> ImportProcessingEntityAsync(
+ Dictionary dictionary)
{
- var dataList = dictionary.Select(p => p.Key);//查询所有的导入盘点数据
+ var dataList = dictionary.Select(p => p.Key); //查询所有的导入盘点数据
var resultDictionary = new Dictionary();
- var allCountPlanNumbersList= dataList.GroupBy(p => p.CountPlanNumber).Select(p => p.Key).ToList();
+ var allCountPlanNumbersList = dataList.GroupBy(p => p.CountPlanNumber).Select(p => p.Key).ToList();
//特殊处理 因为盘点记录可以重复导入 所以每次导入前删除调原有记录
foreach (var countPlanNumber in allCountPlanNumbersList)
{
var countPlanDto = await _countPlanAppService.GetByNumberAsync(countPlanNumber).ConfigureAwait(false);
- if (countPlanDto.RequestType != CountPlanRequestType.Import)
- {
- throw new UserFriendlyException("非Excel盘点执行方式不能使用导入");
- }
+ CheckCountPlanNumber(countPlanDto, countPlanNumber);
+ CheckCountPlanRequestType(countPlanDto);
await _repository.DeleteAsync(p => p.CountPlanNumber == countPlanNumber).ConfigureAwait(false);
}
@@ -81,40 +77,78 @@ public class CountNoteAppService :
{
countNote.Worker = CurrentUser.GetUserName();
countNote.CreatorId = CurrentUser.Id;
- countNote.BeginTime= DateTime.Now;
+ countNote.BeginTime = DateTime.Now;
countNote.Adjusted = false;
- countNote.EndTime=DateTime.Now;
+ countNote.EndTime = DateTime.Now;
countNote.Stage = EnumCountStage.Audit;
foreach (var detail in countNote.Details)
{
- var locationDto= await _locationAppService.GetByCodeAsync(detail.LocationCode).ConfigureAwait(false);
- var itemcBasicDto=await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
+ var locationDto = await _locationAppService.GetByCodeAsync(detail.LocationCode).ConfigureAwait(false);
+ var itemcBasicDto = await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
+ CheckLocation(locationDto, detail);
+ CheckItemBasic(itemcBasicDto, detail);
- detail.CountLabel =Guid.NewGuid().ToString();
+ detail.CountLabel = Guid.NewGuid().ToString();
detail.LocationArea = locationDto.AreaCode;
- detail.LocationGroup= locationDto.LocationGroupCode;
- detail.LocationErpCode= locationDto.ErpLocationCode;
- detail.WarehouseCode= locationDto.WarehouseCode;
+ detail.LocationGroup = locationDto.LocationGroupCode;
+ detail.LocationErpCode = locationDto.ErpLocationCode;
+ detail.WarehouseCode = locationDto.WarehouseCode;
detail.ItemCode = itemcBasicDto.Code;
detail.ItemDesc1 = itemcBasicDto.Desc1;
detail.ItemDesc2 = itemcBasicDto.Desc2;
- detail.ItemName= itemcBasicDto.Name;
+ detail.ItemName = itemcBasicDto.Name;
detail.Uom = itemcBasicDto.BasicUom;
}
- resultDictionary.Add(countNote,EntityState.Added);
+ resultDictionary.Add(countNote, EntityState.Added);
}
return resultDictionary;
}
+ #region 校验
+
+ private static void CheckItemBasic(ItemBasicDTO itemcBasicDto, CountNoteDetail detail)
+ {
+ if (itemcBasicDto == null)
+ {
+ throw new UserFriendlyException($"物品代码为【{detail.LocationCode}】不存在");
+ }
+ }
+
+ private static void CheckLocation(LocationDTO locationDto, CountNoteDetail detail)
+ {
+ if (locationDto == null)
+ {
+ throw new UserFriendlyException($"库位代码为【{detail.LocationCode}】不存在");
+ }
+ }
+
+ private static void CheckCountPlanRequestType(CountPlanDTO countPlanDto)
+ {
+ if (countPlanDto.RequestType != CountPlanRequestType.Import)
+ {
+ throw new UserFriendlyException("非Excel盘点执行方式不能使用导入");
+ }
+ }
+
+ private static void CheckCountPlanNumber(CountPlanDTO countPlanDto, string countPlanNumber)
+ {
+ if (countPlanDto == null)
+ {
+ throw new UserFriendlyException($"盘点计划单号为【{countPlanNumber}】不存在");
+ }
+ }
+
+ #endregion
+
#endregion
///
- /// 新增接口
+ /// 新增接口
///
///
///
@@ -129,7 +163,7 @@ public class CountNoteAppService :
}
///
- /// 生成盘点调整申请
+ /// 生成盘点调整申请
///
///
[HttpPost("{id}/generate-adjust-request")]
@@ -150,11 +184,13 @@ public class CountNoteAppService :
protected override async Task GetEntityAsync(CountNoteImportInput importInput)
{
- var countNote = await _repository.FirstOrDefaultAsync(t => t.CountPlanNumber == importInput.CountPlanNumber).ConfigureAwait(false);
+ var countNote = await _repository.FirstOrDefaultAsync(t => t.CountPlanNumber == importInput.CountPlanNumber)
+ .ConfigureAwait(false);
- if (countNote != null)//特殊处理 因为盘点记录可以重复导入 所以每次导入前删除调原有记录
+ if (countNote != null) //特殊处理 因为盘点记录可以重复导入 所以每次导入前删除调原有记录
{
- var countplan = await _countPlanAppService.GetByNumberAsync(countNote.CountPlanNumber).ConfigureAwait(false);
+ var countplan = await _countPlanAppService.GetByNumberAsync(countNote.CountPlanNumber)
+ .ConfigureAwait(false);
if (countplan != null)
{
@@ -178,7 +214,7 @@ public class CountNoteAppService :
{
var groups = entites.Select(p => p.CountPlanNumber).GroupBy(p => p);
- if (entites.Any(p => p.Adjusted == true))
+ if (entites.Any(p => p.Adjusted))
{
throw new UserFriendlyException("库存已调整,不能导入");
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestFisAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestFisAppService.cs
index 2a980b30b..cf2e633cf 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestFisAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestFisAppService.cs
@@ -86,6 +86,8 @@ public class DeliverRequestFisAppService :
foreach (var detail in itemTransformRequest.Details)
{
var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
+ CheckItemBasic(itemBasicDto, detail.ItemCode);
+
var transactionType = await _transactionTypeAppService.GetByTransTypeAsync(EnumTransType.Deliver,
EnumTransSubType.Deliver_FIS)
.ConfigureAwait(false);
@@ -100,16 +102,11 @@ public class DeliverRequestFisAppService :
Statuses = transactionType.OutInventoryStatuses
}).ConfigureAwait(false);
+ CheckBalances(balances, transactionType, itemBasicDto, detail);
+
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}。");
- }
+ CheckBalancesSumQty(balanceSumQty, detail, transactionType);
detail.ItemDesc1 = itemBasicDto.Desc1;
detail.ItemDesc2 = itemBasicDto.Desc2;
@@ -122,6 +119,49 @@ public class DeliverRequestFisAppService :
return dictionary;
}
+ #region 校验
+
+ private static void CheckBalancesSumQty(decimal balanceSumQty, DeliverRequestDetail detail,
+ TransactionTypeDTO transactionType)
+ {
+ if (balanceSumQty < detail.Qty)
+ {
+ throw new UserFriendlyException($"物料号 {detail.ItemCode} " +
+ $"在库位类型 {transactionType.OutLocationTypes.JoinAsString(",")}," +
+ $"库区 {detail.AreaCode} " +
+ $"状态 {transactionType.OutInventoryStatuses.JoinAsString(",")}" +
+ $"库存余额 {balanceSumQty} 小于 {detail.Qty}。");
+ }
+ }
+
+ private static void CheckBalances(List balances, TransactionTypeDTO transactionType, ItemBasicDTO itemBasicDto,
+ DeliverRequestDetail detail)
+ {
+ if (balances == null)
+ {
+ var sbLocationTypes = string.Empty;
+ transactionType.OutLocationTypes.ForEach(p => sbLocationTypes += " " + p.GetDisplayName() + " ");
+ var sbStatuses = string.Empty;
+ transactionType.OutInventoryStatuses.ForEach(p => sbLocationTypes += " " + p.GetDisplayName() + " ");
+ throw new UserFriendlyException(
+ $"没有物品代码为【{itemBasicDto.Code}】," +
+ $"数量为【{detail.Qty}】," +
+ $"出库库位类型为【{sbLocationTypes}】," +
+ $"区域为【{detail.AreaCode}】," +
+ $"出库可用状态为【{sbStatuses}】的可用的库存。");
+ }
+ }
+
+ private static void CheckItemBasic(ItemBasicDTO itemcBasicDto, string itemCode)
+ {
+ if (itemcBasicDto == null)
+ {
+ throw new UserFriendlyException($"物品代码为【{itemCode}】不存在");
+ }
+ }
+
+ #endregion
+
#endregion
[HttpPost("list")]
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ItemTransformRequests/ItemTransformRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ItemTransformRequests/ItemTransformRequestAppService.cs
index c2e79752c..34f407bc3 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ItemTransformRequests/ItemTransformRequestAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ItemTransformRequests/ItemTransformRequestAppService.cs
@@ -3,11 +3,11 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
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.Label.Application.Contracts;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
@@ -20,12 +20,14 @@ using Win_in.Sfs.Wms.Store.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application;
///
-/// 回收料调整申请
+/// 回收料调整申请
///
[Authorize]
[Route($"{StoreConsts.RootPath}item-transform-request")]
public class ItemTransformRequestAppService :
- SfsStoreRequestAppServiceBase,
+ SfsStoreRequestAppServiceBase,
IItemTransformRequestAppService
{
private const EnumTransSubType SubType = EnumTransSubType.Item_Transform;
@@ -45,25 +47,12 @@ public class ItemTransformRequestAppService :
_balanceAppService = balanceAppService;
}
- ///
- /// 新增方法
- ///
- ///
- ///
- [HttpPost("")]
-
- public override async Task CreateAsync(ItemTransformRequestEditInput input)
- {
- var entity = ObjectMapper.Map(input);
-
- await _manager.CreateAsync(entity).ConfigureAwait(false);
-
- var dto = ObjectMapper.Map(entity);
+
- return dto;
- }
+ #region 东阳
- protected override async Task> ImportProcessingEntityAsync(Dictionary dictionary)
+ protected override async Task> ImportProcessingEntityAsync(
+ Dictionary dictionary)
{
var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key);
@@ -73,13 +62,27 @@ public class ItemTransformRequestAppService :
itemTransformRequest.CreatorId = CurrentUser.Id;
foreach (var detail in itemTransformRequest.Details)
{
- var fromLocationDto= await LocationAclService.GetByCodeAsync(detail.FromLocationCode).ConfigureAwait(false);
- var toLocationDto= await LocationAclService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false);
- var fromItemBasicDto=await ItemBasicAclService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
+ var fromLocationDto =
+ await LocationAclService.GetByCodeAsync(detail.FromLocationCode).ConfigureAwait(false);
+ CheckLocation(fromLocationDto, detail.FromLocationCode);
+
+ var toLocationDto =
+ await LocationAclService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false);
+ CheckLocation(toLocationDto, detail.ToLocationCode);
+
+ var fromItemBasicDto = await ItemBasicAclService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
+ CheckItemBasic(fromItemBasicDto, detail.ItemCode);
+
var toItemBasicDto = await ItemBasicAclService.GetByCodeAsync(detail.ToItemCode).ConfigureAwait(false);
- var balanceDto= await _balanceAppService.GetByItemLocationAndPackingAsync(detail.FromPackingCode, detail.ItemCode,
+ CheckItemBasic(toItemBasicDto, detail.ToItemCode);
+
+ var balanceDto = await _balanceAppService.GetByItemLocationAndPackingAsync(detail.FromPackingCode,
+ detail.ItemCode,
detail.FromLocationCode).ConfigureAwait(false);
- var inventoryLabelDto= await _inventoryLabelAppService.GetByCodeAsync(detail.ToPackingCode).ConfigureAwait(false);
+
+ var inventoryLabelDto = await _inventoryLabelAppService.GetByCodeAsync(detail.ToPackingCode)
+ .ConfigureAwait(false);
+ CheckLabel(inventoryLabelDto, detail);
detail.FromLocationArea = fromLocationDto.AreaCode;
detail.FromLocationErpCode = fromLocationDto.ErpLocationCode;
@@ -100,8 +103,8 @@ public class ItemTransformRequestAppService :
detail.ToWarehouseCode = toLocationDto.WarehouseCode;
detail.ItemDesc1 = fromItemBasicDto.Desc1;
- detail.ItemDesc2= fromItemBasicDto.Desc2;
- detail.ItemName= fromItemBasicDto.Name;
+ detail.ItemDesc2 = fromItemBasicDto.Desc2;
+ detail.ItemName = fromItemBasicDto.Name;
detail.Uom = fromItemBasicDto.BasicUom;
detail.ToItemCode = toItemBasicDto.Code;
@@ -112,11 +115,58 @@ public class ItemTransformRequestAppService :
}
return dictionary;
+ }
+
+
+ #region 校验
+
+ private void CheckLabel(InventoryLabelDto inventoryLabelDto, ItemTransformRequestDetail detail)
+ {
+ if (inventoryLabelDto == null)
+ {
+ throw new UserFriendlyException($"标签箱码为【{detail.ToPackingCode}】不存在");
+ }
+ }
+
+ private void CheckItemBasic(ItemBasicDTO ItemBasicDto, string itemCode)
+ {
+ if (ItemBasicDto == null)
+ {
+ throw new UserFriendlyException($"物品代码为【{itemCode}】不存在");
+ }
+ }
+
+ private void CheckLocation(LocationDTO LocationDto, string LocationCode)
+ {
+ if (LocationDto == null)
+ {
+ throw new UserFriendlyException($"库位代码为【{LocationCode}】不存在");
+ }
+ }
+
+ #endregion
+
+ #endregion
+
+ ///
+ /// 新增方法
+ ///
+ ///
+ ///
+ [HttpPost("")]
+ public override async Task CreateAsync(ItemTransformRequestEditInput input)
+ {
+ var entity = ObjectMapper.Map(input);
+
+ await _manager.CreateAsync(entity).ConfigureAwait(false);
+ var dto = ObjectMapper.Map(entity);
+ return dto;
}
- protected virtual async Task ImportDataAsync(List entites, List deleteEntities)
+ protected virtual async Task ImportDataAsync(List entites,
+ List deleteEntities)
{
await _manager.ImportDataAsync(entites, deleteEntities).ConfigureAwait(false);
}
@@ -126,7 +176,9 @@ public class ItemTransformRequestAppService :
return t => t.Worker;
}
- protected virtual async Task<(List entites, List deleteEntities)> BuildImportDataAsync(ImportResult importResult, EnumImportMethod importMethod = EnumImportMethod.Update, bool isAllowPartImport = false)
+ protected virtual async Task<(List entites, List deleteEntities)>
+ BuildImportDataAsync(ImportResult importResult,
+ EnumImportMethod importMethod = EnumImportMethod.Update, bool isAllowPartImport = false)
{
if (importResult.Data.Any(t => t.ReportStatus == EnumImportReportStatus.Failed))
{
@@ -167,18 +219,21 @@ public class ItemTransformRequestAppService :
{
entity.SetId(exist.Id);
}
+
break;
case EnumImportMethod.Replace:
if (exist != null)
{
deleteEntites.Add(exist);
}
+
break;
}
foreach (var inputDetail in inputDetails)
{
- var detail = ObjectMapper.Map(inputDetail);
+ var detail =
+ ObjectMapper.Map(inputDetail);
await SetDetailPropertiesAsync(detail, input).ConfigureAwait(false);
entity.AddDetail(detail);
@@ -191,7 +246,8 @@ public class ItemTransformRequestAppService :
return (entites, deleteEntites);
}
- private async Task SetDetailPropertiesAsync(ItemTransformRequestDetail detail, ItemTransformRequestImportInput input)
+ private async Task SetDetailPropertiesAsync(ItemTransformRequestDetail detail,
+ ItemTransformRequestImportInput input)
{
var balanceDTO = await BalanceAclService.GetByPackingCodeAsync(detail.FromPackingCode).ConfigureAwait(false);
var toItemBasicDTO = await ItemBasicAclService.GetByCodeAsync(detail.ToItemCode).ConfigureAwait(false);
@@ -223,7 +279,8 @@ public class ItemTransformRequestAppService :
private async Task SetEntityPropertiesAsync(ItemTransformRequest entity, ItemTransformRequestImportInput input)
{
- var tranType = await TransactionTypeAclService.GetByTransTypeAsync(EnumTransType.Adjust, SubType).ConfigureAwait(false);
+ var tranType = await TransactionTypeAclService.GetByTransTypeAsync(EnumTransType.Adjust, SubType)
+ .ConfigureAwait(false);
Check.NotNull(tranType, "事务类型", "事务类型不存在");
@@ -234,7 +291,8 @@ public class ItemTransformRequestAppService :
entity.DirectCreateNote = tranType.DirectCreateNote;
}
- protected virtual async Task CheckImportInputBusinessAsync(ItemTransformRequestImportInput importInput, EnumImportMethod importMethod, List validationRresult)
+ protected virtual async Task CheckImportInputBusinessAsync(ItemTransformRequestImportInput importInput,
+ EnumImportMethod importMethod, List validationRresult)
{
//await base.CheckImportInputBusinessAsync(importInput, importMethod);
@@ -298,15 +356,16 @@ public class ItemTransformRequestAppService :
var label = await _inventoryLabelAppService.GetByCodeAsync(packingCode).ConfigureAwait(false);
if (label != null)
{
- var inventory = await BalanceAclService.GetListByPackingCodesAsync(new List { packingCode }).ConfigureAwait(false);
+ var inventory = await BalanceAclService.GetListByPackingCodesAsync(new List { packingCode })
+ .ConfigureAwait(false);
if (inventory.Count > 0)
{
- validationRresult.Add("库存余额已存在", $"库存余额已存在,请重新打印标签并导入。");
+ validationRresult.Add("库存余额已存在", "库存余额已存在,请重新打印标签并导入。");
}
}
else
{
- validationRresult.Add("标签不存在", $"标签不存在,请重新打印标签并导入。");
+ validationRresult.Add("标签不存在", "标签不存在,请重新打印标签并导入。");
}
}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/MaterialRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/MaterialRequestAppService.cs
index bf07d2a39..304fd2166 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/MaterialRequestAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/MaterialRequestAppService.cs
@@ -86,7 +86,10 @@ public class MaterialRequestAppService : SfsStoreRequestAppServiceBase(entity);
}
+ #region 校验
+
+ private void CheckItemBasic(ItemBasicDTO ItemBasicDto, string itemCode)
+ {
+ if (ItemBasicDto == null)
+ {
+ throw new UserFriendlyException($"物品代码为【{itemCode}】不存在");
+ }
+ }
+
+ private void CheckLocation(LocationDTO LocationDto, string LocationCode)
+ {
+ if (LocationDto == null)
+ {
+ throw new UserFriendlyException($"库位代码为【{LocationCode}】不存在");
+ }
+ }
+
+
+ #endregion
+
#endregion
[HttpPost("")]
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReturnRequests/PurchaseReturnRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReturnRequests/PurchaseReturnRequestAppService.cs
index 6da296b61..24a24a7d9 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReturnRequests/PurchaseReturnRequestAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReturnRequests/PurchaseReturnRequestAppService.cs
@@ -38,19 +38,22 @@ public class PurchaseReturnRequestAppService :
private readonly ITransactionTypeAppService _transactionTypeAppService;
private readonly IPurchaseReturnRequestManager _purchaseReturnRequestManager;
private readonly IPurchaseOrderAppService _purchaseOrderAppService;
+ private readonly IBalanceAppService _balanceAppService;
public PurchaseReturnRequestAppService(
IPurchaseReturnRequestRepository repository,
IPurchaseReturnRequestManager purchaseReturnRequestManager,
IInventoryLabelAppService inventoryLabelApp,
ILocationAppService locationAppService,
ITransactionTypeAppService transactionTypeAppService,
- IPurchaseOrderAppService purchaseOrderAppService) : base(repository, purchaseReturnRequestManager)
+ IPurchaseOrderAppService purchaseOrderAppService,
+ IBalanceAppService balanceAppService) : base(repository, purchaseReturnRequestManager)
{
_purchaseReturnRequestManager = purchaseReturnRequestManager;
_inventoryLabelApp = inventoryLabelApp;
_locationAppService = locationAppService;
_transactionTypeAppService = transactionTypeAppService;
_purchaseOrderAppService = purchaseOrderAppService;
+ _balanceAppService = balanceAppService;
base.CreatePolicyName = PurchaseReturnRequestPermissions.Create;
base.UpdatePolicyName = PurchaseReturnRequestPermissions.Update;
@@ -97,15 +100,14 @@ public class PurchaseReturnRequestAppService :
{
//通过箱标签 查找标签服务 构造其他字段
var labelDto = await _inventoryLabelApp.GetByCodeAsync(detail.PackingCode).ConfigureAwait(false);
- var balanceDto = await BalanceAclService.GetByPackingCodeAsync(detail.PackingCode).ConfigureAwait(false);
+ var balanceDto = await _balanceAppService.GetByPackingCodeAsync(detail.PackingCode).ConfigureAwait(false);
var locationDto= await _locationAppService.GetByCodeAsync(balanceDto.LocationCode).ConfigureAwait(false);
+ var purchaseOrderDto = await _purchaseOrderAppService.GetByNumberAsync(labelDto.PoNumber).ConfigureAwait(false);
+ purchaseOrderDto = await _purchaseOrderAppService.GetAsync(purchaseOrderDto.Id).ConfigureAwait(false);
+ CheckPurchaseOrder(purchaseOrderDto, labelDto);
CheckLabel(labelDto, detail);
CheckBalance(balanceDto, detail);
CheckLocation(locationDto, balanceDto);
-
- var purchaseOrderDto= await _purchaseOrderAppService.GetByNumberAsync(labelDto.PoNumber).ConfigureAwait(false);
- purchaseOrderDto = await _purchaseOrderAppService.GetAsync(purchaseOrderDto.Id).ConfigureAwait(false);
-
purchaseReturnRequest.AsnNumber = labelDto.AsnNumber;
purchaseReturnRequest.RpNumber = labelDto.RpNumber;
purchaseReturnRequest.ReturnTime=DateTime.Now;
@@ -193,13 +195,21 @@ public class PurchaseReturnRequestAppService :
#region 校验
+ private void CheckPurchaseOrder(PurchaseOrderDTO purchaseOrderDto, InventoryLabelDto labelDto)
+ {
+ if (purchaseOrderDto == null)
+ {
+ throw new UserFriendlyException($"采购订单编号为【{labelDto.PoNumber}】不存在");
+ }
+ }
+
///
/// 校验库位
///
///
///
///
- private static void CheckLocation(LocationDTO locationDto, BalanceDTO balanceDto)
+ private void CheckLocation(LocationDTO locationDto, BalanceDTO balanceDto)
{
if (locationDto == null)
{
@@ -213,7 +223,7 @@ public class PurchaseReturnRequestAppService :
///
///
///
- private static void CheckBalance(BalanceDTO balanceDto, PurchaseReturnRequestDetail detail)
+ private void CheckBalance(BalanceDTO balanceDto, PurchaseReturnRequestDetail detail)
{
if (balanceDto == null)
{
@@ -227,7 +237,7 @@ public class PurchaseReturnRequestAppService :
///
///
///
- private static void CheckLabel(InventoryLabelDto labelDto, PurchaseReturnRequestDetail detail)
+ private void CheckLabel(InventoryLabelDto labelDto, PurchaseReturnRequestDetail detail)
{
if (labelDto == null)
{