郑渤旭[Irelia] 2 years ago
parent
commit
1f0ec64bec
  1. 17
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/BackFluConverter.cs
  2. 63
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsWorker.cs
  3. 2
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/appsettings.json
  4. 2
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/Balances/DTOs/BalanceSerialDto.cs
  5. 23
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Transactions/TransactionAppService.cs

17
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/BackFluConverter.cs

@ -58,7 +58,7 @@ public class BackFluConverter : IIncomingConverter
{ {
await Task.CompletedTask.ConfigureAwait(false); await Task.CompletedTask.ConfigureAwait(false);
var incomingToWmsList = new List<IncomingToWms>(); var incomingToWmsList = new List<IncomingToWms>();
var groups = incomingDataList.GroupBy(p => new { p.SourceDataGroupCode,p.SourceDataDetailCode }); var groups = incomingDataList.GroupBy(p => p.SourceDataGroupCode);
foreach (var group in groups) foreach (var group in groups)
{ {
var first = group.First(); var first = group.First();
@ -97,17 +97,13 @@ public class BackFluConverter : IIncomingConverter
wmsBack.WarehouseCode = "jiekou"; wmsBack.WarehouseCode = "jiekou";
wmsBack.Lot = "jiekou"; wmsBack.Lot = "jiekou";
wmsBack.Details = new List<BackFlushNoteDetailInput>(); wmsBack.Details = new List<BackFlushNoteDetailInput>();
decimal Qty = 0; foreach (var incomingFromExternal in group.ToList())
foreach (var incomingFromExternal in group.ToList())//根据单据号和零件号汇总数量
{ {
var backflu = JsonSerializer.Deserialize<BackFlushNoteExchangeDto>(incomingFromExternal.DestinationDataContent); var back = JsonSerializer.Deserialize<BackFlushNoteExchangeDto>(incomingFromExternal.DestinationDataContent);
var backfluDetail = _objectMapper.Map<BackFlushNoteDetailExchangeDto, BackFlushNoteDetailInput>(backflu.Detail);
Qty = backfluDetail.Qty + Qty;
}
var back = JsonSerializer.Deserialize<BackFlushNoteExchangeDto>(first.DestinationDataContent);
var wmsBackDetail = _objectMapper.Map<BackFlushNoteDetailExchangeDto, BackFlushNoteDetailInput>(back.Detail); var wmsBackDetail = _objectMapper.Map<BackFlushNoteDetailExchangeDto, BackFlushNoteDetailInput>(back.Detail);
wmsBackDetail.Lot = ""; wmsBackDetail.Lot = "";
var item = await _itemBasicAppService.GetByCodeAsync(wmsBackDetail.ItemCode).ConfigureAwait(false); var item = await _itemBasicAppService.GetByCodeAsync(wmsBackDetail.ItemCode).ConfigureAwait(false);
if (item != null) if (item != null)
{ {
wmsBackDetail.ItemName = item.Name; wmsBackDetail.ItemName = item.Name;
@ -118,7 +114,6 @@ public class BackFluConverter : IIncomingConverter
wmsBackDetail.ItemName = ""; wmsBackDetail.ItemName = "";
wmsBackDetail.Uom = ""; wmsBackDetail.Uom = "";
} }
wmsBackDetail.Qty = Qty;
var typesAndErpCodeAsync = await _locationAppService.GetListByTypesAndErpCodeAsync(new EditableList<EnumLocationType>() { EnumLocationType.WIP }, wmsBackDetail.LocationErpCode).ConfigureAwait(false); var typesAndErpCodeAsync = await _locationAppService.GetListByTypesAndErpCodeAsync(new EditableList<EnumLocationType>() { EnumLocationType.WIP }, wmsBackDetail.LocationErpCode).ConfigureAwait(false);
var loctioncode = typesAndErpCodeAsync.First(); var loctioncode = typesAndErpCodeAsync.First();
wmsBackDetail.LocationCode = loctioncode.Code; wmsBackDetail.LocationCode = loctioncode.Code;
@ -127,7 +122,7 @@ public class BackFluConverter : IIncomingConverter
wmsBackDetail.LocationGroup = loctioncode.LocationGroupCode; wmsBackDetail.LocationGroup = loctioncode.LocationGroupCode;
wmsBackDetail.PackingCode = "jiekou"; wmsBackDetail.PackingCode = "jiekou";
wmsBack.Details.Add(wmsBackDetail); wmsBack.Details.Add(wmsBackDetail);
//} }
incomingToWms.DataContent = JsonSerializer.Serialize(wmsBack); incomingToWms.DataContent = JsonSerializer.Serialize(wmsBack);
incomingToWmsList.Add(incomingToWms); incomingToWmsList.Add(incomingToWms);
} }

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

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using System.Net.Http; using System.Net.Http;
using System.Net.Http.Headers; using System.Net.Http.Headers;
using System.Text; using System.Text;
@ -17,6 +18,7 @@ using Volo.Abp.Threading;
using Volo.Abp.Uow; using Volo.Abp.Uow;
using Win_in.Sfs.Wms.DataExchange.Domain; using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.Domain.Shared; using Win_in.Sfs.Wms.DataExchange.Domain.Shared;
using Win_in.Sfs.Wms.DataExchange.Wms;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
using static IdentityServer4.Models.IdentityResources; using static IdentityServer4.Models.IdentityResources;
@ -156,24 +158,69 @@ public class IncomingToWmsWorker : AsyncPeriodicBackgroundWorkerBase
await incomingToWms.HandleInventoryLabelsAsync(workerContext).ConfigureAwait(false); await incomingToWms.HandleInventoryLabelsAsync(workerContext).ConfigureAwait(false);
break; break;
case EnumIncomingDataType.BackFlush: case EnumIncomingDataType.BackFlush:
await incomingToWms.HandleBackFlushsAsync(workerContext).ConfigureAwait(false); // await incomingToWms.HandleBackFlushsAsync(workerContext).ConfigureAwait(false);
await SendBackFlush(workerContext, incomingToWms).ConfigureAwait(false);
break; break;
case EnumIncomingDataType.None: case EnumIncomingDataType.None:
default: default:
throw new ArgumentOutOfRangeException(); throw new ArgumentOutOfRangeException();
} }
if( incomingToWms.Status != EnumExchangeDataStatus.Error)
incomingToWms.SetSuccess(); {
incomingToWms.SetSuccess();
}
} }
private async Task SendBackFlush(PeriodicBackgroundWorkerContext workerContext, IncomingToWms incomingToWms)
{ // 定义请求的 URL
// string apiUrl = "http://10.164.113.31:60085/api/wms/store/product-receipt-note";
string apiUrl = _options.Value.IncomingOptions.apiUrl+ "api/wms/store/backFlush-note/create-many";
if (!string.IsNullOrEmpty(_options.Value.IncomingOptions.apiUrl))
{
var backflushJson = JsonSerializer.Deserialize<BackFlushNoteEditInput>(incomingToWms.DataContent);
List<BackFlushNoteEditInput> backflush = new List<BackFlushNoteEditInput>();
backflush.Add(backflushJson);
try
{
// 将参数转换为 JSON 格式
string jsonContent = JsonSerializer.Serialize(backflush);
// 创建请求的内容
StringContent content = new StringContent(jsonContent, Encoding.UTF8, "application/json");
// 发送 POST 请求
HttpResponseMessage response = await _httpClient.PostAsync(apiUrl, content).ConfigureAwait(false);
// 确保响应成功
response.EnsureSuccessStatusCode();
// 读取响应内容并返回
string responseBody = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
}
catch (HttpRequestException ex)
{
// 处理请求异常
// 可以记录日志或者抛出异常
Console.WriteLine(ex.Message);
incomingToWms.SetError(EnumExchangeDataErrorCode.Exception, ex.Message);
}
}
else
{
Console.WriteLine("apiUrl未配置!");
incomingToWms.SetError(EnumExchangeDataErrorCode.Exception, "apiUrl未配置!");
}
}
private async Task SendProductReceipt(PeriodicBackgroundWorkerContext workerContext, IncomingToWms incomingToWms) private async Task SendProductReceipt(PeriodicBackgroundWorkerContext workerContext, IncomingToWms incomingToWms)
{ // 定义请求的 URL { // 定义请求的 URL
// string apiUrl = "http://10.164.113.31:60085/api/wms/store/product-receipt-note"; // string apiUrl = "http://10.164.113.31:60085/api/wms/store/product-receipt-note";
string apiUrl = _options.Value.IncomingOptions.apiUrl; string apiUrl = _options.Value.IncomingOptions.apiUrl + "api/wms/store/product-receipt-note";
if (!string.IsNullOrEmpty(apiUrl)) if (!string.IsNullOrEmpty(_options.Value.IncomingOptions.apiUrl))
{ {
var productReceiptJson = JsonSerializer.Deserialize<ProductReceiptNoteEditInput>(incomingToWms.DataContent); var productReceiptJson = JsonSerializer.Deserialize<ProductReceiptNoteEditInput>(incomingToWms.DataContent);
productReceiptJson.Worker = "Mes"; productReceiptJson.Worker = "Mes";
@ -201,13 +248,13 @@ public class IncomingToWmsWorker : AsyncPeriodicBackgroundWorkerBase
// 处理请求异常 // 处理请求异常
// 可以记录日志或者抛出异常 // 可以记录日志或者抛出异常
Console.WriteLine(ex.Message); Console.WriteLine(ex.Message);
//incomingToWms.SetError(EnumExchangeDataErrorCode.Exception, ex.Message); incomingToWms.SetError(EnumExchangeDataErrorCode.Exception, ex.Message);
} }
} }
else else
{ {
Console.WriteLine("apiUrl未配置!"); Console.WriteLine("apiUrl未配置!");
incomingToWms.SetError(EnumExchangeDataErrorCode.Exception, "apiUrl未配置!");
} }
//finally //finally
//{ //{

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

@ -44,7 +44,7 @@
"PeriodSeconds": 10, "PeriodSeconds": 10,
"RetryTimes": 3, "RetryTimes": 3,
"BatchSize": 100, "BatchSize": 100,
"apiUrl": "http://10.164.113.31:60085/api/wms/store/product-receipt-note" "apiUrl": "http://10.164.113.31:60085/"
}, },
"OutgoingOptions": { "OutgoingOptions": {
"Active": false, "Active": false,

2
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/Balances/DTOs/BalanceSerialDto.cs

@ -48,7 +48,7 @@ public class ReportErpLocationSerialDto
public class ReportLocationSerialDto public class ReportLocationSerialDto
{ {
public string LocatioCode { get; set; } public string LocationCode { get; set; }
/// <summary> /// <summary>
/// 期初库存 小于开始时间 /// 期初库存 小于开始时间

23
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Transactions/TransactionAppService.cs

@ -4,6 +4,7 @@ using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
using Volo.Abp.ObjectMapping; using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Application.Contracts; using Win_in.Sfs.Shared.Application.Contracts;
@ -128,7 +129,7 @@ public class TransactionAppService
/// <param name="startDateTime"></param> /// <param name="startDateTime"></param>
/// <param name="endDateTime"></param> /// <param name="endDateTime"></param>
/// <returns></returns> /// <returns></returns>
[HttpGet("item-serial-list")] [HttpPost("item-serial-list")]
public virtual async Task<List<ReportItemSerialDto>> GetItemSerialList(List<string> itemCodes,DateTime startDateTime,DateTime endDateTime) public virtual async Task<List<ReportItemSerialDto>> GetItemSerialList(List<string> itemCodes,DateTime startDateTime,DateTime endDateTime)
{ {
var itemSerialDtos = new List<ReportItemSerialDto>(); var itemSerialDtos = new List<ReportItemSerialDto>();
@ -137,6 +138,11 @@ public class TransactionAppService
var itemSerialDto = new ReportItemSerialDto(); var itemSerialDto = new ReportItemSerialDto();
var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(itemCode).ConfigureAwait(false); var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(itemCode).ConfigureAwait(false);
if (itemBasicDto==null)
{
throw new UserFriendlyException($"物品代码{itemCode}不存在");
}
itemSerialDto.ItemCode = itemBasicDto.Code; itemSerialDto.ItemCode = itemBasicDto.Code;
itemSerialDto.ItemDesc1 = itemBasicDto.Desc1; itemSerialDto.ItemDesc1 = itemBasicDto.Desc1;
itemSerialDto.ItemDesc2 = itemBasicDto.Desc2; itemSerialDto.ItemDesc2 = itemBasicDto.Desc2;
@ -191,8 +197,18 @@ public class TransactionAppService
//期初库存 //期初库存
var tempFirstSum = transactions.Where(p => p.LocationCode == locationDto.Code && p.CreationTime<startDateTime).Sum(p=>p.Qty); var tempFirstSum = transactions.Where(p => p.LocationCode == locationDto.Code && p.CreationTime<startDateTime).Sum(p=>p.Qty);
//当前库存 //当前库存
var balanceDtos= await _balanceAppService.GetListByLocationCodeAndItemCodeAsync(locationDto.Code, itemSerialDto.ItemCode).ConfigureAwait(false); decimal tempNowSum = 0;
var tempNowSum = balanceDtos.Sum(p => p.Qty); try
{
var balanceDtos = await _balanceAppService
.GetListByLocationCodeAndItemCodeAsync(locationDto.Code, itemSerialDto.ItemCode)
.ConfigureAwait(false);
tempNowSum = balanceDtos.Sum(p => p.Qty);
}
catch
{
}
//期末库存 //期末库存
var tempLastSum = transactions.Where(p => p.LocationCode == locationDto.Code && p.CreationTime < endDateTime).Sum(p => p.Qty); var tempLastSum = transactions.Where(p => p.LocationCode == locationDto.Code && p.CreationTime < endDateTime).Sum(p => p.Qty);
@ -203,6 +219,7 @@ public class TransactionAppService
reportLocationSerialDto.FirstQty = tempFirstSum; reportLocationSerialDto.FirstQty = tempFirstSum;
reportLocationSerialDto.NowQty = tempNowSum; reportLocationSerialDto.NowQty = tempNowSum;
reportLocationSerialDto.LastQty = tempLastSum; reportLocationSerialDto.LastQty = tempLastSum;
reportLocationSerialDto.LocationCode = locationDto.Code;
#endregion #endregion
reportErpLocationSerialDto.ReportLocationSerialDtos.Add(reportLocationSerialDto); reportErpLocationSerialDto.ReportLocationSerialDtos.Add(reportLocationSerialDto);

Loading…
Cancel
Save