唐明亮 2 years ago
parent
commit
ba9a08fa01
  1. 4
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Eos/Plans/PlanManager.cs
  2. 2
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent/Incoming/ProductReader.cs
  3. 4
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/DictConverter.cs
  4. 1
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/SupplierConverter.cs
  5. 2
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/TyrpIncomingBackgroundWorker.cs
  6. 2
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/appsettings.json
  7. 79
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Orders/PurchaseOrders/PurchaseOrderAppService.cs
  8. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Orders/PurchaseOrders/PurchaseOrderManager.cs
  9. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Bases/StoreDataExchangeEventHandlerBase.cs
  10. 25
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Orders/PurchaseOrderEventHandler.cs
  11. 5
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/BackFlushNoteEventHandler.cs

4
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Eos/Plans/PlanManager.cs

@ -32,6 +32,8 @@ public class PlanManager : DomainService, IPlanManager
p.WmsState = 1;
p.WmsDate = Clock.Now;
});
await _repository.BulkUpdateAsync(plans).ConfigureAwait(false);
//await _repository.BulkUpdateAsync(plans).ConfigureAwait(false);
await _repository.UpdateManyAsync(plans).ConfigureAwait(false);
}
}

2
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent/Incoming/ProductReader.cs

@ -45,7 +45,7 @@ public class ProductReader : IReader
return new List<IncomingFromExternal>();
}
//Product逐一转换为ItemPack
var incomingDataList = BuildIncomingFromExternalFromProductAsync(toBeProcessedProducts.Where(r => string.IsNullOrWhiteSpace(r.Code)).ToList());
var incomingDataList = BuildIncomingFromExternalFromProductAsync(toBeProcessedProducts.Where(r => !string.IsNullOrWhiteSpace(r.Code)).ToList());
await _incomingFromExternalManager.CreateBulkAsync(incomingDataList).ConfigureAwait(false);
return incomingDataList;

4
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/DictConverter.cs

@ -8,6 +8,7 @@ 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.Dict;
using static StackExchange.Redis.Role;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent.Incoming;
@ -68,10 +69,13 @@ public class DictConverter : IIncomingConverter
var exchangeDictRequest = JsonSerializer.Deserialize<DictExchangeDto>(first.DestinationDataContent);
var wmsDictRequest = _objectMapper.Map<DictExchangeDto, DictEditInput>(exchangeDictRequest);
wmsDictRequest.Items = new List<DictItemInput>();
var masterId = _guidGenerator.Create();
foreach (var incomingFromExternal in group.ToList())
{
var dictlRequest = JsonSerializer.Deserialize<DictExchangeDto>(incomingFromExternal.DestinationDataContent);
var wmsDictItemRequest = _objectMapper.Map<DictItemExchangeDto, DictItemInput>(exchangeDictRequest.Detail);
wmsDictItemRequest.Id = _guidGenerator.Create();
wmsDictItemRequest.MasterId = masterId;
wmsDictItemRequest.Enabled = true;
wmsDictRequest.Items.Add(wmsDictItemRequest);
}

1
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/SupplierConverter.cs

@ -27,6 +27,7 @@ public class SupplierConverter : IIncomingConverter
)
{
_incomingFromExternalManager = incomingFromExternalManage;
_incomingToWmsManager = incomingToWmsManager;
_objectMapper = objectMapper;
_logger = logger;

2
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/TyrpIncomingBackgroundWorker.cs

@ -117,7 +117,7 @@ public class TyrpIncomingBackgroundWorker : AsyncPeriodicBackgroundWorkerBase
//读取并保存Dictpj
var dictpjOutsFromExternalList = await DictpjReader.ReadAsync().ConfigureAwait(false);
//转换Dictpj
await dictConverter.ConvertAsync(dictOutsFromExternalList).ConfigureAwait(false);
await dictConverter.ConvertAsync(dictpjOutsFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"Read Customer");//客户资料
var CustomerReader = workerContext.ServiceProvider.GetRequiredService<CustomerReader>();

2
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/appsettings.json

@ -3,7 +3,7 @@
"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",
"TYRP": "Server=10.164.113.32,1818\\SHDB;Database=TYRP;Uid=ShWmsUser;Pwd=Faty@Wms_20230413#SH;TrustServerCertificate=True",
"SYBASE_TYRP": "Data Source=10.164.115.137; Port=5000; Database=mesdb; Uid=mesuser; Pwd=mesuser1234;Charset=cp850;" //iso_1
"SYBASE_TYRP": "Data Source=10.164.115.137; Port=5000; Database=mesdb; Uid=sa; Pwd=dawning;Charset=cp850;" //iso_1
},
"AuthServer": {

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

@ -7,6 +7,7 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Volo.Abp;
using Volo.Abp.Domain.Entities;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
@ -53,34 +54,50 @@ public class PurchaseOrderAppService :
protected override async Task<Dictionary<PurchaseOrder, EntityState>> ImportProcessingEntityAsync(
Dictionary<PurchaseOrder, EntityState> dictionary)
{
var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key);
var ImportData = dictionary.Select(p => p.Key);
foreach (var purchaseOrder in addList)
var supplierDtos = new List<SupplierDTO>();
#region 校验供应商
var allSupplierCode = ImportData.Select(p => p.SupplierCode).ToList();//所有供应商编号
supplierDtos = await CheckSupplierCodeAsync(allSupplierCode).ConfigureAwait(false);
#endregion
var itemBasicDtos = new List<ItemBasicDTO>();
#region 校验物品
var allTempItemCode = ImportData.Select(p => p.Details.Select(p => p.ItemCode).ToList()).ToList();
var allItemCode = new List<string>();
allTempItemCode.ForEach(p => { allItemCode.AddRange(p); });
itemBasicDtos = await CheckItemCodeAsync(allItemCode).ConfigureAwait(false);
#endregion
foreach (var purchaseOrder in ImportData)
{
purchaseOrder.CreatorId = CurrentUser.Id;
purchaseOrder.Worker = CurrentUser.GetName();
var supplierDto =
await _supplierAppService.GetByCodeAsync(purchaseOrder.SupplierCode).ConfigureAwait(false);
var supplierDto = supplierDtos.First(p => p.Code == purchaseOrder.SupplierCode);
purchaseOrder.SupplierCode = supplierDto.Code;
purchaseOrder.SupplierAddress = supplierDto.Address;
purchaseOrder.SupplierName = supplierDto.Name;
foreach (var detail in purchaseOrder.Details)
{
var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
var itemBasicDto = itemBasicDtos.First(p => p.Code == detail.ItemCode);
detail.ItemName = itemBasicDto.Name;
detail.ItemDesc1 = itemBasicDto.Desc1;
detail.ItemDesc2 = itemBasicDto.Desc2;
detail.StdPackQty=itemBasicDto.StdPackQty;
}
}
return dictionary;
}
#endregion
/// <summary>
/// 【创建】采购订单
/// </summary>
@ -102,6 +119,48 @@ public class PurchaseOrderAppService :
return ObjectMapper.Map<PurchaseOrder, PurchaseOrderDTO>(entity);
}
#region 校验
/// <summary>
/// 校验所有供应商是否存在
/// </summary>
/// <returns></returns>
private async Task<List<SupplierDTO>> CheckSupplierCodeAsync(List<string> supplierCodes)
{
supplierCodes = supplierCodes.Distinct().ToList();
var result = await _supplierAppService.GetByCodesAsync(supplierCodes).ConfigureAwait(false);
foreach (var supplierCode in supplierCodes)
{
if (result.All(p => p.Code != supplierCode))
{
throw new UserFriendlyException($"供应商代码【{supplierCode}】不存在");
}
}
return result;
}
private async Task<List<ItemBasicDTO>> CheckItemCodeAsync(List<string> itemCodes)
{
itemCodes = itemCodes.Distinct().ToList();
var result = await _itemBasicAppService.GetByCodesAsync(itemCodes).ConfigureAwait(false);
foreach (var itemCode in itemCodes)
{
if (result.All(p => p.Code != itemCode))
{
throw new UserFriendlyException($"供应商代码【{itemCode}】不存在");
}
}
return result;
}
#endregion
#endregion
/// <summary>
/// 【批量创建】采购订单
/// </summary>
@ -237,12 +296,12 @@ public class PurchaseOrderAppService :
[HttpGet("get-list-by-supplier-code-and-item-code")]
public virtual async Task<List<PurchaseOrderDTO>> GetListBySupplierCodeAsync(string supplierCode, string itemCode)
{
var entitys = await _repository.GetListAsync(p => p.Details.Any(y => y.ItemCode == itemCode) && p.SupplierCode == supplierCode).ConfigureAwait(false);
var entitys = await _repository
.GetListAsync(p => p.Details.Any(y => y.ItemCode == itemCode) && p.SupplierCode == supplierCode)
.ConfigureAwait(false);
var dtos = ObjectMapper.Map<List<PurchaseOrder>, List<PurchaseOrderDTO>>(entitys);
return dtos;
}
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Orders/PurchaseOrders/PurchaseOrderManager.cs

@ -54,8 +54,8 @@ public class PurchaseOrderManager : SfsStoreManagerBase<PurchaseOrder, PurchaseO
purchaseOrder.SetIdAndNumberWithDetails(GuidGenerator, purchaseOrder.Number);
//await PublishCreatedAsync(purchaseOrder).ConfigureAwait(false);
//不要用base.create 要不会把number覆盖
await PublishCreatedAsync(purchaseOrder).ConfigureAwait(false);
return await Repository.InsertAsync(purchaseOrder).ConfigureAwait(false);
}
/// <summary>

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Bases/StoreDataExchangeEventHandlerBase.cs

@ -24,8 +24,11 @@ public abstract class StoreDataExchangeEventHandlerBase<T> : StoreEventHandlerBa
protected async Task<DateTime> GetActiveDateAsync()
{
var activeDate = await InterfaceCalendarAppService.GetActiveDateAsync(Clock.Now).ConfigureAwait(false);
return activeDate;
//todo 报错
//var activeDate = await InterfaceCalendarAppService.GetActiveDateAsync(Clock.Now).ConfigureAwait(false);
//return activeDate;
return DateTime.Now;
}
protected async Task<List<ExchangeData>> BuildExchangeDataAsync<TEntity>(string sourceSystem,

25
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Orders/PurchaseOrderEventHandler.cs

@ -107,6 +107,10 @@ public class PurchaseOrderEventHandler
//供应商窗口
var supplierTimeWindowDtos = await _supplierTimeWindowAppService.GetListBySupplierCodeAsync(purchaseOrder.SupplierCode).ConfigureAwait(false);
if (!supplierTimeWindowDtos.Any())
{
throw new UserFriendlyException($"供应商窗口【{purchaseOrder.SupplierCode}】没设置");
}
//一次性返回所有物品信息
var itemBasicDtos = await _itemBasicAppService.GetByCodesAsync(itemCodes).ConfigureAwait(false);
@ -173,13 +177,13 @@ public class PurchaseOrderEventHandler
//todo 一个物品多个包装?怎么取值
//标包数
var itemPackDto=ItemPacks.First(p => p.ItemCode == purchaseOrderDetaildetail.ItemCode);
var itemPackDto = itemBasicDtos.First(p=>p.Code== purchaseOrderDetaildetail.ItemCode).StdPackQty;
//总箱数
var itemPackingCount = (int)(itemQty / itemPackDto.Qty);
if (itemQty > itemPackDto.Qty)
var itemPackingCount = (int)(itemQty / itemPackDto);
if (itemQty > itemPackDto)
{
if (itemQty % itemPackDto.Qty != 0)
if (itemQty % itemPackDto != 0)
{
itemPackingCount++;
}
@ -214,7 +218,7 @@ public class PurchaseOrderEventHandler
supplierAsnDetailInput.ItemDesc2 = itemBasicDto.Desc2;
//标包
supplierAsnDetailInput.StdPackQty = itemPackDto.Qty;
supplierAsnDetailInput.StdPackQty = itemPackDto;
supplierAsnDetailInput.SupplierPackQty = supplierItemDto.SupplierPackQty;
supplierAsnDetailInput.SupplierPackUom = supplierItemDto.SupplierPackUom;
@ -228,11 +232,11 @@ public class PurchaseOrderEventHandler
supplierAsnDetailInput.RecommendErpCode = purchaseOrderDetaildetail.LocationErpCode;
supplierAsnDetailInput.PoNumber = purchaseOrder.Number;
supplierAsnDetailInput.Qty = itemQty>itemPackDto.Qty ? itemPackDto.Qty : itemQty;
supplierAsnDetailInput.Qty = itemQty>itemPackDto ? itemPackDto : itemQty;
itemQty-=itemPackDto.Qty;
itemQty-=itemPackDto;
var InventoryLabelEditInput = await BuildInventoryLabelEditInputAsync(supplierAsnEditInput, supplierAsnDetailInput, supplierDto, itemBasicDto, supplierItemDto, itemPackDto).ConfigureAwait(false);
var InventoryLabelEditInput = await BuildInventoryLabelEditInputAsync(supplierAsnEditInput, supplierAsnDetailInput, supplierDto, itemBasicDto, supplierItemDto).ConfigureAwait(false);
inventoryLabelEditInputs.Add(InventoryLabelEditInput);
supplierAsnEditInput.Details.Add(supplierAsnDetailInput);
@ -260,8 +264,7 @@ public class PurchaseOrderEventHandler
SupplierAsnDetailInput supplierAsnDetail,
SupplierDTO supplierDto,
ItemBasicDTO itemBasicDto,
SupplierItemDTO supplierItemDto,
ItemPackDTO itemPackDto)
SupplierItemDTO supplierItemDto)
{
if (itemBasicDto == null)
@ -308,7 +311,7 @@ public class PurchaseOrderEventHandler
inputLabel.LabelStatus = LabelStatus.Enable;
inputLabel.Specifications = itemBasicDto.Color;
inputLabel.StdPackQty = itemPackDto.Qty;
inputLabel.StdPackQty = itemBasicDto.StdPackQty;
inputLabel.SupplierItemCode = supplierItemDto.SupplierItemCode;
inputLabel.SupplierItemName = supplierItemDto.ItemName;

5
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/BackFlushNoteEventHandler.cs

@ -68,6 +68,11 @@ public class BackFlushNoteEventHandler
transaction.DocNumber = backFlushNote.Number;
transaction.JobNumber = backFlushNote.JobNumber;
transaction.Status = detail.Status;
transaction.LocationArea = detail.LocationArea;
transaction.LocationGroup=detail.LocationGroup;
transaction.LocationCode=detail.LocationCode;
transaction.LocationErpCode=detail.LocationErpCode;
transaction.WarehouseCode=detail.WarehouseCode;
transactions.Add(transaction);
}

Loading…
Cancel
Save