Browse Source

修改 自动叫料 人工发料

集成Redis
郑勃旭 2 years ago
parent
commit
eada31f702
  1. 6
      be/DataExchange/Iac/Win_in.Sfs.Wms.DataExchange.Application.Iac.Qad/PurchaseOrderAppService.cs
  2. 94
      be/Hosts/Wms.Host/Win_in.Sfs.Wms.Store.HttpApi.Host/scripts/db.Microsoft.EntityFrameworkCore.SqlServer.StoreDbContext.sql
  3. 2
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/PurchaseReceiptJobController.cs
  4. 3
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/IssueNoteController.cs
  5. 7
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/Balances/BalanceManager.cs
  6. 6
      be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Inventory/EnumTransSubType.cs
  7. 2
      be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumMaterialRequestType.cs
  8. 8
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/PurchaseReceiptJobs/IPurchaseReceiptJobAppService.cs
  9. 77
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/PurchaseReceiptJobs/PurchaseReceiptJobAppService.cs
  10. 10
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/IssueNoteAppService.cs
  11. 97
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Orders/PurchaseOrders/PurchaseOrderAppService.cs
  12. 17
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Plans/CountPlans/CountPlanAppService.cs
  13. 40
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/MaterialRequestAppService.cs
  14. 13
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/IssueJobManager.cs
  15. 18
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Plans/CountPlans/CountPlanManager.cs
  16. 27
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/MaterialRequestManager.cs
  17. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/MaterialRequestEventHandler.cs
  18. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/Note/IssueNoteEventHandler.cs

6
be/DataExchange/Iac/Win_in.Sfs.Wms.DataExchange.Application.Iac.Qad/PurchaseOrderAppService.cs

@ -22,7 +22,7 @@ namespace Win_in.Sfs.Wms.DataExchange.Application.Iac.Qad;
[ApiExplorerSettings(GroupName = SwaggerGroupConsts.WmsWebApi)] [ApiExplorerSettings(GroupName = SwaggerGroupConsts.WmsWebApi)]
public class PurchaseOrderAppService : ApplicationService, IPurchaseOrderAppService public class PurchaseOrderAppService : ApplicationService, IPurchaseOrderAppService
{ {
private readonly Store.Application.Contracts.IPurchaseOrderAppService _purchaseOrderAppService; //private readonly Store.Application.Contracts.IPurchaseOrderAppService _purchaseOrderAppService;
private readonly IPo_mstrRepository _po_mstrRepository; private readonly IPo_mstrRepository _po_mstrRepository;
@ -34,7 +34,7 @@ public class PurchaseOrderAppService : ApplicationService, IPurchaseOrderAppServ
IConfiguration configuration IConfiguration configuration
) )
{ {
_purchaseOrderAppService = purchaseOrderAppService; //_purchaseOrderAppService = purchaseOrderAppService;
_po_mstrRepository = po_mstrRepository; _po_mstrRepository = po_mstrRepository;
_configuration = configuration; _configuration = configuration;
} }
@ -77,7 +77,7 @@ public class PurchaseOrderAppService : ApplicationService, IPurchaseOrderAppServ
targetObj.ContactEmail = ""; targetObj.ContactEmail = "";
#endregion #endregion
await _purchaseOrderAppService.UpsertAsync(targetObj).ConfigureAwait(false); //await _purchaseOrderAppService.UpsertAsync(targetObj).ConfigureAwait(false);
} }
catch (Exception ex) catch (Exception ex)
{ {

94
be/Hosts/Wms.Host/Win_in.Sfs.Wms.Store.HttpApi.Host/scripts/db.Microsoft.EntityFrameworkCore.SqlServer.StoreDbContext.sql

@ -5614,4 +5614,96 @@ CREATE UNIQUE INDEX [IX_Store_ScrapNote_Number] ON [Store_ScrapNote] ([Number])
CREATE INDEX [IX_Store_ScrapNoteDetail_MasterID] ON [Store_ScrapNoteDetail] ([MasterID]) CREATE INDEX [IX_Store_ScrapNoteDetail_MasterID] ON [Store_ScrapNoteDetail] ([MasterID])
CREATE UNIQUE INDEX [IX_Store_ScrapNoteDetail_Number_ItemCode_FromPackingCode_FromLocationCode_ToLocationCode_FromLot_FromStatus] ON [Store_ScrapNoteDetail] ([Number], [ItemCode], [FromPackingCode], [FromLocationCode], [ToLocationCode], [ CREATE UNIQUE INDEX [IX_Store_ScrapNoteDetail_Number_ItemCode_FromPackingCode_FromLocationCode_ToLocationCode_FromLot_FromStatus] ON [Store_ScrapNoteDetail] ([Number], [ItemCode], [FromPackingCode], [FromLocationCode], [ToLocationCode], [FromLot], [FromStatus]) WHERE [FromPackingCode] IS NOT NULL AND [FromLot] IS NOT NULL
CREATE UNIQUE INDEX [IX_Store_ScrapRequest_Number] ON [Store_ScrapRequest] ([Number])
CREATE INDEX [IX_Store_ScrapRequestDetail_MasterID] ON [Store_ScrapRequestDetail] ([MasterID])
CREATE UNIQUE INDEX [IX_Store_ScrapRequestDetail_Number_ItemCode_LocationCode] ON [Store_ScrapRequestDetail] ([Number], [ItemCode], [LocationCode])
CREATE UNIQUE INDEX [IX_Store_SupplierAsn_Number] ON [Store_SupplierAsn] ([Number])
CREATE INDEX [IX_Store_SupplierAsn_SupplierCode] ON [Store_SupplierAsn] ([SupplierCode])
CREATE INDEX [IX_Store_SupplierAsnDetail_MasterID] ON [Store_SupplierAsnDetail] ([MasterID])
CREATE UNIQUE INDEX [IX_Store_SupplierAsnDetail_Number_ItemCode_PackingCode] ON [Store_SupplierAsnDetail] ([Number], [ItemCode], [PackingCode])
CREATE UNIQUE INDEX [IX_Store_TransferNote_Number] ON [Store_TransferNote] ([Number])
CREATE INDEX [IX_Store_TransferNoteDetail_MasterID] ON [Store_TransferNoteDetail] ([MasterID])
CREATE UNIQUE INDEX [IX_Store_TransferNoteDetail_Number_FromPackingCode_FromLocationCode_ToLocationCode_FromStatus_ToStatus] ON [Store_TransferNoteDetail] ([Number], [FromPackingCode], [FromLocationCode], [ToLocationCode], [FromStatus], [ToStatus]) WHERE [FromPackingCode] IS NOT NULL
CREATE UNIQUE INDEX [IX_Store_TransferRequest_Number] ON [Store_TransferRequest] ([Number])
CREATE INDEX [IX_Store_TransferRequestDetail_MasterID] ON [Store_TransferRequestDetail] ([MasterID])
CREATE UNIQUE INDEX [IX_Store_UnplannedIssueNote_Number] ON [Store_UnplannedIssueNote] ([Number])
CREATE INDEX [IX_Store_UnplannedIssueNoteDetail_MasterID] ON [Store_UnplannedIssueNoteDetail] ([MasterID])
CREATE UNIQUE INDEX [IX_Store_UnplannedIssueNoteDetail_Number_PackingCode_ItemCode_Lot_Status] ON [Store_UnplannedIssueNoteDetail] ([Number], [PackingCode], [ItemCode], [Lot], [Status]) WHERE [Lot] IS NOT NULL
CREATE UNIQUE INDEX [IX_Store_UnplannedIssueRequest_Number] ON [Store_UnplannedIssueRequest] ([Number])
CREATE INDEX [IX_Store_UnplannedIssueRequestDetail_MasterID] ON [Store_UnplannedIssueRequestDetail] ([MasterID])
CREATE UNIQUE INDEX [IX_Store_UnplannedIssueRequestDetail_Number_PackingCode_ItemCode_Lot_Status] ON [Store_UnplannedIssueRequestDetail] ([Number], [PackingCode], [ItemCode], [Lot], [Status]) WHERE [Lot] IS NOT NULL
CREATE UNIQUE INDEX [IX_Store_UnplannedReceiptNote_Number] ON [Store_UnplannedReceiptNote] ([Number])
CREATE INDEX [IX_Store_UnplannedReceiptNoteDetail_MasterID] ON [Store_UnplannedReceiptNoteDetail] ([MasterID])
CREATE UNIQUE INDEX [IX_Store_UnplannedReceiptNoteDetail_Number_PackingCode_ItemCode_Lot_Status] ON [Store_UnplannedReceiptNoteDetail] ([Number], [PackingCode], [ItemCode], [Lot], [Status]) WHERE [Lot] IS NOT NULL
CREATE UNIQUE INDEX [IX_Store_UnplannedReceiptRequest_Number] ON [Store_UnplannedReceiptRequest] ([Number])
CREATE INDEX [IX_Store_UnplannedReceiptRequestDetail_MasterID] ON [Store_UnplannedReceiptRequestDetail] ([MasterID])
CREATE UNIQUE INDEX [IX_Store_UnplannedReceiptRequestDetail_Number_PackingCode_ItemCode_Lot_Status] ON [Store_UnplannedReceiptRequestDetail] ([Number], [PackingCode], [ItemCode], [Lot], [Status]) WHERE [Lot] IS NOT NULL
CREATE UNIQUE INDEX [IX_Store_WarehouseTransferNote_Number] ON [Store_WarehouseTransferNote] ([Number])
CREATE INDEX [IX_Store_WarehouseTransferNoteDetail_MasterID] ON [Store_WarehouseTransferNoteDetail] ([MasterID])
CREATE UNIQUE INDEX [IX_Store_WarehouseTransferNoteDetail_Number_FromPackingCode_FromLocationCode_ToLocationCode] ON [Store_WarehouseTransferNoteDetail] ([Number], [FromPackingCode], [FromLocationCode], [ToLocationCode]) WHERE [FromPackingCode] IS NOT NULL
CREATE UNIQUE INDEX [IX_Store_WorkOrder_Number] ON [Store_WorkOrder] ([Number])
CREATE INDEX [IX_Store_WorkOrderDetail_MasterID] ON [Store_WorkOrderDetail] ([MasterID])
CREATE UNIQUE INDEX [IX_Store_WorkOrderDetail_Number_ItemCode] ON [Store_WorkOrderDetail] ([Number], [ItemCode])

2
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/PurchaseReceiptJobController.cs

@ -53,7 +53,7 @@ public class PurchaseReceiptJobController : AbpController
[HttpGet("{id}")] [HttpGet("{id}")]
public virtual async Task<ActionResult<PurchaseReceiptJobDTO>> GetAsync(Guid id) public virtual async Task<ActionResult<PurchaseReceiptJobDTO>> GetAsync(Guid id)
{ {
var result = await _purchaseReceiptJobAppService.GetNoCacheAsync(id).ConfigureAwait(false); var result = await _purchaseReceiptJobAppService.GetAsync(id).ConfigureAwait(false);
var supplier = await _supplierAppService.GetByCodeAsync(result.SupplierCode).ConfigureAwait(false); var supplier = await _supplierAppService.GetByCodeAsync(result.SupplierCode).ConfigureAwait(false);
result.SupplierName = supplier.Name; result.SupplierName = supplier.Name;

3
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/IssueNoteController.cs

@ -33,7 +33,7 @@ public class IssueNoteController : AbpController
[HttpPost("")] [HttpPost("")]
public virtual async Task CreateAsync([FromBody] IssueNoteEditInput input) public virtual async Task CreateAsync([FromBody] IssueNoteEditInput input)
{ {
input.RequestType = EnumMaterialRequestType.Direct_Issue.ToString(); input.RequestType = EnumMaterialRequestType.Issue_Direct.ToString();
input.Details.ForEach(p => input.Details.ForEach(p =>
{ {
@ -54,5 +54,4 @@ public class IssueNoteController : AbpController
{ {
return await _issueNoteAppService.ConfirmAsync(id).ConfigureAwait(false); return await _issueNoteAppService.ConfirmAsync(id).ConfigureAwait(false);
} }
} }

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

@ -423,9 +423,12 @@ public class BalanceManager : DomainService, IBalanceManager
expression = expression.And(p => p.ExpireDate > DateTime.Now); expression = expression.And(p => p.ExpireDate > DateTime.Now);
} }
//筛选有效库区 //筛选有效库区
if (validLocationAreas.Any()) if (validLocationAreas.Any() )
{ {
expression = expression.And(p => validLocationAreas.Contains(p.LocationArea)); if (!string.IsNullOrEmpty(validLocationAreas[0]))
{
expression = expression.And(p => validLocationAreas.Contains(p.LocationArea));
}
} }
var allBalances = await var allBalances = await
(await _balanceRepository.GetDbSetAsync().ConfigureAwait(false)) (await _balanceRepository.GetDbSetAsync().ConfigureAwait(false))

6
be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Inventory/EnumTransSubType.cs

@ -127,6 +127,12 @@ public enum EnumTransSubType
[Display(Name = "安全库存拉动")] [Display(Name = "安全库存拉动")]
Issue_SafetyStock = 1504, Issue_SafetyStock = 1504,
/// <summary>
/// 直接发料
/// </summary>
[Display(Name = "直接发料")]
Issue_Direct = 1505,
/// <summary> /// <summary>
/// 标准发货 /// 标准发货
/// </summary> /// </summary>

2
be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumMaterialRequestType.cs

@ -28,5 +28,5 @@ public enum EnumMaterialRequestType
//Issue_SfaetyStock = 1504, //Issue_SfaetyStock = 1504,
[Display(Name = "直接发料")] [Display(Name = "直接发料")]
Direct_Issue = 1505 Issue_Direct = 1505
} }

8
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/PurchaseReceiptJobs/IPurchaseReceiptJobAppService.cs

@ -40,12 +40,4 @@ public interface IPurchaseReceiptJobAppService
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
Task<List<PurchaseReceiptJobDetailDTO>> SetInspectWithNotInspectAsync(Guid id); Task<List<PurchaseReceiptJobDetailDTO>> SetInspectWithNotInspectAsync(Guid id);
/// <summary>
/// 按Id获取实体 不走缓存
/// </summary>
/// <param name="id">实体Id</param>
/// <param name="noCache"></param>
/// <returns></returns>
Task<PurchaseReceiptJobDTO> GetNoCacheAsync(Guid id);
} }

77
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/PurchaseReceiptJobs/PurchaseReceiptJobAppService.cs

@ -5,7 +5,6 @@ using System.Text.Json;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.FileStorage.Application.Contracts; using Win_in.Sfs.FileStorage.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
@ -22,31 +21,21 @@ public class PurchaseReceiptJobAppService :
, IPurchaseReceiptJobAppService , IPurchaseReceiptJobAppService
{ {
private readonly IFileAppService _fileAppService; private readonly IFileAppService _fileAppService;
private readonly IInspectJobManager _inspectJobManager;
private readonly IInspectRequestAppService _inspectRequestAppService;
private readonly IPurchaseReceiptJobManager _purchaseReceiptJobManager; private readonly IPurchaseReceiptJobManager _purchaseReceiptJobManager;
private readonly IPurchaseReceiptNoteAppService _purchaseReceiptNoteAppService;
/// <summary> /// <summary>
/// </summary> /// </summary>
/// <param name="repository"></param> /// <param name="repository"></param>
/// <param name="inspectJobManager"></param>
/// <param name="purchaseReceiptJobManager"></param> /// <param name="purchaseReceiptJobManager"></param>
/// <param name="purchaseReceiptNoteAppService"></param> /// <param name="purchaseReceiptNoteAppService"></param>
/// <param name="inspectRequestAppService"></param>
/// <param name="fileAppService"></param> /// <param name="fileAppService"></param>
public PurchaseReceiptJobAppService(IPurchaseReceiptJobRepository repository, public PurchaseReceiptJobAppService(IPurchaseReceiptJobRepository repository,
IInspectJobManager inspectJobManager,
IPurchaseReceiptJobManager purchaseReceiptJobManager, IPurchaseReceiptJobManager purchaseReceiptJobManager,
IPurchaseReceiptNoteAppService purchaseReceiptNoteAppService, IPurchaseReceiptNoteAppService purchaseReceiptNoteAppService,
IInspectRequestAppService inspectRequestAppService,
IFileAppService fileAppService) : base(repository, purchaseReceiptJobManager) IFileAppService fileAppService) : base(repository, purchaseReceiptJobManager)
{ {
_purchaseReceiptJobManager = purchaseReceiptJobManager; _purchaseReceiptJobManager = purchaseReceiptJobManager;
_purchaseReceiptNoteAppService = purchaseReceiptNoteAppService;
_inspectRequestAppService = inspectRequestAppService;
_fileAppService = fileAppService; _fileAppService = fileAppService;
_inspectJobManager = inspectJobManager;
} }
#region 东阳使用 #region 东阳使用
@ -151,49 +140,38 @@ public class PurchaseReceiptJobAppService :
var dict = await _fileAppService.CreateManyHasDictAsync(input.FilesList).ConfigureAwait(false); var dict = await _fileAppService.CreateManyHasDictAsync(input.FilesList).ConfigureAwait(false);
detail.InspectPhotoJson = JsonSerializer.Serialize(dict); detail.InspectPhotoJson = JsonSerializer.Serialize(dict);
} }
else
if (detail != null)
{ {
detail.FailedReason = input.FailedReason; detail.InspectPhotoJson = string.Empty;
detail.MassDefect = input.MassDefect;
detail.PurchaseReceiptInspectStatus = input.PurchaseReceiptInspectStatus;
detail.HandledLot = detail.RecommendLot;
detail.HandledSupplierBatch = detail.RecommendSupplierBatch;
detail.HandledArriveDate = detail.RecommendArriveDate;
detail.HandledProduceDate = detail.RecommendProduceDate;
detail.HandledExpireDate = detail.RecommendExpireDate;
detail.HandledToLocationArea=detail.RecommendToLocationArea;
detail.HandledToLocationGroup=detail.RecommendToLocationGroup;
detail.HandledContainerCode = detail.RecommendContainerCode;
detail.HandledToLocationCode = detail.RecommendToLocationCode;
detail.HandledToLocationErpCode = detail.RecommendToLocationErpCode;
detail.HandledToWarehouseCode = detail.RecommendToWarehouseCode;
detail.HandledPackingCode = detail.RecommendPackingCode;
detail.HandledQty = detail.RecommendQty;
} }
detail.FailedReason = input.FailedReason;
detail.MassDefect = input.MassDefect;
detail.PurchaseReceiptInspectStatus = input.PurchaseReceiptInspectStatus;
detail.HandledLot = detail.RecommendLot;
detail.HandledSupplierBatch = detail.RecommendSupplierBatch;
detail.HandledArriveDate = detail.RecommendArriveDate;
detail.HandledProduceDate = detail.RecommendProduceDate;
detail.HandledExpireDate = detail.RecommendExpireDate;
detail.HandledToLocationArea = detail.RecommendToLocationArea;
detail.HandledToLocationGroup = detail.RecommendToLocationGroup;
detail.HandledContainerCode = detail.RecommendContainerCode;
detail.HandledToLocationCode = detail.RecommendToLocationCode;
detail.HandledToLocationErpCode = detail.RecommendToLocationErpCode;
detail.HandledToWarehouseCode = detail.RecommendToWarehouseCode;
detail.HandledPackingCode = detail.RecommendPackingCode;
detail.HandledQty = detail.RecommendQty;
var entity = await _repository.UpdateAsync(job).ConfigureAwait(false); var entity = await _repository.UpdateAsync(job).ConfigureAwait(false);
return ObjectMapper.Map<PurchaseReceiptJobDetail, PurchaseReceiptJobDetailDTO>( return ObjectMapper.Map<PurchaseReceiptJobDetail, PurchaseReceiptJobDetailDTO>(
entity.Details.Find(p => p.Id == input.DetailId)); entity.Details.Find(p => p.Id == input.DetailId));
} }
/// <summary>
/// 按Id获取实体 不走缓存
/// </summary>
/// <param name="id">实体Id</param>
/// <param name="noCache"></param>
/// <returns></returns>
[HttpGet("no-cache/{id}")]
public virtual async Task<PurchaseReceiptJobDTO> GetNoCacheAsync(Guid id)
{
var entity= await _repository.GetAsync(id).ConfigureAwait(false);
return ObjectMapper.Map<PurchaseReceiptJob, PurchaseReceiptJobDTO>(entity);
}
#endregion #endregion
/// <summary> /// <summary>
/// 取消收货
/// </summary> /// </summary>
/// <param name="purchaseReceiptRequestNumber"></param> /// <param name="purchaseReceiptRequestNumber"></param>
[HttpPost("cancel-by-request/{purchaseReceiptRequestNumber}")] [HttpPost("cancel-by-request/{purchaseReceiptRequestNumber}")]
@ -207,6 +185,21 @@ public class PurchaseReceiptJobAppService :
} }
} }
///// <summary>
///// 取消请求
///// </summary>
///// <param name="purchaseReceiptRequestNumber"></param>
//[HttpPost("cancel-by-request/{purchaseReceiptRequestNumber}")]
//public virtual async Task CancelByPurchaseReceiptRequestAsync(string purchaseReceiptRequestNumber)
//{
// var entities = await _repository
// .GetListAsync(p => p.PurchaseReceiptRequestNumber == purchaseReceiptRequestNumber).ConfigureAwait(false);
// foreach (var entity in entities)
// {
// await _purchaseReceiptJobManager.CancelAsync(entity).ConfigureAwait(false);
// }
//}
/* /*
/// <summary> /// <summary>
/// 承接收货任务 /// 承接收货任务

10
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/IssueNoteAppService.cs

@ -8,7 +8,9 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain; using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared; using Win_in.Sfs.Wms.Store.Domain.Shared;
@ -50,9 +52,11 @@ public class IssueNoteAppService :
[HttpPost("confirm/{id}")] [HttpPost("confirm/{id}")]
public virtual async Task<IssueNoteDTO> ConfirmAsync(Guid id) public virtual async Task<IssueNoteDTO> ConfirmAsync(Guid id)
{ {
var entity = await _issueNoteManager.ConfirmAsync(id).ConfigureAwait(false); var issueNote= await _repository.GetAsync(id).ConfigureAwait(false);
var dto = ObjectMapper.Map<IssueNote, IssueNoteDTO>(entity); issueNote.Confirmed = true;
return dto; issueNote=await _repository.UpdateAsync(issueNote).ConfigureAwait(false);
await LocalEventBus.PublishAsync(new SfsConfirmedEntityEventData<IssueNote>(issueNote), false).ConfigureAwait(false);
return ObjectMapper.Map<IssueNote, IssueNoteDTO>(issueNote);
} }
[HttpPost("confirm-by-number/{number}")] [HttpPost("confirm-by-number/{number}")]

97
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Orders/PurchaseOrders/PurchaseOrderAppService.cs

@ -3,23 +3,15 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using DocumentFormat.OpenXml.Office2010.ExcelAc;
using DocumentFormat.OpenXml.Spreadsheet;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Uow;
using Volo.Abp.Users;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain; using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared; using Win_in.Sfs.Wms.Store.Domain.Shared;
using PurchaseOrderDetail = Win_in.Sfs.Wms.Store.Domain.PurchaseOrderDetail;
namespace Win_in.Sfs.Wms.Store.Application; namespace Win_in.Sfs.Wms.Store.Application;
@ -34,7 +26,7 @@ public class PurchaseOrderAppService :
private readonly IPurchaseOrderManager _purchaseOrderManager; private readonly IPurchaseOrderManager _purchaseOrderManager;
private readonly ISupplierAppService _supplierAppService; private readonly ISupplierAppService _supplierAppService;
private readonly IItemBasicAppService _itemBasicAppService; private readonly IItemBasicAppService _itemBasicAppService;
public PurchaseOrderAppService( public PurchaseOrderAppService(
IPurchaseOrderRepository repository, IPurchaseOrderRepository repository,
IPurchaseOrderManager purchaseOrderManager, IPurchaseOrderManager purchaseOrderManager,
@ -53,30 +45,31 @@ public class PurchaseOrderAppService :
#region 东阳使用 #region 东阳使用
/// <summary> /// <summary>
/// 用来重写 导入数据时可以加工数据 /// 用来重写 导入数据时可以加工数据
/// </summary> /// </summary>
/// <param name="dictionary"></param> /// <param name="dictionary"></param>
/// <returns></returns> /// <returns></returns>
protected override async Task<Dictionary<PurchaseOrder, EntityState>> ImportProcessingEntityAsync( protected override async Task<Dictionary<PurchaseOrder, EntityState>> ImportProcessingEntityAsync(
Dictionary<PurchaseOrder, EntityState> dictionary) Dictionary<PurchaseOrder, EntityState> dictionary)
{ {
var addList= dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key); var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key);
foreach (var purchaseOrder in addList) foreach (var purchaseOrder in addList)
{ {
purchaseOrder.CreatorId = CurrentUser.Id; purchaseOrder.CreatorId = CurrentUser.Id;
purchaseOrder.Worker = CurrentUser.Name; purchaseOrder.Worker = CurrentUser.Name;
var supplierDto=await _supplierAppService.GetByCodeAsync(purchaseOrder.SupplierCode).ConfigureAwait(false); var supplierDto =
await _supplierAppService.GetByCodeAsync(purchaseOrder.SupplierCode).ConfigureAwait(false);
purchaseOrder.SupplierCode = supplierDto.Code; purchaseOrder.SupplierCode = supplierDto.Code;
purchaseOrder.SupplierAddress = supplierDto.Address; purchaseOrder.SupplierAddress = supplierDto.Address;
purchaseOrder.SupplierName= supplierDto.Name; purchaseOrder.SupplierName = supplierDto.Name;
foreach (var detail in purchaseOrder.Details) foreach (var detail in purchaseOrder.Details)
{ {
var itemBasicDto= await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false); var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
detail.ItemName= itemBasicDto.Name; detail.ItemName = itemBasicDto.Name;
detail.ItemDesc1 = itemBasicDto.Desc1; detail.ItemDesc1 = itemBasicDto.Desc1;
detail.ItemDesc2 = itemBasicDto.Desc2; detail.ItemDesc2 = itemBasicDto.Desc2;
} }
@ -87,10 +80,8 @@ public class PurchaseOrderAppService :
#endregion #endregion
/// <summary> /// <summary>
/// 【创建】采购订单 /// 【创建】采购订单
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
@ -111,7 +102,7 @@ public class PurchaseOrderAppService :
} }
/// <summary> /// <summary>
/// 【批量创建】采购订单 /// 【批量创建】采购订单
/// </summary> /// </summary>
/// <param name="inputs"></param> /// <param name="inputs"></param>
/// <returns></returns> /// <returns></returns>
@ -163,8 +154,6 @@ public class PurchaseOrderAppService :
await _repository.UpdateAsync(entity).ConfigureAwait(false); await _repository.UpdateAsync(entity).ConfigureAwait(false);
} }
#region Function
[HttpPost("complete/{number}")] [HttpPost("complete/{number}")]
public async Task<PurchaseOrderDTO> CompleteAsync(string number) public async Task<PurchaseOrderDTO> CompleteAsync(string number)
{ {
@ -173,9 +162,6 @@ public class PurchaseOrderAppService :
} }
[HttpPost("cancel/{id}")] [HttpPost("cancel/{id}")]
#endregion
[HttpPost("{id}/detail/open/{detailId}")] [HttpPost("{id}/detail/open/{detailId}")]
public virtual async Task OpenDetailAsync(Guid id, Guid detailId) public virtual async Task OpenDetailAsync(Guid id, Guid detailId)
{ {
@ -188,13 +174,6 @@ public class PurchaseOrderAppService :
await _purchaseOrderManager.CloseDetailAsync(id, detailId).ConfigureAwait(false); await _purchaseOrderManager.CloseDetailAsync(id, detailId).ConfigureAwait(false);
} }
[HttpPost("check-status")]
public virtual async Task CheckStatusAsync(string number)
{
await Task.CompletedTask.ConfigureAwait(false);
throw new NotImplementedException();
}
[HttpPost("upsert")] [HttpPost("upsert")]
public virtual async Task UpsertAsync(PurchaseOrderEditInput input) public virtual async Task UpsertAsync(PurchaseOrderEditInput input)
{ {
@ -202,6 +181,27 @@ public class PurchaseOrderAppService :
await _repository.UpsertAsync(entity).ConfigureAwait(false); await _repository.UpsertAsync(entity).ConfigureAwait(false);
} }
[HttpGet("get-list-by-item-code")]
public virtual async Task<List<PurchaseOrderDTO>> GetListByItemCodeAsync(string itemCode)
{
var entitys = await _repository.GetListAsync(p => p.Details.Any(y => y.ItemCode == itemCode))
.ConfigureAwait(false);
var dtos = ObjectMapper.Map<List<PurchaseOrder>, List<PurchaseOrderDTO>>(entitys);
return dtos;
}
#region 校验
[HttpPost("check-status")]
public virtual async Task CheckStatusAsync(string number)
{
await Task.CompletedTask.ConfigureAwait(false);
throw new NotImplementedException();
}
protected virtual async Task CheckImportInputBusinessAsync(PurchaseOrderImportInput importInput, protected virtual async Task CheckImportInputBusinessAsync(PurchaseOrderImportInput importInput,
EnumImportMethod importMethod, List<ValidationResult> validationRresult) EnumImportMethod importMethod, List<ValidationResult> validationRresult)
{ {
@ -231,29 +231,20 @@ public class PurchaseOrderAppService :
Check.NotNull(item, "供应商代码", "供应商不存在"); Check.NotNull(item, "供应商代码", "供应商不存在");
} }
protected override async Task<PurchaseOrder> GetEntityAsync(PurchaseOrderImportInput importInput) #endregion
{
return await _repository.FindAsync(t => t.Number == importInput.Number).ConfigureAwait(false);
}
protected virtual async Task ImportDataAsync(List<PurchaseOrder> entites, List<PurchaseOrder> deleteEntities)
{
await _purchaseOrderManager.ImportDataAsync(entites, deleteEntities).ConfigureAwait(false);
}
protected override Func<PurchaseOrderImportInput, object> GetEntityExpression()
{
return t => t.Number;
}
[HttpGet("get-list-by-item-code")] //protected override async Task<PurchaseOrder> GetEntityAsync(PurchaseOrderImportInput importInput)
public virtual async Task<List<PurchaseOrderDTO>> GetListByItemCodeAsync(string itemCode) //{
{ // return await _repository.FindAsync(t => t.Number == importInput.Number).ConfigureAwait(false);
var entitys = await _repository.GetListAsync(p => p.Details.Any(y => y.ItemCode == itemCode)) //}
.ConfigureAwait(false);
var dtos = ObjectMapper.Map<List<PurchaseOrder>, List<PurchaseOrderDTO>>(entitys); //protected virtual async Task ImportDataAsync(List<PurchaseOrder> entites, List<PurchaseOrder> deleteEntities)
//{
// await _purchaseOrderManager.ImportDataAsync(entites, deleteEntities).ConfigureAwait(false);
//}
return dtos; //protected override Func<PurchaseOrderImportInput, object> GetEntityExpression()
} //{
// return t => t.Number;
//}
} }

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

@ -121,23 +121,6 @@ public class CountPlanAppService :
await _countPlanManager.CompleteAsync(id, type).ConfigureAwait(false); await _countPlanManager.CompleteAsync(id, type).ConfigureAwait(false);
} }
/*
/// <summary>
/// 校正库存
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpPost("adjust/{id}")]
public virtual async Task AdjustAsync(Guid id)
{
var entity = await _repository.FindAsync(id);
Check.NotNull(entity, EntityClassName);
await _countPlanManager.AdjustAsync(entity);
}
*/
[HttpPost("check-status")] [HttpPost("check-status")]
public virtual async Task CheckStatusAsync(string number) public virtual async Task CheckStatusAsync(string number)
{ {

40
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/MaterialRequestAppService.cs

@ -42,7 +42,7 @@ public class MaterialRequestAppService : SfsStoreRequestAppServiceBase<MaterialR
private readonly ILocationAppService _locationAppService; private readonly ILocationAppService _locationAppService;
private readonly IItemBasicAppService _itemBasicAppService; private readonly IItemBasicAppService _itemBasicAppService;
private readonly IProductionLineAppService _productionLineAppService;
public MaterialRequestAppService( public MaterialRequestAppService(
IMaterialRequestRepository repository, IMaterialRequestRepository repository,
IMaterialRequestManager materialRequestManager, IMaterialRequestManager materialRequestManager,
@ -50,7 +50,8 @@ public class MaterialRequestAppService : SfsStoreRequestAppServiceBase<MaterialR
IItemStoreRelationAppService itemStoreRelationApp, IItemStoreRelationAppService itemStoreRelationApp,
IAreaAppService areaApp IAreaAppService areaApp
, ILocationAppService locationAppService , ILocationAppService locationAppService
, IItemBasicAppService itemBasicAppService) , IItemBasicAppService itemBasicAppService,
IProductionLineAppService productionLineAppService)
: base(repository, materialRequestManager) : base(repository, materialRequestManager)
{ {
_materialRequestManager = materialRequestManager; _materialRequestManager = materialRequestManager;
@ -59,6 +60,7 @@ public class MaterialRequestAppService : SfsStoreRequestAppServiceBase<MaterialR
_areaApp = areaApp; _areaApp = areaApp;
_locationAppService = locationAppService; _locationAppService = locationAppService;
_itemBasicAppService = itemBasicAppService; _itemBasicAppService = itemBasicAppService;
_productionLineAppService = productionLineAppService;
} }
#region 东阳使用 #region 东阳使用
@ -170,19 +172,35 @@ public class MaterialRequestAppService : SfsStoreRequestAppServiceBase<MaterialR
} }
} }
foreach (var item in input.Details) //赋值生产线
{
var location = await LocationAclService.GetByCodeAsync(item.ToLocationCode).ConfigureAwait(false);
item.ProdLine = location.LocationGroupCode;
input.ProdLine = location.LocationGroupCode;
input.Worker = input.Worker;
}
input.AutoSubmit = true; input.AutoSubmit = true;
input.AutoAgree = true; input.AutoAgree = true;
input.AutoHandle = true; input.AutoHandle = true;
foreach (var detailInput in input.Details)
{
var toLocationDto= await _locationAppService.GetByCodeAsync(detailInput.ToLocationCode).ConfigureAwait(false);
var productionLineDto=await _productionLineAppService.GetByLocationGroupCodeAsync(toLocationDto.LocationGroupCode).ConfigureAwait(false);
detailInput.ToLocationCode = toLocationDto.ErpLocationCode;
if (productionLineDto != null)
{
detailInput.ProdLine = productionLineDto.Code;
}
}
var entity = ObjectMapper.Map<MaterialRequestEditInput, MaterialRequest>(input); var entity = ObjectMapper.Map<MaterialRequestEditInput, MaterialRequest>(input);
foreach (var detail in entity.Details)
{
var toLocationDto = await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false);
var productionLineDto = await _productionLineAppService.GetByLocationGroupCodeAsync(toLocationDto.LocationGroupCode).ConfigureAwait(false);
detail.ToLocationArea= toLocationDto.AreaCode;
detail.ToLocationErpCode = toLocationDto.ErpLocationCode;
detail.ToLocationGroup = toLocationDto.LocationGroupCode;
detail.ToWarehouseCode= toLocationDto.WarehouseCode;
}
entity.UseOnTheWayLocation = true;
var result = await _materialRequestManager.CreateBynNumberAsync(entity).ConfigureAwait(false); var result = await _materialRequestManager.CreateBynNumberAsync(entity).ConfigureAwait(false);
@ -372,7 +390,7 @@ public class MaterialRequestAppService : SfsStoreRequestAppServiceBase<MaterialR
protected async Task<ItemBasicDTO> CheckItemBasicAsync(MaterialRequestImportInput importInput, protected async Task<ItemBasicDTO> CheckItemBasicAsync(MaterialRequestImportInput importInput,
List<ValidationResult> validationRresult) List<ValidationResult> validationRresult)
{ {
var item = await ItemBasicAclService.GetByCodeAsync(importInput.ItemCode).ConfigureAwait(false); var item = await _itemBasicAppService.GetByCodeAsync(importInput.ItemCode).ConfigureAwait(false);
if (item == null) if (item == null)
{ {
validationRresult.Add(new ValidationResult($"物品代码{importInput.ItemCode}不存在", new[] { "物品代码" })); validationRresult.Add(new ValidationResult($"物品代码{importInput.ItemCode}不存在", new[] { "物品代码" }));

13
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/IssueJobManager.cs

@ -33,8 +33,17 @@ public class IssueJobManager : SfsJobManagerBase<IssueJob, IssueJobDetail>, IIss
foreach (var detail in input.Details) foreach (var detail in input.Details)
{ {
//发料子任务 赋值实际转移 //发料子任务 赋值实际转移
await entity.BuildDetail(detail.Id, detail.HandledFromLocationCode, detail.HandledFromLocationErpCode, detail.HandledFromWarehouseCode, await entity.BuildDetail(detail.Id,
detail.HandledQty, detail.HandledSupplierBatch, detail.HandledArriveDate, detail.HandledProduceDate, detail.HandledExpireDate, detail.HandledContainerCode, detail.HandledLot, detail.HandledFromLocationCode,
detail.HandledFromLocationErpCode,
detail.HandledFromWarehouseCode,
detail.HandledQty,
detail.HandledSupplierBatch,
detail.HandledArriveDate,
detail.HandledProduceDate,
detail.HandledExpireDate,
detail.HandledContainerCode,
detail.HandledLot,
detail.HandledPackingCode).ConfigureAwait(false); detail.HandledPackingCode).ConfigureAwait(false);
} }

18
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Plans/CountPlans/CountPlanManager.cs

@ -107,9 +107,11 @@ public class CountPlanManager : SfsStoreRequestManagerBase<CountPlan, CountPlanD
//零件查询 //零件查询
if (partCondition.Filters.Count > 0) if (partCondition.Filters.Count > 0)
{ {
SfsBaseDataRequestInputBase itemInput = new SfsBaseDataRequestInputBase(); var itemInput = new SfsBaseDataRequestInputBase
itemInput.Condition = partCondition; {
itemInput.MaxResultCount = 99999; Condition = partCondition,
MaxResultCount = 99999
};
var itemBaseList = await ItemBasicAppService.GetAllListByFilterAsync(itemInput, false).ConfigureAwait(false); var itemBaseList = await ItemBasicAppService.GetAllListByFilterAsync(itemInput, false).ConfigureAwait(false);
@ -119,16 +121,18 @@ public class CountPlanManager : SfsStoreRequestManagerBase<CountPlan, CountPlanD
//库位查询 //库位查询
if (locCondition.Filters.Count > 0) if (locCondition.Filters.Count > 0)
{ {
SfsBaseDataRequestInputBase locInput = new SfsBaseDataRequestInputBase(); var locInput = new SfsBaseDataRequestInputBase
locInput.Condition = locCondition; {
locInput.MaxResultCount = 99999; Condition = locCondition,
MaxResultCount = 99999
};
var locList = await LocationAppService.GetAllListByFilterAsync(locInput, false).ConfigureAwait(false); var locList = await LocationAppService.GetAllListByFilterAsync(locInput, false).ConfigureAwait(false);
//库位列表 //库位列表
selectLocationCodes = locList.Select(p => p.Code).Distinct().ToList(); selectLocationCodes = locList.Select(p => p.Code).Distinct().ToList();
} }
//状态查询 //状态查询
string statusStr = System.Text.Json.JsonSerializer.Serialize(selectStatusList.Select(p => (int)p).ToList()); var statusStr = System.Text.Json.JsonSerializer.Serialize(selectStatusList.Select(p => (int)p).ToList());
//最终的查询条件语句 //最终的查询条件语句
SfsInventoryRequestInputBase banlanceInput = new SfsInventoryRequestInputBase(); SfsInventoryRequestInputBase banlanceInput = new SfsInventoryRequestInputBase();

27
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/MaterialRequestManager.cs

@ -1,6 +1,9 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Event;
using static Win_in.Sfs.Wms.Store.Domain.Shared.StoreSettings;
namespace Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Domain;
@ -26,16 +29,13 @@ public class MaterialRequestManager
{ {
var number = string.IsNullOrEmpty(entity.Number) ? await GenerateNumberAsync(typeof(MaterialRequest).Name, entity.ActiveDate).ConfigureAwait(false) : entity.Number; var number = string.IsNullOrEmpty(entity.Number) ? await GenerateNumberAsync(typeof(MaterialRequest).Name, entity.ActiveDate).ConfigureAwait(false) : entity.Number;
entity.SetIdAndNumberWithDetails(GuidGenerator, number); entity.SetIdAndNumberWithDetails(GuidGenerator, number);
await PublishCreatedAsync(entity).ConfigureAwait(false); entity.Submit();
entity.Agree();
if (entity.AutoSubmit) entity.RequestStatus = EnumRequestStatus.Partial;
{ await LocalEventBus.PublishAsync(new SfsHandledEntityEventData<MaterialRequest>(entity), false)
return await SubmitAsync(entity).ConfigureAwait(false); .ConfigureAwait(false);
} await _repository.InsertAsync(entity).ConfigureAwait(false);
else return entity;
{
return await Repository.InsertAsync(entity).ConfigureAwait(false);
}
} }
@ -128,6 +128,13 @@ public class MaterialRequestManager
oldEntity.ReplaceDetail(newDetail.Id, newDetail); oldEntity.ReplaceDetail(newDetail.Id, newDetail);
} }
var flag=oldEntity.Details.Any(p => p.ReceivedQty < p.Qty);//还有补料完 没收到的货
if (!flag)
{
oldEntity.Complete();
}
await Repository.UpdateAsync(oldEntity).ConfigureAwait(false); await Repository.UpdateAsync(oldEntity).ConfigureAwait(false);
} }

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

@ -214,7 +214,10 @@ public class MaterialRequestEventHandler
var detail = await BuildIssueJobDetailAsync(materialRequestDetail, recommend, toLocationGroupCode).ConfigureAwait(false); var detail = await BuildIssueJobDetailAsync(materialRequestDetail, recommend, toLocationGroupCode).ConfigureAwait(false);
if (materialRequest.UseOnTheWayLocation) if (materialRequest.UseOnTheWayLocation)
{ {
detail.OnTheWayLocationCode = await SettingManager.GetOrNullGlobalAsync(StoreSettings.Common.IssueOnTheWayLocation).ConfigureAwait(false); //获取在途库
var locationDto= await _locationAppService.GetFirstByTypeAsync(EnumLocationType.TRANSPORT).ConfigureAwait(false);
detail.OnTheWayLocationCode = locationDto.Code;
} }
jobDetails.Add(detail); jobDetails.Add(detail);
@ -251,6 +254,7 @@ public class MaterialRequestEventHandler
detail.ToLocationCode = materialRequestDetail.ToLocationCode; detail.ToLocationCode = materialRequestDetail.ToLocationCode;
detail.ToLocationErpCode = materialRequestDetail.ToLocationErpCode; detail.ToLocationErpCode = materialRequestDetail.ToLocationErpCode;
detail.ToLocationArea= materialRequestDetail.ToLocationArea;
detail.ToWarehouseCode = materialRequestDetail.ToWarehouseCode; detail.ToWarehouseCode = materialRequestDetail.ToWarehouseCode;
detail.ToLocationGroup = materialRequestDetail.ToLocationGroup; detail.ToLocationGroup = materialRequestDetail.ToLocationGroup;
//detail.Operation = //TODO //detail.Operation = //TODO

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/Note/IssueNoteEventHandler.cs

@ -46,7 +46,7 @@ public class IssueNoteEventHandler
var materialRequest = await _materialRequestManager.GetByNumberAsync(entity.RequestNumber).ConfigureAwait(false); var materialRequest = await _materialRequestManager.GetByNumberAsync(entity.RequestNumber).ConfigureAwait(false);
if (entity.RequestType != EnumMaterialRequestType.Direct_Issue.ToString()) if (entity.RequestType != EnumMaterialRequestType.Issue_Direct.ToString())
{ {
//更新叫料请求的已收数量 //更新叫料请求的已收数量
foreach (var materialRequestDetail in materialRequest.Details) foreach (var materialRequestDetail in materialRequest.Details)

Loading…
Cancel
Save