Browse Source

Merge remote-tracking branch 'origin/master'

集成Redis
贾荣国 2 years ago
parent
commit
d4cdffa702
  1. 7
      .vs/VSWorkspaceState.json
  2. 2
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/PullTask/PullTask.cs
  3. 2
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/PullTask/PullTaskDbContextModelCreatingExtensions.cs
  4. 14
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesOutConverter.cs
  5. 7
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/PullTaskConverter.cs
  6. 3
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/PullTaskReader.cs
  7. 6
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/ScrapConverter.cs
  8. 14
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/MesAgentModule.cs
  9. 1
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent.csproj
  10. 139
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Outgoing/ItemTransformNoteConverter.cs
  11. 4
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Outgoing/TyrpOutgoingBackgroundWorker.cs
  12. 1
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent.csproj
  13. 1
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain.Shared/Enums/EnumOutgoingDataType.cs
  14. 32
      be/Hosts/Win_in.Sfs.Wms.Dashboard.Host/Controllers/AsnTimeWindowController.cs
  15. 23
      be/Hosts/Win_in.Sfs.Wms.Dashboard.Host/Controllers/MaterialRequestController.cs
  16. 90
      be/Hosts/Win_in.Sfs.Wms.Dashboard.Host/Controllers/PlanAndActualController.cs
  17. 86
      be/Hosts/Win_in.Sfs.Wms.Dashboard.Host/Controllers/PurchaseReceiptController.cs
  18. 94
      be/Hosts/Wms.Host/Win_in.Sfs.Wms.Store.HttpApi.Host/scripts/db.Microsoft.EntityFrameworkCore.SqlServer.StoreDbContext.sql
  19. 45
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ItemTransformNote/ItemTransformNoteDetailExchangeDto.cs
  20. 30
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ItemTransformNote/ItemTransformNoteExchangeDto.cs
  21. 5
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/TransferLogs/TransferLogAppService.cs
  22. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Bases/Inputs/SfsStoreDetailWithFromToInputBase.cs
  23. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/PurchaseReceiptJobs/IPurchaseReceiptJobAppService.cs
  24. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/InspectNotes/IInspectNoteAppService.cs
  25. 5
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/ItemTransformNotes/DTOs/ItemTransformNoteDTO.cs
  26. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/ItemTransformNotes/DTOs/ItemTransformNoteDetailDTO.cs
  27. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Orders/PurchaseOrders/IPurchaseOrderAppService.cs
  28. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Plans/SupplierAsns/ISupplierAsnAppService.cs
  29. 15
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/PurchaseReceiptJobs/PurchaseReceiptJobAppService.cs
  30. 25
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/InspectNotes/InspectNoteAppService.cs
  31. 18
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Orders/PurchaseOrders/PurchaseOrderAppService.cs
  32. 9
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Plans/SupplierAsns/SupplierAsnAppService.cs
  33. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/InspectNotes/InspectNoteDetail.cs
  34. 40
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/IssueJobAutoMapperProfile.cs
  35. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/MaterialRequestEventHandler.cs
  36. 65
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/IssueNoteEventHandler.cs
  37. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/ScrapNoteEventHandler.cs

7
.vs/VSWorkspaceState.json

@ -0,0 +1,7 @@
{
"ExpandedNodes": [
""
],
"SelectedNode": "\\WZC2.sln",
"PreviewInSolutionExplorer": false
}

2
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/PullTask/PullTask.cs

@ -19,7 +19,7 @@ public class PullTask : Entity<long>
/// <summary> /// <summary>
/// 数量 /// 数量
/// </summary> /// </summary>
public decimal Planqty { get; set; } public string Planqty { get; set; }
/// <summary> /// <summary>
/// 单号 /// 单号
/// </summary> /// </summary>

2
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/PullTask/PullTaskDbContextModelCreatingExtensions.cs

@ -20,7 +20,7 @@ public static class PullTaskDbContextModelCreatingExtensions
b.Property(q => q.no).HasMaxLength(255); b.Property(q => q.no).HasMaxLength(255);
b.Property(q => q.Itemno).HasMaxLength(255); b.Property(q => q.Itemno).HasMaxLength(255);
b.Property(q => q.Plant).HasMaxLength(255); b.Property(q => q.Plant).HasMaxLength(255);
b.Property(q => q.Planqty).HasPrecision(18, 2); b.Property(q => q.Planqty).HasMaxLength(255);
b.Property(q => q.Yl1); b.Property(q => q.Yl1);
}); });

14
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesOutConverter.cs

@ -5,6 +5,7 @@ using System.Text.Json;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Org.BouncyCastle.Asn1.Pkcs;
using Volo.Abp.ObjectMapping; using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
@ -77,6 +78,7 @@ public class MesOutConverter : IIncomingConverter
wmsProductReceiptNote.WorkShop = "";//车间 wmsProductReceiptNote.WorkShop = "";//车间
wmsProductReceiptNote.Worker = _configuration["Authentication:username"];//操作人 wmsProductReceiptNote.Worker = _configuration["Authentication:username"];//操作人
wmsProductReceiptNote.ReceiptType = EnumReceiptType.MesScanReceipt;//完工收货方式 wmsProductReceiptNote.ReceiptType = EnumReceiptType.MesScanReceipt;//完工收货方式
wmsProductReceiptNote.WarehouseCode = "";
wmsProductReceiptNote.Details = new List<ProductReceiptNoteDetailInput>(); wmsProductReceiptNote.Details = new List<ProductReceiptNoteDetailInput>();
foreach (var incomingFromExternal in group.ToList()) foreach (var incomingFromExternal in group.ToList())
@ -86,20 +88,24 @@ public class MesOutConverter : IIncomingConverter
wmsProductReceiptNoteDetail.Lot = ""; //排序批次 wmsProductReceiptNoteDetail.Lot = ""; //排序批次
wmsProductReceiptNoteDetail.PackingCode = "";//箱标签 wmsProductReceiptNoteDetail.PackingCode = "";//箱标签
wmsProductReceiptNoteDetail.Status = EnumInventoryStatus.OK; wmsProductReceiptNoteDetail.Status = EnumInventoryStatus.OK;
wmsProductReceiptNoteDetail.WarehouseCode = "";
wmsProductReceiptNoteDetail.LocationArea = "";
wmsProductReceiptNoteDetail.LocationGroup = "";
var loc = await _locationAppService.GetListByTypesAndErpCodeAsync(types, wmsProductReceiptNoteDetail.LocationErpCode).ConfigureAwait(false); var loc = await _locationAppService.GetListByTypesAndErpCodeAsync(types, wmsProductReceiptNoteDetail.LocationErpCode).ConfigureAwait(false);
if (loc != null) if (loc != null)
{ {
wmsProductReceiptNoteDetail.LocationCode = loc[0].Code; wmsProductReceiptNoteDetail.LocationCode = loc[0].Code;
} }
; try try
{ {
var item = await _itemBasicAppService.GetByCodeAsync(wmsProductReceiptNoteDetail.ItemCode).ConfigureAwait(false); var item = await _itemBasicAppService.GetByCodeAsync(wmsProductReceiptNoteDetail.ItemCode).ConfigureAwait(false);
if (item != null) if (item != null)
{ {
wmsProductReceiptNoteDetail.ItemName = item.Name; wmsProductReceiptNoteDetail.ItemName = item.Name;
wmsProductReceiptNoteDetail.ItemDesc1 = item.Desc1; wmsProductReceiptNoteDetail.ItemDesc1 = !string.IsNullOrEmpty(item.Desc1) ? item.Desc1 : "";
wmsProductReceiptNoteDetail.ItemDesc2 = item.Desc2; wmsProductReceiptNoteDetail.ItemDesc2 = !string.IsNullOrEmpty(item.Desc2) ? item.Desc2 : "";
wmsProductReceiptNoteDetail.Uom = item.BasicUom; wmsProductReceiptNoteDetail.Uom = !string.IsNullOrEmpty(item.BasicUom) ? item.BasicUom : "";
} }
} }
catch (Exception) catch (Exception)

7
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/PullTaskConverter.cs

@ -11,6 +11,7 @@ using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.DataExchange.Domain; using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.WMS.MaterialRequest; using Win_in.Sfs.Wms.DataExchange.WMS.MaterialRequest;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent.Incoming; namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent.Incoming;
@ -84,9 +85,9 @@ public class PullTaskConverter : IIncomingConverter
if (item != null) if (item != null)
{ {
wmsMaterialRequestDetail.ItemName = item.Name; wmsMaterialRequestDetail.ItemName = item.Name;
wmsMaterialRequestDetail.ItemDesc1 = item.Desc1; wmsMaterialRequestDetail.ItemDesc1 = !string.IsNullOrEmpty(item.Desc1) ? item.Desc1 : "";
wmsMaterialRequestDetail.ItemDesc2 = item.Desc2; wmsMaterialRequestDetail.ItemDesc2 = !string.IsNullOrEmpty(item.Desc2) ? item.Desc2 : "";
wmsMaterialRequestDetail.Uom = item.BasicUom; wmsMaterialRequestDetail.Uom = !string.IsNullOrEmpty(item.BasicUom) ? item.BasicUom : "";
} }
} }
catch (Exception) catch (Exception)

3
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/PullTaskReader.cs

@ -29,6 +29,7 @@ public class PullTaskReader : IReader
} }
public virtual async Task<List<IncomingFromExternal>> ReadAsync() public virtual async Task<List<IncomingFromExternal>> ReadAsync()
{ {
//从MES读取待处理PullTask //从MES读取待处理PullTask
var toBeProcessedPillTasks = await _pullTaskManager.GetToBeProcessedListAsync().ConfigureAwait(false); var toBeProcessedPillTasks = await _pullTaskManager.GetToBeProcessedListAsync().ConfigureAwait(false);
@ -101,7 +102,7 @@ public class PullTaskReader : IReader
var materialRequestDetail = new MaterialRequestDetailExchangeDto() var materialRequestDetail = new MaterialRequestDetailExchangeDto()
{ {
ItemCode = pullTask.Itemno, ItemCode = pullTask.Itemno,
Qty = pullTask.Planqty, Qty = decimal.Parse(pullTask.Planqty),
ToLocationCode = pullTask.Plant, ToLocationCode = pullTask.Plant,
}; };

6
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/ScrapConverter.cs

@ -86,14 +86,14 @@ public class ScrapConverter : IIncomingConverter
wmsScrapDetail.FromLot = ""; wmsScrapDetail.FromLot = "";
wmsScrapDetail.FromWarehouseCode = ""; wmsScrapDetail.FromWarehouseCode = "";
wmsScrapDetail.ToWarehouseCode = ""; wmsScrapDetail.ToWarehouseCode = "";
wmsScrapDetail.Uom = "";
wmsScrapDetail.FromStatus = EnumInventoryStatus.OK; wmsScrapDetail.FromStatus = EnumInventoryStatus.OK;
var item = await _itemBasicAppService.GetByCodeAsync(wmsScrapDetail.ItemCode).ConfigureAwait(false); var item = await _itemBasicAppService.GetByCodeAsync(wmsScrapDetail.ItemCode).ConfigureAwait(false);
if (item != null) if (item != null)
{ {
wmsScrapDetail.ItemName = item.Name; wmsScrapDetail.ItemName = item.Name;
wmsScrapDetail.ItemDesc1 = item.Desc1; wmsScrapDetail.ItemDesc1 = !string.IsNullOrEmpty(item.Desc1) ? item.Desc1 : "";
wmsScrapDetail.ItemDesc2 = item.Desc2; wmsScrapDetail.ItemDesc2 = !string.IsNullOrEmpty(item.Desc2) ? item.Desc2 : "";
wmsScrapDetail.Uom = !string.IsNullOrEmpty(item.BasicUom) ? item.BasicUom : "";
} }
wmsScarp.Details.Add(wmsScrapDetail); wmsScarp.Details.Add(wmsScrapDetail);

14
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/MesAgentModule.cs

@ -7,6 +7,7 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Polly; using Polly;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Account;
using Volo.Abp.Autofac; using Volo.Abp.Autofac;
using Volo.Abp.AutoMapper; using Volo.Abp.AutoMapper;
using Volo.Abp.BackgroundJobs; using Volo.Abp.BackgroundJobs;
@ -39,7 +40,8 @@ namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent;
typeof(DataExchangeDomainModule), typeof(DataExchangeDomainModule),
typeof(DataExchangeEntityFrameworkCoreModule), typeof(DataExchangeEntityFrameworkCoreModule),
typeof(DataExchangeDomainFawtygMesModule), typeof(DataExchangeDomainFawtygMesModule),
typeof(DataExchangeEntityFrameworkCoreFawtygModule) typeof(DataExchangeEntityFrameworkCoreFawtygModule),
typeof(AbpAccountApplicationContractsModule)
)] )]
public class MesAgentModule : AbpModule public class MesAgentModule : AbpModule
{ {
@ -154,12 +156,12 @@ public class MesAgentModule : AbpModule
"Label" "Label"
); );
} }
public override void OnApplicationInitialization(
public override async Task OnApplicationInitializationAsync(
ApplicationInitializationContext context) ApplicationInitializationContext context)
{ {
await context.AddBackgroundWorkerAsync<MesIncomingBackgroundWorker>().ConfigureAwait(false);
await context.AddBackgroundWorkerAsync<MesOutgoingBackgroundWorker>().ConfigureAwait(false);
}
context.AddBackgroundWorkerAsync<MesIncomingBackgroundWorker>();
//context.AddBackgroundWorkerAsync<MesOutgoingBackgroundWorker>();
} }
}

1
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent.csproj

@ -11,6 +11,7 @@
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.12" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.12" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.*" /> <PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.*" />
<PackageReference Include="Microsoft.Extensions.Http.Polly" Version="6.0.12" /> <PackageReference Include="Microsoft.Extensions.Http.Polly" Version="6.0.12" />
<PackageReference Include="Serilog.Sinks.MSSqlServer" Version="6.3.0" />
<PackageReference Include="Volo.Abp.EntityFrameworkCore.SqlServer" Version="5.3.5" /> <PackageReference Include="Volo.Abp.EntityFrameworkCore.SqlServer" Version="5.3.5" />
<PackageReference Include="Volo.Abp.BackgroundJobs" Version="5.3.5" /> <PackageReference Include="Volo.Abp.BackgroundJobs" Version="5.3.5" />
<PackageReference Include="Volo.Abp.BackgroundWorkers" Version="5.3.5" /> <PackageReference Include="Volo.Abp.BackgroundWorkers" Version="5.3.5" />

139
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Outgoing/ItemTransformNoteConverter.cs

@ -0,0 +1,139 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Auth.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
using Win_in.Sfs.Wms.DataExchange.Domain.Shared;
using Win_in.Sfs.Wms.DataExchange.WMS.ItemTransformNote;
using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent.Outgoing;
public class ItemTransformNoteConverter : IOutgoingConverter
{
private readonly IOutgoingFromWmsManager _outgoingFromWmsManager;
private readonly IOutgoingToExternalManager _outgoingToExternalManager;
private readonly ISupplierAsnAppService _supplierAsnAppService;
private readonly IDepartmentAppService _departmentAppService;
private readonly IObjectMapper _objectMapper;
public ItemTransformNoteConverter(
IOutgoingFromWmsManager outgoingFromWmsManager
, IOutgoingToExternalManager outgoingToExternalManager
, ISupplierAsnAppService supplierAsnAppService
, IDepartmentAppService departmentAppService
, IObjectMapper objectMapper
)
{
_outgoingFromWmsManager = outgoingFromWmsManager;
_outgoingToExternalManager = outgoingToExternalManager;
_supplierAsnAppService = supplierAsnAppService;
_departmentAppService = departmentAppService;
_objectMapper = objectMapper;
}
public virtual async Task<List<OutgoingToExternal>> ConvertAsync()
{
var outgoingToExternalList = new List<OutgoingToExternal>();
var outgoingFromWmsList = await _outgoingFromWmsManager.GetToBeProcessedListAsync(EnumOutgoingDataType.Item_Transform, EnumSystemType.ERP).ConfigureAwait(false);
foreach (var outgoingFromWms in outgoingFromWmsList)
{
var wmsCountAdjust = JsonSerializer.Deserialize<ItemTransformNoteDTO>(outgoingFromWms.DataContent);
if (Enum.Parse<EnumTransSubType>(wmsCountAdjust.Type) == EnumTransSubType.Item_Transform)
{
var department = await _departmentAppService.GetByUsernameAsync(wmsCountAdjust.Worker).ConfigureAwait(false);
var departmentCode = department == null ? "" : department.Code;
var details = wmsCountAdjust.Details.GroupBy(r => new { r.ItemCode, r.ToItemCode, r.LocationErpCode, r.ToLocationCode }).Select(p => new ItemTransformNoteDetailExchangeDto { ToQty = p.Sum(itm => itm.ToQty), FromQty = p.Sum(itm => itm.FromQty), ItemCode = p.Key.ItemCode, ToItemCode = p.Key.ToItemCode, LocationErpCode = p.Key.LocationErpCode, ReasonCode = String.Join("、", p.Select(x => x.ReasonCode).ToArray()) });
foreach (var detail in details)
{
List<ItemTransformNoteDetailExchangeDto> ItemTransform = new List<ItemTransformNoteDetailExchangeDto>();
ItemTransformNoteDetailExchangeDto ItemTrans = new ItemTransformNoteDetailExchangeDto();
ItemTrans.ItemCode = detail.ItemCode;
ItemTrans.LocationErpCode = detail.LocationErpCode;
ItemTrans.FromQty = detail.FromQty - detail.FromQty - detail.FromQty;
ItemTrans.ReasonCode = detail.ReasonCode;
ItemTransform.Add(ItemTrans);
ItemTransformNoteDetailExchangeDto ItemTranss = new ItemTransformNoteDetailExchangeDto();
ItemTranss.ItemCode = detail.ToItemCode;
ItemTranss.LocationErpCode = detail.LocationErpCode;
ItemTranss.FromQty = detail.ToQty;
ItemTranss.ReasonCode = detail.ReasonCode;
ItemTransform.Add(ItemTranss);
foreach (var Item in ItemTransform)
{
var outgoingToExternal = new OutgoingToExternal()
{
DataType = outgoingFromWms.DataType,
DataAction = outgoingFromWms.DataAction,
SourceSystem = EnumSystemType.WMS.ToString(),
SourceDataId = wmsCountAdjust.Number,
SourceDataGroupCode = wmsCountAdjust.Number,
SourceDataDetailCode = Item.ItemCode,
Writer = nameof(TyrpOutgoingBackgroundWorker),
DestinationSystem = EnumSystemType.ERP.ToString(),
DestinationDataId = "",
};
outgoingToExternal.SetEffectiveDate(outgoingFromWms.EffectiveDate);
var exchangeIssue = await BuildPurchaseReceiptExchangeDtoAsync(wmsCountAdjust, Item).ConfigureAwait(false);
outgoingToExternal.SourceDataContent = JsonSerializer.Serialize(exchangeIssue);
var arrive = BuildIssue(exchangeIssue, departmentCode);
outgoingToExternal.DestinationDataContent = JsonSerializer.Serialize(arrive);
outgoingToExternalList.Add(outgoingToExternal);
}
}
}
}
await _outgoingToExternalManager.CreateManyAsync(outgoingToExternalList).ConfigureAwait(false); ;
//将outgoingFromWms数据归档
await _outgoingFromWmsManager.ArchiveManyAsync(outgoingFromWmsList).ConfigureAwait(false); ;
return outgoingToExternalList;
//插入到中间表OutgoingToExternal
}
private CountAdjust BuildIssue(ItemTransformNoteExchangeDto exchangeCountAdjust, string departmentCode)
{
var detail = exchangeCountAdjust.Detail;
string asdtype = "";
if (Enum.Parse<EnumTransSubType>(exchangeCountAdjust.Type) == EnumTransSubType.Item_Transform)
{
asdtype = "4003";
}
var counta = new CountAdjust()
{
mesout_asd_refc = departmentCode,
mesout_asd_dt_w = DateTime.Now.ToString("yyyyMMdd HH:mm:ss"),
mesout_asd_type = asdtype,
mesout_asd_part = detail.ItemCode,
mesout_asd_date = exchangeCountAdjust.ActiveDate.ToString("yyyyMMdd"),
mesout_asd_loc = detail.LocationErpCode,
mesout_asd_code = detail.ReasonCode,
mesout_asd_qty = detail.FromQty,
mesout_asd_user = exchangeCountAdjust.Worker,
mesout_asd_k = string.Empty,
mesout_asd_stat = "Y"
};
return counta;
}
private async Task<ItemTransformNoteExchangeDto> BuildPurchaseReceiptExchangeDtoAsync(
ItemTransformNoteDTO wmsCountAdjust, ItemTransformNoteDetailExchangeDto wmsCountAdjustDetail)
{
var exchangeCountAdjust = _objectMapper.Map<ItemTransformNoteDTO, ItemTransformNoteExchangeDto>(wmsCountAdjust);
exchangeCountAdjust.Detail = wmsCountAdjustDetail;
return exchangeCountAdjust;
}
}

4
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Outgoing/TyrpOutgoingBackgroundWorker.cs

@ -120,6 +120,10 @@ public class TyrpOutgoingBackgroundWorker : AsyncPeriodicBackgroundWorkerBase
var scrapNoteList = await scrapNoteConvert.ConvertAsync().ConfigureAwait(false); var scrapNoteList = await scrapNoteConvert.ConvertAsync().ConfigureAwait(false);
await countadjustWriter.WriteAsync(scrapNoteList).ConfigureAwait(false); await countadjustWriter.WriteAsync(scrapNoteList).ConfigureAwait(false);
Logger.LogInformation($"Write ItemTransformNote");//回收料调整单
var ItemTransformNoteConvert = workerContext.ServiceProvider.GetRequiredService<ItemTransformNoteConverter>();
var ItemTransformNoteList = await ItemTransformNoteConvert.ConvertAsync().ConfigureAwait(false);
await countadjustWriter.WriteAsync(ItemTransformNoteList).ConfigureAwait(false);
Logger.LogInformation($"Completed: Handling {Outgoing}"); Logger.LogInformation($"Completed: Handling {Outgoing}");
} }

1
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent.csproj

@ -31,6 +31,7 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\Hosts\Auth.Host\src\Win_in.Sfs.Auth.Application.Contracts\Win_in.Sfs.Auth.Application.Contracts.csproj" /> <ProjectReference Include="..\..\..\Hosts\Auth.Host\src\Win_in.Sfs.Auth.Application.Contracts\Win_in.Sfs.Auth.Application.Contracts.csproj" />
<ProjectReference Include="..\..\..\Modules\BaseData\src\Win_in.Sfs.Basedata.Application\Win_in.Sfs.Basedata.Application.csproj" />
<ProjectReference Include="..\..\..\Modules\Label\src\Win_in.Sfs.Label.Application.Contracts\Win_in.Sfs.Label.Application.Contracts.csproj" /> <ProjectReference Include="..\..\..\Modules\Label\src\Win_in.Sfs.Label.Application.Contracts\Win_in.Sfs.Label.Application.Contracts.csproj" />
<ProjectReference Include="..\..\..\Modules\Shared\src\Win_in.Sfs.Shared.Host\Win_in.Sfs.Shared.Host.csproj" /> <ProjectReference Include="..\..\..\Modules\Shared\src\Win_in.Sfs.Shared.Host\Win_in.Sfs.Shared.Host.csproj" />
<ProjectReference Include="..\..\..\Modules\Store\src\Win_in.Sfs.Wms.Store.Application.Contracts\Win_in.Sfs.Wms.Store.Application.Contracts.csproj" /> <ProjectReference Include="..\..\..\Modules\Store\src\Win_in.Sfs.Wms.Store.Application.Contracts\Win_in.Sfs.Wms.Store.Application.Contracts.csproj" />

1
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain.Shared/Enums/EnumOutgoingDataType.cs

@ -30,6 +30,7 @@ public enum EnumOutgoingDataType
RecycledMaterialReceipt = 22, RecycledMaterialReceipt = 22,
ScrapNote = 23, ScrapNote = 23,
ProductRecycle = 24, ProductRecycle = 24,
Item_Transform = 25
} }
public enum EnumExchangeTableType public enum EnumExchangeTableType
{ {

32
be/Hosts/Win_in.Sfs.Wms.Dashboard.Host/Controllers/AsnTimeWindowController.cs

@ -8,6 +8,7 @@ using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.Dashboard.Host.Controllers; namespace Win_in.Sfs.Wms.Dashboard.Host.Controllers;
using System.Diagnostics.Metrics;
using System.Linq; using System.Linq;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
@ -29,28 +30,28 @@ public class AsnTimeWindowController : AbpController
[HttpGet("asn-time-window")] [HttpGet("asn-time-window")]
public virtual async Task<List<AsnTimeWindowDashboardDto>> GetAsnTimeWindowsAsync() public virtual async Task<List<AsnTimeWindowDashboardDto>> GetAsnTimeWindowsAsync()
{ {
return await GetAsnTimeWindowDashboardsAsync().ConfigureAwait(false); return await GetAsnTimeWindowDashboardsAsync();
} }
private async Task<List<AsnTimeWindowDashboardDto>> GetAsnTimeWindowDashboardsAsync() private async Task<List<AsnTimeWindowDashboardDto>> GetAsnTimeWindowDashboardsAsync()
{ {
var supplierAsns = await GetSupplierAsnsAsync().ConfigureAwait(false); var supplierAsns = await this.GetSupplierAsnsAsync();
var supplierCodes = supplierAsns.Select(t => t.SupplierCode).Distinct(); var supplierCodes = supplierAsns.Select(t => t.SupplierCode).Distinct();
var suppliers = await GetSuppliersAsync(supplierCodes).ConfigureAwait(false); var suppliers = await GetSuppliersAsync(supplierCodes);
var asnNumbers = supplierAsns.Select(t => t.Number); var asnNumbers = supplierAsns.Select(t => t.Number);
var purchaseReceiptNotes = await GetPurchaseReceiptNotesAsync(asnNumbers).ConfigureAwait(false); var purchaseReceiptNotes = await GetPurchaseReceiptNotesAsync(asnNumbers);
return ConvertToAsnTimeWindowDashboards( return this.ConvertToAsnTimeWindowDashboards(
supplierAsns, supplierAsns,
suppliers, suppliers,
purchaseReceiptNotes); purchaseReceiptNotes);
} }
private static List<AsnTimeWindowDashboardDto> ConvertToAsnTimeWindowDashboards( private List<AsnTimeWindowDashboardDto> ConvertToAsnTimeWindowDashboards(
List<SupplierAsnDTO> supplierAsns, List<SupplierAsnDTO> supplierAsns,
List<SupplierDTO> suppliers, List<SupplierDTO> suppliers,
List<PurchaseReceiptNoteDTO> purchaseReceiptNotes) List<PurchaseReceiptNoteDTO> purchaseReceiptNotes)
@ -70,16 +71,12 @@ public class AsnTimeWindowController : AbpController
var supplier = suppliers.FirstOrDefault(t => t.Code == supplierAsn.SupplierCode); var supplier = suppliers.FirstOrDefault(t => t.Code == supplierAsn.SupplierCode);
if (supplier == null) if (supplier == null)
{
continue; continue;
}
supplierShortName = supplier.ShortName; supplierShortName = supplier.ShortName;
if (dtos.Exists(t => t.TimeSpan == timeSpan && t.SupplierShortName == supplierShortName)) if (dtos.Exists(t => t.TimeSpan == timeSpan && t.SupplierShortName == supplierShortName))
{
continue; continue;
}
var purchaseReceiptNote = var purchaseReceiptNote =
purchaseReceiptNotes.FirstOrDefault(t => t.AsnNumber == supplierAsn.Number); purchaseReceiptNotes.FirstOrDefault(t => t.AsnNumber == supplierAsn.Number);
@ -111,17 +108,26 @@ public class AsnTimeWindowController : AbpController
endTime.AddDays(-1); endTime.AddDays(-1);
} }
return await _supplierAsnApp.GetByStartTimeEndTimeAsync(startTime, endTime).ConfigureAwait(false); return await this._supplierAsnApp.GetByStartTimeEndTimeAsync(startTime, endTime);
} }
private async Task<List<SupplierDTO>> GetSuppliersAsync(IEnumerable<string> codes) private async Task<List<SupplierDTO>> GetSuppliersAsync(IEnumerable<string> codes)
{ {
return await _supplierApp.GetByCodesAsync(codes).ConfigureAwait(false); return await this._supplierApp.GetByCodesAsync(codes);
} }
private async Task<List<PurchaseReceiptNoteDTO>> GetPurchaseReceiptNotesAsync(IEnumerable<string> asnNumbers) private async Task<List<PurchaseReceiptNoteDTO>> GetPurchaseReceiptNotesAsync(IEnumerable<string> asnNumbers)
{ {
return await _purchaseReceiptNoteApp.GetListByAsnNumbers(asnNumbers).ConfigureAwait(false); return await this._purchaseReceiptNoteApp.GetListByAsnNumbers(asnNumbers);
} }
/// <summary>
///
/// </summary>
/// <returns></returns>
[HttpGet("get-server-date-time")]
public virtual async Task<string> GetServerDate()
{
return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}
} }

23
be/Hosts/Win_in.Sfs.Wms.Dashboard.Host/Controllers/MaterialRequestController.cs

@ -2,16 +2,19 @@ using System.Collections.Generic;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc;
using Win_in.Sfs.Label.Application.Contracts;
using Win_in.Sfs.Wms.Dashboard.Host.Models; using Win_in.Sfs.Wms.Dashboard.Host.Models;
namespace Win_in.Sfs.Wms.Dashboard.Host.Controllers; namespace Win_in.Sfs.Wms.Dashboard.Host.Controllers
{
using System.Linq; using System.Linq;
using NUglify.Helpers; using NUglify.Helpers;
using Win_in.Sfs.Shared.Domain.Shared; 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.Application.Contracts;
using static IdentityServer4.Models.IdentityResources;
[ApiController] [ApiController]
[Route($"{PdaHostConst.ROOT_ROUTE}material-request")] [Route($"{PdaHostConst.ROOT_ROUTE}material-request")]
@ -32,7 +35,7 @@ public class MaterialRequestController : AbpController
{ {
var dto = new MaterialRequestUnHandledOrderSumDto(); var dto = new MaterialRequestUnHandledOrderSumDto();
var list = await GetMaterialRequestAsync().ConfigureAwait(false); var list = await GetMaterialRequestAsync();
dto.Sum = list.Where(t => t.RequestStatus == EnumRequestStatus.New).Count(); dto.Sum = list.Where(t => t.RequestStatus == EnumRequestStatus.New).Count();
@ -44,7 +47,7 @@ public class MaterialRequestController : AbpController
{ {
var dto = new MaterialRequestUnIssuedItemQtySumDto(); var dto = new MaterialRequestUnIssuedItemQtySumDto();
var list = await GetMaterialRequestAsync().ConfigureAwait(false); var list = await GetMaterialRequestAsync();
dto.Sum = list.Where(t => t.RequestStatus != EnumRequestStatus.New) dto.Sum = list.Where(t => t.RequestStatus != EnumRequestStatus.New)
.Sum(t => t.Details.Sum(t1 => t1.Qty - t1.IssuedQty)); .Sum(t => t.Details.Sum(t1 => t1.Qty - t1.IssuedQty));
@ -58,7 +61,7 @@ public class MaterialRequestController : AbpController
{ {
var dtos = new List<MaterialRequestUnReceivedItemQtyByItemDto>(); var dtos = new List<MaterialRequestUnReceivedItemQtyByItemDto>();
var list = await GetMaterialRequestAsync().ConfigureAwait(false); var list = await GetMaterialRequestAsync();
var details = new List<MaterialRequestDetailDTO>(); var details = new List<MaterialRequestDetailDTO>();
@ -96,7 +99,7 @@ public class MaterialRequestController : AbpController
var Received = 0.0M; var Received = 0.0M;
var list = await GetMaterialRequestAsync().ConfigureAwait(false); var list = await GetMaterialRequestAsync();
list.ForEach( list.ForEach(
item => item =>
@ -106,6 +109,7 @@ public class MaterialRequestController : AbpController
Received += item.Details.Sum(t => t.ReceivedQty); Received += item.Details.Sum(t => t.ReceivedQty);
}); });
dtos.Add(new MaterialRequestItemQtyByReceivedStatusDto() { ReceivedStatus = "请求未发", Sum = ToBeIssuedQty }); dtos.Add(new MaterialRequestItemQtyByReceivedStatusDto() { ReceivedStatus = "请求未发", Sum = ToBeIssuedQty });
dtos.Add(new MaterialRequestItemQtyByReceivedStatusDto() { ReceivedStatus = "已发未收", Sum = ToBeReceivedQty }); dtos.Add(new MaterialRequestItemQtyByReceivedStatusDto() { ReceivedStatus = "已发未收", Sum = ToBeReceivedQty });
dtos.Add(new MaterialRequestItemQtyByReceivedStatusDto() { ReceivedStatus = "请求已收", Sum = Received }); dtos.Add(new MaterialRequestItemQtyByReceivedStatusDto() { ReceivedStatus = "请求已收", Sum = Received });
@ -118,7 +122,7 @@ public class MaterialRequestController : AbpController
{ {
var dtos = new List<MaterialRequestUnReceivedItemDto>(); var dtos = new List<MaterialRequestUnReceivedItemDto>();
var notes = await GetIssueNotesAsync().ConfigureAwait(false); var notes = await this.GetIssueNotesAsync();
foreach (var note in notes) foreach (var note in notes)
{ {
@ -142,11 +146,12 @@ public class MaterialRequestController : AbpController
private async Task<List<IssueNoteDTO>> GetIssueNotesAsync() private async Task<List<IssueNoteDTO>> GetIssueNotesAsync()
{ {
return await _issueNoteApp.GetListUnConfirmedByTypeAsync(EnumTransSubType.Issue_WIP.ToString()).ConfigureAwait(false); return await this._issueNoteApp.GetListUnConfirmedByTypeAsync(EnumTransSubType.Issue_WIP.ToString());
} }
private async Task<List<MaterialRequestDTO>> GetMaterialRequestAsync() private async Task<List<MaterialRequestDTO>> GetMaterialRequestAsync()
{ {
return await _materialRequestApp.GetListByTypeAsync(EnumTransSubType.Issue_WIP.ToString()).ConfigureAwait(false); return await this._materialRequestApp.GetListByTypeAsync(EnumTransSubType.Issue_WIP.ToString());
}
} }
} }

90
be/Hosts/Win_in.Sfs.Wms.Dashboard.Host/Controllers/PlanAndActualController.cs

@ -1,15 +1,16 @@
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Serilog;
using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Wms.Dashboard.Host.Models; using Win_in.Sfs.Wms.Dashboard.Host.Models;
using System;
using System.Linq;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.Dashboard.Host.Controllers; namespace Win_in.Sfs.Wms.Dashboard.Host.Controllers
{
[ApiController] [ApiController]
[Route($"{PdaHostConst.ROOT_ROUTE}plan-and-actual")] [Route($"{PdaHostConst.ROOT_ROUTE}plan-and-actual")]
@ -21,39 +22,44 @@ public class PlanAndActualController : AbpController
private readonly IPutawayNoteAppService _putawayNoteApp; private readonly IPutawayNoteAppService _putawayNoteApp;
private readonly ISupplierAppService _supplierApp; private readonly ISupplierAppService _supplierApp;
private readonly IItemSafetyStockAppService _itemSafetyStockApp; private readonly IItemSafetyStockAppService _itemSafetyStockApp;
private readonly IPurchaseOrderAppService _purchaseOrderApp;
private readonly IPurchaseReceiptJobAppService _purchaseReceiptJobApp;
public PlanAndActualController(ISupplierAsnAppService supplierAsnApp, IPurchaseReceiptNoteAppService purchaseReceiptNoteApp, IPutawayNoteAppService putawayNoteApp, ISupplierAppService supplierApp, IItemSafetyStockAppService itemSafetyStockApp) public PlanAndActualController(ISupplierAsnAppService supplierAsnApp, IPurchaseReceiptNoteAppService purchaseReceiptNoteApp, IPutawayNoteAppService putawayNoteApp, ISupplierAppService supplierApp, IItemSafetyStockAppService itemSafetyStockApp, IPurchaseOrderAppService purchaseOrderApp, IPurchaseReceiptJobAppService purchaseReceiptJobApp)
{ {
_supplierAsnApp = supplierAsnApp; _supplierAsnApp = supplierAsnApp;
_purchaseReceiptNoteApp = purchaseReceiptNoteApp; _purchaseReceiptNoteApp = purchaseReceiptNoteApp;
_putawayNoteApp = putawayNoteApp; _putawayNoteApp = putawayNoteApp;
_supplierApp = supplierApp; _supplierApp = supplierApp;
_itemSafetyStockApp = itemSafetyStockApp; _itemSafetyStockApp = itemSafetyStockApp;
_purchaseOrderApp = purchaseOrderApp;
_purchaseReceiptJobApp = purchaseReceiptJobApp;
} }
[HttpGet("plan-actual-list")] [HttpGet("plan-actual-list")]
public virtual async Task<List<PlanAndActualDashboardDto>> GetPlanAndActualListAsync() public virtual async Task<List<PlanAndActualDashboardDto>> GetPlanAndActualListAsync()
{ {
return await GetPlanAndActualDashboardsAsync().ConfigureAwait(false); return await GetPlanAndActualDashboardsAsync();
} }
private async Task<List<PlanAndActualDashboardDto>> GetPlanAndActualDashboardsAsync() private async Task<List<PlanAndActualDashboardDto>> GetPlanAndActualDashboardsAsync()
{ {
var supplierAsns = await GetSupplierAsnsAsync().ConfigureAwait(false); var supplierAsns = await this.GetSupplierAsnsAsync();
var supplierCodes = supplierAsns.Select(t => t.SupplierCode).Distinct(); var supplierCodes = supplierAsns.Select(t => t.SupplierCode).Distinct();
var suppliers = await GetSuppliersAsync(supplierCodes).ConfigureAwait(false); var suppliers = await GetSuppliersAsync(supplierCodes);
var asnNumbers = supplierAsns.Select(t => t.Number); var asnNumbers = supplierAsns.Select(t => t.Number);
var purchaseReceiptNotes = await GetPurchaseReceiptNotesAsync(asnNumbers).ConfigureAwait(false); var purchaseReceiptNotes = await GetPurchaseReceiptNotesAsync(asnNumbers);
var putawayNotes = await GetPutawayNotesAsync(asnNumbers).ConfigureAwait(false); var putawayNotes = await this.GetPutawayNotesAsync(asnNumbers);
var itemSafetyStorks = await GetItemSafetyStocksAsync(supplierAsns).ConfigureAwait(false); var itemSafetyStorks = await this.GetItemSafetyStocksAsync(supplierAsns);
return ConvertToPlanAndActualDashboards( return await this.ConvertToPlanAndActualDashboards(
supplierAsns, supplierAsns,
suppliers, suppliers,
purchaseReceiptNotes, purchaseReceiptNotes,
@ -61,7 +67,7 @@ public class PlanAndActualController : AbpController
itemSafetyStorks); itemSafetyStorks);
} }
private static List<PlanAndActualDashboardDto> ConvertToPlanAndActualDashboards(List<SupplierAsnDTO> supplierAsns, List<SupplierDTO> suppliers, List<PurchaseReceiptNoteDTO> purchaseReceiptNotes, List<PutawayNoteDTO> putawayNotes, List<ItemSafetyStockDTO> itemSafetyStorks) private async Task<List<PlanAndActualDashboardDto>> ConvertToPlanAndActualDashboards(List<SupplierAsnDTO> supplierAsns, List<SupplierDTO> suppliers, List<PurchaseReceiptNoteDTO> purchaseReceiptNotes, List<PutawayNoteDTO> putawayNotes, List<ItemSafetyStockDTO> itemSafetyStorks)
{ {
var dtos = new List<PlanAndActualDashboardDto>(); var dtos = new List<PlanAndActualDashboardDto>();
@ -75,9 +81,7 @@ public class PlanAndActualController : AbpController
var supplier = suppliers.FirstOrDefault(t => t.Code == supplierAsn.SupplierCode); var supplier = suppliers.FirstOrDefault(t => t.Code == supplierAsn.SupplierCode);
if (supplier == null) if (supplier == null)
{
continue; continue;
}
supplierShortName = supplier.ShortName; supplierShortName = supplier.ShortName;
@ -102,35 +106,50 @@ public class PlanAndActualController : AbpController
dto.MinQty = itemSafetyStork.MinStock; dto.MinQty = itemSafetyStork.MinStock;
} }
dto.ReceiptNoteCount = CountReceiptNoteCount(purchaseReceipts, detail.ItemCode, detail.Lot); var purchaseOrderDtos = await _purchaseOrderApp.GetListBySupplierCodeAsync(supplierAsn.SupplierCode, detail.ItemCode);
dto.ReceiptQty = CountReceiptQty(purchaseReceipts, detail.ItemCode, detail.Lot); var supllierAsn = await _supplierAsnApp.GetForTodayListAsync();
dto.PutawayQty = CountPutawayQty(putawayNotes, detail.ItemCode, detail.Lot); var poNumberList = supllierAsn.Select(p => p.PoNumber).ToList();
purchaseOrderDtos = purchaseOrderDtos.Where(p => poNumberList.Contains(p.Number)).ToList();
decimal allPutawayQty = 0;
decimal allReceiptQty = 0;
decimal allPlanArriveQty = 0;
foreach (var purchaseOrderDTO in purchaseOrderDtos)
{
allPutawayQty += purchaseOrderDTO.Details.Where(p => p.ItemCode == detail.ItemCode).Sum(p => p.PutAwayQty);
allReceiptQty += purchaseOrderDTO.Details.Where(p => p.ItemCode == detail.ItemCode).Sum(p => p.ReceivedQty);
allPlanArriveQty += purchaseOrderDTO.Details.Where(p => p.ItemCode == detail.ItemCode).Sum(p => p.ShippedQty);
}
dto.PutawayQty = allPutawayQty;
dto.PlanArriveQty = allPlanArriveQty;
dto.ReceiptQty = allReceiptQty;
dtos.Add(dto); dtos.Add(dto);
} }
dto.SupplierAsnCount += 1; var purchaseReceiptJobDtos = await _purchaseReceiptJobApp.GetListBySupplierCodeOnTodayAsync(supplierAsn.SupplierCode);
dto.PlanArriveQty += detail.Qty; dto.ReceiptNoteCount = purchaseReceiptJobDtos.Count(p => p.JobStatus == EnumJobStatus.Done);
dto.SupplierAsnCount = purchaseReceiptJobDtos.Count();
} }
} }
return dtos.OrderBy(t => t.SupplierShortName).ToList(); return dtos.OrderBy(t => t.SupplierShortName).ToList();
} }
private static decimal CountPutawayQty(List<PutawayNoteDTO> putawayNotes, string itemCode, string lot) private decimal CountReceiptQty(List<PurchaseReceiptNoteDTO> purchaseReceipts, string itemCode)
{ {
return putawayNotes.Sum(t => t.Details.Where(t => t.ItemCode == itemCode && t.ToLot == lot).Sum(t => t.Qty)); return purchaseReceipts.Sum(t => t.Details.Where(t => t.ItemCode == itemCode).Sum(t => t.Qty));
} }
private static decimal CountReceiptQty(List<PurchaseReceiptNoteDTO> purchaseReceipts, string itemCode, string lot) private int CountReceiptNoteCount(List<PurchaseReceiptNoteDTO> purchaseReceipts, string itemCode)
{ {
return purchaseReceipts.Sum(t => t.Details.Where(t => t.ItemCode == itemCode && t.HandledLot == lot).Sum(t => t.Qty)); return purchaseReceipts.Sum(t => t.Details.Count(t => t.ItemCode == itemCode));
}
private static int CountReceiptNoteCount(List<PurchaseReceiptNoteDTO> purchaseReceipts, string itemCode, string lot)
{
return purchaseReceipts.Sum(t => t.Details.Count(t => t.ItemCode == itemCode && t.Lot == lot));
} }
private async Task<List<SupplierAsnDTO>> GetSupplierAsnsAsync() private async Task<List<SupplierAsnDTO>> GetSupplierAsnsAsync()
@ -145,22 +164,22 @@ public class PlanAndActualController : AbpController
endTime.AddDays(-1); endTime.AddDays(-1);
} }
return await _supplierAsnApp.GetByStartTimeEndTimeAsync(startTime, endTime).ConfigureAwait(false); return await this._supplierAsnApp.GetByStartTimeEndTimeAsync(startTime, endTime);
} }
private async Task<List<SupplierDTO>> GetSuppliersAsync(IEnumerable<string> codes) private async Task<List<SupplierDTO>> GetSuppliersAsync(IEnumerable<string> codes)
{ {
return await _supplierApp.GetByCodesAsync(codes).ConfigureAwait(false); return await this._supplierApp.GetByCodesAsync(codes);
} }
private async Task<List<PurchaseReceiptNoteDTO>> GetPurchaseReceiptNotesAsync(IEnumerable<string> asnNumbers) private async Task<List<PurchaseReceiptNoteDTO>> GetPurchaseReceiptNotesAsync(IEnumerable<string> asnNumbers)
{ {
return await _purchaseReceiptNoteApp.GetListByAsnNumbers(asnNumbers).ConfigureAwait(false); return await this._purchaseReceiptNoteApp.GetListByAsnNumbers(asnNumbers);
} }
private async Task<List<PutawayNoteDTO>> GetPutawayNotesAsync(IEnumerable<string> asnNumbers) private async Task<List<PutawayNoteDTO>> GetPutawayNotesAsync(IEnumerable<string> asnNumbers)
{ {
return await _putawayNoteApp.GetListByAsnNumbers(asnNumbers).ConfigureAwait(false); return await this._putawayNoteApp.GetListByAsnNumbers(asnNumbers);
} }
private async Task<List<ItemSafetyStockDTO>> GetItemSafetyStocksAsync(List<SupplierAsnDTO> supplierAsns) private async Task<List<ItemSafetyStockDTO>> GetItemSafetyStocksAsync(List<SupplierAsnDTO> supplierAsns)
{ {
@ -168,7 +187,8 @@ public class PlanAndActualController : AbpController
supplierAsns.ForEach(t => { itemCodes.AddRange(t.Details.Select(t => t.ItemCode).ToList()); }); supplierAsns.ForEach(t => { itemCodes.AddRange(t.Details.Select(t => t.ItemCode).ToList()); });
var itemSafetyStorks = await _itemSafetyStockApp.GetByItemCodesAsync(itemCodes).ConfigureAwait(false); var itemSafetyStorks = await this._itemSafetyStockApp.GetByItemCodesAsync(itemCodes);
return itemSafetyStorks; return itemSafetyStorks;
} }
} }
}

86
be/Hosts/Win_in.Sfs.Wms.Dashboard.Host/Controllers/PurchaseReceiptController.cs

@ -5,11 +5,15 @@ using Volo.Abp.AspNetCore.Mvc;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Wms.Dashboard.Host.Models; using Win_in.Sfs.Wms.Dashboard.Host.Models;
namespace Win_in.Sfs.Wms.Dashboard.Host.Controllers; namespace Win_in.Sfs.Wms.Dashboard.Host.Controllers
{
using System;
using System.Linq; using System.Linq;
using Volo.Abp;
using Win_in.Sfs.Label.Application.Contracts; using Win_in.Sfs.Label.Application.Contracts;
using Win_in.Sfs.Label.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Inventory.Application.Contracts; using Win_in.Sfs.Wms.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
@ -23,31 +27,43 @@ public class PurchaseReceiptController : AbpController
private readonly IInventoryLabelAppService _labelService; private readonly IInventoryLabelAppService _labelService;
private readonly ISupplierAppService _supplierApp; private readonly ISupplierAppService _supplierApp;
private readonly ISupplierAsnAppService _supplierAsnApp; private readonly ISupplierAsnAppService _supplierAsnApp;
private readonly IPurchaseReceiptNoteAppService _purchaseReceiptNoteAppService;
private readonly IInspectNoteAppService _inspectNoteAppService;
public PurchaseReceiptController(IBalanceAppService balanceApp, IInventoryLabelAppService labelService, ISupplierAppService supplierApp, ISupplierAsnAppService supplierAsnApp) public PurchaseReceiptController(IBalanceAppService balanceApp, IInventoryLabelAppService labelService, ISupplierAppService supplierApp, ISupplierAsnAppService supplierAsnApp, IPurchaseReceiptNoteAppService purchaseReceiptNoteAppService, IInspectNoteAppService inspectNoteAppService)
{ {
this._balanceApp = balanceApp; this._balanceApp = balanceApp;
this._labelService = labelService; this._labelService = labelService;
this._supplierApp = supplierApp; this._supplierApp = supplierApp;
this._supplierAsnApp = supplierAsnApp; this._supplierAsnApp = supplierAsnApp;
_purchaseReceiptNoteAppService = purchaseReceiptNoteAppService;
_inspectNoteAppService = inspectNoteAppService;
} }
[HttpGet("receipt-sum-qty")] /// <summary>
public virtual async Task<PurchaseReceiptSumQtyDashboardDto> GetReceiptSumQtyAsync() /// 未上架数量
/// </summary>
/// <returns></returns>
[HttpGet("no-put-away-sum-qty")]
public virtual async Task<PurchaseReceiptSumQtyDashboardDto> GetNoPutAwaySumQtyAsync()
{ {
var dto = new PurchaseReceiptSumQtyDashboardDto(); var dto = new PurchaseReceiptSumQtyDashboardDto();
var items = await GetPurchaseReceiptItemDashboardAsync().ConfigureAwait(false); var items = await GetPurchaseReceiptItemDashboardAsync();
dto = new PurchaseReceiptSumQtyDashboardDto() { Qty = items.Sum(t => t.Qty) }; dto = new PurchaseReceiptSumQtyDashboardDto() { Qty = items.Sum(t => t.Qty) };
return dto; return dto;
} }
[HttpGet("receipt-count-by-supplier")] /// <summary>
public virtual async Task<List<PurchaseReceiptCountBySupplierDashboardDto>> GetReceiptCountBySupplierQtyAsync() /// 未上架汇总
/// </summary>
/// <returns></returns>
[HttpGet("no-put-away-by-supplier")]
public virtual async Task<List<PurchaseReceiptCountBySupplierDashboardDto>> GetNoPutAwayBySupplierAsync()
{ {
var items = await GetPurchaseReceiptItemDashboardAsync().ConfigureAwait(false); var items = await GetPurchaseReceiptItemDashboardAsync();
var dtos = items.GroupBy(t => t.SupplierShortName) var dtos = items.GroupBy(t => t.SupplierShortName)
.Select( .Select(
@ -60,10 +76,14 @@ public class PurchaseReceiptController : AbpController
return dtos; return dtos;
} }
[HttpGet("receipt-item-list")] /// <summary>
/// 未上架明细
/// </summary>
/// <returns></returns>
[HttpGet("no-put-away-item-list")]
public virtual async Task<List<PurchaseReceiptItemDashboardDto>> GetReceiptItemListAsync() public virtual async Task<List<PurchaseReceiptItemDashboardDto>> GetReceiptItemListAsync()
{ {
return await GetPurchaseReceiptItemDashboardAsync().ConfigureAwait(false); return await GetPurchaseReceiptItemDashboardAsync();
} }
[HttpGet("un-receipt-sum-qty")] [HttpGet("un-receipt-sum-qty")]
@ -71,7 +91,7 @@ public class PurchaseReceiptController : AbpController
{ {
var dto = new PurchaseReceiptSumQtyDashboardDto(); var dto = new PurchaseReceiptSumQtyDashboardDto();
var items = await GetUnPurchaseReceiptItemDashboardAsync().ConfigureAwait(false); var items = await this.GetUnPurchaseReceiptItemDashboardAsync();
dto = new PurchaseReceiptSumQtyDashboardDto() { Qty = items.Sum(t => t.Qty) }; dto = new PurchaseReceiptSumQtyDashboardDto() { Qty = items.Sum(t => t.Qty) };
@ -81,7 +101,7 @@ public class PurchaseReceiptController : AbpController
[HttpGet("un-receipt-count-by-supplier")] [HttpGet("un-receipt-count-by-supplier")]
public virtual async Task<List<PurchaseReceiptCountBySupplierDashboardDto>> GetUnReceiptCountBySupplierQtyAsync() public virtual async Task<List<PurchaseReceiptCountBySupplierDashboardDto>> GetUnReceiptCountBySupplierQtyAsync()
{ {
var items = await GetUnPurchaseReceiptItemDashboardAsync().ConfigureAwait(false); var items = await GetUnPurchaseReceiptItemDashboardAsync();
var dtos = items.GroupBy(t => t.SupplierShortName) var dtos = items.GroupBy(t => t.SupplierShortName)
.Select( .Select(
@ -97,25 +117,30 @@ public class PurchaseReceiptController : AbpController
[HttpGet("un-receipt-item-list")] [HttpGet("un-receipt-item-list")]
public virtual async Task<List<PurchaseReceiptItemDashboardDto>> GetUnReceiptItemListAsync() public virtual async Task<List<PurchaseReceiptItemDashboardDto>> GetUnReceiptItemListAsync()
{ {
return await GetUnPurchaseReceiptItemDashboardAsync().ConfigureAwait(false); return await this.GetUnPurchaseReceiptItemDashboardAsync();
} }
private async Task<List<PurchaseReceiptItemDashboardDto>> GetPurchaseReceiptItemDashboardAsync() private async Task<List<PurchaseReceiptItemDashboardDto>> GetPurchaseReceiptItemDashboardAsync()
{ {
var balances = await GetBalancesAsync("INSPECT", EnumInventoryStatus.OK).ConfigureAwait(false); var inspectNoteDetailDto = await _inspectNoteAppService.GetInspectNoteDetailByToDayTaskAsync();
var packingCodeList = inspectNoteDetailDto.Where(p => p.Status == EnumInventoryStatus.OK).Select(p => p.PackingCode).ToList();
var balances = await _balanceApp.GetListByPackingCodesAsync(packingCodeList);
balances = balances.Where(p => p.LocationCode == "INSPECT").ToList();
//var balances = await GetBalancesAsync("INSPECT", EnumInventoryStatus.OK);
var packingcodes = balances.Select(t => t.PackingCode).Distinct(); var packingcodes = balances.Select(t => t.PackingCode).Distinct();
var labels = await GetLabelsAsync(packingcodes).ConfigureAwait(false); var labels = await GetLabelsAsync(packingcodes);
var supplierCodes = labels.Select(t => t.SupplierCode).Distinct(); var supplierCodes = labels.Select(t => t.SupplierCode).Distinct();
var suppliers = await GetSuppliersAsync(supplierCodes).ConfigureAwait(false); var suppliers = await GetSuppliersAsync(supplierCodes);
return ConvertToPurchaseReceiptItemDashboard(balances, labels, suppliers); return ConvertToPurchaseReceiptItemDashboard(balances, labels, suppliers);
} }
private static List<PurchaseReceiptItemDashboardDto> ConvertToPurchaseReceiptItemDashboard( private List<PurchaseReceiptItemDashboardDto> ConvertToPurchaseReceiptItemDashboard(
List<BalanceDTO> balances, List<BalanceDTO> balances,
List<InventoryLabelDto> labels, List<InventoryLabelDto> labels,
List<SupplierDTO> suppliers) List<SupplierDTO> suppliers)
@ -129,16 +154,12 @@ public class PurchaseReceiptController : AbpController
var label = labels.FirstOrDefault(t => t.Code == balance.PackingCode); var label = labels.FirstOrDefault(t => t.Code == balance.PackingCode);
if (label == null) if (label == null)
{
continue; continue;
}
var supplier = suppliers.FirstOrDefault(t => t != null && t.Code == label.SupplierCode); var supplier = suppliers.FirstOrDefault(t => t != null && t.Code == label.SupplierCode);
if (supplier == null) if (supplier == null)
{
continue; continue;
}
supplierShortName = supplier.ShortName; supplierShortName = supplier.ShortName;
@ -164,23 +185,23 @@ public class PurchaseReceiptController : AbpController
private async Task<List<BalanceDTO>> GetBalancesAsync(string locationCode, EnumInventoryStatus status) private async Task<List<BalanceDTO>> GetBalancesAsync(string locationCode, EnumInventoryStatus status)
{ {
return await _balanceApp.GetListByLocationCodeAndStatusAsync(locationCode, status).ConfigureAwait(false); return await this._balanceApp.GetListByLocationCodeAndStatusAsync(locationCode, status);
} }
private async Task<List<InventoryLabelDto>> GetLabelsAsync(IEnumerable<string> codes) private async Task<List<InventoryLabelDto>> GetLabelsAsync(IEnumerable<string> codes)
{ {
return await _labelService.GetByCodesAsync(codes).ConfigureAwait(false); return await this._labelService.GetByCodesAsync(codes);
} }
private async Task<List<SupplierDTO>> GetSuppliersAsync(IEnumerable<string> codes) private async Task<List<SupplierDTO>> GetSuppliersAsync(IEnumerable<string> codes)
{ {
return await _supplierApp.GetByCodesAsync(codes).ConfigureAwait(false); return await this._supplierApp.GetByCodesAsync(codes);
} }
private async Task<List<SupplierAsnDTO>> GetSupplierAsnsAsync() private async Task<List<SupplierAsnDTO>> GetSupplierAsnsAsync()
{ {
return await _supplierAsnApp.GetForTodayUnReceivedListAsync().ConfigureAwait(false); return await this._supplierAsnApp.GetForTodayUnReceivedListAsync();
} }
private static List<PurchaseReceiptItemDashboardDto> ConvertToUnPurchaseReceiptItemDashboard( private List<PurchaseReceiptItemDashboardDto> ConvertToUnPurchaseReceiptItemDashboard(
List<SupplierAsnDTO> supplierAsns, List<SupplierAsnDTO> supplierAsns,
List<SupplierDTO> suppliers) List<SupplierDTO> suppliers)
{ {
@ -193,9 +214,7 @@ public class PurchaseReceiptController : AbpController
var supplier = suppliers.FirstOrDefault(t => t.Code == supplierAsn.SupplierCode); var supplier = suppliers.FirstOrDefault(t => t.Code == supplierAsn.SupplierCode);
if (supplier == null) if (supplier == null)
{
continue; continue;
}
supplierShortName = supplier.ShortName; supplierShortName = supplier.ShortName;
@ -226,12 +245,15 @@ public class PurchaseReceiptController : AbpController
{ {
var dtos = new List<PurchaseReceiptItemDashboardDto>(); var dtos = new List<PurchaseReceiptItemDashboardDto>();
var supplierAsns = await GetSupplierAsnsAsync().ConfigureAwait(false); var supplierAsns = await this.GetSupplierAsnsAsync();
var supplierCodes = supplierAsns.Select(t => t.SupplierCode).Distinct(); var supplierCodes = supplierAsns.Select(t => t.SupplierCode).Distinct();
var suppliers = await GetSuppliersAsync(supplierCodes).ConfigureAwait(false); var suppliers = await GetSuppliersAsync(supplierCodes);
return ConvertToUnPurchaseReceiptItemDashboard(supplierAsns, suppliers); return this.ConvertToUnPurchaseReceiptItemDashboard(supplierAsns, suppliers);
} }
} }
}

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

@ -5614,96 +5614,4 @@ 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], [FromLot], [FromStatus]) WHERE [FromPackingCode] IS NOT NULL AND [FromLot] IS NOT NULL 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_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])

45
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ItemTransformNote/ItemTransformNoteDetailExchangeDto.cs

@ -0,0 +1,45 @@
using System.ComponentModel.DataAnnotations;
namespace Win_in.Sfs.Wms.DataExchange.WMS.ItemTransformNote;
public class ItemTransformNoteDetailExchangeDto
{
/// <summary>
/// 物品代码
/// </summary>
[Display(Name = "物品代码")]
public string ItemCode { get; set; }
/// <summary>
/// ERP库位
/// </summary>
[Display(Name = "ERP库位")]
public string LocationErpCode { get; set; }
/// <summary>
/// 原因代码
/// </summary>
[Display(Name = "原因代码")]
public string ReasonCode { get; set; }
/// <summary>
/// 调整数量
/// </summary>
[Display(Name = "来源数量")]
public decimal FromQty { get; set; }
/// <summary>
/// 目标数量
/// </summary>
[Display(Name = "目标数量")]
public decimal ToQty { get; set; }
/// <summary>
/// 目标库位
/// </summary>
[Display(Name = "目标库位")]
[Required(ErrorMessage = "{0}是必填项")]
public string ToLocationCode { get; set; }
/// <summary>
/// 目标物品代码
/// </summary>
[Display(Name = "目标物品代码")]
public string ToItemCode { get; set; }
}

30
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ItemTransformNote/ItemTransformNoteExchangeDto.cs

@ -0,0 +1,30 @@
using System;
using System.ComponentModel.DataAnnotations;
namespace Win_in.Sfs.Wms.DataExchange.WMS.ItemTransformNote;
public class ItemTransformNoteExchangeDto
{
/// <summary>
/// 单据号
/// </summary>
public string Number { get; set; }
/// <summary>
/// 生效日期
/// </summary>
public DateTime ActiveDate { get; set; } = DateTime.Now.Date;
/// <summary>
/// 操作员
/// </summary>
public string Worker { get; set; }
/// <summary>
/// 类型
/// </summary>
public string Type { get; set; }
/// <summary>
/// 明细
/// </summary>
[Display(Name = "明细")]
public ItemTransformNoteDetailExchangeDto Detail { get; set; } = new();
}

5
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/TransferLogs/TransferLogAppService.cs

@ -2,6 +2,7 @@ using System.Collections.Generic;
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 Win_in.Sfs.Basedata.Application.Contracts;
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;
using Win_in.Sfs.Wms.Inventory.Application.Contracts; using Win_in.Sfs.Wms.Inventory.Application.Contracts;
@ -23,15 +24,17 @@ public class TransferLogAppService
{ {
private readonly ITransferLogManager _transferLogManager; private readonly ITransferLogManager _transferLogManager;
private readonly IInterfaceCalendarAclService _interfaceCalendarAclService; private readonly IInterfaceCalendarAclService _interfaceCalendarAclService;
private readonly ILocationAppService _locationAppService;
public TransferLogAppService( public TransferLogAppService(
ITransferLogRepository repository ITransferLogRepository repository
, ITransferLogManager transferLogManager , ITransferLogManager transferLogManager
, IInterfaceCalendarAclService interfaceCalendarAclService , IInterfaceCalendarAclService interfaceCalendarAclService
) : base(repository) , ILocationAppService locationAppService) : base(repository)
{ {
_transferLogManager = transferLogManager; _transferLogManager = transferLogManager;
_interfaceCalendarAclService = interfaceCalendarAclService; _interfaceCalendarAclService = interfaceCalendarAclService;
_locationAppService = locationAppService;
} }
[HttpPost("add")] [HttpPost("add")]

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Bases/Inputs/SfsStoreDetailWithFromToInputBase.cs

@ -150,4 +150,5 @@ public abstract class SfsStoreDetailWithFromToInputBase
[Display(Name = "目标库存状态")] [Display(Name = "目标库存状态")]
public EnumInventoryStatus ToStatus { get; set; } public EnumInventoryStatus ToStatus { get; set; }
} }

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

@ -48,4 +48,10 @@ public interface IPurchaseReceiptJobAppService
/// <param name="noCache"></param> /// <param name="noCache"></param>
/// <returns></returns> /// <returns></returns>
Task<PurchaseReceiptJobDTO> GetNoCacheAsync(Guid id); Task<PurchaseReceiptJobDTO> GetNoCacheAsync(Guid id);
/// <summary>
/// 根据收货编号获取收货任务
/// </summary>
/// <returns></returns>
Task<List<PurchaseReceiptJobDTO>> GetListBySupplierCodeOnTodayAsync(string supplierCode);
} }

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/InspectNotes/IInspectNoteAppService.cs

@ -21,4 +21,6 @@ public interface IInspectNoteAppService : ISfsStoreMasterReadOnlyAppServiceBase
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
Task<List<InspectNoteDTO>> CreateSummaryDetailAndDetailByIdAsync(Guid id, InspectNoteEditInput input); Task<List<InspectNoteDTO>> CreateSummaryDetailAndDetailByIdAsync(Guid id, InspectNoteEditInput input);
Task<List<InspectNoteDetailDTO>> GetInspectNoteDetailByToDayTaskAsync();
} }

5
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/ItemTransformNotes/DTOs/ItemTransformNoteDTO.cs

@ -19,5 +19,8 @@ public class ItemTransformNoteDTO : SfsStoreDTOBase<ItemTransformNoteDetailDTO>,
[Display(Name = "任务单号")] [Display(Name = "任务单号")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string JobNumber { get; set; } public string JobNumber { get; set; }
/// <summary>
/// 调整类型
/// </summary>
public string Type { get; set; }
} }

6
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/ItemTransformNotes/DTOs/ItemTransformNoteDetailDTO.cs

@ -214,7 +214,11 @@ public class ItemTransformNoteDetailDTO : SfsStoreDetailDTOBase
/// </summary> /// </summary>
[Display(Name = "目标ERP储位")] [Display(Name = "目标ERP储位")]
public string ToLocationErpCode { get; set; } public string ToLocationErpCode { get; set; }
/// <summary>
/// ERP库位
/// </summary>
[Display(Name = "ERP库位")]
public string LocationErpCode { get; set; }
/// <summary> /// <summary>
/// 目标仓库 /// 目标仓库
/// </summary> /// </summary>

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Orders/PurchaseOrders/IPurchaseOrderAppService.cs

@ -37,4 +37,6 @@ public interface IPurchaseOrderAppService
/// <param name="inputs"></param> /// <param name="inputs"></param>
/// <returns></returns> /// <returns></returns>
Task<List<PurchaseOrderDTO>> CreateManyAsync(List<PurchaseOrderEditInput> inputs); Task<List<PurchaseOrderDTO>> CreateManyAsync(List<PurchaseOrderEditInput> inputs);
Task<List<PurchaseOrderDTO>> GetListBySupplierCodeAsync(string supplierCode, string itemCode);
} }

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Plans/SupplierAsns/ISupplierAsnAppService.cs

@ -34,4 +34,6 @@ public interface ISupplierAsnAppService
Task<string> GenerateSupplierAsnNumberAsync(DateTime activeDate); Task<string> GenerateSupplierAsnNumberAsync(DateTime activeDate);
Task UpdateStatusAsync(string asnNumber, EnumSupplierAsnStatus status); Task UpdateStatusAsync(string asnNumber, EnumSupplierAsnStatus status);
Task<List<SupplierAsnDTO>> GetForTodayListAsync();
} }

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

@ -191,6 +191,21 @@ public class PurchaseReceiptJobAppService :
return ObjectMapper.Map<PurchaseReceiptJob, PurchaseReceiptJobDTO>(entity); return ObjectMapper.Map<PurchaseReceiptJob, PurchaseReceiptJobDTO>(entity);
} }
/// <summary>
/// 根据供应商编号获取收货任务
/// </summary>
/// <returns></returns>
[HttpPost("get-by-supplier-code-on-today/{supplierCode}")]
public virtual async Task<List<PurchaseReceiptJobDTO>> GetListBySupplierCodeOnTodayAsync(string supplierCode)
{
var purchaseReceiptJobs = await _repository.GetListAsync(p =>
p.SupplierCode == supplierCode &&
p.PlanArriveDate.Year == DateTime.Now.Year &&
p.PlanArriveDate.Month == DateTime.Now.Month &&
p.PlanArriveDate.Day == DateTime.Now.Day);
var dto = ObjectMapper.Map<List<PurchaseReceiptJob>, List<PurchaseReceiptJobDTO>>(purchaseReceiptJobs);
return dto;
}
#endregion #endregion
/// <summary> /// <summary>

25
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/InspectNotes/InspectNoteAppService.cs

@ -87,4 +87,29 @@ public class InspectNoteAppService : SfsStoreWithDetailsAppServiceBase<
return ObjectMapper.Map<List<InspectNote>, List<InspectNoteDTO>>(inspectNotes); return ObjectMapper.Map<List<InspectNote>, List<InspectNoteDTO>>(inspectNotes);
} }
[HttpPost("detail-list/by-to-day")]
public virtual async Task<List<InspectNoteDetailDTO>> GetInspectNoteDetailByToDayTaskAsync()
{
var entitys = await _repository.GetListAsync(
p => p.Details.Any(
y => y.InspectDate.Year == DateTime.Now.Year
&& y.InspectDate.Month == DateTime.Now.Month
&& y.InspectDate.Day == DateTime.Now.Day), true
).ConfigureAwait(false);
List<InspectNoteDetail> list = new List<InspectNoteDetail>();
foreach (var entity in entitys)
{
list.AddRange(entity.Details.Where(y => y.InspectDate.Year == DateTime.Now.Year
&& y.InspectDate.Month == DateTime.Now.Month
&& y.InspectDate.Day == DateTime.Now.Day));
}
var detailDtos = ObjectMapper.Map<List<InspectNoteDetail>, List<InspectNoteDetailDTO>>(list);
return detailDtos;
}
} }

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

@ -256,4 +256,22 @@ public class PurchaseOrderAppService :
return dtos; return dtos;
} }
[HttpGet("get-list-by-supplier-code-and-item-code")]
public virtual async Task<List<PurchaseOrderDTO>> GetListBySupplierCodeAsync(string supplierCode, string itemCode)
{
var entitys = await _repository.GetListAsync(p => p.Details.Any(y => y.ItemCode == itemCode) && p.SupplierCode == supplierCode);
List<PurchaseOrder> list = new List<PurchaseOrder>();
foreach (var entity in entitys)
{
var purchaseOrder = await _repository.GetAsync(entity.Id);
list.Add(purchaseOrder);
}
var dtos = ObjectMapper.Map<List<PurchaseOrder>, List<PurchaseOrderDTO>>(list);
return dtos;
}
} }

9
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Plans/SupplierAsns/SupplierAsnAppService.cs

@ -96,6 +96,15 @@ public class SupplierAsnAppService :
await _repository.UpdateAsync(supplierAsn).ConfigureAwait(false); await _repository.UpdateAsync(supplierAsn).ConfigureAwait(false);
} }
[HttpGet("list-for-today")]
public virtual async Task<List<SupplierAsnDTO>> GetForTodayListAsync()
{
var entities = await _repository.GetListAsync(
p => p.PlanArriveDate.Year == DateTime.Now.Year && p.PlanArriveDate.Month == DateTime.Now.Month &&
p.PlanArriveDate.Day == DateTime.Now.Day, true);
return ObjectMapper.Map<List<SupplierAsn>, List<SupplierAsnDTO>>(entities);
}
#endregion #endregion

6
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/InspectNotes/InspectNoteDetail.cs

@ -1,3 +1,4 @@
using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
@ -161,4 +162,9 @@ public class InspectNoteDetail : SfsStoreDetailWithLotPackingLocationStatusEntit
[Column(TypeName = "decimal(18,6)")] [Column(TypeName = "decimal(18,6)")]
public decimal StdPackQty { get; set; } public decimal StdPackQty { get; set; }
/// <summary>
/// 质检时间
/// </summary>
[Display(Name = "质检时间")]
public DateTime InspectDate { get; set; }
} }

40
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/IssueJobAutoMapperProfile.cs

@ -62,31 +62,31 @@ public partial class StoreEventAutoMapperProfile : Profile
.Ignore(x => x.ExtraProperties); .Ignore(x => x.ExtraProperties);
CreateMap<IssueJob, IssueNoteEditInput>() CreateMap<IssueJob, IssueNoteEditInput>()
.ForMember(x => x.RequestNumber, y => y.MapFrom(d => d.MaterialRequestNumber))
.Ignore(x => x.Confirmed) .Ignore(x => x.Confirmed)
.Ignore(x => x.JobNumber) .Ignore(x => x.JobNumber)
.Ignore(x => x.RequestNumber)
.Ignore(x => x.ActiveDate) .Ignore(x => x.ActiveDate)
; ;
CreateMap<IssueJobDetail, IssueNoteDetailInput>() CreateMap<IssueJobDetail, IssueNoteDetailInput>()
.Ignore(x => x.IssueTime) .ForMember(x => x.Qty, y => y.MapFrom(d => d.HandledQty))
.Ignore(x => x.FromPackingCode) .ForMember(x => x.IssueTime, y => y.MapFrom(d => DateTime.Now))
.Ignore(x => x.ToPackingCode) .ForMember(x => x.FromPackingCode, y => y.MapFrom(d =>d.HandledPackingCode))
.Ignore(x => x.FromContainerCode) .ForMember(x => x.ToPackingCode, y => y.MapFrom(d => d.HandledPackingCode))
.Ignore(x => x.ToContainerCode) .ForMember(x => x.FromContainerCode, y => y.MapFrom(d => d.HandledContainerCode))
.Ignore(x => x.FromLot) .ForMember(x => x.ToContainerCode, y => y.MapFrom(d => d.HandledContainerCode))
.Ignore(x => x.ToLot) .ForMember(x => x.FromLot, y => y.MapFrom(d => d.HandledLot))
.Ignore(x => x.SupplierBatch) .ForMember(x => x.ToLot, y => y.MapFrom(d => d.HandledLot))
.Ignore(x => x.ArriveDate) .ForMember(x => x.SupplierBatch, y => y.MapFrom(d => d.HandledSupplierBatch))
.Ignore(x => x.ProduceDate) .ForMember(x => x.ArriveDate, y => y.MapFrom(d => d.HandledArriveDate))
.Ignore(x => x.ExpireDate) .ForMember(x => x.ProduceDate, y => y.MapFrom(d => d.HandledProduceDate))
.Ignore(x => x.FromLocationCode) .ForMember(x => x.ExpireDate, y => y.MapFrom(d => d.ExpiredTime))
.Ignore(x => x.FromLocationArea) .ForMember(x => x.FromLocationCode, y => y.MapFrom(d => d.HandledFromLocationCode))
.Ignore(x => x.FromLocationGroup) .ForMember(x => x.FromLocationArea, y => y.MapFrom(d => d.HandledFromLocationArea))
.Ignore(x => x.FromLocationErpCode) .ForMember(x => x.FromLocationGroup, y => y.MapFrom(d => d.HandledFromLocationGroup))
.Ignore(x => x.FromWarehouseCode) .ForMember(x => x.FromLocationErpCode, y => y.MapFrom(d => d.HandledFromLocationErpCode))
.Ignore(x => x.FromStatus) .ForMember(x => x.FromWarehouseCode, y => y.MapFrom(d => d.HandledFromWarehouseCode))
.Ignore(x => x.ToStatus) .ForMember(x => x.FromStatus, y => y.MapFrom(d => d.Status))
.Ignore(x => x.Qty) .ForMember(x => x.ToStatus, y => y.MapFrom(d => d.Status))
; ;
} }
} }

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

@ -187,6 +187,7 @@ public class MaterialRequestEventHandler
job.WarehouseCode = fromLocation.WarehouseCode; job.WarehouseCode = fromLocation.WarehouseCode;
job.ProdLine = fromLocation.LocationGroupCode; job.ProdLine = fromLocation.LocationGroupCode;
job.Worker = materialRequest.Worker; job.Worker = materialRequest.Worker;
job.MaterialRequestNumber = materialRequest.Number;
return job; return job;
} }

65
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/IssueNoteEventHandler.cs

@ -4,6 +4,7 @@ using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.EventBus; using Volo.Abp.EventBus;
using Volo.Abp.Uow; using Volo.Abp.Uow;
using Win_in.Sfs.Basedata.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.Shared.Event;
using Win_in.Sfs.Wms.Inventory.Application.Contracts; using Win_in.Sfs.Wms.Inventory.Application.Contracts;
@ -20,6 +21,13 @@ public class IssueNoteEventHandler
{ {
private const EnumTransType TransType = EnumTransType.Issue; private const EnumTransType TransType = EnumTransType.Issue;
private readonly ILocationAppService _locationAppService;
public IssueNoteEventHandler(ILocationAppService locationAppService)
{
_locationAppService = locationAppService;
}
[UnitOfWork] [UnitOfWork]
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<IssueNote> eventData) public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<IssueNote> eventData)
{ {
@ -83,42 +91,48 @@ public class IssueNoteEventHandler
{ {
var transferLog = ObjectMapper.Map<IssueNoteDetail, TransferLogEditInput>(detail); var transferLog = ObjectMapper.Map<IssueNoteDetail, TransferLogEditInput>(detail);
LocationDTO fromLocationDTO = null;
LocationDTO toLocationDTO = null;
if (issueNote.UseOnTheWayLocation) if (issueNote.UseOnTheWayLocation)
{ {
var location = await LocationAclService.GetByCodeAsync(detail.OnTheWayLocationCode).ConfigureAwait(false); var location = await _locationAppService.GetByCodeAsync(detail.OnTheWayLocationCode).ConfigureAwait(false);
switch (route) switch (route)
{ {
case EnumTransferRoute.SourceToOnTheWay: case EnumTransferRoute.SourceToOnTheWay:
detail.ToLocationCode = detail.OnTheWayLocationCode; fromLocationDTO = await _locationAppService.GetByCodeAsync(detail.FromLocationCode).ConfigureAwait(false);
detail.ToLocationErpCode = location.ErpLocationCode;
detail.ToWarehouseCode = location.WarehouseCode; toLocationDTO = await _locationAppService.GetByCodeAsync(detail.OnTheWayLocationCode).ConfigureAwait(false);
detail.ToLocationArea = location.AreaCode;
break; break;
case EnumTransferRoute.OnTheWayToDestination: case EnumTransferRoute.OnTheWayToDestination:
detail.FromLocationCode = detail.OnTheWayLocationCode; fromLocationDTO = await _locationAppService.GetByCodeAsync(detail.OnTheWayLocationCode).ConfigureAwait(false);
detail.FromLocationErpCode = location.ErpLocationCode;
detail.FromWarehouseCode = location.WarehouseCode; toLocationDTO = await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false);
detail.FromLocationArea = location.AreaCode;
await RemovePackingCodeAndContainerCodeAndLotAsync(transferLog).ConfigureAwait(false);
break; break;
case EnumTransferRoute.SourceToDestination: case EnumTransferRoute.SourceToDestination:
default: default:
throw new ArgumentOutOfRangeException(nameof(route), route, null); throw new ArgumentOutOfRangeException(nameof(route), route, null);
} }
} }
else
if (issueNote.UseOnTheWayLocation)
{ {
transferLog.FromLocationCode = detail.OnTheWayLocationCode; fromLocationDTO = await _locationAppService.GetByCodeAsync(detail.FromLocationCode).ConfigureAwait(false);
var location = await LocationAclService.GetByCodeAsync(detail.OnTheWayLocationCode).ConfigureAwait(false); toLocationDTO = await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false);
transferLog.FromLocationGroup = location.LocationGroupCode;
transferLog.FromLocationArea = location.AreaCode;
transferLog.FromLocationErpCode = location.ErpLocationCode;
transferLog.FromWarehouseCode=location.WarehouseCode;
} }
transferLog.TransType = TransType; transferLog.FromLocationCode = fromLocationDTO.Code;
transferLog.FromLocationArea = fromLocationDTO.AreaCode;
transferLog.FromLocationErpCode = fromLocationDTO.ErpLocationCode;
transferLog.FromLocationGroup = fromLocationDTO.LocationGroupCode;
transferLog.ToLocationCode = toLocationDTO.Code;
transferLog.ToLocationArea = toLocationDTO.AreaCode;
transferLog.ToLocationErpCode = toLocationDTO.ErpLocationCode;
transferLog.ToLocationGroup = toLocationDTO.LocationGroupCode;
transferLog.TransSubType = Enum.Parse<EnumTransSubType>(issueNote.RequestType); transferLog.TransSubType = Enum.Parse<EnumTransSubType>(issueNote.RequestType);
transferLog.Worker = issueNote.Worker; transferLog.TransType = TransType;
transferLog.DocNumber = issueNote.Number; transferLog.DocNumber = issueNote.Number;
transferLog.JobNumber = issueNote.JobNumber; transferLog.JobNumber = issueNote.JobNumber;
@ -128,4 +142,17 @@ public class IssueNoteEventHandler
return transferLogs; return transferLogs;
} }
private async Task RemovePackingCodeAndContainerCodeAndLotAsync(TransferLogEditInput transferLogCreateInput)
{
transferLogCreateInput.ToPackingCode = "";
transferLogCreateInput.ToLot = "";
transferLogCreateInput.ToContainerCode = "";
transferLogCreateInput.FromPackingCode = "";
transferLogCreateInput.FromLot = "";
transferLogCreateInput.FromContainerCode = "";
}
} }

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/ScrapNoteEventHandler.cs

@ -7,7 +7,6 @@ using Volo.Abp.Uow;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Event; using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Inventory.Application.Contracts; 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;
using Win_in.Sfs.Wms.Store.Domain.Shared; using Win_in.Sfs.Wms.Store.Domain.Shared;
using Win_in.Sfs.Wms.Store.Event.Transaction; using Win_in.Sfs.Wms.Store.Event.Transaction;

Loading…
Cancel
Save