Browse Source

Merge branch 'dev_DY_CC' of http://dev.ccwin-in.com:3000/BoXu.Zheng/WZC2 into dev_DY_CC

dev_DY_CC
郑勃旭 12 months ago
parent
commit
31064f77a5
  1. 39
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/CallMtl/CallMtl.cs
  2. 44
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/CallMtl/CallMtlManager.cs
  3. 10
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/CallMtl/ICallMtlManager.cs
  4. 7
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/CallMtl/ICallMtlRepository.cs
  5. 66
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/Delivery.cs
  6. 45
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/DeliveryManager.cs
  7. 10
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/IDeliveryManager.cs
  8. 8
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/IDeliveryRepository.cs
  9. 49
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Frozen/Frozen.cs
  10. 45
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Frozen/FrozenManager.cs
  11. 10
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Frozen/IFrozenManager.cs
  12. 7
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Frozen/IFrozenRepository.cs
  13. 11
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Qtyrfe/IQtyrfeManager.cs
  14. 7
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Qtyrfe/IQtyrfeRepository.cs
  15. 50
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Qtyrfe/Qtyrfe.cs
  16. 45
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Qtyrfe/QtyrfeManager.cs
  17. 27
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/CallMtl/CallMtlDbContextModelCreatingExtensions.cs
  18. 12
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/CallMtl/CallMtlEfCoreRepository.cs
  19. 4
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/DataExchangeDbContextModelCreatingExtensions.cs
  20. 8
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/DataExchangeEntityFrameworkCoreFawtygModule.cs
  21. 35
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Delivery/DeliveryDbContextModelCreatingExtensions.cs
  22. 18
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Delivery/DeliveryEfCoreRepository.cs
  23. 30
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Frozen/FrozenDbContextModelCreatingExtensions.cs
  24. 12
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Frozen/FrozenEfCoreRepository.cs
  25. 11
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/IMesDbContext.cs
  26. 11
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/MesDbContext.cs
  27. 30
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Qtyrfe/QtyrfeDbContextModelCreatingExtensions.cs
  28. 13
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Qtyrfe/QtyrfeEfCoreRepository.cs
  29. 2
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes.csproj
  30. 127
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/FawtygAutoMapperProfile.cs
  31. 101
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/CallMtlConverter.cs
  32. 121
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/CallMtlReader.cs
  33. 106
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/DeliveryConverter.cs
  34. 120
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/DeliveryReader.cs
  35. 133
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/FrozenConverter.cs
  36. 123
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/FrozenReader.cs
  37. 54
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesIncomingBackgroundWorker.cs
  38. 14
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesOutConverter.cs
  39. 78
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesOutReader.cs
  40. 140
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/QtyrfeConverter.cs
  41. 117
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/QtyrfeReader.cs
  42. 14
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/appsettings.json
  43. 142
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Outgoing/AssembleIssueNoteConverter.cs
  44. 36
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsExtensions.cs
  45. 18
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsWorker.cs
  46. 16
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/appsettings.json
  47. 15
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/DeliverNote/DeliverNoteDetailExchangeDto.cs
  48. 43
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/DeliverRequest/DeliverRequestDetailExchangeDto.cs
  49. 43
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/DeliverRequest/DeliverRequestExchangeDto.cs
  50. 34
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/InjectionIssueRequest/InjectionIssueRequestDetailExchangeDto.cs
  51. 36
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/InjectionIssueRequest/InjectionIssueRequestExchangeDto.cs
  52. 36
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/IssueNote/AssembleIssueNote/AssembleIssueNoteDetailExchangeDto.cs
  53. 29
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/IssueNote/AssembleIssueNote/AssembleIssueNoteExchangeDto.cs
  54. 48
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/MesNote/MesNoteDetailExchangeDto.cs
  55. 47
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/MesNote/MesNoteExchangeDto.cs
  56. 13
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/TransferNote/TransferNoteDetailExchangeDto.cs
  57. 10
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/TransferNote/TransferNoteExchangeDto.cs
  58. 260
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/Win_in.Sfs.Wms.DataExchange.Application.Contracts.xml
  59. 16
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain.Shared/Enums/EnumIncomingDataType.cs
  60. 15
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain.Shared/Enums/EnumOutgoingDataType.cs
  61. 13
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedIssueJobController.cs
  62. 12
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedReceiptJobController.cs
  63. 20
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ProductReceiptNoteController.cs
  64. 7
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/CustomerItems/DTOs/CustomerItemDTO.cs
  65. 1
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/CustomerItems/ICustomerItemAppService.cs
  66. 7
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/CustomerItems/Inputs/CustomerItemEditInput.cs
  67. 10
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/CustomerItems/Inputs/CustomerItemImportInput.cs
  68. 9
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Bases/SfsBaseDataAppServiceBase.cs
  69. 17
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/CustomerItems/CustomerItemAppService.cs
  70. 92
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/test/TestAppService.cs
  71. 6
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/CustomerItems/CustomerItem.cs
  72. 2
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/CustomerItems/CustomerItemDbContextModelCreatingExtensions.cs
  73. 108
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/DTOs/CoatingIssueJobDTO.cs
  74. 15
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/DeliverNotes/DTOs/DeliverNoteDetailDTO.cs
  75. 15
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/DeliverNotes/Inputs/DeliverNoteDetailInput.cs
  76. 9
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/ProductReceiptNotes/IProductReceiptNoteDetailAppService.cs
  77. 25
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/ProductReceiptNotes/ProductReceiptNoteDetailPermissions.cs
  78. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Permissions/StorePermissionDefinitionProvider.cs
  79. 16
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/DeliverRequests/DTOs/DeliverRequestDetailDTO.cs
  80. 15
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/DeliverRequests/Inputs/DeliverRequestDetailInput.cs
  81. 16
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/DeliverRequests/Inputs/DeliverRequestImportInput.cs
  82. 154
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAppService.cs
  83. 413
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/proxy/CoatingIssueJobToRestoClient.cs
  84. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/MesNotes/MesNoteAppService.cs
  85. 36
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/ProductReceiptNotes/ProductReceiptNoteDetailAppService.cs
  86. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs
  87. 67
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestAppService.cs
  88. 3
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestAutoMapperProfile.cs
  89. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestFisAppService.cs
  90. 17
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs
  91. 17
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs
  92. 5
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/StoreApplicationModule.cs
  93. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/ExchangeDatas/EnumExchangeDataType.cs
  94. 29
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/SfsJobManagerBase.cs
  95. 12
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/DeliverNotes/DeliverNoteDetail.cs
  96. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/ProductReceiptNotes/IProductReceiptNoteDetailRepository.cs
  97. 21
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Options/RestoOptions.cs
  98. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/DeliverRequests/DeliverRequest.cs
  99. 13
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/DeliverRequests/DeliverRequestDetail.cs
  100. 22
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/DeliverRequests/DeliverRequestManager.cs

39
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/CallMtl/CallMtl.cs

@ -0,0 +1,39 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Domain.Entities;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.CallMtl;
public class CallMtl : Entity
{
/// <summary>
/// 序号
/// </summary>
[Key]
public string mesout_callmtl_id { get; set; }
/// <summary>
/// 物料
/// </summary>
public string mesout_callmtl_erpno { get; set; }
/// <summary>
/// 库位
/// </summary>
public string mesout_callmtl_loc { get; set; }
/// <summary>
/// 数量
/// </summary>
public decimal mesout_callmtl_num { get; set; }
/// <summary>
/// 时间
/// </summary>
public string mesout_callmtl_wt { get; set; }
/// <summary>
/// 是否读取(0,1)
/// </summary>
public long Yl1 { get; set; }
public override object[] GetKeys()
{
return new object[] { mesout_callmtl_id };
}
}

44
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/CallMtl/CallMtlManager.cs

@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.Domain.Services;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.CallMtl;
public class CallMtlManager : DomainService, ICallMtlManager
{
private readonly ICallMtlRepository _repository;
public CallMtlManager(ICallMtlRepository repository)
{
_repository = repository;
}
public virtual async Task<List<CallMtl>> GetToBeProcessedListAsync()
{
var plans = await _repository.GetListAsync(p => p.Yl1 == 0).ConfigureAwait(false);
return plans;
}
public virtual async Task UpdateProcesseErrordListAsync(List<CallMtl> entities)
{
var ids = entities.Select(p => p.mesout_callmtl_id);
var plans = await _repository.GetListAsync(p => ids.Contains(p.mesout_callmtl_id)).ConfigureAwait(false);
plans.ForEach(p =>
{
p.Yl1 = 2;
// p.WmsDate = Clock.Now;
});
await _repository.UpdateManyAsync(plans).ConfigureAwait(false);
}
public virtual async Task UpdateProcessedListAsync(List<CallMtl> entities)
{
var ids = entities.Select(p => p.mesout_callmtl_id);
var plans = await _repository.GetListAsync(p => ids.Contains(p.mesout_callmtl_id)).ConfigureAwait(false);
plans.ForEach(p =>
{
p.Yl1 = 1;
// p.WmsDate = Clock.Now;
});
await _repository.UpdateManyAsync(plans).ConfigureAwait(false);
}
}

10
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/CallMtl/ICallMtlManager.cs

@ -0,0 +1,10 @@
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.CallMtl;
public interface ICallMtlManager
{
Task<List<CallMtl>> GetToBeProcessedListAsync();
Task UpdateProcessedListAsync(List<CallMtl> entities);
Task UpdateProcesseErrordListAsync(List<CallMtl> entities);
}

7
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/CallMtl/ICallMtlRepository.cs

@ -0,0 +1,7 @@
using Volo.Abp.Domain.Repositories;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.CallMtl;
public interface ICallMtlRepository : IRepository<CallMtl>
{
}

66
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/Delivery.cs

@ -0,0 +1,66 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Domain.Entities;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery;
public class Delivery : Entity
{
/// <summary>
/// 序号
/// </summary>
[Key]
public string mesout_delivery_id { get; set; }
/// <summary>
/// 类型
/// </summary>
public string mesout_delivery_type { get; set; }
/// <summary>
/// 物料
/// </summary>
public string mesout_delivery_part { get; set; }
/// <summary>
/// 底盘号
/// </summary>
public string mesout_delivery_identity_no { get; set; }
/// <summary>
/// 发红储位
/// </summary>
public string mesout_delivery_loc { get; set; }
/// <summary>
/// 数量
/// </summary>
public decimal mesout_delivery_num { get; set; }
/// <summary>
/// 客户代码
/// </summary>
public string mesout_delivery_customer { get; set; }
/// <summary>
/// 车牌号
/// </summary>
public string mesout_delivery_carno { get; set; }
/// <summary>
/// 写入时间
/// </summary>
public string mesout_delivery_wt { get; set; }
/// <summary>
/// 发货单号
/// </summary>
public string mesout_delivery_no { get; set; }
/// <summary>
/// 器具号
/// </summary>
public string mesout_delivery_container { get; set; }
/// <summary>
/// 发货计划号
/// </summary>
public string mesout_delivery_plan { get; set; }
/// <summary>
/// 是否读取(0,1)
/// </summary>
public long Yl1 { get; set; }
public override object[] GetKeys()
{
return new object[] { mesout_delivery_id };
}
}

45
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/DeliveryManager.cs

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.Domain.Services;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery;
public class DeliveryManager : DomainService, IDeliveryManager
{
private readonly IDeliveryRepository _repository;
public DeliveryManager(IDeliveryRepository repository)
{
_repository = repository;
}
public virtual async Task<List<Delivery>> GetToBeProcessedListAsync()
{
var plans = await _repository.GetListAsync(p => p.Yl1 == 0).ConfigureAwait(false);
return plans;
}
public virtual async Task UpdateProcesseErrordListAsync(List<Delivery> entities)
{
var ids = entities.Select(p => p.mesout_delivery_id);
var plans = await _repository.GetListAsync(p => ids.Contains(p.mesout_delivery_id)).ConfigureAwait(false);
plans.ForEach(p =>
{
p.Yl1 = 2;
// p.WmsDate = Clock.Now;
});
await _repository.UpdateManyAsync(plans).ConfigureAwait(false);
}
public virtual async Task UpdateProcessedListAsync(List<Delivery> entities)
{
var ids = entities.Select(p => p.mesout_delivery_id);
var plans = await _repository.GetListAsync(p => ids.Contains(p.mesout_delivery_id)).ConfigureAwait(false);
plans.ForEach(p =>
{
p.Yl1 = 1;
// p.WmsDate = Clock.Now;
});
await _repository.UpdateManyAsync(plans).ConfigureAwait(false);
}
}

10
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/IDeliveryManager.cs

@ -0,0 +1,10 @@
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery;
public interface IDeliveryManager
{
Task<List<Delivery>> GetToBeProcessedListAsync();
Task UpdateProcessedListAsync(List<Delivery> entities);
Task UpdateProcesseErrordListAsync(List<Delivery> entities);
}

8
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Delivery/IDeliveryRepository.cs

@ -0,0 +1,8 @@
using Volo.Abp.Domain.Repositories;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery;
public interface IDeliveryRepository : IRepository<Delivery>
{
}

49
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Frozen/Frozen.cs

@ -0,0 +1,49 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Domain.Entities;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Frozen;
public class Frozen : Entity
{
/// <summary>
/// 序号
/// </summary>
[Key]
public string mesout_frozen_id { get; set; }
/// <summary>
/// 类型
/// </summary>
public string mesout_frozen_type { get; set; }
/// <summary>
/// 物料
/// </summary>
public string mesout_frozen_part { get; set; }
/// <summary>
/// 日期
/// </summary>
public string mesout_frozen_date { get; set; }
/// <summary>
/// 来源库位
/// </summary>
public string mesout_frozen_loc { get; set; }
/// <summary>
/// 冻结原因
/// </summary>
public string mesout_frozen_reason { get; set; }
/// <summary>
/// 数量
/// </summary>
public decimal mesout_frozen_num { get; set; }
/// <summary>
/// 冻结用户
/// </summary>
public string mesout_frozen_user { get; set; }
/// <summary>
/// 是否读取(0,1)
/// </summary>
public long Yl1 { get; set; }
public override object[] GetKeys()
{
return new object[] { mesout_frozen_id };
}
}

45
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Frozen/FrozenManager.cs

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.Domain.Services;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Frozen;
public class FrozenManager : DomainService, IFrozenManager
{
private readonly IFrozenRepository _repository;
public FrozenManager(IFrozenRepository repository)
{
_repository = repository;
}
public virtual async Task<List<Frozen>> GetToBeProcessedListAsync()
{
var plans = await _repository.GetListAsync(p => p.Yl1 == 0).ConfigureAwait(false);
return plans;
}
public virtual async Task UpdateProcesseErrordListAsync(List<Frozen> entities)
{
var ids = entities.Select(p => p.mesout_frozen_id);
var plans = await _repository.GetListAsync(p => ids.Contains(p.mesout_frozen_id)).ConfigureAwait(false);
plans.ForEach(p =>
{
p.Yl1 = 2;
// p.WmsDate = Clock.Now;
});
await _repository.UpdateManyAsync(plans).ConfigureAwait(false);
}
public virtual async Task UpdateProcessedListAsync(List<Frozen> entities)
{
var ids = entities.Select(p => p.mesout_frozen_id);
var plans = await _repository.GetListAsync(p => ids.Contains(p.mesout_frozen_id)).ConfigureAwait(false);
plans.ForEach(p =>
{
p.Yl1 = 1;
// p.WmsDate = Clock.Now;
});
await _repository.UpdateManyAsync(plans).ConfigureAwait(false);
}
}

10
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Frozen/IFrozenManager.cs

@ -0,0 +1,10 @@
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Frozen;
public interface IFrozenManager
{
Task<List<Frozen>> GetToBeProcessedListAsync();
Task UpdateProcessedListAsync(List<Frozen> entities);
Task UpdateProcesseErrordListAsync(List<Frozen> entities);
}

7
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Frozen/IFrozenRepository.cs

@ -0,0 +1,7 @@
using Volo.Abp.Domain.Repositories;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Frozen;
public interface IFrozenRepository : IRepository<Frozen>
{
}

11
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Qtyrfe/IQtyrfeManager.cs

@ -0,0 +1,11 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Domain.Services;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Qtyrfe;
public interface IQtyrfeManager : IDomainService
{
Task<List<Qtyrfe>> GetToBeProcessedListAsync();
Task UpdateProcessedListAsync(List<Qtyrfe> entities);
Task UpdateProcesseErrordListAsync(List<Qtyrfe> entities);
}

7
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Qtyrfe/IQtyrfeRepository.cs

@ -0,0 +1,7 @@
using Volo.Abp.Domain.Repositories;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Qtyrfe;
public interface IQtyrfeRepository : IRepository<Qtyrfe>
{
}

50
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Qtyrfe/Qtyrfe.cs

@ -0,0 +1,50 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Domain.Entities;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Qtyrfe;
public class Qtyrfe : Entity
{
/// <summary>
/// 序号
/// </summary>
[Key]
public string mesout_qtyrfe_id { get; set; }
/// <summary>
/// 物料
/// </summary>
public string mesout_qtyrfe_part { get; set; }
/// <summary>
/// 调出储位
/// </summary>
public string mesout_qtyrfe_loc_from { get; set; }
/// <summary>
/// 调入储位
/// </summary>
public string mesout_qtyrfe_loc_to { get; set; }
/// <summary>
/// 数量
/// </summary>
public decimal mesout_qtyrfe_num { get; set; }
/// <summary>
/// 调拨用户
/// </summary>
public string mesout_qtyrfe_user { get; set; }
/// <summary>
/// 写入时间
/// </summary>
public string mesout_qtyrfe_wt { get; set; }
/// <summary>
/// 类型(1为质量补)
/// </summary>
public string mesout_qtyrfe_type { get; set; }
public override object[] GetKeys()
{
return new object[] { mesout_qtyrfe_id };
}
/// <summary>
/// 是否读取(0,1)
/// </summary>
public long Yl1 { get; set; }
}

45
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/Qtyrfe/QtyrfeManager.cs

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.Domain.Services;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Qtyrfe;
public class QtyrfeManager : DomainService, IQtyrfeManager
{
private readonly IQtyrfeRepository _repository;
public QtyrfeManager(IQtyrfeRepository repository)
{
_repository = repository;
}
public virtual async Task<List<Qtyrfe>> GetToBeProcessedListAsync()
{
var plans = await _repository.GetListAsync(p => p.Yl1 == 0).ConfigureAwait(false);
return plans;
}
public virtual async Task UpdateProcesseErrordListAsync(List<Qtyrfe> entities)
{
var ids = entities.Select(p => p.mesout_qtyrfe_id);
var plans = await _repository.GetListAsync(p => ids.Contains(p.mesout_qtyrfe_id)).ConfigureAwait(false);
plans.ForEach(p =>
{
p.Yl1 = 2;
// p.WmsDate = Clock.Now;
});
await _repository.UpdateManyAsync(plans).ConfigureAwait(false);
}
public virtual async Task UpdateProcessedListAsync(List<Qtyrfe> entities)
{
var ids = entities.Select(p => p.mesout_qtyrfe_id);
var plans = await _repository.GetListAsync(p => ids.Contains(p.mesout_qtyrfe_id)).ConfigureAwait(false);
plans.ForEach(p =>
{
p.Yl1 = 1;
// p.WmsDate = Clock.Now;
});
await _repository.UpdateManyAsync(plans).ConfigureAwait(false);
}
}

27
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/CallMtl/CallMtlDbContextModelCreatingExtensions.cs

@ -0,0 +1,27 @@
using Microsoft.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.Modeling;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.CallMtl;
namespace Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes;
public static class CallMtlDbContextModelCreatingExtensions
{
public static void ConfigureCallMtl(this ModelBuilder builder, MesModelBuilderConfigurationOptions options)
{
builder.Entity<CallMtl>(b =>
{
//Configure table & schema Name
b.ToTable(options.TablePrefix + "mesout_callmtl", options.Schema);
//Configure ABP properties
b.ConfigureByConvention();
//Properties
b.Property(q => q.mesout_callmtl_id).HasMaxLength(20);
b.Property(q => q.mesout_callmtl_erpno).HasMaxLength(20);
b.Property(q => q.mesout_callmtl_loc).HasMaxLength(10);
b.Property(q => q.mesout_callmtl_num).HasPrecision(10, 2);
b.Property(q => q.mesout_callmtl_wt).HasMaxLength(20);
b.Property(q => q.Yl1);
});
}
}

12
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/CallMtl/CallMtlEfCoreRepository.cs

@ -0,0 +1,12 @@
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.CallMtl;
namespace Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes;
public class CallMtlEfCoreRepository : EfCoreRepository<MesDbContext, CallMtl>, ICallMtlRepository
{
public CallMtlEfCoreRepository(IDbContextProvider<MesDbContext> dbContextProvider)
: base(dbContextProvider)
{
}
}

4
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/DataExchangeDbContextModelCreatingExtensions.cs

@ -27,5 +27,9 @@ public static class DataExchangeDbContextModelCreatingExtensions
builder.ConfigureScrap(options); builder.ConfigureScrap(options);
builder.ConfigurePck(options); builder.ConfigurePck(options);
builder.ConfigureBackflu(options); builder.ConfigureBackflu(options);
builder.ConfigureQtyrfe(options);
builder.ConfigureFrozen(options);
builder.ConfigureDelivery(options);
builder.ConfigureCallMtl(options);
} }
} }

8
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/DataExchangeEntityFrameworkCoreFawtygModule.cs

@ -3,9 +3,13 @@ using Volo.Abp.BackgroundJobs.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.MySQL; using Volo.Abp.EntityFrameworkCore.MySQL;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.CallMtl;
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; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.MesOut; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.MesOut;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.PullTask; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.PullTask;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Qtyrfe;
namespace Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes; namespace Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes;
@ -32,5 +36,9 @@ public class DataExchangeEntityFrameworkCoreFawtygModule : AbpModule
context.Services.AddTransient<IScrapRepository, ScrapEfCoreRepository>(); context.Services.AddTransient<IScrapRepository, ScrapEfCoreRepository>();
context.Services.AddTransient<IIssueRepository, IssueEfCoreRepository>(); context.Services.AddTransient<IIssueRepository, IssueEfCoreRepository>();
context.Services.AddTransient<IBackfluRepository, BackfluEfCoreRepository>(); context.Services.AddTransient<IBackfluRepository, BackfluEfCoreRepository>();
context.Services.AddTransient<IQtyrfeRepository, QtyrfeEfCoreRepository>();
context.Services.AddTransient<IFrozenRepository, FrozenEfCoreRepository>();
context.Services.AddTransient<IDeliveryRepository, DeliveryEfCoreRepository>();
context.Services.AddTransient<ICallMtlRepository, CallMtlEfCoreRepository>();
} }
} }

35
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Delivery/DeliveryDbContextModelCreatingExtensions.cs

@ -0,0 +1,35 @@
using Microsoft.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.Modeling;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery;
namespace Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes;
public static class DeliveryDbContextModelCreatingExtensions
{
public static void ConfigureDelivery(this ModelBuilder builder, MesModelBuilderConfigurationOptions options)
{
builder.Entity<Delivery>(b =>
{
//Configure table & schema Name
b.ToTable(options.TablePrefix + "mesout_delivery", options.Schema);
//Configure ABP properties
b.ConfigureByConvention();
//Properties
b.Property(q => q.mesout_delivery_id).HasMaxLength(20);
b.Property(q => q.mesout_delivery_type).HasMaxLength(1);
b.Property(q => q.mesout_delivery_part).HasMaxLength(20);
b.Property(q => q.mesout_delivery_identity_no).HasMaxLength(20);
b.Property(q => q.mesout_delivery_loc).HasMaxLength(10);
b.Property(q => q.mesout_delivery_num).HasPrecision(10, 2);
b.Property(q => q.mesout_delivery_customer).HasMaxLength(10);
b.Property(q => q.mesout_delivery_carno).HasMaxLength(10);
b.Property(q => q.mesout_delivery_wt).HasMaxLength(20);
b.Property(q => q.mesout_delivery_no).HasMaxLength(20);
b.Property(q => q.mesout_delivery_container).HasMaxLength(20);
b.Property(q => q.mesout_delivery_plan).HasMaxLength(20);
b.Property(q => q.Yl1);
});
}
}

18
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Delivery/DeliveryEfCoreRepository.cs

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery;
namespace Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes;
public class DeliveryEfCoreRepository : EfCoreRepository<MesDbContext, Delivery>,IDeliveryRepository
{
public DeliveryEfCoreRepository(IDbContextProvider<MesDbContext> dbContextProvider)
: base(dbContextProvider)
{
}
}

30
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Frozen/FrozenDbContextModelCreatingExtensions.cs

@ -0,0 +1,30 @@
using Microsoft.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.Modeling;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Frozen;
namespace Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes;
public static class FrozenDbContextModelCreatingExtensions
{
public static void ConfigureFrozen(this ModelBuilder builder, MesModelBuilderConfigurationOptions options)
{
builder.Entity<Frozen>(b =>
{
//Configure table & schema Name
b.ToTable(options.TablePrefix + "mesout_frozen", options.Schema);
//Configure ABP properties
b.ConfigureByConvention();
//Properties
b.Property(q => q.mesout_frozen_id).HasMaxLength(20);
b.Property(q => q.mesout_frozen_type).HasMaxLength(1);
b.Property(q => q.mesout_frozen_part).HasMaxLength(20);
b.Property(q => q.mesout_frozen_date).HasMaxLength(20);
b.Property(q => q.mesout_frozen_loc).HasMaxLength(10);
b.Property(q => q.mesout_frozen_reason).HasMaxLength(500);
b.Property(q => q.mesout_frozen_num).HasPrecision(10, 2);
b.Property(q => q.mesout_frozen_user).HasMaxLength(20);
b.Property(q => q.Yl1);
});
}
}

12
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Frozen/FrozenEfCoreRepository.cs

@ -0,0 +1,12 @@
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Frozen;
namespace Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes;
public class FrozenEfCoreRepository : EfCoreRepository<MesDbContext, Frozen>, IFrozenRepository
{
public FrozenEfCoreRepository(IDbContextProvider<MesDbContext> dbContextProvider)
: base(dbContextProvider)
{
}
}

11
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/IMesDbContext.cs

@ -1,9 +1,13 @@
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Volo.Abp.Data; using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.CallMtl;
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; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.MesOut; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.MesOut;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.PullTask; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.PullTask;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Qtyrfe;
namespace Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes; namespace Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes;
@ -20,4 +24,11 @@ public interface IMesDbContext : IEfCoreDbContext
DbSet<MesOut> MesOuts { get; } DbSet<MesOut> MesOuts { get; }
DbSet<PullTask> PullTasks { get; } DbSet<PullTask> PullTasks { get; }
DbSet<Backflu> Backflu { get; } DbSet<Backflu> Backflu { get; }
DbSet<Qtyrfe> Qtyrfe { get; }
DbSet<Frozen> Frozen { get; }
DbSet<Delivery> Delivery { get; }
DbSet<CallMtl> CallMtl { get; }
} }

11
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/MesDbContext.cs

@ -1,9 +1,13 @@
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Volo.Abp.Data; using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.CallMtl;
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; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.MesOut; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.MesOut;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.PullTask; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.PullTask;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Qtyrfe;
namespace Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes; namespace Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes;
@ -22,6 +26,13 @@ public class MesDbContext :
public virtual DbSet<IssueNote> Issue { get; } public virtual DbSet<IssueNote> Issue { get; }
public virtual DbSet<Backflu> Backflu { get; } public virtual DbSet<Backflu> Backflu { get; }
public virtual DbSet<Qtyrfe> Qtyrfe { get; }
public virtual DbSet<Frozen> Frozen { get; }
public virtual DbSet<Delivery> Delivery { get; }
public virtual DbSet<CallMtl> CallMtl { get; }
public MesDbContext(DbContextOptions<MesDbContext> options) public MesDbContext(DbContextOptions<MesDbContext> options)
: base(options) : base(options)
{ {

30
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Qtyrfe/QtyrfeDbContextModelCreatingExtensions.cs

@ -0,0 +1,30 @@
using Microsoft.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.Modeling;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Qtyrfe;
namespace Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes;
public static class QtyrfeDbContextModelCreatingExtensions
{
public static void ConfigureQtyrfe(this ModelBuilder builder, MesModelBuilderConfigurationOptions options)
{
builder.Entity<Qtyrfe>(b =>
{
//Configure table & schema Name
b.ToTable(options.TablePrefix + "mesout_qtyrfe", options.Schema);
//Configure ABP properties
b.ConfigureByConvention();
//Properties
b.Property(q => q.mesout_qtyrfe_id).HasMaxLength(20);
b.Property(q => q.mesout_qtyrfe_part).HasMaxLength(20);
b.Property(q => q.mesout_qtyrfe_loc_from).HasMaxLength(10);
b.Property(q => q.mesout_qtyrfe_loc_to).HasMaxLength(10);
b.Property(q => q.mesout_qtyrfe_num).HasPrecision(10, 2);
b.Property(q => q.mesout_qtyrfe_user).HasMaxLength(20);
b.Property(q => q.mesout_qtyrfe_wt).HasMaxLength(20);
b.Property(q => q.mesout_qtyrfe_type).HasMaxLength(2);
b.Property(q => q.Yl1);
});
}
}

13
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Qtyrfe/QtyrfeEfCoreRepository.cs

@ -0,0 +1,13 @@
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Qtyrfe;
namespace Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes;
public class QtyrfeEfCoreRepository : EfCoreRepository<MesDbContext, Qtyrfe>, IQtyrfeRepository
{
public QtyrfeEfCoreRepository(IDbContextProvider<MesDbContext> dbContextProvider)
: base(dbContextProvider)
{
}
}

2
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes.csproj

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net6.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>

127
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/FawtygAutoMapperProfile.cs

@ -3,10 +3,15 @@ using Volo.Abp.AutoMapper;
using Win_in.Sfs.Shared.Application; using Win_in.Sfs.Shared.Application;
using Win_in.Sfs.Wms.DataExchange.Domain; using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.WMS.BackFlushNote; using Win_in.Sfs.Wms.DataExchange.WMS.BackFlushNote;
using Win_in.Sfs.Wms.DataExchange.WMS.DeliverNote;
using Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest;
using Win_in.Sfs.Wms.DataExchange.WMS.InjectionIssueRequest;
using Win_in.Sfs.Wms.DataExchange.WMS.MaterialRequest; using Win_in.Sfs.Wms.DataExchange.WMS.MaterialRequest;
using Win_in.Sfs.Wms.DataExchange.WMS.MesNote;
using Win_in.Sfs.Wms.DataExchange.WMS.PCK; using Win_in.Sfs.Wms.DataExchange.WMS.PCK;
using Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote; using Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote;
using Win_in.Sfs.Wms.DataExchange.WMS.ScrapNote; using Win_in.Sfs.Wms.DataExchange.WMS.ScrapNote;
using Win_in.Sfs.Wms.DataExchange.WMS.TransferNote;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent; namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent;
@ -148,16 +153,14 @@ public class FawtygAutoMapperProfile : Profile
.IgnoreIHasRecommendAndHandledFrom(); .IgnoreIHasRecommendAndHandledFrom();
CreateMap<IssueNoteDTO, IssueNoteExchangeDto>() CreateMap<IssueNoteDTO, IssueNoteExchangeDto>()
.Ignore(x => x.Detail) .Ignore(x => x.Detail);
;
CreateMap<IssueNoteDetailDTO, IssueNoteDetailExchangeDto>(); CreateMap<IssueNoteDetailDTO, IssueNoteDetailExchangeDto>();
CreateMap<ScrapNoteExchangeDto, ScrapNoteEditInput>() CreateMap<ScrapNoteExchangeDto, ScrapNoteEditInput>()
.Ignore(x => x.Details) .Ignore(x => x.Details)
.Ignore(x => x.ExtraProperties) .Ignore(x => x.ExtraProperties)
.Ignore(x => x.Number) .Ignore(x => x.Number)
.Ignore(x => x.JobNumber) .Ignore(x => x.JobNumber);
;
CreateMap<ScrapNoteDetailExchangeDto, ScrapNoteDetailInput>() CreateMap<ScrapNoteDetailExchangeDto, ScrapNoteDetailInput>()
.Ignore(x => x.ItemName) .Ignore(x => x.ItemName)
.Ignore(x => x.ItemDesc1) .Ignore(x => x.ItemDesc1)
@ -174,8 +177,122 @@ public class FawtygAutoMapperProfile : Profile
.Ignore(x => x.ExpireDate) .Ignore(x => x.ExpireDate)
.Ignore(x => x.ToWarehouseCode) .Ignore(x => x.ToWarehouseCode)
.Ignore(x => x.ToWarehouseCode) .Ignore(x => x.ToWarehouseCode)
.Ignore(x => x.Uom)
.Ignore(x => x.StdPackQty);
CreateMap<TransferNoteExchangeDto, TransferNoteEditInput>()
.Ignore(x => x.Details)
.Ignore(x => x.ExtraProperties)
.Ignore(x => x.RequestNumber)
.Ignore(x => x.JobNumber)
.Ignore(x => x.CallRequestNumber)
.Ignore(x => x.CallJobNumber)
.Ignore(x => x.CallBusinessType)
.Ignore(x => x.CallServerName)
.Ignore(x => x.UseOnTheWayLocation)
.Ignore(x => x.Confirmed)
.Ignore(x => x.ConfirmTime)
.Ignore(x => x.Details)
.Ignore(x => x.ExtraProperties);
CreateMap<TransferNoteDetailExchangeDto, TransferNoteDetailInput>()
.Ignore(x => x.ItemName)
.Ignore(x => x.ItemDesc1)
.Ignore(x => x.ItemDesc2)
.Ignore(x => x.FromLocationCode)
.Ignore(x => x.FromLocationArea)
.Ignore(x => x.FromLocationGroup)
.Ignore(x => x.FromContainerCode)
.Ignore(x => x.FromWarehouseCode)
.Ignore(x => x.FromLot)
.Ignore(x => x.FromPackingCode)
.Ignore(x => x.ToPackingCode)
.Ignore(x => x.ToContainerCode)
.Ignore(x => x.ToLocationCode)
.Ignore(x => x.ToLocationArea)
.Ignore(x => x.ToLocationGroup)
.Ignore(x => x.ToWarehouseCode)
.Ignore(x => x.ToLot)
.Ignore(x => x.SupplierBatch)
.Ignore(x => x.ArriveDate)
.Ignore(x => x.ProduceDate)
.Ignore(x => x.ExpireDate)
.Ignore(x => x.Uom)
.Ignore(x => x.StdPackQty);
CreateMap<MesNoteExchangeDto, MesNoteEditInput>()
.Ignore(x => x.ExtraProperties)
.Ignore(x => x.JobNumber)
.Ignore(x => x.Details)
.Ignore(x => x.ExtraProperties);
CreateMap<MesNoteDetailExchangeDto, MesNoteDetailInput>()
.ForMember(x => x.FromLocationCode, y => y.MapFrom(t => t.FromLocationErpCode))
.ForMember(x => x.ToLocationCode, y => y.MapFrom(t => t.ToLocationErpCode))
.Ignore(x => x.ItemName)
.Ignore(x => x.ItemDesc1)
.Ignore(x => x.ItemDesc2)
.Ignore(x => x.FromLocationArea)
.Ignore(x => x.FromLocationGroup)
.Ignore(x => x.FromContainerCode)
.Ignore(x => x.FromWarehouseCode)
.Ignore(x => x.FromLot)
.Ignore(x => x.FromPackingCode)
.Ignore(x => x.ToPackingCode)
.Ignore(x => x.ToContainerCode)
.Ignore(x => x.ToLocationArea)
.Ignore(x => x.ToLocationGroup)
.Ignore(x => x.ToWarehouseCode)
.Ignore(x => x.ToLot)
.Ignore(x => x.SupplierBatch)
.Ignore(x => x.ArriveDate)
.Ignore(x => x.ProduceDate)
.Ignore(x => x.ExpireDate)
.Ignore(x => x.Uom)
.Ignore(x => x.StdPackQty);
CreateMap<DeliverRequestExchangeDto, DeliverRequestEditInput>()
.Ignore(x => x.DeliverPlanNumber)
.Ignore(x => x.ExtraProperties)
.Ignore(x => x.Details)
.Ignore(x => x.CustomerAddressCode)
.Ignore(x => x.ExtraProperties)
.Ignore(x => x.AutoSubmit)
.Ignore(x => x.AutoAgree)
.Ignore(x => x.AutoHandle)
.Ignore(x => x.AutoCompleteJob)
.Ignore(x => x.DirectCreateNote);
CreateMap<DeliverRequestDetailExchangeDto, DeliverRequestDetailInput>()
.Ignore(x => x.Uom) .Ignore(x => x.Uom)
.Ignore(x => x.StdPackQty) .Ignore(x => x.StdPackQty)
; .Ignore(x => x.Remark)
.Ignore(x => x.ItemName)
.Ignore(x => x.ItemDesc1)
.Ignore(x => x.ItemDesc2);
CreateMap<InjectionIssueRequestExchangeDto, InjectionIssueRequestEditInput>()
.Ignore(x => x.ExtraProperties)
.Ignore(x => x.Details)
.Ignore(x => x.AutoSubmit)
.Ignore(x => x.AutoAgree)
.Ignore(x => x.AutoHandle)
.Ignore(x => x.AutoCompleteJob)
.Ignore(x => x.DirectCreateNote)
.Ignore(x => x.UseOnTheWayLocation);
CreateMap<InjectionIssueRequestDetailExchangeDto, InjectionIssueRequestDetailInput>()
.Ignore(x => x.Uom)
.Ignore(x => x.StdPackQty)
.Ignore(x => x.Remark)
.Ignore(x => x.ItemName)
.Ignore(x => x.ItemDesc1)
.Ignore(x => x.ItemDesc2)
.Ignore(x => x.ProdLine)
.Ignore(x => x.ToLocationErpCode)
.Ignore(x => x.ToLocationArea)
.Ignore(x => x.ToLocationGroup)
.Ignore(x => x.ToWarehouseCode)
.Ignore(x => x.RequestStatus)
.Ignore(x => x.IssuedQty)
.Ignore(x => x.ReceivedQty)
.Ignore(x => x.Status)
.Ignore(x => x.PositionCode);
} }
} }

101
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/CallMtlConverter.cs

@ -0,0 +1,101 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
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.InjectionIssueRequest;
using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent.Incoming;
public class CallMtlConverter : IIncomingConverter
{
private readonly IIncomingFromExternalManager _incomingFromExternalManager;
private readonly IIncomingToWmsManager _incomingToWmsManager;
private readonly IObjectMapper _objectMapper;
private readonly IItemBasicAppService _itemBasicAppService;
private readonly ILocationAppService _locationAppService;
private readonly ILogger<CallMtlConverter> _logger;
public CallMtlConverter(
IIncomingToWmsManager incomingToWmsManager
, IObjectMapper objectMapper
, IItemBasicAppService itemBasicAppService
, ILogger<CallMtlConverter> logger,
ILocationAppService locationAppService,
IIncomingFromExternalManager incomingFromExternalManager)
{
_incomingToWmsManager = incomingToWmsManager;
_objectMapper = objectMapper;
_itemBasicAppService = itemBasicAppService;
_logger = logger;
_locationAppService = locationAppService;
_incomingFromExternalManager = incomingFromExternalManager;
}
public virtual async Task ConvertAsync(List<IncomingFromExternal> incomingFromExternalList)
{
if (!incomingFromExternalList.Any())
{
_logger.LogInformation("no CallMtls");
return;
}
//按Number合并InjectionIssue单据
var transferNoteList = await BuildIncomingToWmsOfInjectionIssueAsync(incomingFromExternalList).ConfigureAwait(false);
await _incomingToWmsManager.CreateManyAsync(transferNoteList).ConfigureAwait(false);
//归档
await _incomingFromExternalManager.ArchiveManyAsync(incomingFromExternalList).ConfigureAwait(false);
}
private async Task<List<IncomingToWms>> BuildIncomingToWmsOfInjectionIssueAsync(List<IncomingFromExternal> incomingDataList)
{
var incomingToWmsList = new List<IncomingToWms>();
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 exchangeInjectionIssue = JsonSerializer.Deserialize<InjectionIssueRequestExchangeDto>(incomingData.DestinationDataContent);
var wmsInjectionIssueDetail = _objectMapper.Map<InjectionIssueRequestDetailExchangeDto, InjectionIssueRequestDetailInput>(exchangeInjectionIssue.Detail);
var wmsInjectionIssue = _objectMapper.Map<InjectionIssueRequestExchangeDto, InjectionIssueRequestEditInput>(exchangeInjectionIssue);
wmsInjectionIssue.Details = new List<InjectionIssueRequestDetailInput>();
var item = await _itemBasicAppService.GetByCodeAsync(wmsInjectionIssueDetail.ItemCode).ConfigureAwait(false);
try
{
if (item != null)
{
wmsInjectionIssueDetail.ItemName = item.Name;
wmsInjectionIssueDetail.ItemDesc1 = !string.IsNullOrEmpty(item.Desc1) ? item.Desc1 : "";
wmsInjectionIssueDetail.ItemDesc2 = !string.IsNullOrEmpty(item.Desc2) ? item.Desc2 : "";
wmsInjectionIssueDetail.Uom = !string.IsNullOrEmpty(item.BasicUom) ? item.BasicUom : "";
wmsInjectionIssueDetail.StdPackQty = item.StdPackQty;
}
}
catch (Exception)
{
wmsInjectionIssueDetail.ItemName = "";
wmsInjectionIssueDetail.ItemDesc1 = "";
wmsInjectionIssueDetail.ItemDesc2 = "";
wmsInjectionIssueDetail.Uom = "";
}
wmsInjectionIssue.Details.Add(wmsInjectionIssueDetail);
incomingToWms.DataContent = JsonSerializer.Serialize(wmsInjectionIssue);
incomingToWmsList.Add(incomingToWms);
}
return incomingToWmsList;
}
}

121
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/CallMtlReader.cs

@ -0,0 +1,121 @@
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.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.CallMtl;
using Win_in.Sfs.Wms.DataExchange.WMS.InjectionIssueRequest;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent.Incoming;
public class CallMtlReader : IReader
{
private readonly ICallMtlManager _CallMtlManager;
private readonly IIncomingFromExternalManager _incomingFromExternalManager;
private readonly ILogger<CallMtlReader> _logger;
private readonly ILocationAppService _locationAppService;
public CallMtlReader(
ICallMtlManager pillTaskManager
, IIncomingFromExternalManager incomingFromExternalManager
, ILogger<CallMtlReader> logger
, ILocationAppService locationAppService
)
{
_CallMtlManager = pillTaskManager;
_incomingFromExternalManager = incomingFromExternalManager;
_logger = logger;
_locationAppService = locationAppService;
}
public virtual async Task<List<IncomingFromExternal>> ReadAsync()
{
//从MES读取待处理CallMtl
var toBeProcessedPillTasks = await _CallMtlManager.GetToBeProcessedListAsync().ConfigureAwait(false);
if (!toBeProcessedPillTasks.Any())
{
_logger.LogInformation("no CallMtls");
return new List<IncomingFromExternal>();
}
//CallMtl逐一转换为MaterialRequest
var holdLocation = await _locationAppService.GetFirstByTypeAsync(EnumLocationType.HOLD).ConfigureAwait(false);
var incomingDataList = BuildIncomingFromExternalFromPillTaskAsync(toBeProcessedPillTasks, holdLocation == null ? "" : holdLocation.Code);
await _incomingFromExternalManager.CreateManyAsync(incomingDataList).ConfigureAwait(false);
//更新MES数据状态
await _CallMtlManager.UpdateProcessedListAsync(toBeProcessedPillTasks).ConfigureAwait(false);
return incomingDataList;
}
private static List<IncomingFromExternal> BuildIncomingFromExternalFromPillTaskAsync(List<CallMtl> toBeProcessedCallMtls, string holdLocationCode)
{
var incomingDataList = new List<IncomingFromExternal>();
foreach (var CallMtl in toBeProcessedCallMtls)
{
var incomingData = BuildIncomingFromExternal(CallMtl);
incomingData.SetEffectiveDate(DateTime.Now);
incomingData.SetSuccess();
try
{
var MaterialRequest = BuildMesNoteCreateInput(CallMtl, holdLocationCode);
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(CallMtl CallMtl)
{
var incomingData = new IncomingFromExternal()
{
DataType = EnumIncomingDataType.CallMtl.ToString(),
DataAction = EnumExchangeDataAction.Add,
SourceSystem = EnumSystemType.MES.ToString(),
SourceDataId = CallMtl.mesout_callmtl_id.ToString(),
SourceDataGroupCode = CallMtl.mesout_callmtl_id,
SourceDataDetailCode = CallMtl.mesout_callmtl_erpno,
SourceDataContent = JsonSerializer.Serialize(CallMtl),
WriteTime = DateTime.Now,
Writer = nameof(MesIncomingBackgroundWorker),
DestinationSystem = EnumSystemType.WMS.ToString(),
};
return incomingData;
}
private static InjectionIssueRequestExchangeDto BuildMesNoteCreateInput(CallMtl CallMtl, string holdLocationCode)
{
var request = new InjectionIssueRequestExchangeDto()
{
IssueRequestType = EnumIssueRequestType.Mes,
Worker = "MesZDJL",
ActiveDate = DateTime.TryParse(CallMtl.mesout_callmtl_wt, out DateTime dateTime) ? dateTime : DateTime.Now
};
var detail = new InjectionIssueRequestDetailExchangeDto()
{
ItemCode = CallMtl.mesout_callmtl_erpno,
Qty = CallMtl.mesout_callmtl_num,
BoxQty = CallMtl.mesout_callmtl_num,
ToLocationCode = CallMtl.mesout_callmtl_loc,
RecommendType = EnumRecommendType.RAW,
};
request.Detail = detail;
return request;
}
}

106
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/DeliveryConverter.cs

@ -0,0 +1,106 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
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.DeliverRequest;
using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent.Incoming;
public class DeliveryConverter : IIncomingConverter
{
private readonly IIncomingFromExternalManager _incomingFromExternalManager;
private readonly IIncomingToWmsManager _incomingToWmsManager;
private readonly IObjectMapper _objectMapper;
private readonly IItemBasicAppService _itemBasicAppService;
private readonly ICustomerAppService _customerAppService;
private readonly ILogger<DeliveryConverter> _logger;
public DeliveryConverter(
IIncomingToWmsManager incomingToWmsManager
, IObjectMapper objectMapper
, IItemBasicAppService itemBasicAppService
, ILogger<DeliveryConverter> logger,
ICustomerAppService customerAppService,
IIncomingFromExternalManager incomingFromExternalManager)
{
_incomingToWmsManager = incomingToWmsManager;
_objectMapper = objectMapper;
_itemBasicAppService = itemBasicAppService;
_logger = logger;
_customerAppService = customerAppService;
_incomingFromExternalManager = incomingFromExternalManager;
}
public virtual async Task ConvertAsync(List<IncomingFromExternal> incomingFromExternalList)
{
if (!incomingFromExternalList.Any())
{
_logger.LogInformation("no Deliverys");
return;
}
//按Number合并DeliveryRequest单据
var transferRequestList = await BuildIncomingToWmsOfDeliveryRequestAsync(incomingFromExternalList).ConfigureAwait(false);
await _incomingToWmsManager.CreateManyAsync(transferRequestList).ConfigureAwait(false);
//归档
await _incomingFromExternalManager.ArchiveManyAsync(incomingFromExternalList).ConfigureAwait(false);
}
private async Task<List<IncomingToWms>> BuildIncomingToWmsOfDeliveryRequestAsync(List<IncomingFromExternal> incomingDataList)
{
var incomingToWmsList = new List<IncomingToWms>();
var groups = incomingDataList.GroupBy(p => new { p.SourceDataGroupCode ,p.SourceDataDetailCode});
foreach (var group in groups)
{
var first = group.First();
var incomingToWms = new IncomingToWms()
{
DataType = first.DataType,
DataAction = first.DataAction,
SourceSystem = first.SourceSystem,
DataIdentityCode = first.SourceDataGroupCode,
};
incomingToWms.SetEffectiveDate(first.EffectiveDate);
var exchangeDeliveryRequest = JsonSerializer.Deserialize<DeliverRequestExchangeDto>(first.DestinationDataContent);
var wmsDeliveryRequest = _objectMapper.Map<DeliverRequestExchangeDto, DeliverRequestEditInput>(exchangeDeliveryRequest);
wmsDeliveryRequest.Details = new List<DeliverRequestDetailInput>();
var cust= await _customerAppService.GetByCodeAsync(wmsDeliveryRequest.CustomerCode).ConfigureAwait(false);
wmsDeliveryRequest.CustomerAddressCode = String.IsNullOrEmpty( cust?.Address)?"无": cust.Address;
foreach (var incomingFromExternal in group.ToList())
{
var transferRequest = JsonSerializer.Deserialize<DeliverRequestExchangeDto>(incomingFromExternal.DestinationDataContent);
var wmsDeliveryRequestDetail = _objectMapper.Map<DeliverRequestDetailExchangeDto, DeliverRequestDetailInput>(transferRequest.Detail);
var item = await _itemBasicAppService.GetByCodeAsync(wmsDeliveryRequestDetail.ItemCode).ConfigureAwait(false);
try
{
if (item != null)
{
wmsDeliveryRequestDetail.ItemName = item.Name;
wmsDeliveryRequestDetail.ItemDesc1 = !string.IsNullOrEmpty(item.Desc1) ? item.Desc1 : "";
wmsDeliveryRequestDetail.ItemDesc2 = !string.IsNullOrEmpty(item.Desc2) ? item.Desc2 : "";
wmsDeliveryRequestDetail.Uom = !string.IsNullOrEmpty(item.BasicUom) ? item.BasicUom : "";
wmsDeliveryRequestDetail.StdPackQty = item.StdPackQty;
}
}
catch (Exception)
{
wmsDeliveryRequestDetail.ItemName = "";
wmsDeliveryRequestDetail.ItemDesc1 = "";
wmsDeliveryRequestDetail.ItemDesc2 = "";
wmsDeliveryRequestDetail.Uom = "";
}
wmsDeliveryRequest.Details.Add(wmsDeliveryRequestDetail);
}
incomingToWms.DataContent = JsonSerializer.Serialize(wmsDeliveryRequest);
incomingToWmsList.Add(incomingToWms);
}
return incomingToWmsList;
}
}

120
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/DeliveryReader.cs

@ -0,0 +1,120 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Delivery;
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.DeliverRequest;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent.Incoming;
public class DeliveryReader : IReader
{
private readonly IDeliveryManager _DeliveryManager;
private readonly IIncomingFromExternalManager _incomingFromExternalManager;
private readonly ILogger<DeliveryReader> _logger;
public DeliveryReader(
IDeliveryManager pillTaskManager
, IIncomingFromExternalManager incomingFromExternalManager
, ILogger<DeliveryReader> logger
)
{
_DeliveryManager = pillTaskManager;
_incomingFromExternalManager = incomingFromExternalManager;
_logger = logger;
}
public virtual async Task<List<IncomingFromExternal>> ReadAsync()
{
//从MES读取待处理Delivery
var toBeProcessedPillTasks = await _DeliveryManager.GetToBeProcessedListAsync().ConfigureAwait(false);
if (!toBeProcessedPillTasks.Any())
{
_logger.LogInformation("no Deliverys");
return new List<IncomingFromExternal>();
}
//Delivery逐一转换为MaterialRequest
var incomingDataList = BuildIncomingFromExternalFromPillTaskAsync(toBeProcessedPillTasks);
await _incomingFromExternalManager.CreateManyAsync(incomingDataList).ConfigureAwait(false);
//更新MES数据状态
await _DeliveryManager.UpdateProcessedListAsync(toBeProcessedPillTasks).ConfigureAwait(false);
return incomingDataList;
}
private static List<IncomingFromExternal> BuildIncomingFromExternalFromPillTaskAsync(List<Delivery> toBeProcessedDeliverys)
{
var incomingDataList = new List<IncomingFromExternal>();
foreach (var Delivery in toBeProcessedDeliverys)
{
var incomingData = BuildIncomingFromExternal(Delivery);
incomingData.SetEffectiveDate(DateTime.Now);
incomingData.SetSuccess();
try
{
var DetilveryRequest = BuildDeliverRequestCreateInput(Delivery);
incomingData.DestinationDataContent = JsonSerializer.Serialize(DetilveryRequest);
}
catch (Exception ex)
{
incomingData.SetError(EnumExchangeDataErrorCode.Exception, ex.Message, ex.ToString());
}
incomingDataList.Add(incomingData);
}
return incomingDataList;
}
private static IncomingFromExternal BuildIncomingFromExternal(Delivery Delivery)
{
var incomingData = new IncomingFromExternal()
{
DataType = EnumIncomingDataType.Delivery.ToString(),
DataAction = EnumExchangeDataAction.Add,
SourceSystem = EnumSystemType.MES.ToString(),
SourceDataId = Delivery.mesout_delivery_id.ToString(),
SourceDataGroupCode =Delivery.mesout_delivery_type=="0"? Delivery.mesout_delivery_no : Delivery.mesout_delivery_plan,
SourceDataDetailCode = Delivery.mesout_delivery_customer,
SourceDataContent = JsonSerializer.Serialize(Delivery),
WriteTime = DateTime.Now,
Writer = nameof(MesIncomingBackgroundWorker),
DestinationSystem = EnumSystemType.WMS.ToString(),
};
return incomingData;
}
private static DeliverRequestExchangeDto BuildDeliverRequestCreateInput(Delivery Delivery)
{
var mesRequest = new DeliverRequestExchangeDto()
{
DeliverRequestType = Delivery.mesout_delivery_type == "0" ? EnumDeliverRequestType.FIS : EnumDeliverRequestType.Normal,
CustomerCode = Delivery.mesout_delivery_customer,
Number = Delivery.mesout_delivery_no,
Worker = "MESFY",
ActiveDate = DateTime.TryParse(Delivery.mesout_delivery_wt, out DateTime dateTime) ? dateTime : DateTime.Now,
DeliverTime = DateTime.TryParse(Delivery.mesout_delivery_wt, out DateTime dateTime1) ? dateTime1 : DateTime.Now
};
var mesRequestDetail = new DeliverRequestDetailExchangeDto()
{
ItemCode = Delivery.mesout_delivery_part,
Qty = Delivery.mesout_delivery_num,
AreaCode = Delivery.mesout_delivery_loc,
MesDeliveryNo=Delivery.mesout_delivery_no,
MesDeliveryPlan = Delivery.mesout_delivery_plan,
IdentityNo =Delivery.mesout_delivery_identity_no
};
mesRequest.Detail = mesRequestDetail;
return mesRequest;
}
}

133
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/FrozenConverter.cs

@ -0,0 +1,133 @@
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.MesNote;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Wms.DataExchange.WMS.MesNote;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent.Incoming;
public class FrozenConverter : IIncomingConverter
{
private readonly IIncomingFromExternalManager _incomingFromExternalManager;
private readonly IIncomingToWmsManager _incomingToWmsManager;
private readonly IObjectMapper _objectMapper;
private readonly IItemBasicAppService _itemBasicAppService;
private readonly ILocationAppService _locationAppService;
private readonly ILogger<FrozenConverter> _logger;
public FrozenConverter(
IIncomingToWmsManager incomingToWmsManager
, IObjectMapper objectMapper
, IItemBasicAppService itemBasicAppService
, ILogger<FrozenConverter> logger,
ILocationAppService locationAppService,
IIncomingFromExternalManager incomingFromExternalManager)
{
_incomingToWmsManager = incomingToWmsManager;
_objectMapper = objectMapper;
_itemBasicAppService = itemBasicAppService;
_logger = logger;
_locationAppService = locationAppService;
_incomingFromExternalManager = incomingFromExternalManager;
}
public virtual async Task ConvertAsync(List<IncomingFromExternal> incomingFromExternalList)
{
if (!incomingFromExternalList.Any())
{
_logger.LogInformation("no Frozens");
return;
}
//按Number合并MesNote单据
var transferNoteList = await BuildIncomingToWmsOfMesNoteAsync(incomingFromExternalList).ConfigureAwait(false);
await _incomingToWmsManager.CreateManyAsync(transferNoteList).ConfigureAwait(false);
//归档
await _incomingFromExternalManager.ArchiveManyAsync(incomingFromExternalList).ConfigureAwait(false);
}
private async Task<List<IncomingToWms>> BuildIncomingToWmsOfMesNoteAsync(List<IncomingFromExternal> incomingDataList)
{
var incomingToWmsList = new List<IncomingToWms>();
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 exchangeMesNote = JsonSerializer.Deserialize<MesNoteExchangeDto>(incomingData.DestinationDataContent);
var wmsMesNoteDetail = _objectMapper.Map<MesNoteDetailExchangeDto, MesNoteDetailInput>(exchangeMesNote.Detail);
var wmsMesNote = _objectMapper.Map<MesNoteExchangeDto, MesNoteEditInput>(exchangeMesNote);
wmsMesNote.Details = new List<MesNoteDetailInput>();
var item = await _itemBasicAppService.GetByCodeAsync(wmsMesNoteDetail.ItemCode).ConfigureAwait(false);
try
{
wmsMesNoteDetail.FromPackingCode = "";
wmsMesNoteDetail.ToPackingCode = "";
wmsMesNoteDetail.FromLot = "";
wmsMesNoteDetail.ToLot = "";
wmsMesNoteDetail.FromWarehouseCode = "";
wmsMesNoteDetail.ToWarehouseCode = "";
//if (transferNote.Remark.Contains("质量补移库"))//质量补
//{
// wmsMesNoteDetail.FromPackingCode = "RFE"; //质量补排序批次
// wmsMesNoteDetail.FromLot = "RFE";//质量补箱标签
// wmsMesNoteDetail.ToPackingCode = "RFE"; //质量补排序批次
// wmsMesNoteDetail.ToLot = "RFE";//质量补箱标签
//}
if (item != null)
{
wmsMesNoteDetail.ItemName = item.Name;
wmsMesNoteDetail.ItemDesc1 = !string.IsNullOrEmpty(item.Desc1) ? item.Desc1 : "";
wmsMesNoteDetail.ItemDesc2 = !string.IsNullOrEmpty(item.Desc2) ? item.Desc2 : "";
wmsMesNoteDetail.Uom = !string.IsNullOrEmpty(item.BasicUom) ? item.BasicUom : "";
wmsMesNoteDetail.StdPackQty = item.StdPackQty;
}
//if (tolocation != null)
//{
// wmsMesNoteDetail.ToLocationCode = tolocation.Code;
// wmsMesNoteDetail.ToLocationArea = tolocation.AreaCode;
// wmsMesNoteDetail.ToLocationGroup = tolocation.LocationGroupCode;
// wmsMesNoteDetail.ToWarehouseCode = tolocation.WarehouseCode;
// if (tolocation.Type == EnumLocationType.CUST)
// {
// wmsMesNote.Type = EnumTransSubType.Mes_Customer.ToString();//客户储位调拨
// }
//}
//if (fromlocation != null)
//{
// wmsMesNoteDetail.FromLocationCode = fromlocation.Code;
// wmsMesNoteDetail.FromLocationArea = fromlocation.AreaCode;
// wmsMesNoteDetail.FromLocationGroup = fromlocation.LocationGroupCode;
// wmsMesNoteDetail.FromWarehouseCode = fromlocation.WarehouseCode;
//}
}
catch (Exception)
{
wmsMesNoteDetail.ItemName = "";
wmsMesNoteDetail.ItemDesc1 = "";
wmsMesNoteDetail.ItemDesc2 = "";
wmsMesNoteDetail.Uom = "";
}
wmsMesNote.Details.Add(wmsMesNoteDetail);
incomingToWms.DataContent = JsonSerializer.Serialize(wmsMesNote);
incomingToWmsList.Add(incomingToWms);
}
return incomingToWmsList;
}
}

123
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/FrozenReader.cs

@ -0,0 +1,123 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Frozen;
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;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent.Incoming;
public class FrozenReader : IReader
{
private readonly IFrozenManager _FrozenManager;
private readonly IIncomingFromExternalManager _incomingFromExternalManager;
private readonly ILogger<FrozenReader> _logger;
private readonly ILocationAppService _locationAppService;
public FrozenReader(
IFrozenManager pillTaskManager
, IIncomingFromExternalManager incomingFromExternalManager
, ILogger<FrozenReader> logger
, ILocationAppService locationAppService
)
{
_FrozenManager = pillTaskManager;
_incomingFromExternalManager = incomingFromExternalManager;
_logger = logger;
_locationAppService = locationAppService;
}
public virtual async Task<List<IncomingFromExternal>> ReadAsync()
{
//从MES读取待处理Frozen
var toBeProcessedPillTasks = await _FrozenManager.GetToBeProcessedListAsync().ConfigureAwait(false);
if (!toBeProcessedPillTasks.Any())
{
_logger.LogInformation("no Frozens");
return new List<IncomingFromExternal>();
}
//Frozen逐一转换为MaterialRequest
var holdLocation = await _locationAppService.GetFirstByTypeAsync(EnumLocationType.HOLD).ConfigureAwait(false);
var incomingDataList = BuildIncomingFromExternalFromPillTaskAsync(toBeProcessedPillTasks, holdLocation==null?"": holdLocation.Code);
await _incomingFromExternalManager.CreateManyAsync(incomingDataList).ConfigureAwait(false);
//更新MES数据状态
await _FrozenManager.UpdateProcessedListAsync(toBeProcessedPillTasks).ConfigureAwait(false);
return incomingDataList;
}
private static List<IncomingFromExternal> BuildIncomingFromExternalFromPillTaskAsync(List<Frozen> toBeProcessedFrozens,string holdLocationCode)
{
var incomingDataList = new List<IncomingFromExternal>();
foreach (var Frozen in toBeProcessedFrozens)
{
var incomingData = BuildIncomingFromExternal(Frozen);
incomingData.SetEffectiveDate(DateTime.Now);
incomingData.SetSuccess();
try
{
var MaterialRequest = BuildMesNoteCreateInput(Frozen, holdLocationCode);
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(Frozen Frozen)
{
var incomingData = new IncomingFromExternal()
{
DataType = EnumIncomingDataType.MesNote.ToString(),
DataAction = EnumExchangeDataAction.Add,
SourceSystem = EnumSystemType.MES.ToString(),
SourceDataId = Frozen.mesout_frozen_id.ToString(),
SourceDataGroupCode = Frozen.mesout_frozen_id,
SourceDataDetailCode = Frozen.mesout_frozen_part,
SourceDataContent = JsonSerializer.Serialize(Frozen),
WriteTime = DateTime.Now,
Writer = nameof(MesIncomingBackgroundWorker),
DestinationSystem = EnumSystemType.WMS.ToString(),
};
return incomingData;
}
private static MesNoteExchangeDto BuildMesNoteCreateInput(Frozen Frozen, string holdLocationCode)
{
var mesNote = new MesNoteExchangeDto()
{
MesRequestNumber=Frozen.mesout_frozen_id,
Worker = Frozen.mesout_frozen_user,
Remark = Frozen.mesout_frozen_reason,
Type = Frozen.mesout_frozen_type == "0" ? EnumTransType.MesFreezed.ToString() : EnumTransType.MesUnFreezed.ToString(),
ActiveDate = DateTime.TryParse(Frozen.mesout_frozen_date, out DateTime dateTime) ? dateTime : DateTime.Now
};
var mesNoteDetail = new MesNoteDetailExchangeDto()
{
ItemCode = Frozen.mesout_frozen_part,
Qty = Frozen.mesout_frozen_num,
ToLocationErpCode = Frozen.mesout_frozen_type == "0"? holdLocationCode : Frozen.mesout_frozen_loc,
FromLocationErpCode = Frozen.mesout_frozen_type != "0"? holdLocationCode:Frozen.mesout_frozen_loc,
ToStatus= Frozen.mesout_frozen_type == "0"? EnumInventoryStatus.HOLD: EnumInventoryStatus.OK,
FromStatus = Frozen.mesout_frozen_type != "0" ? EnumInventoryStatus.HOLD : EnumInventoryStatus.OK,
};
mesNote.Detail = mesNoteDetail;
return mesNote;
}
}

54
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesIncomingBackgroundWorker.cs

@ -1,4 +1,5 @@
using System; using System;
using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
@ -6,6 +7,7 @@ using Microsoft.Extensions.Options;
using Volo.Abp.BackgroundWorkers; using Volo.Abp.BackgroundWorkers;
using Volo.Abp.Threading; using Volo.Abp.Threading;
using Volo.Abp.Uow; using Volo.Abp.Uow;
using Win_in.Sfs.Wms.DataExchange.Domain.Shared;
using Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent.Incoming; using Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent.Incoming;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent; namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent;
@ -46,10 +48,18 @@ public class MesIncomingBackgroundWorker : AsyncPeriodicBackgroundWorkerBase
Logger.LogInformation($"Read MesOut");//缴库 Logger.LogInformation($"Read MesOut");//缴库
var mesOutReader = workerContext.ServiceProvider.GetRequiredService<MesOutReader>(); var mesOutReader = workerContext.ServiceProvider.GetRequiredService<MesOutReader>();
var mesOutConverter = workerContext.ServiceProvider.GetRequiredService<MesOutConverter>(); var mesOutConverter = workerContext.ServiceProvider.GetRequiredService<MesOutConverter>();
//读取并保存MesOut var TransferNoteConverter = workerContext.ServiceProvider.GetRequiredService<QtyrfeConverter>();
//读取mes缴库
var mesOutsFromExternalList = await mesOutReader.ReadAsync().ConfigureAwait(false); var mesOutsFromExternalList = await mesOutReader.ReadAsync().ConfigureAwait(false);
//转换MesOut var mesOutsFromExternalList_ProductReceipt = mesOutsFromExternalList.Where(r => r.DataType == EnumIncomingDataType.ProductReceipt.ToString()).ToList();
await mesOutConverter.ConvertAsync(mesOutsFromExternalList).ConfigureAwait(false); var mesOutsFromExternalList_TransferNote = mesOutsFromExternalList.Where(r => r.DataType == EnumIncomingDataType.TransferNote.ToString()).ToList();
//转换缴库数据(如果有质量补得数据直接生产移库数据移到客户库位)
await mesOutConverter.ConvertAsync(mesOutsFromExternalList_ProductReceipt).ConfigureAwait(false);
if (mesOutsFromExternalList_TransferNote.Count > 0)//如果有质量补则生产储位调拨任务
{
await TransferNoteConverter.ConvertAsync(mesOutsFromExternalList_TransferNote).ConfigureAwait(false);
}
//上海和安徽无此接口 //上海和安徽无此接口
//Logger.LogInformation($"Read PullTask");//拉动任务 //Logger.LogInformation($"Read PullTask");//拉动任务
@ -59,7 +69,7 @@ public class MesIncomingBackgroundWorker : AsyncPeriodicBackgroundWorkerBase
//var pullTaskFromExternalList = await pullTaskReader.ReadAsync().ConfigureAwait(false); //var pullTaskFromExternalList = await pullTaskReader.ReadAsync().ConfigureAwait(false);
////转换PullTask ////转换PullTask
//await pullTaskConverter.ConvertAsync(pullTaskFromExternalList).ConfigureAwait(false); //await pullTaskConverter.ConvertAsync(pullTaskFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"Read Scrap"); Logger.LogInformation($"Read Scrap");//报废
var scrapReader = workerContext.ServiceProvider.GetRequiredService<ScrapReader>(); var scrapReader = workerContext.ServiceProvider.GetRequiredService<ScrapReader>();
var scrapConverter = workerContext.ServiceProvider.GetRequiredService<ScrapConverter>(); var scrapConverter = workerContext.ServiceProvider.GetRequiredService<ScrapConverter>();
@ -84,6 +94,42 @@ public class MesIncomingBackgroundWorker : AsyncPeriodicBackgroundWorkerBase
var backFlushsFromExternalList = await BackFlushReader.ReadAsync().ConfigureAwait(false); var backFlushsFromExternalList = await BackFlushReader.ReadAsync().ConfigureAwait(false);
//转换BackFlush //转换BackFlush
await BackFlushConverter.ConvertAsync(backFlushsFromExternalList).ConfigureAwait(false); await BackFlushConverter.ConvertAsync(backFlushsFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"Read TransferNote");//储位调拨
var TransferNoteReader = workerContext.ServiceProvider.GetRequiredService<QtyrfeReader>();
// var TransferNoteConverter = workerContext.ServiceProvider.GetRequiredService<QtyrfeConverter>();
//读取并保存TransferNote
var transferNoteFromExternalList = await TransferNoteReader.ReadAsync().ConfigureAwait(false);
//转换TransferNote
await TransferNoteConverter.ConvertAsync(transferNoteFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"Read Frozen");//冻结解冻
var FrozenReader = workerContext.ServiceProvider.GetRequiredService<FrozenReader>();
var FrozenConverter = workerContext.ServiceProvider.GetRequiredService<FrozenConverter>();
//读取并保存Frozen
var mesNoteFromExternalList = await FrozenReader.ReadAsync().ConfigureAwait(false);
//转换Frozen
await FrozenConverter.ConvertAsync(mesNoteFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"Read Delivery");//成品发运
var DeliveryReader = workerContext.ServiceProvider.GetRequiredService<DeliveryReader>();
var DeliveryConverter = workerContext.ServiceProvider.GetRequiredService<DeliveryConverter>();
//读取并保存Delivery
var deliveryNoteFromExternalList = await DeliveryReader.ReadAsync().ConfigureAwait(false);
//转换Delivery
await DeliveryConverter.ConvertAsync(deliveryNoteFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"Read CallMtl");//自动叫料
var CallMtlReader = workerContext.ServiceProvider.GetRequiredService<CallMtlReader>();
var CallMtlConverter = workerContext.ServiceProvider.GetRequiredService<CallMtlConverter>();
//读取并保存Delivery
var callMtlFromExternalList = await CallMtlReader.ReadAsync().ConfigureAwait(false);
//转换Delivery
await CallMtlConverter.ConvertAsync(callMtlFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"Completed: Handling {Incoming}"); Logger.LogInformation($"Completed: Handling {Incoming}");
} }

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

@ -89,7 +89,7 @@ public class MesOutConverter : IIncomingConverter
var productReceiptNote = JsonSerializer.Deserialize<ProductReceiptNoteExchangeDto>(incomingFromExternal.DestinationDataContent); var productReceiptNote = JsonSerializer.Deserialize<ProductReceiptNoteExchangeDto>(incomingFromExternal.DestinationDataContent);
var wmsProductReceiptNoteDetail = _objectMapper.Map<ProductReceiptNoteDetailExchangeDto, ProductReceiptNoteDetailInput>(productReceiptNote.Detail); var wmsProductReceiptNoteDetail = _objectMapper.Map<ProductReceiptNoteDetailExchangeDto, ProductReceiptNoteDetailInput>(productReceiptNote.Detail);
var oldNoteDetail = wmsProductReceiptNote.Details.FirstOrDefault(r => r.ItemCode == wmsProductReceiptNoteDetail.ItemCode && r.LocationErpCode == wmsProductReceiptNoteDetail.LocationErpCode && (first.TableType != EnumExchangeTableType.MainTable ? true : r.ReturnQty != 0)); var oldNoteDetail = wmsProductReceiptNote.Details.FirstOrDefault(r =>r.MesQuality== wmsProductReceiptNoteDetail.MesQuality&& r.ItemCode == wmsProductReceiptNoteDetail.ItemCode && r.LocationErpCode == wmsProductReceiptNoteDetail.LocationErpCode && (first.TableType != EnumExchangeTableType.MainTable ? true : r.ReturnQty != 0));
sumdetail.itemCode = wmsProductReceiptNoteDetail.ItemCode; sumdetail.itemCode = wmsProductReceiptNoteDetail.ItemCode;
sumdetail.locationCode = wmsProductReceiptNoteDetail.LocationErpCode; sumdetail.locationCode = wmsProductReceiptNoteDetail.LocationErpCode;
@ -111,6 +111,11 @@ public class MesOutConverter : IIncomingConverter
wmsProductReceiptNoteDetail.WarehouseCode = "T8"; wmsProductReceiptNoteDetail.WarehouseCode = "T8";
wmsProductReceiptNoteDetail.LocationArea = ""; wmsProductReceiptNoteDetail.LocationArea = "";
wmsProductReceiptNoteDetail.LocationGroup = ""; wmsProductReceiptNoteDetail.LocationGroup = "";
if (wmsProductReceiptNoteDetail.MesQuality=="1")//质量补
{
wmsProductReceiptNoteDetail.Lot = "RFE"; //质量补排序批次
wmsProductReceiptNoteDetail.PackingCode = "RFE";//质量补箱标签
}
var loc = await _locationAppService.GetListByTypesAndErpCodeAsync(types, wmsProductReceiptNoteDetail.LocationErpCode, wmsProductReceiptNoteDetail.LocationErpCode).ConfigureAwait(false); var loc = await _locationAppService.GetListByTypesAndErpCodeAsync(types, wmsProductReceiptNoteDetail.LocationErpCode, wmsProductReceiptNoteDetail.LocationErpCode).ConfigureAwait(false);
if (loc != null) if (loc != null)
{ {
@ -123,13 +128,16 @@ public class MesOutConverter : IIncomingConverter
wmsProductReceiptNoteDetail.HandledToLocationArea = loc[0].AreaCode; wmsProductReceiptNoteDetail.HandledToLocationArea = loc[0].AreaCode;
wmsProductReceiptNoteDetail.HandledToLocationGroup = loc[0].LocationGroupCode; wmsProductReceiptNoteDetail.HandledToLocationGroup = loc[0].LocationGroupCode;
wmsProductReceiptNoteDetail.HandledToLocationErpCode = loc[0].ErpLocationCode; wmsProductReceiptNoteDetail.HandledToLocationErpCode = loc[0].ErpLocationCode;
wmsProductReceiptNoteDetail.HandledPackingCode = wmsProductReceiptNoteDetail.PackingCode;
wmsProductReceiptNoteDetail.HandledLot = wmsProductReceiptNoteDetail.Lot;
wmsProductReceiptNoteDetail.RecommendToLocationCode = loc[0].Code; wmsProductReceiptNoteDetail.RecommendToLocationCode = loc[0].Code;
wmsProductReceiptNoteDetail.RecommendToLocationArea = loc[0].AreaCode; wmsProductReceiptNoteDetail.RecommendToLocationArea = loc[0].AreaCode;
wmsProductReceiptNoteDetail.RecommendToLocationGroup = loc[0].LocationGroupCode; wmsProductReceiptNoteDetail.RecommendToLocationGroup = loc[0].LocationGroupCode;
wmsProductReceiptNoteDetail.RecommendToLocationErpCode = loc[0].ErpLocationCode; wmsProductReceiptNoteDetail.RecommendToLocationErpCode = loc[0].ErpLocationCode;
wmsProductReceiptNoteDetail.RecommendPackingCode = wmsProductReceiptNoteDetail.PackingCode;
wmsProductReceiptNoteDetail.RecommendLot = wmsProductReceiptNoteDetail.Lot;
} }
var item = await _itemBasicAppService.GetByCodeAsync(wmsProductReceiptNoteDetail.ItemCode).ConfigureAwait(false); var item = await _itemBasicAppService.GetByCodeAsync(wmsProductReceiptNoteDetail.ItemCode).ConfigureAwait(false);
if (item != null) if (item != null)
{ {
@ -137,7 +145,7 @@ public class MesOutConverter : IIncomingConverter
wmsProductReceiptNoteDetail.ItemDesc1 = !string.IsNullOrEmpty(item.Desc1) ? item.Desc1 : ""; wmsProductReceiptNoteDetail.ItemDesc1 = !string.IsNullOrEmpty(item.Desc1) ? item.Desc1 : "";
wmsProductReceiptNoteDetail.ItemDesc2 = !string.IsNullOrEmpty(item.Desc2) ? item.Desc2 : ""; wmsProductReceiptNoteDetail.ItemDesc2 = !string.IsNullOrEmpty(item.Desc2) ? item.Desc2 : "";
wmsProductReceiptNoteDetail.Uom = !string.IsNullOrEmpty(item.BasicUom) ? item.BasicUom : ""; wmsProductReceiptNoteDetail.Uom = !string.IsNullOrEmpty(item.BasicUom) ? item.BasicUom : "";
wmsProductReceiptNoteDetail.StdPackQty = item.StdPackQty;
wmsProductReceiptNoteDetail.ProduceDate = incomingFromExternal.EffectiveDate; wmsProductReceiptNoteDetail.ProduceDate = incomingFromExternal.EffectiveDate;
wmsProductReceiptNoteDetail.ArriveDate = incomingFromExternal.EffectiveDate; wmsProductReceiptNoteDetail.ArriveDate = incomingFromExternal.EffectiveDate;
wmsProductReceiptNoteDetail.ExpireDate = wmsProductReceiptNoteDetail.ProduceDate.AddDays(item.GetValidateDays()); wmsProductReceiptNoteDetail.ExpireDate = wmsProductReceiptNoteDetail.ProduceDate.AddDays(item.GetValidateDays());

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

@ -8,8 +8,10 @@ using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.DataExchange.Domain; using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.MesOut; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.MesOut;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Qtyrfe;
using Win_in.Sfs.Wms.DataExchange.Domain.Shared; using Win_in.Sfs.Wms.DataExchange.Domain.Shared;
using Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote; using Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote;
using Win_in.Sfs.Wms.DataExchange.WMS.TransferNote;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent; namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent;
@ -19,17 +21,20 @@ public class MesOutReader : IReader
private readonly IIncomingFromExternalManager _incomingFromExternalManager; private readonly IIncomingFromExternalManager _incomingFromExternalManager;
private readonly ILogger<MesOutReader> _logger; private readonly ILogger<MesOutReader> _logger;
private readonly ILocationAppService _locationAppService; private readonly ILocationAppService _locationAppService;
private readonly ICustomerItemAppService _customerItemAppService;
public MesOutReader( public MesOutReader(
IMesOutManager mesOutManager IMesOutManager mesOutManager
, IIncomingFromExternalManager incomingFromExternalManager , IIncomingFromExternalManager incomingFromExternalManager
, ILogger<MesOutReader> logger , ILogger<MesOutReader> logger
, ILocationAppService locationAppService , ILocationAppService locationAppService
, ICustomerItemAppService customerItemAppService
) )
{ {
_mesOutManager = mesOutManager; _mesOutManager = mesOutManager;
_incomingFromExternalManager = incomingFromExternalManager; _incomingFromExternalManager = incomingFromExternalManager;
_logger = logger; _logger = logger;
_locationAppService = locationAppService; _locationAppService = locationAppService;
_customerItemAppService = customerItemAppService;
} }
public virtual async Task<List<IncomingFromExternal>> ReadAsync() public virtual async Task<List<IncomingFromExternal>> ReadAsync()
@ -51,7 +56,7 @@ public class MesOutReader : IReader
await _mesOutManager.UpdateProcesseErrordListAsync(toBeProcessedEroMwsOuts).ConfigureAwait(false); await _mesOutManager.UpdateProcesseErrordListAsync(toBeProcessedEroMwsOuts).ConfigureAwait(false);
} }
//MesOut逐一转换为ProductReceiptNote //MesOut逐一转换为ProductReceiptNote
var incomingDataList = BuildIncomingFromExternalFromShipAsync(toBeProcessedMwsOuts); var incomingDataList =await BuildIncomingFromExternalFromShipAsync(toBeProcessedMwsOuts).ConfigureAwait(false);
await _incomingFromExternalManager.CreateManyAsync(incomingDataList).ConfigureAwait(false); await _incomingFromExternalManager.CreateManyAsync(incomingDataList).ConfigureAwait(false);
//更新MES数据状态 //更新MES数据状态
await _mesOutManager.UpdateProcessedListAsync(toBeProcessedMwsOuts).ConfigureAwait(false); await _mesOutManager.UpdateProcessedListAsync(toBeProcessedMwsOuts).ConfigureAwait(false);
@ -59,13 +64,12 @@ public class MesOutReader : IReader
return incomingDataList; return incomingDataList;
} }
private static List<IncomingFromExternal> BuildIncomingFromExternalFromShipAsync(List<MesOut> toBeProcessedMesOuts) private async Task<List<IncomingFromExternal>> BuildIncomingFromExternalFromShipAsync(List<MesOut> toBeProcessedMesOuts)
{ {
var incomingDataList = new List<IncomingFromExternal>(); var incomingDataList = new List<IncomingFromExternal>();
foreach (var mesOut in toBeProcessedMesOuts) foreach (var mesOut in toBeProcessedMesOuts)
{ {
var incomingData = BuildIncomingFromExternal(mesOut); var incomingData = BuildIncomingFromExternal(mesOut);
incomingData.SetEffectiveDate(DateTime.ParseExact(mesOut.Mesout_date, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture)); incomingData.SetEffectiveDate(DateTime.ParseExact(mesOut.Mesout_date, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture));
incomingData.SetSuccess(); incomingData.SetSuccess();
try try
@ -79,7 +83,29 @@ public class MesOutReader : IReader
} }
incomingDataList.Add(incomingData); incomingDataList.Add(incomingData);
if (mesOut.Mesout_quality == "1")
{
//查询零件对应的客户库位
string locationCode = await _customerItemAppService.GetFirstLocationCodeByItemCode(mesOut.Mesout_part).ConfigureAwait(false);
if (!string.IsNullOrEmpty(locationCode))
{
var incomingData_TransferNote = BuildIncomingFromExternal_TransferNote(mesOut);
incomingData_TransferNote.SetEffectiveDate(DateTime.ParseExact(mesOut.Mesout_date, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture));
incomingData_TransferNote.SetSuccess();
try
{
var transferNote = BuildTransferNoteCreateInput(mesOut, locationCode);
incomingData_TransferNote.DestinationDataContent = JsonSerializer.Serialize(transferNote);
}
catch (Exception ex)
{
incomingData.SetError(EnumExchangeDataErrorCode.Exception, ex.Message, ex.ToString());
}
incomingDataList.Add(incomingData_TransferNote);
}
}
} }
return incomingDataList; return incomingDataList;
@ -126,7 +152,6 @@ public class MesOutReader : IReader
} }
return incomingData; return incomingData;
} }
private static ProductReceiptNoteExchangeDto BuildProductReceiptNoteCreateInput(MesOut mesOut) private static ProductReceiptNoteExchangeDto BuildProductReceiptNoteCreateInput(MesOut mesOut)
{ {
var productReceiptNote = new ProductReceiptNoteExchangeDto() var productReceiptNote = new ProductReceiptNoteExchangeDto()
@ -141,10 +166,53 @@ public class MesOutReader : IReader
Qty = mesOut.Mesout_move, Qty = mesOut.Mesout_move,
LocationErpCode = mesOut.Mesout_loc, LocationErpCode = mesOut.Mesout_loc,
Remark = mesOut.memo, Remark = mesOut.memo,
ReturnQty = mesOut.Mesout_bad ReturnQty = mesOut.Mesout_bad,
MesBarCode = mesOut.Mesout_barcode,
MesQuality = mesOut.Mesout_quality
}; };
productReceiptNote.Detail = productReceiptNoteDetail; productReceiptNote.Detail = productReceiptNoteDetail;
return productReceiptNote; return productReceiptNote;
} }
private static IncomingFromExternal BuildIncomingFromExternal_TransferNote(MesOut mesOut)
{
var incomingData = new IncomingFromExternal()
{
DataType = EnumIncomingDataType.TransferNote.ToString(),
DataAction = EnumExchangeDataAction.Add,
SourceSystem = EnumSystemType.MES.ToString(),
SourceDataId = mesOut.Mesout_ref_nbr.ToString(),
SourceDataGroupCode = mesOut.Mesout_ref_nbr,
SourceDataDetailCode = mesOut.Mesout_part,
SourceDataContent = JsonSerializer.Serialize(mesOut),
WriteTime = DateTime.Now,
Writer = nameof(MesIncomingBackgroundWorker),
DestinationSystem = EnumSystemType.WMS.ToString(),
};
return incomingData;
}
private static TransferNoteExchangeDto BuildTransferNoteCreateInput(MesOut mesOut,string toLocationCode)
{
var transferNote = new TransferNoteExchangeDto()
{
Worker = "MesJK",
Remark="质量补移库"
};
var transferNoteDetail = new TransferNoteDetailExchangeDto()
{
ItemCode = mesOut.Mesout_part,
Qty = mesOut.Mesout_move,
ToLocationErpCode = toLocationCode,
FromLocationErpCode = mesOut.Mesout_loc,
PackingCode="RFE",
Lot = "RFE",
};
transferNote.Detail = transferNoteDetail;
return transferNote;
}
} }

140
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/QtyrfeConverter.cs

@ -0,0 +1,140 @@
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.TransferNote;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent.Incoming;
public class QtyrfeConverter : IIncomingConverter
{
private readonly IIncomingFromExternalManager _incomingFromExternalManager;
private readonly IIncomingToWmsManager _incomingToWmsManager;
private readonly IObjectMapper _objectMapper;
private readonly IItemBasicAppService _itemBasicAppService;
private readonly ILocationAppService _locationAppService;
private readonly ILogger<QtyrfeConverter> _logger;
public QtyrfeConverter(
IIncomingToWmsManager incomingToWmsManager
, IObjectMapper objectMapper
, IItemBasicAppService itemBasicAppService
, ILogger<QtyrfeConverter> logger,
ILocationAppService locationAppService,
IIncomingFromExternalManager incomingFromExternalManager)
{
_incomingToWmsManager = incomingToWmsManager;
_objectMapper = objectMapper;
_itemBasicAppService = itemBasicAppService;
_logger = logger;
_locationAppService = locationAppService;
_incomingFromExternalManager = incomingFromExternalManager;
}
public virtual async Task ConvertAsync(List<IncomingFromExternal> incomingFromExternalList)
{
if (!incomingFromExternalList.Any())
{
_logger.LogInformation("no Qtyrfes");
return;
}
//按Number合并TransferNote单据
var transferNoteList = await BuildIncomingToWmsOfTransferNoteAsync(incomingFromExternalList).ConfigureAwait(false);
await _incomingToWmsManager.CreateManyAsync(transferNoteList).ConfigureAwait(false);
//归档
await _incomingFromExternalManager.ArchiveManyAsync(incomingFromExternalList).ConfigureAwait(false);
}
private async Task<List<IncomingToWms>> BuildIncomingToWmsOfTransferNoteAsync(List<IncomingFromExternal> incomingDataList)
{
var incomingToWmsList = new List<IncomingToWms>();
var groups = incomingDataList.GroupBy(p => p.SourceDataGroupCode);
foreach (var group in groups)
{
var first = group.First();
var incomingToWms = new IncomingToWms()
{
DataType = first.DataType,
DataAction = first.DataAction,
SourceSystem = first.SourceSystem,
DataIdentityCode = first.SourceDataGroupCode,
};
incomingToWms.SetEffectiveDate(first.EffectiveDate);
var exchangeTransferNote = JsonSerializer.Deserialize<TransferNoteExchangeDto>(first.DestinationDataContent);
var wmsTransferNote = _objectMapper.Map<TransferNoteExchangeDto, TransferNoteEditInput>(exchangeTransferNote);
wmsTransferNote.Type = EnumTransSubType.Transfer_Area.ToString();//客户储位调拨
wmsTransferNote.Details = new List<TransferNoteDetailInput>();
foreach (var incomingFromExternal in group.ToList())
{
var transferNote = JsonSerializer.Deserialize<TransferNoteExchangeDto>(incomingFromExternal.DestinationDataContent);
var wmsTransferNoteDetail = _objectMapper.Map<TransferNoteDetailExchangeDto, TransferNoteDetailInput>(transferNote.Detail);
var item = await _itemBasicAppService.GetByCodeAsync(wmsTransferNoteDetail.ItemCode).ConfigureAwait(false);
var tolocation=await _locationAppService.GetByCodeAsync(wmsTransferNoteDetail.ToLocationErpCode).ConfigureAwait(false);
var fromlocation = await _locationAppService.GetByCodeAsync(wmsTransferNoteDetail.FromLocationErpCode).ConfigureAwait(false);
try
{
wmsTransferNoteDetail.FromPackingCode = "";
wmsTransferNoteDetail.ToPackingCode = "";
wmsTransferNoteDetail.FromLot = "";
wmsTransferNoteDetail.ToLot = "";
wmsTransferNoteDetail.FromStatus = EnumInventoryStatus.OK;
wmsTransferNoteDetail.ToStatus = EnumInventoryStatus.OK;
if (transferNote.Remark.Contains("质量补移库"))//质量补
{
wmsTransferNoteDetail.FromPackingCode = "RFE"; //质量补排序批次
wmsTransferNoteDetail.FromLot = "RFE";//质量补箱标签
wmsTransferNoteDetail.ToPackingCode = "RFE"; //质量补排序批次
wmsTransferNoteDetail.ToLot = "RFE";//质量补箱标签
}
if (item != null)
{
wmsTransferNoteDetail.ItemName = item.Name;
wmsTransferNoteDetail.ItemDesc1 = !string.IsNullOrEmpty(item.Desc1) ? item.Desc1 : "";
wmsTransferNoteDetail.ItemDesc2 = !string.IsNullOrEmpty(item.Desc2) ? item.Desc2 : "";
wmsTransferNoteDetail.Uom = !string.IsNullOrEmpty(item.BasicUom) ? item.BasicUom : "";
wmsTransferNoteDetail.StdPackQty = item.StdPackQty;
}
if (tolocation != null)
{
wmsTransferNoteDetail.ToLocationCode = tolocation.Code;
wmsTransferNoteDetail.ToLocationArea = tolocation.AreaCode;
wmsTransferNoteDetail.ToLocationGroup = tolocation.LocationGroupCode;
wmsTransferNoteDetail.ToWarehouseCode = tolocation.WarehouseCode;
if (tolocation.Type== EnumLocationType.CUST)
{
wmsTransferNote.Type = EnumTransSubType.Transfer_Customer.ToString();//客户储位调拨
}
}
if (fromlocation!=null)
{
wmsTransferNoteDetail.FromLocationCode = fromlocation.Code;
wmsTransferNoteDetail.FromLocationArea = fromlocation.AreaCode;
wmsTransferNoteDetail.FromLocationGroup = fromlocation.LocationGroupCode;
wmsTransferNoteDetail.FromWarehouseCode = fromlocation.WarehouseCode;
}
}
catch (Exception)
{
wmsTransferNoteDetail.ItemName = "";
wmsTransferNoteDetail.ItemDesc1 = "";
wmsTransferNoteDetail.ItemDesc2 = "";
wmsTransferNoteDetail.Uom = "";
}
wmsTransferNote.Details.Add(wmsTransferNoteDetail);
}
incomingToWms.DataContent = JsonSerializer.Serialize(wmsTransferNote);
incomingToWmsList.Add(incomingToWms);
}
return incomingToWmsList;
}
}

117
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/QtyrfeReader.cs

@ -0,0 +1,117 @@
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.Wms.DataExchange.Domain.Fawtyg.Qtyrfe;
using Win_in.Sfs.Wms.DataExchange.Domain.Shared;
using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.WMS.MaterialRequest;
using Win_in.Sfs.Wms.DataExchange.WMS.TransferNote;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent.Incoming;
public class QtyrfeReader : IReader
{
private readonly IQtyrfeManager _QtyrfeManager;
private readonly IIncomingFromExternalManager _incomingFromExternalManager;
private readonly ILogger<QtyrfeReader> _logger;
public QtyrfeReader(
IQtyrfeManager pillTaskManager
, IIncomingFromExternalManager incomingFromExternalManager
, ILogger<QtyrfeReader> logger
)
{
_QtyrfeManager = pillTaskManager;
_incomingFromExternalManager = incomingFromExternalManager;
_logger = logger;
}
public virtual async Task<List<IncomingFromExternal>> ReadAsync()
{
//从MES读取待处理Qtyrfe
var toBeProcessedPillTasks = await _QtyrfeManager.GetToBeProcessedListAsync().ConfigureAwait(false);
if (!toBeProcessedPillTasks.Any())
{
_logger.LogInformation("no Qtyrfes");
return new List<IncomingFromExternal>();
}
//Qtyrfe逐一转换为MaterialRequest
var incomingDataList = BuildIncomingFromExternalFromPillTaskAsync(toBeProcessedPillTasks);
await _incomingFromExternalManager.CreateManyAsync(incomingDataList).ConfigureAwait(false);
//更新MES数据状态
await _QtyrfeManager.UpdateProcessedListAsync(toBeProcessedPillTasks).ConfigureAwait(false);
return incomingDataList;
}
private static List<IncomingFromExternal> BuildIncomingFromExternalFromPillTaskAsync(List<Qtyrfe> toBeProcessedQtyrfes)
{
var incomingDataList = new List<IncomingFromExternal>();
foreach (var Qtyrfe in toBeProcessedQtyrfes)
{
var incomingData = BuildIncomingFromExternal(Qtyrfe);
incomingData.SetEffectiveDate(DateTime.Now);
incomingData.SetSuccess();
try
{
var MaterialRequest = BuildTransferNoteCreateInput(Qtyrfe);
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(Qtyrfe Qtyrfe)
{
var incomingData = new IncomingFromExternal()
{
DataType = EnumIncomingDataType.TransferNote.ToString(),
DataAction = EnumExchangeDataAction.Add,
SourceSystem = EnumSystemType.MES.ToString(),
SourceDataId = Qtyrfe.mesout_qtyrfe_id.ToString(),
SourceDataGroupCode = Qtyrfe.mesout_qtyrfe_id,
SourceDataDetailCode = Qtyrfe.mesout_qtyrfe_part,
SourceDataContent = JsonSerializer.Serialize(Qtyrfe),
WriteTime = DateTime.Now,
Writer = nameof(MesIncomingBackgroundWorker),
DestinationSystem = EnumSystemType.WMS.ToString(),
};
return incomingData;
}
private static TransferNoteExchangeDto BuildTransferNoteCreateInput(Qtyrfe Qtyrfe)
{
var transferNote = new TransferNoteExchangeDto()
{
Worker = Qtyrfe.mesout_qtyrfe_user,
Remark = ""
};
if (Qtyrfe.mesout_qtyrfe_type == "1")
{
transferNote.Remark = "质量补移库";
}
var transferNoteDetail = new TransferNoteDetailExchangeDto()
{
ItemCode = Qtyrfe.mesout_qtyrfe_part,
Qty =Qtyrfe.mesout_qtyrfe_num,
ToLocationErpCode = Qtyrfe.mesout_qtyrfe_loc_to,
FromLocationErpCode = Qtyrfe.mesout_qtyrfe_loc_from,
};
transferNote.Detail = transferNoteDetail;
return transferNote;
}
}

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

@ -1,12 +1,12 @@
{ {
"ConnectionStrings": { "ConnectionStrings": {
"Default": "Server=10.164.113.32,1818\\SHDB;Database=Wms_Dy_ShangHai;uid=ShWmsUser;pwd=Faty@Wms_20230413#SH;TrustServerCertificate=True;Encrypt=false", "Default": "Server=dev.ccwin-in.com,13319;Database=WMS_DongYang_Main_CC;uid=ccwin-in;pwd=Microsoft@2022;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", "DataExchange": "Server=dev.ccwin-in.com,13319;Database=WMS_DongYang_DataExchange_CC;uid=ccwin-in;pwd=Microsoft@2022;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" "MES": "Server=dev.ccwin-in.com,13319;Database=MES_SH;uid=ccwin-in;pwd=Microsoft@2022;TrustServerCertificate=True;Encrypt=false"
}, },
"AuthServer": { "AuthServer": {
"Authority": "http://10.164.113.31:60083/", "Authority": "http://dev.ccwin-in.com:60083/",
"RequireHttpsMetadata": "false", "RequireHttpsMetadata": "false",
"SwaggerClientId": "admin", "SwaggerClientId": "admin",
"SwaggerClientSecret": "1q2w3E*", "SwaggerClientSecret": "1q2w3E*",
@ -24,13 +24,13 @@
"RemoteServices": { "RemoteServices": {
"BaseData": { "BaseData": {
"BaseUrl": "http://10.164.113.31:60084/" "BaseUrl": "http://dev.ccwin-in.com:60084/"
}, },
"Store": { "Store": {
"BaseUrl": "http://10.164.113.31:60085/" "BaseUrl": "http://dev.ccwin-in.com:60085/"
}, },
"Label": { "Label": {
"BaseUrl": "http://10.164.113.31:60082/" "BaseUrl": "http://dev.ccwin-in.com:60082/"
} }
}, },

142
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Outgoing/AssembleIssueNoteConverter.cs

@ -0,0 +1,142 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
using Win_in.Sfs.Wms.DataExchange.Domain.Shared;
using Win_in.Sfs.Wms.DataExchange.WMS.PCK;
using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent.Outgoing;
public class AssembleIssueNoteConverter : IOutgoingConverter
{
private readonly string billtype = "4026";
private readonly IOutgoingFromWmsManager _outgoingFromWmsManager;
private readonly IOutgoingToExternalManager _outgoingToExternalManager;
private readonly IObjectMapper _objectMapper;
public AssembleIssueNoteConverter(
IOutgoingFromWmsManager outgoingFromWmsManager
, IOutgoingToExternalManager outgoingToExternalManager
, IObjectMapper objectMapper
)
{
_outgoingFromWmsManager = outgoingFromWmsManager;
_outgoingToExternalManager = outgoingToExternalManager;
_objectMapper = objectMapper;
}
public virtual async Task<List<OutgoingToExternal>> ConvertAsync()
{
var outgoingToExternalList = new List<OutgoingToExternal>();
//获取要同步得数据
var outgoingFromWmsList = await _outgoingFromWmsManager.GetToBeProcessedListAsync(EnumOutgoingDataType.AssembleIssue, EnumSystemType.ERP).ConfigureAwait(false);
foreach (var outgoingFromWms in outgoingFromWmsList)
{
string tyrpNumber = outgoingFromWms.TyrpNumber;
#region 主表
var wmsReceipt = JsonSerializer.Deserialize<AssembleIssueNoteDTO>(outgoingFromWms.DataContent);
var exchangeReceipt = _objectMapper.Map<AssembleIssueNoteDTO, AssembleIssueNoteExchangeDto>(wmsReceipt);
var putawayNote = BuildDataInterface(exchangeReceipt);
var outgoingToExternal = new OutgoingToExternal()
{
DataType = EnumOutgoingDataType.Issue.ToString(),
TableType = EnumExchangeTableType.MainTable,
DataAction = outgoingFromWms.DataAction,
SerialNumber = tyrpNumber,
SourceSystem = EnumSystemType.WMS.ToString(),
SourceDataId = wmsReceipt.Id.ToString(),
SourceDataGroupCode = wmsReceipt.Number,
SourceDataDetailCode = wmsReceipt.Number,
Writer = nameof(TyrpOutgoingBackgroundWorker),
DestinationSystem = EnumSystemType.ERP.ToString(),
DestinationDataId = "",
};
outgoingToExternal.SetEffectiveDate(outgoingFromWms.EffectiveDate);
outgoingToExternal.SourceDataContent = JsonSerializer.Serialize(exchangeReceipt);
outgoingToExternal.DestinationDataContent = JsonSerializer.Serialize(putawayNote);
outgoingToExternalList.Add(outgoingToExternal);
#endregion
var sumDetails = wmsReceipt.Details.GroupBy(r => new { r.ItemCode, r.HandledFromLocationErpCode, r.HandledToLocationErpCode }).Select(p => new AssembleIssueNoteDetailDTO { ItemCode = p.Key.ItemCode, HandledFromLocationErpCode = p.Key.HandledFromLocationErpCode, HandledToLocationErpCode = p.Key.HandledToLocationErpCode, HandledToQty = p.Sum(x => x.HandledToQty) }).ToList();
#region 明细
foreach (var detail in sumDetails)
{
var outgoingDetailToExternal = new OutgoingToExternal()
{
DataType = EnumOutgoingDataType.Issue.ToString(),
TableType = EnumExchangeTableType.DetailTable,
DataAction = outgoingFromWms.DataAction,
SerialNumber = tyrpNumber,
SourceSystem = EnumSystemType.WMS.ToString(),
SourceDataId = detail.Id.ToString(),
SourceDataGroupCode = wmsReceipt.Number,
SourceDataDetailCode = detail.ItemCode,
Writer = nameof(TyrpOutgoingBackgroundWorker),
DestinationSystem = EnumSystemType.ERP.ToString(),
DestinationDataId = "",
};
outgoingDetailToExternal.SetEffectiveDate(outgoingFromWms.EffectiveDate);
var exchangeReceiptDetail = _objectMapper.Map<AssembleIssueNoteDetailDTO, AssembleIssueNoteDetailExchangeDto>(detail);
outgoingDetailToExternal.SourceDataContent = JsonSerializer.Serialize(exchangeReceiptDetail);
var putawayNoteDetail = BuildDataInterfaceDetail(exchangeReceipt, exchangeReceiptDetail, putawayNote.scontrol_dt_w);
outgoingDetailToExternal.DestinationDataContent = JsonSerializer.Serialize(putawayNoteDetail);
outgoingToExternalList.Add(outgoingDetailToExternal);
}
#endregion
}
//插入到中间表OutgoingToExternal
await _outgoingToExternalManager.CreateManyAsync(outgoingToExternalList).ConfigureAwait(false);
//将outgoingFromWms数据归档
await _outgoingFromWmsManager.ArchiveManyAsync(outgoingFromWmsList).ConfigureAwait(false);
return outgoingToExternalList;
}
/// <summary>
/// 构建主表
/// </summary>
/// <param name="exchangeOrder"></param>
/// <returns></returns>
private Scontrol BuildDataInterface(AssembleIssueNoteExchangeDto exchangeOrder)
{
var ret = new Scontrol()
{
scontrol_nbr = exchangeOrder.Number,
scontrol_dt_w = DateTime.Now.ToString("yyyyMMdd HH:mm:ss"),
scontrol_stat = "Y",
scontrol_dt_k = "",
scontrol_type = billtype,
scontrol_id = 0,//明细中最大scmsend_id
};
return ret;
}
/// <summary>
/// 构建明细
/// </summary>
/// <param name="exchangeOrder"></param>
/// <param name="exchangeDetailOrder"></param>
/// <returns></returns>
private Scmsend BuildDataInterfaceDetail(AssembleIssueNoteExchangeDto exchangeOrder, AssembleIssueNoteDetailExchangeDto exchangeDetailOrder, string dt_w)
{
var ret = new Scmsend()
{
scmsend_type = billtype,
scmsend_dt_w = dt_w,
scmsend_nbr = exchangeOrder.Number,
scmsend_stat1 = "1",
scmsend_part = exchangeDetailOrder.ItemCode,
scmsend_delv_date = "",
scmsend_orderno = "",
scmsend_loc = exchangeDetailOrder.FromLocationErpCode,
//scmsend_date = exchangeOrder.ActiveDate.ToString("yyyyMMdd"),
scmsend_date = DateTime.Now.ToString("yyyyMMdd"),
scmsend_qty = exchangeDetailOrder.Qty,
scmsend_wipd_loc = exchangeDetailOrder.ToLocationErpCode,
scmsend_userid = "WMS"
};
return ret;
}
}

36
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsExtensions.cs

@ -171,10 +171,15 @@ public static class IncomingToWmsExtensions
public static async Task HandleProductReceiptsAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext) public static async Task HandleProductReceiptsAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext)
{ {
var productReceipt = JsonSerializer.Deserialize<ProductReceiptNoteEditInput>(incomingConverted.DataContent); //var productReceipt = JsonSerializer.Deserialize<ProductReceiptNoteEditInput>(incomingConverted.DataContent);
var productReceiptAppService = workerContext.ServiceProvider.GetRequiredService<IProductReceiptNoteAppService>(); //var productReceiptAppService = workerContext.ServiceProvider.GetRequiredService<IProductReceiptNoteAppService>();
await productReceiptAppService.CreateAsync(productReceipt).ConfigureAwait(false); //await productReceiptAppService.CreateAsync(productReceipt).ConfigureAwait(false);
var productReceipt = JsonSerializer.Deserialize<ProductReceiptNoteEditInput>(incomingConverted.DataContent);
var productReceiptAppService = workerContext.ServiceProvider.GetRequiredService<IProductReceiptNoteAppService>();
List<ProductReceiptNoteEditInput> list = new List<ProductReceiptNoteEditInput>();
list.Add(productReceipt);
await productReceiptAppService.CreateManyAsync(list).ConfigureAwait(false);
} }
public static async Task HandleMaterialRequestsAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext) public static async Task HandleMaterialRequestsAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext)
@ -183,7 +188,30 @@ public static class IncomingToWmsExtensions
var materialRequestAppService = workerContext.ServiceProvider.GetRequiredService<IMaterialRequestAppService>(); var materialRequestAppService = workerContext.ServiceProvider.GetRequiredService<IMaterialRequestAppService>();
await materialRequestAppService.CreateAndHandleByAPIAsync(materialRequest).ConfigureAwait(false); await materialRequestAppService.CreateAndHandleByAPIAsync(materialRequest).ConfigureAwait(false);
} }
public static async Task HandleTransferNoteAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext)
{
var transferNote = JsonSerializer.Deserialize<TransferNoteEditInput>(incomingConverted.DataContent);
var transferNoteAppService = workerContext.ServiceProvider.GetRequiredService<ITransferNoteAppService>();
await transferNoteAppService.CreateAsync(transferNote).ConfigureAwait(false);
}
public static async Task HandleMesNoteAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext)
{
var mesNote = JsonSerializer.Deserialize<MesNoteEditInput>(incomingConverted.DataContent);
var mesNoteAppService = workerContext.ServiceProvider.GetRequiredService<IMesNoteAppService>();
await mesNoteAppService.CreateAsync(mesNote).ConfigureAwait(false);
}
public static async Task HandleDeliveryRequestAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext)
{
var deliverRequest = JsonSerializer.Deserialize<DeliverRequestEditInput>(incomingConverted.DataContent);
var deliverRequestAppService = workerContext.ServiceProvider.GetRequiredService<IDeliverRequestAppService>();
await deliverRequestAppService.CreateAsync(deliverRequest).ConfigureAwait(false);
}
public static async Task HandleInjectionIssueRequestAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext)
{
var injectionIssueRequest = JsonSerializer.Deserialize<InjectionIssueRequestEditInput>(incomingConverted.DataContent);
var injectionIssueRequestAppService = workerContext.ServiceProvider.GetRequiredService<IInjectionIssueRequestAppService>();
await injectionIssueRequestAppService.CreateAsync(injectionIssueRequest).ConfigureAwait(false);
}
public static async Task HandleScrapsAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext) public static async Task HandleScrapsAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext)
{ {
var scrap = JsonSerializer.Deserialize<ScrapNoteEditInput>(incomingConverted.DataContent); var scrap = JsonSerializer.Deserialize<ScrapNoteEditInput>(incomingConverted.DataContent);

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

@ -68,7 +68,7 @@ public class IncomingToWmsWorker : AsyncPeriodicBackgroundWorkerBase
//Do the work //Do the work
var incomingToWmsList = await incomingToWmsManager.GetToBeProcessedListAsync().ConfigureAwait(false); var incomingToWmsList = await incomingToWmsManager.GetToBeProcessedListAsync().ConfigureAwait(false);
foreach (var incomingToWms in incomingToWmsList) foreach (var incomingToWms in incomingToWmsList.OrderBy(r=>r.CreationTime))
{ {
try try
{ {
@ -184,8 +184,20 @@ 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); // await SendBackFlush(workerContext, incomingToWms).ConfigureAwait(false);
break;
case EnumIncomingDataType.TransferNote:
await incomingToWms.HandleTransferNoteAsync(workerContext).ConfigureAwait(false);
break;
case EnumIncomingDataType.MesNote:
await incomingToWms.HandleMesNoteAsync(workerContext).ConfigureAwait(false);
break;
case EnumIncomingDataType.Delivery:
await incomingToWms.HandleDeliveryRequestAsync(workerContext).ConfigureAwait(false);
break;
case EnumIncomingDataType.CallMtl:
await incomingToWms.HandleInjectionIssueRequestAsync(workerContext).ConfigureAwait(false);
break; break;
case EnumIncomingDataType.None: case EnumIncomingDataType.None:
default: default:

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

@ -1,13 +1,13 @@
{ {
"ConnectionStrings": { "ConnectionStrings": {
"Default": "Server=10.164.113.32,1818\\SHDB;Database=Wms_DataExchange_Main_Dy_ShangHai;uid=ShWmsUser;pwd=Faty@Wms_20230413#SH;TrustServerCertificate=True", "Default": "Server=dev.ccwin-in.com,13319;Database=WMS_DongYang_Main_CC;uid=ccwin-in;pwd=Microsoft@2022;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=dev.ccwin-in.com,13319;Database=WMS_DongYang_DataExchange_CC;uid=ccwin-in;pwd=Microsoft@2022;TrustServerCertificate=True"
}, },
"AuthServer": { "AuthServer": {
"Authority": "http://10.164.113.31:60083/", "Authority": "http://dev.ccwin-in.com:60083/",
"RequireHttpsMetadata": "false", "RequireHttpsMetadata": "false",
"SwaggerClientId": "admin", "SwaggerClientId": "admin",
"SwaggerClientSecret": "1q2w3E*", "SwaggerClientSecret": "1q2w3E*",
@ -26,16 +26,16 @@
"RemoteServices": { "RemoteServices": {
"BaseData": { "BaseData": {
"BaseUrl": "http://10.164.113.31:60084/" "BaseUrl": "http://dev.ccwin-in.com:60084/"
}, },
"Store": { "Store": {
"BaseUrl": "http://10.164.113.31:60085/" "BaseUrl": "http://localhost:59095/"
}, },
"Label": { "Label": {
"BaseUrl": "http://10.164.113.31:60082/" "BaseUrl": "http://dev.ccwin-in.com:60082/"
}, },
"Auth": { "Auth": {
"BaseUrl": "http://10.164.113.31:60083/" "BaseUrl": "http://dev.ccwin-in.com:60083/"
} }
}, },
"DataExchangeOptions": { "DataExchangeOptions": {
@ -44,7 +44,7 @@
"PeriodSeconds": 10, "PeriodSeconds": 10,
"RetryTimes": 1, "RetryTimes": 1,
"BatchSize": 100, "BatchSize": 100,
"apiUrl": "http://10.164.113.31:60085/" "apiUrl": "http://dev.ccwin-in.com:60085/"
}, },
"OutgoingOptions": { "OutgoingOptions": {
"Active": false, "Active": false,

15
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/DeliverNote/DeliverNoteDetailExchangeDto.cs

@ -26,4 +26,19 @@ public class DeliverNoteDetailExchangeDto
/// </summary> /// </summary>
[Display(Name = "数量")] [Display(Name = "数量")]
public decimal Qty { get; set; } public decimal Qty { get; set; }
/// <summary>
/// Mes发货单号
/// </summary>
[Display(Name = "Mes发货单号")]
public string MesDeliveryNo { get; set; }
/// <summary>
/// Mes发货计划号
/// </summary>
[Display(Name = "Mes发货计划号")]
public string MesDeliveryPlan { get; set; }
/// <summary>
/// 底盘号
/// </summary>
[Display(Name = "底盘号")]
public string IdentityNo { get; set; }
} }

43
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/DeliverRequest/DeliverRequestDetailExchangeDto.cs

@ -0,0 +1,43 @@
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest;
public class DeliverRequestDetailExchangeDto
{
/// <summary>
/// 单据号
/// </summary>
[Display(Name = "单据号")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Number { get; set; }
/// <summary>
/// 物品代码
/// </summary>
[Display(Name = "物品代码")]
public string ItemCode { get; set; }
/// <summary>
/// 来源库区
/// </summary>
[Display(Name = "来源库区")]
public string AreaCode { get; set; }
/// <summary>
/// 数量
/// </summary>
[Display(Name = "数量")]
public decimal Qty { get; set; }
/// <summary>
/// Mes发货单号
/// </summary>
[Display(Name = "Mes发货单号")]
public string MesDeliveryNo { get; set; }
/// <summary>
/// Mes发货计划号
/// </summary>
[Display(Name = "Mes发货计划号")]
public string MesDeliveryPlan { get; set; }
/// <summary>
/// 底盘号
/// </summary>
[Display(Name = "底盘号")]
public string IdentityNo { get; set; }
}

43
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/DeliverRequest/DeliverRequestExchangeDto.cs

@ -0,0 +1,43 @@
using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest;
public class DeliverRequestExchangeDto
{
/// <summary>
/// 单据号
/// </summary>
public string Number { get; set; }
/// <summary>
/// 操作员
/// </summary>
public string Worker { get; set; }
/// <summary>
/// 生效日期
/// </summary>
public DateTime ActiveDate { get; set; } = DateTime.Now.Date;
/// <summary>
/// 发货时间
/// </summary>
public DateTime DeliverTime { get; set; } = DateTime.Now.Date;
/// <summary>
/// 发货类型
/// </summary>
public EnumDeliverRequestType DeliverRequestType { get; set; }
/// <summary>
/// 客户
/// </summary>
[Display(Name = "客户")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string CustomerCode { get; set; }
/// <summary>
/// 明细列表
/// </summary>
[Display(Name = "明细列表")]
public DeliverRequestDetailExchangeDto Detail { get; set; } = new();
}

34
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/InjectionIssueRequest/InjectionIssueRequestDetailExchangeDto.cs

@ -0,0 +1,34 @@
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.DataExchange.WMS.InjectionIssueRequest;
public class InjectionIssueRequestDetailExchangeDto
{
/// <summary>
/// 目标ERP储位
/// </summary>
[Display(Name = "目标储位")]
public string ToLocationCode { get; set; }
/// <summary>
/// 数量
/// </summary>
[Display(Name = "数量")]
public decimal Qty { get; set; }
/// <summary>
/// 需求箱数量
/// </summary>
[Display(Name = "需求箱数量")]
public decimal BoxQty { get; set; }
/// <summary>
/// 物品代码
/// </summary>
[Display(Name = "物品代码")]
public string ItemCode { get; set; }
/// <summary>
/// 推荐类型
/// </summary>
public EnumRecommendType RecommendType { get; set; }
}

36
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/InjectionIssueRequest/InjectionIssueRequestExchangeDto.cs

@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Wms.DataExchange.WMS.MesNote;
using Win_in.Sfs.Wms.DataExchange.WMS.PurchaseOrder;
namespace Win_in.Sfs.Wms.DataExchange.WMS.InjectionIssueRequest;
public class InjectionIssueRequestExchangeDto
{
/// <summary>
/// 叫料类型
/// </summary>
[Display(Name = "叫料类型")]
public EnumIssueRequestType IssueRequestType { get; set; }
/// <summary>
/// 操作员
/// </summary>
[Display(Name = "操作员")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Worker { get; set; }
/// <summary>
/// 生效日期
/// </summary>
[Display(Name = "生效日期")]
public DateTime ActiveDate { get; set; } = DateTime.Now.Date;
/// <summary>
/// 明细
/// </summary>
[Display(Name = "明细")]
public InjectionIssueRequestDetailExchangeDto Detail { get; set; } = new();
}

36
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/IssueNote/AssembleIssueNote/AssembleIssueNoteDetailExchangeDto.cs

@ -0,0 +1,36 @@
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Wms.DataExchange.WMS.PCK;
public class AssembleIssueNoteDetailExchangeDto
{
/// <summary>
/// 目标ERP库位
/// </summary>
[Display(Name = "目标ERP库位")]
public string ToLocationErpCode { get; set; }
public string FromPackingCode { get; set; }
/// <summary>
/// 来源ERP库位
/// </summary>
public string FromLocationErpCode { get; set; }
/// <summary>
/// 数量
/// </summary>
[Display(Name = "数量")]
public decimal Qty { get; set; }
/// <summary>
/// 物品代码
/// </summary>
[Display(Name = "物品代码")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
[Required(ErrorMessage = "{0}是必填项")]
public string ItemCode { get; set; }
}

29
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/IssueNote/AssembleIssueNote/AssembleIssueNoteExchangeDto.cs

@ -0,0 +1,29 @@
using System;
using System.ComponentModel.DataAnnotations;
namespace Win_in.Sfs.Wms.DataExchange.WMS.PCK;
public class AssembleIssueNoteExchangeDto
{
/// <summary>
/// 发料记录号
/// </summary>
[Display(Name = "发料记录号")]
public string Number { get; set; }
/// <summary>
/// 生效日期
/// </summary>
[Display(Name = "生效日期")]
public DateTime ActiveDate { get; set; } = DateTime.Now.Date;
/// <summary>
/// 操作员
/// </summary>
[Display(Name = "操作员")]
public string Worker { get; set; }
/// <summary>
/// 明细
/// </summary>
[Display(Name = "明细")]
public AssembleIssueNoteDetailExchangeDto Detail { get; set; } = new();
}

48
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/MesNote/MesNoteDetailExchangeDto.cs

@ -0,0 +1,48 @@
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.DataExchange.WMS.MesNote;
public class MesNoteDetailExchangeDto
{
/// <summary>
/// 上架单号
/// </summary>
[Display(Name = "移库单号")]
public string Number { get; set; }
/// <summary>
/// 物品代码
/// </summary>
[Display(Name = "物品代码")]
public string ItemCode { get; set; }
/// <summary>
/// 目标ERP库位
/// </summary>
[Display(Name = "目标ERP库位")]
public string ToLocationErpCode { get; set; }
/// <summary>
/// 来源ERP库位
/// </summary>
[Display(Name = "来源ERP库位")]
public string FromLocationErpCode { get; set; }
/// <summary>
/// 目标ERP库位
/// </summary>
[Display(Name = "来源库位状态")]
public EnumInventoryStatus FromStatus { get; set; }
/// <summary>
/// 来源ERP库位
/// </summary>
[Display(Name = "目标库位状态")]
public EnumInventoryStatus ToStatus { get; set; }
/// <summary>
/// 数量
/// </summary>
[Display(Name = "数量")]
public decimal Qty { get; set; }
}

47
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/MesNote/MesNoteExchangeDto.cs

@ -0,0 +1,47 @@
using System;
using System.ComponentModel.DataAnnotations;
namespace Win_in.Sfs.Wms.DataExchange.WMS.MesNote;
public class MesNoteExchangeDto
{
/// <summary>
/// 上架单号
/// </summary>
[Display(Name = "移库单号")]
public string Number { get; set; }
/// <summary>
/// MES请求单号
/// </summary>
[Display(Name = "MES请求单号")]
public string MesRequestNumber { get; set; }
/// <summary>
/// 生效日期
/// </summary>
[Display(Name = "生效日期")]
public DateTime ActiveDate { get; set; } = DateTime.Now.Date;
/// <summary>
/// 操作员
/// </summary>
[Display(Name = "操作员")]
public string Worker { get; set; }
/// <summary>
/// 调拨类型
/// </summary>
[Display(Name = "调拨类型")]
public string Type { get; set; }
/// <summary>
/// 备注
/// </summary>
[Display(Name = "备注")]
public string Remark { get; set; }
/// <summary>
/// 明细列表
/// </summary>
[Display(Name = "明细列表")]
public MesNoteDetailExchangeDto Detail { get; set; } = new();
}

13
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/TransferNote/TransferNoteDetailExchangeDto.cs

@ -32,4 +32,17 @@ public class TransferNoteDetailExchangeDto
/// </summary> /// </summary>
[Display(Name = "数量")] [Display(Name = "数量")]
public decimal Qty { get; set; } public decimal Qty { get; set; }
/// <summary>
/// 批次
/// </summary>
[Display(Name = "批次")]
public string Lot { get; set; } = "";
/// <summary>
/// 箱码
/// </summary>
[Display(Name = "箱码")]
public string PackingCode { get; set; } = "";
} }

10
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/TransferNote/TransferNoteExchangeDto.cs

@ -29,4 +29,14 @@ public class TransferNoteExchangeDto
[Display(Name = "调拨类型")] [Display(Name = "调拨类型")]
public string Type { get; set; } public string Type { get; set; }
/// <summary>
/// 备注
/// </summary>
[Display(Name = "备注")]
public string Remark { get; set; }
/// <summary>
/// 明细列表
/// </summary>
[Display(Name = "明细列表")]
public TransferNoteDetailExchangeDto Detail { get; set; } = new();
} }

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

@ -531,6 +531,21 @@
数量 数量
</summary> </summary>
</member> </member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.DeliverNote.DeliverNoteDetailExchangeDto.MesDeliveryNo">
<summary>
Mes发货单号
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.DeliverNote.DeliverNoteDetailExchangeDto.MesDeliveryPlan">
<summary>
Mes发货计划号
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.DeliverNote.DeliverNoteDetailExchangeDto.IdentityNo">
<summary>
底盘号
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.DeliverNote.DeliverNoteExchangeDto.Number"> <member name="P:Win_in.Sfs.Wms.DataExchange.WMS.DeliverNote.DeliverNoteExchangeDto.Number">
<summary> <summary>
单据号 单据号
@ -551,6 +566,76 @@
客户 客户
</summary> </summary>
</member> </member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest.DeliverRequestDetailExchangeDto.Number">
<summary>
单据号
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest.DeliverRequestDetailExchangeDto.ItemCode">
<summary>
物品代码
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest.DeliverRequestDetailExchangeDto.AreaCode">
<summary>
来源库区
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest.DeliverRequestDetailExchangeDto.Qty">
<summary>
数量
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest.DeliverRequestDetailExchangeDto.MesDeliveryNo">
<summary>
Mes发货单号
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest.DeliverRequestDetailExchangeDto.MesDeliveryPlan">
<summary>
Mes发货计划号
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest.DeliverRequestDetailExchangeDto.IdentityNo">
<summary>
底盘号
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest.DeliverRequestExchangeDto.Number">
<summary>
单据号
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest.DeliverRequestExchangeDto.Worker">
<summary>
操作员
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest.DeliverRequestExchangeDto.ActiveDate">
<summary>
生效日期
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest.DeliverRequestExchangeDto.DeliverTime">
<summary>
发货时间
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest.DeliverRequestExchangeDto.DeliverRequestType">
<summary>
发货类型
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest.DeliverRequestExchangeDto.CustomerCode">
<summary>
客户
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.DeliverRequest.DeliverRequestExchangeDto.Detail">
<summary>
明细列表
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.Deparment.DepartmentExchangerDto.Code"> <member name="P:Win_in.Sfs.Wms.DataExchange.WMS.Deparment.DepartmentExchangerDto.Code">
<summary> <summary>
代码 代码
@ -631,6 +716,51 @@
仓库代码 仓库代码
</summary> </summary>
</member> </member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.InjectionIssueRequest.InjectionIssueRequestDetailExchangeDto.ToLocationCode">
<summary>
目标ERP储位
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.InjectionIssueRequest.InjectionIssueRequestDetailExchangeDto.Qty">
<summary>
数量
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.InjectionIssueRequest.InjectionIssueRequestDetailExchangeDto.BoxQty">
<summary>
需求箱数量
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.InjectionIssueRequest.InjectionIssueRequestDetailExchangeDto.ItemCode">
<summary>
物品代码
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.InjectionIssueRequest.InjectionIssueRequestDetailExchangeDto.RecommendType">
<summary>
推荐类型
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.InjectionIssueRequest.InjectionIssueRequestExchangeDto.IssueRequestType">
<summary>
叫料类型
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.InjectionIssueRequest.InjectionIssueRequestExchangeDto.Worker">
<summary>
操作员
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.InjectionIssueRequest.InjectionIssueRequestExchangeDto.ActiveDate">
<summary>
生效日期
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.InjectionIssueRequest.InjectionIssueRequestExchangeDto.Detail">
<summary>
明细
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.InterfaceCalendar.InterfaceCalendarExchangeDto.Enabled"> <member name="P:Win_in.Sfs.Wms.DataExchange.WMS.InterfaceCalendar.InterfaceCalendarExchangeDto.Enabled">
<summary> <summary>
是否可用 是否可用
@ -641,6 +771,46 @@
最后修改时间 最后修改时间
</summary> </summary>
</member> </member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.PCK.AssembleIssueNoteDetailExchangeDto.ToLocationErpCode">
<summary>
目标ERP库位
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.PCK.AssembleIssueNoteDetailExchangeDto.FromLocationErpCode">
<summary>
来源ERP库位
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.PCK.AssembleIssueNoteDetailExchangeDto.Qty">
<summary>
数量
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.PCK.AssembleIssueNoteDetailExchangeDto.ItemCode">
<summary>
物品代码
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.PCK.AssembleIssueNoteExchangeDto.Number">
<summary>
发料记录号
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.PCK.AssembleIssueNoteExchangeDto.ActiveDate">
<summary>
生效日期
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.PCK.AssembleIssueNoteExchangeDto.Worker">
<summary>
操作员
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.PCK.AssembleIssueNoteExchangeDto.Detail">
<summary>
明细
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.PCK.IssueNoteDetailExchangeDto.ToLocationErpCode"> <member name="P:Win_in.Sfs.Wms.DataExchange.WMS.PCK.IssueNoteDetailExchangeDto.ToLocationErpCode">
<summary> <summary>
目标ERP库位 目标ERP库位
@ -771,6 +941,76 @@
明细列表 明细列表
</summary> </summary>
</member> </member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.MesNote.MesNoteDetailExchangeDto.Number">
<summary>
上架单号
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.MesNote.MesNoteDetailExchangeDto.ItemCode">
<summary>
物品代码
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.MesNote.MesNoteDetailExchangeDto.ToLocationErpCode">
<summary>
目标ERP库位
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.MesNote.MesNoteDetailExchangeDto.FromLocationErpCode">
<summary>
来源ERP库位
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.MesNote.MesNoteDetailExchangeDto.FromStatus">
<summary>
目标ERP库位
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.MesNote.MesNoteDetailExchangeDto.ToStatus">
<summary>
来源ERP库位
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.MesNote.MesNoteDetailExchangeDto.Qty">
<summary>
数量
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.MesNote.MesNoteExchangeDto.Number">
<summary>
上架单号
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.MesNote.MesNoteExchangeDto.MesRequestNumber">
<summary>
MES请求单号
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.MesNote.MesNoteExchangeDto.ActiveDate">
<summary>
生效日期
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.MesNote.MesNoteExchangeDto.Worker">
<summary>
操作员
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.MesNote.MesNoteExchangeDto.Type">
<summary>
调拨类型
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.MesNote.MesNoteExchangeDto.Remark">
<summary>
备注
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.MesNote.MesNoteExchangeDto.Detail">
<summary>
明细列表
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ProductionReturnNote.ProductionReturnNoteDetailExchangeDto.Number"> <member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ProductionReturnNote.ProductionReturnNoteDetailExchangeDto.Number">
<summary> <summary>
上架单号 上架单号
@ -1731,6 +1971,16 @@
数量 数量
</summary> </summary>
</member> </member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.TransferNote.TransferNoteDetailExchangeDto.Lot">
<summary>
批次
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.TransferNote.TransferNoteDetailExchangeDto.PackingCode">
<summary>
箱码
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.TransferNote.TransferNoteExchangeDto.Number"> <member name="P:Win_in.Sfs.Wms.DataExchange.WMS.TransferNote.TransferNoteExchangeDto.Number">
<summary> <summary>
上架单号 上架单号
@ -1751,6 +2001,16 @@
调拨类型 调拨类型
</summary> </summary>
</member> </member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.TransferNote.TransferNoteExchangeDto.Remark">
<summary>
备注
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.TransferNote.TransferNoteExchangeDto.Detail">
<summary>
明细列表
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.UnplannedIssueNote.UnplannedIssueNoteDetailExchangeDto.Number"> <member name="P:Win_in.Sfs.Wms.DataExchange.WMS.UnplannedIssueNote.UnplannedIssueNoteDetailExchangeDto.Number">
<summary> <summary>
单据号 单据号

16
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain.Shared/Enums/EnumIncomingDataType.cs

@ -114,4 +114,20 @@ public enum EnumIncomingDataType
/// Erp库位零件(开账) /// Erp库位零件(开账)
/// </summary> /// </summary>
ErpLocationItem = 27, ErpLocationItem = 27,
/// <summary>
/// 储位调拨
/// </summary>
TransferNote=28,
/// <summary>
/// 储位调拨
/// </summary>
MesNote = 29,
/// <summary>
/// 发货单
/// </summary>
Delivery=30,
/// <summary>
/// 自动叫料
/// </summary>
CallMtl=31,
} }

15
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain.Shared/Enums/EnumOutgoingDataType.cs

@ -32,7 +32,20 @@ public enum EnumOutgoingDataType
ProductRecycle = 24, ProductRecycle = 24,
Item_Transform = 25,//线边仓调整单 Item_Transform = 25,//线边仓调整单
WIPAdjust = 26,//回收料调整单 WIPAdjust = 26,//回收料调整单
SemiPutaway=27//半成品上架 SemiPutaway=27,//半成品上架
/// <summary>
/// 注塑发料
/// </summary>
InjectionIssue = 30,
/// <summary>
/// 涂装发料
/// </summary>
CoatingIssue = 31,
/// <summary>
/// 装配发料
/// </summary>
AssembleIssue = 32,
} }
public enum EnumExchangeTableType public enum EnumExchangeTableType
{ {

13
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedIssueJobController.cs

@ -10,6 +10,7 @@ using Win_in.Sfs.Shared.Domain.Shared;
using System.Text.Json; using System.Text.Json;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Volo.Abp; using Volo.Abp;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Pda.Controllers.Jobs; namespace Win_in.Sfs.Wms.Pda.Controllers.Jobs;
@ -51,14 +52,15 @@ public class UnplannedIssueJobController : AbpController
/// <param name="isToday"></param> /// <param name="isToday"></param>
/// <returns></returns> /// <returns></returns>
[HttpGet("list")] [HttpGet("list")]
public virtual async Task<PagedResultDto<UnplannedIssueJobDTO>> GetListAsync(int pageSize, int pageIndex, bool isCreationTimeSorting, bool isToday) public virtual async Task<PagedResultDto<UnplannedIssueJobDTO>> GetListAsync(int pageSize, int pageIndex, bool isCreationTimeSorting, bool isToday, EnumUnplannedIssueType enumUnplannedIssueType)
{ {
var wlgCodes = await _userWorkGroupAppService.GetCodsOfCurrentUserAsync().ConfigureAwait(false); //var wlgCodes = await _userWorkGroupAppService.GetCodsOfCurrentUserAsync().ConfigureAwait(false);
var jsonWlgCodes = JsonSerializer.Serialize(wlgCodes); //var jsonWlgCodes = JsonSerializer.Serialize(wlgCodes);
var status = new List<int>() { (int)EnumJobStatus.Open, (int)EnumJobStatus.Doing }; var status = new List<int>() { (int)EnumJobStatus.Open, (int)EnumJobStatus.Doing };
var jsonStatus = JsonSerializer.Serialize(status); var jsonStatus = JsonSerializer.Serialize(status);
var issueType = new List<int>() { (int)enumUnplannedIssueType };
var jsonIssueType = JsonSerializer.Serialize(issueType);
var request = new SfsJobRequestInputBase var request = new SfsJobRequestInputBase
{ {
MaxResultCount = pageSize, MaxResultCount = pageSize,
@ -68,7 +70,7 @@ public class UnplannedIssueJobController : AbpController
{ {
Filters = new List<Filter> Filters = new List<Filter>
{ {
// new(nameof(UnplannedIssueJobDTO.WorkGroupCode),jsonWlgCodes,"In"), new(nameof(UnplannedIssueJobDTO.UnplannedIssueType),jsonIssueType,"In"),
new(nameof(UnplannedIssueJobDTO.JobStatus),jsonStatus,"In") new(nameof(UnplannedIssueJobDTO.JobStatus),jsonStatus,"In")
} }
} }
@ -81,7 +83,6 @@ public class UnplannedIssueJobController : AbpController
{ {
request.Sorting = $"{nameof(UnplannedIssueJobDTO.CreationTime)} ASC"; request.Sorting = $"{nameof(UnplannedIssueJobDTO.CreationTime)} ASC";
} }
var list = await _unplannedIssueJobAppService.GetPagedListByFilterAsync(request, true).ConfigureAwait(false); var list = await _unplannedIssueJobAppService.GetPagedListByFilterAsync(request, true).ConfigureAwait(false);
return list; return list;
} }

12
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedReceiptJobController.cs

@ -10,6 +10,7 @@ using Win_in.Sfs.Shared.Domain.Shared;
using System.Text.Json; using System.Text.Json;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Volo.Abp; using Volo.Abp;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Pda.Controllers.Jobs; namespace Win_in.Sfs.Wms.Pda.Controllers.Jobs;
@ -50,14 +51,15 @@ public class UnplannedReceiptJobController : AbpController
/// <param name="isToday"></param> /// <param name="isToday"></param>
/// <returns></returns> /// <returns></returns>
[HttpGet("list")] [HttpGet("list")]
public virtual async Task<PagedResultDto<UnplannedReceiptJobDTO>> GetListAsync(int pageSize, int pageIndex, bool isCreationTimeSorting, bool isToday) public virtual async Task<PagedResultDto<UnplannedReceiptJobDTO>> GetListAsync(int pageSize, int pageIndex, bool isCreationTimeSorting, bool isToday, EnumUnplannedReceiptType enumUnplannedReceiptType)
{ {
var wlgCodes = await _userWorkGroupAppService.GetCodsOfCurrentUserAsync().ConfigureAwait(false); //var wlgCodes = await _userWorkGroupAppService.GetCodsOfCurrentUserAsync().ConfigureAwait(false);
var jsonWlgCodes = JsonSerializer.Serialize(wlgCodes); //var jsonWlgCodes = JsonSerializer.Serialize(wlgCodes);
var status = new List<int>() { (int)EnumJobStatus.Open, (int)EnumJobStatus.Doing }; var status = new List<int>() { (int)EnumJobStatus.Open, (int)EnumJobStatus.Doing };
var receiptType = new List<int>() { (int)enumUnplannedReceiptType };
var jsonStatus = JsonSerializer.Serialize(status); var jsonStatus = JsonSerializer.Serialize(status);
var jsonreceiptType = JsonSerializer.Serialize(receiptType);
var request = new SfsJobRequestInputBase var request = new SfsJobRequestInputBase
{ {
MaxResultCount = pageSize, MaxResultCount = pageSize,
@ -67,7 +69,7 @@ public class UnplannedReceiptJobController : AbpController
{ {
Filters = new List<Filter> Filters = new List<Filter>
{ {
// new(nameof(UnplannedReceiptJobDTO.WorkGroupCode),jsonWlgCodes,"In"), new(nameof(UnplannedReceiptJobDTO.UnplannedReceiptType),jsonreceiptType,"In"),
new(nameof(UnplannedReceiptJobDTO.JobStatus),jsonStatus,"In") new(nameof(UnplannedReceiptJobDTO.JobStatus),jsonStatus,"In")
} }
} }

20
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ProductReceiptNoteController.cs

@ -6,7 +6,7 @@ using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.Pda.Controllers.Stores; namespace Win_in.Sfs.Wms.Pda.Controllers.Stores;
/// <summary> /// <summary>
/// ///缴库
/// </summary> /// </summary>
[ApiController] [ApiController]
[Route($"{PdaHostConst.ROOT_ROUTE}store/product-receipt")] [Route($"{PdaHostConst.ROOT_ROUTE}store/product-receipt")]
@ -14,14 +14,16 @@ namespace Win_in.Sfs.Wms.Pda.Controllers.Stores;
public class ProductReceiptNoteController : AbpController public class ProductReceiptNoteController : AbpController
{ {
private readonly IProductReceiptNoteAppService _productReceiptNoteAppService; private readonly IProductReceiptNoteAppService _productReceiptNoteAppService;
private readonly IProductReceiptNoteDetailAppService _productReceiptNoteDetailAppService;
/// <summary> /// <summary>
/// /// 缴库
/// </summary> /// </summary>
/// <param name="productReceiptNoteAppService"></param> /// <param name="productReceiptNoteAppService"></param>
public ProductReceiptNoteController(IProductReceiptNoteAppService productReceiptNoteAppService) /// <param name="productReceiptNoteDetailAppService"></param>
public ProductReceiptNoteController(IProductReceiptNoteAppService productReceiptNoteAppService, IProductReceiptNoteDetailAppService productReceiptNoteDetailAppService)
{ {
_productReceiptNoteAppService = productReceiptNoteAppService; _productReceiptNoteAppService = productReceiptNoteAppService;
_productReceiptNoteDetailAppService = productReceiptNoteDetailAppService;
} }
/// <summary> /// <summary>
@ -34,5 +36,15 @@ public class ProductReceiptNoteController : AbpController
{ {
await _productReceiptNoteAppService.CreateAsync(input).ConfigureAwait(false); await _productReceiptNoteAppService.CreateAsync(input).ConfigureAwait(false);
} }
/// <summary>
/// 单件码获取方法
/// </summary>
/// <param name="mesBarCode"></param>
/// <returns></returns>
[HttpPost("get-itemcode-by-mesbarcode")]
public virtual async Task<ProductReceiptNoteDetailDTO> GetItemCodeByMesBarCode(string mesBarCode)
{
return await _productReceiptNoteDetailAppService.GetItemCodeByMesBarCode(mesBarCode).ConfigureAwait(false);
}
} }

7
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/CustomerItems/DTOs/CustomerItemDTO.cs

@ -61,4 +61,11 @@ public class CustomerItemDTO : SfsBaseDataDTOBase
[Display(Name = "结束时间")] [Display(Name = "结束时间")]
public DateTime? EndTime { get; set; } public DateTime? EndTime { get; set; }
/// <summary>
/// 客户零件库位
/// </summary>
[Display(Name = "客户零件库位")]
public string LocationCode { get; set; }
} }

1
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/CustomerItems/ICustomerItemAppService.cs

@ -10,5 +10,6 @@ public interface ICustomerItemAppService
, ISfsUpsertAppService<CustomerItemEditInput> , ISfsUpsertAppService<CustomerItemEditInput>
{ {
Task<string> GetFirstLocationCodeByItemCode(string itemCode);
Task<List<CustomerItem>> GetListByPartsAsync(List<string> inputs); Task<List<CustomerItem>> GetListByPartsAsync(List<string> inputs);
} }

7
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/CustomerItems/Inputs/CustomerItemEditInput.cs

@ -45,6 +45,13 @@ public class CustomerItemEditInput : SfsBaseDataCreateOrUpdateInputBase
/// </summary> /// </summary>
[Display(Name = "结束时间")] [Display(Name = "结束时间")]
public DateTime? EndTime { get; set; } public DateTime? EndTime { get; set; }
/// <summary>
/// 客户零件库位
/// </summary>
[Display(Name = "客户零件库位")]
public string LocationCode { get; set; }
#endregion #endregion
#region Create #region Create

10
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/CustomerItems/Inputs/CustomerItemImportInput.cs

@ -56,6 +56,14 @@ public class CustomerItemImportInput : SfsBaseDataImportInputBase
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Version { get; set; } public string Version { get; set; }
/// <summary>
/// 客户零件库位
/// </summary>
[Display(Name = "客户零件库位")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string LocationCode { get; set; }
/// <summary> /// <summary>
/// 开始时间 /// 开始时间
/// </summary> /// </summary>
@ -80,4 +88,6 @@ public class CustomerItemImportInput : SfsBaseDataImportInputBase
[Display(Name = "备注")] [Display(Name = "备注")]
[StringLength(SfsEfCorePropertyConst.RemarkLength, ErrorMessage = "{0}最多输入{1}个字符")] [StringLength(SfsEfCorePropertyConst.RemarkLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Remark { get; set; } public string Remark { get; set; }
} }

9
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Bases/SfsBaseDataAppServiceBase.cs

@ -178,7 +178,14 @@ public abstract class SfsBaseDataAppServiceBase<TEntity, TEntityDto, TRequestInp
validationRresult.Add(new ValidationResult($"默认库位代码{defaultLocationCode}不存在", new string[] { "默认库位代码" })); validationRresult.Add(new ValidationResult($"默认库位代码{defaultLocationCode}不存在", new string[] { "默认库位代码" }));
} }
} }
protected async Task CheckLocationDefaultLocationCodeByTypeAsync(string defaultLocationCode, EnumLocationType type, List<ValidationResult> validationRresult)
{
var item = await LocationAppService.GetByCodeAsync(defaultLocationCode).ConfigureAwait(false);
if (item == null&& item.Type != type)
{
validationRresult.Add(new ValidationResult($"库位代码{defaultLocationCode}库位类型{type.ToString()}不存在", new string[] { "默认库位代码" }));
}
}
protected async Task CheckLocationGroupCodeAsync(string locationGroupCode, List<ValidationResult> validationRresult) protected async Task CheckLocationGroupCodeAsync(string locationGroupCode, List<ValidationResult> validationRresult)
{ {
var item = await LocationGroupAppService.GetByCodeAsync(locationGroupCode).ConfigureAwait(false); var item = await LocationGroupAppService.GetByCodeAsync(locationGroupCode).ConfigureAwait(false);

17
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/CustomerItems/CustomerItemAppService.cs

@ -10,6 +10,8 @@ using Volo.Abp.Caching;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Basedata.Domain; using Win_in.Sfs.Basedata.Domain;
using Win_in.Sfs.Basedata.Domain.Shared; using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.Basedata.tests;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application; namespace Win_in.Sfs.Basedata.Application;
@ -49,6 +51,10 @@ public class CustomerItemAppService : SfsBaseDataAppServiceBase<CustomerItem, Cu
{ {
await base.CheckItemBasicItemCodeAsync(importInput.ItemCode, validationRresult).ConfigureAwait(false); await base.CheckItemBasicItemCodeAsync(importInput.ItemCode, validationRresult).ConfigureAwait(false);
await base.CheckCustomerCodeAsync(importInput.CustomerCode, validationRresult).ConfigureAwait(false); await base.CheckCustomerCodeAsync(importInput.CustomerCode, validationRresult).ConfigureAwait(false);
if (string.IsNullOrEmpty(importInput.LocationCode))
{
await base.CheckLocationDefaultLocationCodeByTypeAsync(importInput.LocationCode, EnumLocationType.CUST, validationRresult).ConfigureAwait(false);
}
} }
[HttpPost("get-part-list")] [HttpPost("get-part-list")]
public virtual async Task<List<CustomerItem>> GetListByPartsAsync(List<string> inputs) public virtual async Task<List<CustomerItem>> GetListByPartsAsync(List<string> inputs)
@ -56,6 +62,17 @@ public class CustomerItemAppService : SfsBaseDataAppServiceBase<CustomerItem, Cu
return await _repository.WithDetails().Where(p => inputs.Contains(p.ItemCode)).ToListAsync().ConfigureAwait(false); return await _repository.WithDetails().Where(p => inputs.Contains(p.ItemCode)).ToListAsync().ConfigureAwait(false);
} }
[HttpPost("get-first-location-code-by-item-code")]
public virtual async Task<string> GetFirstLocationCodeByItemCode(string itemCode)
{
string code = "";
var customerItems = await _repository.GetListAsync(p => p.ItemCode == itemCode).ConfigureAwait(false);
if (customerItems.Count > 0)
{
code = customerItems.First(r=>!string.IsNullOrEmpty(r.LocationCode)).LocationCode;
}
return code;
}
} }

92
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/test/TestAppService.cs

@ -36,36 +36,92 @@ public class TestService:ApplicationService
_options = options; _options = options;
} }
/// <summary> ///// <summary>
/// 生命周期操作 ///// 生命周期操作
/// </summary> ///// </summary>
[HttpPost("GetMacStatic")] //[HttpPost("GetMacStatic")]
public async Task<int> GetMacStatic() //public async Task<int> GetMacStatic()
//{
// return 1;
//}
//[HttpPost("GetCargoStatic")]
///// <summary>
///// 异步开始生命周期操作不能堵塞
///// </summary>
//public async Task<List<ResponCargoItem>> GetCargoStatic(string p_AreaID)
//{
// List<ResponCargoItem> result = new List<ResponCargoItem>();
// result.Add(new ResponCargoItem() { AreaID = "1", CargoID = "PTXB1", PartCode = "TMDLYA0A071AB", Flag = 0 });
// result.Add(new ResponCargoItem() { AreaID = "1", CargoID = "PTXB2", PartCode = "TMDLYA0A061AB", Flag = 0 });
// result.Add(new ResponCargoItem() { AreaID = "2", CargoID = "ZSXB2", PartCode = "TMDLYD0ABM5A", Flag = 0 });
// result = result.Where(p => p.AreaID == p_AreaID).ToList();
// return result;
//}
[HttpPost("SyncCoatingJobStereo")]
public virtual async Task<ReusltObject> SyncCoatingJobStereoAsync(CoatingIssueJobToRestoDTO input)
{ {
return 1;
ReusltObject reuslt=new ReusltObject();
reuslt.Code = "0";
reuslt.Message = "操作成功";
reuslt.OperateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
return reuslt;
} }
[HttpPost("GetCargoStatic")]
/// <summary>
/// 异步开始生命周期操作不能堵塞
/// </summary>
public async Task<List<ResponCargoItem>> GetCargoStatic(string p_AreaID)
{
List<ResponCargoItem> result = new List<ResponCargoItem>();
result.Add(new ResponCargoItem() { AreaID = "1", CargoID = "PTXB1", PartCode = "TMDLYA0A071AB", Flag = 0 });
result.Add(new ResponCargoItem() { AreaID = "1", CargoID = "PTXB2", PartCode = "TMDLYA0A061AB", Flag = 0 });
result.Add(new ResponCargoItem() { AreaID = "2", CargoID = "ZSXB2", PartCode = "TMDLYD0ABM5A", Flag = 0 });
result = result.Where(p => p.AreaID == p_AreaID).ToList();
return result;
} }
/// <summary>
/// 发给立体库主表
/// </summary>
public class CoatingIssueJobToRestoDetailDTO
{
public string WorkNo { set; get; }
public string TaskNo { set; get; }
public string NeedSite { set; get; }
public string ProductNo { set; get; }
public decimal Count { set; get; }
}
/// <summary>
/// 发给立体库子表
/// </summary>
public class CoatingIssueJobToRestoDTO
{
public Guid UUID { set; get; }
public string OperatorName { set; get; }
public List<CoatingIssueJobToRestoDetailDTO> Details { set; get; }
}
/// <summary>
/// 返回结果
/// </summary>
public class ReusltObject
{
public string Code { set; get; }
public string Message { set; get; }
public string OperateTime { set; get; }
} }

6
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/CustomerItems/CustomerItem.cs

@ -56,6 +56,12 @@ public class CustomerItem : SfsBaseDataAggregateRootBase, IHasTimeRange
/// 结束时间 /// 结束时间
/// </summary> /// </summary>
public DateTime? EndTime { get; set; } public DateTime? EndTime { get; set; }
/// <summary>
/// 客户零件库位
/// </summary>
public string LocationCode { get; set; }
} }
///// <summary> ///// <summary>
///// 客户零件 ///// 客户零件

2
be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/CustomerItems/CustomerItemDbContextModelCreatingExtensions.cs

@ -25,7 +25,7 @@ public static class CustomerItemDbContextModelCreatingExtensions
b.Property(q => q.ItemCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.ItemCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.CustomerItemCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.CustomerItemCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.Version).HasMaxLength(SfsPropertyConst.DescLength); b.Property(q => q.Version).HasMaxLength(SfsPropertyConst.DescLength);
b.Property(q => q.LocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
//Relations //Relations
//None //None

108
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/DTOs/CoatingIssueJobDTO.cs

@ -1,3 +1,4 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store; using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
@ -38,3 +39,110 @@ public class CoatingIssueJobDTO : SfsJobDTOBase<CoatingIssueJobDetailDTO>
public bool UseOnTheWayLocation { get; set; } public bool UseOnTheWayLocation { get; set; }
} }
/// <summary>
/// 喷涂主表
/// </summary>
public class CoatingIssueRequestFromRestoDTO
{
public string RequestNumber { set; get; }
public List<CoatingIssueJobFromRestoDTO> Jobs { set; get; }
}
/// <summary>
/// 立体库发给WMS明细
/// </summary>
public class CoatingIssueJobFromRestoDetailDTO
{
[Display(Name = "零件编号")]
public string ItemCode { set; get; }
[Display(Name = "目标库位")]
public string ToLocationCode { set; get; }
[Display(Name = "来源库位")]
public string FromLocationCode { set; get; }
[Display(Name = "数量")]
public decimal Qty { set; get; }
}
/// <summary>
/// 立体库发给立体库任务单号
/// </summary>
public class CoatingIssueJobFromRestoDTO
{
[Display(Name = "任务单号")]
public string JobNumber { set; get; }
[Display(Name = "明细")]
public List<CoatingIssueJobFromRestoDetailDTO> Details { set; get; }
}
/// <summary>
/// 发给立体库主表
/// </summary>
/// <summary>
/// 发给立体库子表
/// </summary>
[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
public partial class CoatingIssueJobToRestoDTO
{
[System.Text.Json.Serialization.JsonPropertyName("uuid")]
public System.Guid Uuid { get; set; }
[System.Text.Json.Serialization.JsonPropertyName("operatorName")]
public string OperatorName { get; set; }
[System.Text.Json.Serialization.JsonPropertyName("details")]
public System.Collections.Generic.ICollection<CoatingIssueJobToRestoDetailDTO> Details { get; set; }
}
/// <summary>
/// 发给立体库主表
/// </summary>
[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
public partial class CoatingIssueJobToRestoDetailDTO
{
[System.Text.Json.Serialization.JsonPropertyName("workNo")]
public string WorkNo { get; set; }
[System.Text.Json.Serialization.JsonPropertyName("taskNo")]
public string TaskNo { get; set; }
[System.Text.Json.Serialization.JsonPropertyName("needSite")]
public string NeedSite { get; set; }
[System.Text.Json.Serialization.JsonPropertyName("productNo")]
public string ProductNo { get; set; }
[System.Text.Json.Serialization.JsonPropertyName("count")]
public decimal Count { get; set; }
}
/// <summary>
/// 返回结果
/// </summary>
[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
public partial class ReusltObject
{
[System.Text.Json.Serialization.JsonPropertyName("code")]
public string Code { get; set; }
[System.Text.Json.Serialization.JsonPropertyName("message")]
public string Message { get; set; }
[System.Text.Json.Serialization.JsonPropertyName("operateTime")]
public string OperateTime { get; set; }
}

15
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/DeliverNotes/DTOs/DeliverNoteDetailDTO.cs

@ -10,4 +10,19 @@ public class DeliverNoteDetailDTO : SfsStoreRecommendFromDetailWithFromToDTOBase
/// </summary> /// </summary>
[Display(Name = "扩展属性")] [Display(Name = "扩展属性")]
public ExtraPropertyDictionary ExtraProperties { get; set; } = new ExtraPropertyDictionary(); public ExtraPropertyDictionary ExtraProperties { get; set; } = new ExtraPropertyDictionary();
/// <summary>
/// Mes发货单号
/// </summary>
[Display(Name = "Mes发货单号")]
public string MesDeliveryNo { get; set; }
/// <summary>
/// Mes发货计划号
/// </summary>
[Display(Name = "Mes发货计划号")]
public string MesDeliveryPlan { get; set; }
/// <summary>
/// 底盘号
/// </summary>
[Display(Name = "底盘号")]
public string IdentityNo { get; set; }
} }

15
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/DeliverNotes/Inputs/DeliverNoteDetailInput.cs

@ -10,4 +10,19 @@ public class DeliverNoteDetailInput : SfsStoreRecommendFromDetailWithFromToInput
/// </summary> /// </summary>
[Display(Name = "扩展属性")] [Display(Name = "扩展属性")]
public ExtraPropertyDictionary ExtraProperties { get; set; } = new ExtraPropertyDictionary(); public ExtraPropertyDictionary ExtraProperties { get; set; } = new ExtraPropertyDictionary();
/// <summary>
/// Mes发货单号
/// </summary>
[Display(Name = "Mes发货单号")]
public string MesDeliveryNo { get; set; }
/// <summary>
/// Mes发货计划号
/// </summary>
[Display(Name = "Mes发货计划号")]
public string MesDeliveryPlan { get; set; }
/// <summary>
/// 底盘号
/// </summary>
[Display(Name = "底盘号")]
public string IdentityNo { get; set; }
} }

9
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/ProductReceiptNotes/IProductReceiptNoteDetailAppService.cs

@ -0,0 +1,9 @@
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public interface IProductReceiptNoteDetailAppService : ISfsStoreAppServiceBase<ProductReceiptNoteDetailDTO, SfsStoreRequestInputBase, ProductReceiptNoteDetailInput>
{
Task<ProductReceiptNoteDetailDTO> GetItemCodeByMesBarCode(string mesBarCode);
}

25
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/ProductReceiptNotes/ProductReceiptNoteDetailPermissions.cs

@ -0,0 +1,25 @@
using Volo.Abp.Authorization.Permissions;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public static class ProductReceiptNoteDetailPermissions
{
public const string Default = StorePermissions.GroupName + "." + nameof(ProductReceiptNoteDetail);
public const string Create = Default + "." + StorePermissions.CreateStr;
public const string Update = Default + "." + StorePermissions.UpdateStr;
public const string Delete = Default + "." + StorePermissions.DeleteStr;
//线边完工收货记录
public const string WipProductReceiptNoteDetail = StorePermissions.GroupName + "." + nameof(WipProductReceiptNoteDetail);
public static void AddProductReceiptNoteDetailPermission(this PermissionGroupDefinition permissionGroup)
{
var productReceiptNotePermission = permissionGroup.AddPermission(Default, StorePermissionDefinitionProvider.L(nameof(ProductReceiptNoteDetail)));
productReceiptNotePermission.AddChild(Create, StorePermissionDefinitionProvider.L(StorePermissions.CreateStr));
productReceiptNotePermission.AddChild(Update, StorePermissionDefinitionProvider.L(StorePermissions.UpdateStr));
productReceiptNotePermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr));
permissionGroup.AddPermission(WipProductReceiptNoteDetail, StorePermissionDefinitionProvider.L(nameof(WipProductReceiptNoteDetail)));
}
}

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Permissions/StorePermissionDefinitionProvider.cs

@ -17,6 +17,7 @@ public class StorePermissionDefinitionProvider : PermissionDefinitionProvider
storeGroup.AddProductionPlanPermission(); storeGroup.AddProductionPlanPermission();
storeGroup.AddPreparationPlanPermission(); storeGroup.AddPreparationPlanPermission();
storeGroup.AddProductReceiptNotePermission(); storeGroup.AddProductReceiptNotePermission();
storeGroup.AddProductReceiptNoteDetailPermission();
storeGroup.AddOfflineSettlementNotePermission(); storeGroup.AddOfflineSettlementNotePermission();
storeGroup.AddBackFlushNotePermission(); storeGroup.AddBackFlushNotePermission();
storeGroup.AddWorkOrderPermission(); storeGroup.AddWorkOrderPermission();

16
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/DeliverRequests/DTOs/DeliverRequestDetailDTO.cs

@ -17,4 +17,20 @@ public class DeliverRequestDetailDTO : SfsStoreDetailWithQtyDTOBase, IHasExtraPr
[Display(Name = "扩展属性")] [Display(Name = "扩展属性")]
public ExtraPropertyDictionary ExtraProperties { set; get; } = new ExtraPropertyDictionary(); public ExtraPropertyDictionary ExtraProperties { set; get; } = new ExtraPropertyDictionary();
/// <summary>
/// Mes发货单号
/// </summary>
[Display(Name = "Mes发货单号")]
public string MesDeliveryNo { get; set; }
/// <summary>
/// Mes发货计划号
/// </summary>
[Display(Name = "Mes发货计划号")]
public string MesDeliveryPlan { get; set; }
/// <summary>
/// 底盘号
/// </summary>
[Display(Name = "底盘号")]
public string IdentityNo { get; set; }
} }

15
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/DeliverRequests/Inputs/DeliverRequestDetailInput.cs

@ -16,4 +16,19 @@ public class DeliverRequestDetailInput : SfsStoreDetailWithQtyInputBase, IHasExt
/// </summary> /// </summary>
[Display(Name = "扩展属性")] [Display(Name = "扩展属性")]
public ExtraPropertyDictionary ExtraProperties { set; get; } public ExtraPropertyDictionary ExtraProperties { set; get; }
/// <summary>
/// Mes发货单号
/// </summary>
[Display(Name = "Mes发货单号")]
public string MesDeliveryNo { get; set; }
/// <summary>
/// Mes发货计划号
/// </summary>
[Display(Name = "Mes发货计划号")]
public string MesDeliveryPlan { get; set; }
/// <summary>
/// 底盘号
/// </summary>
[Display(Name = "底盘号")]
public string IdentityNo { get; set; }
} }

16
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/DeliverRequests/Inputs/DeliverRequestImportInput.cs

@ -40,6 +40,22 @@ public class DeliverRequestImportInput : SfsStoreImportInputBase
[Display(Name = "发货库区")] [Display(Name = "发货库区")]
[Required] [Required]
public string AreaCode { get; set; } public string AreaCode { get; set; }
/// <summary>
/// Mes发货单号
/// </summary>
[Display(Name = "Mes发货单号")]
public string MesDeliveryNo { get; set; }
/// <summary>
/// Mes发货计划号
/// </summary>
[Display(Name = "Mes发货计划号")]
public string MesDeliveryPlan { get; set; }
/// <summary>
/// 底盘号
/// </summary>
[Display(Name = "底盘号")]
public string IdentityNo { get; set; }
} }
[Display(Name = "FIS发货申请")] [Display(Name = "FIS发货申请")]

154
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAppService.cs

@ -3,13 +3,20 @@ using System.Collections.Generic;
using System.Data; using System.Data;
using System.Linq; using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Net.Http;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Castle.Components.DictionaryAdapter; using Castle.Components.DictionaryAdapter;
using DocumentFormat.OpenXml.Spreadsheet;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Components.Forms;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using MyNamespace;
using Omu.ValueInjecter;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Basedata.Domain.Shared; using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
@ -19,6 +26,7 @@ using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared; using Win_in.Sfs.Wms.Store.Domain.Shared;
using Win_in.Sfs.Wms.Store.Jobs.IssueJobs; using Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
using Win_in.Sfs.Wms.Store.Notes; using Win_in.Sfs.Wms.Store.Notes;
using Win_in.Sfs.Wms.Store.Options;
namespace Win_in.Sfs.Wms.Store.Application; namespace Win_in.Sfs.Wms.Store.Application;
@ -32,14 +40,20 @@ public class CoatingIssueJobAppService
private readonly ICoatingIssueJobManager _coatingIssueJobManager; private readonly ICoatingIssueJobManager _coatingIssueJobManager;
private readonly ILocationAppService _locationAppService; private readonly ILocationAppService _locationAppService;
private readonly ITransferLibJobAppService _transferLibJobAppService; private readonly ITransferLibJobAppService _transferLibJobAppService;
private readonly IHttpClientFactory _httpClientFactory;
private readonly IOptions<RestoOptions> _options;
public CoatingIssueJobAppService( public CoatingIssueJobAppService(
ICoatingIssueJobRepository repository, ICoatingIssueJobManager coatingIssueJobManager, ICoatingIssueJobRepository repository, ICoatingIssueJobManager coatingIssueJobManager,
ILocationAppService locationAppService, ITransferLibJobAppService transferLibJobAppService) : base(repository, coatingIssueJobManager) ILocationAppService locationAppService, ITransferLibJobAppService transferLibJobAppService
, IHttpClientFactory httpClientFactory
, IOptions<RestoOptions> options
) : base(repository, coatingIssueJobManager)
{ {
_coatingIssueJobManager = coatingIssueJobManager; _coatingIssueJobManager = coatingIssueJobManager;
_locationAppService = locationAppService; _locationAppService = locationAppService;
_transferLibJobAppService = transferLibJobAppService; _transferLibJobAppService = transferLibJobAppService;
_httpClientFactory = httpClientFactory;
_options=options;
} }
[HttpPost("add-many")] [HttpPost("add-many")]
@ -185,10 +199,138 @@ public class CoatingIssueJobAppService
return; return;
} }
[HttpPost("test")]
public virtual async Task Test() [HttpPost("sync-coating-stereo")]
public virtual async Task<ReusltObject> SyncCoatingJobStereoAsync(List<CoatingIssueJobDTO> input)
{
foreach (var itm in input)
{
}
ReusltObject ret=new ReusltObject();
ret.Code = "1";
ret.Message = "操作成功";
ret.OperateTime = DateTime.Now.ToString("yyyy-MM-dd");
List<CoatingIssueJobToRestoDetailDTO> coatingIssueJobToRestoDetailDTOs = new List<CoatingIssueJobToRestoDetailDTO>();
CoatingIssueJobToRestoDTO main=new CoatingIssueJobToRestoDTO();
main.OperatorName=CurrentUser.UserName;
foreach (var job in input)
{
foreach (var jobitem in job.Details)
{
coatingIssueJobToRestoDetailDTOs.Add(new CoatingIssueJobToRestoDetailDTO()
{
Count=jobitem.HandledToQty,
ProductNo=jobitem.ItemCode,
NeedSite=jobitem.HandledToLocationCode,
WorkNo=job.Number,
TaskNo=job.Number
});
}
}
main.Details=coatingIssueJobToRestoDetailDTOs;
#region
CoatingIssueJobToRestoClient client = new CoatingIssueJobToRestoClient(_options.Value.Address, _httpClientFactory.CreateClient());
ret = await client.SyncCoatingJobStereoAsync(main).ConfigureAwait(false);
#endregion
return ret;
}
[HttpPost("receive-coating-job-stereo")]
public virtual async Task<ReusltObject> SyncReciveCoatingJobStereoAsync(CoatingIssueRequestFromRestoDTO input)
{ {
Console.WriteLine("FuAZCZXVZXVXZVZ"); List<string> errors = new List<string>();
await Task.CompletedTask; var ret=new ReusltObject()
{
Code = "1",
OperateTime = DateTime.Now.ToString("yyyy-MM-dd"),
Message = "操作成功"
};
try
{
if (input.Jobs.Count > 0)
{
var inputs = input.Jobs;
var numbers = inputs.Select(p => p.JobNumber);
var query = _repository.WithDetails()
.Where(p => numbers.Contains(p.Number));
var entities = query.ToList();
if (input.Jobs.Count == entities.Count) {
errors.Add("出库任务和WMS出库任务不符,请核对! \n");
}
var dtos = ObjectMapper.Map<List<CoatingIssueJob>, List<CoatingIssueJobDTO>>(entities);
foreach (var itm in dtos)
{
var first = inputs.FirstOrDefault<CoatingIssueJobFromRestoDTO>(p => p.JobNumber == itm.Number);
List<CoatingIssueJobDetailDTO> details = new List<CoatingIssueJobDetailDTO>();
foreach (var detail in first.Details)
{
CoatingIssueJobDetailDTO dto = new CoatingIssueJobDetailDTO();
dto.HandledFromLocationCode = detail.FromLocationCode;
dto.HandledToLocationCode = detail.ToLocationCode;
dto.ItemCode = detail.ItemCode;
dto.RecommendFromQty = detail.Qty;
dto.RecommendToQty = detail.Qty;
dto.HandledFromQty = detail.Qty;
dto.HandledToQty = detail.Qty;
details.Add(dto);
}
itm.Details = details;
}
}
else
{
errors.Add("立体库确认单据里无数据! \n");
}
}
catch (Exception ex)
{
ret=new ReusltObject()
{
Code = "2",
OperateTime = DateTime.Now.ToString("yyyy-MM-dd"),
Message = ex.Message
};
return ret;
}
if (errors.Count > 0)
{
ret= new ReusltObject()
{
Code = "2",
OperateTime = DateTime.Now.ToString("yyyy-MM-dd"),
Message = string.Join(",",errors.ToArray())
};
}
return ret;
} }
} }

413
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/proxy/CoatingIssueJobToRestoClient.cs

@ -0,0 +1,413 @@
//----------------------
// <auto-generated>
// Generated using the NSwag toolchain v14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)
// </auto-generated>
//----------------------
#pragma warning disable 108 // Disable "CS0108 '{derivedDto}.ToJson()' hides inherited member '{dtoBase}.ToJson()'. Use the new keyword if hiding was intended."
#pragma warning disable 114 // Disable "CS0114 '{derivedDto}.RaisePropertyChanged(String)' hides inherited member 'dtoBase.RaisePropertyChanged(String)'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword."
#pragma warning disable 472 // Disable "CS0472 The result of the expression is always 'false' since a value of type 'Int32' is never equal to 'null' of type 'Int32?'
#pragma warning disable 612 // Disable "CS0612 '...' is obsolete"
#pragma warning disable 1573 // Disable "CS1573 Parameter '...' has no matching param tag in the XML comment for ...
#pragma warning disable 1591 // Disable "CS1591 Missing XML comment for publicly visible type or member ..."
#pragma warning disable 8073 // Disable "CS8073 The result of the expression is always 'false' since a value of type 'T' is never equal to 'null' of type 'T?'"
#pragma warning disable 3016 // Disable "CS3016 Arrays as attribute arguments is not CLS-compliant"
#pragma warning disable 8603 // Disable "CS8603 Possible null reference return"
#pragma warning disable 8604 // Disable "CS8604 Possible null reference argument for parameter"
#pragma warning disable 8625 // Disable "CS8625 Cannot convert null literal to non-nullable reference type"
#pragma warning disable CS8765 // Nullability of type of parameter doesn't match overridden member (possibly because of nullability attributes).
namespace MyNamespace
{
using Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
using System = global::System;
[System.CodeDom.Compiler.GeneratedCode("NSwag", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
public partial class CoatingIssueJobToRestoClient
{
#pragma warning disable 8618
private string _baseUrl;
#pragma warning restore 8618
private System.Net.Http.HttpClient _httpClient;
private static System.Lazy<System.Text.Json.JsonSerializerOptions> _settings = new System.Lazy<System.Text.Json.JsonSerializerOptions>(CreateSerializerSettings, true);
#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
public CoatingIssueJobToRestoClient(string baseUrl, System.Net.Http.HttpClient httpClient)
#pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
{
BaseUrl = baseUrl;
_httpClient = httpClient;
}
private static System.Text.Json.JsonSerializerOptions CreateSerializerSettings()
{
var settings = new System.Text.Json.JsonSerializerOptions();
UpdateJsonSerializerSettings(settings);
return settings;
}
public string BaseUrl
{
get { return _baseUrl; }
set
{
_baseUrl = value;
if (!string.IsNullOrEmpty(_baseUrl) && !_baseUrl.EndsWith("/"))
_baseUrl += '/';
}
}
protected System.Text.Json.JsonSerializerOptions JsonSerializerSettings { get { return _settings.Value; } }
static partial void UpdateJsonSerializerSettings(System.Text.Json.JsonSerializerOptions settings);
partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url);
partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder);
partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response);
/// <returns>Success</returns>
/// <exception cref="ApiException">A server side error occurred.</exception>
public virtual System.Threading.Tasks.Task<ReusltObject> SyncCoatingJobStereoAsync(CoatingIssueJobToRestoDTO body)
{
return SyncCoatingJobStereoAsync(body, System.Threading.CancellationToken.None);
}
/// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param>
/// <returns>Success</returns>
/// <exception cref="ApiException">A server side error occurred.</exception>
public virtual async System.Threading.Tasks.Task<ReusltObject> SyncCoatingJobStereoAsync(CoatingIssueJobToRestoDTO body, System.Threading.CancellationToken cancellationToken)
{
var client_ = _httpClient;
var disposeClient_ = false;
try
{
using (var request_ = new System.Net.Http.HttpRequestMessage())
{
var json_ = System.Text.Json.JsonSerializer.SerializeToUtf8Bytes(body, _settings.Value);
var content_ = new System.Net.Http.ByteArrayContent(json_);
content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json");
request_.Content = content_;
request_.Method = new System.Net.Http.HttpMethod("POST");
request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("text/plain"));
var urlBuilder_ = new System.Text.StringBuilder();
if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl);
// Operation Path: "CargoState/SyncCoatingJobStereo"
urlBuilder_.Append("CargoState/SyncCoatingJobStereo");
PrepareRequest(client_, request_, urlBuilder_);
var url_ = urlBuilder_.ToString();
request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute);
PrepareRequest(client_, request_, url_);
var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false);
var disposeResponse_ = true;
try
{
var headers_ = new System.Collections.Generic.Dictionary<string, System.Collections.Generic.IEnumerable<string>>();
foreach (var item_ in response_.Headers)
headers_[item_.Key] = item_.Value;
if (response_.Content != null && response_.Content.Headers != null)
{
foreach (var item_ in response_.Content.Headers)
headers_[item_.Key] = item_.Value;
}
ProcessResponse(client_, response_);
var status_ = (int)response_.StatusCode;
if (status_ == 200)
{
var objectResponse_ = await ReadObjectResponseAsync<ReusltObject>(response_, headers_, cancellationToken).ConfigureAwait(false);
if (objectResponse_.Object == null)
{
throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
}
return objectResponse_.Object;
}
else
if (status_ == 403)
{
var objectResponse_ = await ReadObjectResponseAsync<RemoteServiceErrorResponse>(response_, headers_, cancellationToken).ConfigureAwait(false);
if (objectResponse_.Object == null)
{
throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
}
throw new ApiException<RemoteServiceErrorResponse>("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
}
else
if (status_ == 401)
{
var objectResponse_ = await ReadObjectResponseAsync<RemoteServiceErrorResponse>(response_, headers_, cancellationToken).ConfigureAwait(false);
if (objectResponse_.Object == null)
{
throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
}
throw new ApiException<RemoteServiceErrorResponse>("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
}
else
if (status_ == 400)
{
var objectResponse_ = await ReadObjectResponseAsync<RemoteServiceErrorResponse>(response_, headers_, cancellationToken).ConfigureAwait(false);
if (objectResponse_.Object == null)
{
throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
}
throw new ApiException<RemoteServiceErrorResponse>("Bad Request", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
}
else
if (status_ == 404)
{
var objectResponse_ = await ReadObjectResponseAsync<RemoteServiceErrorResponse>(response_, headers_, cancellationToken).ConfigureAwait(false);
if (objectResponse_.Object == null)
{
throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
}
throw new ApiException<RemoteServiceErrorResponse>("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
}
else
if (status_ == 501)
{
var objectResponse_ = await ReadObjectResponseAsync<RemoteServiceErrorResponse>(response_, headers_, cancellationToken).ConfigureAwait(false);
if (objectResponse_.Object == null)
{
throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
}
throw new ApiException<RemoteServiceErrorResponse>("Server Error", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
}
else
if (status_ == 500)
{
var objectResponse_ = await ReadObjectResponseAsync<RemoteServiceErrorResponse>(response_, headers_, cancellationToken).ConfigureAwait(false);
if (objectResponse_.Object == null)
{
throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
}
throw new ApiException<RemoteServiceErrorResponse>("Server Error", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
}
else
{
var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null);
}
}
finally
{
if (disposeResponse_)
response_.Dispose();
}
}
}
finally
{
if (disposeClient_)
client_.Dispose();
}
}
protected struct ObjectResponseResult<T>
{
public ObjectResponseResult(T responseObject, string responseText)
{
this.Object = responseObject;
this.Text = responseText;
}
public T Object { get; }
public string Text { get; }
}
public bool ReadResponseAsString { get; set; }
protected virtual async System.Threading.Tasks.Task<ObjectResponseResult<T>> ReadObjectResponseAsync<T>(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary<string, System.Collections.Generic.IEnumerable<string>> headers, System.Threading.CancellationToken cancellationToken)
{
if (response == null || response.Content == null)
{
return new ObjectResponseResult<T>(default(T), string.Empty);
}
if (ReadResponseAsString)
{
var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
try
{
var typedBody = System.Text.Json.JsonSerializer.Deserialize<T>(responseText, JsonSerializerSettings);
return new ObjectResponseResult<T>(typedBody, responseText);
}
catch (System.Text.Json.JsonException exception)
{
var message = "Could not deserialize the response body string as " + typeof(T).FullName + ".";
throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception);
}
}
else
{
try
{
using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false))
{
var typedBody = await System.Text.Json.JsonSerializer.DeserializeAsync<T>(responseStream, JsonSerializerSettings, cancellationToken).ConfigureAwait(false);
return new ObjectResponseResult<T>(typedBody, string.Empty);
}
}
catch (System.Text.Json.JsonException exception)
{
var message = "Could not deserialize the response body stream as " + typeof(T).FullName + ".";
throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception);
}
}
}
private string ConvertToString(object value, System.Globalization.CultureInfo cultureInfo)
{
if (value == null)
{
return "";
}
if (value is System.Enum)
{
var name = System.Enum.GetName(value.GetType(), value);
if (name != null)
{
var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name);
if (field != null)
{
var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute))
as System.Runtime.Serialization.EnumMemberAttribute;
if (attribute != null)
{
return attribute.Value != null ? attribute.Value : name;
}
}
var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo));
return converted == null ? string.Empty : converted;
}
}
else if (value is bool)
{
return System.Convert.ToString((bool)value, cultureInfo).ToLowerInvariant();
}
else if (value is byte[])
{
return System.Convert.ToBase64String((byte[])value);
}
else if (value is string[])
{
return string.Join(",", (string[])value);
}
else if (value.GetType().IsArray)
{
var valueArray = (System.Array)value;
var valueTextArray = new string[valueArray.Length];
for (var i = 0; i < valueArray.Length; i++)
{
valueTextArray[i] = ConvertToString(valueArray.GetValue(i), cultureInfo);
}
return string.Join(",", valueTextArray);
}
var result = System.Convert.ToString(value, cultureInfo);
return result == null ? "" : result;
}
}
[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
public partial class RemoteServiceErrorInfo
{
[System.Text.Json.Serialization.JsonPropertyName("code")]
public string Code { get; set; }
[System.Text.Json.Serialization.JsonPropertyName("message")]
public string Message { get; set; }
[System.Text.Json.Serialization.JsonPropertyName("details")]
public string Details { get; set; }
[System.Text.Json.Serialization.JsonPropertyName("data")]
public System.Collections.Generic.IDictionary<string, object> Data { get; set; }
[System.Text.Json.Serialization.JsonPropertyName("validationErrors")]
public System.Collections.Generic.ICollection<RemoteServiceValidationErrorInfo> ValidationErrors { get; set; }
}
[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
public partial class RemoteServiceErrorResponse
{
[System.Text.Json.Serialization.JsonPropertyName("error")]
public RemoteServiceErrorInfo Error { get; set; }
}
[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
public partial class RemoteServiceValidationErrorInfo
{
[System.Text.Json.Serialization.JsonPropertyName("message")]
public string Message { get; set; }
[System.Text.Json.Serialization.JsonPropertyName("members")]
public System.Collections.Generic.ICollection<string> Members { get; set; }
}
[System.CodeDom.Compiler.GeneratedCode("NSwag", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
public partial class ApiException : System.Exception
{
public int StatusCode { get; private set; }
public string Response { get; private set; }
public System.Collections.Generic.IReadOnlyDictionary<string, System.Collections.Generic.IEnumerable<string>> Headers { get; private set; }
public ApiException(string message, int statusCode, string response, System.Collections.Generic.IReadOnlyDictionary<string, System.Collections.Generic.IEnumerable<string>> headers, System.Exception innerException)
: base(message + "\n\nStatus: " + statusCode + "\nResponse: \n" + ((response == null) ? "(null)" : response.Substring(0, response.Length >= 512 ? 512 : response.Length)), innerException)
{
StatusCode = statusCode;
Response = response;
Headers = headers;
}
public override string ToString()
{
return string.Format("HTTP Response: \n\n{0}\n\n{1}", Response, base.ToString());
}
}
[System.CodeDom.Compiler.GeneratedCode("NSwag", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
public partial class ApiException<TResult> : ApiException
{
public TResult Result { get; private set; }
public ApiException(string message, int statusCode, string response, System.Collections.Generic.IReadOnlyDictionary<string, System.Collections.Generic.IEnumerable<string>> headers, TResult result, System.Exception innerException)
: base(message, statusCode, response, headers, innerException)
{
Result = result;
}
}
}
#pragma warning restore 108
#pragma warning restore 114
#pragma warning restore 472
#pragma warning restore 612
#pragma warning restore 1573
#pragma warning restore 1591
#pragma warning restore 8073
#pragma warning restore 3016
#pragma warning restore 8603
#pragma warning restore 8604
#pragma warning restore 8625

6
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/MesNotes/MesNoteAppService.cs

@ -63,7 +63,6 @@ public class MesNoteAppService :
{ {
var fromLocation=await _locationAppService.GetByCodeAsync(detail.FromLocationCode).ConfigureAwait(false); var fromLocation=await _locationAppService.GetByCodeAsync(detail.FromLocationCode).ConfigureAwait(false);
var toLocation =await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false); var toLocation =await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false);
var itemBasicDto =await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
if (fromLocation == null) if (fromLocation == null)
{ {
throw new UserFriendlyException($"来源库位为空"); throw new UserFriendlyException($"来源库位为空");
@ -81,9 +80,6 @@ public class MesNoteAppService :
detail.ToLocationErpCode = toLocation.ErpLocationCode; detail.ToLocationErpCode = toLocation.ErpLocationCode;
detail.ToLocationGroup = toLocation.LocationGroupCode; detail.ToLocationGroup = toLocation.LocationGroupCode;
detail.ToWarehouseCode = toLocation.WarehouseCode; detail.ToWarehouseCode = toLocation.WarehouseCode;
detail.ToStatus = detail.FromStatus;
detail.Uom = itemBasicDto.BasicUom;
detail.StdPackQty = itemBasicDto.StdPackQty;
#region 添加校验 #region 添加校验
@ -91,7 +87,7 @@ public class MesNoteAppService :
rInput.ItemCode = detail.ItemCode; rInput.ItemCode = detail.ItemCode;
rInput.Locations = new List<string>() { detail.FromLocationCode }; rInput.Locations = new List<string>() { detail.FromLocationCode };
rInput.Qty = detail.Qty; rInput.Qty = detail.Qty;
rInput.Statuses = new List<EnumInventoryStatus> { EnumInventoryStatus.OK }; rInput.Statuses = new List<EnumInventoryStatus> { detail.FromStatus };
var balanceLst = await _balanceAppService.GetRecommendBalancesByLocationsAsync(rInput).ConfigureAwait(false); var balanceLst = await _balanceAppService.GetRecommendBalancesByLocationsAsync(rInput).ConfigureAwait(false);
var first = balanceLst.FirstOrDefault(); var first = balanceLst.FirstOrDefault();
if (first != null) if (first != null)

36
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/ProductReceiptNotes/ProductReceiptNoteDetailAppService.cs

@ -0,0 +1,36 @@
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.Application.Dtos;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
using Volo.Abp.Application.Services;
using Microsoft.AspNetCore.Authorization;
using Win_in.Sfs.Wms.Store.Domain.Shared;
using Win_in.Sfs.Wms.Store.Application;
using Volo.Abp.Domain.Repositories;
namespace Win_in.Sfs.Wms.Store.Notes.ProductReceiptNotes;
[Authorize]
[Route($"{StoreConsts.RootPath}product-receipt-note-detail")]
public class ProductReceiptNoteDetailAppService : SfsStoreAppServiceBase<ProductReceiptNoteDetail, ProductReceiptNoteDetailDTO, SfsStoreRequestInputBase, ProductReceiptNoteDetailInput, ProductReceiptNoteImportInput>, IProductReceiptNoteDetailAppService
{
private readonly IProductReceiptNoteDetailRepository _productReceiptNoteDetailRepository;
public ProductReceiptNoteDetailAppService(
IProductReceiptNoteDetailRepository repository
) : base(repository)
{
_productReceiptNoteDetailRepository = repository;
}
[HttpGet("get-itemcode-by-mesbarcode")]
public virtual async Task<ProductReceiptNoteDetailDTO> GetItemCodeByMesBarCode(string mesBarCode)
{
var entity = await _productReceiptNoteDetailRepository.FirstOrDefaultAsync(r => r.MesBarCode == mesBarCode).ConfigureAwait(false);
var dto = ObjectMapper.Map<ProductReceiptNoteDetail, ProductReceiptNoteDetailDTO>(entity);
return dto;
}
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs

@ -360,7 +360,7 @@ public class TransferNoteAppService : SfsStoreWithDetailsAppServiceBase
/// <returns></returns> /// <returns></returns>
[HttpPost("")] [HttpPost("")]
public override async Task<TransferNoteDTO> CreateAsync(TransferNoteEditInput input) public override async Task<TransferNoteDTO> CreateAsync(TransferNoteEditInput input)
{ {
var entity = ObjectMapper.Map<TransferNoteEditInput, TransferNote>(input); var entity = ObjectMapper.Map<TransferNoteEditInput, TransferNote>(input);
entity=await _transferNoteManager.CreateAsync(entity).ConfigureAwait(false); entity=await _transferNoteManager.CreateAsync(entity).ConfigureAwait(false);

67
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestAppService.cs

@ -10,6 +10,8 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities.Events.Distributed;
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;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
@ -32,7 +34,6 @@ public class DeliverRequestAppService :
private readonly IAreaAppService _areaApp; private readonly IAreaAppService _areaApp;
private readonly ICustomerAppService _customerApp; private readonly ICustomerAppService _customerApp;
private readonly ICustomerAddressAppService _customerAddressApp; private readonly ICustomerAddressAppService _customerAddressApp;
public DeliverRequestAppService( public DeliverRequestAppService(
IDeliverRequestRepository repository IDeliverRequestRepository repository
, IDeliverRequestManager deliverRequestManager , IDeliverRequestManager deliverRequestManager
@ -46,7 +47,25 @@ public class DeliverRequestAppService :
_customerApp = customerApp; _customerApp = customerApp;
_customerAddressApp = customerAddressApp; _customerAddressApp = customerAddressApp;
} }
/// <summary>
/// 处理请求
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
[HttpPost("handle-list")]
public virtual async Task<List<DeliverRequestDTO>> HandleListAsync(List<Guid> ids)
{
var entitys = await _repository.GetListAsync(r=> ids.Contains(r.Id)).ConfigureAwait(false);
if (entitys.Select(r => r.CustomerCode).Distinct().Count()>1)
{
throw new UserFriendlyException($"所选申请涉及多个客户不能创建为一个发货单,请重新选择!");
}
Check.NotNull(entitys, typeof(DeliverRequest).Name);
var result = await _deliverRequestManager.HandleListAsync(entitys).ConfigureAwait(false);
var dtos = ObjectMapper.Map<List<DeliverRequest>, List<DeliverRequestDTO>>(entitys);
return dtos;
}
[HttpPost("list")] [HttpPost("list")]
public override Task<PagedResultDto<DeliverRequestDTO>> GetPagedListByFilterAsync( public override Task<PagedResultDto<DeliverRequestDTO>> GetPagedListByFilterAsync(
SfsStoreRequestInputBase sfsRequestInput, SfsStoreRequestInputBase sfsRequestInput,
@ -75,7 +94,30 @@ public class DeliverRequestAppService :
var dto = ObjectMapper.Map<DeliverRequest, DeliverRequestDTO>(entity); var dto = ObjectMapper.Map<DeliverRequest, DeliverRequestDTO>(entity);
return dto; return dto;
} }
private async Task SetRequestAutoPropertiesAsync(DeliverRequest entity)
{
//普通件
var transType = EnumTransSubType.Deliver_Standard;
//jis件
if (entity.DeliverRequestType == EnumDeliverRequestType.FIS)
{
transType = EnumTransSubType.Deliver_FIS;
}
else if (entity.DeliverRequestType == EnumDeliverRequestType.RAW)
{
transType = EnumTransSubType.Deliver_RAW;
}
var tranType = await TransactionTypeAclService.GetByTransTypeAsync(EnumTransType.Deliver, transType).ConfigureAwait(false);
Check.NotNull(tranType, "事务类型", "事务类型不存在");
entity.AutoCompleteJob = tranType.AutoCompleteJob;
entity.AutoSubmit = tranType.AutoSubmitRequest;
entity.AutoAgree = tranType.AutoAgreeRequest;
entity.AutoHandle = tranType.AutoHandleRequest;
entity.DirectCreateNote = tranType.DirectCreateNote;
entity.DeliverRequestType = entity.DeliverRequestType;
}
#region import #region import
protected virtual async Task CheckImportInputBusinessAsync( protected virtual async Task CheckImportInputBusinessAsync(
DeliverRequestImportInput importInput DeliverRequestImportInput importInput
@ -246,30 +288,7 @@ public class DeliverRequestAppService :
await SetRequestAutoPropertiesAsync(entity).ConfigureAwait(false); await SetRequestAutoPropertiesAsync(entity).ConfigureAwait(false);
} }
private async Task SetRequestAutoPropertiesAsync(DeliverRequest entity)
{
//普通件
var transType = EnumTransSubType.Deliver_Standard;
//jis件
if (entity.DeliverRequestType == EnumDeliverRequestType.FIS)
{
transType = EnumTransSubType.Deliver_FIS;
}
else if (entity.DeliverRequestType == EnumDeliverRequestType.RAW)
{
transType = EnumTransSubType.Deliver_RAW;
}
var tranType = await TransactionTypeAclService.GetByTransTypeAsync(EnumTransType.Deliver, transType).ConfigureAwait(false);
Check.NotNull(tranType, "事务类型", "事务类型不存在");
entity.AutoCompleteJob = tranType.AutoCompleteJob;
entity.AutoSubmit = tranType.AutoSubmitRequest;
entity.AutoAgree = tranType.AutoAgreeRequest;
entity.AutoHandle = tranType.AutoHandleRequest;
entity.DirectCreateNote = tranType.DirectCreateNote;
entity.DeliverRequestType = entity.DeliverRequestType;
}
private static void CheckTransactionType(TransactionTypeDTO transactionType, ItemBasicDTO item) private static void CheckTransactionType(TransactionTypeDTO transactionType, ItemBasicDTO item)
{ {

3
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/DeliverRequests/DeliverRequestAutoMapperProfile.cs

@ -93,6 +93,9 @@ public partial class StoreApplicationAutoMapperProfile : Profile
.Ignore(x => x.Id) .Ignore(x => x.Id)
.Ignore(x => x.ExtraProperties) .Ignore(x => x.ExtraProperties)
.Ignore(x => x.Remark) .Ignore(x => x.Remark)
.Ignore(x => x.IdentityNo)
.Ignore(x => x.MesDeliveryNo)
.Ignore(x => x.MesDeliveryPlan)
.AfterMap((x, y) => y.SetProperty(nameof(x.FromVinCode), x.FromVinCode)) .AfterMap((x, y) => y.SetProperty(nameof(x.FromVinCode), x.FromVinCode))
//.AfterMap((x, y) => y.SetProperty(nameof(x.ToVinCode), x.ToVinCode)) //.AfterMap((x, y) => y.SetProperty(nameof(x.ToVinCode), x.ToVinCode))
; ;

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

@ -171,7 +171,7 @@ public class DeliverRequestFisAppService :
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
sfsRequestInput.Condition.Filters.Add( sfsRequestInput.Condition.Filters.Add(
new Filter(nameof(DeliverRequest.DeliverRequestType), "FIS")); new Filter(nameof(DeliverRequest.DeliverRequestType), "Normal"));
return base.GetPagedListByFilterAsync(sfsRequestInput, includeDetails, cancellationToken); return base.GetPagedListByFilterAsync(sfsRequestInput, includeDetails, cancellationToken);
} }

17
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs

@ -61,14 +61,15 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA
entity.AutoSubmit = true; entity.AutoSubmit = true;
entity.AutoAgree = true; entity.AutoAgree = true;
entity.AutoHandle = true; entity.AutoHandle = true;
if (entity.UnplannedIssueType == EnumUnplannedIssueType.Wip) entity.DirectCreateNote = false;
{ //if (entity.UnplannedIssueType == EnumUnplannedIssueType.Wip)
entity.DirectCreateNote = true; //{
} // entity.DirectCreateNote = true;
else //}
{ //else
entity.DirectCreateNote = false; //{
}
//}
await _unplannedIssueRequestManager.CreateAsync(entity).ConfigureAwait(false); await _unplannedIssueRequestManager.CreateAsync(entity).ConfigureAwait(false);
var dto = ObjectMapper.Map<UnplannedIssueRequest, UnplannedIssueRequestDTO>(entity); var dto = ObjectMapper.Map<UnplannedIssueRequest, UnplannedIssueRequestDTO>(entity);

17
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs

@ -65,14 +65,15 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ
entity.AutoSubmit = true; entity.AutoSubmit = true;
entity.AutoAgree = true; entity.AutoAgree = true;
entity.AutoHandle = true; entity.AutoHandle = true;
if (entity.UnplannedReceiptType == EnumUnplannedReceiptType.Wip) entity.DirectCreateNote = false;
{ //if (entity.UnplannedReceiptType == EnumUnplannedReceiptType.Wip)
entity.DirectCreateNote = true; //线边直接生成记录 //{
} // entity.DirectCreateNote = true; //线边直接生成记录
else //}
{ //else
entity.DirectCreateNote = false; //原料先生成任务、再生成记录 //{
} // entity.DirectCreateNote = false; //原料先生成任务、再生成记录
//}
var res = await _unplannedReceiptRequestManager.CreateAsync(entity).ConfigureAwait(false); var res = await _unplannedReceiptRequestManager.CreateAsync(entity).ConfigureAwait(false);
var dto = ObjectMapper.Map<UnplannedReceiptRequest, UnplannedReceiptRequestDTO>(entity); var dto = ObjectMapper.Map<UnplannedReceiptRequest, UnplannedReceiptRequestDTO>(entity);

5
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/StoreApplicationModule.cs

@ -6,6 +6,7 @@ using Volo.Abp.Modularity;
using Volo.Abp.Settings; using Volo.Abp.Settings;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain; using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Options;
namespace Win_in.Sfs.Wms.Store.Application; namespace Win_in.Sfs.Wms.Store.Application;
@ -19,12 +20,16 @@ public class StoreApplicationModule : AbpModule
{ {
public override void ConfigureServices(ServiceConfigurationContext context) public override void ConfigureServices(ServiceConfigurationContext context)
{ {
var configuration = context.Services.GetConfiguration();
context.Services.AddAutoMapperObjectMapper<StoreApplicationModule>(); context.Services.AddAutoMapperObjectMapper<StoreApplicationModule>();
Configure<AbpAutoMapperOptions>(options => Configure<AbpAutoMapperOptions>(options =>
{ {
options.AddMaps<StoreApplicationModule>(); options.AddMaps<StoreApplicationModule>();
}); });
Configure<RestoOptions>(configuration.GetSection("RestoOptions"));
context.Services.Replace(ServiceDescriptor.Transient<IUnplannedIssueRequestAppService, UnplannedIssueRequestForDongyangAppService>()); context.Services.Replace(ServiceDescriptor.Transient<IUnplannedIssueRequestAppService, UnplannedIssueRequestForDongyangAppService>());
context.Services.Replace(ServiceDescriptor.Transient<IUnplannedReceiptRequestAppService, UnplannedReceiptRequestForDongyangAppService>()); context.Services.Replace(ServiceDescriptor.Transient<IUnplannedReceiptRequestAppService, UnplannedReceiptRequestForDongyangAppService>());
context.Services.Replace(ServiceDescriptor.Transient<ICountAdjustRequestAppService, CountAdjustRequestForDongyangAppService>()); context.Services.Replace(ServiceDescriptor.Transient<ICountAdjustRequestAppService, CountAdjustRequestForDongyangAppService>());

4
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/ExchangeDatas/EnumExchangeDataType.cs

@ -45,5 +45,9 @@ public enum EnumExchangeDataType
/// 装配发料 /// 装配发料
/// </summary> /// </summary>
AssembleIssue=32, AssembleIssue=32,
/// <summary>
/// 三方库
/// </summary>
ThirdLocation = 33,
} }

29
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/SfsJobManagerBase.cs

@ -96,6 +96,35 @@ public abstract class SfsJobManagerBase<TEntity, TDetailEntity>
return entities; return entities;
} }
/// <summary>
///
/// </summary>
/// <param name="entities"></param>
/// <returns></returns>
public virtual async Task<List<TEntity>> AddManyNoPublishAsync(List<TEntity> entities)
{
foreach (var job in entities)
{
job.SetIdAndNumberWithDetails(GuidGenerator, await GetNumber().ConfigureAwait(false));
await SendNotifyMessageAsync(job).ConfigureAwait(false);
}
//await PublishCreatedAsync(entities).ConfigureAwait(false);
await Repository.InsertManyAsync(entities).ConfigureAwait(false);
return entities;
}
public virtual async Task OpenAsync(TEntity entity) public virtual async Task OpenAsync(TEntity entity)
{ {

12
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/DeliverNotes/DeliverNoteDetail.cs

@ -8,4 +8,16 @@ public class DeliverNoteDetail : SfsStoreRecommendFromDetailWithFromToEntityBase
/// 扩展属性 /// 扩展属性
/// </summary> /// </summary>
public ExtraPropertyDictionary ExtraProperties { get; set; } = new ExtraPropertyDictionary(); public ExtraPropertyDictionary ExtraProperties { get; set; } = new ExtraPropertyDictionary();
/// <summary>
/// Mes发货单号
/// </summary>
public string MesDeliveryNo { get; set; }
/// <summary>
/// Mes发货计划号
/// </summary>
public string MesDeliveryPlan { get; set; }
/// <summary>
/// 底盘号
/// </summary>
public string IdentityNo { get; set; }
} }

4
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/ProductReceiptNotes/IProductReceiptNoteDetailRepository.cs

@ -0,0 +1,4 @@
namespace Win_in.Sfs.Wms.Store.Domain;
public interface IProductReceiptNoteDetailRepository : ISfsStoreRepositoryBase<ProductReceiptNoteDetail>
{
}

21
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Options/RestoOptions.cs

@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Win_in.Sfs.Wms.Store.Options;
public class RestoOptions
{
// IP 地址
public string Address { set; get; }
// 用户名
public string UserName { set; get; }
// 密码
public string Password { set; get; }
// 令牌
public string Token { set; get; }
}

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/DeliverRequests/DeliverRequest.cs

@ -38,7 +38,6 @@ public class DeliverRequest : SfsStoreRequestAggregateRootBase<DeliverRequestDet
/// <summary> /// <summary>
/// 发货类型 /// 发货类型
/// </summary> /// </summary>
[IgnoreUpdate]
public EnumDeliverRequestType DeliverRequestType { get; set; } public EnumDeliverRequestType DeliverRequestType { get; set; }
/// <summary> /// <summary>

13
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/DeliverRequests/DeliverRequestDetail.cs

@ -16,5 +16,16 @@ public class DeliverRequestDetail : SfsStoreDetailWithQtyEntityBase, IHasExtraPr
/// 扩展属性 /// 扩展属性
/// </summary> /// </summary>
public ExtraPropertyDictionary ExtraProperties { get; set; } = new ExtraPropertyDictionary(); public ExtraPropertyDictionary ExtraProperties { get; set; } = new ExtraPropertyDictionary();
/// <summary>
/// Mes发货单号
/// </summary>
public string MesDeliveryNo { get; set; }
/// <summary>
/// Mes发货计划号
/// </summary>
public string MesDeliveryPlan { get; set; }
/// <summary>
/// 底盘号
/// </summary>
public string IdentityNo { get; set; }
} }

22
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/DeliverRequests/DeliverRequestManager.cs

@ -1,7 +1,12 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading.Tasks; using System.Threading.Tasks;
using IdentityModel;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Uow;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Event;
namespace Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Domain;
@ -67,4 +72,21 @@ public class DeliverRequestManager : SfsStoreRequestManagerBase<DeliverRequest,
} }
} }
/// <summary>
/// 执行
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[UnitOfWork]
public async Task<List<DeliverRequest>> HandleListAsync(List<DeliverRequest> entitys)
{
foreach (var entity in entitys)
{
entity.Handle();
await AddOrUpdateAsync(entity).ConfigureAwait(false);
}
await LocalEventBus.PublishAsync(new SfsHandledEntityEventData<List<DeliverRequest>>(entitys), false).ConfigureAwait(false);
return entitys;
}
} }

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save