diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Chassis/IMesChassisManager.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Chassis/IMesChassisManager.cs new file mode 100644 index 000000000..54012cbfc --- /dev/null +++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Chassis/IMesChassisManager.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Chassis; +public interface IMesChassisManager +{ + Task> GetToBeProcessedListAsync(); + Task UpdateProcessedListAsync(List entities); + Task UpdateProcesseErrordListAsync(List entities); +} \ No newline at end of file diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Chassis/IMesChassisRepository.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Chassis/IMesChassisRepository.cs new file mode 100644 index 000000000..780161358 --- /dev/null +++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Chassis/IMesChassisRepository.cs @@ -0,0 +1,8 @@ +using Volo.Abp.Domain.Repositories; + +namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Chassis; + +public interface IMesChassisRepository : IRepository +{ + +} diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Chassis/MesChassis.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Chassis/MesChassis.cs new file mode 100644 index 000000000..d8b92ffba --- /dev/null +++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Chassis/MesChassis.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Domain.Entities; + +namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Chassis; +public class MesChassis : Entity +{ /// + /// 序号 + /// + [Key] + public int mesout_fis_id { get; set; } + /// + /// erp号 + /// + public string mesout_fis_erpno { get; set; } + /// + /// 底盘号 + /// + public string mesout_fis_vin { get; set; } + /// + /// 产品类型 + /// + public string mesout_fis_productType { get; set; } + /// + /// 颜色 + /// + public string mesout_fis_productColor { get; set; } + /// + /// 添加时间 + /// + public DateTime? addtime { get; set; } + /// + /// 修改时间 + /// + public DateTime? updatetime { get; set; } + /// + /// 是否读取(0,1) + /// + public int mesout_fis_status { get; set; } + + public override object[] GetKeys() + { + return new object[] { mesout_fis_id }; + } +} diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Chassis/MesChassisManager.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Chassis/MesChassisManager.cs new file mode 100644 index 000000000..264641e51 --- /dev/null +++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Chassis/MesChassisManager.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Domain.Services; + +namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Chassis; + +public class MesChassisManager : DomainService, IMesChassisManager +{ + private readonly IMesChassisRepository _repository; + + public MesChassisManager(IMesChassisRepository repository) + { + _repository = repository; + } + public virtual async Task> GetToBeProcessedListAsync() + { + var plans = await _repository.GetListAsync(p => p.mesout_fis_status == 0).ConfigureAwait(false); + return plans; + + } + public virtual async Task UpdateProcesseErrordListAsync(List entities) + { + var ids = entities.Select(p => p.mesout_fis_id); + var plans = await _repository.GetListAsync(p => ids.Contains(p.mesout_fis_id)).ConfigureAwait(false); + plans.ForEach(p => + { + p.mesout_fis_status = 2; + // p.WmsDate = Clock.Now; + }); + await _repository.UpdateManyAsync(plans).ConfigureAwait(false); + } + public virtual async Task UpdateProcessedListAsync(List entities) + { + var ids = entities.Select(p => p.mesout_fis_id); + var plans = await _repository.GetListAsync(p => ids.Contains(p.mesout_fis_id)).ConfigureAwait(false); + plans.ForEach(p => + { + p.mesout_fis_status = 1; + + // p.WmsDate = Clock.Now; + }); + await _repository.UpdateManyAsync(plans).ConfigureAwait(false); + } +} diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Chassis/MesChassisDbContextModelCreatingExtensions.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Chassis/MesChassisDbContextModelCreatingExtensions.cs new file mode 100644 index 000000000..c56eb44dd --- /dev/null +++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Chassis/MesChassisDbContextModelCreatingExtensions.cs @@ -0,0 +1,27 @@ +using Microsoft.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore.Modeling; +using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Chassis; + +namespace Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes; +public static class MesChassisDbContextModelCreatingExtensions +{ + public static void ConfigureMesChassis(this ModelBuilder builder, MesModelBuilderConfigurationOptions options) + { + builder.Entity(b => + { + //Configure table & schema Name + b.ToTable(options.TablePrefix + "mesout_fis", options.Schema); + //Configure ABP properties + b.ConfigureByConvention(); + + //Properties + b.Property(q => q.mesout_fis_id).HasMaxLength(20); + b.Property(q => q.mesout_fis_erpno).HasMaxLength(50); + b.Property(q => q.mesout_fis_vin).HasMaxLength(50); + b.Property(q => q.mesout_fis_productType).HasMaxLength(50); + b.Property(q => q.mesout_fis_productColor).HasMaxLength(50); + b.Property(q => q.mesout_fis_status); + }); + + } +} diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Chassis/MesChassisEfCoreRepository.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Chassis/MesChassisEfCoreRepository.cs new file mode 100644 index 000000000..2ae58aa45 --- /dev/null +++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Chassis/MesChassisEfCoreRepository.cs @@ -0,0 +1,13 @@ +using Volo.Abp.Domain.Repositories.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; +using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Chassis; + + +namespace Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes; +public class MesChassisEfCoreRepository : EfCoreRepository, IMesChassisRepository +{ + public MesChassisEfCoreRepository(IDbContextProvider dbContextProvider) + : base(dbContextProvider) + { + } +} diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/DataExchangeDbContextModelCreatingExtensions.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/DataExchangeDbContextModelCreatingExtensions.cs index 85ed867b5..0eb283227 100644 --- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/DataExchangeDbContextModelCreatingExtensions.cs +++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/DataExchangeDbContextModelCreatingExtensions.cs @@ -31,5 +31,6 @@ public static class DataExchangeDbContextModelCreatingExtensions builder.ConfigureFrozen(options); builder.ConfigureDelivery(options); builder.ConfigureCallMtl(options); + builder.ConfigureMesChassis(options); } } diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/DataExchangeEntityFrameworkCoreFawtygModule.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/DataExchangeEntityFrameworkCoreFawtygModule.cs index 192205bbc..bd4384bdc 100644 --- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/DataExchangeEntityFrameworkCoreFawtygModule.cs +++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/DataExchangeEntityFrameworkCoreFawtygModule.cs @@ -4,6 +4,7 @@ using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.MySQL; using Volo.Abp.Modularity; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.CallMtl; +using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Chassis; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Frozen; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes; @@ -40,5 +41,6 @@ public class DataExchangeEntityFrameworkCoreFawtygModule : AbpModule context.Services.AddTransient(); context.Services.AddTransient(); context.Services.AddTransient(); + context.Services.AddTransient(); } } diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/MesDbContext.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/MesDbContext.cs index c4efc833b..4b17a29ac 100644 --- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/MesDbContext.cs +++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/MesDbContext.cs @@ -2,6 +2,7 @@ using Microsoft.EntityFrameworkCore; using Volo.Abp.Data; using Volo.Abp.EntityFrameworkCore; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.CallMtl; +using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Chassis; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Frozen; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes; @@ -33,6 +34,8 @@ public class MesDbContext : public virtual DbSet Delivery { get; } public virtual DbSet CallMtl { get; } + + public virtual DbSet MesChassis { get; } public MesDbContext(DbContextOptions options) : base(options) { diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/FawtygAutoMapperProfile.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/FawtygAutoMapperProfile.cs index e5fd5ef17..b44bae718 100644 --- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/FawtygAutoMapperProfile.cs +++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/FawtygAutoMapperProfile.cs @@ -3,6 +3,7 @@ using Volo.Abp.AutoMapper; using Win_in.Sfs.Shared.Application; using Win_in.Sfs.Wms.DataExchange.Domain; using Win_in.Sfs.Wms.DataExchange.WMS.BackFlushNote; +using Win_in.Sfs.Wms.DataExchange.WMS.Chassis; using Win_in.Sfs.Wms.DataExchange.WMS.DeliverNote; using Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest; using Win_in.Sfs.Wms.DataExchange.WMS.InjectionIssueRequest; @@ -293,5 +294,9 @@ public class FawtygAutoMapperProfile : Profile .Ignore(x => x.ReceivedQty) .Ignore(x => x.Status) .Ignore(x => x.PositionCode); + CreateMap() + .Ignore(x => x.ItemName) + .Ignore(x => x.ItemDesc1) + .Ignore(x => x.ItemDesc2); } } diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesChassisConverter.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesChassisConverter.cs new file mode 100644 index 000000000..419be875d --- /dev/null +++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesChassisConverter.cs @@ -0,0 +1,92 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.Json; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +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.WMS.Chassis; +using Win_in.Sfs.Wms.Store.Application.Contracts; +using Volo.Abp.ObjectMapping; + +namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent.Incoming; +public class MesChassisConverter : IIncomingConverter +{ + private readonly IIncomingFromExternalManager _incomingFromExternalManager; + private readonly IIncomingToWmsManager _incomingToWmsManager; + private readonly IObjectMapper _objectMapper; + private readonly IItemBasicAppService _itemBasicAppService; + private readonly ILocationAppService _locationAppService; + private readonly ILogger _logger; + + public MesChassisConverter( + IIncomingToWmsManager incomingToWmsManager + , IObjectMapper objectMapper + , IItemBasicAppService itemBasicAppService + , ILogger logger, + ILocationAppService locationAppService, + IIncomingFromExternalManager incomingFromExternalManager) + { + _incomingToWmsManager = incomingToWmsManager; + _objectMapper = objectMapper; + _itemBasicAppService = itemBasicAppService; + _logger = logger; + _locationAppService = locationAppService; + _incomingFromExternalManager = incomingFromExternalManager; + } + + public virtual async Task ConvertAsync(List incomingFromExternalList) + { + if (!incomingFromExternalList.Any()) + { + _logger.LogInformation("无底盘数据【转换】"); + return; + } + + //按Number合并Chassis单据 + var transferNoteList = await BuildIncomingToWmsOfChassisAsync(incomingFromExternalList).ConfigureAwait(false); + await _incomingToWmsManager.CreateManyAsync(transferNoteList).ConfigureAwait(false); + //归档 + await _incomingFromExternalManager.ArchiveManyAsync(incomingFromExternalList).ConfigureAwait(false); + } + + private async Task> BuildIncomingToWmsOfChassisAsync(List incomingDataList) + { + var incomingToWmsList = new List(); + foreach (var incomingData in incomingDataList) + { + var incomingToWms = new IncomingToWms() + { + DataType = incomingData.DataType, + DataAction = incomingData.DataAction, + SourceSystem = incomingData.SourceSystem, + DataIdentityCode = incomingData.SourceDataGroupCode, + }; + incomingToWms.SetEffectiveDate(incomingData.EffectiveDate); + var exchangeChassis = JsonSerializer.Deserialize(incomingData.DestinationDataContent); + var wmsChassis = _objectMapper.Map(exchangeChassis); + try + { + var item = await _itemBasicAppService.GetByCodeAsync(exchangeChassis.ItemCode).ConfigureAwait(false); + if (item != null) + { + wmsChassis.ItemName = item.Name; + wmsChassis.ItemDesc1 = !string.IsNullOrEmpty(item.Desc1) ? item.Desc1 : ""; + wmsChassis.ItemDesc2 = !string.IsNullOrEmpty(item.Desc2) ? item.Desc2 : ""; + } + } + catch (Exception) + { + wmsChassis.ItemName = ""; + wmsChassis.ItemDesc1 = ""; + wmsChassis.ItemDesc2 = ""; + } + incomingToWms.DataContent = JsonSerializer.Serialize(wmsChassis); + incomingToWmsList.Add(incomingToWms); + } + return incomingToWmsList; + } + +} diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesChassisReader.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesChassisReader.cs new file mode 100644 index 000000000..8b0606f67 --- /dev/null +++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesChassisReader.cs @@ -0,0 +1,116 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Win_in.Sfs.Wms.DataExchange.Domain.Shared; +using Win_in.Sfs.Wms.DataExchange.Domain; +using System.Text.Json; +using Win_in.Sfs.Wms.DataExchange.WMS.MesNote; +using Win_in.Sfs.Basedata.Application.Contracts; +using Win_in.Sfs.Shared.Domain.Shared; +using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Chassis; +using Win_in.Sfs.Wms.DataExchange.WMS.Chassis; + +namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent.Incoming; +public class MesChassisReader : IReader +{ + private readonly IMesChassisManager _mesChassisManager; + private readonly IIncomingFromExternalManager _incomingFromExternalManager; + private readonly ILogger _logger; + private readonly ILocationAppService _locationAppService; + + public MesChassisReader( + IMesChassisManager mesChassisManager + , IIncomingFromExternalManager incomingFromExternalManager + , ILogger logger + , ILocationAppService locationAppService + ) + { + _mesChassisManager = mesChassisManager; + _incomingFromExternalManager = incomingFromExternalManager; + _logger = logger; + _locationAppService = locationAppService; + } + + public virtual async Task> ReadAsync() + + { + //从MES读取待处理MesChassis + var toBeProcessedPillTasks = await _mesChassisManager.GetToBeProcessedListAsync().ConfigureAwait(false); + if (!toBeProcessedPillTasks.Any()) + { + _logger.LogInformation("无底盘数据【读取】"); + return new List(); + } + //MesChassis逐一转换为MaterialRequest + var incomingDataList = BuildIncomingFromExternalFromPillTaskAsync(toBeProcessedPillTasks); + await _incomingFromExternalManager.CreateManyAsync(incomingDataList).ConfigureAwait(false); + //更新MES数据状态 + await _mesChassisManager.UpdateProcessedListAsync(toBeProcessedPillTasks).ConfigureAwait(false); + + return incomingDataList; + } + + private static List BuildIncomingFromExternalFromPillTaskAsync(List toBeProcessedMesChassiss) + { + var incomingDataList = new List(); + foreach (var MesChassis in toBeProcessedMesChassiss) + { + var incomingData = BuildIncomingFromExternal(MesChassis); + + incomingData.SetEffectiveDate(DateTime.Now); + incomingData.SetSuccess(); + try + { + var MaterialRequest = BuildChassisCreateInput(MesChassis); + incomingData.DestinationDataContent = JsonSerializer.Serialize(MaterialRequest); + } + catch (Exception ex) + { + incomingData.SetError(EnumExchangeDataErrorCode.Exception, ex.Message, ex.ToString()); + } + + incomingDataList.Add(incomingData); + + } + + return incomingDataList; + } + + private static IncomingFromExternal BuildIncomingFromExternal(MesChassis MesChassis) + { + var incomingData = new IncomingFromExternal() + { + DataType = EnumIncomingDataType.MesChassis.ToString(), + DataAction = EnumExchangeDataAction.Add, + SourceSystem = EnumSystemType.MES.ToString(), + SourceDataId = MesChassis.mesout_fis_id.ToString(), + SourceDataGroupCode = MesChassis.mesout_fis_vin.ToString(), + SourceDataDetailCode = MesChassis.mesout_fis_erpno, + SourceDataContent = JsonSerializer.Serialize(MesChassis), + WriteTime = DateTime.Now, + Writer = nameof(MesIncomingBackgroundWorker), + + DestinationSystem = EnumSystemType.WMS.ToString(), + }; + return incomingData; + } + + private static ChassisExchangeDto BuildChassisCreateInput(MesChassis MesChassis) + { + var chassis = new ChassisExchangeDto() + { + Number = MesChassis.mesout_fis_id.ToString(), + ChassisNumber= MesChassis.mesout_fis_vin, + Description= MesChassis.mesout_fis_productType, + ProduceDateTime= DateTime.Now, + ReceiveInterfaceDateTime= DateTime.Now, + SortNumber = MesChassis.mesout_fis_id, + ItemCode = MesChassis.mesout_fis_erpno, + Configuration= MesChassis.mesout_fis_productColor, + }; + return chassis; + } + +} 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 53d3fec9f..e0482a972 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 @@ -76,16 +76,16 @@ public class MesIncomingBackgroundWorker : AsyncPeriodicBackgroundWorkerBase //#endregion - #region 报废 Scrap - Logger.LogInformation($"读取报废(Scrap)");//报废 - var scrapReader = workerContext.ServiceProvider.GetRequiredService(); - var scrapConverter = workerContext.ServiceProvider.GetRequiredService(); - //读取并保存Scrap - var scrapsFromExternalList = await scrapReader.ReadAsync().ConfigureAwait(false); - //转换Scrap - await scrapConverter.ConvertAsync(scrapsFromExternalList).ConfigureAwait(false); - Logger.LogInformation($"处理报废【{scrapsFromExternalList.Count}】条数据"); - #endregion + //#region 报废 Scrap + //Logger.LogInformation($"读取报废(Scrap)");//报废 + //var scrapReader = workerContext.ServiceProvider.GetRequiredService(); + //var scrapConverter = workerContext.ServiceProvider.GetRequiredService(); + ////读取并保存Scrap + //var scrapsFromExternalList = await scrapReader.ReadAsync().ConfigureAwait(false); + ////转换Scrap + //await scrapConverter.ConvertAsync(scrapsFromExternalList).ConfigureAwait(false); + //Logger.LogInformation($"处理报废【{scrapsFromExternalList.Count}】条数据"); + //#endregion //#region 耗用单 BackFlush //Logger.LogInformation($"读取耗用单 (BackFlush)");//耗用单 @@ -109,7 +109,7 @@ public class MesIncomingBackgroundWorker : AsyncPeriodicBackgroundWorkerBase //Logger.LogInformation($"处理储位调拨【{transferNoteFromExternalList.Count}】条数据"); //#endregion - + //#region 成品发运 Delivery //Logger.LogInformation($"读取成品发运 (Delivery)");//成品发运 @@ -134,6 +134,18 @@ public class MesIncomingBackgroundWorker : AsyncPeriodicBackgroundWorkerBase //Logger.LogInformation($"处理自动叫料【{callMtlFromExternalList.Count}】条数据"); //#endregion + + #region 底盘 Chassis + Logger.LogInformation($"读取底盘(Chassis)");//底盘 + var mesChassisReader = workerContext.ServiceProvider.GetRequiredService(); + var mesChassisConverter = workerContext.ServiceProvider.GetRequiredService(); + //读取并保存Chassis + var mesChassisFromExternalList = await mesChassisReader.ReadAsync().ConfigureAwait(false); + //转换Chassis + await mesChassisConverter.ConvertAsync(mesChassisFromExternalList).ConfigureAwait(false); + Logger.LogInformation($"处理底盘【{mesChassisFromExternalList.Count}】条数据"); + #endregion + Logger.LogInformation($"提交: 执行 {Incoming}"); #region 未启用接口启用时需要看逻辑修改 diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsExtensions.cs b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsExtensions.cs index 5f5c36cc9..ad7887a2d 100644 --- a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsExtensions.cs +++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsExtensions.cs @@ -49,39 +49,17 @@ public static class IncomingToWmsExtensions await DepartmentBasicAppService.UpdateAsync(Department).ConfigureAwait(false); } - + public static async Task HandleChassisAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext) + { + var chassis = JsonSerializer.Deserialize(incomingConverted.DataContent); + var chassisAppService = workerContext.ServiceProvider.GetRequiredService(); + await chassisAppService.CreateAsync(chassis).ConfigureAwait(false); + } public static async Task HandleItemsAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext) { var item = JsonSerializer.Deserialize(incomingConverted.DataContent); var itemBasicAppService = workerContext.ServiceProvider.GetRequiredService(); - await itemBasicAppService.UpsertAsyncByInterface(item).ConfigureAwait(false); - - //try - //{ - // Thread thread = new Thread(thead); - - // thread.Start(); - // var BalanceAppService = workerContext.ServiceProvider.GetRequiredService(); - // BalanceUpdateItemBasicInfoDto balan = new BalanceUpdateItemBasicInfoDto(); - // List bala = new List(); - // BalanceUpdateItemBasicInfo ba = new BalanceUpdateItemBasicInfo(); - // ba.ItemCode = item.Code; - // ba.ItemDesc1 = item.Desc1; - // ba.ItemDesc2 = item.Desc2; - // ba.ItemName = item.Name; - // bala.Add(ba); - // balan.BalanceUpdateItemBasicInfos = bala; - // await BalanceAppService.UpdateItemBasicInfoAsync(balan).ConfigureAwait(false); - //} - //catch (Exception ex) - //{ - - //} - - } - public static void thead() - { - + await itemBasicAppService.UpsertAsyncByInterface(item).ConfigureAwait(false); } public static async Task HandleErpLocationItemsAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext) { 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 8b5413752..9993e4930 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 @@ -107,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); } } @@ -213,6 +213,9 @@ public class IncomingToWmsWorker : AsyncPeriodicBackgroundWorkerBase case EnumIncomingDataType.CallMtl: await incomingToWms.HandleInjectionIssueRequestAsync(workerContext).ConfigureAwait(false); break; + case EnumIncomingDataType.MesChassis: + await incomingToWms.HandleChassisAsync(workerContext).ConfigureAwait(false); + break; case EnumIncomingDataType.None: default: throw new ArgumentOutOfRangeException(); 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 2e0324e5f..0f8bdf492 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 @@ -26,10 +26,10 @@ "RemoteServices": { "BaseData": { - "BaseUrl": "http://localhost:59094/" + "BaseUrl": "http://dev.ccwin-in.com:60084/" }, "Store": { - "BaseUrl": "http://localhost:59095/" + "BaseUrl": "http://dev.ccwin-in.com:60085/" }, "Label": { "BaseUrl": "http://dev.ccwin-in.com:60082/" diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/Chassis/ChassisExchangeDto.cs b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/Chassis/ChassisExchangeDto.cs new file mode 100644 index 000000000..238c10919 --- /dev/null +++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/Chassis/ChassisExchangeDto.cs @@ -0,0 +1,50 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace Win_in.Sfs.Wms.DataExchange.WMS.Chassis; +public class ChassisExchangeDto +{ + /// + /// Wms编号 + /// + [Display(Name = "Wms编号")] + public string Number { get; set; } + + /// + /// 底盘号 + /// + [Display(Name = "底盘号")] + public string ChassisNumber { get; set; } + + /// + /// 描述 + /// + [Display(Name = "描述")] + public string Description { get; set; } + + /// + /// 底盘生产时间 + /// + [Display(Name = "底盘生产时间")] + public DateTime ProduceDateTime { get; set; } + + /// + /// 接收接口时间 + /// + [Display(Name = "接收接口时间")] + public DateTime ReceiveInterfaceDateTime { get; set; } + + /// + /// 执行位置排序列 + /// + [Display(Name = "执行位置排序列")] + public long SortNumber { get; set; } + + public string ItemCode { get; set; } + + /// + /// 配置号 + /// + [Display(Name = "配置号")] + public string Configuration { get; set; } +} diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/Win_in.Sfs.Wms.DataExchange.Application.Contracts.xml b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/Win_in.Sfs.Wms.DataExchange.Application.Contracts.xml index bd66333af..166d79959 100644 --- a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/Win_in.Sfs.Wms.DataExchange.Application.Contracts.xml +++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/Win_in.Sfs.Wms.DataExchange.Application.Contracts.xml @@ -396,6 +396,41 @@ 结束时间 + + + Wms编号 + + + + + 底盘号 + + + + + 描述 + + + + + 底盘生产时间 + + + + + 接收接口时间 + + + + + 执行位置排序列 + + + + + 配置号 + + ERP料号 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 1dfd30089..43d616059 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,7 +1,7 @@ { "ConnectionStrings": { - "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!;" + "Default": "Server=dev.ccwin-in.com,13319;Database=WMS_DongYang_Main_CC;uid=ccwin-in;pwd=Microsoft@2022;", + "DataExchange": "Server=dev.ccwin-in.com,21195;Database=WMS_DongYang_Main_CC;uid=ccwin-in;pwd=Microsoft@2022;" }, "IdentityServer": { "Clients": { diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain.Shared/Enums/EnumIncomingDataType.cs b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain.Shared/Enums/EnumIncomingDataType.cs index dfce502f1..0e45e8cc2 100644 --- a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain.Shared/Enums/EnumIncomingDataType.cs +++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain.Shared/Enums/EnumIncomingDataType.cs @@ -130,4 +130,8 @@ public enum EnumIncomingDataType /// 自动叫料 /// CallMtl=31, + /// + /// 底盘 + /// + MesChassis=32, }