From 5bc0d94b3228fcc14c477cd84c499bf847060384 Mon Sep 17 00:00:00 2001
From: lvzb <35200379@qq.com>
Date: Thu, 9 May 2024 17:22:26 +0800
Subject: [PATCH] =?UTF-8?q?=E6=88=90=E5=93=81=E5=8F=91=E8=BF=90mes?=
=?UTF-8?q?=E5=AF=B9=E6=8E=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Delivery/Delivery.cs | 66 ++++++++
.../Delivery/DeliveryManager.cs | 45 ++++++
.../Delivery/IDeliveryManager.cs | 10 ++
.../Delivery/IDeliveryRepository.cs | 8 +
...xchangeDbContextModelCreatingExtensions.cs | 1 +
...ExchangeEntityFrameworkCoreFawtygModule.cs | 3 +
...eliveryDbContextModelCreatingExtensions.cs | 35 ++++
.../Delivery/DeliveryEfCoreRepository.cs | 18 +++
.../IMesDbContext.cs | 3 +
.../MesDbContext.cs | 2 +
.../FawtygAutoMapperProfile.cs | 24 ++-
.../Incoming/DeliveryConverter.cs | 106 +++++++++++++
.../Incoming/DeliveryReader.cs | 120 ++++++++++++++
.../Incoming/FrozenReader.cs | 4 +-
.../Incoming/MesIncomingBackgroundWorker.cs | 40 +++--
.../IncomingToWmsExtensions.cs | 6 +
.../IncomingToWmsWorker.cs | 7 +-
.../DeliverNoteDetailExchangeDto.cs | 15 ++
.../DeliverRequestDetailExchangeDto.cs | 43 +++++
.../DeliverRequestExchangeDto.cs | 43 +++++
...Wms.DataExchange.Application.Contracts.xml | 85 ++++++++++
.../Enums/EnumIncomingDataType.cs | 6 +-
.../DeliverNotes/DTOs/DeliverNoteDetailDTO.cs | 15 ++
.../Inputs/DeliverNoteDetailInput.cs | 15 ++
.../DTOs/DeliverRequestDetailDTO.cs | 16 ++
.../Inputs/DeliverRequestDetailInput.cs | 15 ++
.../Inputs/DeliverRequestImportInput.cs | 16 ++
.../DeliverRequestAppService.cs | 63 +++++---
.../DeliverRequestAutoMapperProfile.cs | 3 +
.../DeliverRequestFisAppService.cs | 2 +-
...lannedIssueRequestForDongyangAppService.cs | 17 +-
...nnedReceiptRequestForDongyangAppService.cs | 17 +-
.../Notes/DeliverNotes/DeliverNoteDetail.cs | 12 ++
.../DeliverRequests/DeliverRequest.cs | 1 -
.../DeliverRequests/DeliverRequestDetail.cs | 13 +-
.../DeliverRequests/DeliverRequestManager.cs | 22 +++
.../DeliverRequests/IDeliverRequestManager.cs | 2 +
...verNoteDbContextModelCreatingExtensions.cs | 4 +-
...RequestDbContextModelCreatingExtensions.cs | 4 +-
.../Jobs/DeliverJobAutoMapperProfile.cs | 3 +
.../Requests/DeliverRequestMapperProfile.cs | 3 +
.../Requests/DeliverRequestEventHandler.cs | 149 +++++++++++++++---
42 files changed, 997 insertions(+), 85 deletions(-)
create mode 100644 be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/Delivery.cs
create mode 100644 be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/DeliveryManager.cs
create mode 100644 be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/IDeliveryManager.cs
create mode 100644 be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/IDeliveryRepository.cs
create mode 100644 be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Delivery/DeliveryDbContextModelCreatingExtensions.cs
create mode 100644 be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Delivery/DeliveryEfCoreRepository.cs
create mode 100644 be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/DeliveryConverter.cs
create mode 100644 be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/DeliveryReader.cs
create mode 100644 be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/DeliverRequest/DeliverRequestDetailExchangeDto.cs
create mode 100644 be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/DeliverRequest/DeliverRequestExchangeDto.cs
diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/Delivery.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/Delivery.cs
new file mode 100644
index 000000000..85f87fca3
--- /dev/null
+++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/Delivery.cs
@@ -0,0 +1,66 @@
+using System.ComponentModel.DataAnnotations;
+using Volo.Abp.Domain.Entities;
+
+namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery;
+public class Delivery : Entity
+{
+ ///
+ /// 序号
+ ///
+ [Key]
+ public string mesout_delivery_id { get; set; }
+ ///
+ /// 类型
+ ///
+ public string mesout_delivery_type { get; set; }
+ ///
+ /// 物料
+ ///
+ public string mesout_delivery_part { get; set; }
+ ///
+ /// 底盘号
+ ///
+ public string mesout_delivery_identity_no { get; set; }
+ ///
+ /// 发红储位
+ ///
+ public string mesout_delivery_loc { get; set; }
+ ///
+ /// 数量
+ ///
+ public decimal mesout_delivery_num { get; set; }
+ ///
+ /// 客户代码
+ ///
+ public string mesout_delivery_customer { get; set; }
+
+ ///
+ /// 车牌号
+ ///
+ public string mesout_delivery_carno { get; set; }
+ ///
+ /// 写入时间
+ ///
+ public string mesout_delivery_wt { get; set; }
+ ///
+ /// 发货单号
+ ///
+ public string mesout_delivery_no { get; set; }
+ ///
+ /// 器具号
+ ///
+ public string mesout_delivery_container { get; set; }
+ ///
+ /// 发货计划号
+ ///
+ public string mesout_delivery_plan { get; set; }
+ ///
+ /// 是否读取(0,1)
+ ///
+ public long Yl1 { get; set; }
+
+ public override object[] GetKeys()
+ {
+ return new object[] { mesout_delivery_id };
+ }
+}
diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/DeliveryManager.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/DeliveryManager.cs
new file mode 100644
index 000000000..c5788df2c
--- /dev/null
+++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/DeliveryManager.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Volo.Abp.Domain.Services;
+
+namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery;
+public class DeliveryManager : DomainService, IDeliveryManager
+{
+ private readonly IDeliveryRepository _repository;
+
+ public DeliveryManager(IDeliveryRepository repository)
+ {
+ _repository = repository;
+ }
+ public virtual async Task> GetToBeProcessedListAsync()
+ {
+ var plans = await _repository.GetListAsync(p => p.Yl1 == 0).ConfigureAwait(false);
+ return plans;
+
+ }
+ public virtual async Task UpdateProcesseErrordListAsync(List entities)
+ {
+ var ids = entities.Select(p => p.mesout_delivery_id);
+ var plans = await _repository.GetListAsync(p => ids.Contains(p.mesout_delivery_id)).ConfigureAwait(false);
+ plans.ForEach(p =>
+ {
+ p.Yl1 = 2;
+ // p.WmsDate = Clock.Now;
+ });
+ await _repository.UpdateManyAsync(plans).ConfigureAwait(false);
+ }
+ public virtual async Task UpdateProcessedListAsync(List entities)
+ {
+ var ids = entities.Select(p => p.mesout_delivery_id);
+ var plans = await _repository.GetListAsync(p => ids.Contains(p.mesout_delivery_id)).ConfigureAwait(false);
+ plans.ForEach(p =>
+ {
+ p.Yl1 = 1;
+
+ // p.WmsDate = Clock.Now;
+ });
+ await _repository.UpdateManyAsync(plans).ConfigureAwait(false);
+ }
+}
diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/IDeliveryManager.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/IDeliveryManager.cs
new file mode 100644
index 000000000..222614bc1
--- /dev/null
+++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/IDeliveryManager.cs
@@ -0,0 +1,10 @@
+using System.Collections.Generic;
+using System.Threading.Tasks;
+
+namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery;
+public interface IDeliveryManager
+{
+ Task> GetToBeProcessedListAsync();
+ Task UpdateProcessedListAsync(List entities);
+ Task UpdateProcesseErrordListAsync(List entities);
+}
\ No newline at end of file
diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/IDeliveryRepository.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/IDeliveryRepository.cs
new file mode 100644
index 000000000..77310f439
--- /dev/null
+++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/IDeliveryRepository.cs
@@ -0,0 +1,8 @@
+using Volo.Abp.Domain.Repositories;
+
+namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery;
+
+public interface IDeliveryRepository : IRepository
+{
+
+}
diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/DataExchangeDbContextModelCreatingExtensions.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/DataExchangeDbContextModelCreatingExtensions.cs
index 8b8e53a60..517204043 100644
--- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/DataExchangeDbContextModelCreatingExtensions.cs
+++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/DataExchangeDbContextModelCreatingExtensions.cs
@@ -29,5 +29,6 @@ public static class DataExchangeDbContextModelCreatingExtensions
builder.ConfigureBackflu(options);
builder.ConfigureQtyrfe(options);
builder.ConfigureFrozen(options);
+ builder.ConfigureDelivery(options);
}
}
diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/DataExchangeEntityFrameworkCoreFawtygModule.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/DataExchangeEntityFrameworkCoreFawtygModule.cs
index e1cf9d642..22322c164 100644
--- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/DataExchangeEntityFrameworkCoreFawtygModule.cs
+++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/DataExchangeEntityFrameworkCoreFawtygModule.cs
@@ -3,6 +3,7 @@ using Volo.Abp.BackgroundJobs.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.MySQL;
using Volo.Abp.Modularity;
+using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Frozen;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.MesOut;
@@ -36,5 +37,7 @@ public class DataExchangeEntityFrameworkCoreFawtygModule : AbpModule
context.Services.AddTransient();
context.Services.AddTransient();
context.Services.AddTransient();
+ context.Services.AddTransient();
+
}
}
diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Delivery/DeliveryDbContextModelCreatingExtensions.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Delivery/DeliveryDbContextModelCreatingExtensions.cs
new file mode 100644
index 000000000..4ae9db369
--- /dev/null
+++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Delivery/DeliveryDbContextModelCreatingExtensions.cs
@@ -0,0 +1,35 @@
+using Microsoft.EntityFrameworkCore;
+using Volo.Abp.EntityFrameworkCore.Modeling;
+using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery;
+
+namespace Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes;
+
+public static class DeliveryDbContextModelCreatingExtensions
+{
+ public static void ConfigureDelivery(this ModelBuilder builder, MesModelBuilderConfigurationOptions options)
+ {
+ builder.Entity(b =>
+ {
+ //Configure table & schema Name
+ b.ToTable(options.TablePrefix + "mesout_delivery", options.Schema);
+ //Configure ABP properties
+ b.ConfigureByConvention();
+
+ //Properties
+ b.Property(q => q.mesout_delivery_id).HasMaxLength(20);
+ b.Property(q => q.mesout_delivery_type).HasMaxLength(1);
+ b.Property(q => q.mesout_delivery_part).HasMaxLength(20);
+ b.Property(q => q.mesout_delivery_identity_no).HasMaxLength(20);
+ b.Property(q => q.mesout_delivery_loc).HasMaxLength(10);
+ b.Property(q => q.mesout_delivery_num).HasPrecision(10, 2);
+ b.Property(q => q.mesout_delivery_customer).HasMaxLength(10);
+ b.Property(q => q.mesout_delivery_carno).HasMaxLength(10);
+ b.Property(q => q.mesout_delivery_wt).HasMaxLength(20);
+ b.Property(q => q.mesout_delivery_no).HasMaxLength(20);
+ b.Property(q => q.mesout_delivery_container).HasMaxLength(20);
+ b.Property(q => q.mesout_delivery_plan).HasMaxLength(20);
+ b.Property(q => q.Yl1);
+ });
+
+ }
+}
diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Delivery/DeliveryEfCoreRepository.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Delivery/DeliveryEfCoreRepository.cs
new file mode 100644
index 000000000..ef2c6e155
--- /dev/null
+++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Delivery/DeliveryEfCoreRepository.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
+using Volo.Abp.EntityFrameworkCore;
+using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery;
+
+namespace Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes;
+
+public class DeliveryEfCoreRepository : EfCoreRepository,IDeliveryRepository
+{
+ public DeliveryEfCoreRepository(IDbContextProvider dbContextProvider)
+ : base(dbContextProvider)
+ {
+ }
+}
diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/IMesDbContext.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/IMesDbContext.cs
index 0e6ea26bb..98a384453 100644
--- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/IMesDbContext.cs
+++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/IMesDbContext.cs
@@ -1,6 +1,7 @@
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore;
+using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Frozen;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.MesOut;
@@ -26,4 +27,6 @@ public interface IMesDbContext : IEfCoreDbContext
DbSet Qtyrfe { get; }
DbSet Frozen { get; }
+
+ DbSet Delivery { get; }
}
diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/MesDbContext.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/MesDbContext.cs
index cdead9f76..66350a6c2 100644
--- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/MesDbContext.cs
+++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/MesDbContext.cs
@@ -1,6 +1,7 @@
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore;
+using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Frozen;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.MesOut;
@@ -28,6 +29,7 @@ public class MesDbContext :
public virtual DbSet Frozen { get; }
+ public virtual DbSet Delivery { get; }
public MesDbContext(DbContextOptions options)
: base(options)
{
diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/FawtygAutoMapperProfile.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/FawtygAutoMapperProfile.cs
index 591ccdce7..124c9f0a2 100644
--- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/FawtygAutoMapperProfile.cs
+++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/FawtygAutoMapperProfile.cs
@@ -3,6 +3,8 @@ using Volo.Abp.AutoMapper;
using Win_in.Sfs.Shared.Application;
using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.WMS.BackFlushNote;
+using Win_in.Sfs.Wms.DataExchange.WMS.DeliverNote;
+using Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest;
using Win_in.Sfs.Wms.DataExchange.WMS.MaterialRequest;
using Win_in.Sfs.Wms.DataExchange.WMS.MesNote;
using Win_in.Sfs.Wms.DataExchange.WMS.PCK;
@@ -222,7 +224,6 @@ public class FawtygAutoMapperProfile : Profile
;
CreateMap()
- .Ignore(x => x.Details)
.Ignore(x => x.ExtraProperties)
.Ignore(x => x.JobNumber)
.Ignore(x => x.Details)
@@ -253,5 +254,26 @@ public class FawtygAutoMapperProfile : Profile
.Ignore(x => x.Uom)
.Ignore(x => x.StdPackQty)
;
+
+ CreateMap()
+ .Ignore(x => x.DeliverPlanNumber)
+ .Ignore(x => x.ExtraProperties)
+ .Ignore(x => x.Details)
+ .Ignore(x=>x.CustomerAddressCode)
+ .Ignore(x => x.ExtraProperties)
+ .Ignore(x => x.AutoSubmit)
+ .Ignore(x => x.AutoAgree)
+ .Ignore(x => x.AutoHandle)
+ .Ignore(x => x.AutoCompleteJob)
+ .Ignore(x => x.DirectCreateNote)
+ ;
+ CreateMap()
+ .Ignore(x => x.Uom)
+ .Ignore(x => x.StdPackQty)
+ .Ignore(x => x.Remark)
+ .Ignore(x => x.ItemName)
+ .Ignore(x => x.ItemDesc1)
+ .Ignore(x => x.ItemDesc2);
+ ;
}
}
diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/DeliveryConverter.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/DeliveryConverter.cs
new file mode 100644
index 000000000..2f321ce47
--- /dev/null
+++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/DeliveryConverter.cs
@@ -0,0 +1,106 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text.Json;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Volo.Abp.ObjectMapping;
+using Win_in.Sfs.Basedata.Application.Contracts;
+using Win_in.Sfs.Wms.DataExchange.Domain;
+using Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest;
+using Win_in.Sfs.Wms.Store.Application.Contracts;
+
+namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent.Incoming;
+public class DeliveryConverter : IIncomingConverter
+{
+ private readonly IIncomingFromExternalManager _incomingFromExternalManager;
+ private readonly IIncomingToWmsManager _incomingToWmsManager;
+ private readonly IObjectMapper _objectMapper;
+ private readonly IItemBasicAppService _itemBasicAppService;
+ private readonly ICustomerAppService _customerAppService;
+ private readonly ILogger _logger;
+
+ public DeliveryConverter(
+ IIncomingToWmsManager incomingToWmsManager
+ , IObjectMapper objectMapper
+ , IItemBasicAppService itemBasicAppService
+ , ILogger logger,
+ ICustomerAppService customerAppService,
+ IIncomingFromExternalManager incomingFromExternalManager)
+ {
+ _incomingToWmsManager = incomingToWmsManager;
+ _objectMapper = objectMapper;
+ _itemBasicAppService = itemBasicAppService;
+ _logger = logger;
+ _customerAppService = customerAppService;
+ _incomingFromExternalManager = incomingFromExternalManager;
+ }
+
+ public virtual async Task ConvertAsync(List incomingFromExternalList)
+ {
+ if (!incomingFromExternalList.Any())
+ {
+ _logger.LogInformation("no Deliverys");
+ return;
+ }
+
+ //按Number合并DeliveryRequest单据
+ var transferRequestList = await BuildIncomingToWmsOfDeliveryRequestAsync(incomingFromExternalList).ConfigureAwait(false);
+ await _incomingToWmsManager.CreateManyAsync(transferRequestList).ConfigureAwait(false);
+ //归档
+ await _incomingFromExternalManager.ArchiveManyAsync(incomingFromExternalList).ConfigureAwait(false);
+ }
+
+ private async Task> BuildIncomingToWmsOfDeliveryRequestAsync(List incomingDataList)
+ {
+ var incomingToWmsList = new List();
+ var groups = incomingDataList.GroupBy(p => new { p.SourceDataGroupCode ,p.SourceDataDetailCode});
+ foreach (var group in groups)
+ {
+ var first = group.First();
+ var incomingToWms = new IncomingToWms()
+ {
+ DataType = first.DataType,
+ DataAction = first.DataAction,
+ SourceSystem = first.SourceSystem,
+ DataIdentityCode = first.SourceDataGroupCode,
+ };
+ incomingToWms.SetEffectiveDate(first.EffectiveDate);
+ var exchangeDeliveryRequest = JsonSerializer.Deserialize(first.DestinationDataContent);
+ var wmsDeliveryRequest = _objectMapper.Map(exchangeDeliveryRequest);
+ wmsDeliveryRequest.Details = new List();
+ var cust= await _customerAppService.GetByCodeAsync(wmsDeliveryRequest.CustomerCode).ConfigureAwait(false);
+ wmsDeliveryRequest.CustomerAddressCode = String.IsNullOrEmpty( cust?.Address)?"无": cust.Address;
+ foreach (var incomingFromExternal in group.ToList())
+ {
+ var transferRequest = JsonSerializer.Deserialize(incomingFromExternal.DestinationDataContent);
+ var wmsDeliveryRequestDetail = _objectMapper.Map(transferRequest.Detail);
+ var item = await _itemBasicAppService.GetByCodeAsync(wmsDeliveryRequestDetail.ItemCode).ConfigureAwait(false);
+ try
+ {
+ if (item != null)
+ {
+ wmsDeliveryRequestDetail.ItemName = item.Name;
+ wmsDeliveryRequestDetail.ItemDesc1 = !string.IsNullOrEmpty(item.Desc1) ? item.Desc1 : "";
+ wmsDeliveryRequestDetail.ItemDesc2 = !string.IsNullOrEmpty(item.Desc2) ? item.Desc2 : "";
+ wmsDeliveryRequestDetail.Uom = !string.IsNullOrEmpty(item.BasicUom) ? item.BasicUom : "";
+ wmsDeliveryRequestDetail.StdPackQty = item.StdPackQty;
+ }
+ }
+ catch (Exception)
+ {
+ wmsDeliveryRequestDetail.ItemName = "";
+ wmsDeliveryRequestDetail.ItemDesc1 = "";
+ wmsDeliveryRequestDetail.ItemDesc2 = "";
+ wmsDeliveryRequestDetail.Uom = "";
+ }
+
+ wmsDeliveryRequest.Details.Add(wmsDeliveryRequestDetail);
+ }
+ incomingToWms.DataContent = JsonSerializer.Serialize(wmsDeliveryRequest);
+ incomingToWmsList.Add(incomingToWms);
+ }
+ return incomingToWmsList;
+ }
+
+}
diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/DeliveryReader.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/DeliveryReader.cs
new file mode 100644
index 000000000..6a5238413
--- /dev/null
+++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/DeliveryReader.cs
@@ -0,0 +1,120 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery;
+using Win_in.Sfs.Wms.DataExchange.Domain.Shared;
+using Win_in.Sfs.Wms.DataExchange.Domain;
+using System.Text.Json;
+using Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest;
+using Win_in.Sfs.Shared.Domain.Shared;
+
+namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent.Incoming;
+
+public class DeliveryReader : IReader
+{
+ private readonly IDeliveryManager _DeliveryManager;
+ private readonly IIncomingFromExternalManager _incomingFromExternalManager;
+ private readonly ILogger _logger;
+
+ public DeliveryReader(
+ IDeliveryManager pillTaskManager
+ , IIncomingFromExternalManager incomingFromExternalManager
+ , ILogger logger
+ )
+ {
+ _DeliveryManager = pillTaskManager;
+ _incomingFromExternalManager = incomingFromExternalManager;
+ _logger = logger;
+ }
+
+ public virtual async Task> ReadAsync()
+
+ {
+ //从MES读取待处理Delivery
+ var toBeProcessedPillTasks = await _DeliveryManager.GetToBeProcessedListAsync().ConfigureAwait(false);
+ if (!toBeProcessedPillTasks.Any())
+ {
+ _logger.LogInformation("no Deliverys");
+ return new List();
+ }
+ //Delivery逐一转换为MaterialRequest
+ var incomingDataList = BuildIncomingFromExternalFromPillTaskAsync(toBeProcessedPillTasks);
+ await _incomingFromExternalManager.CreateManyAsync(incomingDataList).ConfigureAwait(false);
+ //更新MES数据状态
+ await _DeliveryManager.UpdateProcessedListAsync(toBeProcessedPillTasks).ConfigureAwait(false);
+
+ return incomingDataList;
+ }
+
+ private static List BuildIncomingFromExternalFromPillTaskAsync(List toBeProcessedDeliverys)
+ {
+ var incomingDataList = new List();
+ foreach (var Delivery in toBeProcessedDeliverys)
+ {
+ var incomingData = BuildIncomingFromExternal(Delivery);
+
+ incomingData.SetEffectiveDate(DateTime.Now);
+ incomingData.SetSuccess();
+ try
+ {
+ var DetilveryRequest = BuildDeliverRequestCreateInput(Delivery);
+ incomingData.DestinationDataContent = JsonSerializer.Serialize(DetilveryRequest);
+ }
+ catch (Exception ex)
+ {
+ incomingData.SetError(EnumExchangeDataErrorCode.Exception, ex.Message, ex.ToString());
+ }
+
+ incomingDataList.Add(incomingData);
+
+ }
+
+ return incomingDataList;
+ }
+
+ private static IncomingFromExternal BuildIncomingFromExternal(Delivery Delivery)
+ {
+ var incomingData = new IncomingFromExternal()
+ {
+ DataType = EnumIncomingDataType.Delivery.ToString(),
+ DataAction = EnumExchangeDataAction.Add,
+ SourceSystem = EnumSystemType.MES.ToString(),
+ SourceDataId = Delivery.mesout_delivery_id.ToString(),
+ SourceDataGroupCode =Delivery.mesout_delivery_type=="0"? Delivery.mesout_delivery_no : Delivery.mesout_delivery_plan,
+ SourceDataDetailCode = Delivery.mesout_delivery_customer,
+ SourceDataContent = JsonSerializer.Serialize(Delivery),
+ WriteTime = DateTime.Now,
+ Writer = nameof(MesIncomingBackgroundWorker),
+
+ DestinationSystem = EnumSystemType.WMS.ToString(),
+ };
+ return incomingData;
+ }
+
+ private static DeliverRequestExchangeDto BuildDeliverRequestCreateInput(Delivery Delivery)
+ {
+ var mesRequest = new DeliverRequestExchangeDto()
+ {
+ DeliverRequestType = Delivery.mesout_delivery_type == "0" ? EnumDeliverRequestType.FIS : EnumDeliverRequestType.Normal,
+ CustomerCode = Delivery.mesout_delivery_customer,
+ Number = Delivery.mesout_delivery_no,
+ Worker = "MESFY",
+ ActiveDate = DateTime.TryParse(Delivery.mesout_delivery_wt, out DateTime dateTime) ? dateTime : DateTime.Now,
+ DeliverTime = DateTime.TryParse(Delivery.mesout_delivery_wt, out DateTime dateTime1) ? dateTime1 : DateTime.Now
+ };
+ var mesRequestDetail = new DeliverRequestDetailExchangeDto()
+ {
+ ItemCode = Delivery.mesout_delivery_part,
+ Qty = Delivery.mesout_delivery_num,
+ AreaCode = Delivery.mesout_delivery_loc,
+ MesDeliveryNo=Delivery.mesout_delivery_no,
+ MesDeliveryPlan = Delivery.mesout_delivery_plan,
+ IdentityNo =Delivery.mesout_delivery_identity_no
+ };
+ mesRequest.Detail = mesRequestDetail;
+ return mesRequest;
+ }
+
+}
diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/FrozenReader.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/FrozenReader.cs
index 4a2626cb3..75b4f9ba5 100644
--- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/FrozenReader.cs
+++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/FrozenReader.cs
@@ -63,7 +63,7 @@ public class FrozenReader : IReader
incomingData.SetSuccess();
try
{
- var MaterialRequest = BuildTransferNoteCreateInput(Frozen, holdLocationCode);
+ var MaterialRequest = BuildMesNoteCreateInput(Frozen, holdLocationCode);
incomingData.DestinationDataContent = JsonSerializer.Serialize(MaterialRequest);
}
catch (Exception ex)
@@ -97,7 +97,7 @@ public class FrozenReader : IReader
return incomingData;
}
- private static MesNoteExchangeDto BuildTransferNoteCreateInput(Frozen Frozen, string holdLocationCode)
+ private static MesNoteExchangeDto BuildMesNoteCreateInput(Frozen Frozen, string holdLocationCode)
{
var mesNote = new MesNoteExchangeDto()
{
diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesIncomingBackgroundWorker.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesIncomingBackgroundWorker.cs
index c9b2af73c..7ad3cf219 100644
--- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesIncomingBackgroundWorker.cs
+++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesIncomingBackgroundWorker.cs
@@ -96,22 +96,30 @@ public class MesIncomingBackgroundWorker : AsyncPeriodicBackgroundWorkerBase
//await BackFlushConverter.ConvertAsync(backFlushsFromExternalList).ConfigureAwait(false);
- // Logger.LogInformation($"Read TransferNote");//储位调拨
- // var TransferNoteReader = workerContext.ServiceProvider.GetRequiredService();
- //// var TransferNoteConverter = workerContext.ServiceProvider.GetRequiredService();
- // //读取并保存BackFlush
- // var transferNoteFromExternalList = await TransferNoteReader.ReadAsync().ConfigureAwait(false);
- // //转换BackFlush
- // await TransferNoteConverter.ConvertAsync(transferNoteFromExternalList).ConfigureAwait(false);
- // Logger.LogInformation($"Completed: Handling {Incoming}");
-
- Logger.LogInformation($"Read Frozen");//冻结解冻
- var FrozenReader = workerContext.ServiceProvider.GetRequiredService();
- var FrozenConverter = workerContext.ServiceProvider.GetRequiredService();
- //读取并保存BackFlush
- var mesNoteFromExternalList = await FrozenReader.ReadAsync().ConfigureAwait(false);
- //转换BackFlush
- await FrozenConverter.ConvertAsync(mesNoteFromExternalList).ConfigureAwait(false);
+ // Logger.LogInformation($"Read TransferNote");//储位调拨
+ // var TransferNoteReader = workerContext.ServiceProvider.GetRequiredService();
+ //// var TransferNoteConverter = workerContext.ServiceProvider.GetRequiredService();
+ // //读取并保存TransferNote
+ // var transferNoteFromExternalList = await TransferNoteReader.ReadAsync().ConfigureAwait(false);
+ // //转换TransferNote
+ // await TransferNoteConverter.ConvertAsync(transferNoteFromExternalList).ConfigureAwait(false);
+
+ //Logger.LogInformation($"Read Frozen");//冻结解冻
+ //var FrozenReader = workerContext.ServiceProvider.GetRequiredService();
+ // var FrozenConverter = workerContext.ServiceProvider.GetRequiredService();
+ ////读取并保存Frozen
+ //var mesNoteFromExternalList = await FrozenReader.ReadAsync().ConfigureAwait(false);
+ ////转换Frozen
+ //await FrozenConverter.ConvertAsync(mesNoteFromExternalList).ConfigureAwait(false);
+
+
+ Logger.LogInformation($"Read Delivery");//成品发运
+ var DeliveryReader = workerContext.ServiceProvider.GetRequiredService();
+ var DeliveryConverter = workerContext.ServiceProvider.GetRequiredService();
+ //读取并保存Delivery
+ var deliveryNoteFromExternalList = await DeliveryReader.ReadAsync().ConfigureAwait(false);
+ //转换Delivery
+ await DeliveryConverter.ConvertAsync(deliveryNoteFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"Completed: Handling {Incoming}");
}
diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsExtensions.cs b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsExtensions.cs
index 9d87cae93..b36b62210 100644
--- a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsExtensions.cs
+++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsExtensions.cs
@@ -200,6 +200,12 @@ public static class IncomingToWmsExtensions
var mesNoteAppService = workerContext.ServiceProvider.GetRequiredService();
await mesNoteAppService.CreateAsync(mesNote).ConfigureAwait(false);
}
+ public static async Task HandleDeliveryRequestAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext)
+ {
+ var deliverRequest = JsonSerializer.Deserialize(incomingConverted.DataContent);
+ var deliverRequestAppService = workerContext.ServiceProvider.GetRequiredService();
+ await deliverRequestAppService.CreateAsync(deliverRequest).ConfigureAwait(false);
+ }
public static async Task HandleScrapsAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext)
{
diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsWorker.cs b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsWorker.cs
index 44f37ee08..e9f81cc9e 100644
--- a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsWorker.cs
+++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsWorker.cs
@@ -184,8 +184,8 @@ public class IncomingToWmsWorker : AsyncPeriodicBackgroundWorkerBase
await incomingToWms.HandleInventoryLabelsAsync(workerContext).ConfigureAwait(false);
break;
case EnumIncomingDataType.BackFlush:
- // await incomingToWms.HandleBackFlushsAsync(workerContext).ConfigureAwait(false);
- await SendBackFlush(workerContext, incomingToWms).ConfigureAwait(false);
+ await incomingToWms.HandleBackFlushsAsync(workerContext).ConfigureAwait(false);
+ // await SendBackFlush(workerContext, incomingToWms).ConfigureAwait(false);
break;
case EnumIncomingDataType.TransferNote:
await incomingToWms.HandleTransferNoteAsync(workerContext).ConfigureAwait(false);
@@ -193,6 +193,9 @@ public class IncomingToWmsWorker : AsyncPeriodicBackgroundWorkerBase
case EnumIncomingDataType.MesNote:
await incomingToWms.HandleMesNoteAsync(workerContext).ConfigureAwait(false);
break;
+ case EnumIncomingDataType.Delivery:
+ await incomingToWms.HandleDeliveryRequestAsync(workerContext).ConfigureAwait(false);
+ break;
case EnumIncomingDataType.None:
default:
throw new ArgumentOutOfRangeException();
diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/DeliverNote/DeliverNoteDetailExchangeDto.cs b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/DeliverNote/DeliverNoteDetailExchangeDto.cs
index 306172f7e..e0b3bb7d6 100644
--- a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/DeliverNote/DeliverNoteDetailExchangeDto.cs
+++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/DeliverNote/DeliverNoteDetailExchangeDto.cs
@@ -26,4 +26,19 @@ public class DeliverNoteDetailExchangeDto
///
[Display(Name = "数量")]
public decimal Qty { get; set; }
+ ///
+ /// Mes发货单号
+ ///
+ [Display(Name = "Mes发货单号")]
+ public string MesDeliveryNo { get; set; }
+ ///
+ /// Mes发货计划号
+ ///
+ [Display(Name = "Mes发货计划号")]
+ public string MesDeliveryPlan { get; set; }
+ ///
+ /// 底盘号
+ ///
+ [Display(Name = "底盘号")]
+ public string IdentityNo { get; set; }
}
diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/DeliverRequest/DeliverRequestDetailExchangeDto.cs b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/DeliverRequest/DeliverRequestDetailExchangeDto.cs
new file mode 100644
index 000000000..f46e0d787
--- /dev/null
+++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/DeliverRequest/DeliverRequestDetailExchangeDto.cs
@@ -0,0 +1,43 @@
+using System.ComponentModel.DataAnnotations;
+using Win_in.Sfs.Shared.Domain;
+
+namespace Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest;
+public class DeliverRequestDetailExchangeDto
+{
+ ///
+ /// 单据号
+ ///
+ [Display(Name = "单据号")]
+ [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
+ public string Number { get; set; }
+ ///
+ /// 物品代码
+ ///
+ [Display(Name = "物品代码")]
+ public string ItemCode { get; set; }
+ ///
+ /// 来源库区
+ ///
+ [Display(Name = "来源库区")]
+ public string AreaCode { get; set; }
+ ///
+ /// 数量
+ ///
+ [Display(Name = "数量")]
+ public decimal Qty { get; set; }
+ ///
+ /// Mes发货单号
+ ///
+ [Display(Name = "Mes发货单号")]
+ public string MesDeliveryNo { get; set; }
+ ///
+ /// Mes发货计划号
+ ///
+ [Display(Name = "Mes发货计划号")]
+ public string MesDeliveryPlan { get; set; }
+ ///
+ /// 底盘号
+ ///
+ [Display(Name = "底盘号")]
+ public string IdentityNo { get; set; }
+}
diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/DeliverRequest/DeliverRequestExchangeDto.cs b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/DeliverRequest/DeliverRequestExchangeDto.cs
new file mode 100644
index 000000000..7273c7ce0
--- /dev/null
+++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/DeliverRequest/DeliverRequestExchangeDto.cs
@@ -0,0 +1,43 @@
+using System;
+using System.ComponentModel.DataAnnotations;
+using Win_in.Sfs.Shared.Domain;
+using Win_in.Sfs.Shared.Domain.Shared;
+
+namespace Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest;
+public class DeliverRequestExchangeDto
+{
+ ///
+ /// 单据号
+ ///
+ public string Number { get; set; }
+ ///
+ /// 操作员
+ ///
+ public string Worker { get; set; }
+
+ ///
+ /// 生效日期
+ ///
+ public DateTime ActiveDate { get; set; } = DateTime.Now.Date;
+ ///
+ /// 发货时间
+ ///
+ public DateTime DeliverTime { get; set; } = DateTime.Now.Date;
+ ///
+ /// 发货类型
+ ///
+ public EnumDeliverRequestType DeliverRequestType { get; set; }
+
+ ///
+ /// 客户
+ ///
+ [Display(Name = "客户")]
+ [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
+ public string CustomerCode { get; set; }
+
+ ///
+ /// 明细列表
+ ///
+ [Display(Name = "明细列表")]
+ public DeliverRequestDetailExchangeDto Detail { get; set; } = new();
+}
diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/Win_in.Sfs.Wms.DataExchange.Application.Contracts.xml b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/Win_in.Sfs.Wms.DataExchange.Application.Contracts.xml
index e17d7c47d..0f5dfff33 100644
--- a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/Win_in.Sfs.Wms.DataExchange.Application.Contracts.xml
+++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/Win_in.Sfs.Wms.DataExchange.Application.Contracts.xml
@@ -531,6 +531,21 @@
数量
+
+
+ Mes发货单号
+
+
+
+
+ Mes发货计划号
+
+
+
+
+ 底盘号
+
+
单据号
@@ -551,6 +566,76 @@
客户
+
+
+ 单据号
+
+
+
+
+ 物品代码
+
+
+
+
+ 来源库区
+
+
+
+
+ 数量
+
+
+
+
+ Mes发货单号
+
+
+
+
+ Mes发货计划号
+
+
+
+
+ 底盘号
+
+
+
+
+ 单据号
+
+
+
+
+ 操作员
+
+
+
+
+ 生效日期
+
+
+
+
+ 发货时间
+
+
+
+
+ 发货类型
+
+
+
+
+ 客户
+
+
+
+
+ 明细列表
+
+
代码
diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain.Shared/Enums/EnumIncomingDataType.cs b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain.Shared/Enums/EnumIncomingDataType.cs
index c47ac2d27..172221fd0 100644
--- a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain.Shared/Enums/EnumIncomingDataType.cs
+++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain.Shared/Enums/EnumIncomingDataType.cs
@@ -121,5 +121,9 @@ public enum EnumIncomingDataType
///
/// 储位调拨
///
- MesNote = 29
+ MesNote = 29,
+ ///
+ /// 发货单
+ ///
+ Delivery=30,
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/DeliverNotes/DTOs/DeliverNoteDetailDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/DeliverNotes/DTOs/DeliverNoteDetailDTO.cs
index 1f473504a..480978f89 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/DeliverNotes/DTOs/DeliverNoteDetailDTO.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/DeliverNotes/DTOs/DeliverNoteDetailDTO.cs
@@ -10,4 +10,19 @@ public class DeliverNoteDetailDTO : SfsStoreRecommendFromDetailWithFromToDTOBase
///
[Display(Name = "扩展属性")]
public ExtraPropertyDictionary ExtraProperties { get; set; } = new ExtraPropertyDictionary();
+ ///
+ /// Mes发货单号
+ ///
+ [Display(Name = "Mes发货单号")]
+ public string MesDeliveryNo { get; set; }
+ ///
+ /// Mes发货计划号
+ ///
+ [Display(Name = "Mes发货计划号")]
+ public string MesDeliveryPlan { get; set; }
+ ///
+ /// 底盘号
+ ///
+ [Display(Name = "底盘号")]
+ public string IdentityNo { get; set; }
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/DeliverNotes/Inputs/DeliverNoteDetailInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/DeliverNotes/Inputs/DeliverNoteDetailInput.cs
index fb12f3ecf..e7957adc4 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/DeliverNotes/Inputs/DeliverNoteDetailInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/DeliverNotes/Inputs/DeliverNoteDetailInput.cs
@@ -10,4 +10,19 @@ public class DeliverNoteDetailInput : SfsStoreRecommendFromDetailWithFromToInput
///
[Display(Name = "扩展属性")]
public ExtraPropertyDictionary ExtraProperties { get; set; } = new ExtraPropertyDictionary();
+ ///
+ /// Mes发货单号
+ ///
+ [Display(Name = "Mes发货单号")]
+ public string MesDeliveryNo { get; set; }
+ ///
+ /// Mes发货计划号
+ ///
+ [Display(Name = "Mes发货计划号")]
+ public string MesDeliveryPlan { get; set; }
+ ///
+ /// 底盘号
+ ///
+ [Display(Name = "底盘号")]
+ public string IdentityNo { get; set; }
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/DeliverRequests/DTOs/DeliverRequestDetailDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/DeliverRequests/DTOs/DeliverRequestDetailDTO.cs
index 68b9e9482..48c2eb45f 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/DeliverRequests/DTOs/DeliverRequestDetailDTO.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/DeliverRequests/DTOs/DeliverRequestDetailDTO.cs
@@ -17,4 +17,20 @@ public class DeliverRequestDetailDTO : SfsStoreDetailWithQtyDTOBase, IHasExtraPr
[Display(Name = "扩展属性")]
public ExtraPropertyDictionary ExtraProperties { set; get; } = new ExtraPropertyDictionary();
+
+ ///
+ /// Mes发货单号
+ ///
+ [Display(Name = "Mes发货单号")]
+ public string MesDeliveryNo { get; set; }
+ ///
+ /// Mes发货计划号
+ ///
+ [Display(Name = "Mes发货计划号")]
+ public string MesDeliveryPlan { get; set; }
+ ///
+ /// 底盘号
+ ///
+ [Display(Name = "底盘号")]
+ public string IdentityNo { get; set; }
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/DeliverRequests/Inputs/DeliverRequestDetailInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/DeliverRequests/Inputs/DeliverRequestDetailInput.cs
index ab103e943..c472abe02 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/DeliverRequests/Inputs/DeliverRequestDetailInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/DeliverRequests/Inputs/DeliverRequestDetailInput.cs
@@ -16,4 +16,19 @@ public class DeliverRequestDetailInput : SfsStoreDetailWithQtyInputBase, IHasExt
///
[Display(Name = "扩展属性")]
public ExtraPropertyDictionary ExtraProperties { set; get; }
+ ///
+ /// Mes发货单号
+ ///
+ [Display(Name = "Mes发货单号")]
+ public string MesDeliveryNo { get; set; }
+ ///
+ /// Mes发货计划号
+ ///
+ [Display(Name = "Mes发货计划号")]
+ public string MesDeliveryPlan { get; set; }
+ ///
+ /// 底盘号
+ ///
+ [Display(Name = "底盘号")]
+ public string IdentityNo { get; set; }
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/DeliverRequests/Inputs/DeliverRequestImportInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/DeliverRequests/Inputs/DeliverRequestImportInput.cs
index 977870195..f70191045 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/DeliverRequests/Inputs/DeliverRequestImportInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/DeliverRequests/Inputs/DeliverRequestImportInput.cs
@@ -40,6 +40,22 @@ public class DeliverRequestImportInput : SfsStoreImportInputBase
[Display(Name = "发货库区")]
[Required]
public string AreaCode { get; set; }
+
+ ///
+ /// Mes发货单号
+ ///
+ [Display(Name = "Mes发货单号")]
+ public string MesDeliveryNo { get; set; }
+ ///
+ /// Mes发货计划号
+ ///
+ [Display(Name = "Mes发货计划号")]
+ public string MesDeliveryPlan { get; set; }
+ ///
+ /// 底盘号
+ ///
+ [Display(Name = "底盘号")]
+ public string IdentityNo { get; set; }
}
[Display(Name = "FIS发货申请")]
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestAppService.cs
index 1ecfa8ea9..608c0382b 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestAppService.cs
@@ -10,6 +10,8 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
+using Volo.Abp.Domain.Entities.Events.Distributed;
+using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
@@ -32,7 +34,6 @@ public class DeliverRequestAppService :
private readonly IAreaAppService _areaApp;
private readonly ICustomerAppService _customerApp;
private readonly ICustomerAddressAppService _customerAddressApp;
-
public DeliverRequestAppService(
IDeliverRequestRepository repository
, IDeliverRequestManager deliverRequestManager
@@ -46,7 +47,21 @@ public class DeliverRequestAppService :
_customerApp = customerApp;
_customerAddressApp = customerAddressApp;
}
+ ///
+ /// 处理请求
+ ///
+ ///
+ ///
+ [HttpPost("handle-list")]
+ public virtual async Task> HandleListAsync(List ids)
+ {
+ var entitys = await _repository.GetListAsync(r=> ids.Contains(r.Id)).ConfigureAwait(false);
+ Check.NotNull(entitys, typeof(DeliverRequest).Name);
+ var result = await _deliverRequestManager.HandleListAsync(entitys).ConfigureAwait(false);
+ var dtos = ObjectMapper.Map, List>(entitys);
+ return dtos;
+ }
[HttpPost("list")]
public override Task> GetPagedListByFilterAsync(
SfsStoreRequestInputBase sfsRequestInput,
@@ -75,7 +90,30 @@ public class DeliverRequestAppService :
var dto = ObjectMapper.Map(entity);
return dto;
}
+ private async Task SetRequestAutoPropertiesAsync(DeliverRequest entity)
+ {
+ //普通件
+ var transType = EnumTransSubType.Deliver_Standard;
+ //jis件
+ if (entity.DeliverRequestType == EnumDeliverRequestType.FIS)
+ {
+ transType = EnumTransSubType.Deliver_FIS;
+ }
+ else if (entity.DeliverRequestType == EnumDeliverRequestType.RAW)
+ {
+ transType = EnumTransSubType.Deliver_RAW;
+ }
+ var tranType = await TransactionTypeAclService.GetByTransTypeAsync(EnumTransType.Deliver, transType).ConfigureAwait(false);
+ Check.NotNull(tranType, "事务类型", "事务类型不存在");
+
+ entity.AutoCompleteJob = tranType.AutoCompleteJob;
+ entity.AutoSubmit = tranType.AutoSubmitRequest;
+ entity.AutoAgree = tranType.AutoAgreeRequest;
+ entity.AutoHandle = tranType.AutoHandleRequest;
+ entity.DirectCreateNote = tranType.DirectCreateNote;
+ entity.DeliverRequestType = entity.DeliverRequestType;
+ }
#region import
protected virtual async Task CheckImportInputBusinessAsync(
DeliverRequestImportInput importInput
@@ -246,30 +284,7 @@ public class DeliverRequestAppService :
await SetRequestAutoPropertiesAsync(entity).ConfigureAwait(false);
}
- private async Task SetRequestAutoPropertiesAsync(DeliverRequest entity)
- {
- //普通件
- var transType = EnumTransSubType.Deliver_Standard;
- //jis件
- if (entity.DeliverRequestType == EnumDeliverRequestType.FIS)
- {
- transType = EnumTransSubType.Deliver_FIS;
- }
- else if (entity.DeliverRequestType == EnumDeliverRequestType.RAW)
- {
- transType = EnumTransSubType.Deliver_RAW;
- }
- var tranType = await TransactionTypeAclService.GetByTransTypeAsync(EnumTransType.Deliver, transType).ConfigureAwait(false);
-
- Check.NotNull(tranType, "事务类型", "事务类型不存在");
- entity.AutoCompleteJob = tranType.AutoCompleteJob;
- entity.AutoSubmit = tranType.AutoSubmitRequest;
- entity.AutoAgree = tranType.AutoAgreeRequest;
- entity.AutoHandle = tranType.AutoHandleRequest;
- entity.DirectCreateNote = tranType.DirectCreateNote;
- entity.DeliverRequestType = entity.DeliverRequestType;
- }
private static void CheckTransactionType(TransactionTypeDTO transactionType, ItemBasicDTO item)
{
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestAutoMapperProfile.cs
index b88d2249a..6b40d01c6 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestAutoMapperProfile.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestAutoMapperProfile.cs
@@ -93,6 +93,9 @@ public partial class StoreApplicationAutoMapperProfile : Profile
.Ignore(x => x.Id)
.Ignore(x => x.ExtraProperties)
.Ignore(x => x.Remark)
+ .Ignore(x => x.IdentityNo)
+ .Ignore(x => x.MesDeliveryNo)
+ .Ignore(x => x.MesDeliveryPlan)
.AfterMap((x, y) => y.SetProperty(nameof(x.FromVinCode), x.FromVinCode))
//.AfterMap((x, y) => y.SetProperty(nameof(x.ToVinCode), x.ToVinCode))
;
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestFisAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestFisAppService.cs
index 9e25e6475..2c872d3b5 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestFisAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestFisAppService.cs
@@ -171,7 +171,7 @@ public class DeliverRequestFisAppService :
CancellationToken cancellationToken = default)
{
sfsRequestInput.Condition.Filters.Add(
- new Filter(nameof(DeliverRequest.DeliverRequestType), "FIS"));
+ new Filter(nameof(DeliverRequest.DeliverRequestType), "Normal"));
return base.GetPagedListByFilterAsync(sfsRequestInput, includeDetails, cancellationToken);
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs
index a4c20f257..e31231106 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs
@@ -61,14 +61,15 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA
entity.AutoSubmit = true;
entity.AutoAgree = true;
entity.AutoHandle = true;
- if (entity.UnplannedIssueType == EnumUnplannedIssueType.Wip)
- {
- entity.DirectCreateNote = true;
- }
- else
- {
- entity.DirectCreateNote = false;
- }
+ entity.DirectCreateNote = false;
+ //if (entity.UnplannedIssueType == EnumUnplannedIssueType.Wip)
+ //{
+ // entity.DirectCreateNote = true;
+ //}
+ //else
+ //{
+
+ //}
await _unplannedIssueRequestManager.CreateAsync(entity).ConfigureAwait(false);
var dto = ObjectMapper.Map(entity);
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs
index eb193e7f8..6f4d40782 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs
@@ -65,14 +65,15 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ
entity.AutoSubmit = true;
entity.AutoAgree = true;
entity.AutoHandle = true;
- if (entity.UnplannedReceiptType == EnumUnplannedReceiptType.Wip)
- {
- entity.DirectCreateNote = true; //线边直接生成记录
- }
- else
- {
- entity.DirectCreateNote = false; //原料先生成任务、再生成记录
- }
+ entity.DirectCreateNote = false;
+ //if (entity.UnplannedReceiptType == EnumUnplannedReceiptType.Wip)
+ //{
+ // entity.DirectCreateNote = true; //线边直接生成记录
+ //}
+ //else
+ //{
+ // entity.DirectCreateNote = false; //原料先生成任务、再生成记录
+ //}
var res = await _unplannedReceiptRequestManager.CreateAsync(entity).ConfigureAwait(false);
var dto = ObjectMapper.Map(entity);
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/DeliverNotes/DeliverNoteDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/DeliverNotes/DeliverNoteDetail.cs
index fff0e8fea..ae672d219 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/DeliverNotes/DeliverNoteDetail.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/DeliverNotes/DeliverNoteDetail.cs
@@ -8,4 +8,16 @@ public class DeliverNoteDetail : SfsStoreRecommendFromDetailWithFromToEntityBase
/// 扩展属性
///
public ExtraPropertyDictionary ExtraProperties { get; set; } = new ExtraPropertyDictionary();
+ ///
+ /// Mes发货单号
+ ///
+ public string MesDeliveryNo { get; set; }
+ ///
+ /// Mes发货计划号
+ ///
+ public string MesDeliveryPlan { get; set; }
+ ///
+ /// 底盘号
+ ///
+ public string IdentityNo { get; set; }
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/DeliverRequests/DeliverRequest.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/DeliverRequests/DeliverRequest.cs
index e8f647791..a7d5cd8d1 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/DeliverRequests/DeliverRequest.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/DeliverRequests/DeliverRequest.cs
@@ -38,7 +38,6 @@ public class DeliverRequest : SfsStoreRequestAggregateRootBase
/// 发货类型
///
- [IgnoreUpdate]
public EnumDeliverRequestType DeliverRequestType { get; set; }
///
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/DeliverRequests/DeliverRequestDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/DeliverRequests/DeliverRequestDetail.cs
index 0d0890d61..4ef1869ee 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/DeliverRequests/DeliverRequestDetail.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/DeliverRequests/DeliverRequestDetail.cs
@@ -16,5 +16,16 @@ public class DeliverRequestDetail : SfsStoreDetailWithQtyEntityBase, IHasExtraPr
/// 扩展属性
///
public ExtraPropertyDictionary ExtraProperties { get; set; } = new ExtraPropertyDictionary();
-
+ ///
+ /// Mes发货单号
+ ///
+ public string MesDeliveryNo { get; set; }
+ ///
+ /// Mes发货计划号
+ ///
+ public string MesDeliveryPlan { get; set; }
+ ///
+ /// 底盘号
+ ///
+ public string IdentityNo { get; set; }
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/DeliverRequests/DeliverRequestManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/DeliverRequests/DeliverRequestManager.cs
index 01209e9f6..0457301bd 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/DeliverRequests/DeliverRequestManager.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/DeliverRequests/DeliverRequestManager.cs
@@ -1,7 +1,12 @@
using System.Collections.Generic;
using System.Threading.Tasks;
+using IdentityModel;
using Volo.Abp;
+using Volo.Abp.Domain.Entities;
+using Volo.Abp.Domain.Repositories;
+using Volo.Abp.Uow;
using Win_in.Sfs.Basedata.Application.Contracts;
+using Win_in.Sfs.Shared.Event;
namespace Win_in.Sfs.Wms.Store.Domain;
@@ -67,4 +72,21 @@ public class DeliverRequestManager : SfsStoreRequestManagerBase
+ /// 执行
+ ///
+ ///
+ ///
+ [UnitOfWork]
+ public async Task> HandleListAsync(List entitys)
+ {
+ foreach (var entity in entitys)
+ {
+ entity.Handle();
+ await AddOrUpdateAsync(entity).ConfigureAwait(false);
+ }
+ await LocalEventBus.PublishAsync(new SfsHandledEntityEventData>(entitys), false).ConfigureAwait(false);
+ return entitys;
+ }
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/DeliverRequests/IDeliverRequestManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/DeliverRequests/IDeliverRequestManager.cs
index 49f0a28fa..0c5fc53c2 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/DeliverRequests/IDeliverRequestManager.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/DeliverRequests/IDeliverRequestManager.cs
@@ -1,3 +1,4 @@
+using System.Collections.Generic;
using System.Threading.Tasks;
using Win_in.Sfs.Shared.Domain;
@@ -7,4 +8,5 @@ public interface IDeliverRequestManager : ISfsStoreRequestManager
{
Task CompleteAsync(string number);
+ Task> HandleListAsync(List entitys);
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/DeliverNotes/DeliverNoteDbContextModelCreatingExtensions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/DeliverNotes/DeliverNoteDbContextModelCreatingExtensions.cs
index 381ea2d2c..5d71253f9 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/DeliverNotes/DeliverNoteDbContextModelCreatingExtensions.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/DeliverNotes/DeliverNoteDbContextModelCreatingExtensions.cs
@@ -50,7 +50,9 @@ public static class DeliverNoteDbContextModelCreatingExtensions
b.Property(q => q.ToPackingCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.FromLot).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ToLot).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
-
+ b.Property(q => q.IdentityNo).HasMaxLength(SfsPropertyConst.CodeLength);
+ b.Property(q => q.MesDeliveryPlan).HasMaxLength(SfsPropertyConst.CodeLength);
+ b.Property(q => q.MesDeliveryNo).HasMaxLength(SfsPropertyConst.CodeLength);
//Indexes
b.HasIndex(q => new { q.Number, q.ItemCode, q.FromPackingCode, q.FromLot, q.FromLocationCode, q.ToLocationCode }).IsUnique();
});
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/DeliverRequests/DeliverRequestDbContextModelCreatingExtensions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/DeliverRequests/DeliverRequestDbContextModelCreatingExtensions.cs
index 328fa0d71..b6530b9ff 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/DeliverRequests/DeliverRequestDbContextModelCreatingExtensions.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/DeliverRequests/DeliverRequestDbContextModelCreatingExtensions.cs
@@ -42,7 +42,9 @@ public static class DeliverRequestDbContextModelCreatingExtensions
b.ConfigureSfsStoreBase();
//Configure Sfs store detail properties
b.ConfigureSfsStoreDetailBase();
-
+ b.Property(q => q.IdentityNo).HasMaxLength(SfsPropertyConst.CodeLength);
+ b.Property(q => q.MesDeliveryPlan).HasMaxLength(SfsPropertyConst.CodeLength);
+ b.Property(q => q.MesDeliveryNo).HasMaxLength(SfsPropertyConst.CodeLength);
//Properties
//Relations
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/DeliverJobAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/DeliverJobAutoMapperProfile.cs
index 065cc9c81..416b5fb1d 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/DeliverJobAutoMapperProfile.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/DeliverJobAutoMapperProfile.cs
@@ -46,6 +46,9 @@ public partial class StoreEventAutoMapperProfile : Profile
.Ignore(x => x.ToLocationArea)
.Ignore(x => x.ToLocationGroup)
.Ignore(x => x.ExtraProperties)
+ .Ignore(x => x.MesDeliveryNo)
+ .Ignore(x => x.IdentityNo)
+ .Ignore(x => x.MesDeliveryPlan)
;
CreateMap()
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/DeliverRequestMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/DeliverRequestMapperProfile.cs
index 5dbb2df1b..0d04d1a29 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/DeliverRequestMapperProfile.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/DeliverRequestMapperProfile.cs
@@ -97,6 +97,9 @@ public partial class StoreEventAutoMapperProfile : Profile
.ForMember(x => x.ToStatus, y => y.MapFrom(d => d.Status))
.ForMember(x => x.ToWarehouseCode, y => y.MapFrom(d => d.WarehouseCode))
.Ignore(t => t.StdPackQty)
+ .Ignore(t => t.MesDeliveryNo)
+ .Ignore(t => t.MesDeliveryPlan)
+ .Ignore(t => t.IdentityNo)
.Ignore(x => x.ExtraProperties)
.IgnoreIHasRecommendAndHandledFrom();
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/DeliverRequestEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/DeliverRequestEventHandler.cs
index 8ef9669ed..023e4b786 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/DeliverRequestEventHandler.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/DeliverRequestEventHandler.cs
@@ -3,7 +3,9 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp;
+using Volo.Abp.Domain.Entities;
using Volo.Abp.EventBus;
+using Volo.Abp.ObjectMapping;
using Volo.Abp.Uow;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
@@ -17,6 +19,7 @@ namespace Win_in.Sfs.Wms.Store.Event.BusinessRequest;
public class DeliverRequestEventHandler
: StoreEventHandlerBase
, ILocalEventHandler>
+ , ILocalEventHandler>>
, ILocalEventHandler>
, ILocalEventHandler>
, ILocalEventHandler>>
@@ -26,16 +29,19 @@ public class DeliverRequestEventHandler
private readonly IDeliverJobAppService _deliverJobApp;
private readonly ICustomerAddressAppService _customerAddressApp;
private readonly IDeliverRequestManager _deliverRequestManager;
-
+ private readonly IBalanceAppService _balanceAppService;
+ private readonly ILocationAppService _locationAppService;
public DeliverRequestEventHandler(
IDeliverJobAppService deliverJobApp
, IDeliverNoteAppService deliverNoteApp
- , ICustomerAddressAppService customerAddressApp, IDeliverRequestManager deliverRequestManager)
+ , ICustomerAddressAppService customerAddressApp, IDeliverRequestManager deliverRequestManager, IBalanceAppService balanceAppService, ILocationAppService locationAppService)
{
_deliverNoteApp = deliverNoteApp;
_deliverJobApp = deliverJobApp;
_customerAddressApp = customerAddressApp;
_deliverRequestManager = deliverRequestManager;
+ _balanceAppService = balanceAppService;
+ _locationAppService = locationAppService;
}
@@ -47,10 +53,10 @@ public class DeliverRequestEventHandler
public async Task HandleEventAsync(SfsCreatedEntityEventData eventData)
{
var entity = eventData.Entity;
- if (entity.AutoSubmit)
- {
- await _deliverRequestManager.SubmitAsync(entity).ConfigureAwait(false);
- }
+ //if (entity.AutoSubmit)
+ //{
+ // await _deliverRequestManager.SubmitAsync(entity).ConfigureAwait(false);
+ //}
}
///
@@ -61,13 +67,13 @@ public class DeliverRequestEventHandler
public async Task HandleEventAsync(SfsCreatedEntityEventData> eventData)
{
var entitys = eventData.Entity;
- foreach (var entity in entitys)
- {
- if (entity.AutoSubmit)
- {
- await _deliverRequestManager.SubmitAsync(entity).ConfigureAwait(false);
- }
- }
+ //foreach (var entity in entitys)
+ //{
+ // if (entity.AutoSubmit)
+ // {
+ // await _deliverRequestManager.SubmitAsync(entity).ConfigureAwait(false);
+ // }
+ //}
}
///
@@ -109,10 +115,110 @@ public class DeliverRequestEventHandler
await _deliverJobApp.CreateManyAsync(deliverJobCreateInputs).ConfigureAwait(false);
}
}
+ ///
+ /// 执行后
+ ///
+ ///
+ ///
+ [UnitOfWork]
+ public virtual async Task HandleEventAsync(SfsHandledEntityEventData> eventData)
+ {
+ var entitys = eventData.Entity;
+ //东阳特殊逻辑
+ if (entitys.First().DirectCreateNote)
+ {
+ var noteCreateInput = await BuildDeliverNoteAsync(entitys).ConfigureAwait(false);
+ await _deliverNoteApp.CreateAsync(noteCreateInput).ConfigureAwait(false);
+ }
+ }
#region 私有
+ private async Task BuildDeliverNoteAsync(List requests)
+ {
+ var transactionType = await TransactionTypeAclService
+ .GetByTransTypeAsync(EnumTransType.Deliver, EnumTransSubType.None).ConfigureAwait(false);
+
+ if (requests.First().DeliverRequestType == EnumDeliverRequestType.Normal)
+ {
+ transactionType = await TransactionTypeAclService.GetByTransTypeAsync(
+ EnumTransType.Deliver,
+ EnumTransSubType.Deliver_Standard).ConfigureAwait(false);
+ }
+ else if (requests.First().DeliverRequestType == EnumDeliverRequestType.FIS)
+ {
+ transactionType = await TransactionTypeAclService.GetByTransTypeAsync(
+ EnumTransType.Deliver,
+ EnumTransSubType.Deliver_FIS).ConfigureAwait(false);
+ }
+
+ var createInput = ObjectMapper.Map(requests.First());
+
+ var customerAddress =
+ (await _customerAddressApp.GetByCustomerCodeAsync(createInput.CustomerCode).ConfigureAwait(false))
+ .FirstOrDefault();
+
+ LocationDTO toLocation = null;
+ if (customerAddress != null && !string.IsNullOrEmpty(customerAddress.LocationCode))
+ {
+ toLocation = await LocationAclService.GetByCodeAsync(customerAddress.LocationCode).ConfigureAwait(false);
+
+ Check.NotNull(toLocation, $"客户库位 {customerAddress.LocationCode} 不存在");
+ }
+
+ createInput.Details = new List();
+
+ foreach (var detail in requests.SelectMany(r=>r.Details))
+ {
+ var locations = await _locationAppService.GetListByTypesAndErpCodeAsync(transactionType.OutLocationTypes, detail.AreaCode).ConfigureAwait(false);
+ if (locations.Count <= 0)
+ {
+ throw new UserFriendlyException($"储位 {detail.AreaCode} 未找到对应的成品库和半成品库。");
+ }
+ var balances = await _balanceAppService.GetRecommendBalancesByLocationsAsync(
+ new RecommendBalanceRequestInput
+ {
+ ItemCode = detail.ItemCode,
+ Qty = detail.Qty,
+ Locations = locations.Select(r => r.Code).ToList(),
+ Statuses = transactionType.OutInventoryStatuses
+ }).ConfigureAwait(false);
+
+ var sumQty = balances.Sum(t => t.Qty);
+
+ if (sumQty < detail.Qty)
+ {
+ throw new UserFriendlyException($"物料号 {detail.ItemCode} 库存余额 {sumQty} 小于 {detail.Qty}。");
+ }
+
+ foreach (var balance in balances)
+ {
+ var inputDetail = ObjectMapper.Map(balance);
+
+ var item = await ItemBasicAclService.GetByCodeAsync(balance.ItemCode).ConfigureAwait(false);
+
+ if (item != null)
+ {
+ inputDetail.StdPackQty = item.StdPackQty;
+ }
+
+ if (toLocation != null)
+ {
+ inputDetail.ToLocationCode = toLocation.Code;
+
+ inputDetail.ToLocationErpCode = toLocation.ErpLocationCode;
+ }
+
+ inputDetail.ExtraProperties = detail.ExtraProperties;
+ inputDetail.MesDeliveryNo = detail.MesDeliveryNo;
+ inputDetail.IdentityNo = detail.IdentityNo;
+ inputDetail.MesDeliveryPlan = detail.MesDeliveryPlan;
+ createInput.Details.Add(inputDetail);
+ }
+ }
+ return createInput;
+ }
private async Task BuildDeliverNoteAsync(DeliverRequest request)
{
var transactionType = await TransactionTypeAclService
@@ -149,16 +255,21 @@ public class DeliverRequestEventHandler
foreach (var detail in request.Details)
{
- var balances = await BalanceAclService.GetRecommendBalancesAsync(
+ var locations = await _locationAppService.GetListByTypesAndErpCodeAsync(transactionType.OutLocationTypes, detail.AreaCode).ConfigureAwait(false);
+ if (locations.Count<=0)
+ {
+ throw new UserFriendlyException($"储位 {detail.AreaCode} 未找到对应的成品库和半成品库。");
+ }
+
+ var balances = await _balanceAppService.GetRecommendBalancesByLocationsAsync(
new RecommendBalanceRequestInput
{
ItemCode = detail.ItemCode,
Qty = detail.Qty,
- LocationTypes = transactionType.OutLocationTypes,
- LocationAreas = new List { detail.AreaCode },
+ Locations = locations.Select(r=>r.Code).ToList(),
Statuses = transactionType.OutInventoryStatuses
}).ConfigureAwait(false);
-
+
var sumQty = balances.Sum(t => t.Qty);
if (sumQty < detail.Qty)
@@ -185,7 +296,9 @@ public class DeliverRequestEventHandler
}
inputDetail.ExtraProperties = detail.ExtraProperties;
-
+ inputDetail.MesDeliveryNo = detail.MesDeliveryNo;
+ inputDetail.IdentityNo = detail.IdentityNo;
+ inputDetail.MesDeliveryPlan = detail.MesDeliveryPlan;
createInput.Details.Add(inputDetail);
}
}