diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Frozen/Frozen.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Frozen/Frozen.cs
index 9ae130400..3a9c348db 100644
--- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Frozen/Frozen.cs
+++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Frozen/Frozen.cs
@@ -8,7 +8,7 @@ public class Frozen : Entity
/// 序号
///
[Key]
- public string mesout_frozen_id { get; set; }
+ public long mesout_frozen_id { get; set; }
///
/// 类型
///
diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent/Incoming/EosIncomingBackgroundWorker.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent/Incoming/EosIncomingBackgroundWorker.cs
index b3a743d81..ae5bc9f51 100644
--- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent/Incoming/EosIncomingBackgroundWorker.cs
+++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent/Incoming/EosIncomingBackgroundWorker.cs
@@ -5,6 +5,7 @@ using Microsoft.Extensions.Options;
using Volo.Abp.BackgroundWorkers;
using Volo.Abp.Threading;
using Volo.Abp.Uow;
+using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent.Incoming;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent;
@@ -29,10 +30,23 @@ public class EosIncomingBackgroundWorker : AsyncPeriodicBackgroundWorkerBase
protected override async Task DoWorkAsync(PeriodicBackgroundWorkerContext workerContext)
{
Logger.LogInformation($"开始: 执行 {Incoming}");
- if (!_options.Value.IncomingOptions.Active)
+ var configManager = workerContext.ServiceProvider.GetRequiredService();
+ var confitem = await configManager.GetInterfaceConfig("").ConfigureAwait(false);
+ if (confitem == null)
{
- Logger.LogInformation($"{Incoming} 已关闭没有执行!");
- return;
+ if (!_options.Value.IncomingOptions.Active)
+ {
+ Logger.LogInformation($"{Incoming} 已关闭没有执行!");
+ return;
+ }
+ }
+ else
+ {
+ if (!confitem.Active)
+ {
+ Logger.LogInformation($"{Incoming} 已关闭没有执行!");
+ return;
+ }
}
Logger.LogInformation($"读取 采购订单");
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 75b4f9ba5..1006d1701 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
@@ -86,7 +86,7 @@ public class FrozenReader : IReader
DataAction = EnumExchangeDataAction.Add,
SourceSystem = EnumSystemType.MES.ToString(),
SourceDataId = Frozen.mesout_frozen_id.ToString(),
- SourceDataGroupCode = Frozen.mesout_frozen_id,
+ SourceDataGroupCode = Frozen.mesout_frozen_id.ToString(),
SourceDataDetailCode = Frozen.mesout_frozen_part,
SourceDataContent = JsonSerializer.Serialize(Frozen),
WriteTime = DateTime.Now,
@@ -101,7 +101,7 @@ public class FrozenReader : IReader
{
var mesNote = new MesNoteExchangeDto()
{
- MesRequestNumber=Frozen.mesout_frozen_id,
+ MesRequestNumber=Frozen.mesout_frozen_id.ToString(),
Worker = Frozen.mesout_frozen_user,
Remark = Frozen.mesout_frozen_reason,
Type = Frozen.mesout_frozen_type == "0" ? EnumTransType.MesFreezed.ToString() : EnumTransType.MesUnFreezed.ToString(),
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 3824bb5e3..53d3fec9f 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
@@ -45,24 +45,36 @@ public class MesIncomingBackgroundWorker : AsyncPeriodicBackgroundWorkerBase
return;
}
- #region 缴库 MesOut
- Logger.LogInformation($"读取缴库(MesOut)");//缴库
- var mesOutReader = workerContext.ServiceProvider.GetRequiredService();
- var mesOutConverter = workerContext.ServiceProvider.GetRequiredService();
- var TransferNoteConverter = workerContext.ServiceProvider.GetRequiredService();
- //读取mes缴库
- var mesOutsFromExternalList = await mesOutReader.ReadAsync().ConfigureAwait(false);
- var mesOutsFromExternalList_ProductReceipt = mesOutsFromExternalList.Where(r => r.DataType == EnumIncomingDataType.ProductReceipt.ToString()).ToList();
- var mesOutsFromExternalList_TransferNote = mesOutsFromExternalList.Where(r => r.DataType == EnumIncomingDataType.TransferNote.ToString()).ToList();
- //转换缴库数据(如果有质量补得数据直接生产移库数据移到客户库位)
- await mesOutConverter.ConvertAsync(mesOutsFromExternalList_ProductReceipt).ConfigureAwait(false);
- if (mesOutsFromExternalList_TransferNote.Count > 0)//如果有质量补则生产储位调拨任务
- {
- await TransferNoteConverter.ConvertAsync(mesOutsFromExternalList_TransferNote).ConfigureAwait(false);
- }
- Logger.LogInformation($"处理完工收货(缴库)【{mesOutsFromExternalList_ProductReceipt.Count}】条数据");
- Logger.LogInformation($"处理储位调拨【{mesOutsFromExternalList_TransferNote.Count}】条数据");
- #endregion
+ //#region 缴库 MesOut
+ //Logger.LogInformation($"读取缴库(MesOut)");//缴库
+ //var mesOutReader = workerContext.ServiceProvider.GetRequiredService();
+ //var mesOutConverter = workerContext.ServiceProvider.GetRequiredService();
+ //var TransferNoteConverter = workerContext.ServiceProvider.GetRequiredService();
+ ////读取mes缴库
+ //var mesOutsFromExternalList = await mesOutReader.ReadAsync().ConfigureAwait(false);
+ //var mesOutsFromExternalList_ProductReceipt = mesOutsFromExternalList.Where(r => r.DataType == EnumIncomingDataType.ProductReceipt.ToString()).ToList();
+ //var mesOutsFromExternalList_TransferNote = mesOutsFromExternalList.Where(r => r.DataType == EnumIncomingDataType.TransferNote.ToString()).ToList();
+ ////转换缴库数据(如果有质量补得数据直接生产移库数据移到客户库位)
+ //await mesOutConverter.ConvertAsync(mesOutsFromExternalList_ProductReceipt).ConfigureAwait(false);
+ //if (mesOutsFromExternalList_TransferNote.Count > 0)//如果有质量补则生产储位调拨任务
+ //{
+ // await TransferNoteConverter.ConvertAsync(mesOutsFromExternalList_TransferNote).ConfigureAwait(false);
+ //}
+ //Logger.LogInformation($"处理完工收货(缴库)【{mesOutsFromExternalList_ProductReceipt.Count}】条数据");
+ //Logger.LogInformation($"处理储位调拨【{mesOutsFromExternalList_TransferNote.Count}】条数据");
+ //#endregion
+
+ //#region 冻结解冻 Frozen
+ //Logger.LogInformation($"读取冻结解冻 (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($"处理冻结解冻【{mesNoteFromExternalList.Count}】条数据");
+ //#endregion
+
#region 报废 Scrap
Logger.LogInformation($"读取报废(Scrap)");//报废
@@ -75,61 +87,52 @@ public class MesIncomingBackgroundWorker : AsyncPeriodicBackgroundWorkerBase
Logger.LogInformation($"处理报废【{scrapsFromExternalList.Count}】条数据");
#endregion
- #region 耗用单 BackFlush
- Logger.LogInformation($"读取耗用单 (BackFlush)");//耗用单
- var BackFlushReader = workerContext.ServiceProvider.GetRequiredService();
- var BackFlushConverter = workerContext.ServiceProvider.GetRequiredService();
- //读取并保存BackFlush
- var backFlushsFromExternalList = await BackFlushReader.ReadAsync().ConfigureAwait(false);
- //转换BackFlush
- await BackFlushConverter.ConvertAsync(backFlushsFromExternalList).ConfigureAwait(false);
- Logger.LogInformation($"处理耗用单【{backFlushsFromExternalList.Count}】条数据");
- #endregion
-
- #region 储位调拨 TransferNote
- Logger.LogInformation($"读取储位调拨 (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($"处理储位调拨【{transferNoteFromExternalList.Count}】条数据");
- #endregion
-
- #region 冻结解冻 Frozen
- Logger.LogInformation($"读取冻结解冻 (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($"处理冻结解冻【{mesNoteFromExternalList.Count}】条数据");
- #endregion
-
- #region 成品发运 Delivery
- Logger.LogInformation($"读取成品发运 (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($"处理成品发运【{deliveryNoteFromExternalList.Count}】条数据");
- #endregion
-
- #region 自动叫料 CallMtl
-
- Logger.LogInformation($"读取自动叫料 (CallMtl)");//自动叫料
- var CallMtlReader = workerContext.ServiceProvider.GetRequiredService();
- var CallMtlConverter = workerContext.ServiceProvider.GetRequiredService();
- //读取并保存Delivery
- var callMtlFromExternalList = await CallMtlReader.ReadAsync().ConfigureAwait(false);
- //转换Delivery
- await CallMtlConverter.ConvertAsync(callMtlFromExternalList).ConfigureAwait(false);
- Logger.LogInformation($"处理自动叫料【{callMtlFromExternalList.Count}】条数据");
- #endregion
+ //#region 耗用单 BackFlush
+ //Logger.LogInformation($"读取耗用单 (BackFlush)");//耗用单
+ //var BackFlushReader = workerContext.ServiceProvider.GetRequiredService();
+ //var BackFlushConverter = workerContext.ServiceProvider.GetRequiredService();
+ ////读取并保存BackFlush
+ //var backFlushsFromExternalList = await BackFlushReader.ReadAsync().ConfigureAwait(false);
+ ////转换BackFlush
+ //await BackFlushConverter.ConvertAsync(backFlushsFromExternalList).ConfigureAwait(false);
+ //Logger.LogInformation($"处理耗用单【{backFlushsFromExternalList.Count}】条数据");
+ //#endregion
+
+ //#region 储位调拨 TransferNote
+ //Logger.LogInformation($"读取储位调拨 (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($"处理储位调拨【{transferNoteFromExternalList.Count}】条数据");
+ //#endregion
+
+
+
+ //#region 成品发运 Delivery
+ //Logger.LogInformation($"读取成品发运 (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($"处理成品发运【{deliveryNoteFromExternalList.Count}】条数据");
+ //#endregion
+
+ //#region 自动叫料 CallMtl
+
+ //Logger.LogInformation($"读取自动叫料 (CallMtl)");//自动叫料
+ //var CallMtlReader = workerContext.ServiceProvider.GetRequiredService();
+ //var CallMtlConverter = workerContext.ServiceProvider.GetRequiredService();
+ ////读取并保存Delivery
+ //var callMtlFromExternalList = await CallMtlReader.ReadAsync().ConfigureAwait(false);
+ ////转换Delivery
+ //await CallMtlConverter.ConvertAsync(callMtlFromExternalList).ConfigureAwait(false);
+ //Logger.LogInformation($"处理自动叫料【{callMtlFromExternalList.Count}】条数据");
+ //#endregion
Logger.LogInformation($"提交: 执行 {Incoming}");
diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/AgentModule.cs b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/AgentModule.cs
index 28aa02cc5..59cf323ef 100644
--- a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/AgentModule.cs
+++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/AgentModule.cs
@@ -150,6 +150,6 @@ public class AgentModule : AbpModule
ApplicationInitializationContext context)
{
context.AddBackgroundWorkerAsync();
- context.AddBackgroundWorkerAsync();
+ // context.AddBackgroundWorkerAsync();
}
}
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 8d93ccf90..8b5413752 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
@@ -49,16 +49,30 @@ public class IncomingToWmsWorker : AsyncPeriodicBackgroundWorkerBase
[UnitOfWork]
protected override async Task DoWorkAsync(PeriodicBackgroundWorkerContext workerContext)
{
- Logger.LogInformation("Starting: Handling Incoming Exchange data...");
- if (!_options.Value.IncomingOptions.Active)
- {
- Logger.LogInformation("Incoming Exchange is not active!");
- return;
- }
+ Logger.LogInformation("开始接收数据...");
+ // var configManager = workerContext.ServiceProvider.GetRequiredService();
+ //var confitem = await configManager.GetInterfaceConfig("").ConfigureAwait(false);
+ // if (confitem == null)
+ // {
+ // if (!_options.Value.IncomingOptions.Active)
+ // {
+ // Logger.LogInformation("Wms接收接口已关闭!");
+ // return;
+ // }
+ // }
+ // else
+ // {
+ // if (!confitem.Active)
+ // {
+ // Logger.LogInformation("Wms接收接口已关闭!");
+ // return;
+ // }
+ // }
+
await HandleIncomingDataAsync(workerContext).ConfigureAwait(false);
- Logger.LogInformation("Completed: Handling Incoming Exchange data...");
+ Logger.LogInformation("提交接收数据...");
}
private async Task HandleIncomingDataAsync(PeriodicBackgroundWorkerContext workerContext)
@@ -93,7 +107,7 @@ public class IncomingToWmsWorker : AsyncPeriodicBackgroundWorkerBase
incomingToWms.SetError(EnumExchangeDataErrorCode.Exception, e.Message);
}
//归档并删除
- await incomingToWmsManager.ArchiveAsync(incomingToWms).ConfigureAwait(false);
+ // await incomingToWmsManager.ArchiveAsync(incomingToWms).ConfigureAwait(false);
}
}
diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/OutgoingFromWmsWorker.cs b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/OutgoingFromWmsWorker.cs
index bafe08f81..bc8b8b739 100644
--- a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/OutgoingFromWmsWorker.cs
+++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/OutgoingFromWmsWorker.cs
@@ -29,6 +29,25 @@ public class OutgoingFromWmsWorker : AsyncPeriodicBackgroundWorkerBase
[UnitOfWork]
protected override async Task DoWorkAsync(PeriodicBackgroundWorkerContext workerContext)
{
+ var configManager = workerContext.ServiceProvider.GetRequiredService();
+ var confitem = await configManager.GetInterfaceConfig("").ConfigureAwait(false);
+ if (confitem == null)
+ {
+ if (!_options.Active)
+ {
+ Logger.LogInformation("Wms传出接口已关闭!");
+ return;
+ }
+ }
+ else
+ {
+ if (!confitem.Active)
+ {
+ Logger.LogInformation("Wms传出接口已关闭!");
+ return;
+ }
+ }
+
//Resolve dependencies
var exchangeDataAppService = workerContext.ServiceProvider.GetRequiredService();
var objectMapper = workerContext.ServiceProvider.GetRequiredService();
diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/appsettings.json b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/appsettings.json
index 649886482..2e0324e5f 100644
--- a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/appsettings.json
+++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/appsettings.json
@@ -1,13 +1,13 @@
{
"ConnectionStrings": {
- "Default": "Server=10.164.233.6;Database=WMS_DongYang_Main_CC;uid=ccwin-in;pwd=Microsoft@2022;TrustServerCertificate=True",
- "DataExchange": "Server=10.164.233.6;Database=WMS_DongYang_DataExchange_CC;uid=ccwin-in;pwd=Microsoft@2022;TrustServerCertificate=True"
+ "Default": "Server=dev.ccwin-in.com,13319;Database=WMS_DongYang_Main_CC;uid=ccwin-in;pwd=Microsoft@2022;TrustServerCertificate=True",
+ "DataExchange": "Server=dev.ccwin-in.com,13319;Database=WMS_DongYang_DataExchange_CC;uid=ccwin-in;pwd=Microsoft@2022;TrustServerCertificate=True"
},
"AuthServer": {
- "Authority": "http://10.164.233.5:60083/",
+ "Authority": "http://dev.ccwin-in.com:60083/",
"RequireHttpsMetadata": "false",
"SwaggerClientId": "admin",
"SwaggerClientSecret": "1q2w3E*",
@@ -26,16 +26,16 @@
"RemoteServices": {
"BaseData": {
- "BaseUrl": "http://10.164.233.5:60084/"
+ "BaseUrl": "http://localhost:59094/"
},
"Store": {
- "BaseUrl": "http://10.164.233.5:60085/"
+ "BaseUrl": "http://localhost:59095/"
},
"Label": {
- "BaseUrl": "http://10.164.233.5:60082/"
+ "BaseUrl": "http://dev.ccwin-in.com:60082/"
},
"Auth": {
- "BaseUrl": "http://10.164.233.5:60083/"
+ "BaseUrl": "http://dev.ccwin-in.com:60083/"
}
},
"DataExchangeOptions": {
@@ -44,7 +44,7 @@
"PeriodSeconds": 10,
"RetryTimes": 1,
"BatchSize": 100,
- "apiUrl": "http://10.164.233.5:60085/"
+ "apiUrl": "http://dev.ccwin-in.com:60085/"
},
"OutgoingOptions": {
"Active": false,
diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.DbMigrator/appsettings.json b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.DbMigrator/appsettings.json
index dec61c81a..1dfd30089 100644
--- a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.DbMigrator/appsettings.json
+++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.DbMigrator/appsettings.json
@@ -1,6 +1,6 @@
{
"ConnectionStrings": {
- "Default": "Server=dev.ccwin-in.com,21195;Database=DataExchange_Main;uid=sa;pwd=aA123456!;",
+ "Default": "Server=dev.ccwin-in.com,13319;Database=DataExchange_Main;uid=sa;pwd=aA123456!;",
"DataExchange": "Server=dev.ccwin-in.com,21195;Database=DataExchange_Main;uid=sa;pwd=aA123456!;"
},
"IdentityServer": {
diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain/InterfaceConfig/IInterfaceConfigManager.cs b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain/InterfaceConfig/IInterfaceConfigManager.cs
new file mode 100644
index 000000000..d72aabe2d
--- /dev/null
+++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain/InterfaceConfig/IInterfaceConfigManager.cs
@@ -0,0 +1,7 @@
+using System.Threading.Tasks;
+
+namespace Win_in.Sfs.Wms.DataExchange.Domain;
+public interface IInterfaceConfigManager
+{
+ Task GetInterfaceConfig(string code);
+}
diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain/InterfaceConfig/IInterfaceConfigRepository.cs b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain/InterfaceConfig/IInterfaceConfigRepository.cs
new file mode 100644
index 000000000..4bfcc80cb
--- /dev/null
+++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain/InterfaceConfig/IInterfaceConfigRepository.cs
@@ -0,0 +1,8 @@
+using System.Threading.Tasks;
+using Win_in.Sfs.Wms.DataExchange.Domain;
+
+namespace Win_in.Sfs.Wms.DataExchange.Domain;
+public interface IInterfaceConfigRepository
+{
+ Task GetInterfaceConfig(string code);
+}
diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain/InterfaceConfig/InterfaceConfig.cs b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain/InterfaceConfig/InterfaceConfig.cs
new file mode 100644
index 000000000..9051cbac2
--- /dev/null
+++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain/InterfaceConfig/InterfaceConfig.cs
@@ -0,0 +1,23 @@
+using Win_in.Sfs.Shared.Domain;
+
+namespace Win_in.Sfs.Wms.DataExchange.Domain;
+public class InterfaceConfig : SfsAggregateRootBase
+{
+ ///
+ /// 接口名称
+ ///
+ public string Name { get; set; }
+
+ ///
+ /// 编码
+ ///
+ public string Code { get; set; }
+ ///
+ /// 是否启用
+ ///
+ public bool Active { get; set; }
+ ///
+ /// 等级
+ ///
+ public int Level { get; set; }
+}
diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain/InterfaceConfig/InterfaceConfigManager.cs b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain/InterfaceConfig/InterfaceConfigManager.cs
new file mode 100644
index 000000000..6c6a2430c
--- /dev/null
+++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain/InterfaceConfig/InterfaceConfigManager.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Volo.Abp.Domain.Services;
+using Volo.Abp.Uow;
+
+namespace Win_in.Sfs.Wms.DataExchange.Domain;
+public class InterfaceConfigManager : DomainService, IInterfaceConfigManager
+{
+ private readonly IInterfaceConfigRepository _repository;
+
+ public InterfaceConfigManager(
+ IInterfaceConfigRepository repository
+ )
+ {
+ _repository = repository;
+ }
+
+ public virtual async Task GetInterfaceConfig(string code)
+ {
+ return await _repository.GetInterfaceConfig(code).ConfigureAwait(false);
+ }
+}
diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore/EntityFrameworkCore/DataExchangeDbContext.cs b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore/EntityFrameworkCore/DataExchangeDbContext.cs
index fcb0a34f3..af5ae5831 100644
--- a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore/EntityFrameworkCore/DataExchangeDbContext.cs
+++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore/EntityFrameworkCore/DataExchangeDbContext.cs
@@ -40,6 +40,8 @@ public class DataExchangeDbContext :
public DbSet OutgoingFromWms { get; set; }
public DbSet ArchivedOutgoingFromWms { get; set; }
+ public DbSet InterfaceConfig { get; set; }
+
#region Entities from the modules
/* Notice: We only implemented IIdentityDbContext and ITenantManagementDbContext
diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore/EntityFrameworkCore/DataExchangeDbContextModelCreatingExtensions.cs b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore/EntityFrameworkCore/DataExchangeDbContextModelCreatingExtensions.cs
index 8fb3bb101..6703ed38b 100644
--- a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore/EntityFrameworkCore/DataExchangeDbContextModelCreatingExtensions.cs
+++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore/EntityFrameworkCore/DataExchangeDbContextModelCreatingExtensions.cs
@@ -27,7 +27,7 @@ public static class DataExchangeDbContextModelCreatingExtensions
builder.ConfigureArchivedIncomingFromExternal(options);
builder.ConfigureOutgoingFromWms(options);
builder.ConfigureArchivedOutgoingFromWms(options);
-
+ builder.ConfigureInterfaceConfig(options);
builder.ConfigureMessageReceive(options);
/* Configure all entities here. Example:
diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore/InterfaceConfig/InterfaceConfigDbContextModelCreatingExtensions.cs b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore/InterfaceConfig/InterfaceConfigDbContextModelCreatingExtensions.cs
new file mode 100644
index 000000000..cf48a26a6
--- /dev/null
+++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore/InterfaceConfig/InterfaceConfigDbContextModelCreatingExtensions.cs
@@ -0,0 +1,25 @@
+using Microsoft.EntityFrameworkCore;
+using Volo.Abp.EntityFrameworkCore.Modeling;
+using Win_in.Sfs.Shared.Domain.Shared;
+using Win_in.Sfs.Shared.EntityFrameworkCore;
+using Win_in.Sfs.Wms.DataExchange.Domain;
+
+namespace Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore;
+public static class InterfaceConfigDbContextModelCreatingExtensions
+{
+ public static void ConfigureInterfaceConfig(this ModelBuilder builder, DataExchangeModelBuilderConfigurationOptions options)
+ {
+ builder.Entity(b =>
+ {
+ //Configure table & schema name
+ b.ToTable(options.TablePrefix + nameof(InterfaceConfig), options.Schema);
+ //Configure ABP properties
+ b.ConfigureByConvention();
+ //Configure Sfs base properties
+ b.ConfigureSfsBase();
+
+ b.Property(q => q.Name).HasMaxLength(SfsPropertyConst.CodeLength);
+ b.HasIndex(q => new { q.Code }).IsUnique();
+ });
+ }
+}
diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore/InterfaceConfig/InterfaceConfigEfCoreRepository.cs b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore/InterfaceConfig/InterfaceConfigEfCoreRepository.cs
new file mode 100644
index 000000000..608f22595
--- /dev/null
+++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore/InterfaceConfig/InterfaceConfigEfCoreRepository.cs
@@ -0,0 +1,25 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.EntityFrameworkCore;
+using Volo.Abp.EntityFrameworkCore;
+using Win_in.Sfs.Shared.EntityFrameworkCore;
+using Win_in.Sfs.Wms.DataExchange.Domain;
+using Win_in.Sfs.Wms.DataExchange.Domain.Shared;
+
+namespace Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore;
+
+public class InterfaceConfigEfCoreRepository : SfsEfCoreRepositoryBase, IInterfaceConfigRepository
+{
+ public InterfaceConfigEfCoreRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider)
+ {
+ }
+
+ public virtual async Task GetInterfaceConfig(string code)
+ {
+ var dbSet = await GetDbSetAsync().ConfigureAwait(false);
+ var entitie = await dbSet.FirstOrDefaultAsync(p => p.Code == code).ConfigureAwait(false);
+ return entitie;
+ }
+
+}
diff --git a/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/TransferLogs/ITransferLogAppService.cs b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/TransferLogs/ITransferLogAppService.cs
index 0c05af72e..4c0fd5395 100644
--- a/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/TransferLogs/ITransferLogAppService.cs
+++ b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/TransferLogs/ITransferLogAppService.cs
@@ -15,5 +15,5 @@ public interface ITransferLogAppService
Task> GetListByContainerAsync(string containerCode);
Task> GetListByItemAsync(string itemCode);
Task> GetListByLocationAsync(string locationCode);
-
+ Task> AddManyWithTransferAsync(List inputs, List transactionInputs);
}
diff --git a/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/TransferLogs/TransferLogAppService.cs b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/TransferLogs/TransferLogAppService.cs
index 68b010434..1c7474a1f 100644
--- a/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/TransferLogs/TransferLogAppService.cs
+++ b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/TransferLogs/TransferLogAppService.cs
@@ -75,6 +75,27 @@ public class TransferLogAppService
return dto;
}
+ [HttpPost("add-many-with-transfer")]
+ public virtual async Task> AddManyWithTransferAsync(List inputs,List transactionInputs)
+ {
+ var transferLogs = ObjectMapper.Map, List>(inputs);
+ var transactions = ObjectMapper.Map, List>(transactionInputs);
+ foreach (var entity in transferLogs)
+ {
+ if (string.IsNullOrEmpty(entity.Worker))
+ {
+ entity.Worker = CurrentUser.GetUserName();
+ }
+
+ entity.TransferTime = Clock.Now;
+ entity.ActiveDate = await _interfaceCalendarAclService.GetActiveDateAsync(Clock.Now).ConfigureAwait(false);
+ }
+
+ await _transferLogManager.AddManyWithTransferAsync(transferLogs, transactions).ConfigureAwait(false);
+
+ var dto = ObjectMapper.Map, List>(transferLogs);
+ return dto;
+ }
[HttpGet("list/by-number/{number}")]
public virtual async Task> GetListByNumberAsync(string number)
{
diff --git a/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/TransferLogs/ITransferLogManager.cs b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/TransferLogs/ITransferLogManager.cs
index 34fb3cabb..1a8719a6f 100644
--- a/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/TransferLogs/ITransferLogManager.cs
+++ b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/TransferLogs/ITransferLogManager.cs
@@ -51,5 +51,5 @@ public interface ITransferLogManager : IDomainService
Task ChangeLocationAsync(Balance inventory,
string newWarehouseCode, string newLocationCode, string newContainerCode, string worker,
string jobNumber, string docNumber);
-
+ Task AddManyWithTransferAsync(List transferLogs, List inputTransactions);
}
diff --git a/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/TransferLogs/TransferLogManager.cs b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/TransferLogs/TransferLogManager.cs
index 616b564fa..cbed261c3 100644
--- a/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/TransferLogs/TransferLogManager.cs
+++ b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/TransferLogs/TransferLogManager.cs
@@ -147,6 +147,60 @@ public class TransferLogManager : DomainService, ITransferLogManager
}
+ public virtual async Task AddManyWithTransferAsync(List transferLogs, List excludeTransactions)
+ {
+ //TODO 功能大调整
+
+ //1. 生成并添加Transactions
+
+ var transactions = new List();
+
+ foreach (var transferLog in transferLogs)
+ {
+ var number = await _numberGenerator.CreateAsync().ConfigureAwait(false);
+ var activeDate = await _interfaceCalendarAclService.GetActiveDateAsync(Clock.Now).ConfigureAwait(false);
+
+ await TrySetItemAndLocationAsync(transferLog).ConfigureAwait(false);
+
+ var inOutTransactions = await transferLog.BuildAndAddTransactionsAsync(number, activeDate,
+ _transactionManager.AddAsync).ConfigureAwait(false);
+
+ Logger.LogDebug($"{transferLog.DocNumber}|TransferLog:{transferLog}");
+ transactions.AddRange(inOutTransactions);
+ }
+
+ //2. 添加TransferLogs
+ await _transferLogRepository.InsertManyAsync(transferLogs).ConfigureAwait(false);
+
+ //3. Transactions按箱码,ERP料号,批次,库位,状态汇总数量,将需要对冲的明细对冲掉
+ var allTransactions = new List();
+ allTransactions.AddRange(transactions);
+ allTransactions.AddRange(excludeTransactions);
+ var compactTransactions = new List();
+ foreach (var transaction in allTransactions)
+ {
+ var compactTransaction = compactTransactions.FirstOrDefault(p => p.ItemCode == transaction.ItemCode
+ && p.PackingCode == transaction.PackingCode
+ && p.Lot == transaction.Lot
+ && p.LocationCode == transaction.LocationCode
+ && p.Status == transaction.Status);
+ if (compactTransaction == null)//如果集合中没有就创建
+ {
+ compactTransaction = new Transaction(transaction);
+ compactTransactions.Add(compactTransaction);
+ }
+ else//有则加减qty
+ {
+ compactTransaction.Qty += transaction.Qty;
+ }
+
+ }
+
+ //4. 根据汇总后的Transaction列表更新库存余额和库位可用容量
+ await _transactionManager.UpdateBalanceAsync(compactTransactions.Where(r=>r.Qty!=0).ToList()).ConfigureAwait(false);
+
+ }
+
public virtual async Task ChangeBatchAsync(Balance inventory, string newLot,
string newSupplierBatch, DateTime newArriveDate, DateTime newProduceDate, DateTime newExpireDate, string worker, string jobNumber, string docNumber)
{
diff --git a/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Inventory/EnumTransSubType.cs b/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Inventory/EnumTransSubType.cs
index 5a45e7d5d..e1869bb2e 100644
--- a/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Inventory/EnumTransSubType.cs
+++ b/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Inventory/EnumTransSubType.cs
@@ -114,6 +114,13 @@ public enum EnumTransSubType
[Display(Name = "完工报废")]
Scrap_Product = 3604,
+ ///
+ /// 报废转移
+ ///
+ [Display(Name = "报废转移")]
+ Scrap_Transfer = 3605,
+
+
///
/// 线边调整
///
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/ScrapNoteEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/ScrapNoteEventHandler.cs
index 5dcc31266..22ba26566 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/ScrapNoteEventHandler.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/ScrapNoteEventHandler.cs
@@ -39,17 +39,17 @@ public class ScrapNoteEventHandler
await detail.TrySetLocationAsync(LocationAclService).ConfigureAwait(false);
}
- //如果WMS管理报废库,生成库存转移
- if (await SettingManager.IsTrueAsync(StoreSettings.Common.EnableScrapLocation).ConfigureAwait(false))
- {
- var exchangeData = await BuildExchangeDataAsync(StoreEventConsts.WMS, StoreEventConsts.ERP, EnumExchangeDataType.Transfer, dtos).ConfigureAwait(false);
- await AddManyAsync(exchangeData).ConfigureAwait(false);
- }
- else
- {
+ ////如果WMS管理报废库,生成库存转移
+ //if (await SettingManager.IsTrueAsync(StoreSettings.Common.EnableScrapLocation).ConfigureAwait(false))
+ //{
+ // var exchangeData = await BuildExchangeDataAsync(StoreEventConsts.WMS, StoreEventConsts.ERP, EnumExchangeDataType.Transfer, dtos).ConfigureAwait(false);
+ // await AddManyAsync(exchangeData).ConfigureAwait(false);
+ //}
+ //else
+ //{
var exchangeData = await BuildExchangeDataAsync(StoreEventConsts.WMS, StoreEventConsts.ERP, EnumExchangeDataType.Scrap, dtos).ConfigureAwait(false);
await AddManyAsync(exchangeData).ConfigureAwait(false);
- }
+ // }
}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/ScrapNoteEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/ScrapNoteEventHandler.cs
index 981f42265..caf44ed49 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/ScrapNoteEventHandler.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/ScrapNoteEventHandler.cs
@@ -4,9 +4,11 @@ using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.EventBus;
using Volo.Abp.Uow;
+using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Inventory.Application.Contracts;
+using Win_in.Sfs.Wms.Inventory.Domain;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared;
using Win_in.Sfs.Wms.Store.Event.Transaction;
@@ -38,42 +40,53 @@ public class ScrapNoteEventHandler
private async Task AddTransactionsAsync(List scrapNotes)
{
-
- //如果WMS管理报废库,生成库存转移
+ var holdLocation = await LocationAclService.GetFirstByTypeAsync(EnumLocationType.HOLD).ConfigureAwait(false); //隔离库位
+ var transferLogs = new List();
+ var transactions = new List();
+ //如果WMS管理报废库,生成报废库存转移(从HOLD库先转移到线边)
if (await SettingManager.IsTrueAsync(StoreSettings.Common.EnableScrapLocation).ConfigureAwait(false))
{
- var transferLogs = new List();
foreach (var scrapNote in scrapNotes)
{
- transferLogs.AddRange(BuildTransferLogs(scrapNote));
+
+ if (await SettingManager.IsTrueAsync(StoreSettings.Common.EnableScrapLocation).ConfigureAwait(false))
+ {
+ transferLogs.AddRange(BuildTransferLogs(scrapNote, holdLocation));
+ }
+ transactions.AddRange(BuildTransactions(scrapNote));
}
- await TransferLogAppService.AddManyAsync(transferLogs).ConfigureAwait(false);
+
+ await TransferLogAppService.AddManyWithTransferAsync(transferLogs, transactions).ConfigureAwait(false);
+ await TransactionAppService.AddManyEmptyAsync(transactions).ConfigureAwait(false);
}
else
{
- var transactions = new List();
foreach (var scrapNote in scrapNotes)
- {
+ {
transactions.AddRange(BuildTransactions(scrapNote));
}
-
await TransactionAppService.AddManyAsync(transactions).ConfigureAwait(false);
}
}
- private List BuildTransferLogs(ScrapNote scrapNote)
+ private List BuildTransferLogs(ScrapNote scrapNote, LocationDTO holdLocation)
{
var transferLogs = new List();
+
foreach (var detail in scrapNote.Details.Where(detail => detail.Qty != 0))
{
var transferLog = ObjectMapper.Map(detail);
transferLog.TransType = TransType;
- transferLog.TransSubType = Enum.Parse(scrapNote.Type);
+ transferLog.TransSubType = EnumTransSubType.Scrap_Transfer;
transferLog.Worker = scrapNote.Worker;
transferLog.DocNumber = scrapNote.Number;
transferLog.JobNumber = scrapNote.JobNumber;
-
+ transferLog.FromLocationCode = holdLocation?.Code;
+ transferLog.FromLocationArea = holdLocation?.AreaCode;
+ transferLog.FromLocationGroup = holdLocation?.LocationGroupCode;
+ transferLog.FromLocationErpCode = holdLocation?.ErpLocationCode;
+ transferLog.FromStatus = EnumInventoryStatus.HOLD;
transferLogs.Add(transferLog);
}
@@ -89,6 +102,7 @@ public class ScrapNoteEventHandler
var transaction = ObjectMapper.Map(detail);
transaction.TransType = TransType;
+ transaction.TransSubType = Enum.Parse(deliverNote.Type);
transaction.TransInOut = EnumTransInOut.Out;
transaction.Worker = deliverNote.Worker;
transaction.DocNumber = deliverNote.Number;
diff --git a/build/src/docker/publish/conf/settings/appsettings.Development.json b/build/src/docker/publish/conf/settings/appsettings.Development.json
index c74d5217b..ec97ab563 100644
--- a/build/src/docker/publish/conf/settings/appsettings.Development.json
+++ b/build/src/docker/publish/conf/settings/appsettings.Development.json
@@ -133,8 +133,8 @@
//"BaseUrl": "http://localhost:59093/"
},
"BaseData": {
- "BaseUrl": "http://dev.ccwin-in.com:60084/"
- //"BaseUrl": "http://localhost:59094/"
+ //"BaseUrl": "http://dev.ccwin-in.com:60084/"
+ "BaseUrl": "http://localhost:59094/"
},
"Default": {
"BaseUrl": "http://dev.ccwin-in.com:60083/"