郑勃旭 1 year ago
parent
commit
0934a600b8
  1. 21
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesOutConverter.cs
  2. 5
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesOutReader.cs
  3. 8
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Properties/launchSettings.json
  4. 6
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/appsettings.json
  5. 20
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/AgentModule.cs
  6. 3
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsWorker.cs
  7. 4
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/appsettings.json
  8. 53
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/ProductReceiptNote/ProductReceiptNoteSumDetailExchangeDto.cs
  9. 35
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/Win_in.Sfs.Wms.DataExchange.Application.Contracts.xml
  10. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestFisAppService.cs

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

@ -6,10 +6,12 @@ using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Org.BouncyCastle.Asn1.Pkcs;
using Volo.Abp.Data;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.Domain.Shared;
using Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
@ -62,7 +64,7 @@ public class MesOutConverter : IIncomingConverter
{
List<EnumLocationType> types = new List<EnumLocationType> { EnumLocationType.FG, EnumLocationType.WIP };
var incomingToWmsList = new List<IncomingToWms>();
var groups = incomingDataList.GroupBy(p => p.SourceDataGroupCode);
var groups = incomingDataList.GroupBy(p => new { p.SourceDataGroupCode, p.TableType });//按照库位和是为为返喷分组
foreach (var group in groups)
{
var first = group.First();
@ -80,15 +82,26 @@ public class MesOutConverter : IIncomingConverter
wmsProductReceiptNote.Worker = "MES";//操作人
wmsProductReceiptNote.ReceiptType = EnumReceiptType.MesScanReceipt;//完工收货方式
wmsProductReceiptNote.Details = new List<ProductReceiptNoteDetailInput>();
List<ProductReceiptNoteSumDetailExchangeDto> sumDetails = new List<ProductReceiptNoteSumDetailExchangeDto>();
foreach (var incomingFromExternal in group.ToList())
{
ProductReceiptNoteSumDetailExchangeDto sumdetail = new ProductReceiptNoteSumDetailExchangeDto();
var productReceiptNote = JsonSerializer.Deserialize<ProductReceiptNoteExchangeDto>(incomingFromExternal.DestinationDataContent);
var wmsProductReceiptNoteDetail = _objectMapper.Map<ProductReceiptNoteDetailExchangeDto, ProductReceiptNoteDetailInput>(productReceiptNote.Detail);
var oldNoteDetail= wmsProductReceiptNote.Details.FirstOrDefault(r => r.ItemCode == wmsProductReceiptNoteDetail.ItemCode && r.LocationErpCode == wmsProductReceiptNoteDetail.LocationErpCode);
var oldNoteDetail= wmsProductReceiptNote.Details.FirstOrDefault(r => r.ItemCode == wmsProductReceiptNoteDetail.ItemCode && r.LocationErpCode == wmsProductReceiptNoteDetail.LocationErpCode &&(first.TableType != EnumExchangeTableType.MainTable?true:r.ReturnQty!=0 ));
sumdetail.itemCode = wmsProductReceiptNoteDetail.ItemCode;
sumdetail.locationCode = wmsProductReceiptNoteDetail.LocationErpCode;
sumdetail.Qty = wmsProductReceiptNoteDetail.Qty;
sumdetail.BadQty = wmsProductReceiptNoteDetail.ReturnQty;
sumdetail.Memo = wmsProductReceiptNoteDetail.Remark;
sumdetail.MesGuid = incomingFromExternal.SourceDataId;
sumDetails.Add(sumdetail);
if (oldNoteDetail != null)
{
oldNoteDetail.Qty = oldNoteDetail.Qty+wmsProductReceiptNoteDetail.Qty;
oldNoteDetail.ReturnQty = oldNoteDetail.ReturnQty + wmsProductReceiptNoteDetail.ReturnQty;
}
else
{
@ -141,6 +154,8 @@ public class MesOutConverter : IIncomingConverter
wmsProductReceiptNote.Details.Add(wmsProductReceiptNoteDetail);
}
}
wmsProductReceiptNote.ExtraProperties = new ExtraPropertyDictionary();
wmsProductReceiptNote.ExtraProperties.Add(first.SourceDataGroupCode, JsonSerializer.Serialize(sumDetails));
incomingToWms.DataContent = JsonSerializer.Serialize(wmsProductReceiptNote);
incomingToWmsList.Add(incomingToWms);
}

5
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesOutReader.cs

@ -119,6 +119,11 @@ public class MesOutReader : IReader
DestinationSystem = EnumSystemType.WMS.ToString(),
};
//返喷数不为零用tabletype标志出来,用于后续汇总
if (mesOut.Mesout_bad != 0)
{
incomingData.TableType = EnumExchangeTableType.MainTable;
}
return incomingData;
}

8
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Properties/launchSettings.json

@ -0,0 +1,8 @@
{
"profiles": {
"WSL": {
"commandName": "WSL2",
"distributionName": ""
}
}
}

6
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/appsettings.json

@ -1,8 +1,8 @@
{
"ConnectionStrings": {
"Default": "Server=10.164.113.32,1818\\SHDB;Database=Wms_Dy_ShangHai;uid=ShWmsUser;pwd=Faty@Wms_20230413#SH;TrustServerCertificate=True",
"DataExchange": "Server=10.164.113.32,1818\\SHDB;Database=Wms_DataExchange_Main_Dy_ShangHai;uid=ShWmsUser;pwd=Faty@Wms_20230413#SH;TrustServerCertificate=True",
"MES": "Server=10.164.113.32,1818\\SHDB;Database=MES_SH;uid=ShWmsUser;pwd=Faty@Wms_20230413#SH;TrustServerCertificate=True"
"Default": "Server=10.164.113.32,1818\\SHDB;Database=Wms_Dy_ShangHai;uid=ShWmsUser;pwd=Faty@Wms_20230413#SH;TrustServerCertificate=True;Encrypt=false",
"DataExchange": "Server=10.164.113.32,1818\\SHDB;Database=Wms_DataExchange_Main_Dy_ShangHai;uid=ShWmsUser;pwd=Faty@Wms_20230413#SH;TrustServerCertificate=True;Encrypt=false",
"MES": "Server=10.164.113.32,1818\\SHDB;Database=MES_SH;uid=ShWmsUser;pwd=Faty@Wms_20230413#SH;TrustServerCertificate=True;Encrypt=false"
},
"AuthServer": {

20
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/AgentModule.cs

@ -48,16 +48,16 @@ public class AgentModule : AbpModule
{
PreConfigure<AbpHttpClientBuilderOptions>(options =>
{
//Polly 重试3次
options.ProxyClientBuildActions.Add((remoteServiceName, clientBuilder) =>
{
clientBuilder.AddTransientHttpErrorPolicy(policyBuilder =>
policyBuilder.WaitAndRetryAsync(
3,
i => TimeSpan.FromSeconds(Math.Pow(2, i))
)
);
});
// Polly 重试3次
//options.ProxyClientBuildActions.Add((remoteServiceName, clientBuilder) =>
//{
// clientBuilder.AddTransientHttpErrorPolicy(policyBuilder =>
// policyBuilder.WaitAndRetryAsync(
// 1,
// i => TimeSpan.FromSeconds(Math.Pow(2, i))
// )
// );
//});
//默认添加Authorization Header: Bearer Token
options.ProxyClientActions.Add((a, s, h) =>

3
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsWorker.cs

@ -237,6 +237,8 @@ public class IncomingToWmsWorker : AsyncPeriodicBackgroundWorkerBase
if (!string.IsNullOrEmpty(_options.Value.IncomingOptions.apiUrl))
{
var productReceiptJson = JsonSerializer.Deserialize<ProductReceiptNoteEditInput>(incomingToWms.DataContent);
var memos = productReceiptJson.Details.Select(r => r.Remark).ToList();
string memostr = String.Join(", ", memos);
productReceiptJson.Worker = "Mes";
try
{
@ -256,6 +258,7 @@ public class IncomingToWmsWorker : AsyncPeriodicBackgroundWorkerBase
// 读取响应内容并返回
string responseBody = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
Logger.LogInformation("标签"+memostr);
}
catch (HttpRequestException ex)
{

4
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/appsettings.json

@ -42,14 +42,14 @@
"IncomingOptions": {
"Active": true,
"PeriodSeconds": 10,
"RetryTimes": 3,
"RetryTimes": 1,
"BatchSize": 100,
"apiUrl": "http://10.164.113.31:60085/"
},
"OutgoingOptions": {
"Active": false,
"PeriodSeconds": 10,
"RetryTimes": 3,
"RetryTimes": 1,
"BatchSize": 100,
"BaseUrl": "https://localhost:7034/test",
"Username": "username",

53
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/ProductReceiptNote/ProductReceiptNoteSumDetailExchangeDto.cs

@ -0,0 +1,53 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote;
public class ProductReceiptNoteSumDetailExchangeDto
{
/// <summary>
/// 零件编号
/// </summary>
[Display(Name = "零件编号")]
public string itemCode { get; set; }
/// <summary>
/// 库位编码
/// </summary>
[Display(Name = "零件编号")]
public string locationCode { get; set; }
/// <summary>
/// MesGuid
/// </summary>
[Display(Name = "MesGuid")]
public string MesGuid { get; set; }
/// <summary>
/// id
/// </summary>
[Display(Name = "id")]
public string Memo { get; set; }
/// <summary>
/// 生效日期
/// </summary>
[Display(Name = "生效日期")]
public DateTime CreatDate { get; set; } = DateTime.Now.Date;
/// <summary>
/// 数量
/// </summary>
[Display(Name = "数量")]
public decimal Qty { get; set; }
/// <summary>
/// 返喷数量
/// </summary>
[Display(Name = "返喷数量")]
public decimal BadQty { get; set; }
}

35
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/Win_in.Sfs.Wms.DataExchange.Application.Contracts.xml

@ -841,6 +841,41 @@
明细列表
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote.ProductReceiptNoteSumDetailExchangeDto.itemCode">
<summary>
零件编号
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote.ProductReceiptNoteSumDetailExchangeDto.locationCode">
<summary>
库位编码
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote.ProductReceiptNoteSumDetailExchangeDto.MesGuid">
<summary>
MesGuid
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote.ProductReceiptNoteSumDetailExchangeDto.Memo">
<summary>
id
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote.ProductReceiptNoteSumDetailExchangeDto.CreatDate">
<summary>
生效日期
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote.ProductReceiptNoteSumDetailExchangeDto.Qty">
<summary>
数量
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote.ProductReceiptNoteSumDetailExchangeDto.BadQty">
<summary>
返喷数量
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ProductRecycleNote.ProductRecycleMaterialDetailExchangeDto.ProductItemCode">
<summary>
产成品物料号

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestFisAppService.cs

@ -196,6 +196,13 @@ public class DeliverRequestFisAppService :
#region import
protected override async Task ValidateImportModelAsync(DeliverRequestFisImportInput model, List<ValidationResult> validationRresult)
{
await CheckImportInputBusinessAsync(model,EnumImportMethod.Append,validationRresult).ConfigureAwait(false);
await base.ValidateImportModelAsync(model, validationRresult).ConfigureAwait(false);
}
protected virtual async Task CheckImportInputBusinessAsync(
DeliverRequestFisImportInput importInput,
EnumImportMethod importMethod,

Loading…
Cancel
Save