唐明亮 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.WmsState = 1;
p.WmsDate = Clock.Now; 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>(); return new List<IncomingFromExternal>();
} }
//Product逐一转换为ItemPack //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); await _incomingFromExternalManager.CreateBulkAsync(incomingDataList).ConfigureAwait(false);
return incomingDataList; 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.Basedata.Application.Contracts;
using Win_in.Sfs.Wms.DataExchange.Domain; using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.WMS.Dict; using Win_in.Sfs.Wms.DataExchange.WMS.Dict;
using static StackExchange.Redis.Role;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent.Incoming; 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 exchangeDictRequest = JsonSerializer.Deserialize<DictExchangeDto>(first.DestinationDataContent);
var wmsDictRequest = _objectMapper.Map<DictExchangeDto, DictEditInput>(exchangeDictRequest); var wmsDictRequest = _objectMapper.Map<DictExchangeDto, DictEditInput>(exchangeDictRequest);
wmsDictRequest.Items = new List<DictItemInput>(); wmsDictRequest.Items = new List<DictItemInput>();
var masterId = _guidGenerator.Create();
foreach (var incomingFromExternal in group.ToList()) foreach (var incomingFromExternal in group.ToList())
{ {
var dictlRequest = JsonSerializer.Deserialize<DictExchangeDto>(incomingFromExternal.DestinationDataContent); var dictlRequest = JsonSerializer.Deserialize<DictExchangeDto>(incomingFromExternal.DestinationDataContent);
var wmsDictItemRequest = _objectMapper.Map<DictItemExchangeDto, DictItemInput>(exchangeDictRequest.Detail); var wmsDictItemRequest = _objectMapper.Map<DictItemExchangeDto, DictItemInput>(exchangeDictRequest.Detail);
wmsDictItemRequest.Id = _guidGenerator.Create();
wmsDictItemRequest.MasterId = masterId;
wmsDictItemRequest.Enabled = true; wmsDictItemRequest.Enabled = true;
wmsDictRequest.Items.Add(wmsDictItemRequest); 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; _incomingToWmsManager = incomingToWmsManager;
_objectMapper = objectMapper; _objectMapper = objectMapper;
_logger = logger; _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 //读取并保存Dictpj
var dictpjOutsFromExternalList = await DictpjReader.ReadAsync().ConfigureAwait(false); var dictpjOutsFromExternalList = await DictpjReader.ReadAsync().ConfigureAwait(false);
//转换Dictpj //转换Dictpj
await dictConverter.ConvertAsync(dictOutsFromExternalList).ConfigureAwait(false); await dictConverter.ConvertAsync(dictpjOutsFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"Read Customer");//客户资料 Logger.LogInformation($"Read Customer");//客户资料
var CustomerReader = workerContext.ServiceProvider.GetRequiredService<CustomerReader>(); 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", "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", "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", "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": { "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.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Domain.Entities;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
@ -53,34 +54,50 @@ public class PurchaseOrderAppService :
protected override async Task<Dictionary<PurchaseOrder, EntityState>> ImportProcessingEntityAsync( protected override async Task<Dictionary<PurchaseOrder, EntityState>> ImportProcessingEntityAsync(
Dictionary<PurchaseOrder, EntityState> dictionary) 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.CreatorId = CurrentUser.Id;
purchaseOrder.Worker = CurrentUser.GetName(); purchaseOrder.Worker = CurrentUser.GetName();
var supplierDto = var supplierDto = supplierDtos.First(p => p.Code == purchaseOrder.SupplierCode);
await _supplierAppService.GetByCodeAsync(purchaseOrder.SupplierCode).ConfigureAwait(false);
purchaseOrder.SupplierCode = supplierDto.Code; purchaseOrder.SupplierCode = supplierDto.Code;
purchaseOrder.SupplierAddress = supplierDto.Address; purchaseOrder.SupplierAddress = supplierDto.Address;
purchaseOrder.SupplierName = supplierDto.Name; purchaseOrder.SupplierName = supplierDto.Name;
foreach (var detail in purchaseOrder.Details) 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.ItemName = itemBasicDto.Name;
detail.ItemDesc1 = itemBasicDto.Desc1; detail.ItemDesc1 = itemBasicDto.Desc1;
detail.ItemDesc2 = itemBasicDto.Desc2; detail.ItemDesc2 = itemBasicDto.Desc2;
detail.StdPackQty=itemBasicDto.StdPackQty;
} }
} }
return dictionary; return dictionary;
} }
#endregion
/// <summary> /// <summary>
/// 【创建】采购订单 /// 【创建】采购订单
/// </summary> /// </summary>
@ -102,6 +119,48 @@ public class PurchaseOrderAppService :
return ObjectMapper.Map<PurchaseOrder, PurchaseOrderDTO>(entity); 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>
/// 【批量创建】采购订单 /// 【批量创建】采购订单
/// </summary> /// </summary>
@ -237,12 +296,12 @@ public class PurchaseOrderAppService :
[HttpGet("get-list-by-supplier-code-and-item-code")] [HttpGet("get-list-by-supplier-code-and-item-code")]
public virtual async Task<List<PurchaseOrderDTO>> GetListBySupplierCodeAsync(string supplierCode, string itemCode) 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); var dtos = ObjectMapper.Map<List<PurchaseOrder>, List<PurchaseOrderDTO>>(entitys);
return dtos; 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); purchaseOrder.SetIdAndNumberWithDetails(GuidGenerator, purchaseOrder.Number);
//await PublishCreatedAsync(purchaseOrder).ConfigureAwait(false); //await PublishCreatedAsync(purchaseOrder).ConfigureAwait(false);
//不要用base.create 要不会把number覆盖 //不要用base.create 要不会把number覆盖
await PublishCreatedAsync(purchaseOrder).ConfigureAwait(false);
return await Repository.InsertAsync(purchaseOrder).ConfigureAwait(false); return await Repository.InsertAsync(purchaseOrder).ConfigureAwait(false);
} }
/// <summary> /// <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() protected async Task<DateTime> GetActiveDateAsync()
{ {
var activeDate = await InterfaceCalendarAppService.GetActiveDateAsync(Clock.Now).ConfigureAwait(false); //todo 报错
return activeDate; //var activeDate = await InterfaceCalendarAppService.GetActiveDateAsync(Clock.Now).ConfigureAwait(false);
//return activeDate;
return DateTime.Now;
} }
protected async Task<List<ExchangeData>> BuildExchangeDataAsync<TEntity>(string sourceSystem, 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); 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); var itemBasicDtos = await _itemBasicAppService.GetByCodesAsync(itemCodes).ConfigureAwait(false);
@ -173,13 +177,13 @@ public class PurchaseOrderEventHandler
//todo 一个物品多个包装?怎么取值 //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); var itemPackingCount = (int)(itemQty / itemPackDto);
if (itemQty > itemPackDto.Qty) if (itemQty > itemPackDto)
{ {
if (itemQty % itemPackDto.Qty != 0) if (itemQty % itemPackDto != 0)
{ {
itemPackingCount++; itemPackingCount++;
} }
@ -214,7 +218,7 @@ public class PurchaseOrderEventHandler
supplierAsnDetailInput.ItemDesc2 = itemBasicDto.Desc2; supplierAsnDetailInput.ItemDesc2 = itemBasicDto.Desc2;
//标包 //标包
supplierAsnDetailInput.StdPackQty = itemPackDto.Qty; supplierAsnDetailInput.StdPackQty = itemPackDto;
supplierAsnDetailInput.SupplierPackQty = supplierItemDto.SupplierPackQty; supplierAsnDetailInput.SupplierPackQty = supplierItemDto.SupplierPackQty;
supplierAsnDetailInput.SupplierPackUom = supplierItemDto.SupplierPackUom; supplierAsnDetailInput.SupplierPackUom = supplierItemDto.SupplierPackUom;
@ -228,11 +232,11 @@ public class PurchaseOrderEventHandler
supplierAsnDetailInput.RecommendErpCode = purchaseOrderDetaildetail.LocationErpCode; supplierAsnDetailInput.RecommendErpCode = purchaseOrderDetaildetail.LocationErpCode;
supplierAsnDetailInput.PoNumber = purchaseOrder.Number; 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); inventoryLabelEditInputs.Add(InventoryLabelEditInput);
supplierAsnEditInput.Details.Add(supplierAsnDetailInput); supplierAsnEditInput.Details.Add(supplierAsnDetailInput);
@ -260,8 +264,7 @@ public class PurchaseOrderEventHandler
SupplierAsnDetailInput supplierAsnDetail, SupplierAsnDetailInput supplierAsnDetail,
SupplierDTO supplierDto, SupplierDTO supplierDto,
ItemBasicDTO itemBasicDto, ItemBasicDTO itemBasicDto,
SupplierItemDTO supplierItemDto, SupplierItemDTO supplierItemDto)
ItemPackDTO itemPackDto)
{ {
if (itemBasicDto == null) if (itemBasicDto == null)
@ -308,7 +311,7 @@ public class PurchaseOrderEventHandler
inputLabel.LabelStatus = LabelStatus.Enable; inputLabel.LabelStatus = LabelStatus.Enable;
inputLabel.Specifications = itemBasicDto.Color; inputLabel.Specifications = itemBasicDto.Color;
inputLabel.StdPackQty = itemPackDto.Qty; inputLabel.StdPackQty = itemBasicDto.StdPackQty;
inputLabel.SupplierItemCode = supplierItemDto.SupplierItemCode; inputLabel.SupplierItemCode = supplierItemDto.SupplierItemCode;
inputLabel.SupplierItemName = supplierItemDto.ItemName; 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.DocNumber = backFlushNote.Number;
transaction.JobNumber = backFlushNote.JobNumber; transaction.JobNumber = backFlushNote.JobNumber;
transaction.Status = detail.Status; 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); transactions.Add(transaction);
} }

Loading…
Cancel
Save