Browse Source

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

dev_DY_CC
赵新宇 1 year ago
parent
commit
a08fc23764
  1. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/ChassisPermissions.cs
  2. 0
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/DTOs/ChassisDTO.cs
  3. 0
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/IChassisAppService.cs
  4. 0
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/Inputs/ChassisEditInput.cs
  5. 0
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/Inputs/ChassisImportInput.cs
  6. 21
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/ChassisOperationSequencePermissions.cs
  7. 48
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/DTOs/ChassisOperationSequenceDTO.cs
  8. 12
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/IChassisOperationSequenceAppService.cs
  9. 48
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/Inputs/ChassisOperationSequenceEditInput.cs
  10. 51
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/Inputs/ChassisOperationSequenceImportInput.cs
  11. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/DTOs/AssembleJobDTO.cs
  12. 497
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/DTOs/AssembleJobDetailDTO.cs
  13. 11
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/IAssembleJobAppService.cs
  14. 507
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/Inputs/AssembleJobDetailInput.cs
  15. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/Inputs/AssembleJobEditInput.cs
  16. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDTO.cs
  17. 500
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDetailDTO.cs
  18. 510
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDetailInput.cs
  19. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobPermissions.cs
  20. 14
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/ICoatingIssueJobAppService.cs
  21. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/DTOs/AssembleNoteDTO.cs
  22. 511
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/DTOs/AssembleNoteDetailDTO.cs
  23. 502
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/Inputs/AssembleNoteDetailInput.cs
  24. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/Inputs/AssembleNoteEditInput.cs
  25. 9
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDTO.cs
  26. 514
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDetailDTO.cs
  27. 505
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDetailInput.cs
  28. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteEditInput.cs
  29. 3
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Permissions/StorePermissionDefinitionProvider.cs
  30. 27
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsPermissions.cs
  31. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/DTOs/AssembleIssueRequestsDTO.cs
  32. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/DTOs/AssembleIssueRequestsDetailDTO.cs
  33. 13
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/IAssembleIssueRequestsAppService.cs
  34. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/Inputs/AssembleIssueRequestsDetailInput.cs
  35. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/Inputs/AssembleIssueRequestsEditInput.cs
  36. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/Inputs/AssembleIssueRequestsImportInput.cs
  37. 27
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/AssembleRequestPermissions.cs
  38. 13
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/IAssembleRequestAppService.cs
  39. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/CoatingMaterialRequests/CoatingMaterialRequestEditInput.cs
  40. 9
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Chassis/ChassisAppService.cs
  41. 24
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Chassis/ChassisAutoMapperProfile.cs
  42. 87
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/ChassisOperationSequence/ChassisOperationSequenceAppService.cs
  43. 19
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/ChassisOperationSequence/ChassisOperationSequenceAutoMapperProfile.cs
  44. 12
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Equipments/EquipmentRecordAppService.cs
  45. 205
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AssembleJobs/AssembleJobAppService.cs
  46. 277
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAppService.cs
  47. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAutoMapperProfile.cs
  48. 8
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/InjectionJobs/InjectionJobAppService.cs
  49. 12
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/TransferLibJobs/TransferLibJobAutoMapperProfile.cs
  50. 50
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteAppService.cs
  51. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteAutoMapperProfile.cs
  52. 191
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsAppService.cs
  53. 14
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsAutoMapperProfile.cs
  54. 395
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/CoatingMaterialRequests/CoatingMaterialRequestAppService.cs
  55. 12
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/InjectionRequests/InjectionRequestAppService.cs
  56. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/StoreApplicationAutoMapperProfile.cs
  57. 13
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Chassis/ChassisDetail.cs
  58. 49
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/ChassisOperationSequence/ChassisOperationSequence.cs
  59. 23
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/ChassisOperationSequence/ChassisOperationSequenceManager.cs
  60. 12
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/ChassisOperationSequence/IChassisOperationSequenceManager.cs
  61. 10
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/ChassisOperationSequence/IChassisOperationSequenceRepository.cs
  62. 37
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/AssembleJobs/AssembleJob.cs
  63. 479
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/AssembleJobs/AssembleJobDetail.cs
  64. 106
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/AssembleJobs/AssembleJobManager.cs
  65. 42
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJob.cs
  66. 484
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDetail.cs
  67. 135
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobManager.cs
  68. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/IIssueJobRepository.cs
  69. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/InjectionJobs/IInjectionJobRepository.cs
  70. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/InjectionJobs/InjectionJobManager.cs
  71. 139
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/TransferLibJobs/TransferLibJobManager.cs
  72. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/AssembleNotes/AssembleNote.cs
  73. 496
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/AssembleNotes/AssembleNoteDetail.cs
  74. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNote.cs
  75. 499
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDetail.cs
  76. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequests.cs
  77. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsDetail.cs
  78. 20
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsManager.cs
  79. 14
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/IAssembleIssueRequestsManager.cs
  80. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/IAssembleIssueRequestsRepository.cs
  81. 13
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleRequests/IAssembleRequestManager.cs
  82. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/CoatingMaterialRequests/CoatingMaterialRequestManager.cs
  83. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/CoatingMaterialRequests/ICoatingMaterialRequestManager.cs
  84. 0
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionIssueRequests/IInjectionRequestManager.cs
  85. 0
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionIssueRequests/IInjectionRequestRepository.cs
  86. 0
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionIssueRequests/InjectionRequest.cs
  87. 0
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionIssueRequests/InjectionRequestDetail.cs
  88. 0
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionIssueRequests/InjectionRequestManager.cs
  89. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/ThirdLocationRequests/ThirdLocationRequestManager.cs
  90. 31
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/ChassisOperationSequence/ChassisOperationSequenceDbContextModelCreatingExtensions.cs
  91. 18
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/ChassisOperationSequence/ChassisOperationSequenceEfCoreRepository.cs
  92. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/IStoreDbContext.cs
  93. 21
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/AssembleJobs/AssembleJobDbContextModelCreatingExtensions.cs
  94. 21
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/CoatingIssueJob/CoatingIssueJobDbContextModelCreatingExtensions.cs
  95. 16
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403054940_Update_InjectionRequest.Designer.cs
  96. 34
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403054940_Update_InjectionRequest.cs
  97. 16
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403071320_transferLib_3temp.Designer.cs
  98. 34
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403071320_transferLib_3temp.cs
  99. 16
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240409090529_Update_InjectionRequest_2024_04_09.Designer.cs
  100. 16
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240412052222_Update_Injection.Designer.cs

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/EquipmentRecordPermissions.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/ChassisPermissions.cs

@ -1,4 +1,5 @@
using Volo.Abp.Authorization.Permissions; using Volo.Abp.Authorization.Permissions;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;

0
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/DTOs/EquipmentRecordDTO.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/DTOs/ChassisDTO.cs

0
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/IEquipmentRecordAppService.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/IChassisAppService.cs

0
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/Inputs/EquipmentRecordEditInput.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/Inputs/ChassisEditInput.cs

0
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/Inputs/EquipmentRecordImportInput.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/Inputs/ChassisImportInput.cs

21
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/ChassisOperationSequencePermissions.cs

@ -0,0 +1,21 @@
using Volo.Abp.Authorization.Permissions;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public static class ChassisOperationSequencePermissions
{
public const string Default = StorePermissions.GroupName + "." + nameof(ChassisOperationSequence);
public const string Create = Default + "." + StorePermissions.CreateStr;
public const string Update = Default + "." + StorePermissions.UpdateStr;
public const string Delete = Default + "." + StorePermissions.DeleteStr;
public static void AddChassisOperationSequencePermission(this PermissionGroupDefinition permissionGroup)
{
var purchaseOrderPermission =
permissionGroup.AddPermission(Default, StorePermissionDefinitionProvider.L(nameof(ChassisOperationSequence)));
purchaseOrderPermission.AddChild(Create, StorePermissionDefinitionProvider.L(StorePermissions.CreateStr));
purchaseOrderPermission.AddChild(Update, StorePermissionDefinitionProvider.L(StorePermissions.UpdateStr));
purchaseOrderPermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr));
}
}

48
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/DTOs/ChassisOperationSequenceDTO.cs

@ -0,0 +1,48 @@
using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Application.Contracts;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
/// <summary>
/// 底盘信息
/// </summary>
[Display(Name = "底盘信息")]
public class ChassisOperationSequenceDTO : SfsBasicDTOBase
{
/// <summary>
/// Wms编号
/// </summary>
[Display(Name = "Wms编号")]
public string Number { get; set; }
/// <summary>
/// 底盘号
/// </summary>
[Display(Name = "底盘号")]
public string ChassisOperationSequenceNumber { get; set; }
/// <summary>
/// 描述
/// </summary>
[Display(Name = "描述")]
public string Description { get; set; }
/// <summary>
/// 底盘生产时间
/// </summary>
[Display(Name = "底盘生产时间")]
public DateTime ProduceDateTime { get; set; }
/// <summary>
/// 接收接口时间
/// </summary>
[Display(Name = "接收接口时间")]
public DateTime ReceiveInterfaceDateTime { get; set; }
/// <summary>
/// 执行位置排序列
/// </summary>
[Display(Name = "执行位置排序列")]
public long SortNumber { get; set; }
}

12
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/IChassisOperationSequenceAppService.cs

@ -0,0 +1,12 @@
using Win_in.Sfs.Shared.Application.Contracts;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public interface IChassisOperationSequenceAppService
:
ISfsStoreMasterAppServiceBase<ChassisOperationSequenceDTO, SfsStoreRequestInputBase, ChassisOperationSequenceEditInput, ChassisOperationSequenceDTO,
SfsStoreRequestInputBase>,
ISfsCheckStatusAppService
, ISfsUpsertAppService<ChassisOperationSequenceEditInput>
{
}

48
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/Inputs/ChassisOperationSequenceEditInput.cs

@ -0,0 +1,48 @@
using System;
using System.ComponentModel.DataAnnotations;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
/// <summary>
/// 底盘信息
/// </summary>
[Display(Name = "底盘信息")]
public class ChassisOperationSequenceEditInput
: SfsStoreCreateOrUpdateInputBase
{
/// <summary>
/// Wms编号
/// </summary>
[Display(Name = "Wms编号")]
public string Number { get; set; }
/// <summary>
/// 底盘号
/// </summary>
[Display(Name = "底盘号")]
public string ChassisOperationSequenceNumber { get; set; }
/// <summary>
/// 描述
/// </summary>
[Display(Name = "描述")]
public string Description { get; set; }
/// <summary>
/// 底盘生产时间
/// </summary>
[Display(Name = "底盘生产时间")]
public DateTime ProduceDateTime { get; set; }
/// <summary>
/// 接收接口时间
/// </summary>
[Display(Name = "接收接口时间")]
public DateTime ReceiveInterfaceDateTime { get; set; }
/// <summary>
/// 执行位置排序列
/// </summary>
[Display(Name = "执行位置排序列")]
public long SortNumber { get; set; }
}

51
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/Inputs/ChassisOperationSequenceImportInput.cs

@ -0,0 +1,51 @@
using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Application.Contracts.ExportAndImport;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
/// <summary>
/// 底盘信息
/// </summary>
[Display(Name = "底盘信息")]
public class ChassisOperationSequenceImportInput : SfsStoreImportInputBase
{
/// <summary>
/// Wms编号
/// </summary>
[Display(Name = "Wms编号")]
public string Number { get; set; }
/// <summary>
/// 底盘号
/// </summary>
[Display(Name = "底盘号")]
public string ChassisOperationSequenceNumber { get; set; }
/// <summary>
/// 描述
/// </summary>
[Display(Name = "描述")]
public string Description { get; set; }
/// <summary>
/// 底盘生产时间
/// </summary>
[Display(Name = "底盘生产时间")]
public DateTime ProduceDateTime { get; set; }
/// <summary>
/// 接收接口时间
/// </summary>
[Display(Name = "接收接口时间")]
public DateTime ReceiveInterfaceDateTime { get; set; }
/// <summary>
/// 执行位置排序列
/// </summary>
[Display(Name = "执行位置排序列")]
public long SortNumber { get; set; }
}

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/DTOs/AssembleJobDTO.cs

@ -30,13 +30,6 @@ public class AssembleJobDTO : SfsJobDTOBase<AssembleJobDetailDTO>
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string AssembleRequestNumber { get; set; } public string AssembleRequestNumber { get; set; }
/// <summary>
/// 车间
/// </summary>
[Display(Name = "车间")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Workshop { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库
/// </summary> /// </summary>

497
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/DTOs/AssembleJobDetailDTO.cs

@ -1,112 +1,519 @@
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class AssembleJobDetailDTO : SfsJobRecommendFromDetailDTOBase, IHasToLocation public class AssembleJobDetailDTO : SfsDetailDTOBase
{ {
#region 库存基础信息
/// <summary> /// <summary>
/// 请求库位 /// 物品代码
/// </summary> /// </summary>
[Display(Name = "请求库位")] public string ItemCode { get; set; }
public string RequestLocationCode { get; set; }
/// <summary>
/// 物品名称
/// </summary>
public string ItemName { get; set; }
/// <summary>
/// 物品描述1
/// </summary>
public string ItemDesc1 { get; set; }
/// <summary>
/// 物品描述2
/// </summary>
public string ItemDesc2 { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal StdPackQty { get; set; }
/// <summary>
/// 库存状态
/// </summary>
public EnumInventoryStatus Status { get; set; }
/// <summary>
/// 计量单位
/// </summary>
public string Uom { get; set; }
#endregion
#region 请求信息
/// <summary> /// <summary>
/// 到库位 /// 请求库位
/// </summary> /// </summary>
[Display(Name = "到库位")] public string RequestLocationCode { get; set; }
public string ToLocationCode { get; set; }
/// <summary> /// <summary>
/// 到库区 /// 到库区
/// </summary> /// </summary>
[Display(Name = "到库区")] public string RequestLocationArea { get; set; }
public string ToLocationArea { get; set; }
/// <summary> /// <summary>
/// 到库位组 /// 到库位组
/// </summary> /// </summary>
[Display(Name = "到库位组")] public string RequestLocationGroup { get; set; }
public string ToLocationGroup { get; set; }
/// <summary> /// <summary>
/// 到ERP库位 /// 到ERP库位
/// </summary> /// </summary>
[Display(Name = "到ERP库位")] public string RequestLocationErpCode { get; set; }
public string ToLocationErpCode { get; set; }
/// <summary> /// <summary>
/// 到仓库 /// 到仓库
/// </summary> /// </summary>
[Display(Name = "到仓库")] public string RequestWarehouseCode { get; set; }
public string ToWarehouseCode { get; set; }
/// <summary> /// <summary>
/// 在途库库位 /// 在途库库位
/// </summary> /// </summary>
[Display(Name = "在途库库位")]
public string OnTheWayLocationCode { get; set; } public string OnTheWayLocationCode { get; set; }
/// <summary> /// <summary>
/// 生产线 /// 生产线
/// </summary> /// </summary>
[Display(Name = "生产线")]
public string ProdLine { get; set; } public string ProdLine { get; set; }
/// <summary> /// <summary>
/// 工作中心 /// 位置码
/// </summary>
public string PositionCode { get; set; }
/// <summary>
/// 推荐的类型
/// </summary>
public EnumRecommendType RecommendType { get; set; }
/// <summary>
/// 需求数量
/// </summary>
public decimal RequestQty { get; set; }
#endregion
#region 推荐来源
/// <summary>
/// 推荐来源托标签
/// </summary>
public string RecommendFromContainerCode { get; set; }
/// <summary>
/// 推荐来源箱标签
/// </summary>
public string RecommendFromPackingCode { get; set; }
/// <summary>
/// 推荐来源批次供应商批次
/// </summary>
public string RecommendFromSupplierBatch { get; set; }
/// <summary>
/// 推荐来源批次到货时间
/// </summary>
public DateTime RecommendFromArriveDate { get; set; }
/// <summary>
/// 推荐来源批次生产时间
/// </summary>
public DateTime RecommendFromProduceDate { get; set; }
/// <summary>
/// 推荐来源批次过期时间
/// </summary>
public DateTime RecommendFromExpireDate { get; set; }
/// <summary>
/// 推荐来源批次排序
/// </summary>
public string RecommendFromLot { get; set; }
/// <summary>
/// 推荐来源库位
/// </summary> /// </summary>
[Display(Name = "工作中心")] public string RecommendFromLocationCode { get; set; }
public string WorkStation { get; set; }
/// <summary> /// <summary>
/// 过期时间 /// 推荐来源库区
/// </summary> /// </summary>
[Display(Name = "过期时间")] public string RecommendFromLocationArea { get; set; }
public DateTime ExpiredTime { get; set; }
/// <summary> /// <summary>
/// 工序 /// 推荐来源库位组
/// </summary> /// </summary>
[Display(Name = "工序")] public string RecommendFromLocationGroup { get; set; }
public string Operation { get; set; }
/// <summary> /// <summary>
/// 配送方式 /// 推荐来源ERP库位
/// </summary> /// </summary>
[Display(Name = "配送方式")] public string RecommendFromLocationErpCode { get; set; }
public EnumDistributionType DistributionType { get; set; }
/// <summary>
/// 推荐来源仓库
/// </summary>
public string RecommendFromWarehouseCode { get; set; }
/// <summary>
/// 推荐来源数量
/// </summary>
public decimal RecommendFromQty { get; set; }
#endregion
#region 推荐目标
/// <summary> /// <summary>
/// 取整方式 /// 推荐目标托标签
/// </summary> /// </summary>
[Display(Name = "取整方式")] public string RecommendToContainerCode { get; set; }
public EnumTruncType TruncType { get; set; }
/// <summary> /// <summary>
/// 取整后数量 /// 推荐目标箱标签
/// </summary> /// </summary>
[Display(Name = "取整后数量")] public string RecommendToPackingCode { get; set; }
public decimal RoundedQty { get; set; }
/// <summary> /// <summary>
/// 计划拆分规则 /// 推荐目标批次供应商批次
/// </summary> /// </summary>
[Display(Name = "计划拆分规则")] public string RecommendToSupplierBatch { get; set; }
public EnumPlannedSplitRule PlannedSplitRule { get; set; }
/// <summary> /// <summary>
/// 计划开始时间 /// 推荐目标批次到货时间
/// </summary> /// </summary>
[Display(Name = "计划开始时间")] public DateTime RecommendToArriveDate { get; set; }
public DateTime PlanBeginTime { get; set; }
/// <summary> /// <summary>
/// 每次配送数量 /// 推荐目标批次生产时间
/// </summary> /// </summary>
[Display(Name = "每次配送数量")] public DateTime RecommendToProduceDate { get; set; }
public decimal DeliveryQty { get; set; }
/// <summary>
/// 推荐目标批次过期时间
/// </summary>
public DateTime RecommendToExpireDate { get; set; }
/// <summary>
/// 推荐目标批次排序
/// </summary>
public string RecommendToLot { get; set; }
/// <summary>
/// 推荐目标库位
/// </summary>
public string RecommendToLocationCode { get; set; }
/// <summary>
/// 推荐目标库区
/// </summary>
public string RecommendToLocationArea { get; set; }
/// <summary>
/// 推荐目标库位组
/// </summary>
public string RecommendToLocationGroup { get; set; }
/// <summary>
/// 推荐目标ERP库位
/// </summary>
public string RecommendToLocationErpCode { get; set; }
/// <summary>
/// 推荐目标仓库
/// </summary>
public string RecommendToWarehouseCode { get; set; }
/// <summary>
/// 推荐目标数量
/// </summary>
public decimal RecommendToQty { get; set; }
#endregion
#region 库移来源
/// <summary>
/// 库移来源托标签
/// </summary>
public string TransferLibFromContainerCode { get; set; }
/// <summary>
/// 库移来源箱标签
/// </summary>
public string TransferLibFromPackingCode { get; set; }
/// <summary>
/// 库移来源批次供应商批次
/// </summary>
public string TransferLibFromSupplierBatch { get; set; }
/// <summary>
/// 库移来源批次到货时间
/// </summary>
public DateTime TransferLibFromArriveDate { get; set; }
/// <summary>
/// 库移来源批次生产时间
/// </summary>
public DateTime TransferLibFromProduceDate { get; set; }
/// <summary>
/// 库移来源批次过期时间
/// </summary>
public DateTime TransferLibFromExpireDate { get; set; }
/// <summary>
/// 库移来源批次排序
/// </summary>
public string TransferLibFromLot { get; set; }
/// <summary>
/// 库移来源库位
/// </summary>
public string TransferLibFromLocationCode { get; set; }
/// <summary>
/// 库移来源库区
/// </summary>
public string TransferLibFromLocationArea { get; set; }
/// <summary>
/// 库移来源库位组
/// </summary>
public string TransferLibFromLocationGroup { get; set; }
/// <summary>
/// 库移来源ERP库位
/// </summary>
public string TransferLibFromLocationErpCode { get; set; }
/// <summary>
/// 库移来源仓库
/// </summary>
public string TransferLibFromWarehouseCode { get; set; }
/// <summary>
/// 库移来源数量
/// </summary>
public decimal TransferLibFromQty { get; set; }
#endregion
#region 库移目标
/// <summary>
/// 库移目标托标签
/// </summary>
public string TransferLibToContainerCode { get; set; }
/// <summary>
/// 库移目标箱标签
/// </summary>
public string TransferLibToPackingCode { get; set; }
/// <summary>
/// 库移目标批次供应商批次
/// </summary>
public string TransferLibToSupplierBatch { get; set; }
/// <summary>
/// 库移目标批次到货时间
/// </summary>
public DateTime TransferLibToArriveDate { get; set; }
/// <summary>
/// 库移目标批次生产时间
/// </summary>
public DateTime TransferLibToProduceDate { get; set; }
/// <summary>
/// 库移目标批次过期时间
/// </summary>
public DateTime TransferLibToExpireDate { get; set; }
/// <summary>
/// 库移目标批次排序
/// </summary>
public string TransferLibToLot { get; set; }
/// <summary>
/// 库移目标库位
/// </summary>
public string TransferLibToLocationCode { get; set; }
/// <summary>
/// 库移目标库区
/// </summary>
public string TransferLibToLocationArea { get; set; }
/// <summary>
/// 库移目标库位组
/// </summary>
public string TransferLibToLocationGroup { get; set; }
/// <summary>
/// 库移目标ERP库位
/// </summary>
public string TransferLibToLocationErpCode { get; set; }
/// <summary>
/// 库移目标仓库
/// </summary>
public string TransferLibToWarehouseCode { get; set; }
/// <summary>
/// 库移目标数量
/// </summary>
public decimal TransferLibToQty { get; set; }
#endregion
#region 实际来源
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledFromContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledFromPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledFromSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledFromArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledFromProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledFromExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledFromLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledFromLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledFromLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledFromLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledFromLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledFromWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledFromQty { get; set; }
#endregion
#region 实际目标
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledToContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledToPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledToSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledToArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledToProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledToExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledToLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledToLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledToLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledToLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledToLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledToWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledToQty { get; set; }
#endregion
} }

11
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/IAssembleJobAppService.cs

@ -8,19 +8,8 @@ namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public interface IAssembleJobAppService public interface IAssembleJobAppService
: ISfsJobAppServiceBase<AssembleJobDTO, SfsJobRequestInputBase, AssembleJobCheckInput, AssembleJobEditInput> : ISfsJobAppServiceBase<AssembleJobDTO, SfsJobRequestInputBase, AssembleJobCheckInput, AssembleJobEditInput>
{ {
Task<List<AssembleJobDTO>> CheckJobExistByItemCodeAndLocationCode(string itemCode, string locationCode);
Task CancelByMaterialRequestAsync(string assembleNumber); Task CancelByMaterialRequestAsync(string assembleNumber);
Task<PagedResultDto<AssembleJobDTO>> GetListByTypeAsync(SfsJobRequestInputBase requestInput, string requestType,
bool includeDetails = false, CancellationToken cancellationToken = default);
Task<List<AssembleJobDTO>> GetByRequestNumberAsync(string requestNumber); Task<List<AssembleJobDTO>> GetByRequestNumberAsync(string requestNumber);
/// <summary>
/// 保存拆箱时涉及的明细修改
/// </summary>
/// <returns></returns>
Task<AssembleJobDTO> SaveDetail_SplitPackingAsync(SplitPacking_UpdateJobDetailInput input);
} }

507
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/Inputs/AssembleJobDetailInput.cs

@ -1,134 +1,519 @@
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class AssembleJobDetailInput : SfsJobRecommendFromDetailInputBase, IHasToLocation public class AssembleJobDetailInput : SfsDetailInputBase
{ {
#region 库存基础信息
/// <summary> /// <summary>
/// 请求库位 /// 物品代码
/// </summary> /// </summary>
[Display(Name = "请求库位")] public string ItemCode { get; set; }
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] /// <summary>
public string RequestLocationCode { get; set; } /// 物品名称
/// </summary>
public string ItemName { get; set; }
/// <summary>
/// 物品描述1
/// </summary>
public string ItemDesc1 { get; set; }
/// <summary>
/// 物品描述2
/// </summary>
public string ItemDesc2 { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal StdPackQty { get; set; }
/// <summary>
/// 库存状态
/// </summary>
public EnumInventoryStatus Status { get; set; }
/// <summary>
/// 计量单位
/// </summary>
public string Uom { get; set; }
#endregion
#region 请求信息
/// <summary> /// <summary>
/// 到库位 /// 请求库位
/// </summary> /// </summary>
[Display(Name = "到库位")] public string RequestLocationCode { get; set; }
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ToLocationCode { get; set; }
/// <summary> /// <summary>
/// 到库区 /// 到库区
/// </summary> /// </summary>
[Display(Name = "到库区")] public string RequestLocationArea { get; set; }
public string ToLocationArea { get; set; }
/// <summary> /// <summary>
/// 到库位组 /// 到库位组
/// </summary> /// </summary>
[Display(Name = "到库位组")] public string RequestLocationGroup { get; set; }
public string ToLocationGroup { get; set; }
/// <summary> /// <summary>
/// 到ERP库位 /// 到ERP库位
/// </summary> /// </summary>
[Display(Name = "到ERP库位")] public string RequestLocationErpCode { get; set; }
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ToLocationErpCode { get; set; }
/// <summary> /// <summary>
/// 到仓库 /// 到仓库
/// </summary> /// </summary>
[Display(Name = "到仓库")] public string RequestWarehouseCode { get; set; }
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ToWarehouseCode { get; set; }
/// <summary> /// <summary>
/// 在途库库位 /// 在途库库位
/// </summary> /// </summary>
[Display(Name = "在途库库位")]
public string OnTheWayLocationCode { get; set; } public string OnTheWayLocationCode { get; set; }
/// <summary> /// <summary>
/// 生产线 /// 生产线
/// </summary> /// </summary>
[Display(Name = "生产线")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ProdLine { get; set; } public string ProdLine { get; set; }
/// <summary> /// <summary>
/// 工作中心 /// 位置码
/// </summary> /// </summary>
[Display(Name = "工作中心")] public string PositionCode { get; set; }
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string WorkStation { get; set; }
/// <summary> /// <summary>
/// 过期时间 /// 推荐的类型
/// </summary> /// </summary>
[Display(Name = "过期时间")] public EnumRecommendType RecommendType { get; set; }
[Required(ErrorMessage = "{0}是必填项")]
public DateTime ExpiredTime { get; set; }
/// <summary> /// <summary>
/// 工序 /// 需求数量
/// </summary> /// </summary>
[Display(Name = "工序")] public decimal RequestQty { get; set; }
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Operation { get; set; } #endregion
#region 推荐来源
/// <summary> /// <summary>
/// 配送方式 /// 推荐来源托标签
/// </summary> /// </summary>
[Display(Name = "配送方式")] public string RecommendFromContainerCode { get; set; }
public EnumDistributionType DistributionType { get; set; }
/// <summary> /// <summary>
/// 取整方式 /// 推荐来源箱标签
/// </summary> /// </summary>
[Display(Name = "取整方式")] public string RecommendFromPackingCode { get; set; }
public EnumTruncType TruncType { get; set; }
/// <summary> /// <summary>
/// 取整后数量 /// 推荐来源批次供应商批次
/// </summary> /// </summary>
[Display(Name = "取整后数量")] public string RecommendFromSupplierBatch { get; set; }
public decimal RoundedQty { get; set; }
/// <summary> /// <summary>
/// 计划拆分规则 /// 推荐来源批次到货时间
/// </summary> /// </summary>
[Display(Name = "计划拆分规则")] public DateTime RecommendFromArriveDate { get; set; }
public EnumPlannedSplitRule PlannedSplitRule { get; set; }
/// <summary> /// <summary>
/// 计划开始时间 /// 推荐来源批次生产时间
/// </summary> /// </summary>
[Display(Name = "计划开始时间")] public DateTime RecommendFromProduceDate { get; set; }
public DateTime PlanBeginTime { get; set; }
/// <summary> /// <summary>
/// 每次配送数量 /// 推荐来源批次过期时间
/// </summary> /// </summary>
[Display(Name = "每次配送数量")] public DateTime RecommendFromExpireDate { get; set; }
public decimal DeliveryQty { get; set; }
/// <summary> /// <summary>
/// 位置码 /// 推荐来源批次排序
/// </summary> /// </summary>
public string PositionCode { get; set; } public string RecommendFromLot { get; set; }
/// <summary> /// <summary>
/// 推荐类型 /// 推荐来源库位
/// </summary> /// </summary>
public EnumRecommendType RecommendType { get; set; } public string RecommendFromLocationCode { get; set; }
/// <summary>
/// 推荐来源库区
/// </summary>
public string RecommendFromLocationArea { get; set; }
/// <summary>
/// 推荐来源库位组
/// </summary>
public string RecommendFromLocationGroup { get; set; }
/// <summary>
/// 推荐来源ERP库位
/// </summary>
public string RecommendFromLocationErpCode { get; set; }
/// <summary>
/// 推荐来源仓库
/// </summary>
public string RecommendFromWarehouseCode { get; set; }
/// <summary>
/// 推荐来源数量
/// </summary>
public decimal RecommendFromQty { get; set; }
#endregion
#region 推荐目标
/// <summary>
/// 推荐目标托标签
/// </summary>
public string RecommendToContainerCode { get; set; }
/// <summary>
/// 推荐目标箱标签
/// </summary>
public string RecommendToPackingCode { get; set; }
/// <summary>
/// 推荐目标批次供应商批次
/// </summary>
public string RecommendToSupplierBatch { get; set; }
/// <summary>
/// 推荐目标批次到货时间
/// </summary>
public DateTime RecommendToArriveDate { get; set; }
/// <summary>
/// 推荐目标批次生产时间
/// </summary>
public DateTime RecommendToProduceDate { get; set; }
/// <summary>
/// 推荐目标批次过期时间
/// </summary>
public DateTime RecommendToExpireDate { get; set; }
/// <summary>
/// 推荐目标批次排序
/// </summary>
public string RecommendToLot { get; set; }
/// <summary>
/// 推荐目标库位
/// </summary>
public string RecommendToLocationCode { get; set; }
/// <summary>
/// 推荐目标库区
/// </summary>
public string RecommendToLocationArea { get; set; }
/// <summary>
/// 推荐目标库位组
/// </summary>
public string RecommendToLocationGroup { get; set; }
/// <summary>
/// 推荐目标ERP库位
/// </summary>
public string RecommendToLocationErpCode { get; set; }
/// <summary>
/// 推荐目标仓库
/// </summary>
public string RecommendToWarehouseCode { get; set; }
/// <summary>
/// 推荐目标数量
/// </summary>
public decimal RecommendToQty { get; set; }
#endregion
#region 库移来源
/// <summary>
/// 库移来源托标签
/// </summary>
public string TransferLibFromContainerCode { get; set; }
/// <summary>
/// 库移来源箱标签
/// </summary>
public string TransferLibFromPackingCode { get; set; }
/// <summary>
/// 库移来源批次供应商批次
/// </summary>
public string TransferLibFromSupplierBatch { get; set; }
/// <summary>
/// 库移来源批次到货时间
/// </summary>
public DateTime TransferLibFromArriveDate { get; set; }
/// <summary>
/// 库移来源批次生产时间
/// </summary>
public DateTime TransferLibFromProduceDate { get; set; }
/// <summary>
/// 库移来源批次过期时间
/// </summary>
public DateTime TransferLibFromExpireDate { get; set; }
/// <summary>
/// 库移来源批次排序
/// </summary>
public string TransferLibFromLot { get; set; }
/// <summary>
/// 库移来源库位
/// </summary>
public string TransferLibFromLocationCode { get; set; }
/// <summary>
/// 库移来源库区
/// </summary>
public string TransferLibFromLocationArea { get; set; }
/// <summary>
/// 库移来源库位组
/// </summary>
public string TransferLibFromLocationGroup { get; set; }
/// <summary>
/// 库移来源ERP库位
/// </summary>
public string TransferLibFromLocationErpCode { get; set; }
/// <summary>
/// 库移来源仓库
/// </summary>
public string TransferLibFromWarehouseCode { get; set; }
/// <summary>
/// 库移来源数量
/// </summary>
public decimal TransferLibFromQty { get; set; }
#endregion
#region 库移目标
/// <summary>
/// 库移目标托标签
/// </summary>
public string TransferLibToContainerCode { get; set; }
/// <summary>
/// 库移目标箱标签
/// </summary>
public string TransferLibToPackingCode { get; set; }
/// <summary>
/// 库移目标批次供应商批次
/// </summary>
public string TransferLibToSupplierBatch { get; set; }
/// <summary>
/// 库移目标批次到货时间
/// </summary>
public DateTime TransferLibToArriveDate { get; set; }
/// <summary>
/// 库移目标批次生产时间
/// </summary>
public DateTime TransferLibToProduceDate { get; set; }
/// <summary>
/// 库移目标批次过期时间
/// </summary>
public DateTime TransferLibToExpireDate { get; set; }
/// <summary>
/// 库移目标批次排序
/// </summary>
public string TransferLibToLot { get; set; }
/// <summary>
/// 库移目标库位
/// </summary>
public string TransferLibToLocationCode { get; set; }
/// <summary>
/// 库移目标库区
/// </summary>
public string TransferLibToLocationArea { get; set; }
/// <summary>
/// 库移目标库位组
/// </summary>
public string TransferLibToLocationGroup { get; set; }
/// <summary>
/// 库移目标ERP库位
/// </summary>
public string TransferLibToLocationErpCode { get; set; }
/// <summary>
/// 库移目标仓库
/// </summary>
public string TransferLibToWarehouseCode { get; set; }
/// <summary>
/// 库移目标数量
/// </summary>
public decimal TransferLibToQty { get; set; }
#endregion
#region 实际来源
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledFromContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledFromPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledFromSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledFromArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledFromProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledFromExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledFromLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledFromLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledFromLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledFromLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledFromLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledFromWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledFromQty { get; set; }
#endregion
#region 实际目标
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledToContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledToPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledToSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledToArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledToProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledToExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledToLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledToLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledToLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledToLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledToLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledToWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledToQty { get; set; }
#endregion
} }

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/Inputs/AssembleJobEditInput.cs

@ -22,7 +22,7 @@ public class AssembleJobEditInput : SfsJobCreateUpdateInputBase, ISfsJobCreateIn
[Display(Name = "要货单号")] [Display(Name = "要货单号")]
[Required(ErrorMessage = "{0}是必填项")] [Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string AssembleRequestNumber { get; set; } public string AssembleIssueRequestsNumber { get; set; }
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料请求类型

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

@ -31,13 +31,6 @@ public class CoatingIssueJobDTO : SfsJobDTOBase<CoatingIssueJobDetailDTO>
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string MaterialRequestNumber { get; set; } public string MaterialRequestNumber { get; set; }
/// <summary>
/// 车间
/// </summary>
[Display(Name = "车间")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Workshop { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库
/// </summary> /// </summary>

500
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDetailDTO.cs

@ -1,113 +1,519 @@
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class CoatingIssueJobDetailDTO : SfsJobRecommendFromDetailDTOBase, IHasToLocation public class CoatingIssueJobDetailDTO : SfsDetailDTOBase
{ {
#region 库存基础信息
/// <summary> /// <summary>
/// 请求库位 /// 物品代码
/// </summary> /// </summary>
[Display(Name = "请求库位")] public string ItemCode { get; set; }
public string RequestLocationCode { get; set; }
/// <summary>
/// 物品名称
/// </summary>
public string ItemName { get; set; }
/// <summary>
/// 物品描述1
/// </summary>
public string ItemDesc1 { get; set; }
/// <summary>
/// 物品描述2
/// </summary>
public string ItemDesc2 { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal StdPackQty { get; set; }
/// <summary>
/// 库存状态
/// </summary>
public EnumInventoryStatus Status { get; set; }
/// <summary>
/// 计量单位
/// </summary>
public string Uom { get; set; }
#endregion
#region 请求信息
/// <summary> /// <summary>
/// 到库位 /// 请求库位
/// </summary> /// </summary>
[Display(Name = "到库位")] public string RequestLocationCode { get; set; }
public string ToLocationCode { get; set; }
/// <summary> /// <summary>
/// 到库区 /// 到库区
/// </summary> /// </summary>
[Display(Name = "到库区")] public string RequestLocationArea { get; set; }
public string ToLocationArea { get; set; }
/// <summary> /// <summary>
/// 到库位组 /// 到库位组
/// </summary> /// </summary>
[Display(Name = "到库位组")] public string RequestLocationGroup { get; set; }
public string ToLocationGroup { get; set; }
/// <summary> /// <summary>
/// 到ERP库位 /// 到ERP库位
/// </summary> /// </summary>
[Display(Name = "到ERP库位")] public string RequestLocationErpCode { get; set; }
public string ToLocationErpCode { get; set; }
/// <summary> /// <summary>
/// 到仓库 /// 到仓库
/// </summary> /// </summary>
[Display(Name = "到仓库")] public string RequestWarehouseCode { get; set; }
public string ToWarehouseCode { get; set; }
/// <summary> /// <summary>
/// 在途库库位 /// 在途库库位
/// </summary> /// </summary>
[Display(Name = "在途库库位")]
public string OnTheWayLocationCode { get; set; } public string OnTheWayLocationCode { get; set; }
/// <summary> /// <summary>
/// 生产线 /// 生产线
/// </summary> /// </summary>
[Display(Name = "生产线")]
public string ProdLine { get; set; } public string ProdLine { get; set; }
/// <summary> /// <summary>
/// 工作中心 /// 位置码
/// </summary>
public string PositionCode { get; set; }
/// <summary>
/// 推荐的类型
/// </summary>
public EnumRecommendType RecommendType { get; set; }
/// <summary>
/// 需求数量
/// </summary>
public decimal RequestQty { get; set; }
#endregion
#region 推荐来源
/// <summary>
/// 推荐来源托标签
/// </summary>
public string RecommendFromContainerCode { get; set; }
/// <summary>
/// 推荐来源箱标签
/// </summary>
public string RecommendFromPackingCode { get; set; }
/// <summary>
/// 推荐来源批次供应商批次
/// </summary>
public string RecommendFromSupplierBatch { get; set; }
/// <summary>
/// 推荐来源批次到货时间
/// </summary>
public DateTime RecommendFromArriveDate { get; set; }
/// <summary>
/// 推荐来源批次生产时间
/// </summary>
public DateTime RecommendFromProduceDate { get; set; }
/// <summary>
/// 推荐来源批次过期时间
/// </summary>
public DateTime RecommendFromExpireDate { get; set; }
/// <summary>
/// 推荐来源批次排序
/// </summary>
public string RecommendFromLot { get; set; }
/// <summary>
/// 推荐来源库位
/// </summary> /// </summary>
[Display(Name = "工作中心")] public string RecommendFromLocationCode { get; set; }
public string WorkStation { get; set; }
/// <summary> /// <summary>
/// 过期时间 /// 推荐来源库区
/// </summary> /// </summary>
[Display(Name = "过期时间")] public string RecommendFromLocationArea { get; set; }
public DateTime ExpiredTime { get; set; }
/// <summary> /// <summary>
/// 工序 /// 推荐来源库位组
/// </summary> /// </summary>
[Display(Name = "工序")] public string RecommendFromLocationGroup { get; set; }
public string Operation { get; set; }
/// <summary> /// <summary>
/// 配送方式 /// 推荐来源ERP库位
/// </summary> /// </summary>
[Display(Name = "配送方式")] public string RecommendFromLocationErpCode { get; set; }
public EnumDistributionType DistributionType { get; set; }
/// <summary>
/// 推荐来源仓库
/// </summary>
public string RecommendFromWarehouseCode { get; set; }
/// <summary>
/// 推荐来源数量
/// </summary>
public decimal RecommendFromQty { get; set; }
#endregion
#region 推荐目标
/// <summary> /// <summary>
/// 取整方式 /// 推荐目标托标签
/// </summary> /// </summary>
[Display(Name = "取整方式")] public string RecommendToContainerCode { get; set; }
public EnumTruncType TruncType { get; set; }
/// <summary> /// <summary>
/// 取整后数量 /// 推荐目标箱标签
/// </summary> /// </summary>
[Display(Name = "取整后数量")] public string RecommendToPackingCode { get; set; }
public decimal RoundedQty { get; set; }
/// <summary> /// <summary>
/// 计划拆分规则 /// 推荐目标批次供应商批次
/// </summary> /// </summary>
[Display(Name = "计划拆分规则")] public string RecommendToSupplierBatch { get; set; }
public EnumPlannedSplitRule PlannedSplitRule { get; set; }
/// <summary> /// <summary>
/// 计划开始时间 /// 推荐目标批次到货时间
/// </summary> /// </summary>
[Display(Name = "计划开始时间")] public DateTime RecommendToArriveDate { get; set; }
public DateTime PlanBeginTime { get; set; }
/// <summary> /// <summary>
/// 每次配送数量 /// 推荐目标批次生产时间
/// </summary> /// </summary>
[Display(Name = "每次配送数量")] public DateTime RecommendToProduceDate { get; set; }
public decimal DeliveryQty { get; set; }
/// <summary>
/// 推荐目标批次过期时间
/// </summary>
public DateTime RecommendToExpireDate { get; set; }
/// <summary>
/// 推荐目标批次排序
/// </summary>
public string RecommendToLot { get; set; }
/// <summary>
/// 推荐目标库位
/// </summary>
public string RecommendToLocationCode { get; set; }
/// <summary>
/// 推荐目标库区
/// </summary>
public string RecommendToLocationArea { get; set; }
/// <summary>
/// 推荐目标库位组
/// </summary>
public string RecommendToLocationGroup { get; set; }
/// <summary>
/// 推荐目标ERP库位
/// </summary>
public string RecommendToLocationErpCode { get; set; }
/// <summary>
/// 推荐目标仓库
/// </summary>
public string RecommendToWarehouseCode { get; set; }
/// <summary>
/// 推荐目标数量
/// </summary>
public decimal RecommendToQty { get; set; }
#endregion
#region 库移来源
/// <summary>
/// 库移来源托标签
/// </summary>
public string TransferLibFromContainerCode { get; set; }
/// <summary>
/// 库移来源箱标签
/// </summary>
public string TransferLibFromPackingCode { get; set; }
/// <summary>
/// 库移来源批次供应商批次
/// </summary>
public string TransferLibFromSupplierBatch { get; set; }
/// <summary>
/// 库移来源批次到货时间
/// </summary>
public DateTime TransferLibFromArriveDate { get; set; }
/// <summary>
/// 库移来源批次生产时间
/// </summary>
public DateTime TransferLibFromProduceDate { get; set; }
/// <summary>
/// 库移来源批次过期时间
/// </summary>
public DateTime TransferLibFromExpireDate { get; set; }
/// <summary>
/// 库移来源批次排序
/// </summary>
public string TransferLibFromLot { get; set; }
/// <summary>
/// 库移来源库位
/// </summary>
public string TransferLibFromLocationCode { get; set; }
/// <summary>
/// 库移来源库区
/// </summary>
public string TransferLibFromLocationArea { get; set; }
/// <summary>
/// 库移来源库位组
/// </summary>
public string TransferLibFromLocationGroup { get; set; }
/// <summary>
/// 库移来源ERP库位
/// </summary>
public string TransferLibFromLocationErpCode { get; set; }
/// <summary>
/// 库移来源仓库
/// </summary>
public string TransferLibFromWarehouseCode { get; set; }
/// <summary>
/// 库移来源数量
/// </summary>
public decimal TransferLibFromQty { get; set; }
#endregion
#region 库移目标
/// <summary>
/// 库移目标托标签
/// </summary>
public string TransferLibToContainerCode { get; set; }
/// <summary>
/// 库移目标箱标签
/// </summary>
public string TransferLibToPackingCode { get; set; }
/// <summary>
/// 库移目标批次供应商批次
/// </summary>
public string TransferLibToSupplierBatch { get; set; }
/// <summary>
/// 库移目标批次到货时间
/// </summary>
public DateTime TransferLibToArriveDate { get; set; }
/// <summary>
/// 库移目标批次生产时间
/// </summary>
public DateTime TransferLibToProduceDate { get; set; }
/// <summary>
/// 库移目标批次过期时间
/// </summary>
public DateTime TransferLibToExpireDate { get; set; }
/// <summary>
/// 库移目标批次排序
/// </summary>
public string TransferLibToLot { get; set; }
/// <summary>
/// 库移目标库位
/// </summary>
public string TransferLibToLocationCode { get; set; }
/// <summary>
/// 库移目标库区
/// </summary>
public string TransferLibToLocationArea { get; set; }
/// <summary>
/// 库移目标库位组
/// </summary>
public string TransferLibToLocationGroup { get; set; }
/// <summary>
/// 库移目标ERP库位
/// </summary>
public string TransferLibToLocationErpCode { get; set; }
/// <summary>
/// 库移目标仓库
/// </summary>
public string TransferLibToWarehouseCode { get; set; }
/// <summary>
/// 库移目标数量
/// </summary>
public decimal TransferLibToQty { get; set; }
#endregion
#region 实际来源
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledFromContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledFromPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledFromSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledFromArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledFromProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledFromExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledFromLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledFromLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledFromLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledFromLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledFromLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledFromWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledFromQty { get; set; }
#endregion
#region 实际目标
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledToContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledToPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledToSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledToArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledToProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledToExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledToLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledToLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledToLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledToLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledToLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledToWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledToQty { get; set; }
#endregion
} }

510
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDetailInput.cs

@ -1,135 +1,519 @@
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class CoatingIssueJobDetailInput : SfsJobRecommendFromDetailInputBase, IHasToLocation public class CoatingIssueJobDetailInput : SfsDetailInputBase
{ {
#region 库存基础信息
/// <summary> /// <summary>
/// 请求库位 /// 物品代码
/// </summary> /// </summary>
[Display(Name = "请求库位")] public string ItemCode { get; set; }
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] /// <summary>
public string RequestLocationCode { get; set; } /// 物品名称
/// </summary>
public string ItemName { get; set; }
/// <summary>
/// 物品描述1
/// </summary>
public string ItemDesc1 { get; set; }
/// <summary>
/// 物品描述2
/// </summary>
public string ItemDesc2 { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal StdPackQty { get; set; }
/// <summary>
/// 库存状态
/// </summary>
public EnumInventoryStatus Status { get; set; }
/// <summary>
/// 计量单位
/// </summary>
public string Uom { get; set; }
#endregion
#region 请求信息
/// <summary> /// <summary>
/// 到库位 /// 请求库位
/// </summary> /// </summary>
[Display(Name = "到库位")] public string RequestLocationCode { get; set; }
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ToLocationCode { get; set; }
/// <summary> /// <summary>
/// 到库区 /// 到库区
/// </summary> /// </summary>
[Display(Name = "到库区")] public string RequestLocationArea { get; set; }
public string ToLocationArea { get; set; }
/// <summary> /// <summary>
/// 到库位组 /// 到库位组
/// </summary> /// </summary>
[Display(Name = "到库位组")] public string RequestLocationGroup { get; set; }
public string ToLocationGroup { get; set; }
/// <summary> /// <summary>
/// 到ERP库位 /// 到ERP库位
/// </summary> /// </summary>
[Display(Name = "到ERP库位")] public string RequestLocationErpCode { get; set; }
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ToLocationErpCode { get; set; }
/// <summary> /// <summary>
/// 到仓库 /// 到仓库
/// </summary> /// </summary>
[Display(Name = "到仓库")] public string RequestWarehouseCode { get; set; }
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ToWarehouseCode { get; set; }
/// <summary> /// <summary>
/// 在途库库位 /// 在途库库位
/// </summary> /// </summary>
[Display(Name = "在途库库位")]
public string OnTheWayLocationCode { get; set; } public string OnTheWayLocationCode { get; set; }
/// <summary> /// <summary>
/// 生产线 /// 生产线
/// </summary> /// </summary>
[Display(Name = "生产线")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ProdLine { get; set; } public string ProdLine { get; set; }
/// <summary> /// <summary>
/// 工作中心 /// 位置码
/// </summary> /// </summary>
[Display(Name = "工作中心")] public string PositionCode { get; set; }
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string WorkStation { get; set; }
/// <summary> /// <summary>
/// 过期时间 /// 推荐的类型
/// </summary> /// </summary>
[Display(Name = "过期时间")] public EnumRecommendType RecommendType { get; set; }
[Required(ErrorMessage = "{0}是必填项")]
public DateTime ExpiredTime { get; set; }
/// <summary> /// <summary>
/// 工序 /// 需求数量
/// </summary> /// </summary>
[Display(Name = "工序")] public decimal RequestQty { get; set; }
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Operation { get; set; } #endregion
#region 推荐来源
/// <summary> /// <summary>
/// 配送方式 /// 推荐来源托标签
/// </summary> /// </summary>
[Display(Name = "配送方式")] public string RecommendFromContainerCode { get; set; }
public EnumDistributionType DistributionType { get; set; }
/// <summary> /// <summary>
/// 取整方式 /// 推荐来源箱标签
/// </summary> /// </summary>
[Display(Name = "取整方式")] public string RecommendFromPackingCode { get; set; }
public EnumTruncType TruncType { get; set; }
/// <summary> /// <summary>
/// 取整后数量 /// 推荐来源批次供应商批次
/// </summary> /// </summary>
[Display(Name = "取整后数量")] public string RecommendFromSupplierBatch { get; set; }
public decimal RoundedQty { get; set; }
/// <summary> /// <summary>
/// 计划拆分规则 /// 推荐来源批次到货时间
/// </summary> /// </summary>
[Display(Name = "计划拆分规则")] public DateTime RecommendFromArriveDate { get; set; }
public EnumPlannedSplitRule PlannedSplitRule { get; set; }
/// <summary> /// <summary>
/// 计划开始时间 /// 推荐来源批次生产时间
/// </summary> /// </summary>
[Display(Name = "计划开始时间")] public DateTime RecommendFromProduceDate { get; set; }
public DateTime PlanBeginTime { get; set; }
/// <summary> /// <summary>
/// 每次配送数量 /// 推荐来源批次过期时间
/// </summary> /// </summary>
[Display(Name = "每次配送数量")] public DateTime RecommendFromExpireDate { get; set; }
public decimal DeliveryQty { get; set; }
/// <summary> /// <summary>
/// 位置码 /// 推荐来源批次排序
/// </summary> /// </summary>
public string PositionCode { get; set; } public string RecommendFromLot { get; set; }
/// <summary> /// <summary>
/// 推荐类型 /// 推荐来源库位
/// </summary> /// </summary>
public EnumRecommendType RecommendType { get; set; } public string RecommendFromLocationCode { get; set; }
/// <summary>
/// 推荐来源库区
/// </summary>
public string RecommendFromLocationArea { get; set; }
/// <summary>
/// 推荐来源库位组
/// </summary>
public string RecommendFromLocationGroup { get; set; }
/// <summary>
/// 推荐来源ERP库位
/// </summary>
public string RecommendFromLocationErpCode { get; set; }
/// <summary>
/// 推荐来源仓库
/// </summary>
public string RecommendFromWarehouseCode { get; set; }
/// <summary>
/// 推荐来源数量
/// </summary>
public decimal RecommendFromQty { get; set; }
#endregion
#region 推荐目标
/// <summary>
/// 推荐目标托标签
/// </summary>
public string RecommendToContainerCode { get; set; }
/// <summary>
/// 推荐目标箱标签
/// </summary>
public string RecommendToPackingCode { get; set; }
/// <summary>
/// 推荐目标批次供应商批次
/// </summary>
public string RecommendToSupplierBatch { get; set; }
/// <summary>
/// 推荐目标批次到货时间
/// </summary>
public DateTime RecommendToArriveDate { get; set; }
/// <summary>
/// 推荐目标批次生产时间
/// </summary>
public DateTime RecommendToProduceDate { get; set; }
/// <summary>
/// 推荐目标批次过期时间
/// </summary>
public DateTime RecommendToExpireDate { get; set; }
/// <summary>
/// 推荐目标批次排序
/// </summary>
public string RecommendToLot { get; set; }
/// <summary>
/// 推荐目标库位
/// </summary>
public string RecommendToLocationCode { get; set; }
/// <summary>
/// 推荐目标库区
/// </summary>
public string RecommendToLocationArea { get; set; }
/// <summary>
/// 推荐目标库位组
/// </summary>
public string RecommendToLocationGroup { get; set; }
/// <summary>
/// 推荐目标ERP库位
/// </summary>
public string RecommendToLocationErpCode { get; set; }
/// <summary>
/// 推荐目标仓库
/// </summary>
public string RecommendToWarehouseCode { get; set; }
/// <summary>
/// 推荐目标数量
/// </summary>
public decimal RecommendToQty { get; set; }
#endregion
#region 库移来源
/// <summary>
/// 库移来源托标签
/// </summary>
public string TransferLibFromContainerCode { get; set; }
/// <summary>
/// 库移来源箱标签
/// </summary>
public string TransferLibFromPackingCode { get; set; }
/// <summary>
/// 库移来源批次供应商批次
/// </summary>
public string TransferLibFromSupplierBatch { get; set; }
/// <summary>
/// 库移来源批次到货时间
/// </summary>
public DateTime TransferLibFromArriveDate { get; set; }
/// <summary>
/// 库移来源批次生产时间
/// </summary>
public DateTime TransferLibFromProduceDate { get; set; }
/// <summary>
/// 库移来源批次过期时间
/// </summary>
public DateTime TransferLibFromExpireDate { get; set; }
/// <summary>
/// 库移来源批次排序
/// </summary>
public string TransferLibFromLot { get; set; }
/// <summary>
/// 库移来源库位
/// </summary>
public string TransferLibFromLocationCode { get; set; }
/// <summary>
/// 库移来源库区
/// </summary>
public string TransferLibFromLocationArea { get; set; }
/// <summary>
/// 库移来源库位组
/// </summary>
public string TransferLibFromLocationGroup { get; set; }
/// <summary>
/// 库移来源ERP库位
/// </summary>
public string TransferLibFromLocationErpCode { get; set; }
/// <summary>
/// 库移来源仓库
/// </summary>
public string TransferLibFromWarehouseCode { get; set; }
/// <summary>
/// 库移来源数量
/// </summary>
public decimal TransferLibFromQty { get; set; }
#endregion
#region 库移目标
/// <summary>
/// 库移目标托标签
/// </summary>
public string TransferLibToContainerCode { get; set; }
/// <summary>
/// 库移目标箱标签
/// </summary>
public string TransferLibToPackingCode { get; set; }
/// <summary>
/// 库移目标批次供应商批次
/// </summary>
public string TransferLibToSupplierBatch { get; set; }
/// <summary>
/// 库移目标批次到货时间
/// </summary>
public DateTime TransferLibToArriveDate { get; set; }
/// <summary>
/// 库移目标批次生产时间
/// </summary>
public DateTime TransferLibToProduceDate { get; set; }
/// <summary>
/// 库移目标批次过期时间
/// </summary>
public DateTime TransferLibToExpireDate { get; set; }
/// <summary>
/// 库移目标批次排序
/// </summary>
public string TransferLibToLot { get; set; }
/// <summary>
/// 库移目标库位
/// </summary>
public string TransferLibToLocationCode { get; set; }
/// <summary>
/// 库移目标库区
/// </summary>
public string TransferLibToLocationArea { get; set; }
/// <summary>
/// 库移目标库位组
/// </summary>
public string TransferLibToLocationGroup { get; set; }
/// <summary>
/// 库移目标ERP库位
/// </summary>
public string TransferLibToLocationErpCode { get; set; }
/// <summary>
/// 库移目标仓库
/// </summary>
public string TransferLibToWarehouseCode { get; set; }
/// <summary>
/// 库移目标数量
/// </summary>
public decimal TransferLibToQty { get; set; }
#endregion
#region 实际来源
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledFromContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledFromPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledFromSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledFromArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledFromProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledFromExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledFromLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledFromLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledFromLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledFromLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledFromLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledFromWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledFromQty { get; set; }
#endregion
#region 实际目标
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledToContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledToPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledToSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledToArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledToProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledToExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledToLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledToLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledToLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledToLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledToLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledToWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledToQty { get; set; }
#endregion
} }

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobPermissions.cs

@ -2,7 +2,7 @@ using Volo.Abp.Authorization.Permissions;
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;
namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public static class CoatingIssueJobPermissions public static class CoatingIssueJobPermissions
{ {

14
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/ICoatingIssueJobAppService.cs

@ -9,19 +9,7 @@ namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
public interface ICoatingIssueJobAppService public interface ICoatingIssueJobAppService
: ISfsJobAppServiceBase<CoatingIssueJobDTO, SfsJobRequestInputBase, CoatingIssueJobCheckInput, CoatingIssueJobEditInput> : ISfsJobAppServiceBase<CoatingIssueJobDTO, SfsJobRequestInputBase, CoatingIssueJobCheckInput, CoatingIssueJobEditInput>
{ {
Task<List<CoatingIssueJobDTO>> CheckJobExistByItemCodeAndLocationCode(string itemCode, string locationCode); Task CancelByMaterialRequestAsync(string coatingIssueNumber);
Task CancelByMaterialRequestAsync(string materialNumber);
Task<PagedResultDto<CoatingIssueJobDTO>> GetListByTypeAsync(SfsJobRequestInputBase requestInput, string requestType,
bool includeDetails = false, CancellationToken cancellationToken = default);
Task<List<CoatingIssueJobDTO>> GetByRequestNumberAsync(string requestNumber); Task<List<CoatingIssueJobDTO>> GetByRequestNumberAsync(string requestNumber);
/// <summary>
/// 保存拆箱时涉及的明细修改
/// </summary>
/// <returns></returns>
Task<CoatingIssueJobDTO> SaveDetail_SplitPackingAsync(SplitPacking_UpdateJobDetailInput input);
} }

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/DTOs/AssembleNoteDTO.cs

@ -13,13 +13,6 @@ public class AssembleNoteDTO : SfsStoreDTOBase<AssembleNoteDetailDTO>, IHasJobNu
[Display(Name = "任务ID")] [Display(Name = "任务ID")]
public string JobNumber { get; set; } public string JobNumber { get; set; }
/// <summary>
/// 车间
/// </summary>
[Display(Name = "车间")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Workshop { get; set; }
/// <summary> /// <summary>
/// 请求代码 /// 请求代码
/// </summary> /// </summary>

511
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/DTOs/AssembleNoteDetailDTO.cs

@ -1,42 +1,519 @@
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class AssembleNoteDetailDTO : SfsStoreRecommendFromDetailWithFromToDTOBase public class AssembleNoteDetailDTO : SfsDetailDTOBase
{ {
#region 库存基础信息
/// <summary> /// <summary>
/// 发料时间 /// 物品代码
/// </summary> /// </summary>
[Display(Name = "发料时间")] public string ItemCode { get; set; }
public DateTime IssueTime { get; set; }
/// <summary> /// <summary>
/// 过期时间 /// 物品名称
/// </summary> /// </summary>
[Display(Name = "过期时间")] public string ItemName { get; set; }
public DateTime ExpiredTime { get; set; }
/// <summary> /// <summary>
/// 生产线 /// 物品描述1
/// </summary> /// </summary>
[Display(Name = "生产线")] public string ItemDesc1 { get; set; }
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ProdLine { get; set; } /// <summary>
/// 物品描述2
/// </summary>
public string ItemDesc2 { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal StdPackQty { get; set; }
/// <summary>
/// 库存状态
/// </summary>
public EnumInventoryStatus Status { get; set; }
/// <summary>
/// 计量单位
/// </summary>
public string Uom { get; set; }
#endregion
#region 请求信息
/// <summary>
/// 请求库位
/// </summary>
public string RequestLocationCode { get; set; }
/// <summary>
/// 到库区
/// </summary>
public string RequestLocationArea { get; set; }
/// <summary>
/// 到库位组
/// </summary>
public string RequestLocationGroup { get; set; }
/// <summary>
/// 到ERP库位
/// </summary>
public string RequestLocationErpCode { get; set; }
/// <summary> /// <summary>
/// 工作中心 /// 到仓库
/// </summary> /// </summary>
[Display(Name = "工作中心")] public string RequestWarehouseCode { get; set; }
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string WorkStation { get; set; }
/// <summary> /// <summary>
/// 在途库库位 /// 在途库库位
/// </summary> /// </summary>
[Display(Name = "在途库库位")]
public string OnTheWayLocationCode { get; set; } public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 生产线
/// </summary>
public string ProdLine { get; set; }
/// <summary>
/// 位置码
/// </summary>
public string PositionCode { get; set; }
/// <summary>
/// 推荐的类型
/// </summary>
public EnumRecommendType RecommendType { get; set; }
/// <summary>
/// 需求数量
/// </summary>
public decimal RequestQty { get; set; }
#endregion
#region 推荐来源
/// <summary>
/// 推荐来源托标签
/// </summary>
public string RecommendFromContainerCode { get; set; }
/// <summary>
/// 推荐来源箱标签
/// </summary>
public string RecommendFromPackingCode { get; set; }
/// <summary>
/// 推荐来源批次供应商批次
/// </summary>
public string RecommendFromSupplierBatch { get; set; }
/// <summary>
/// 推荐来源批次到货时间
/// </summary>
public DateTime RecommendFromArriveDate { get; set; }
/// <summary>
/// 推荐来源批次生产时间
/// </summary>
public DateTime RecommendFromProduceDate { get; set; }
/// <summary>
/// 推荐来源批次过期时间
/// </summary>
public DateTime RecommendFromExpireDate { get; set; }
/// <summary>
/// 推荐来源批次排序
/// </summary>
public string RecommendFromLot { get; set; }
/// <summary>
/// 推荐来源库位
/// </summary>
public string RecommendFromLocationCode { get; set; }
/// <summary>
/// 推荐来源库区
/// </summary>
public string RecommendFromLocationArea { get; set; }
/// <summary>
/// 推荐来源库位组
/// </summary>
public string RecommendFromLocationGroup { get; set; }
/// <summary>
/// 推荐来源ERP库位
/// </summary>
public string RecommendFromLocationErpCode { get; set; }
/// <summary>
/// 推荐来源仓库
/// </summary>
public string RecommendFromWarehouseCode { get; set; }
/// <summary>
/// 推荐来源数量
/// </summary>
public decimal RecommendFromQty { get; set; }
#endregion
#region 推荐目标
/// <summary>
/// 推荐目标托标签
/// </summary>
public string RecommendToContainerCode { get; set; }
/// <summary>
/// 推荐目标箱标签
/// </summary>
public string RecommendToPackingCode { get; set; }
/// <summary>
/// 推荐目标批次供应商批次
/// </summary>
public string RecommendToSupplierBatch { get; set; }
/// <summary>
/// 推荐目标批次到货时间
/// </summary>
public DateTime RecommendToArriveDate { get; set; }
/// <summary>
/// 推荐目标批次生产时间
/// </summary>
public DateTime RecommendToProduceDate { get; set; }
/// <summary>
/// 推荐目标批次过期时间
/// </summary>
public DateTime RecommendToExpireDate { get; set; }
/// <summary>
/// 推荐目标批次排序
/// </summary>
public string RecommendToLot { get; set; }
/// <summary>
/// 推荐目标库位
/// </summary>
public string RecommendToLocationCode { get; set; }
/// <summary>
/// 推荐目标库区
/// </summary>
public string RecommendToLocationArea { get; set; }
/// <summary>
/// 推荐目标库位组
/// </summary>
public string RecommendToLocationGroup { get; set; }
/// <summary>
/// 推荐目标ERP库位
/// </summary>
public string RecommendToLocationErpCode { get; set; }
/// <summary>
/// 推荐目标仓库
/// </summary>
public string RecommendToWarehouseCode { get; set; }
/// <summary>
/// 推荐目标数量
/// </summary>
public decimal RecommendToQty { get; set; }
#endregion
#region 库移来源
/// <summary>
/// 库移来源托标签
/// </summary>
public string TransferLibFromContainerCode { get; set; }
/// <summary>
/// 库移来源箱标签
/// </summary>
public string TransferLibFromPackingCode { get; set; }
/// <summary>
/// 库移来源批次供应商批次
/// </summary>
public string TransferLibFromSupplierBatch { get; set; }
/// <summary>
/// 库移来源批次到货时间
/// </summary>
public DateTime TransferLibFromArriveDate { get; set; }
/// <summary>
/// 库移来源批次生产时间
/// </summary>
public DateTime TransferLibFromProduceDate { get; set; }
/// <summary>
/// 库移来源批次过期时间
/// </summary>
public DateTime TransferLibFromExpireDate { get; set; }
/// <summary>
/// 库移来源批次排序
/// </summary>
public string TransferLibFromLot { get; set; }
/// <summary>
/// 库移来源库位
/// </summary>
public string TransferLibFromLocationCode { get; set; }
/// <summary>
/// 库移来源库区
/// </summary>
public string TransferLibFromLocationArea { get; set; }
/// <summary>
/// 库移来源库位组
/// </summary>
public string TransferLibFromLocationGroup { get; set; }
/// <summary>
/// 库移来源ERP库位
/// </summary>
public string TransferLibFromLocationErpCode { get; set; }
/// <summary>
/// 库移来源仓库
/// </summary>
public string TransferLibFromWarehouseCode { get; set; }
/// <summary>
/// 库移来源数量
/// </summary>
public decimal TransferLibFromQty { get; set; }
#endregion
#region 库移目标
/// <summary>
/// 库移目标托标签
/// </summary>
public string TransferLibToContainerCode { get; set; }
/// <summary>
/// 库移目标箱标签
/// </summary>
public string TransferLibToPackingCode { get; set; }
/// <summary>
/// 库移目标批次供应商批次
/// </summary>
public string TransferLibToSupplierBatch { get; set; }
/// <summary>
/// 库移目标批次到货时间
/// </summary>
public DateTime TransferLibToArriveDate { get; set; }
/// <summary>
/// 库移目标批次生产时间
/// </summary>
public DateTime TransferLibToProduceDate { get; set; }
/// <summary>
/// 库移目标批次过期时间
/// </summary>
public DateTime TransferLibToExpireDate { get; set; }
/// <summary>
/// 库移目标批次排序
/// </summary>
public string TransferLibToLot { get; set; }
/// <summary>
/// 库移目标库位
/// </summary>
public string TransferLibToLocationCode { get; set; }
/// <summary>
/// 库移目标库区
/// </summary>
public string TransferLibToLocationArea { get; set; }
/// <summary>
/// 库移目标库位组
/// </summary>
public string TransferLibToLocationGroup { get; set; }
/// <summary>
/// 库移目标ERP库位
/// </summary>
public string TransferLibToLocationErpCode { get; set; }
/// <summary>
/// 库移目标仓库
/// </summary>
public string TransferLibToWarehouseCode { get; set; }
/// <summary>
/// 库移目标数量
/// </summary>
public decimal TransferLibToQty { get; set; }
#endregion
#region 实际来源
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledFromContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledFromPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledFromSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledFromArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledFromProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledFromExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledFromLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledFromLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledFromLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledFromLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledFromLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledFromWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledFromQty { get; set; }
#endregion
#region 实际目标
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledToContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledToPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledToSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledToArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledToProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledToExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledToLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledToLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledToLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledToLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledToLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledToWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledToQty { get; set; }
#endregion
} }

502
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/Inputs/AssembleNoteDetailInput.cs

@ -1,53 +1,519 @@
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class AssembleNoteDetailInput : SfsStoreRecommendFromDetailWithFromToInputBase public class AssembleNoteDetailInput : SfsDetailInputBase
{ {
#region 库存基础信息
/// <summary> /// <summary>
/// 发料时间 /// 物品代码
/// </summary> /// </summary>
[Display(Name = "发料时间")] public string ItemCode { get; set; }
public DateTime IssueTime { get; set; }
/// <summary> /// <summary>
/// 过期时间 /// 物品名称
/// </summary> /// </summary>
[Display(Name = "过期时间")] public string ItemName { get; set; }
public DateTime ExpiredTime { get; set; }
/// <summary> /// <summary>
/// 生产线 /// 物品描述1
/// </summary> /// </summary>
[Display(Name = "生产线")] public string ItemDesc1 { get; set; }
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ProdLine { get; set; } /// <summary>
/// 物品描述2
/// </summary>
public string ItemDesc2 { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal StdPackQty { get; set; }
/// <summary>
/// 库存状态
/// </summary>
public EnumInventoryStatus Status { get; set; }
/// <summary>
/// 计量单位
/// </summary>
public string Uom { get; set; }
#endregion
#region 请求信息
/// <summary>
/// 请求库位
/// </summary>
public string RequestLocationCode { get; set; }
/// <summary>
/// 到库区
/// </summary>
public string RequestLocationArea { get; set; }
/// <summary>
/// 到库位组
/// </summary>
public string RequestLocationGroup { get; set; }
/// <summary>
/// 到ERP库位
/// </summary>
public string RequestLocationErpCode { get; set; }
/// <summary> /// <summary>
/// 工作中心 /// 到仓库
/// </summary> /// </summary>
[Display(Name = "工作中心")] public string RequestWarehouseCode { get; set; }
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string WorkStation { get; set; }
/// <summary> /// <summary>
/// 在途库库位 /// 在途库库位
/// </summary> /// </summary>
[Display(Name = "在途库库位")]
public string OnTheWayLocationCode { get; set; } public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 生产线
/// </summary>
public string ProdLine { get; set; }
/// <summary> /// <summary>
/// 位置码 /// 位置码
/// </summary> /// </summary>
public string PositionCode { get; set; } public string PositionCode { get; set; }
/// <summary> /// <summary>
/// 推荐类型 /// 推荐类型
/// </summary> /// </summary>
public EnumRecommendType RecommendType { get; set; } public EnumRecommendType RecommendType { get; set; }
/// <summary>
/// 需求数量
/// </summary>
public decimal RequestQty { get; set; }
#endregion
#region 推荐来源
/// <summary>
/// 推荐来源托标签
/// </summary>
public string RecommendFromContainerCode { get; set; }
/// <summary>
/// 推荐来源箱标签
/// </summary>
public string RecommendFromPackingCode { get; set; }
/// <summary>
/// 推荐来源批次供应商批次
/// </summary>
public string RecommendFromSupplierBatch { get; set; }
/// <summary>
/// 推荐来源批次到货时间
/// </summary>
public DateTime RecommendFromArriveDate { get; set; }
/// <summary>
/// 推荐来源批次生产时间
/// </summary>
public DateTime RecommendFromProduceDate { get; set; }
/// <summary>
/// 推荐来源批次过期时间
/// </summary>
public DateTime RecommendFromExpireDate { get; set; }
/// <summary>
/// 推荐来源批次排序
/// </summary>
public string RecommendFromLot { get; set; }
/// <summary>
/// 推荐来源库位
/// </summary>
public string RecommendFromLocationCode { get; set; }
/// <summary>
/// 推荐来源库区
/// </summary>
public string RecommendFromLocationArea { get; set; }
/// <summary>
/// 推荐来源库位组
/// </summary>
public string RecommendFromLocationGroup { get; set; }
/// <summary>
/// 推荐来源ERP库位
/// </summary>
public string RecommendFromLocationErpCode { get; set; }
/// <summary>
/// 推荐来源仓库
/// </summary>
public string RecommendFromWarehouseCode { get; set; }
/// <summary>
/// 推荐来源数量
/// </summary>
public decimal RecommendFromQty { get; set; }
#endregion
#region 推荐目标
/// <summary>
/// 推荐目标托标签
/// </summary>
public string RecommendToContainerCode { get; set; }
/// <summary>
/// 推荐目标箱标签
/// </summary>
public string RecommendToPackingCode { get; set; }
/// <summary>
/// 推荐目标批次供应商批次
/// </summary>
public string RecommendToSupplierBatch { get; set; }
/// <summary>
/// 推荐目标批次到货时间
/// </summary>
public DateTime RecommendToArriveDate { get; set; }
/// <summary>
/// 推荐目标批次生产时间
/// </summary>
public DateTime RecommendToProduceDate { get; set; }
/// <summary>
/// 推荐目标批次过期时间
/// </summary>
public DateTime RecommendToExpireDate { get; set; }
/// <summary>
/// 推荐目标批次排序
/// </summary>
public string RecommendToLot { get; set; }
/// <summary>
/// 推荐目标库位
/// </summary>
public string RecommendToLocationCode { get; set; }
/// <summary>
/// 推荐目标库区
/// </summary>
public string RecommendToLocationArea { get; set; }
/// <summary>
/// 推荐目标库位组
/// </summary>
public string RecommendToLocationGroup { get; set; }
/// <summary>
/// 推荐目标ERP库位
/// </summary>
public string RecommendToLocationErpCode { get; set; }
/// <summary>
/// 推荐目标仓库
/// </summary>
public string RecommendToWarehouseCode { get; set; }
/// <summary>
/// 推荐目标数量
/// </summary>
public decimal RecommendToQty { get; set; }
#endregion
#region 库移来源
/// <summary>
/// 库移来源托标签
/// </summary>
public string TransferLibFromContainerCode { get; set; }
/// <summary>
/// 库移来源箱标签
/// </summary>
public string TransferLibFromPackingCode { get; set; }
/// <summary>
/// 库移来源批次供应商批次
/// </summary>
public string TransferLibFromSupplierBatch { get; set; }
/// <summary>
/// 库移来源批次到货时间
/// </summary>
public DateTime TransferLibFromArriveDate { get; set; }
/// <summary>
/// 库移来源批次生产时间
/// </summary>
public DateTime TransferLibFromProduceDate { get; set; }
/// <summary>
/// 库移来源批次过期时间
/// </summary>
public DateTime TransferLibFromExpireDate { get; set; }
/// <summary>
/// 库移来源批次排序
/// </summary>
public string TransferLibFromLot { get; set; }
/// <summary>
/// 库移来源库位
/// </summary>
public string TransferLibFromLocationCode { get; set; }
/// <summary>
/// 库移来源库区
/// </summary>
public string TransferLibFromLocationArea { get; set; }
/// <summary>
/// 库移来源库位组
/// </summary>
public string TransferLibFromLocationGroup { get; set; }
/// <summary>
/// 库移来源ERP库位
/// </summary>
public string TransferLibFromLocationErpCode { get; set; }
/// <summary>
/// 库移来源仓库
/// </summary>
public string TransferLibFromWarehouseCode { get; set; }
/// <summary>
/// 库移来源数量
/// </summary>
public decimal TransferLibFromQty { get; set; }
#endregion
#region 库移目标
/// <summary>
/// 库移目标托标签
/// </summary>
public string TransferLibToContainerCode { get; set; }
/// <summary>
/// 库移目标箱标签
/// </summary>
public string TransferLibToPackingCode { get; set; }
/// <summary>
/// 库移目标批次供应商批次
/// </summary>
public string TransferLibToSupplierBatch { get; set; }
/// <summary>
/// 库移目标批次到货时间
/// </summary>
public DateTime TransferLibToArriveDate { get; set; }
/// <summary>
/// 库移目标批次生产时间
/// </summary>
public DateTime TransferLibToProduceDate { get; set; }
/// <summary>
/// 库移目标批次过期时间
/// </summary>
public DateTime TransferLibToExpireDate { get; set; }
/// <summary>
/// 库移目标批次排序
/// </summary>
public string TransferLibToLot { get; set; }
/// <summary>
/// 库移目标库位
/// </summary>
public string TransferLibToLocationCode { get; set; }
/// <summary>
/// 库移目标库区
/// </summary>
public string TransferLibToLocationArea { get; set; }
/// <summary>
/// 库移目标库位组
/// </summary>
public string TransferLibToLocationGroup { get; set; }
/// <summary>
/// 库移目标ERP库位
/// </summary>
public string TransferLibToLocationErpCode { get; set; }
/// <summary>
/// 库移目标仓库
/// </summary>
public string TransferLibToWarehouseCode { get; set; }
/// <summary>
/// 库移目标数量
/// </summary>
public decimal TransferLibToQty { get; set; }
#endregion
#region 实际来源
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledFromContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledFromPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledFromSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledFromArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledFromProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledFromExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledFromLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledFromLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledFromLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledFromLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledFromLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledFromWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledFromQty { get; set; }
#endregion
#region 实际目标
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledToContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledToPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledToSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledToArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledToProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledToExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledToLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledToLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledToLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledToLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledToLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledToWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledToQty { get; set; }
#endregion
} }

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/Inputs/AssembleNoteEditInput.cs

@ -28,13 +28,6 @@ public class AssembleNoteEditInput : SfsStoreCreateOrUpdateInputBase
[Required(ErrorMessage = "{0}是必填项")] [Required(ErrorMessage = "{0}是必填项")]
public string JobNumber { get; set; } public string JobNumber { get; set; }
/// <summary>
/// 车间
/// </summary>
[Display(Name = "车间")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Workshop { get; set; }
/// <summary> /// <summary>
/// 明细列表 /// 明细列表
/// </summary> /// </summary>

9
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDTO.cs

@ -7,20 +7,12 @@ namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes;
public class CoatingIssueNoteDTO : SfsStoreDTOBase<CoatingIssueNoteDetailDTO>, IHasJobNumber, IHasRequestNumber public class CoatingIssueNoteDTO : SfsStoreDTOBase<CoatingIssueNoteDetailDTO>, IHasJobNumber, IHasRequestNumber
{ {
/// <summary> /// <summary>
/// 任务ID /// 任务ID
/// </summary> /// </summary>
[Display(Name = "任务ID")] [Display(Name = "任务ID")]
public string JobNumber { get; set; } public string JobNumber { get; set; }
/// <summary>
/// 车间
/// </summary>
[Display(Name = "车间")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Workshop { get; set; }
/// <summary> /// <summary>
/// 请求代码 /// 请求代码
/// </summary> /// </summary>
@ -51,5 +43,4 @@ public class CoatingIssueNoteDTO : SfsStoreDTOBase<CoatingIssueNoteDetailDTO>, I
/// </summary> /// </summary>
[Display(Name = "确认时间")] [Display(Name = "确认时间")]
public DateTime? ConfirmTime { get; set; } public DateTime? ConfirmTime { get; set; }
} }

514
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDetailDTO.cs

@ -1,43 +1,519 @@
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class CoatingIssueNoteDetailDTO : SfsStoreRecommendFromDetailWithFromToDTOBase public class CoatingIssueNoteDetailDTO : SfsDetailDTOBase
{ {
#region 库存基础信息
/// <summary> /// <summary>
/// 发料时间 /// 物品代码
/// </summary> /// </summary>
[Display(Name = "发料时间")] public string ItemCode { get; set; }
public DateTime IssueTime { get; set; }
/// <summary> /// <summary>
/// 过期时间 /// 物品名称
/// </summary> /// </summary>
[Display(Name = "过期时间")] public string ItemName { get; set; }
public DateTime ExpiredTime { get; set; }
/// <summary> /// <summary>
/// 生产线 /// 物品描述1
/// </summary> /// </summary>
[Display(Name = "生产线")] public string ItemDesc1 { get; set; }
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ProdLine { get; set; } /// <summary>
/// 物品描述2
/// </summary>
public string ItemDesc2 { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal StdPackQty { get; set; }
/// <summary>
/// 库存状态
/// </summary>
public EnumInventoryStatus Status { get; set; }
/// <summary>
/// 计量单位
/// </summary>
public string Uom { get; set; }
#endregion
#region 请求信息
/// <summary>
/// 请求库位
/// </summary>
public string RequestLocationCode { get; set; }
/// <summary>
/// 到库区
/// </summary>
public string RequestLocationArea { get; set; }
/// <summary>
/// 到库位组
/// </summary>
public string RequestLocationGroup { get; set; }
/// <summary>
/// 到ERP库位
/// </summary>
public string RequestLocationErpCode { get; set; }
/// <summary> /// <summary>
/// 工作中心 /// 到仓库
/// </summary> /// </summary>
[Display(Name = "工作中心")] public string RequestWarehouseCode { get; set; }
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string WorkStation { get; set; }
/// <summary> /// <summary>
/// 在途库库位 /// 在途库库位
/// </summary> /// </summary>
[Display(Name = "在途库库位")]
public string OnTheWayLocationCode { get; set; } public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 生产线
/// </summary>
public string ProdLine { get; set; }
/// <summary>
/// 位置码
/// </summary>
public string PositionCode { get; set; }
/// <summary>
/// 推荐的类型
/// </summary>
public EnumRecommendType RecommendType { get; set; }
/// <summary>
/// 需求数量
/// </summary>
public decimal RequestQty { get; set; }
#endregion
#region 推荐来源
/// <summary>
/// 推荐来源托标签
/// </summary>
public string RecommendFromContainerCode { get; set; }
/// <summary>
/// 推荐来源箱标签
/// </summary>
public string RecommendFromPackingCode { get; set; }
/// <summary>
/// 推荐来源批次供应商批次
/// </summary>
public string RecommendFromSupplierBatch { get; set; }
/// <summary>
/// 推荐来源批次到货时间
/// </summary>
public DateTime RecommendFromArriveDate { get; set; }
/// <summary>
/// 推荐来源批次生产时间
/// </summary>
public DateTime RecommendFromProduceDate { get; set; }
/// <summary>
/// 推荐来源批次过期时间
/// </summary>
public DateTime RecommendFromExpireDate { get; set; }
/// <summary>
/// 推荐来源批次排序
/// </summary>
public string RecommendFromLot { get; set; }
/// <summary>
/// 推荐来源库位
/// </summary>
public string RecommendFromLocationCode { get; set; }
/// <summary>
/// 推荐来源库区
/// </summary>
public string RecommendFromLocationArea { get; set; }
/// <summary>
/// 推荐来源库位组
/// </summary>
public string RecommendFromLocationGroup { get; set; }
/// <summary>
/// 推荐来源ERP库位
/// </summary>
public string RecommendFromLocationErpCode { get; set; }
/// <summary>
/// 推荐来源仓库
/// </summary>
public string RecommendFromWarehouseCode { get; set; }
/// <summary>
/// 推荐来源数量
/// </summary>
public decimal RecommendFromQty { get; set; }
#endregion
#region 推荐目标
/// <summary>
/// 推荐目标托标签
/// </summary>
public string RecommendToContainerCode { get; set; }
/// <summary>
/// 推荐目标箱标签
/// </summary>
public string RecommendToPackingCode { get; set; }
/// <summary>
/// 推荐目标批次供应商批次
/// </summary>
public string RecommendToSupplierBatch { get; set; }
/// <summary>
/// 推荐目标批次到货时间
/// </summary>
public DateTime RecommendToArriveDate { get; set; }
/// <summary>
/// 推荐目标批次生产时间
/// </summary>
public DateTime RecommendToProduceDate { get; set; }
/// <summary>
/// 推荐目标批次过期时间
/// </summary>
public DateTime RecommendToExpireDate { get; set; }
/// <summary>
/// 推荐目标批次排序
/// </summary>
public string RecommendToLot { get; set; }
/// <summary>
/// 推荐目标库位
/// </summary>
public string RecommendToLocationCode { get; set; }
/// <summary>
/// 推荐目标库区
/// </summary>
public string RecommendToLocationArea { get; set; }
/// <summary>
/// 推荐目标库位组
/// </summary>
public string RecommendToLocationGroup { get; set; }
/// <summary>
/// 推荐目标ERP库位
/// </summary>
public string RecommendToLocationErpCode { get; set; }
/// <summary>
/// 推荐目标仓库
/// </summary>
public string RecommendToWarehouseCode { get; set; }
/// <summary>
/// 推荐目标数量
/// </summary>
public decimal RecommendToQty { get; set; }
#endregion
#region 库移来源
/// <summary>
/// 库移来源托标签
/// </summary>
public string TransferLibFromContainerCode { get; set; }
/// <summary>
/// 库移来源箱标签
/// </summary>
public string TransferLibFromPackingCode { get; set; }
/// <summary>
/// 库移来源批次供应商批次
/// </summary>
public string TransferLibFromSupplierBatch { get; set; }
/// <summary>
/// 库移来源批次到货时间
/// </summary>
public DateTime TransferLibFromArriveDate { get; set; }
/// <summary>
/// 库移来源批次生产时间
/// </summary>
public DateTime TransferLibFromProduceDate { get; set; }
/// <summary>
/// 库移来源批次过期时间
/// </summary>
public DateTime TransferLibFromExpireDate { get; set; }
/// <summary>
/// 库移来源批次排序
/// </summary>
public string TransferLibFromLot { get; set; }
/// <summary>
/// 库移来源库位
/// </summary>
public string TransferLibFromLocationCode { get; set; }
/// <summary>
/// 库移来源库区
/// </summary>
public string TransferLibFromLocationArea { get; set; }
/// <summary>
/// 库移来源库位组
/// </summary>
public string TransferLibFromLocationGroup { get; set; }
/// <summary>
/// 库移来源ERP库位
/// </summary>
public string TransferLibFromLocationErpCode { get; set; }
/// <summary>
/// 库移来源仓库
/// </summary>
public string TransferLibFromWarehouseCode { get; set; }
/// <summary>
/// 库移来源数量
/// </summary>
public decimal TransferLibFromQty { get; set; }
#endregion
#region 库移目标
/// <summary>
/// 库移目标托标签
/// </summary>
public string TransferLibToContainerCode { get; set; }
/// <summary>
/// 库移目标箱标签
/// </summary>
public string TransferLibToPackingCode { get; set; }
/// <summary>
/// 库移目标批次供应商批次
/// </summary>
public string TransferLibToSupplierBatch { get; set; }
/// <summary>
/// 库移目标批次到货时间
/// </summary>
public DateTime TransferLibToArriveDate { get; set; }
/// <summary>
/// 库移目标批次生产时间
/// </summary>
public DateTime TransferLibToProduceDate { get; set; }
/// <summary>
/// 库移目标批次过期时间
/// </summary>
public DateTime TransferLibToExpireDate { get; set; }
/// <summary>
/// 库移目标批次排序
/// </summary>
public string TransferLibToLot { get; set; }
/// <summary>
/// 库移目标库位
/// </summary>
public string TransferLibToLocationCode { get; set; }
/// <summary>
/// 库移目标库区
/// </summary>
public string TransferLibToLocationArea { get; set; }
/// <summary>
/// 库移目标库位组
/// </summary>
public string TransferLibToLocationGroup { get; set; }
/// <summary>
/// 库移目标ERP库位
/// </summary>
public string TransferLibToLocationErpCode { get; set; }
/// <summary>
/// 库移目标仓库
/// </summary>
public string TransferLibToWarehouseCode { get; set; }
/// <summary>
/// 库移目标数量
/// </summary>
public decimal TransferLibToQty { get; set; }
#endregion
#region 实际来源
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledFromContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledFromPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledFromSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledFromArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledFromProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledFromExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledFromLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledFromLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledFromLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledFromLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledFromLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledFromWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledFromQty { get; set; }
#endregion
#region 实际目标
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledToContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledToPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledToSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledToArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledToProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledToExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledToLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledToLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledToLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledToLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledToLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledToWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledToQty { get; set; }
#endregion
} }

505
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDetailInput.cs

@ -1,54 +1,519 @@
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class CoatingIssueNoteDetailInput : SfsStoreRecommendFromDetailWithFromToInputBase public class CoatingIssueNoteDetailInput : SfsDetailInputBase
{ {
#region 库存基础信息
/// <summary> /// <summary>
/// 发料时间 /// 物品代码
/// </summary> /// </summary>
[Display(Name = "发料时间")] public string ItemCode { get; set; }
public DateTime IssueTime { get; set; }
/// <summary> /// <summary>
/// 过期时间 /// 物品名称
/// </summary> /// </summary>
[Display(Name = "过期时间")] public string ItemName { get; set; }
public DateTime ExpiredTime { get; set; }
/// <summary> /// <summary>
/// 生产线 /// 物品描述1
/// </summary> /// </summary>
[Display(Name = "生产线")] public string ItemDesc1 { get; set; }
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ProdLine { get; set; } /// <summary>
/// 物品描述2
/// </summary>
public string ItemDesc2 { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal StdPackQty { get; set; }
/// <summary>
/// 库存状态
/// </summary>
public EnumInventoryStatus Status { get; set; }
/// <summary>
/// 计量单位
/// </summary>
public string Uom { get; set; }
#endregion
#region 请求信息
/// <summary>
/// 请求库位
/// </summary>
public string RequestLocationCode { get; set; }
/// <summary>
/// 到库区
/// </summary>
public string RequestLocationArea { get; set; }
/// <summary>
/// 到库位组
/// </summary>
public string RequestLocationGroup { get; set; }
/// <summary>
/// 到ERP库位
/// </summary>
public string RequestLocationErpCode { get; set; }
/// <summary> /// <summary>
/// 工作中心 /// 到仓库
/// </summary> /// </summary>
[Display(Name = "工作中心")] public string RequestWarehouseCode { get; set; }
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string WorkStation { get; set; }
/// <summary> /// <summary>
/// 在途库库位 /// 在途库库位
/// </summary> /// </summary>
[Display(Name = "在途库库位")]
public string OnTheWayLocationCode { get; set; } public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 生产线
/// </summary>
public string ProdLine { get; set; }
/// <summary> /// <summary>
/// 位置码 /// 位置码
/// </summary> /// </summary>
public string PositionCode { get; set; } public string PositionCode { get; set; }
/// <summary> /// <summary>
/// 推荐类型 /// 推荐类型
/// </summary> /// </summary>
public EnumRecommendType RecommendType { get; set; } public EnumRecommendType RecommendType { get; set; }
/// <summary>
/// 需求数量
/// </summary>
public decimal RequestQty { get; set; }
#endregion
#region 推荐来源
/// <summary>
/// 推荐来源托标签
/// </summary>
public string RecommendFromContainerCode { get; set; }
/// <summary>
/// 推荐来源箱标签
/// </summary>
public string RecommendFromPackingCode { get; set; }
/// <summary>
/// 推荐来源批次供应商批次
/// </summary>
public string RecommendFromSupplierBatch { get; set; }
/// <summary>
/// 推荐来源批次到货时间
/// </summary>
public DateTime RecommendFromArriveDate { get; set; }
/// <summary>
/// 推荐来源批次生产时间
/// </summary>
public DateTime RecommendFromProduceDate { get; set; }
/// <summary>
/// 推荐来源批次过期时间
/// </summary>
public DateTime RecommendFromExpireDate { get; set; }
/// <summary>
/// 推荐来源批次排序
/// </summary>
public string RecommendFromLot { get; set; }
/// <summary>
/// 推荐来源库位
/// </summary>
public string RecommendFromLocationCode { get; set; }
/// <summary>
/// 推荐来源库区
/// </summary>
public string RecommendFromLocationArea { get; set; }
/// <summary>
/// 推荐来源库位组
/// </summary>
public string RecommendFromLocationGroup { get; set; }
/// <summary>
/// 推荐来源ERP库位
/// </summary>
public string RecommendFromLocationErpCode { get; set; }
/// <summary>
/// 推荐来源仓库
/// </summary>
public string RecommendFromWarehouseCode { get; set; }
/// <summary>
/// 推荐来源数量
/// </summary>
public decimal RecommendFromQty { get; set; }
#endregion
#region 推荐目标
/// <summary>
/// 推荐目标托标签
/// </summary>
public string RecommendToContainerCode { get; set; }
/// <summary>
/// 推荐目标箱标签
/// </summary>
public string RecommendToPackingCode { get; set; }
/// <summary>
/// 推荐目标批次供应商批次
/// </summary>
public string RecommendToSupplierBatch { get; set; }
/// <summary>
/// 推荐目标批次到货时间
/// </summary>
public DateTime RecommendToArriveDate { get; set; }
/// <summary>
/// 推荐目标批次生产时间
/// </summary>
public DateTime RecommendToProduceDate { get; set; }
/// <summary>
/// 推荐目标批次过期时间
/// </summary>
public DateTime RecommendToExpireDate { get; set; }
/// <summary>
/// 推荐目标批次排序
/// </summary>
public string RecommendToLot { get; set; }
/// <summary>
/// 推荐目标库位
/// </summary>
public string RecommendToLocationCode { get; set; }
/// <summary>
/// 推荐目标库区
/// </summary>
public string RecommendToLocationArea { get; set; }
/// <summary>
/// 推荐目标库位组
/// </summary>
public string RecommendToLocationGroup { get; set; }
/// <summary>
/// 推荐目标ERP库位
/// </summary>
public string RecommendToLocationErpCode { get; set; }
/// <summary>
/// 推荐目标仓库
/// </summary>
public string RecommendToWarehouseCode { get; set; }
/// <summary>
/// 推荐目标数量
/// </summary>
public decimal RecommendToQty { get; set; }
#endregion
#region 库移来源
/// <summary>
/// 库移来源托标签
/// </summary>
public string TransferLibFromContainerCode { get; set; }
/// <summary>
/// 库移来源箱标签
/// </summary>
public string TransferLibFromPackingCode { get; set; }
/// <summary>
/// 库移来源批次供应商批次
/// </summary>
public string TransferLibFromSupplierBatch { get; set; }
/// <summary>
/// 库移来源批次到货时间
/// </summary>
public DateTime TransferLibFromArriveDate { get; set; }
/// <summary>
/// 库移来源批次生产时间
/// </summary>
public DateTime TransferLibFromProduceDate { get; set; }
/// <summary>
/// 库移来源批次过期时间
/// </summary>
public DateTime TransferLibFromExpireDate { get; set; }
/// <summary>
/// 库移来源批次排序
/// </summary>
public string TransferLibFromLot { get; set; }
/// <summary>
/// 库移来源库位
/// </summary>
public string TransferLibFromLocationCode { get; set; }
/// <summary>
/// 库移来源库区
/// </summary>
public string TransferLibFromLocationArea { get; set; }
/// <summary>
/// 库移来源库位组
/// </summary>
public string TransferLibFromLocationGroup { get; set; }
/// <summary>
/// 库移来源ERP库位
/// </summary>
public string TransferLibFromLocationErpCode { get; set; }
/// <summary>
/// 库移来源仓库
/// </summary>
public string TransferLibFromWarehouseCode { get; set; }
/// <summary>
/// 库移来源数量
/// </summary>
public decimal TransferLibFromQty { get; set; }
#endregion
#region 库移目标
/// <summary>
/// 库移目标托标签
/// </summary>
public string TransferLibToContainerCode { get; set; }
/// <summary>
/// 库移目标箱标签
/// </summary>
public string TransferLibToPackingCode { get; set; }
/// <summary>
/// 库移目标批次供应商批次
/// </summary>
public string TransferLibToSupplierBatch { get; set; }
/// <summary>
/// 库移目标批次到货时间
/// </summary>
public DateTime TransferLibToArriveDate { get; set; }
/// <summary>
/// 库移目标批次生产时间
/// </summary>
public DateTime TransferLibToProduceDate { get; set; }
/// <summary>
/// 库移目标批次过期时间
/// </summary>
public DateTime TransferLibToExpireDate { get; set; }
/// <summary>
/// 库移目标批次排序
/// </summary>
public string TransferLibToLot { get; set; }
/// <summary>
/// 库移目标库位
/// </summary>
public string TransferLibToLocationCode { get; set; }
/// <summary>
/// 库移目标库区
/// </summary>
public string TransferLibToLocationArea { get; set; }
/// <summary>
/// 库移目标库位组
/// </summary>
public string TransferLibToLocationGroup { get; set; }
/// <summary>
/// 库移目标ERP库位
/// </summary>
public string TransferLibToLocationErpCode { get; set; }
/// <summary>
/// 库移目标仓库
/// </summary>
public string TransferLibToWarehouseCode { get; set; }
/// <summary>
/// 库移目标数量
/// </summary>
public decimal TransferLibToQty { get; set; }
#endregion
#region 实际来源
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledFromContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledFromPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledFromSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledFromArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledFromProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledFromExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledFromLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledFromLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledFromLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledFromLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledFromLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledFromWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledFromQty { get; set; }
#endregion
#region 实际目标
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledToContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledToPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledToSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledToArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledToProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledToExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledToLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledToLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledToLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledToLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledToLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledToWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledToQty { get; set; }
#endregion
} }

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteEditInput.cs

@ -29,13 +29,6 @@ public class CoatingIssueNoteEditInput : SfsStoreCreateOrUpdateInputBase
[Required(ErrorMessage = "{0}是必填项")] [Required(ErrorMessage = "{0}是必填项")]
public string JobNumber { get; set; } public string JobNumber { get; set; }
/// <summary>
/// 车间
/// </summary>
[Display(Name = "车间")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Workshop { get; set; }
/// <summary> /// <summary>
/// 明细列表 /// 明细列表
/// </summary> /// </summary>

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

@ -27,7 +27,7 @@ public class StorePermissionDefinitionProvider : PermissionDefinitionProvider
storeGroup.AddPutawayNotePermission(); storeGroup.AddPutawayNotePermission();
storeGroup.AddMaterialRequestPermission(); storeGroup.AddMaterialRequestPermission();
storeGroup.AddInjectionRequestPermission(); storeGroup.AddInjectionRequestPermission();
storeGroup.AddAssembleRequestPermission(); storeGroup.AddAssembleIssueRequestsPermission();
storeGroup.AddThirdLocationRequestPermission(); storeGroup.AddThirdLocationRequestPermission();
storeGroup.AddContainerRequestPermission(); storeGroup.AddContainerRequestPermission();
storeGroup.AddIssueNotePermission(); storeGroup.AddIssueNotePermission();
@ -100,6 +100,7 @@ public class StorePermissionDefinitionProvider : PermissionDefinitionProvider
storeGroup.AddPutawayJobPermission(); storeGroup.AddPutawayJobPermission();
storeGroup.AddIssueJobPermission(); storeGroup.AddIssueJobPermission();
storeGroup.AddInjectionJobPermission(); storeGroup.AddInjectionJobPermission();
storeGroup.AddCoatingIssueJobPermission();
storeGroup.AddAssembleJobPermission(); storeGroup.AddAssembleJobPermission();
storeGroup.AddThirdLocationJobPermission(); storeGroup.AddThirdLocationJobPermission();
storeGroup.AddContainerJobPermission(); storeGroup.AddContainerJobPermission();

27
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsPermissions.cs

@ -0,0 +1,27 @@
using Volo.Abp.Authorization.Permissions;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public static class AssembleIssueRequestsPermissions
{
public const string Default = StorePermissions.GroupName + "." + nameof(AssembleIssueRequests);
public const string Create = Default + "." + StorePermissions.CreateStr;
public const string Update = Default + "." + StorePermissions.UpdateStr;
public const string Delete = Default + "." + StorePermissions.DeleteStr;
//自动叫料申请
public const string AutoAssembleIssueRequests = StorePermissions.GroupName + "." + nameof(AutoAssembleIssueRequests);
public static void AddAssembleIssueRequestsPermission(this PermissionGroupDefinition permissionGroup)
{
var AssembleIssueRequestsPermission = permissionGroup.AddPermission(Default, StorePermissionDefinitionProvider.L(nameof(AssembleIssueRequests)));
AssembleIssueRequestsPermission.AddChild(Create, StorePermissionDefinitionProvider.L(StorePermissions.CreateStr));
AssembleIssueRequestsPermission.AddChild(Update, StorePermissionDefinitionProvider.L(StorePermissions.UpdateStr));
AssembleIssueRequestsPermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr));
permissionGroup.AddPermission(AutoAssembleIssueRequests, StorePermissionDefinitionProvider.L(nameof(AutoAssembleIssueRequests)));
}
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/DTOs/AssembleRequestDTO.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/DTOs/AssembleIssueRequestsDTO.cs

@ -2,7 +2,7 @@ using System.ComponentModel.DataAnnotations;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class AssembleRequestDTO : SfsStoreRequestDTOBase<AssembleRequestDetailDTO>, IHasNumber public class AssembleIssueRequestsDTO : SfsStoreRequestDTOBase<AssembleIssueRequestsDetailDTO>, IHasNumber
{ {
/// <summary> /// <summary>
/// 叫料类型 /// 叫料类型

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/DTOs/AssembleRequestDetailDTO.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/DTOs/AssembleIssueRequestsDetailDTO.cs

@ -6,7 +6,7 @@ using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class AssembleRequestDetailDTO : SfsStoreDetailWithQtyDTOBase public class AssembleIssueRequestsDetailDTO : SfsStoreDetailWithQtyDTOBase
{ {
/// <summary> /// <summary>
/// 已发数量 /// 已发数量

13
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/IAssembleIssueRequestsAppService.cs

@ -0,0 +1,13 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public interface IAssembleIssueRequestsAppService
: ISfsStoreRequestMasterAppServiceBase<AssembleIssueRequestsDTO, SfsStoreRequestInputBase, AssembleIssueRequestsEditInput, AssembleIssueRequestsDetailDTO, SfsStoreRequestInputBase>
{
Task<AssembleIssueRequestsDTO> CreateAndHandleAsync(AssembleIssueRequestsEditInput input);
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/Inputs/AssembleRequestDetailInput.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/Inputs/AssembleIssueRequestsDetailInput.cs

@ -5,7 +5,7 @@ using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class AssembleRequestDetailInput : SfsStoreDetailWithQtyInputBase public class AssembleIssueRequestsDetailInput : SfsStoreDetailWithQtyInputBase
{ {
#region 目标库位信息 #region 目标库位信息

4
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/Inputs/AssembleRequestEditInput.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/Inputs/AssembleIssueRequestsEditInput.cs

@ -4,7 +4,7 @@ using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class AssembleRequestEditInput : SfsStoreRequestCreateOrUpdateInputBase public class AssembleIssueRequestsEditInput : SfsStoreRequestCreateOrUpdateInputBase
{ {
#region Base #region Base
@ -24,7 +24,7 @@ public class AssembleRequestEditInput : SfsStoreRequestCreateOrUpdateInputBase
/// 明细列表 /// 明细列表
/// </summary> /// </summary>
[Display(Name = "明细列表")] [Display(Name = "明细列表")]
public List<InjectionRequestDetailInput> Details { get; set; } = new List<InjectionRequestDetailInput>(); public List<AssembleIssueRequestsDetailInput> Details { get; set; } = new List<AssembleIssueRequestsDetailInput>();
#endregion #endregion
#region Create #region Create

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/Inputs/AssembleRequestImportInput.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/Inputs/AssembleIssueRequestsImportInput.cs

@ -5,7 +5,7 @@ using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
[Display(Name = "叫料申请")] [Display(Name = "叫料申请")]
public class AssembleRequestImportInput : SfsStoreImportInputBase public class AssembleIssueRequestsImportInput : SfsStoreImportInputBase
{ {
/// <summary> /// <summary>

27
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/AssembleRequestPermissions.cs

@ -1,27 +0,0 @@
using Volo.Abp.Authorization.Permissions;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public static class AssembleRequestPermissions
{
public const string Default = StorePermissions.GroupName + "." + nameof(AssembleRequest);
public const string Create = Default + "." + StorePermissions.CreateStr;
public const string Update = Default + "." + StorePermissions.UpdateStr;
public const string Delete = Default + "." + StorePermissions.DeleteStr;
//自动叫料申请
public const string AutoAssembleRequest = StorePermissions.GroupName + "." + nameof(AutoAssembleRequest);
public static void AddAssembleRequestPermission(this PermissionGroupDefinition permissionGroup)
{
var AssembleRequestPermission = permissionGroup.AddPermission(Default, StorePermissionDefinitionProvider.L(nameof(AssembleRequest)));
AssembleRequestPermission.AddChild(Create, StorePermissionDefinitionProvider.L(StorePermissions.CreateStr));
AssembleRequestPermission.AddChild(Update, StorePermissionDefinitionProvider.L(StorePermissions.UpdateStr));
AssembleRequestPermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr));
permissionGroup.AddPermission(AutoAssembleRequest, StorePermissionDefinitionProvider.L(nameof(AutoAssembleRequest)));
}
}

13
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/IAssembleRequestAppService.cs

@ -1,13 +0,0 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public interface IAssembleRequestAppService
: ISfsStoreRequestMasterAppServiceBase<AssembleRequestDTO, SfsStoreRequestInputBase, AssembleRequestEditInput, AssembleRequestDetailDTO, SfsStoreRequestInputBase>
{
Task<AssembleRequestDTO> CreateAndHandleAsync(AssembleRequestEditInput input);
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/CoatingMaterialRequests/CoatingMaterialRequestEditInput.cs

@ -25,7 +25,7 @@ public class CoatingMaterialRequestEditInput : SfsStoreRequestCreateOrUpdateInpu
/// 明细列表 /// 明细列表
/// </summary> /// </summary>
[Display(Name = "明细列表")] [Display(Name = "明细列表")]
public List<InjectionRequestDetailInput> Details { get; set; } = new List<InjectionRequestDetailInput>(); public List<CoatingMaterialRequestDetailInput> Details { get; set; } = new List<CoatingMaterialRequestDetailInput>();
#endregion #endregion
#region Create #region Create

9
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Chassis/ChassisAppService.cs

@ -1,12 +1,14 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Castle.Components.DictionaryAdapter; using Castle.Components.DictionaryAdapter;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Repositories;
using Volo.Abp.ObjectMapping; using Volo.Abp.ObjectMapping;
@ -24,11 +26,12 @@ namespace Win_in.Sfs.Wms.Store.Application;
[Authorize] [Authorize]
[Route($"{StoreConsts.RootPath}Chassis")] [Route($"{StoreConsts.RootPath}Chassis")]
public class ChassisAppService public class ChassisAppService
: SfsStoreAppServiceBase<Domain.Chassis, ChassisDTO, SfsStoreRequestInputBase, ChassisEditInput, : SfsStoreAppServiceBase<Chassis, ChassisDTO, SfsStoreRequestInputBase, ChassisEditInput,
ExchangeDataImportInput> ExchangeDataImportInput>
, IChassisAppService , IChassisAppService
{ {
private new readonly IChassisRepository _repository;
private readonly IChassisManager _manager; private readonly IChassisManager _manager;
public ChassisAppService( public ChassisAppService(
@ -39,8 +42,10 @@ public class ChassisAppService
base.UpdatePolicyName = ChassisPermissions.Update; base.UpdatePolicyName = ChassisPermissions.Update;
base.DeletePolicyName = ChassisPermissions.Delete; base.DeletePolicyName = ChassisPermissions.Delete;
_repository = repository;
_manager = manager; _manager = manager;
} }
#region 无用
[NonAction] [NonAction]
public Task<ChassisDTO> GetDetailAsync(Guid id, Guid detailId) public Task<ChassisDTO> GetDetailAsync(Guid id, Guid detailId)
@ -77,4 +82,6 @@ public class ChassisAppService
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
#endregion
} }

24
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Chassis/ChassisAutoMapperProfile.cs

@ -15,29 +15,5 @@ public partial class StoreApplicationAutoMapperProfile : Profile
{ {
CreateMap<Domain.Chassis, ChassisDTO>() CreateMap<Domain.Chassis, ChassisDTO>()
.ReverseMap(); .ReverseMap();
// CreateMap<ExchangeDataCreateInput, ExchangeData>()
// .IgnoreAuditedObjectProperties()
// .Ignore(x => x.ConcurrencyStamp).Ignore(x => x.Id)
// ;
// CreateMap<ExchangeDataUpdateInput, ExchangeData>()
// .IgnoreAuditedObjectProperties()
// .Ignore(x => x.Id) ;
// ;
// CreateMap<ExchangeDataImportInput, ExchangeData>()
// .IgnoreAuditedObjectProperties()
// .Ignore(x => x.TenantId)
// //.Ignore(x => x.Remark)
// .Ignore(x => x.ExtraProperties)
// .Ignore(x => x.ConcurrencyStamp)
// ;
// CreateMap<ExchangeData, ExchangeDataImportInput>()
// .Ignore(x => x.ReportStatus)
// .Ignore(x => x.ReportReason)
// ;
// CreateMap<ExchangeData, ExchangeDataExportDTO>()
//;
} }
} }

87
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/ChassisOperationSequence/ChassisOperationSequenceAppService.cs

@ -0,0 +1,87 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Castle.Components.DictionaryAdapter;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Equipments.DTOs;
using Win_in.Sfs.Shared.Application;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.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.Shared;
using Win_in.Sfs.Wms.Store.Equipments;
namespace Win_in.Sfs.Wms.Store.Application;
[Authorize]
[Route($"{StoreConsts.RootPath}ChassisOperationSequence")]
public class ChassisOperationSequenceAppService
: SfsStoreAppServiceBase<Domain.ChassisOperationSequence, ChassisOperationSequenceDTO, SfsStoreRequestInputBase, ChassisOperationSequenceEditInput,
ExchangeDataImportInput>
, IChassisOperationSequenceAppService
{
private new readonly IChassisOperationSequenceRepository _repository;
private readonly IChassisOperationSequenceManager _manager;
public ChassisOperationSequenceAppService(
IChassisOperationSequenceRepository repository, IChassisOperationSequenceManager manager
):base(repository)
{
base.CreatePolicyName = ChassisOperationSequencePermissions.Create;
base.UpdatePolicyName = ChassisOperationSequencePermissions.Update;
base.DeletePolicyName = ChassisOperationSequencePermissions.Delete;
_repository = repository;
_manager = manager;
}
#region 无用
[NonAction]
public Task<ChassisOperationSequenceDTO> GetDetailAsync(Guid id, Guid detailId)
{
throw new NotImplementedException();
}
[NonAction]
public Task<List<ChassisOperationSequenceDTO>> GetDetailListAsync(Guid id, SfsStoreRequestInputBase requestInput)
{
throw new NotImplementedException();
}
[NonAction]
public Task AddDetailListAsync(Guid id, List<ChassisOperationSequenceDTO> list)
{
throw new NotImplementedException();
}
[NonAction]
public Task UpdateDetailAsync(Guid id, Guid detailId, ChassisOperationSequenceDTO updateDTO)
{
throw new NotImplementedException();
}
[NonAction]
public Task CheckStatusAsync(string number)
{
throw new NotImplementedException();
}
[NonAction]
public Task UpsertAsync(ChassisOperationSequenceEditInput input)
{
throw new NotImplementedException();
}
#endregion
}

19
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/ChassisOperationSequence/ChassisOperationSequenceAutoMapperProfile.cs

@ -0,0 +1,19 @@
using AutoMapper;
using Volo.Abp.AutoMapper;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Basedata.Domain;
using Win_in.Sfs.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Equipments;
namespace Win_in.Sfs.Wms.Store.Application;
public partial class StoreApplicationAutoMapperProfile : Profile
{
private void ChassisOperationSequenceAutoMapperProfile()
{
CreateMap<Domain.ChassisOperationSequence, ChassisOperationSequenceDTO>()
.ReverseMap();
}
}

12
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Equipments/EquipmentRecordAppService.cs

@ -32,32 +32,32 @@ public class EquipmentRecordAppService
} }
#region 无用 #region 无用
[NonAction]
public Task<EquipmentRecordDTO> GetDetailAsync(Guid id, Guid detailId) public Task<EquipmentRecordDTO> GetDetailAsync(Guid id, Guid detailId)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
[NonAction]
public Task<List<EquipmentRecordDTO>> GetDetailListAsync(Guid id, SfsStoreRequestInputBase requestInput) public Task<List<EquipmentRecordDTO>> GetDetailListAsync(Guid id, SfsStoreRequestInputBase requestInput)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
[NonAction]
public Task AddDetailListAsync(Guid id, List<EquipmentRecordDTO> list) public Task AddDetailListAsync(Guid id, List<EquipmentRecordDTO> list)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
[NonAction]
public Task UpdateDetailAsync(Guid id, Guid detailId, EquipmentRecordDTO updateDTO) public Task UpdateDetailAsync(Guid id, Guid detailId, EquipmentRecordDTO updateDTO)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
[NonAction]
public Task CheckStatusAsync(string number) public Task CheckStatusAsync(string number)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
[NonAction]
public Task UpsertAsync(EquipmentRecordEditInput input) public Task UpsertAsync(EquipmentRecordEditInput input)
{ {
throw new NotImplementedException(); throw new NotImplementedException();

205
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AssembleJobs/AssembleJobAppService.cs

@ -1,63 +1,116 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data;
using System.Linq; using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Castle.Components.DictionaryAdapter;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
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.Domain.Shared; using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
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.Domain.Shared; using Win_in.Sfs.Wms.Store.Domain.Shared;
using Win_in.Sfs.Wms.Store.Notes;
namespace Win_in.Sfs.Wms.Store.Application; namespace Win_in.Sfs.Wms.Store.Application;
[Authorize] [Authorize]
[Route($"{StoreConsts.RootPath}assemble-job")] [Route($"{StoreConsts.RootPath}assemble-job")]
public class AssembleJobAppService public class AssembleJobAppService
: SfsJobAppServiceBase<AssembleJob, AssembleJobDetail, AssembleJobDTO, SfsJobRequestInputBase, AssembleJobCheckInput, AssembleJobEditInput>, : SfsJobAppServiceBase<AssembleJob, AssembleJobDetail, AssembleJobDTO, SfsJobRequestInputBase,
IAssembleJobAppService AssembleJobCheckInput, AssembleJobEditInput>,
IAssembleJobAppService, ITransferLibCallback
{ {
private readonly IAssembleJobManager _assembleJobManager; private readonly IAssembleJobManager _assembleJobManager;
private readonly ILocationAppService _locationAppService;
private readonly ITransferLibJobAppService _transferLibJobAppService;
public AssembleJobAppService( public AssembleJobAppService(
IAssembleJobRepository repository, IAssembleJobManager assembleJobManager IAssembleJobRepository repository, IAssembleJobManager assembleJobManager,
) : base(repository, assembleJobManager) ILocationAppService locationAppService, ITransferLibJobAppService transferLibJobAppService) : base(repository, assembleJobManager)
{ {
_assembleJobManager = assembleJobManager; _assembleJobManager = assembleJobManager;
_locationAppService = locationAppService;
_transferLibJobAppService = transferLibJobAppService;
}
[HttpPost("add-many")]
public override async Task<List<AssembleJobDTO>> CreateManyAsync(List<AssembleJobEditInput> inputs)
{
foreach (var input in inputs)
{
await CheckMinRowAndSetStatusAsync(input).ConfigureAwait(false);
}
return await base.CreateManyAsync(inputs).ConfigureAwait(false);
}
[HttpPost("")]
public override async Task<AssembleJobDTO> CreateAsync(AssembleJobEditInput input)
{
await CheckMinRowAndSetStatusAsync(input).ConfigureAwait(false);
return await base.CreateAsync(input).ConfigureAwait(false);
} }
/// <summary> /// <summary>
/// 根据物品和库位 检查是否存在发料任务 /// 判断是不是在最底层 如果不是则把状态变更为等待 并把库移推荐的From和To赋值
/// </summary> /// </summary>
/// <param name="itemCode"></param> /// <param name="input"></param>
/// <param name="locationCode"></param>
/// <returns></returns> /// <returns></returns>
/// <exception cref="NotImplementedException"></exception> private async Task CheckMinRowAndSetStatusAsync(AssembleJobEditInput input)
[Authorize]
[HttpGet("check-job-exist")]
public virtual async Task<List<AssembleJobDTO>> CheckJobExistByItemCodeAndLocationCode(string itemCode,
string locationCode)
{ {
var entities = await _repository.GetListAsync(c => var jobDetailInputdetail = input.Details.FirstOrDefault();
c.Details.Any(p =>
(p.ItemCode == itemCode && p.RecommendFromLocationCode == locationCode) || var loctionDto = await _locationAppService.GetByCodeAsync(jobDetailInputdetail.RecommendFromLocationCode)
(p.ItemCode == itemCode && p.ToLocationCode == locationCode)) .ConfigureAwait(false);
&& (c.JobStatus == EnumJobStatus.Open || c.JobStatus == EnumJobStatus.Doing), true).ConfigureAwait(false);
var dtos = ObjectMapper.Map<List<AssembleJob>, List<AssembleJobDTO>>(entities); if (loctionDto.RowCode != 1)
return dtos; {
input.JobStatus = EnumJobStatus.Wait;
jobDetailInputdetail.TransferLibFromArriveDate = jobDetailInputdetail.RecommendFromArriveDate;
jobDetailInputdetail.TransferLibFromContainerCode = jobDetailInputdetail.RecommendFromContainerCode;
jobDetailInputdetail.TransferLibFromExpireDate = jobDetailInputdetail.RecommendFromExpireDate;
jobDetailInputdetail.TransferLibFromLocationArea = jobDetailInputdetail.RecommendFromLocationArea;
jobDetailInputdetail.TransferLibFromLocationCode = jobDetailInputdetail.RecommendFromLocationCode;
jobDetailInputdetail.TransferLibFromLocationErpCode = jobDetailInputdetail.RecommendFromLocationErpCode;
jobDetailInputdetail.TransferLibFromLocationGroup = jobDetailInputdetail.RecommendFromLocationGroup;
jobDetailInputdetail.TransferLibFromLot = jobDetailInputdetail.RecommendFromLot;
jobDetailInputdetail.TransferLibFromPackingCode = jobDetailInputdetail.RecommendFromPackingCode;
jobDetailInputdetail.TransferLibFromProduceDate = jobDetailInputdetail.RecommendFromProduceDate;
jobDetailInputdetail.TransferLibFromQty = jobDetailInputdetail.RecommendFromQty;
jobDetailInputdetail.TransferLibFromSupplierBatch = jobDetailInputdetail.RecommendFromSupplierBatch;
jobDetailInputdetail.TransferLibFromWarehouseCode = jobDetailInputdetail.RecommendFromWarehouseCode;
jobDetailInputdetail.TransferLibToArriveDate = jobDetailInputdetail.RecommendToArriveDate;
jobDetailInputdetail.TransferLibToContainerCode = jobDetailInputdetail.RecommendToContainerCode;
jobDetailInputdetail.TransferLibToExpireDate = jobDetailInputdetail.RecommendToExpireDate;
jobDetailInputdetail.TransferLibToLocationArea = jobDetailInputdetail.RecommendToLocationArea;
jobDetailInputdetail.TransferLibToLocationCode = jobDetailInputdetail.RecommendToLocationCode;
jobDetailInputdetail.TransferLibToLocationErpCode = jobDetailInputdetail.RecommendToLocationErpCode;
jobDetailInputdetail.TransferLibToLocationGroup = jobDetailInputdetail.RecommendToLocationGroup;
jobDetailInputdetail.TransferLibToLot = jobDetailInputdetail.RecommendToLot;
jobDetailInputdetail.TransferLibToPackingCode = jobDetailInputdetail.RecommendToPackingCode;
jobDetailInputdetail.TransferLibToProduceDate = jobDetailInputdetail.RecommendToProduceDate;
jobDetailInputdetail.TransferLibToQty = jobDetailInputdetail.RecommendToQty;
jobDetailInputdetail.TransferLibToSupplierBatch = jobDetailInputdetail.RecommendToSupplierBatch;
jobDetailInputdetail.TransferLibToWarehouseCode = jobDetailInputdetail.RecommendToWarehouseCode;
}
} }
[HttpPost("cancel-by-request/{assembleNumber}")] [HttpPost("cancel-by-request/{assembleRequestNumber}")]
public virtual async Task CancelByMaterialRequestAsync(string assembleNumber) public virtual async Task CancelByMaterialRequestAsync(string assembleNumber)
{ {
var entities = await _repository.GetListAsync(p => p.AssembleRequestNumber == assembleNumber).ConfigureAwait(false); var entities = await _repository.GetListAsync(p => p.AssembleRequestNumber == assembleNumber)
.ConfigureAwait(false);
foreach (var entity in entities) foreach (var entity in entities)
{ {
await _assembleJobManager.CancelAsync(entity).ConfigureAwait(false); await _assembleJobManager.CancelAsync(entity).ConfigureAwait(false);
@ -74,71 +127,67 @@ public class AssembleJobAppService
} }
await _assembleJobManager.CancelAsync(assembleJob).ConfigureAwait(false); await _assembleJobManager.CancelAsync(assembleJob).ConfigureAwait(false);
}
/// <summary>
/// 根据叫料请求类型获取发料任务
/// </summary>
/// <param name="requestInput"></param>
/// <param name="requestType">
/// 叫料请求类型:
/// 人工拉动:Issue_Manual;
/// 线边拉动:Issue_WIP;
/// </param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpPost("by-type/{requestType}")]
public virtual async Task<PagedResultDto<AssembleJobDTO>> GetListByTypeAsync(SfsJobRequestInputBase requestInput,
string requestType, bool includeDetails = false, CancellationToken cancellationToken = default)
{
Expression<Func<AssembleJob, bool>> expression = p => p.RequestType == requestType;
if (requestInput.Condition.Filters?.Count > 0)
{
expression = expression.And(requestInput.Condition.Filters.ToLambda<AssembleJob>());
}
return await GetPagedListAsync(expression, requestInput.SkipCount, requestInput.MaxResultCount,
requestInput.Sorting, includeDetails, cancellationToken).ConfigureAwait(false);
} }
[HttpPost("by-request-number/{requestNumber}")] [HttpPost("by-request-number/{requestNumber}")]
public virtual async Task<List<AssembleJobDTO>> GetByRequestNumberAsync(string requestNumber) public virtual async Task<List<AssembleJobDTO>> GetByRequestNumberAsync(string requestNumber)
{ {
var entitys = await _repository.GetListAsync(p => p.AssembleRequestNumber == requestNumber).ConfigureAwait(false); var entitys = await _repository.GetListAsync(p => p.AssembleRequestNumber == requestNumber)
.ConfigureAwait(false);
return ObjectMapper.Map<List<AssembleJob>, List<AssembleJobDTO>>(entitys); return ObjectMapper.Map<List<AssembleJob>, List<AssembleJobDTO>>(entitys);
} }
/// <summary> [HttpPost("Do-Call-Back")]
/// 保存拆箱时涉及的明细修改 public async Task DoTransferLibCallbackAsync(TransferLibJobDTO dto)
/// </summary>
/// <returns></returns>
[HttpPost("save-detail-split-packing")]
public virtual async Task<AssembleJobDTO> SaveDetail_SplitPackingAsync(SplitPacking_UpdateJobDetailInput input)
{ {
var job = await _repository.FindAsync(p => p.Number == input.Number).ConfigureAwait(false); var job = await _repository.FindAsync(p => p.Number == dto.JobNumber).ConfigureAwait(false);
AssembleJobDetail detail = job.Details.FirstOrDefault(p => p.RecommendPackingCode == input.FromPackingCode ); /*&& p.HandledQty == input.FromQty*/
if (detail == null) //todo 等云峰写好换成真实的
{ var transferLibJobDto = await _transferLibJobAppService.GetByNumberAsync("AAA").ConfigureAwait(false);
//throw new UserFriendlyException($"根据HandledPackingCode={input.FromPackingCode}取AssembleJobDetail表为空!"); var transferLibNote = new TransferLibNote();
throw new UserFriendlyException($"根据RecommendPackingCode={input.FromPackingCode}取AssembleJobDetail表为空!");
var transferLibNoteDetail = transferLibNote.Details.First();
var jobDetail = job.Details.First();
job.JobStatus = EnumJobStatus.Open;
jobDetail.TransferLibFromArriveDate = transferLibNoteDetail.HandledFromArriveDate;
jobDetail.TransferLibFromContainerCode = transferLibNoteDetail.HandledFromContainerCode;
jobDetail.TransferLibFromExpireDate = transferLibNoteDetail.HandledFromExpireDate;
jobDetail.TransferLibFromLocationArea = transferLibNoteDetail.HandledFromLocationArea;
jobDetail.TransferLibFromLocationCode = transferLibNoteDetail.HandledFromLocationCode;
jobDetail.TransferLibFromLocationErpCode = transferLibNoteDetail.HandledFromLocationErpCode;
jobDetail.TransferLibFromLocationGroup = transferLibNoteDetail.HandledFromLocationGroup;
jobDetail.TransferLibFromLot = transferLibNoteDetail.HandledFromLot;
jobDetail.TransferLibFromPackingCode = transferLibNoteDetail.HandledFromPackingCode;
jobDetail.TransferLibFromProduceDate = transferLibNoteDetail.HandledFromProduceDate;
jobDetail.TransferLibFromQty = transferLibNoteDetail.HandledFromQty;
jobDetail.TransferLibFromSupplierBatch = transferLibNoteDetail.HandledFromSupplierBatch;
jobDetail.TransferLibFromWarehouseCode = transferLibNoteDetail.HandledFromWarehouseCode;
jobDetail.TransferLibToArriveDate = transferLibNoteDetail.HandledToArriveDate;
jobDetail.TransferLibToContainerCode = transferLibNoteDetail.HandledToContainerCode;
jobDetail.TransferLibToExpireDate = transferLibNoteDetail.HandledToExpireDate;
jobDetail.TransferLibToLocationArea = transferLibNoteDetail.HandledToLocationArea;
jobDetail.TransferLibToLocationCode = transferLibNoteDetail.HandledToLocationCode;
jobDetail.TransferLibToLocationErpCode = transferLibNoteDetail.HandledToLocationErpCode;
jobDetail.TransferLibToLocationGroup = transferLibNoteDetail.HandledToLocationGroup;
jobDetail.TransferLibToLot = transferLibNoteDetail.HandledToLot;
jobDetail.TransferLibToPackingCode = transferLibNoteDetail.HandledToPackingCode;
jobDetail.TransferLibToProduceDate = transferLibNoteDetail.HandledToProduceDate;
jobDetail.TransferLibToQty = transferLibNoteDetail.HandledToQty;
jobDetail.TransferLibToSupplierBatch = transferLibNoteDetail.HandledToSupplierBatch;
jobDetail.TransferLibToWarehouseCode = transferLibNoteDetail.HandledToWarehouseCode;
await _repository.UpdateAsync(job).ConfigureAwait(false);
return;
} }
//插入目标箱
var newDetail = CommonHelper.CloneObj(detail); [HttpPost("test")]
newDetail.SetId(GuidGenerator.Create()); public virtual async Task Test()
newDetail.RecommendPackingCode = input.ToPackingCode; {
newDetail.RecommendQty = input.ToQty; Console.WriteLine("FuAZCZXVZXVXZVZ");
newDetail.HandledPackingCode = detail.HandledPackingCode.HasValue() ? input.ToPackingCode : null; //源实际实际箱码有值,则新记录实际箱码有值 await Task.CompletedTask;
newDetail.HandledQty = detail.HandledQty > 0 ? input.ToQty : 0;
//newDetail.CreationTime = CommonHelper.CurTime;
job.Details.Add(newDetail);
//修改源箱
detail.RecommendQty = input.FromQty - input.ToQty;
detail.HandledQty = detail.HandledQty > 0 ? input.FromQty - input.ToQty : 0;
var entity = await _repository.UpdateAsync(job).ConfigureAwait(false);
var ret = ObjectMapper.Map<AssembleJob, AssembleJobDTO>(entity);
return ret;
} }
} }

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

@ -1,195 +1,194 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data;
using System.Linq; using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Castle.Components.DictionaryAdapter;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
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.Domain.Shared; using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Application;
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.Shared; using Win_in.Sfs.Wms.Store.Domain.Shared;
using Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
using Win_in.Sfs.Wms.Store.Notes;
namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs; namespace Win_in.Sfs.Wms.Store.Application;
[Authorize] [Authorize]
[Route($"{StoreConsts.RootPath}coatingissue-job")] [Route($"{StoreConsts.RootPath}coating-issue-job")]
public class CoatingIssueJobAppService public class CoatingIssueJobAppService
: SfsJobAppServiceBase<CoatingIssueJob, CoatingIssueJobDetail, CoatingIssueJobDTO, SfsJobRequestInputBase, CoatingIssueJobCheckInput, CoatingIssueJobEditInput>, : SfsJobAppServiceBase<CoatingIssueJob, CoatingIssueJobDetail, CoatingIssueJobDTO, SfsJobRequestInputBase,
ICoatingIssueJobAppService CoatingIssueJobCheckInput, CoatingIssueJobEditInput>,
ICoatingIssueJobAppService, ITransferLibCallback
{ {
private readonly ICoatingIssueJobManager _CoatingIssueJobManager; private readonly ICoatingIssueJobManager _coatingIssueJobManager;
private readonly ILocationAppService _locationAppService;
private readonly ITransferLibJobAppService _transferLibJobAppService;
public CoatingIssueJobAppService( public CoatingIssueJobAppService(
ICoatingIssueJobRepository repository, ICoatingIssueJobManager CoatingIssueJobManager ICoatingIssueJobRepository repository, ICoatingIssueJobManager coatingIssueJobManager,
) : base(repository, CoatingIssueJobManager) ILocationAppService locationAppService, ITransferLibJobAppService transferLibJobAppService) : base(repository, coatingIssueJobManager)
{ {
_CoatingIssueJobManager = CoatingIssueJobManager; _coatingIssueJobManager = coatingIssueJobManager;
_locationAppService = locationAppService;
_transferLibJobAppService = transferLibJobAppService;
} }
/// <summary> [HttpPost("add-many")]
/// 根据物品和库位 检查是否存在发料任务 public override async Task<List<CoatingIssueJobDTO>> CreateManyAsync(List<CoatingIssueJobEditInput> inputs)
/// </summary> {
/// <param name="itemCode"></param> foreach (var input in inputs)
/// <param name="locationCode"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
[Authorize]
[HttpGet("check-job-exist")]
public virtual async Task<List<CoatingIssueJobDTO>> CheckJobExistByItemCodeAndLocationCode(string itemCode,
string locationCode)
{ {
var entities = await _repository.GetListAsync(c => await CheckMinRowAndSetStatusAsync(input).ConfigureAwait(false);
c.Details.Any(p =>
p.ItemCode == itemCode && p.RecommendFromLocationCode == locationCode ||
p.ItemCode == itemCode && p.ToLocationCode == locationCode)
&& (c.JobStatus == EnumJobStatus.Open || c.JobStatus == EnumJobStatus.Doing), true).ConfigureAwait(false);
var dtos = ObjectMapper.Map<List<CoatingIssueJob>, List<CoatingIssueJobDTO>>(entities);
return dtos;
} }
[HttpPost("cancel-by-request/{materialNumber}")] return await base.CreateManyAsync(inputs).ConfigureAwait(false);
public virtual async Task CancelByMaterialRequestAsync(string materialNumber) }
[HttpPost("")]
public override async Task<CoatingIssueJobDTO> CreateAsync(CoatingIssueJobEditInput input)
{ {
var entities = await _repository.GetListAsync(p => p.MaterialRequestNumber == materialNumber).ConfigureAwait(false); await CheckMinRowAndSetStatusAsync(input).ConfigureAwait(false);
return await base.CreateAsync(input).ConfigureAwait(false);
}
/// <summary>
/// 判断是不是在最底层 如果不是则把状态变更为等待 并把库移推荐的From和To赋值
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
private async Task CheckMinRowAndSetStatusAsync(CoatingIssueJobEditInput input)
{
var jobDetailInputdetail = input.Details.FirstOrDefault();
var loctionDto = await _locationAppService.GetByCodeAsync(jobDetailInputdetail.RecommendFromLocationCode)
.ConfigureAwait(false);
if (loctionDto.RowCode != 1)
{
input.JobStatus = EnumJobStatus.Wait;
jobDetailInputdetail.TransferLibFromArriveDate = jobDetailInputdetail.RecommendFromArriveDate;
jobDetailInputdetail.TransferLibFromContainerCode = jobDetailInputdetail.RecommendFromContainerCode;
jobDetailInputdetail.TransferLibFromExpireDate = jobDetailInputdetail.RecommendFromExpireDate;
jobDetailInputdetail.TransferLibFromLocationArea = jobDetailInputdetail.RecommendFromLocationArea;
jobDetailInputdetail.TransferLibFromLocationCode = jobDetailInputdetail.RecommendFromLocationCode;
jobDetailInputdetail.TransferLibFromLocationErpCode = jobDetailInputdetail.RecommendFromLocationErpCode;
jobDetailInputdetail.TransferLibFromLocationGroup = jobDetailInputdetail.RecommendFromLocationGroup;
jobDetailInputdetail.TransferLibFromLot = jobDetailInputdetail.RecommendFromLot;
jobDetailInputdetail.TransferLibFromPackingCode = jobDetailInputdetail.RecommendFromPackingCode;
jobDetailInputdetail.TransferLibFromProduceDate = jobDetailInputdetail.RecommendFromProduceDate;
jobDetailInputdetail.TransferLibFromQty = jobDetailInputdetail.RecommendFromQty;
jobDetailInputdetail.TransferLibFromSupplierBatch = jobDetailInputdetail.RecommendFromSupplierBatch;
jobDetailInputdetail.TransferLibFromWarehouseCode = jobDetailInputdetail.RecommendFromWarehouseCode;
jobDetailInputdetail.TransferLibToArriveDate = jobDetailInputdetail.RecommendToArriveDate;
jobDetailInputdetail.TransferLibToContainerCode = jobDetailInputdetail.RecommendToContainerCode;
jobDetailInputdetail.TransferLibToExpireDate = jobDetailInputdetail.RecommendToExpireDate;
jobDetailInputdetail.TransferLibToLocationArea = jobDetailInputdetail.RecommendToLocationArea;
jobDetailInputdetail.TransferLibToLocationCode = jobDetailInputdetail.RecommendToLocationCode;
jobDetailInputdetail.TransferLibToLocationErpCode = jobDetailInputdetail.RecommendToLocationErpCode;
jobDetailInputdetail.TransferLibToLocationGroup = jobDetailInputdetail.RecommendToLocationGroup;
jobDetailInputdetail.TransferLibToLot = jobDetailInputdetail.RecommendToLot;
jobDetailInputdetail.TransferLibToPackingCode = jobDetailInputdetail.RecommendToPackingCode;
jobDetailInputdetail.TransferLibToProduceDate = jobDetailInputdetail.RecommendToProduceDate;
jobDetailInputdetail.TransferLibToQty = jobDetailInputdetail.RecommendToQty;
jobDetailInputdetail.TransferLibToSupplierBatch = jobDetailInputdetail.RecommendToSupplierBatch;
jobDetailInputdetail.TransferLibToWarehouseCode = jobDetailInputdetail.RecommendToWarehouseCode;
}
}
[HttpPost("cancel-by-request/{requestNumber}")]
public virtual async Task CancelByMaterialRequestAsync(string requestNumber)
{
var entities = await _repository.GetListAsync(p => p.MaterialRequestNumber == requestNumber)
.ConfigureAwait(false);
foreach (var entity in entities) foreach (var entity in entities)
{ {
await _CoatingIssueJobManager.CancelAsync(entity).ConfigureAwait(false); await _coatingIssueJobManager.CancelAsync(entity).ConfigureAwait(false);
} }
} }
//[Authorize(CoatingIssueJobPermissions.Delete)]
//[HttpDelete("details/{id}")]
//public virtual async Task DeleteDetailAsync(Guid id, Guid detailId)
//{
// var entity = await _repository.GetAsync(id);
// Check.NotNull(entity, EntityClassName);
// var input = new CoatingIssueJobCheckInput
// {
// JobStatuses = new List<EnumJobStatus>() { EnumJobStatus.Pending, EnumJobStatus.Open },
// };
// var result = new AbpValidationResult();
// var detail = entity.GetDetail(detailId);
// _CoatingIssueJobManager.CheckJobStatus(entity, input.JobStatuses, result);
// if (result.Errors.Any())
// {
// throw new AbpValidationException("任务状态错误,不能进行删除明细操作");
// }
// entity.RemoveDetail(detailId);
//}
//[Authorize(CoatingIssueJobPermissions.Delete)]
[HttpPost("invalid")] [HttpPost("invalid")]
public override async Task CancelAsync(Guid id) public override async Task CancelAsync(Guid id)
{ {
var CoatingIssueJob = await _repository.GetAsync(id).ConfigureAwait(false); var coatingIssueJob = await _repository.GetAsync(id).ConfigureAwait(false);
if (CoatingIssueJob == null) if (coatingIssueJob == null)
{ {
throw new UserFriendlyException($"未找到ID为 {id} 的任务"); throw new UserFriendlyException($"未找到ID为 {id} 的任务");
} }
/* await _coatingIssueJobManager.CancelAsync(coatingIssueJob).ConfigureAwait(false);
var listLocationCode = new List<string>();//取出所有当前job 影响的库位code
foreach (var detail in CoatingIssueJob.Details)
{
if (detail.HandledLocationCode != null)
{
listLocationCode.Add(detail.HandledLocationCode);
}
if (detail.HandledLocationCode != null)
{
listLocationCode.Add(detail.RecommendLocationCode);
} }
if (detail.HandledLocationCode != null)
[HttpPost("by-request-number/{requestNumber}")]
public virtual async Task<List<CoatingIssueJobDTO>> GetByRequestNumberAsync(string requestNumber)
{ {
listLocationCode.Add(detail.RequestLocationCode); var entitys = await _repository.GetListAsync(p => p.MaterialRequestNumber == requestNumber)
.ConfigureAwait(false);
return ObjectMapper.Map<List<CoatingIssueJob>, List<CoatingIssueJobDTO>>(entitys);
} }
if (detail.HandledLocationCode != null)
[HttpPost("Do-Call-Back")]
public async Task DoTransferLibCallbackAsync(TransferLibJobDTO dto)
{ {
listLocationCode.Add(detail.ToLocationCode); var job = await _repository.FindAsync(p => p.Number == dto.JobNumber).ConfigureAwait(false);
}
}
listLocationCode = listLocationCode.Distinct().ToList();
*/
await _CoatingIssueJobManager.CancelAsync(CoatingIssueJob).ConfigureAwait(false); //todo 等云峰写好换成真实的
var transferLibJobDto = await _transferLibJobAppService.GetByNumberAsync("AAA").ConfigureAwait(false);
var transferLibNote = new TransferLibNote();
} var transferLibNoteDetail = transferLibNote.Details.First();
/// <summary> var jobDetail = job.Details.First();
/// 根据叫料请求类型获取发料任务 job.JobStatus = EnumJobStatus.Open;
/// </summary>
/// <param name="requestInput"></param>
/// <param name="requestType">
/// 叫料请求类型:
/// 人工拉动:Issue_Manual;
/// 线边拉动:Issue_WIP;
/// </param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpPost("by-type/{requestType}")]
public virtual async Task<PagedResultDto<CoatingIssueJobDTO>> GetListByTypeAsync(SfsJobRequestInputBase requestInput,
string requestType, bool includeDetails = false, CancellationToken cancellationToken = default)
{
Expression<Func<CoatingIssueJob, bool>> expression = p => p.RequestType == requestType;
if (requestInput.Condition.Filters?.Count > 0)
{
expression = expression.And(requestInput.Condition.Filters.ToLambda<CoatingIssueJob>());
}
return await GetPagedListAsync(expression, requestInput.SkipCount, requestInput.MaxResultCount, jobDetail.TransferLibFromArriveDate = transferLibNoteDetail.HandledFromArriveDate;
requestInput.Sorting, includeDetails, cancellationToken).ConfigureAwait(false); jobDetail.TransferLibFromContainerCode = transferLibNoteDetail.HandledFromContainerCode;
jobDetail.TransferLibFromExpireDate = transferLibNoteDetail.HandledFromExpireDate;
jobDetail.TransferLibFromLocationArea = transferLibNoteDetail.HandledFromLocationArea;
jobDetail.TransferLibFromLocationCode = transferLibNoteDetail.HandledFromLocationCode;
jobDetail.TransferLibFromLocationErpCode = transferLibNoteDetail.HandledFromLocationErpCode;
jobDetail.TransferLibFromLocationGroup = transferLibNoteDetail.HandledFromLocationGroup;
jobDetail.TransferLibFromLot = transferLibNoteDetail.HandledFromLot;
jobDetail.TransferLibFromPackingCode = transferLibNoteDetail.HandledFromPackingCode;
jobDetail.TransferLibFromProduceDate = transferLibNoteDetail.HandledFromProduceDate;
jobDetail.TransferLibFromQty = transferLibNoteDetail.HandledFromQty;
jobDetail.TransferLibFromSupplierBatch = transferLibNoteDetail.HandledFromSupplierBatch;
jobDetail.TransferLibFromWarehouseCode = transferLibNoteDetail.HandledFromWarehouseCode;
} jobDetail.TransferLibToArriveDate = transferLibNoteDetail.HandledToArriveDate;
jobDetail.TransferLibToContainerCode = transferLibNoteDetail.HandledToContainerCode;
jobDetail.TransferLibToExpireDate = transferLibNoteDetail.HandledToExpireDate;
jobDetail.TransferLibToLocationArea = transferLibNoteDetail.HandledToLocationArea;
jobDetail.TransferLibToLocationCode = transferLibNoteDetail.HandledToLocationCode;
jobDetail.TransferLibToLocationErpCode = transferLibNoteDetail.HandledToLocationErpCode;
jobDetail.TransferLibToLocationGroup = transferLibNoteDetail.HandledToLocationGroup;
jobDetail.TransferLibToLot = transferLibNoteDetail.HandledToLot;
jobDetail.TransferLibToPackingCode = transferLibNoteDetail.HandledToPackingCode;
jobDetail.TransferLibToProduceDate = transferLibNoteDetail.HandledToProduceDate;
jobDetail.TransferLibToQty = transferLibNoteDetail.HandledToQty;
jobDetail.TransferLibToSupplierBatch = transferLibNoteDetail.HandledToSupplierBatch;
jobDetail.TransferLibToWarehouseCode = transferLibNoteDetail.HandledToWarehouseCode;
[HttpPost("by-request-number/{requestNumber}")] await _repository.UpdateAsync(job).ConfigureAwait(false);
public virtual async Task<List<CoatingIssueJobDTO>> GetByRequestNumberAsync(string requestNumber)
{ return;
var entitys = await _repository.GetListAsync(p => p.MaterialRequestNumber == requestNumber).ConfigureAwait(false);
return ObjectMapper.Map<List<CoatingIssueJob>, List<CoatingIssueJobDTO>>(entitys);
} }
/// <summary> [HttpPost("test")]
/// 保存拆箱时涉及的明细修改 public virtual async Task Test()
/// </summary>
/// <returns></returns>
[HttpPost("save-detail-split-packing")]
public virtual async Task<CoatingIssueJobDTO> SaveDetail_SplitPackingAsync(SplitPacking_UpdateJobDetailInput input)
{ {
var job = await _repository.FindAsync(p => p.Number == input.Number).ConfigureAwait(false); Console.WriteLine("FuAZCZXVZXVXZVZ");
var detail = job.Details.FirstOrDefault(p => p.RecommendPackingCode == input.FromPackingCode); /*&& p.HandledQty == input.FromQty*/ await Task.CompletedTask;
if (detail == null)
{
throw new UserFriendlyException($"根据RecommendPackingCode={input.FromPackingCode}取CoatingIssueJobDetail表为空!");
}
//插入目标箱
var newDetail = CommonHelper.CloneObj(detail);
newDetail.SetId(GuidGenerator.Create());
newDetail.RecommendPackingCode = input.ToPackingCode;
newDetail.RecommendQty = input.ToQty;
newDetail.HandledPackingCode = detail.HandledPackingCode.HasValue() ? input.ToPackingCode : null; //源实际实际箱码有值,则新记录实际箱码有值
newDetail.HandledQty = detail.HandledQty > 0 ? input.ToQty : 0;
//newDetail.CreationTime = CommonHelper.CurTime;
job.Details.Add(newDetail);
//修改源箱
detail.RecommendQty = input.FromQty - input.ToQty;
detail.HandledQty = detail.HandledQty > 0 ? input.FromQty - input.ToQty : 0;
var entity = await _repository.UpdateAsync(job).ConfigureAwait(false);
var ret = ObjectMapper.Map<CoatingIssueJob, CoatingIssueJobDTO>(entity);
return ret;
} }
} }

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAutoMapperProfile.cs

@ -1,5 +1,7 @@
using AutoMapper; using AutoMapper;
using Volo.Abp.AutoMapper; using Volo.Abp.AutoMapper;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Jobs.IssueJobs; using Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
namespace Win_in.Sfs.Wms.Store.Application; namespace Win_in.Sfs.Wms.Store.Application;
@ -8,9 +10,10 @@ public partial class StoreApplicationAutoMapperProfile : Profile
{ {
private void CoatingIssueJobAutoMapperProfile() private void CoatingIssueJobAutoMapperProfile()
{ {
CreateMap<CoatingIssueJob, CoatingIssueJobDTO>(); CreateMap<CoatingIssueJob, CoatingIssueJobDTO>()
.ReverseMap();
CreateMap<CoatingIssueJobDTO, CoatingIssueJob>(); //CreateMap<CoatingIssueJobDTO, CoatingIssueJob>();
CreateMap<CoatingIssueJobDetail, CoatingIssueJobDetailDTO>() CreateMap<CoatingIssueJobDetail, CoatingIssueJobDetailDTO>()
; ;

8
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/InjectionJobs/InjectionJobAppService.cs

@ -140,13 +140,11 @@ public class InjectionJobAppService
[HttpPost("Do-Call-Back")] [HttpPost("Do-Call-Back")]
public async Task DoTransferLibCallbackAsync(TransferLibJobDTO dto) public async Task DoTransferLibCallbackAsync(TransferLibJobDTO dto)
{ {
var job = await _repository.FindAsync(p => p.Number == dto.JobNumber).ConfigureAwait(false); var job = await _repository.FindAsync(p => p.Number == dto.CallJobNumber).ConfigureAwait(false);
//todo 等云峰写好换成真实的 var transferLibJobDto= await _transferLibJobAppService.GetByNumberAsync(dto.Number).ConfigureAwait(false);
var transferLibJobDto= await _transferLibJobAppService.GetByNumberAsync("AAA").ConfigureAwait(false);
var transferLibNote = new TransferLibNote();
var transferLibNoteDetail=transferLibNote.Details.First(); var transferLibNoteDetail= dto.Details.First();
var jobDetail = job.Details.First(); var jobDetail = job.Details.First();
job.JobStatus = EnumJobStatus.Open; job.JobStatus = EnumJobStatus.Open;

12
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/TransferLibJobs/TransferLibJobAutoMapperProfile.cs

@ -9,13 +9,13 @@ public partial class StoreApplicationAutoMapperProfile : Profile
{ {
private void TransferLibJobAutoMapperProfile() private void TransferLibJobAutoMapperProfile()
{ {
CreateMap<TransferLibJob, TransferLibJobDTO>() CreateMap<TransferLibJob, TransferLibJobDTO>(MemberList.None);
.ReverseMap(); CreateMap<TransferLibJobDetail, TransferLibJobDetailDTO>(MemberList.None);
CreateMap<TransferLibJobDetail, TransferLibJobDetailDTO>() CreateMap<TransferLibJobDTO, TransferLibJob>(MemberList.None);
.ReverseMap(); CreateMap<TransferLibJobDetailDTO, TransferLibJobDetail>(MemberList.None);
CreateMap<TransferLibJobDetailInput, TransferLibJobDetail>() CreateMap<TransferLibJobDetailInput, TransferLibJobDetail>(MemberList.None)
.IgnoreAuditedObjectProperties() .IgnoreAuditedObjectProperties()
.Ignore(x => x.MasterID) .Ignore(x => x.MasterID)
.Ignore(x => x.TenantId) .Ignore(x => x.TenantId)
@ -23,7 +23,7 @@ public partial class StoreApplicationAutoMapperProfile : Profile
.Ignore(x => x.Id) .Ignore(x => x.Id)
.IgnoreAuditedObjectProperties(); .IgnoreAuditedObjectProperties();
CreateMap<TransferLibJobEditInput, TransferLibJob>() CreateMap<TransferLibJobEditInput, TransferLibJob>(MemberList.None)
.IgnoreAuditedObjectProperties() .IgnoreAuditedObjectProperties()
.Ignore(x => x.Number) .Ignore(x => x.Number)
.Ignore(x => x.Id) .Ignore(x => x.Id)

50
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteAppService.cs

@ -11,30 +11,28 @@ using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Entities;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Event; using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Store.Application;
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.Shared; using Win_in.Sfs.Wms.Store.Domain.Shared;
using Win_in.Sfs.Wms.Store.Notes.IssueNotes; using Win_in.Sfs.Wms.Store.Notes.IssueNotes;
namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes; namespace Win_in.Sfs.Wms.Store.Application;
[Authorize] [Authorize]
[Route($"{StoreConsts.RootPath}coatingissue-note")] [Route($"{StoreConsts.RootPath}coating-note")]
public class CoatingIssueNoteAppService : public class CoatingIssueNoteAppService :
SfsStoreWithDetailsAppServiceBase<CoatingIssueNote, CoatingIssueNoteDTO, SfsStoreRequestInputBase, CoatingIssueNoteEditInput, CoatingIssueNoteDetail, SfsStoreWithDetailsAppServiceBase<CoatingIssueNote, CoatingIssueNoteDTO, SfsStoreRequestInputBase, CoatingIssueNoteEditInput, CoatingIssueNoteDetail,
CoatingIssueNoteDetailDTO, SfsStoreRequestInputBase, CoatingIssueNoteImportInput>, CoatingIssueNoteDetailDTO, SfsStoreRequestInputBase, CoatingIssueNoteImportInput>,
ICoatingIssueNoteAppService ICoatingIssueNoteAppService
{ {
private readonly ICoatingIssueNoteManager _CoatingIssueNoteManager; private readonly ICoatingIssueNoteManager _coatingIssueNoteManager;
public CoatingIssueNoteAppService( public CoatingIssueNoteAppService(
ICoatingIssueNoteRepository repository, ICoatingIssueNoteRepository repository,
ICoatingIssueNoteManager CoatingIssueNoteManager ICoatingIssueNoteManager coatingIssueNoteManager
) : base(repository) ) : base(repository)
{ {
_CoatingIssueNoteManager = CoatingIssueNoteManager; _coatingIssueNoteManager = coatingIssueNoteManager;
} }
[HttpPost("")] [HttpPost("")]
@ -42,7 +40,7 @@ public class CoatingIssueNoteAppService :
public override async Task<CoatingIssueNoteDTO> CreateAsync(CoatingIssueNoteEditInput input) public override async Task<CoatingIssueNoteDTO> CreateAsync(CoatingIssueNoteEditInput input)
{ {
var entity = ObjectMapper.Map<CoatingIssueNoteEditInput, CoatingIssueNote>(input); var entity = ObjectMapper.Map<CoatingIssueNoteEditInput, CoatingIssueNote>(input);
await _CoatingIssueNoteManager.CreateAsync(entity).ConfigureAwait(false); await _coatingIssueNoteManager.CreateAsync(entity).ConfigureAwait(false);
var dto = ObjectMapper.Map<CoatingIssueNote, CoatingIssueNoteDTO>(entity); var dto = ObjectMapper.Map<CoatingIssueNote, CoatingIssueNoteDTO>(entity);
return dto; return dto;
} }
@ -55,11 +53,11 @@ public class CoatingIssueNoteAppService :
[HttpPost("confirm/{id}")] [HttpPost("confirm/{id}")]
public virtual async Task<CoatingIssueNoteDTO> ConfirmAsync(Guid id) public virtual async Task<CoatingIssueNoteDTO> ConfirmAsync(Guid id)
{ {
var issueNote = await _repository.GetAsync(id).ConfigureAwait(false); var coatingIssueNote = await _repository.GetAsync(id).ConfigureAwait(false);
issueNote.Confirmed = true; coatingIssueNote.Confirmed = true;
issueNote = await _repository.UpdateAsync(issueNote).ConfigureAwait(false); coatingIssueNote = await _repository.UpdateAsync(coatingIssueNote).ConfigureAwait(false);
await LocalEventBus.PublishAsync(new SfsConfirmedEntityEventData<CoatingIssueNote>(issueNote), false).ConfigureAwait(false); await LocalEventBus.PublishAsync(new SfsConfirmedEntityEventData<CoatingIssueNote>(coatingIssueNote), false).ConfigureAwait(false);
return ObjectMapper.Map<CoatingIssueNote, CoatingIssueNoteDTO>(issueNote); return ObjectMapper.Map<CoatingIssueNote, CoatingIssueNoteDTO>(coatingIssueNote);
} }
[HttpPost("confirm-by-number/{number}")] [HttpPost("confirm-by-number/{number}")]
@ -67,7 +65,7 @@ public class CoatingIssueNoteAppService :
{ {
var entity = await _repository.FindAsync(p => p.Number == number).ConfigureAwait(false); var entity = await _repository.FindAsync(p => p.Number == number).ConfigureAwait(false);
Check.NotNull(entity, nameof(CoatingIssueNote)); Check.NotNull(entity, nameof(CoatingIssueNote));
var result = await _CoatingIssueNoteManager.ConfirmAsync(entity.Id).ConfigureAwait(false); var result = await _coatingIssueNoteManager.ConfirmAsync(entity.Id).ConfigureAwait(false);
var dto = ObjectMapper.Map<CoatingIssueNote, CoatingIssueNoteDTO>(result); var dto = ObjectMapper.Map<CoatingIssueNote, CoatingIssueNoteDTO>(result);
return dto; return dto;
} }
@ -108,26 +106,4 @@ public class CoatingIssueNoteAppService :
return dtos; return dtos;
} }
//[HttpPost("")]
//[Authorize(IssueNotePermissions.Create)]
//public override Task<IssueNoteDTO> CreateAsync(IssueNoteCreateInput input)
//{
// return base.CreateAsync(input);
//}
//[HttpPut]
//[Route($"{StoreConsts.RootPath}{id}")]
//[Authorize(IssueNotePermissions.Update)]
//public override Task<IssueNoteDTO> UpdateAsync(Guid id, IssueNoteUpdateInput input)
//{
// return base.UpdateAsync(id, input);
//}
//[HttpDelete]
//[Route($"{StoreConsts.RootPath}{id}")]
//[Authorize(IssueNotePermissions.Delete)]
//public override Task DeleteAsync(Guid id)
//{
// return base.DeleteAsync(id);
//}
} }

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteAutoMapperProfile.cs

@ -1,5 +1,7 @@
using AutoMapper; using AutoMapper;
using Volo.Abp.AutoMapper; using Volo.Abp.AutoMapper;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Notes.IssueNotes; using Win_in.Sfs.Wms.Store.Notes.IssueNotes;

191
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/AssembleRequests/AssembleRequestAppService.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsAppService.cs

@ -15,6 +15,7 @@ using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Repositories;
using Volo.Abp.ObjectMapping; using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
@ -30,28 +31,30 @@ namespace Win_in.Sfs.Wms.Store.Application;
/// </summary> /// </summary>
[Authorize] [Authorize]
[Route($"{StoreConsts.RootPath}assemble-request")] [Route($"{StoreConsts.RootPath}assemble-request")]
public class AssembleRequestAppService : SfsStoreRequestAppServiceBase<AssembleRequest, AssembleRequestDTO, public class AssembleIssueRequestsAppService : SfsStoreRequestAppServiceBase<AssembleIssueRequests, AssembleIssueRequestsDTO,
SfsStoreRequestInputBase, AssembleRequestEditInput, AssembleRequestDetail, AssembleRequestDetailDTO, SfsStoreRequestInputBase, AssembleIssueRequestsEditInput, AssembleIssueRequestsDetail, AssembleIssueRequestsDetailDTO,
SfsStoreRequestInputBase, AssembleRequestImportInput>, SfsStoreRequestInputBase, AssembleIssueRequestsImportInput>,
IAssembleRequestAppService IAssembleIssueRequestsAppService
{ {
private readonly IAssembleRequestManager _assembleRequestManager; private readonly IAssembleIssueRequestsManager _assembleRequestManager;
private readonly IItemStoreRelationAppService _itemStoreRelationApp; private readonly IItemStoreRelationAppService _itemStoreRelationApp;
private readonly IAreaAppService _areaApp; private readonly IAreaAppService _areaApp;
private readonly ILocationAppService _locationAppService; private readonly ILocationAppService _locationAppService;
private readonly IItemBasicAppService _itemBasicAppService; private readonly IItemBasicAppService _itemBasicAppService;
private readonly IProductionLineAppService _productionLineAppService; private readonly IProductionLineAppService _productionLineAppService;
private readonly IInjectionJobAppService _issueJobAppService; private readonly ITransactionTypeAppService _transactionTypeAppService;
public AssembleRequestAppService(
IAssembleRequestRepository repository, public AssembleIssueRequestsAppService(
IAssembleRequestManager assembleRequestManager, IAssembleIssueRequestsRepository repository,
IAssembleIssueRequestsManager assembleRequestManager,
IPreparationPlanManager preparationPlanManager, IPreparationPlanManager preparationPlanManager,
IItemStoreRelationAppService itemStoreRelationApp, IItemStoreRelationAppService itemStoreRelationApp,
IAreaAppService areaApp, IAreaAppService areaApp,
ILocationAppService locationAppService, ILocationAppService locationAppService,
IItemBasicAppService itemBasicAppService, IItemBasicAppService itemBasicAppService,
IProductionLineAppService productionLineAppService, IProductionLineAppService productionLineAppService,
IInjectionJobAppService issueJobAppService) ITransactionTypeAppService transactionTypeAppService
)
: base(repository, assembleRequestManager) : base(repository, assembleRequestManager)
{ {
_assembleRequestManager = assembleRequestManager; _assembleRequestManager = assembleRequestManager;
@ -60,22 +63,21 @@ public class AssembleRequestAppService : SfsStoreRequestAppServiceBase<AssembleR
_locationAppService = locationAppService; _locationAppService = locationAppService;
_itemBasicAppService = itemBasicAppService; _itemBasicAppService = itemBasicAppService;
_productionLineAppService = productionLineAppService; _productionLineAppService = productionLineAppService;
_issueJobAppService = issueJobAppService;
_transactionTypeAppService = transactionTypeAppService;
} }
#region 东阳V2 #region 东阳V2
public override async Task<AssembleRequestDTO> HandleAsync(Guid id) public override async Task<AssembleIssueRequestsDTO> HandleAsync(Guid id)
{ {
var entity = await _repository.GetAsync(id).ConfigureAwait(false); await Task.CompletedTask.ConfigureAwait(false);
await LocalEventBus.PublishAsync(new SfsHandledEntityEventData<AssembleRequest>(entity), false).ConfigureAwait(false); return null;
return ObjectMapper.Map<AssembleRequest, AssembleRequestDTO>(entity);
} }
[HttpPost("")] [HttpPost("")]
//[Authorize(AssembleRequestPermissions.Create)] public override async Task<AssembleIssueRequestsDTO> CreateAsync(AssembleIssueRequestsEditInput input)
public override async Task<AssembleRequestDTO> CreateAsync(AssembleRequestEditInput input)
{ {
foreach (var item in input.Details) foreach (var item in input.Details)
{ {
@ -87,33 +89,57 @@ public class AssembleRequestAppService : SfsStoreRequestAppServiceBase<AssembleR
foreach (var detailInput in input.Details) //赋值生产线 foreach (var detailInput in input.Details) //赋值生产线
{ {
var toLocationDto = await _locationAppService.GetByCodeAsync(detailInput.ToLocationCode).ConfigureAwait(false); var toLocationDto =
await _locationAppService.GetByCodeAsync(detailInput.ToLocationCode).ConfigureAwait(false);
CheckLocation(toLocationDto, detailInput.ToLocationCode); CheckLocation(toLocationDto, detailInput.ToLocationCode);
var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detailInput.ItemCode).ConfigureAwait(false); var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detailInput.ItemCode).ConfigureAwait(false);
CheckItemBasic(itemBasicDto, detailInput.ItemCode); CheckItemBasic(itemBasicDto, detailInput.ItemCode);
detailInput.ToLocationArea = toLocationDto.AreaCode;
detailInput.ToLocationGroup = toLocationDto.LocationGroupCode;
detailInput.ToWarehouseCode = toLocationDto.WarehouseCode;
detailInput.ProdLine = detailInput.ToLocationCode; detailInput.ProdLine = detailInput.ToLocationCode;
detailInput.ToLocationErpCode = toLocationDto.ErpLocationCode; detailInput.ToLocationErpCode = toLocationDto.ErpLocationCode;
}
input.AutoSubmit = true; detailInput.ItemDesc1 = itemBasicDto.Desc1;
input.AutoAgree = true; detailInput.ItemDesc2 = itemBasicDto.Desc2;
input.AutoHandle = true; detailInput.ItemName = itemBasicDto.Name;
input.AutoCompleteJob = false; detailInput.Uom = itemBasicDto.BasicUom;
input.DirectCreateNote = false; detailInput.StdPackQty = itemBasicDto.StdPackQty;
detailInput.Status = EnumStatus.Open;
var entity = ObjectMapper.Map<AssembleRequestEditInput, AssembleRequest>(input); //因为是刚创建的 所以发料数一定是0
detailInput.IssuedQty = 0;
}
await SetRequestAutoPropertiesAsync(input).ConfigureAwait(false);
var entity = ObjectMapper.Map<AssembleIssueRequestsEditInput, AssembleIssueRequests>(input);
var result = await _assembleRequestManager.CreateAsync(entity).ConfigureAwait(false); var result = await _assembleRequestManager.CreateByNumberAsync(entity).ConfigureAwait(false);
var dto = ObjectMapper.Map<AssembleRequest, AssembleRequestDTO>(result); var dto = ObjectMapper.Map<AssembleIssueRequests, AssembleIssueRequestsDTO>(result);
return dto; return dto;
} }
//[Authorize(AssembleRequestPermissions.Create)] /// <summary>
/// 赋值Request业务属性
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
private async Task SetRequestAutoPropertiesAsync(AssembleIssueRequestsEditInput entity)
{
var tranType = await _transactionTypeAppService.GetByTransTypeAsync(EnumTransType.Issue, EnumTransSubType.None).ConfigureAwait(false);
Check.NotNull(tranType, "事务类型", "事务类型不存在");
entity.AutoSubmit = tranType.AutoSubmitRequest;
entity.AutoAgree = tranType.AutoAgreeRequest;
entity.AutoHandle = tranType.AutoHandleRequest;
entity.AutoCompleteJob = tranType.AutoCompleteJob;
entity.DirectCreateNote = tranType.DirectCreateNote;
}
[HttpPost("create-and-handle")] [HttpPost("create-and-handle")]
public async Task<AssembleRequestDTO> CreateAndHandleAsync(AssembleRequestEditInput input) public async Task<AssembleIssueRequestsDTO> CreateAndHandleAsync(AssembleIssueRequestsEditInput input)
{ {
var assembleRequestDto = await CreateAsync(input).ConfigureAwait(false); var assembleRequestDto = await CreateAsync(input).ConfigureAwait(false);
@ -124,21 +150,6 @@ public class AssembleRequestAppService : SfsStoreRequestAppServiceBase<AssembleR
#endregion #endregion
/// <summary>
/// 根据类型 获取叫料申请
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
[HttpGet("list/by-type/{type}")]
public virtual async Task<List<AssembleRequestDTO>> GetListByTypeAsync(string type)
{
var entities = await _repository.GetListAsync(c => c.Type == type).ConfigureAwait(false);
var dtos = ObjectMapper.Map<List<AssembleRequest>, List<AssembleRequestDTO>>(entities);
return dtos;
}
#region 导入 #region 导入
/// <summary> /// <summary>
@ -146,8 +157,8 @@ public class AssembleRequestAppService : SfsStoreRequestAppServiceBase<AssembleR
/// </summary> /// </summary>
/// <param name="dictionary"></param> /// <param name="dictionary"></param>
/// <returns></returns> /// <returns></returns>
protected override async Task<Dictionary<AssembleRequest, EntityState>> ImportProcessingEntityAsync( protected override async Task<Dictionary<AssembleIssueRequests, EntityState>> ImportProcessingEntityAsync(
Dictionary<AssembleRequest, EntityState> dictionary) Dictionary<AssembleIssueRequests, EntityState> dictionary)
{ {
var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key); var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key);
@ -176,6 +187,7 @@ public class AssembleRequestAppService : SfsStoreRequestAppServiceBase<AssembleR
detail.ItemDesc2 = itemBasicDto.Desc2; detail.ItemDesc2 = itemBasicDto.Desc2;
detail.ItemName = itemBasicDto.Name; detail.ItemName = itemBasicDto.Name;
detail.Uom = itemBasicDto.BasicUom; detail.Uom = itemBasicDto.BasicUom;
detail.StdPackQty = itemBasicDto.StdPackQty;
} }
} }
@ -188,7 +200,7 @@ public class AssembleRequestAppService : SfsStoreRequestAppServiceBase<AssembleR
/// <param name="model"></param> /// <param name="model"></param>
/// <param name="validationRresult"></param> /// <param name="validationRresult"></param>
/// <returns></returns> /// <returns></returns>
protected override async Task ValidateImportModelAsync(AssembleRequestImportInput model, protected override async Task ValidateImportModelAsync(AssembleIssueRequestsImportInput model,
List<ValidationResult> validationRresult) List<ValidationResult> validationRresult)
{ {
_ = new Dictionary<string, string>(); _ = new Dictionary<string, string>();
@ -198,9 +210,11 @@ public class AssembleRequestAppService : SfsStoreRequestAppServiceBase<AssembleR
await CheckStoreRelationAsync(model, validationRresult).ConfigureAwait(false); await CheckStoreRelationAsync(model, validationRresult).ConfigureAwait(false);
} }
#endregion
#region 校验 #region 校验
protected override async Task<bool> ValidateImportEntities(Dictionary<AssembleRequest, EntityState> dict) protected override async Task<bool> ValidateImportEntities(Dictionary<AssembleIssueRequests, EntityState> dict)
{ {
foreach (var entity in dict.Keys) foreach (var entity in dict.Keys)
{ {
@ -219,36 +233,7 @@ public class AssembleRequestAppService : SfsStoreRequestAppServiceBase<AssembleR
return await base.ValidateImportEntities(dict).ConfigureAwait(false); return await base.ValidateImportEntities(dict).ConfigureAwait(false);
} }
protected async Task<ItemBasicDTO> CheckItemBasicAsync(AssembleRequestImportInput importInput, protected async Task CheckAreaAsync(AssembleIssueRequestsImportInput importInput,
List<ValidationResult> validationRresult)
{
var item = await _itemBasicAppService.GetByCodeAsync(importInput.ItemCode).ConfigureAwait(false);
if (item == null)
{
validationRresult.Add(new ValidationResult($"物品代码{importInput.ItemCode}不存在", new[] { "物品代码" }));
}
else if (item.StdPackQty == 0)
{
validationRresult.Add(
new ValidationResult($"物品代码{importInput.ItemCode}的物品信息中标准包装等于0或不存在", new[] { "标准包装" }));
}
return item;
}
protected async Task<LocationDTO> CheckLocationAsync(AssembleRequestImportInput importInput,
List<ValidationResult> validationRresult)
{
var location = await _locationAppService.GetByCodeAsync(importInput.ToLocationCode).ConfigureAwait(false);
if (location == null)
{
validationRresult.Add(new ValidationResult($"目标库位{importInput.ToLocationCode}不存在", new[] { "目标库位" }));
}
return location;
}
protected async Task CheckAreaAsync(AssembleRequestImportInput importInput,
List<ValidationResult> validationRresult) List<ValidationResult> validationRresult)
{ {
var area = await _areaApp.GetByCodeAsync(importInput.FromLocationArea).ConfigureAwait(false); var area = await _areaApp.GetByCodeAsync(importInput.FromLocationArea).ConfigureAwait(false);
@ -258,7 +243,7 @@ public class AssembleRequestAppService : SfsStoreRequestAppServiceBase<AssembleR
} }
} }
protected async Task CheckStoreRelationAsync(AssembleRequestImportInput importInput, protected async Task CheckStoreRelationAsync(AssembleIssueRequestsImportInput importInput,
List<ValidationResult> validationRresult) List<ValidationResult> validationRresult)
{ {
var itemStoreRelation = await _itemStoreRelationApp var itemStoreRelation = await _itemStoreRelationApp
@ -270,33 +255,55 @@ public class AssembleRequestAppService : SfsStoreRequestAppServiceBase<AssembleR
} }
} }
#endregion private void CheckItemBasic(ItemBasicDTO itemBasicDto, string itemCode)
#endregion
#region 校验
private void CheckItemBasic(ItemBasicDTO ItemBasicDto, string itemCode)
{ {
if (ItemBasicDto == null) if (itemBasicDto == null)
{ {
throw new UserFriendlyException($"物品代码为【{itemCode}】不存在"); throw new UserFriendlyException($"物品代码为【{itemCode}】不存在");
} }
} }
private void CheckLocation(LocationDTO LocationDto, string LocationCode) private void CheckLocation(LocationDTO locationDto, string locationCode)
{ {
if (LocationDto == null) if (locationDto == null)
{ {
throw new UserFriendlyException($"库位代码为【{LocationCode}】不存在"); throw new UserFriendlyException($"库位代码为【{locationCode}】不存在");
} }
if (LocationDto.Type != EnumLocationType.WIP) if (locationDto.Type != EnumLocationType.WIP)
{ {
throw new UserFriendlyException($"库位代码【{LocationCode}】不是【{EnumLocationType.WIP.GetDisplayName()}】类型"); throw new UserFriendlyException($"库位代码【{locationCode}】不是【{EnumLocationType.WIP.GetDisplayName()}】类型");
} }
} }
protected async Task<ItemBasicDTO> CheckItemBasicAsync(AssembleIssueRequestsImportInput importInput,
List<ValidationResult> validationRresult)
{
var item = await _itemBasicAppService.GetByCodeAsync(importInput.ItemCode).ConfigureAwait(false);
if (item == null)
{
validationRresult.Add(new ValidationResult($"物品代码{importInput.ItemCode}不存在", new[] { "物品代码" }));
}
else if (item.StdPackQty == 0)
{
validationRresult.Add(
new ValidationResult($"物品代码{importInput.ItemCode}的物品信息中标准包装等于0或不存在", new[] { "标准包装" }));
}
return item;
}
protected async Task<LocationDTO> CheckLocationAsync(AssembleIssueRequestsImportInput importInput,
List<ValidationResult> validationRresult)
{
var location = await _locationAppService.GetByCodeAsync(importInput.ToLocationCode).ConfigureAwait(false);
if (location == null)
{
validationRresult.Add(new ValidationResult($"目标库位{importInput.ToLocationCode}不存在", new[] { "目标库位" }));
}
return location;
}
#endregion #endregion
} }

14
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/AssembleRequests/AssembleRequestAutoMapperProfile.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsAutoMapperProfile.cs

@ -8,22 +8,22 @@ namespace Win_in.Sfs.Wms.Store.Application;
public partial class StoreApplicationAutoMapperProfile : Profile public partial class StoreApplicationAutoMapperProfile : Profile
{ {
private void AssembleRequestAutoMapperProfile() private void AssembleIssueRequestsAutoMapperProfile()
{ {
CreateMap<AssembleRequest, AssembleRequestDTO>() CreateMap<AssembleIssueRequests, AssembleIssueRequestsDTO>()
.ReverseMap(); .ReverseMap();
CreateMap<AssembleRequestDetail, AssembleRequestDetailDTO>() CreateMap<AssembleIssueRequestsDetail, AssembleIssueRequestsDetailDTO>()
.ReverseMap(); .ReverseMap();
CreateMap<AssembleRequestDetailInput, AssembleRequestDetail>() CreateMap<AssembleIssueRequestsDetailInput, AssembleIssueRequestsDetail>()
.IgnoreAuditedObjectProperties() .IgnoreAuditedObjectProperties()
.Ignore(x => x.MasterID) .Ignore(x => x.MasterID)
.Ignore(x => x.TenantId) .Ignore(x => x.TenantId)
.Ignore(x => x.Number) .Ignore(x => x.Number)
.Ignore(x => x.Id); .Ignore(x => x.Id);
CreateMap<AssembleRequestImportInput, AssembleRequest>() CreateMap<AssembleIssueRequestsImportInput, AssembleIssueRequests>()
.IgnoreAuditedObjectProperties() .IgnoreAuditedObjectProperties()
.ForMember(x => x.Type, y => y.MapFrom(t => t.Type.ToString())) .ForMember(x => x.Type, y => y.MapFrom(t => t.Type.ToString()))
.Ignore(x => x.UseOnTheWayLocation) .Ignore(x => x.UseOnTheWayLocation)
@ -37,7 +37,7 @@ public partial class StoreApplicationAutoMapperProfile : Profile
.Ignore(x => x.ActiveDate) .Ignore(x => x.ActiveDate)
.Ignore(x => x.Remark); .Ignore(x => x.Remark);
CreateMap<AssembleRequestImportInput, AssembleRequestDetail>() CreateMap<AssembleIssueRequestsImportInput, AssembleIssueRequestsDetail>()
.IgnoreAuditedObjectProperties() .IgnoreAuditedObjectProperties()
.ForMember(x => x.Status, y => y.MapFrom(t => EnumStatus.Open)) .ForMember(x => x.Status, y => y.MapFrom(t => EnumStatus.Open))
.Ignore(x => x.ToLocationErpCode) .Ignore(x => x.ToLocationErpCode)
@ -58,7 +58,7 @@ public partial class StoreApplicationAutoMapperProfile : Profile
.Ignore(x => x.Number) .Ignore(x => x.Number)
.Ignore(x => x.Id) .Ignore(x => x.Id)
.Ignore(x => x.Remark); .Ignore(x => x.Remark);
CreateMap<AssembleRequestEditInput, AssembleRequest>() CreateMap<AssembleIssueRequestsEditInput, AssembleIssueRequests>()
.IgnoreAuditedObjectProperties() .IgnoreAuditedObjectProperties()
.Ignore(x => x.RequestStatus) .Ignore(x => x.RequestStatus)
.Ignore(x => x.ConcurrencyStamp).Ignore(x => x.Id); .Ignore(x => x.ConcurrencyStamp).Ignore(x => x.Id);

395
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/CoatingMaterialRequests/CoatingMaterialRequestAppService.cs

@ -15,142 +15,68 @@ using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Repositories;
using Volo.Abp.ObjectMapping; using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Event; using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Store.Application;
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.Domain.Shared; using Win_in.Sfs.Wms.Store.Domain.Shared;
using Win_in.Sfs.Wms.Store.Requests.MaterialRequests;
namespace Win_in.Sfs.Wms.Store.Requests.MaterialRequests.CoatingMaterialRequests; namespace Win_in.Sfs.Wms.Store.Application;
/// <summary>
/// 喷涂叫料
/// </summary>
[Authorize] [Authorize]
[Route($"{StoreConsts.RootPath}coatingmaterial-request")] [Route($"{StoreConsts.RootPath}coating-request")]
public class CoatingMaterialRequestAppService : SfsStoreRequestAppServiceBase<CoatingMaterialRequest, CoatingMaterialRequestDTO, public class CoatingMaterialRequestAppService : SfsStoreRequestAppServiceBase<CoatingMaterialRequest, CoatingMaterialRequestDTO,
SfsStoreRequestInputBase, CoatingMaterialRequestEditInput, CoatingMaterialRequestDetail, CoatingMaterialRequestDetailDTO, SfsStoreRequestInputBase, CoatingMaterialRequestEditInput, CoatingMaterialRequestDetail, CoatingMaterialRequestDetailDTO,
SfsStoreRequestInputBase, CoatingMaterialRequestImportInput>, SfsStoreRequestInputBase, CoatingMaterialRequestImportInput>,
ICoatingMaterialRequestAppService ICoatingMaterialRequestAppService
{ {
private readonly ICoatingMaterialRequestManager _materialRequestManager; private readonly ICoatingMaterialRequestManager _coatingMaterialRequestManager;
private readonly IPreparationPlanManager _preparationPlanManager;
private readonly IItemStoreRelationAppService _itemStoreRelationApp; private readonly IItemStoreRelationAppService _itemStoreRelationApp;
private readonly IAreaAppService _areaApp; private readonly IAreaAppService _areaApp;
private readonly ILocationAppService _locationAppService; private readonly ILocationAppService _locationAppService;
private readonly IItemBasicAppService _itemBasicAppService; private readonly IItemBasicAppService _itemBasicAppService;
private readonly IProductionLineAppService _productionLineAppService; private readonly IProductionLineAppService _productionLineAppService;
private readonly IIssueJobAppService _issueJobAppService; private readonly ITransactionTypeAppService _transactionTypeAppService;
public CoatingMaterialRequestAppService( public CoatingMaterialRequestAppService(
ICoatingMaterialRequestRepository repository, ICoatingMaterialRequestRepository repository,
ICoatingMaterialRequestManager CoatingMaterialRequestManager, ICoatingMaterialRequestManager coatingMaterialRequestManager,
IPreparationPlanManager preparationPlanManager, IPreparationPlanManager preparationPlanManager,
IItemStoreRelationAppService itemStoreRelationApp, IItemStoreRelationAppService itemStoreRelationApp,
IAreaAppService areaApp, IAreaAppService areaApp,
ILocationAppService locationAppService, ILocationAppService locationAppService,
IItemBasicAppService itemBasicAppService, IItemBasicAppService itemBasicAppService,
IProductionLineAppService productionLineAppService, IProductionLineAppService productionLineAppService,
IIssueJobAppService issueJobAppService) ITransactionTypeAppService transactionTypeAppService
: base(repository, CoatingMaterialRequestManager) )
: base(repository, coatingMaterialRequestManager)
{ {
_materialRequestManager = CoatingMaterialRequestManager; _coatingMaterialRequestManager = coatingMaterialRequestManager;
_preparationPlanManager = preparationPlanManager;
_itemStoreRelationApp = itemStoreRelationApp; _itemStoreRelationApp = itemStoreRelationApp;
_areaApp = areaApp; _areaApp = areaApp;
_locationAppService = locationAppService; _locationAppService = locationAppService;
_itemBasicAppService = itemBasicAppService; _itemBasicAppService = itemBasicAppService;
_productionLineAppService = productionLineAppService; _productionLineAppService = productionLineAppService;
_issueJobAppService = issueJobAppService; _transactionTypeAppService = transactionTypeAppService;
} }
#region 东阳使用
/// <summary> #region 东阳V2
/// 用来重写 导入数据时可以加工数据
/// </summary>
/// <param name="dictionary"></param>
/// <returns></returns>
protected override async Task<Dictionary<CoatingMaterialRequest, EntityState>> ImportProcessingEntityAsync(
Dictionary<CoatingMaterialRequest, EntityState> dictionary)
{
var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key);
foreach (var materialRequest in addList)
{
materialRequest.Worker = CurrentUser.GetUserName();
materialRequest.CreatorId = CurrentUser.Id;
if (materialRequest.Type == EnumTransSubType.Issue_Manual.GetDisplayName())
{
materialRequest.Type = EnumTransSubType.Issue_Manual.ToString();
}
foreach (var detail in materialRequest.Details)
{
var locationDto = await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false);
CheckLocation(locationDto, detail.ToLocationCode);
var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
CheckItemBasic(itemBasicDto, detail.ItemCode);
detail.ToLocationArea = locationDto.AreaCode;
detail.ToLocationErpCode = locationDto.ErpLocationCode;
detail.ToLocationGroup = locationDto.LocationGroupCode;
detail.ToWarehouseCode = locationDto.WarehouseCode;
detail.ItemDesc1 = itemBasicDto.Desc1;
detail.ItemDesc2 = itemBasicDto.Desc2;
detail.ItemName = itemBasicDto.Name;
detail.Uom = itemBasicDto.BasicUom;
}
}
return dictionary;
}
public override async Task<CoatingMaterialRequestDTO> HandleAsync(Guid id) public override async Task<CoatingMaterialRequestDTO> HandleAsync(Guid id)
{ {
var entity = await _repository.GetAsync(id).ConfigureAwait(false); await Task.CompletedTask.ConfigureAwait(false);
await LocalEventBus.PublishAsync(new SfsHandledEntityEventData<CoatingMaterialRequest>(entity), false).ConfigureAwait(false); return null;
return ObjectMapper.Map<CoatingMaterialRequest, CoatingMaterialRequestDTO>(entity);
}
#region 校验
private void CheckItemBasic(ItemBasicDTO ItemBasicDto, string itemCode)
{
if (ItemBasicDto == null)
{
throw new UserFriendlyException($"物品代码为【{itemCode}】不存在");
}
}
private void CheckLocation(LocationDTO LocationDto, string LocationCode)
{
if (LocationDto == null)
{
throw new UserFriendlyException($"库位代码为【{LocationCode}】不存在");
} }
if (LocationDto.Type != EnumLocationType.WIP)
{
throw new UserFriendlyException($"库位代码【{LocationCode}】不是【{EnumLocationType.WIP.GetDisplayName()}】类型");
}
}
#endregion
#endregion
[HttpPost("")] [HttpPost("")]
//[Authorize(CoatingMaterialRequestPermissions.Create)]
public override async Task<CoatingMaterialRequestDTO> CreateAsync(CoatingMaterialRequestEditInput input) public override async Task<CoatingMaterialRequestDTO> CreateAsync(CoatingMaterialRequestEditInput input)
{ {
foreach (var item in input.Details) foreach (var item in input.Details)
@ -161,80 +87,35 @@ public class CoatingMaterialRequestAppService : SfsStoreRequestAppServiceBase<Co
} }
} }
foreach (var detailInput in input.Details) //赋值生产线
foreach (var item in input.Details) //赋值生产线
{
var location = await LocationAclService.GetByCodeAsync(item.ToLocationCode).ConfigureAwait(false);
item.ProdLine = location.LocationGroupCode;
}
var entity = ObjectMapper.Map<CoatingMaterialRequestEditInput, CoatingMaterialRequest>(input);
var result = await _materialRequestManager.CreateAsync(entity).ConfigureAwait(false);
var dto = ObjectMapper.Map<CoatingMaterialRequest, CoatingMaterialRequestDTO>(result);
return dto;
}
/// <summary>
/// 创建并且执行叫料请求
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
[HttpPost("create-and-handle-api")]
//[Authorize(CoatingMaterialRequestPermissions.Create)]
public virtual async Task<CoatingMaterialRequestDTO> CreateAndHandleByAPIAsync(CoatingMaterialRequestEditInput input)
{
foreach (var item in input.Details)
{
if (item.Qty <= 0)
{
throw new UserFriendlyException($"{item.ItemCode} 物料的需求量必须大于 0");
}
}
input.AutoSubmit = true;
input.AutoAgree = true;
input.AutoHandle = true;
input.AutoCompleteJob = false;
input.DirectCreateNote = false;
foreach (var detailInput in input.Details)
{ {
var toLocationDto = await _locationAppService.GetByCodeAsync(detailInput.ToLocationCode).ConfigureAwait(false); var toLocationDto =
await _locationAppService.GetByCodeAsync(detailInput.ToLocationCode).ConfigureAwait(false);
CheckLocation(toLocationDto, detailInput.ToLocationCode); CheckLocation(toLocationDto, detailInput.ToLocationCode);
var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detailInput.ItemCode).ConfigureAwait(false); var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detailInput.ItemCode).ConfigureAwait(false);
CheckItemBasic(itemBasicDto, detailInput.ItemCode); CheckItemBasic(itemBasicDto, detailInput.ItemCode);
detailInput.ItemDesc1 = itemBasicDto.Desc1;
detailInput.ToLocationArea = toLocationDto.AreaCode;
detailInput.ToLocationGroup = toLocationDto.LocationGroupCode;
detailInput.ToWarehouseCode = toLocationDto.WarehouseCode;
detailInput.ProdLine = detailInput.ToLocationCode;
detailInput.ToLocationErpCode = toLocationDto.ErpLocationCode;
//var productionLineDto = await _productionLineAppService.GetByLocationGroupCodeAsync(toLocationDto.LocationGroupCode).ConfigureAwait(false); detailInput.ItemDesc1 = itemBasicDto.Desc1;
detailInput.ItemDesc2 = itemBasicDto.Desc2;
detailInput.ItemName = itemBasicDto.Name;
detailInput.Uom = itemBasicDto.BasicUom;
detailInput.StdPackQty = itemBasicDto.StdPackQty;
detailInput.Status = EnumStatus.Open;
//detailInput.ToLocationCode = toLocationDto.ErpLocationCode; //因为是刚创建的 所以发料数一定是0
//if (productionLineDto != null) detailInput.IssuedQty = 0;
//{
// detailInput.ProdLine = productionLineDto.Code;
//}
} }
await SetRequestAutoPropertiesAsync(input).ConfigureAwait(false);
var entity = ObjectMapper.Map<CoatingMaterialRequestEditInput, CoatingMaterialRequest>(input); var entity = ObjectMapper.Map<CoatingMaterialRequestEditInput, CoatingMaterialRequest>(input);
foreach (var detail in entity.Details)
{
var toLocationDto = await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false);
//var productionLineDto = await _productionLineAppService.GetByLocationGroupCodeAsync(toLocationDto.LocationGroupCode).ConfigureAwait(false);
detail.ToLocationArea = toLocationDto.AreaCode;
detail.ToLocationErpCode = toLocationDto.ErpLocationCode;
detail.ToLocationGroup = toLocationDto.LocationGroupCode;
detail.ToWarehouseCode = toLocationDto.WarehouseCode;
}
entity.UseOnTheWayLocation = false;
var result = await _materialRequestManager.CreateBynNumberAsync(entity).ConfigureAwait(false); var result = await _coatingMaterialRequestManager.CreateByNumberAsync(entity).ConfigureAwait(false);
var dto = ObjectMapper.Map<CoatingMaterialRequest, CoatingMaterialRequestDTO>(result); var dto = ObjectMapper.Map<CoatingMaterialRequest, CoatingMaterialRequestDTO>(result);
@ -242,98 +123,76 @@ public class CoatingMaterialRequestAppService : SfsStoreRequestAppServiceBase<Co
} }
/// <summary> /// <summary>
/// 创建并且执行叫料请求 /// 赋值Request业务属性
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="entity"></param>
/// <returns></returns> /// <returns></returns>
/// <exception cref="UserFriendlyException"></exception> private async Task SetRequestAutoPropertiesAsync(CoatingMaterialRequestEditInput entity)
[HttpPost("create-and-handle")]
//[Authorize(CoatingMaterialRequestPermissions.Create)]
public virtual async Task<CoatingMaterialRequestDTO> CreateAndHandleAsync(CoatingMaterialRequestEditInput input)
{
foreach (var item in input.Details)
{ {
if (item.Qty <= 0) var tranType = await _transactionTypeAppService.GetByTransTypeAsync(EnumTransType.Issue, EnumTransSubType.None).ConfigureAwait(false);
{ Check.NotNull(tranType, "事务类型", "事务类型不存在");
throw new UserFriendlyException($"{item.ItemCode} 物料的需求量必须大于0"); entity.AutoSubmit = tranType.AutoSubmitRequest;
} entity.AutoAgree = tranType.AutoAgreeRequest;
entity.AutoHandle = tranType.AutoHandleRequest;
entity.AutoCompleteJob = tranType.AutoCompleteJob;
entity.DirectCreateNote = tranType.DirectCreateNote;
} }
[HttpPost("create-and-handle")]
public async Task<CoatingMaterialRequestDTO> CreateAndHandleAsync(CoatingMaterialRequestEditInput input)
foreach (var detailInput in input.Details) //赋值生产线
{ {
var toLocationDto = await _locationAppService.GetByCodeAsync(detailInput.ToLocationCode).ConfigureAwait(false); var coatingMaterialRequestDto = await CreateAsync(input).ConfigureAwait(false);
CheckLocation(toLocationDto, detailInput.ToLocationCode);
var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detailInput.ItemCode).ConfigureAwait(false);
CheckItemBasic(itemBasicDto, detailInput.ItemCode);
var location = await LocationAclService.GetByCodeAsync(detailInput.ToLocationCode).ConfigureAwait(false); await HandleAsync(coatingMaterialRequestDto.Id).ConfigureAwait(false);
detailInput.ProdLine = location.LocationGroupCode;
input.Worker = input.Worker; return coatingMaterialRequestDto;
} }
input.AutoSubmit = true; #endregion
input.AutoAgree = true;
input.AutoHandle = true;
input.AutoCompleteJob = false;
input.DirectCreateNote = false;
var entity = ObjectMapper.Map<CoatingMaterialRequestEditInput, CoatingMaterialRequest>(input);
var result = await _materialRequestManager.CreateAsync(entity).ConfigureAwait(false);
var dto = ObjectMapper.Map<CoatingMaterialRequest, CoatingMaterialRequestDTO>(result);
return dto;
}
#region 导入
/// <summary> /// <summary>
/// 根据类型获取叫料请求 /// 用来重写 导入数据时可以加工数据
/// </summary> /// </summary>
/// <param name="requestInput"></param> /// <param name="dictionary"></param>
/// <param name="type">
/// 叫料请求类型:
/// 人工拉动:Issue_Manual;
/// 线边拉动:Issue_WIP;
/// </param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost("by-type/{type}")] protected override async Task<Dictionary<CoatingMaterialRequest, EntityState>> ImportProcessingEntityAsync(
public virtual async Task<PagedResultDto<CoatingMaterialRequestDTO>> GetListByTypeAsync( Dictionary<CoatingMaterialRequest, EntityState> dictionary)
SfsStoreRequestInputBase requestInput,
string type,
bool includeDetails = false,
CancellationToken cancellationToken = default)
{
Expression<Func<CoatingMaterialRequest, bool>> expression = p => p.Type == type;
if (requestInput.Condition.Filters?.Count > 0)
{ {
expression = expression.And(requestInput.Condition.Filters.ToLambda<CoatingMaterialRequest>()); var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key);
}
return await GetPagedListAsync(expression, requestInput.SkipCount, requestInput.MaxResultCount, foreach (var coatingMaterialRequest in addList)
requestInput.Sorting, includeDetails, cancellationToken).ConfigureAwait(false); {
coatingMaterialRequest.Worker = CurrentUser.GetUserName();
coatingMaterialRequest.CreatorId = CurrentUser.Id;
if (coatingMaterialRequest.Type == EnumTransSubType.Issue_Manual.GetDisplayName())
{
coatingMaterialRequest.Type = EnumTransSubType.Issue_Manual.ToString();
} }
#region 导入 foreach (var detail in coatingMaterialRequest.Details)
{
var locationDto = await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false);
CheckLocation(locationDto, detail.ToLocationCode);
//protected override async Task CheckImportInputBusinessAsync(CoatingMaterialRequestImportInput importInput, EnumImportMethod importMethod) var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
//{ CheckItemBasic(itemBasicDto, detail.ItemCode);
// //await base.CheckImportInputBusinessAsync(importInput, importMethod);
// var item = await CheckItemBasicAsync(importInput); detail.ToLocationArea = locationDto.AreaCode;
// await CheckItemPackAsync(importInput); detail.ToLocationErpCode = locationDto.ErpLocationCode;
// var location = await CheckLocationAsync(importInput); detail.ToLocationGroup = locationDto.LocationGroupCode;
// await CheckAreaAsync(importInput); detail.ToWarehouseCode = locationDto.WarehouseCode;
// await CheckStoreRelationAsync(importInput); detail.ItemDesc1 = itemBasicDto.Desc1;
// var transactionType = await CheckTransactionTypeAsync(); detail.ItemDesc2 = itemBasicDto.Desc2;
detail.ItemName = itemBasicDto.Name;
detail.Uom = itemBasicDto.BasicUom;
detail.StdPackQty = itemBasicDto.StdPackQty;
}
}
// CheckTransactionType(EnumTransInOut.In, EnumInventoryStatus.OK, transactionType, item, location); return dictionary;
//} }
/// <summary> /// <summary>
/// 导入验证 /// 导入验证
@ -351,6 +210,8 @@ public class CoatingMaterialRequestAppService : SfsStoreRequestAppServiceBase<Co
await CheckStoreRelationAsync(model, validationRresult).ConfigureAwait(false); await CheckStoreRelationAsync(model, validationRresult).ConfigureAwait(false);
} }
#endregion
#region 校验 #region 校验
protected override async Task<bool> ValidateImportEntities(Dictionary<CoatingMaterialRequest, EntityState> dict) protected override async Task<bool> ValidateImportEntities(Dictionary<CoatingMaterialRequest, EntityState> dict)
@ -372,6 +233,49 @@ public class CoatingMaterialRequestAppService : SfsStoreRequestAppServiceBase<Co
return await base.ValidateImportEntities(dict).ConfigureAwait(false); return await base.ValidateImportEntities(dict).ConfigureAwait(false);
} }
protected async Task CheckAreaAsync(CoatingMaterialRequestImportInput importInput,
List<ValidationResult> validationRresult)
{
var area = await _areaApp.GetByCodeAsync(importInput.FromLocationArea).ConfigureAwait(false);
if (area == null)
{
validationRresult.Add(new ValidationResult($"调出库区{importInput.FromLocationArea}不存在", new[] { "调出库区" }));
}
}
protected async Task CheckStoreRelationAsync(CoatingMaterialRequestImportInput importInput,
List<ValidationResult> validationRresult)
{
var itemStoreRelation = await _itemStoreRelationApp
.GetFirstAsync(importInput.ItemCode, importInput.ToLocationCode).ConfigureAwait(false);
if (itemStoreRelation == null)
{
validationRresult.Add(new ValidationResult(
$"物品代码{importInput.ItemCode}与目标库位{importInput.ToLocationCode}不存在对应关", new[] { "物品库位对应关系" }));
}
}
private void CheckItemBasic(ItemBasicDTO itemBasicDto, string itemCode)
{
if (itemBasicDto == null)
{
throw new UserFriendlyException($"物品代码为【{itemCode}】不存在");
}
}
private void CheckLocation(LocationDTO locationDto, string locationCode)
{
if (locationDto == null)
{
throw new UserFriendlyException($"库位代码为【{locationCode}】不存在");
}
if (locationDto.Type != EnumLocationType.WIP)
{
throw new UserFriendlyException($"库位代码【{locationCode}】不是【{EnumLocationType.WIP.GetDisplayName()}】类型");
}
}
protected async Task<ItemBasicDTO> CheckItemBasicAsync(CoatingMaterialRequestImportInput importInput, protected async Task<ItemBasicDTO> CheckItemBasicAsync(CoatingMaterialRequestImportInput importInput,
List<ValidationResult> validationRresult) List<ValidationResult> validationRresult)
{ {
@ -401,44 +305,5 @@ public class CoatingMaterialRequestAppService : SfsStoreRequestAppServiceBase<Co
return location; return location;
} }
protected async Task CheckAreaAsync(CoatingMaterialRequestImportInput importInput,
List<ValidationResult> validationRresult)
{
var area = await _areaApp.GetByCodeAsync(importInput.FromLocationArea).ConfigureAwait(false);
if (area == null)
{
validationRresult.Add(new ValidationResult($"调出库区{importInput.FromLocationArea}不存在", new[] { "调出库区" }));
}
}
protected async Task CheckStoreRelationAsync(CoatingMaterialRequestImportInput importInput,
List<ValidationResult> validationRresult)
{
var itemStoreRelation = await _itemStoreRelationApp
.GetFirstAsync(importInput.ItemCode, importInput.ToLocationCode).ConfigureAwait(false);
if (itemStoreRelation == null)
{
validationRresult.Add(new ValidationResult(
$"物品代码{importInput.ItemCode}与目标库位{importInput.ToLocationCode}不存在对应关", new[] { "物品库位对应关系" }));
}
}
#endregion #endregion
#endregion
/// <summary>
/// 根据类型 获取叫料申请
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
[HttpGet("list/by-type/{type}")]
public virtual async Task<List<CoatingMaterialRequestDTO>> GetListByTypeAsync(string type)
{
var entities = await _repository.GetListAsync(c => c.Type == type).ConfigureAwait(false);
var dtos = ObjectMapper.Map<List<CoatingMaterialRequest>, List<CoatingMaterialRequestDTO>>(entities);
return dtos;
}
} }

12
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/InjectionRequests/InjectionRequestAppService.cs

@ -27,7 +27,9 @@ using Win_in.Sfs.Wms.Store.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application; namespace Win_in.Sfs.Wms.Store.Application;
//注塑叫料 /// <summary>
/// 注塑叫料
/// </summary>
[Authorize] [Authorize]
[Route($"{StoreConsts.RootPath}injection-request")] [Route($"{StoreConsts.RootPath}injection-request")]
public class InjectionRequestAppService : SfsStoreRequestAppServiceBase<InjectionRequest, InjectionRequestDTO, public class InjectionRequestAppService : SfsStoreRequestAppServiceBase<InjectionRequest, InjectionRequestDTO,
@ -41,7 +43,7 @@ public class InjectionRequestAppService : SfsStoreRequestAppServiceBase<Injectio
private readonly ILocationAppService _locationAppService; private readonly ILocationAppService _locationAppService;
private readonly IItemBasicAppService _itemBasicAppService; private readonly IItemBasicAppService _itemBasicAppService;
private readonly IProductionLineAppService _productionLineAppService; private readonly IProductionLineAppService _productionLineAppService;
private readonly IInjectionJobAppService _injectionJobAppService;
private readonly ITransactionTypeAppService _transactionTypeAppService; private readonly ITransactionTypeAppService _transactionTypeAppService;
public InjectionRequestAppService( public InjectionRequestAppService(
@ -53,8 +55,8 @@ public class InjectionRequestAppService : SfsStoreRequestAppServiceBase<Injectio
ILocationAppService locationAppService, ILocationAppService locationAppService,
IItemBasicAppService itemBasicAppService, IItemBasicAppService itemBasicAppService,
IProductionLineAppService productionLineAppService, IProductionLineAppService productionLineAppService,
ITransactionTypeAppService transactionTypeAppService, ITransactionTypeAppService transactionTypeAppService
IInjectionJobAppService injectionJobAppService) )
: base(repository, injectionRequestManager) : base(repository, injectionRequestManager)
{ {
_injectionRequestManager = injectionRequestManager; _injectionRequestManager = injectionRequestManager;
@ -63,7 +65,7 @@ public class InjectionRequestAppService : SfsStoreRequestAppServiceBase<Injectio
_locationAppService = locationAppService; _locationAppService = locationAppService;
_itemBasicAppService = itemBasicAppService; _itemBasicAppService = itemBasicAppService;
_productionLineAppService = productionLineAppService; _productionLineAppService = productionLineAppService;
_injectionJobAppService = injectionJobAppService;
_transactionTypeAppService = transactionTypeAppService; _transactionTypeAppService = transactionTypeAppService;
} }

4
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/StoreApplicationAutoMapperProfile.cs

@ -15,7 +15,7 @@ public partial class StoreApplicationAutoMapperProfile : Profile
ItemTransformRequestAutoMapperProfile(); ItemTransformRequestAutoMapperProfile();
MaterialRequestAutoMapperProfile(); MaterialRequestAutoMapperProfile();
InjectionRequestAutoMapperProfile(); InjectionRequestAutoMapperProfile();
AssembleRequestAutoMapperProfile(); AssembleIssueRequestsAutoMapperProfile();
ThirdLocationRequestAutoMapperProfile(); ThirdLocationRequestAutoMapperProfile();
ProductionReturnRequestAutoMapperProfile(); ProductionReturnRequestAutoMapperProfile();
ProductReceiptRequestAutoMapperProfile(); ProductReceiptRequestAutoMapperProfile();
@ -128,5 +128,7 @@ public partial class StoreApplicationAutoMapperProfile : Profile
ExchangeDataAutoMapperProfile(); ExchangeDataAutoMapperProfile();
EquipmentRecordAutoMapperProfile(); EquipmentRecordAutoMapperProfile();
//底盘
ChassisAutoMapperProfile();
} }
} }

13
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Chassis/ChassisDetail.cs

@ -1,13 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Chassis;
public class ChassisDetail: SfsStoreDetailEntityBase
{
}

49
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/ChassisOperationSequence/ChassisOperationSequence.cs

@ -0,0 +1,49 @@
using System;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Wms.Store.Domain;
/// <summary>
/// 底盘信息
/// </summary>
[Display(Name = "底盘信息")]
public class ChassisOperationSequence : SfsAggregateRootBase
{
/// <summary>
/// Wms编号
/// </summary>
[Display(Name = "Wms编号")]
public string Number { get; set; }
/// <summary>
/// 底盘号
/// </summary>
[Display(Name = "底盘号")]
public string ChassisOperationSequenceNumber { get; set; }
/// <summary>
/// 描述
/// </summary>
[Display(Name = "描述")]
public string Description { get; set; }
/// <summary>
/// 底盘生产时间
/// </summary>
[Display(Name = "底盘生产时间")]
public DateTime ProduceDateTime { get; set; }
/// <summary>
/// 接收接口时间
/// </summary>
[Display(Name = "接收接口时间")]
public DateTime ReceiveInterfaceDateTime { get; set; }
/// <summary>
/// 执行位置排序列
/// </summary>
[Display(Name = "执行位置排序列")]
public long SortNumber { get; set; }
}

23
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/ChassisOperationSequence/ChassisOperationSequenceManager.cs

@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Domain.Services;
namespace Win_in.Sfs.Wms.Store.Domain;
public class ChassisOperationSequenceManager : DomainService, IChassisOperationSequenceManager
{
private readonly IChassisOperationSequenceRepository _repository;
public ChassisOperationSequenceManager(
IChassisOperationSequenceRepository repository
)
{
_repository = repository;
}
public Task ImportDataAsync(List<ChassisOperationSequence> entities, List<ChassisOperationSequence> deleteEntities = null)
{
throw new NotImplementedException();
}
}

12
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/ChassisOperationSequence/IChassisOperationSequenceManager.cs

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Win_in.Sfs.Basedata.Equipments.DTOs;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Wms.Store.Equipments;
namespace Win_in.Sfs.Wms.Store.Domain;
public interface IChassisOperationSequenceManager : IBulkImportService<ChassisOperationSequence>
{
}

10
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/ChassisOperationSequence/IChassisOperationSequenceRepository.cs

@ -0,0 +1,10 @@
using System.Threading.Tasks;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Wms.Store.Equipments;
namespace Win_in.Sfs.Wms.Store.Domain;
public interface IChassisOperationSequenceRepository : ISfsStoreRepositoryBase<ChassisOperationSequence>, ISfsBulkRepositoryBase<ChassisOperationSequence>
{
}

37
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/AssembleJobs/AssembleJob.cs

@ -30,12 +30,6 @@ public class AssembleJob : SfsJobAggregateRootBase<AssembleJobDetail>
[IgnoreUpdate] [IgnoreUpdate]
public string AssembleRequestNumber { get; set; } public string AssembleRequestNumber { get; set; }
/// <summary>
/// 车间
/// </summary>
[IgnoreUpdate]
public string Workshop { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库
/// </summary> /// </summary>
@ -49,36 +43,5 @@ public class AssembleJob : SfsJobAggregateRootBase<AssembleJobDetail>
[IgnoreUpdate] [IgnoreUpdate]
public override List<AssembleJobDetail> Details { get; set; } = new List<AssembleJobDetail>(); public override List<AssembleJobDetail> Details { get; set; } = new List<AssembleJobDetail>();
/// <summary>
/// 设置任务明细的实际库位和实际数量
/// </summary>
/// <param name="id"></param>
/// <param name="handledLocationCode"></param>
/// <param name="handledLocationErpCode"></param>
/// <param name="handledWarehouseCode"></param>
/// <param name="handledQty"></param>
/// <param name="handledBatch"></param>
/// <param name="handledContainerCode"></param>
/// <param name="handledLot"></param>
/// <param name="handledPackingCode"></param>
/// <returns></returns>
public virtual async Task BuildDetail(Guid id, string handledLocationCode, string handledLocationErpCode,
string handledWarehouseCode, decimal handledQty, string handledSupplierBatch, DateTime handledArriveDate, DateTime handledProduceDate, DateTime handledExpireDate,
string handledContainerCode, string handledLot, string handledPackingCode)
{
var detail = GetDetail(id);
detail.HandledFromLocationCode = handledLocationCode;
detail.HandledFromLocationErpCode = handledLocationErpCode;
detail.HandledFromWarehouseCode = handledWarehouseCode;
detail.HandledQty = handledQty;
detail.HandledSupplierBatch = handledSupplierBatch;
detail.HandledArriveDate = handledArriveDate;
detail.HandledProduceDate = handledProduceDate;
detail.HandledExpireDate = handledExpireDate;
detail.HandledContainerCode = handledContainerCode;
detail.HandledLot = handledLot;
detail.HandledPackingCode = handledPackingCode;
await Task.CompletedTask.ConfigureAwait(false);
}
} }

479
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/AssembleJobs/AssembleJobDetail.cs

@ -1,40 +1,81 @@
using System; using System;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Domain;
public class AssembleJobDetail : SfsJobRecommendFromDetailEntityBase, IHasToLocation public class AssembleJobDetail : SfsDetailEntityBase
{ {
#region 库存基础信息
/// <summary> /// <summary>
/// 请求库位 /// 物品代码
/// </summary> /// </summary>
public string RequestLocationCode { get; set; } public string ItemCode { get; set; }
/// <summary>
/// 物品名称
/// </summary>
public string ItemName { get; set; }
/// <summary>
/// 物品描述1
/// </summary>
public string ItemDesc1 { get; set; }
/// <summary>
/// 物品描述2
/// </summary>
public string ItemDesc2 { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal StdPackQty { get; set; }
/// <summary> /// <summary>
/// 到库位 /// 库存状态
/// </summary> /// </summary>
public string ToLocationCode { get; set; } public EnumInventoryStatus Status { get; set; }
/// <summary>
/// 计量单位
/// </summary>
public string Uom { get; set; }
#endregion
#region 请求信息
/// <summary>
/// 请求库位
/// </summary>
public string RequestLocationCode { get; set; }
/// <summary> /// <summary>
/// 到库区 /// 到库区
/// </summary> /// </summary>
public string ToLocationArea { get; set; } public string RequestLocationArea { get; set; }
/// <summary> /// <summary>
/// 到库位组 /// 到库位组
/// </summary> /// </summary>
public string ToLocationGroup { get; set; } public string RequestLocationGroup { get; set; }
/// <summary> /// <summary>
/// 到ERP库位 /// 到ERP库位
/// </summary> /// </summary>
public string ToLocationErpCode { get; set; } public string RequestLocationErpCode { get; set; }
/// <summary> /// <summary>
/// 到仓库 /// 到仓库
/// </summary> /// </summary>
public string ToWarehouseCode { get; set; } public string RequestWarehouseCode { get; set; }
/// <summary> /// <summary>
/// 在途库库位 /// 在途库库位
@ -47,59 +88,435 @@ public class AssembleJobDetail : SfsJobRecommendFromDetailEntityBase, IHasToLoca
public string ProdLine { get; set; } public string ProdLine { get; set; }
/// <summary> /// <summary>
/// 工作中心 /// 位置码
/// </summary> /// </summary>
public string WorkStation { get; set; } public string PositionCode { get; set; }
/// <summary> /// <summary>
/// 过期时间 /// 推荐的类型
/// </summary> /// </summary>
public DateTime ExpiredTime { get; set; } public EnumRecommendType RecommendType { get; set; }
/// <summary> /// <summary>
/// 工序 /// 需求数量
/// </summary> /// </summary>
public string Operation { get; set; } public decimal RequestQty { get; set; }
#endregion
#region 推荐来源
/// <summary> /// <summary>
/// 配送方式 /// 推荐来源托标签
/// </summary> /// </summary>
public EnumDistributionType DistributionType { get; set; } public string RecommendFromContainerCode { get; set; }
/// <summary> /// <summary>
/// 取整方式 /// 推荐来源箱标签
/// </summary> /// </summary>
public EnumTruncType TruncType { get; set; } public string RecommendFromPackingCode { get; set; }
/// <summary> /// <summary>
/// 取整后数量 /// 推荐来源批次供应商批次
/// </summary> /// </summary>
public decimal RoundedQty { get; set; } public string RecommendFromSupplierBatch { get; set; }
/// <summary> /// <summary>
/// 计划拆分规则 /// 推荐来源批次到货时间
/// </summary> /// </summary>
public EnumPlannedSplitRule PlannedSplitRule { get; set; } public DateTime RecommendFromArriveDate { get; set; }
/// <summary> /// <summary>
/// 计划开始时间 /// 推荐来源批次生产时间
/// </summary> /// </summary>
public DateTime PlanBeginTime { get; set; } public DateTime RecommendFromProduceDate { get; set; }
/// <summary> /// <summary>
/// 每次配送数量 /// 推荐来源批次过期时间
/// </summary> /// </summary>
public decimal DeliveryQty { get; set; } public DateTime RecommendFromExpireDate { get; set; }
/// <summary> /// <summary>
/// 位置码 /// 推荐来源批次排序
/// </summary> /// </summary>
public string PositionCode { get; set; } public string RecommendFromLot { get; set; }
/// <summary> /// <summary>
/// 推荐类型 /// 推荐来源库位
/// </summary> /// </summary>
public EnumRecommendType RecommendType { get; set; } public string RecommendFromLocationCode { get; set; }
/// <summary>
/// 推荐来源库区
/// </summary>
public string RecommendFromLocationArea { get; set; }
/// <summary>
/// 推荐来源库位组
/// </summary>
public string RecommendFromLocationGroup { get; set; }
/// <summary>
/// 推荐来源ERP库位
/// </summary>
public string RecommendFromLocationErpCode { get; set; }
/// <summary>
/// 推荐来源仓库
/// </summary>
public string RecommendFromWarehouseCode { get; set; }
/// <summary>
/// 推荐来源数量
/// </summary>
public decimal RecommendFromQty { get; set; }
#endregion
#region 推荐目标
/// <summary>
/// 推荐目标托标签
/// </summary>
public string RecommendToContainerCode { get; set; }
/// <summary>
/// 推荐目标箱标签
/// </summary>
public string RecommendToPackingCode { get; set; }
/// <summary>
/// 推荐目标批次供应商批次
/// </summary>
public string RecommendToSupplierBatch { get; set; }
/// <summary>
/// 推荐目标批次到货时间
/// </summary>
public DateTime RecommendToArriveDate { get; set; }
/// <summary>
/// 推荐目标批次生产时间
/// </summary>
public DateTime RecommendToProduceDate { get; set; }
/// <summary>
/// 推荐目标批次过期时间
/// </summary>
public DateTime RecommendToExpireDate { get; set; }
/// <summary>
/// 推荐目标批次排序
/// </summary>
public string RecommendToLot { get; set; }
/// <summary>
/// 推荐目标库位
/// </summary>
public string RecommendToLocationCode { get; set; }
/// <summary>
/// 推荐目标库区
/// </summary>
public string RecommendToLocationArea { get; set; }
/// <summary>
/// 推荐目标库位组
/// </summary>
public string RecommendToLocationGroup { get; set; }
/// <summary>
/// 推荐目标ERP库位
/// </summary>
public string RecommendToLocationErpCode { get; set; }
/// <summary>
/// 推荐目标仓库
/// </summary>
public string RecommendToWarehouseCode { get; set; }
/// <summary>
/// 推荐目标数量
/// </summary>
public decimal RecommendToQty { get; set; }
#endregion
#region 库移来源
/// <summary>
/// 库移来源托标签
/// </summary>
public string TransferLibFromContainerCode { get; set; }
/// <summary>
/// 库移来源箱标签
/// </summary>
public string TransferLibFromPackingCode { get; set; }
/// <summary>
/// 库移来源批次供应商批次
/// </summary>
public string TransferLibFromSupplierBatch { get; set; }
/// <summary>
/// 库移来源批次到货时间
/// </summary>
public DateTime TransferLibFromArriveDate { get; set; }
/// <summary>
/// 库移来源批次生产时间
/// </summary>
public DateTime TransferLibFromProduceDate { get; set; }
/// <summary>
/// 库移来源批次过期时间
/// </summary>
public DateTime TransferLibFromExpireDate { get; set; }
/// <summary>
/// 库移来源批次排序
/// </summary>
public string TransferLibFromLot { get; set; }
/// <summary>
/// 库移来源库位
/// </summary>
public string TransferLibFromLocationCode { get; set; }
/// <summary>
/// 库移来源库区
/// </summary>
public string TransferLibFromLocationArea { get; set; }
/// <summary>
/// 库移来源库位组
/// </summary>
public string TransferLibFromLocationGroup { get; set; }
/// <summary>
/// 库移来源ERP库位
/// </summary>
public string TransferLibFromLocationErpCode { get; set; }
/// <summary>
/// 库移来源仓库
/// </summary>
public string TransferLibFromWarehouseCode { get; set; }
/// <summary>
/// 库移来源数量
/// </summary>
public decimal TransferLibFromQty { get; set; }
#endregion
#region 库移目标
/// <summary>
/// 库移目标托标签
/// </summary>
public string TransferLibToContainerCode { get; set; }
/// <summary>
/// 库移目标箱标签
/// </summary>
public string TransferLibToPackingCode { get; set; }
/// <summary>
/// 库移目标批次供应商批次
/// </summary>
public string TransferLibToSupplierBatch { get; set; }
/// <summary>
/// 库移目标批次到货时间
/// </summary>
public DateTime TransferLibToArriveDate { get; set; }
/// <summary>
/// 库移目标批次生产时间
/// </summary>
public DateTime TransferLibToProduceDate { get; set; }
/// <summary>
/// 库移目标批次过期时间
/// </summary>
public DateTime TransferLibToExpireDate { get; set; }
/// <summary>
/// 库移目标批次排序
/// </summary>
public string TransferLibToLot { get; set; }
/// <summary>
/// 库移目标库位
/// </summary>
public string TransferLibToLocationCode { get; set; }
/// <summary>
/// 库移目标库区
/// </summary>
public string TransferLibToLocationArea { get; set; }
/// <summary>
/// 库移目标库位组
/// </summary>
public string TransferLibToLocationGroup { get; set; }
/// <summary>
/// 库移目标ERP库位
/// </summary>
public string TransferLibToLocationErpCode { get; set; }
/// <summary>
/// 库移目标仓库
/// </summary>
public string TransferLibToWarehouseCode { get; set; }
/// <summary>
/// 库移目标数量
/// </summary>
public decimal TransferLibToQty { get; set; }
#endregion
#region 实际来源
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledFromContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledFromPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledFromSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledFromArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledFromProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledFromExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledFromLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledFromLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledFromLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledFromLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledFromLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledFromWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledFromQty { get; set; }
#endregion
#region 实际目标
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledToContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledToPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledToSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledToArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledToProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledToExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledToLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledToLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledToLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledToLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledToLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledToWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledToQty { get; set; }
#endregion
public void SetId(Guid id) public void SetId(Guid id)
{ {

106
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/AssembleJobs/AssembleJobManager.cs

@ -4,19 +4,24 @@ using System.ComponentModel.DataAnnotations;
using System.Linq; using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Users; using Volo.Abp.Users;
using Volo.Abp.Validation; using Volo.Abp.Validation;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Inventory.Application.Contracts;
namespace Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Domain;
public class AssembleJobManager : SfsJobManagerBase<AssembleJob, AssembleJobDetail>, IAssembleJobManager public class AssembleJobManager : SfsJobManagerBase<AssembleJob, AssembleJobDetail>, IAssembleJobManager
{ {
private readonly IBalanceAppService _balanceAppService;
private readonly IExpectOutAppService _expectOutAppService;
public AssembleJobManager( public AssembleJobManager(
IAssembleJobRepository repository IAssembleJobRepository repository, IBalanceAppService balanceAppService, IExpectOutAppService expectOutAppService) : base(repository)
) : base(repository)
{ {
_balanceAppService = balanceAppService;
_expectOutAppService = expectOutAppService;
} }
/// <summary> /// <summary>
@ -30,53 +35,88 @@ public class AssembleJobManager : SfsJobManagerBase<AssembleJob, AssembleJobDeta
{ {
var entity = await Repository.FindAsync(input.Id).ConfigureAwait(false); var entity = await Repository.FindAsync(input.Id).ConfigureAwait(false);
foreach (var detail in input.Details) var inputDetail = input.Details.First();
var detail = entity.Details.First();
var expectOutDtos = await _expectOutAppService.GetListByItemCodeAndStatusAndPackingCodeAsync(detail.ItemCode, detail.HandledFromLocationCode, detail.HandledFromPackingCode, detail.Status, detail.HandledFromLot).ConfigureAwait(false);
if (expectOutDtos.Any())
{ {
//发料子任务 赋值实际转移 throw new UserFriendlyException($" 箱码:{detail.HandledFromPackingCode}," +
await entity.BuildDetail(detail.Id, $" 物品代码:{detail.ItemCode}," +
detail.HandledFromLocationCode, $" 库位代码:{detail.HandledFromLocationCode}," +
detail.HandledFromLocationErpCode, $" 状态:{detail.Status}," +
detail.HandledFromWarehouseCode, $" 批次:{detail.HandledFromLot}" +
detail.HandledQty, $" 的库存被占用【预计出】");
detail.HandledSupplierBatch,
detail.HandledArriveDate,
detail.HandledProduceDate,
detail.HandledExpireDate,
detail.HandledContainerCode,
detail.HandledLot,
detail.HandledPackingCode).ConfigureAwait(false);
} }
//var balanceDto = await _balanceAppService.GetRealQtyByPackingCodeAndItemCodeAndLocationCodeAndStatusAsync(detail.HandledFromPackingCode, detail.ItemCode, detail.HandledFromLocationCode, detail.Status, detail.HandledFromLot).ConfigureAwait(false);
var balanceDto = await _balanceAppService.GetRealQtyByPackingCodeAndItemCodeAndLocationCodeAndStatusAsync(inputDetail.HandledFromPackingCode, inputDetail.ItemCode, inputDetail.HandledFromLocationCode, inputDetail.Status, inputDetail.HandledFromLot).ConfigureAwait(false);
if (balanceDto.Qty <= 0)
{
throw new UserFriendlyException($" 箱码:{detail.HandledFromPackingCode}," +
$" 物品代码:{detail.ItemCode}," +
$" 库位代码:{detail.HandledFromLocationCode}," +
$" 状态:{detail.Status}," +
$" 批次:{detail.HandledFromLot}" +
$" 的可用库存不大于0,现在为{balanceDto.Qty},请检查【库存数量】和【预计出】");
}
detail.HandledFromArriveDate = inputDetail.HandledFromArriveDate;
detail.HandledFromContainerCode = inputDetail.HandledFromContainerCode;
detail.HandledFromExpireDate = inputDetail.HandledFromExpireDate;
detail.HandledFromLocationArea = inputDetail.HandledFromLocationArea;
detail.HandledFromLocationCode = inputDetail.HandledFromLocationCode;
detail.HandledFromLocationErpCode = inputDetail.HandledFromLocationErpCode;
detail.HandledFromLocationGroup = inputDetail.HandledFromLocationGroup;
detail.HandledFromLot = inputDetail.HandledFromLot;
detail.HandledFromPackingCode = inputDetail.HandledFromPackingCode;
detail.HandledFromProduceDate = inputDetail.HandledFromProduceDate;
detail.HandledFromQty = inputDetail.HandledFromQty;
detail.HandledFromSupplierBatch = inputDetail.HandledFromSupplierBatch;
detail.HandledFromWarehouseCode = inputDetail.HandledFromWarehouseCode;
detail.HandledToArriveDate = inputDetail.HandledToArriveDate;
detail.HandledToContainerCode = inputDetail.HandledToContainerCode;
detail.HandledToExpireDate = inputDetail.HandledToExpireDate;
detail.HandledToLocationArea = inputDetail.HandledToLocationArea;
detail.HandledToLocationCode = inputDetail.HandledToLocationCode;
detail.HandledToLocationErpCode = inputDetail.HandledToLocationErpCode;
detail.HandledToLocationGroup = inputDetail.HandledToLocationGroup;
detail.HandledToLot = inputDetail.HandledToLot;
detail.HandledToPackingCode = inputDetail.HandledToPackingCode;
detail.HandledToProduceDate = inputDetail.HandledToProduceDate;
detail.HandledToQty = inputDetail.HandledToQty;
detail.HandledToSupplierBatch = inputDetail.HandledToSupplierBatch;
detail.HandledToWarehouseCode = inputDetail.HandledToWarehouseCode;
detail.HandledToPackingCode = string.Empty;
detail.HandledToLot = string.Empty;
detail.HandledToContainerCode = string.Empty;
return await base.CompleteAsync(entity, user).ConfigureAwait(false); return await base.CompleteAsync(entity, user).ConfigureAwait(false);
} }
public override void CheckDetails(AssembleJob entity, AbpValidationResult result) public async Task<AssembleJob> GetAsync(Expression<Func<AssembleJob, bool>> expression)
{
var details = entity.Details;
foreach (var detail in details)
{
if (detail.HandledFromLocationCode == null)
{ {
result.Errors.Add(new ValidationResult($"{detail.HandledFromLocationCode} 不能为空")); return await Repository.FindAsync(expression).ConfigureAwait(false);
} }
} #region 无用
}
public override async Task<List<AssembleJob>> GetWorkingListByPackingAsync(string packingCode) public override Task<List<AssembleJob>> GetWorkingListByPackingAsync(string packingCode)
{ {
return await Repository.GetListAsync(c => c.Details.Any(p => p.RecommendPackingCode == packingCode) && c.JobStatus != EnumJobStatus.Closed && c.JobStatus != EnumJobStatus.Cancelled, true).ConfigureAwait(false); throw new NotImplementedException();
} }
public override async Task<List<AssembleJob>> GetWorkingListByContainerAsync(string containerCode) public override Task<List<AssembleJob>> GetWorkingListByContainerAsync(string containerCode)
{ {
return await Repository.GetListAsync(c => c.Details.Any(p => p.RecommendContainerCode == containerCode) && c.JobStatus != EnumJobStatus.Closed && c.JobStatus != EnumJobStatus.Cancelled, true).ConfigureAwait(false); throw new NotImplementedException();
} }
public async Task<AssembleJob> GetAsync(Expression<Func<AssembleJob, bool>> expression) public override void CheckDetails(AssembleJob entity, AbpValidationResult result)
{ {
return await Repository.FindAsync(expression).ConfigureAwait(false); throw new NotImplementedException();
} }
#endregion
} }

42
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJob.cs

@ -8,9 +8,9 @@ using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs; namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
/// <summary> /// <summary>
/// 发料任务 /// 涂装发料任务
/// </summary> /// </summary>
[Display(Name = "发料任务")] [Display(Name = "涂装发料任务")]
public class CoatingIssueJob : SfsJobAggregateRootBase<CoatingIssueJobDetail> public class CoatingIssueJob : SfsJobAggregateRootBase<CoatingIssueJobDetail>
{ {
/// <summary> /// <summary>
@ -31,12 +31,6 @@ public class CoatingIssueJob : SfsJobAggregateRootBase<CoatingIssueJobDetail>
[IgnoreUpdate] [IgnoreUpdate]
public string MaterialRequestNumber { get; set; } public string MaterialRequestNumber { get; set; }
/// <summary>
/// 车间
/// </summary>
[IgnoreUpdate]
public string Workshop { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库
/// </summary> /// </summary>
@ -50,36 +44,4 @@ public class CoatingIssueJob : SfsJobAggregateRootBase<CoatingIssueJobDetail>
[IgnoreUpdate] [IgnoreUpdate]
public override List<CoatingIssueJobDetail> Details { get; set; } = new List<CoatingIssueJobDetail>(); public override List<CoatingIssueJobDetail> Details { get; set; } = new List<CoatingIssueJobDetail>();
/// <summary>
/// 设置任务明细的实际库位和实际数量
/// </summary>
/// <param name="id"></param>
/// <param name="handledLocationCode"></param>
/// <param name="handledLocationErpCode"></param>
/// <param name="handledWarehouseCode"></param>
/// <param name="handledQty"></param>
/// <param name="handledBatch"></param>
/// <param name="handledContainerCode"></param>
/// <param name="handledLot"></param>
/// <param name="handledPackingCode"></param>
/// <returns></returns>
public virtual async Task BuildDetail(Guid id, string handledLocationCode, string handledLocationErpCode,
string handledWarehouseCode, decimal handledQty, string handledSupplierBatch, DateTime handledArriveDate, DateTime handledProduceDate, DateTime handledExpireDate,
string handledContainerCode, string handledLot, string handledPackingCode)
{
var detail = GetDetail(id);
detail.HandledFromLocationCode = handledLocationCode;
detail.HandledFromLocationErpCode = handledLocationErpCode;
detail.HandledFromWarehouseCode = handledWarehouseCode;
detail.HandledQty = handledQty;
detail.HandledSupplierBatch = handledSupplierBatch;
detail.HandledArriveDate = handledArriveDate;
detail.HandledProduceDate = handledProduceDate;
detail.HandledExpireDate = handledExpireDate;
detail.HandledContainerCode = handledContainerCode;
detail.HandledLot = handledLot;
detail.HandledPackingCode = handledPackingCode;
await Task.CompletedTask.ConfigureAwait(false);
}
} }

484
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDetail.cs

@ -1,41 +1,81 @@
using System; using System;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs; namespace Win_in.Sfs.Wms.Store.Domain;
public class CoatingIssueJobDetail : SfsJobRecommendFromDetailEntityBase, IHasToLocation public class CoatingIssueJobDetail : SfsDetailEntityBase
{ {
#region 库存基础信息
/// <summary> /// <summary>
/// 请求库位 /// 物品代码
/// </summary> /// </summary>
public string RequestLocationCode { get; set; } public string ItemCode { get; set; }
/// <summary>
/// 物品名称
/// </summary>
public string ItemName { get; set; }
/// <summary>
/// 物品描述1
/// </summary>
public string ItemDesc1 { get; set; }
/// <summary>
/// 物品描述2
/// </summary>
public string ItemDesc2 { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal StdPackQty { get; set; }
/// <summary> /// <summary>
/// 到库位 /// 库存状态
/// </summary> /// </summary>
public string ToLocationCode { get; set; } public EnumInventoryStatus Status { get; set; }
/// <summary>
/// 计量单位
/// </summary>
public string Uom { get; set; }
#endregion
#region 请求信息
/// <summary>
/// 请求库位
/// </summary>
public string RequestLocationCode { get; set; }
/// <summary> /// <summary>
/// 到库区 /// 到库区
/// </summary> /// </summary>
public string ToLocationArea { get; set; } public string RequestLocationArea { get; set; }
/// <summary> /// <summary>
/// 到库位组 /// 到库位组
/// </summary> /// </summary>
public string ToLocationGroup { get; set; } public string RequestLocationGroup { get; set; }
/// <summary> /// <summary>
/// 到ERP库位 /// 到ERP库位
/// </summary> /// </summary>
public string ToLocationErpCode { get; set; } public string RequestLocationErpCode { get; set; }
/// <summary> /// <summary>
/// 到仓库 /// 到仓库
/// </summary> /// </summary>
public string ToWarehouseCode { get; set; } public string RequestWarehouseCode { get; set; }
/// <summary> /// <summary>
/// 在途库库位 /// 在途库库位
@ -48,62 +88,438 @@ public class CoatingIssueJobDetail : SfsJobRecommendFromDetailEntityBase, IHasTo
public string ProdLine { get; set; } public string ProdLine { get; set; }
/// <summary> /// <summary>
/// 工作中心 /// 位置码
/// </summary> /// </summary>
public string WorkStation { get; set; } public string PositionCode { get; set; }
/// <summary> /// <summary>
/// 过期时间 /// 推荐的类型
/// </summary> /// </summary>
public DateTime ExpiredTime { get; set; } public EnumRecommendType RecommendType { get; set; }
/// <summary> /// <summary>
/// 工序 /// 需求数量
/// </summary> /// </summary>
public string Operation { get; set; } public decimal RequestQty { get; set; }
#endregion
#region 推荐来源
/// <summary> /// <summary>
/// 配送方式 /// 推荐来源托标签
/// </summary> /// </summary>
public EnumDistributionType DistributionType { get; set; } public string RecommendFromContainerCode { get; set; }
/// <summary> /// <summary>
/// 取整方式 /// 推荐来源箱标签
/// </summary> /// </summary>
public EnumTruncType TruncType { get; set; } public string RecommendFromPackingCode { get; set; }
/// <summary> /// <summary>
/// 取整后数量 /// 推荐来源批次供应商批次
/// </summary> /// </summary>
public decimal RoundedQty { get; set; } public string RecommendFromSupplierBatch { get; set; }
/// <summary> /// <summary>
/// 计划拆分规则 /// 推荐来源批次到货时间
/// </summary> /// </summary>
public EnumPlannedSplitRule PlannedSplitRule { get; set; } public DateTime RecommendFromArriveDate { get; set; }
/// <summary> /// <summary>
/// 计划开始时间 /// 推荐来源批次生产时间
/// </summary> /// </summary>
public DateTime PlanBeginTime { get; set; } public DateTime RecommendFromProduceDate { get; set; }
/// <summary> /// <summary>
/// 每次配送数量 /// 推荐来源批次过期时间
/// </summary> /// </summary>
public decimal DeliveryQty { get; set; } public DateTime RecommendFromExpireDate { get; set; }
/// <summary> /// <summary>
/// 位置码 /// 推荐来源批次排序
/// </summary> /// </summary>
public string PositionCode { get; set; } public string RecommendFromLot { get; set; }
/// <summary> /// <summary>
/// 推荐类型 /// 推荐来源库位
/// </summary> /// </summary>
public EnumRecommendType RecommendType { get; set; } public string RecommendFromLocationCode { get; set; }
/// <summary>
/// 推荐来源库区
/// </summary>
public string RecommendFromLocationArea { get; set; }
/// <summary>
/// 推荐来源库位组
/// </summary>
public string RecommendFromLocationGroup { get; set; }
/// <summary>
/// 推荐来源ERP库位
/// </summary>
public string RecommendFromLocationErpCode { get; set; }
/// <summary>
/// 推荐来源仓库
/// </summary>
public string RecommendFromWarehouseCode { get; set; }
/// <summary>
/// 推荐来源数量
/// </summary>
public decimal RecommendFromQty { get; set; }
#endregion
#region 推荐目标
/// <summary>
/// 推荐目标托标签
/// </summary>
public string RecommendToContainerCode { get; set; }
/// <summary>
/// 推荐目标箱标签
/// </summary>
public string RecommendToPackingCode { get; set; }
/// <summary>
/// 推荐目标批次供应商批次
/// </summary>
public string RecommendToSupplierBatch { get; set; }
/// <summary>
/// 推荐目标批次到货时间
/// </summary>
public DateTime RecommendToArriveDate { get; set; }
/// <summary>
/// 推荐目标批次生产时间
/// </summary>
public DateTime RecommendToProduceDate { get; set; }
/// <summary>
/// 推荐目标批次过期时间
/// </summary>
public DateTime RecommendToExpireDate { get; set; }
/// <summary>
/// 推荐目标批次排序
/// </summary>
public string RecommendToLot { get; set; }
/// <summary>
/// 推荐目标库位
/// </summary>
public string RecommendToLocationCode { get; set; }
/// <summary>
/// 推荐目标库区
/// </summary>
public string RecommendToLocationArea { get; set; }
/// <summary>
/// 推荐目标库位组
/// </summary>
public string RecommendToLocationGroup { get; set; }
/// <summary>
/// 推荐目标ERP库位
/// </summary>
public string RecommendToLocationErpCode { get; set; }
/// <summary>
/// 推荐目标仓库
/// </summary>
public string RecommendToWarehouseCode { get; set; }
/// <summary>
/// 推荐目标数量
/// </summary>
public decimal RecommendToQty { get; set; }
#endregion
#region 库移来源
/// <summary>
/// 库移来源托标签
/// </summary>
public string TransferLibFromContainerCode { get; set; }
/// <summary>
/// 库移来源箱标签
/// </summary>
public string TransferLibFromPackingCode { get; set; }
/// <summary>
/// 库移来源批次供应商批次
/// </summary>
public string TransferLibFromSupplierBatch { get; set; }
/// <summary>
/// 库移来源批次到货时间
/// </summary>
public DateTime TransferLibFromArriveDate { get; set; }
/// <summary>
/// 库移来源批次生产时间
/// </summary>
public DateTime TransferLibFromProduceDate { get; set; }
/// <summary>
/// 库移来源批次过期时间
/// </summary>
public DateTime TransferLibFromExpireDate { get; set; }
/// <summary>
/// 库移来源批次排序
/// </summary>
public string TransferLibFromLot { get; set; }
/// <summary>
/// 库移来源库位
/// </summary>
public string TransferLibFromLocationCode { get; set; }
/// <summary>
/// 库移来源库区
/// </summary>
public string TransferLibFromLocationArea { get; set; }
/// <summary>
/// 库移来源库位组
/// </summary>
public string TransferLibFromLocationGroup { get; set; }
/// <summary>
/// 库移来源ERP库位
/// </summary>
public string TransferLibFromLocationErpCode { get; set; }
/// <summary>
/// 库移来源仓库
/// </summary>
public string TransferLibFromWarehouseCode { get; set; }
/// <summary>
/// 库移来源数量
/// </summary>
public decimal TransferLibFromQty { get; set; }
#endregion
#region 库移目标
/// <summary>
/// 库移目标托标签
/// </summary>
public string TransferLibToContainerCode { get; set; }
/// <summary>
/// 库移目标箱标签
/// </summary>
public string TransferLibToPackingCode { get; set; }
/// <summary>
/// 库移目标批次供应商批次
/// </summary>
public string TransferLibToSupplierBatch { get; set; }
/// <summary>
/// 库移目标批次到货时间
/// </summary>
public DateTime TransferLibToArriveDate { get; set; }
/// <summary>
/// 库移目标批次生产时间
/// </summary>
public DateTime TransferLibToProduceDate { get; set; }
/// <summary>
/// 库移目标批次过期时间
/// </summary>
public DateTime TransferLibToExpireDate { get; set; }
/// <summary>
/// 库移目标批次排序
/// </summary>
public string TransferLibToLot { get; set; }
/// <summary>
/// 库移目标库位
/// </summary>
public string TransferLibToLocationCode { get; set; }
/// <summary>
/// 库移目标库区
/// </summary>
public string TransferLibToLocationArea { get; set; }
/// <summary>
/// 库移目标库位组
/// </summary>
public string TransferLibToLocationGroup { get; set; }
/// <summary>
/// 库移目标ERP库位
/// </summary>
public string TransferLibToLocationErpCode { get; set; }
/// <summary>
/// 库移目标仓库
/// </summary>
public string TransferLibToWarehouseCode { get; set; }
/// <summary>
/// 库移目标数量
/// </summary>
public decimal TransferLibToQty { get; set; }
#endregion
#region 实际来源
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledFromContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledFromPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledFromSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledFromArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledFromProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledFromExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledFromLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledFromLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledFromLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledFromLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledFromLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledFromWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledFromQty { get; set; }
#endregion
#region 实际目标
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledToContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledToPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledToSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledToArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledToProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledToExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledToLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledToLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledToLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledToLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledToLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledToWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledToQty { get; set; }
#endregion
public void SetId(Guid id) public void SetId(Guid id)
{ {
Id = id; this.Id = id;
} }
} }

135
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobManager.cs

@ -4,20 +4,28 @@ using System.ComponentModel.DataAnnotations;
using System.Linq; using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Users; using Volo.Abp.Users;
using Volo.Abp.Validation; using Volo.Abp.Validation;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Domain; using Win_in.Sfs.Wms.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs; namespace Win_in.Sfs.Wms.Store.Domain;
public class CoatingIssueJobManager : SfsJobManagerBase<CoatingIssueJob, CoatingIssueJobDetail>, ICoatingIssueJobManager public class CoatingIssueJobManager : SfsJobManagerBase<CoatingIssueJob, CoatingIssueJobDetail>, ICoatingIssueJobManager
{ {
private readonly IBalanceAppService _balanceAppService;
private readonly IExpectOutAppService _expectOutAppService;
private readonly ICoatingIssueJobRepository _repository;
public CoatingIssueJobManager( public CoatingIssueJobManager(
ICoatingIssueJobRepository repository ICoatingIssueJobRepository repository, IBalanceAppService balanceAppService, IExpectOutAppService expectOutAppService) : base(repository)
) : base(repository)
{ {
_balanceAppService = balanceAppService;
_expectOutAppService = expectOutAppService;
_repository= repository;
} }
/// <summary> /// <summary>
@ -31,74 +39,89 @@ public class CoatingIssueJobManager : SfsJobManagerBase<CoatingIssueJob, Coating
{ {
var entity = await Repository.FindAsync(input.Id).ConfigureAwait(false); var entity = await Repository.FindAsync(input.Id).ConfigureAwait(false);
foreach (var detail in input.Details)
{
//发料子任务 赋值实际转移
await entity.BuildDetail(detail.Id,
detail.HandledFromLocationCode,
detail.HandledFromLocationErpCode,
detail.HandledFromWarehouseCode,
detail.HandledQty,
detail.HandledSupplierBatch,
detail.HandledArriveDate,
detail.HandledProduceDate,
detail.HandledExpireDate,
detail.HandledContainerCode,
detail.HandledLot,
detail.HandledPackingCode).ConfigureAwait(false);
}
return await base.CompleteAsync(entity, user).ConfigureAwait(false); var inputDetail = input.Details.First();
} var detail = entity.Details.First();
public override void CheckDetails(CoatingIssueJob entity, AbpValidationResult result) var expectOutDtos = await _expectOutAppService.GetListByItemCodeAndStatusAndPackingCodeAsync(detail.ItemCode, detail.HandledFromLocationCode, detail.HandledFromPackingCode, detail.Status, detail.HandledFromLot).ConfigureAwait(false);
{ if (expectOutDtos.Any())
var details = entity.Details;
foreach (var detail in details)
{ {
if (detail.HandledFromLocationCode == null) throw new UserFriendlyException($" 箱码:{detail.HandledFromPackingCode}," +
{ $" 物品代码:{detail.ItemCode}," +
result.Errors.Add(new ValidationResult($"{detail.HandledFromLocationCode} 不能为空")); $" 库位代码:{detail.HandledFromLocationCode}," +
$" 状态:{detail.Status}," +
$" 批次:{detail.HandledFromLot}" +
$" 的库存被占用【预计出】");
} }
} //var balanceDto = await _balanceAppService.GetRealQtyByPackingCodeAndItemCodeAndLocationCodeAndStatusAsync(detail.HandledFromPackingCode, detail.ItemCode, detail.HandledFromLocationCode, detail.Status, detail.HandledFromLot).ConfigureAwait(false);
var balanceDto = await _balanceAppService.GetRealQtyByPackingCodeAndItemCodeAndLocationCodeAndStatusAsync(inputDetail.HandledFromPackingCode, inputDetail.ItemCode, inputDetail.HandledFromLocationCode, inputDetail.Status, inputDetail.HandledFromLot).ConfigureAwait(false);
if (balanceDto.Qty <= 0)
{
throw new UserFriendlyException($" 箱码:{detail.HandledFromPackingCode}," +
$" 物品代码:{detail.ItemCode}," +
$" 库位代码:{detail.HandledFromLocationCode}," +
$" 状态:{detail.Status}," +
$" 批次:{detail.HandledFromLot}" +
$" 的可用库存不大于0,现在为{balanceDto.Qty},请检查【库存数量】和【预计出】");
} }
public override async Task<List<CoatingIssueJob>> GetWorkingListByPackingAsync(string packingCode) detail.HandledFromArriveDate = inputDetail.HandledFromArriveDate;
{ detail.HandledFromContainerCode = inputDetail.HandledFromContainerCode;
return await Repository.GetListAsync(c => c.Details.Any(p => p.RecommendPackingCode == packingCode) && c.JobStatus != EnumJobStatus.Closed && c.JobStatus != EnumJobStatus.Cancelled, true).ConfigureAwait(false); detail.HandledFromExpireDate = inputDetail.HandledFromExpireDate;
detail.HandledFromLocationArea = inputDetail.HandledFromLocationArea;
detail.HandledFromLocationCode = inputDetail.HandledFromLocationCode;
detail.HandledFromLocationErpCode = inputDetail.HandledFromLocationErpCode;
detail.HandledFromLocationGroup = inputDetail.HandledFromLocationGroup;
detail.HandledFromLot = inputDetail.HandledFromLot;
detail.HandledFromPackingCode = inputDetail.HandledFromPackingCode;
detail.HandledFromProduceDate = inputDetail.HandledFromProduceDate;
detail.HandledFromQty = inputDetail.HandledFromQty;
detail.HandledFromSupplierBatch = inputDetail.HandledFromSupplierBatch;
detail.HandledFromWarehouseCode = inputDetail.HandledFromWarehouseCode;
detail.HandledToArriveDate = inputDetail.HandledToArriveDate;
detail.HandledToContainerCode = inputDetail.HandledToContainerCode;
detail.HandledToExpireDate = inputDetail.HandledToExpireDate;
detail.HandledToLocationArea = inputDetail.HandledToLocationArea;
detail.HandledToLocationCode = inputDetail.HandledToLocationCode;
detail.HandledToLocationErpCode = inputDetail.HandledToLocationErpCode;
detail.HandledToLocationGroup = inputDetail.HandledToLocationGroup;
detail.HandledToLot = inputDetail.HandledToLot;
detail.HandledToPackingCode = inputDetail.HandledToPackingCode;
detail.HandledToProduceDate = inputDetail.HandledToProduceDate;
detail.HandledToQty = inputDetail.HandledToQty;
detail.HandledToSupplierBatch = inputDetail.HandledToSupplierBatch;
detail.HandledToWarehouseCode = inputDetail.HandledToWarehouseCode;
detail.HandledToPackingCode = string.Empty;
detail.HandledToLot = string.Empty;
detail.HandledToContainerCode = string.Empty;
return await base.CompleteAsync(entity, user).ConfigureAwait(false);
} }
public override async Task<List<CoatingIssueJob>> GetWorkingListByContainerAsync(string containerCode) public async Task<CoatingIssueJob> GetAsync(Expression<Func<CoatingIssueJob, bool>> expression)
{ {
return await Repository.GetListAsync(c => c.Details.Any(p => p.RecommendContainerCode == containerCode) && c.JobStatus != EnumJobStatus.Closed && c.JobStatus != EnumJobStatus.Cancelled, true).ConfigureAwait(false); return await Repository.FindAsync(expression).ConfigureAwait(false);
} }
///// <summary> #region 无用
///// 临时修改 解决补料无法拿到订阅错误
///// </summary>
///// <param name="eventData"></param>
///// <returns></returns>
//public virtual async Task<List<CoatingIssueJob>> AddByEtoAsync(MaterialRequestHandledETO eventData)
//{
// var CoatingIssueJobs = await BuildCoatingIssueJobByMaterialRequestAsync(eventData);
// await Repository.InsertManyAsync(CoatingIssueJobs);
// var expectIns = await BuildExpectInAsync(CoatingIssueJobs); public override Task<List<CoatingIssueJob>> GetWorkingListByPackingAsync(string packingCode)
// await _expectInAppService.AddManyAndCalculationAvailableCapacityAsync(expectIns); {
throw new NotImplementedException();
}
// return CoatingIssueJobs; public override Task<List<CoatingIssueJob>> GetWorkingListByContainerAsync(string containerCode)
//} {
throw new NotImplementedException();
}
//public virtual async Task TestError() public override void CheckDetails(CoatingIssueJob entity, AbpValidationResult result)
//{
// throw new UserFriendlyException("我是测试的异常");
//}
public async Task<CoatingIssueJob> GetAsync(Expression<Func<CoatingIssueJob, bool>> expression)
{ {
return await Repository.FindAsync(expression).ConfigureAwait(false); throw new NotImplementedException();
} }
#endregion
} }

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/IIssueJobRepository.cs

@ -1,6 +1,6 @@
namespace Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Domain;
public interface IInjectionJobRepository : ISfsJobRepositoryBase<InjectionJob> public interface IIssueJobRepository : ISfsJobRepositoryBase<IssueJob>
{ {
} }

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/InjectionJobs/IInjectionJobRepository.cs

@ -1,6 +1,6 @@
namespace Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Domain;
public interface IIssueJobRepository : ISfsJobRepositoryBase<IssueJob> public interface IInjectionJobRepository : ISfsJobRepositoryBase<InjectionJob>
{ {
} }

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/InjectionJobs/InjectionJobManager.cs

@ -49,7 +49,7 @@ public class InjectionJobManager : SfsJobManagerBase<InjectionJob, InjectionJobD
$" 的库存被占用【预计出】"); $" 的库存被占用【预计出】");
} }
var balanceDto=await _balanceAppService.GetRealQtyByPackingCodeAndItemCodeAndLocationCodeAndStatusAsync(detail.HandledFromPackingCode,detail.ItemCode,detail.HandledFromLocationCode,detail.Status,detail.HandledFromLot).ConfigureAwait(false); var balanceDto=await _balanceAppService.GetRealQtyByPackingCodeAndItemCodeAndLocationCodeAndStatusAsync(inputDetail.HandledFromPackingCode, inputDetail.ItemCode, inputDetail.HandledFromLocationCode, inputDetail.Status, inputDetail.HandledFromLot).ConfigureAwait(false);
if (balanceDto.Qty <= 0) if (balanceDto.Qty <= 0)
{ {
throw new UserFriendlyException($" 箱码:{detail.HandledFromPackingCode}," + throw new UserFriendlyException($" 箱码:{detail.HandledFromPackingCode}," +

139
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/TransferLibJobs/TransferLibJobManager.cs

@ -47,6 +47,145 @@ public class TransferLibJobManager : SfsJobManagerBase<TransferLibJob, TransferL
public override async Task<TransferLibJob> CompleteAsync(TransferLibJob input, ICurrentUser user) public override async Task<TransferLibJob> CompleteAsync(TransferLibJob input, ICurrentUser user)
{ {
TransferLibJob entity = await Repository.FindAsync(input.Id).ConfigureAwait(false); TransferLibJob entity = await Repository.FindAsync(input.Id).ConfigureAwait(false);
entity.RequestNumber = input.RequestNumber;
entity.JobNumber = input.JobNumber;
entity.Type = input.Type;
entity.UseOnTheWayLocation = input.UseOnTheWayLocation;
entity.ConfirmTime = input.ConfirmTime;
entity.CreationTime = input.CreationTime;
entity.CreatorId = input.CreatorId;
entity.LastModificationTime = input.LastModificationTime;
entity.LastModifierId = input.LastModifierId;
entity.Remark = input.Remark;
entity.Worker = input.Worker;
entity.Number = input.Number;
entity.UpStreamJobNumber = input.UpStreamJobNumber;
entity.JobDescription = input.JobDescription;
entity.JobType = input.JobType;
entity.JobStatus = input.JobStatus;
entity.Priority = input.Priority;
entity.PriorityIncrement = input.PriorityIncrement;
entity.WorkGroupCode = input.WorkGroupCode;
entity.IsAutoComplete = input.IsAutoComplete;
entity.AcceptUserId = input.AcceptUserId;
entity.AcceptUserName = input.AcceptUserName;
entity.AcceptTime = input.AcceptTime;
entity.CompleteUserId = input.CompleteUserId;
entity.CompleteUserName = input.CompleteUserName;
entity.CompleteTime = input.CompleteTime;
entity.WarehouseCode = input.WarehouseCode;
entity.Confirmed = input.Confirmed;
entity.CallBusinessType = input.CallBusinessType;
entity.CallJobNumber = input.CallJobNumber;
entity.CallRequestNumber = input.CallRequestNumber;
entity.CallServerName = input.CallServerName;
foreach (var entityDetail in entity.Details)
{
var inputDetail = input.Details.FirstOrDefault(itm => itm.Id == entityDetail.Id);
if (inputDetail != null)
{
entityDetail.OnTheWayLocationCode = inputDetail.OnTheWayLocationCode;
entityDetail.Reason = inputDetail.Reason;
entityDetail.JobStatus = inputDetail.JobStatus;
//entityDetail.CreationTime = inputDetail.CreationTime;
//entityDetail.CreatorId = inputDetail.CreatorId;
entityDetail.LastModificationTime = inputDetail.LastModificationTime;
entityDetail.LastModifierId = inputDetail.LastModifierId;
//entityDetail.MasterID = inputDetail.MasterID;
entityDetail.Number = inputDetail.Number;
entityDetail.Remark = inputDetail.Remark;
entityDetail.ItemName = inputDetail.ItemName;
entityDetail.ItemDesc1 = inputDetail.ItemDesc1;
entityDetail.ItemDesc2 = inputDetail.ItemDesc2;
entityDetail.ItemCode = inputDetail.ItemCode;
entityDetail.Uom = inputDetail.Uom;
entityDetail.StdPackQty = inputDetail.StdPackQty;
entityDetail.RequestLocationErpCode = inputDetail.RequestLocationErpCode;
entityDetail.HandledToArriveDate = inputDetail.HandledToArriveDate;
entityDetail.HandledToProduceDate = inputDetail.HandledToProduceDate;
entityDetail.HandledToExpireDate = inputDetail.HandledToExpireDate;
entityDetail.RequestLocationArea = inputDetail.RequestLocationArea;
entityDetail.RequestLocationCode = inputDetail.RequestLocationCode;
entityDetail.RecommendType = inputDetail.RecommendType;
entityDetail.RequestLocationGroup = inputDetail.RequestLocationGroup;
entityDetail.RequestWarehouseCode = inputDetail.RequestWarehouseCode;
entityDetail.Status = inputDetail.Status;
entityDetail.CallBusinessType = inputDetail.CallBusinessType;
entityDetail.CallJobNumber = inputDetail.CallJobNumber;
entityDetail.CallRequestNumber = inputDetail.CallRequestNumber;
entityDetail.CallServerName = inputDetail.CallServerName;
entityDetail.RecommendFromArriveDate = inputDetail.RecommendFromArriveDate;
entityDetail.RecommendFromContainerCode = inputDetail.RecommendFromContainerCode;
entityDetail.RecommendFromExpireDate = inputDetail.RecommendFromExpireDate;
entityDetail.RecommendFromLocationArea = inputDetail.RecommendFromLocationArea;
entityDetail.RecommendFromLocationCode = inputDetail.RecommendFromLocationCode;
entityDetail.RecommendFromLocationErpCode = inputDetail.RecommendFromLocationErpCode;
entityDetail.RecommendFromLocationGroup = inputDetail.RecommendFromLocationGroup;
entityDetail.RecommendFromLot = inputDetail.RecommendFromLot;
entityDetail.RecommendFromPackingCode = inputDetail.RecommendFromPackingCode;
entityDetail.RecommendFromProduceDate = inputDetail.RecommendFromProduceDate;
entityDetail.RecommendFromQty = inputDetail.RecommendFromQty;
entityDetail.RecommendFromSupplierBatch = inputDetail.RecommendFromSupplierBatch;
entityDetail.RecommendFromWarehouseCode = inputDetail.RecommendFromWarehouseCode;
entityDetail.RecommendToArriveDate = inputDetail.RecommendToArriveDate;
entityDetail.RecommendToContainerCode = inputDetail.RecommendToContainerCode;
entityDetail.RecommendToExpireDate = inputDetail.RecommendToExpireDate;
entityDetail.RecommendToLocationArea = inputDetail.RecommendToLocationArea;
entityDetail.RecommendToLocationCode = inputDetail.RecommendToLocationCode;
entityDetail.RecommendToLocationErpCode = inputDetail.RecommendToLocationErpCode;
entityDetail.RecommendToLocationGroup = inputDetail.RecommendToLocationGroup;
entityDetail.RecommendToLot = inputDetail.RecommendToLot;
entityDetail.RecommendToPackingCode = inputDetail.RecommendToPackingCode;
entityDetail.RecommendToProduceDate = inputDetail.RecommendToProduceDate;
entityDetail.RecommendToQty = inputDetail.RecommendToQty;
entityDetail.RecommendToSupplierBatch = inputDetail.RecommendToSupplierBatch;
entityDetail.RecommendToWarehouseCode = inputDetail.RecommendToWarehouseCode;
entityDetail.HandledFromArriveDate = inputDetail.HandledFromArriveDate;
entityDetail.HandledFromContainerCode = inputDetail.HandledFromContainerCode;
entityDetail.HandledFromExpireDate = inputDetail.HandledFromExpireDate;
entityDetail.HandledFromLocationArea = inputDetail.HandledFromLocationArea;
entityDetail.HandledFromLocationCode = inputDetail.HandledFromLocationCode;
entityDetail.HandledFromLocationErpCode = inputDetail.HandledFromLocationErpCode;
entityDetail.HandledFromLocationGroup = inputDetail.HandledFromLocationGroup;
entityDetail.HandledFromLot = inputDetail.HandledFromLot;
entityDetail.HandledFromPackingCode = inputDetail.HandledFromPackingCode;
entityDetail.HandledFromProduceDate = inputDetail.HandledFromProduceDate;
entityDetail.HandledFromQty = inputDetail.HandledFromQty;
entityDetail.HandledFromSupplierBatch = inputDetail.HandledFromSupplierBatch;
entityDetail.HandledFromWarehouseCode = inputDetail.HandledFromWarehouseCode;
entityDetail.HandledToContainerCode = inputDetail.HandledToContainerCode;
entityDetail.HandledToLocationArea = inputDetail.HandledToLocationArea;
entityDetail.HandledToLocationCode = inputDetail.HandledToLocationCode;
entityDetail.HandledToLocationErpCode = inputDetail.HandledToLocationErpCode;
entityDetail.HandledToLocationGroup = inputDetail.HandledToLocationGroup;
entityDetail.HandledToLot = inputDetail.HandledToLot;
entityDetail.HandledToPackingCode = inputDetail.HandledToPackingCode;
entityDetail.HandledToQty = inputDetail.HandledToQty;
entityDetail.HandledToSupplierBatch = inputDetail.HandledToSupplierBatch;
entityDetail.HandledToWarehouseCode = inputDetail.HandledToWarehouseCode;
entityDetail.IsItemCodeFrom = inputDetail.IsItemCodeFrom;
entityDetail.IsItemCodeTo = inputDetail.IsItemCodeTo;
entityDetail.IsLocationAreaFrom = inputDetail.IsLocationAreaFrom;
entityDetail.IsLocationAreaTo = inputDetail.IsLocationAreaTo;
entityDetail.IsLocationCodeFrom = inputDetail.IsLocationCodeFrom;
entityDetail.IsLocationCodeTo = inputDetail.IsLocationCodeTo;
entityDetail.IsLocationErpCodeFrom = inputDetail.IsLocationErpCodeFrom;
entityDetail.IsLocationErpCodeTo = inputDetail.IsLocationErpCodeTo;
entityDetail.IsLocationGroupFrom = inputDetail.IsLocationGroupFrom;
entityDetail.IsLocationGroupTo = inputDetail.IsLocationGroupTo;
entityDetail.IsLotFrom = inputDetail.IsLotFrom;
entityDetail.IsLotTo = inputDetail.IsLotTo;
entityDetail.IsPackingCodeFrom = inputDetail.IsPackingCodeFrom;
entityDetail.IsPackingCodeTo = inputDetail.IsPackingCodeTo;
entityDetail.IsQtyFrom = inputDetail.IsQtyFrom;
entityDetail.IsQtyTo = inputDetail.IsQtyTo;
entityDetail.IsStatusFrom = inputDetail.IsStatusFrom;
entityDetail.IsStatusTo = inputDetail.IsStatusTo;
entityDetail.PositionCode = inputDetail.PositionCode;
entityDetail.ProdLine = inputDetail.ProdLine;
entityDetail.RequestQty = inputDetail.RequestQty;
}
}
return await base.CompleteAsync(entity, user).ConfigureAwait(false); return await base.CompleteAsync(entity, user).ConfigureAwait(false);
} }
} }

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/AssembleNotes/AssembleNote.cs

@ -17,12 +17,6 @@ public class AssembleNote : SfsStoreAggregateRootBase<AssembleNoteDetail>, IHasJ
[IgnoreUpdate] [IgnoreUpdate]
public string JobNumber { get; set; } public string JobNumber { get; set; }
/// <summary>
/// 车间
/// </summary>
[IgnoreUpdate]
public string Workshop { get; set; }
/// <summary> /// <summary>
/// 明细列表 /// 明细列表
/// </summary> /// </summary>
@ -73,5 +67,4 @@ public class AssembleNote : SfsStoreAggregateRootBase<AssembleNoteDetail>, IHasJ
} }
} }
} }

496
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/AssembleNotes/AssembleNoteDetail.cs

@ -1,43 +1,519 @@
using System; using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Domain;
public class AssembleNoteDetail : SfsStoreRecommendFromDetailWithFromToEntityBase public class AssembleNoteDetail : SfsStoreDetailEntityBase
{ {
#region 库存基础信息
/// <summary> /// <summary>
/// 发料时间 /// 物品代码
/// </summary> /// </summary>
public DateTime IssueTime { get; set; } public string ItemCode { get; set; }
/// <summary> /// <summary>
/// 过期时间 /// 物品名称
/// </summary> /// </summary>
public DateTime ExpiredTime { get; set; } public string ItemName { get; set; }
/// <summary> /// <summary>
/// 生产线 /// 物品描述1
/// </summary> /// </summary>
public string ProdLine { get; set; } public string ItemDesc1 { get; set; }
/// <summary>
/// 物品描述2
/// </summary>
public string ItemDesc2 { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal StdPackQty { get; set; }
/// <summary>
/// 库存状态
/// </summary>
public EnumInventoryStatus Status { get; set; }
/// <summary>
/// 计量单位
/// </summary>
public string Uom { get; set; }
#endregion
#region 请求信息
/// <summary>
/// 请求库位
/// </summary>
public string RequestLocationCode { get; set; }
/// <summary>
/// 到库区
/// </summary>
public string RequestLocationArea { get; set; }
/// <summary>
/// 到库位组
/// </summary>
public string RequestLocationGroup { get; set; }
/// <summary>
/// 到ERP库位
/// </summary>
public string RequestLocationErpCode { get; set; }
/// <summary> /// <summary>
/// 工作中心 /// 到仓库
/// </summary> /// </summary>
public string WorkStation { get; set; } public string RequestWarehouseCode { get; set; }
/// <summary> /// <summary>
/// 在途库库位 /// 在途库库位
/// </summary> /// </summary>
public string OnTheWayLocationCode { get; set; } public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 生产线
/// </summary>
public string ProdLine { get; set; }
/// <summary> /// <summary>
/// 位置码 /// 位置码
/// </summary> /// </summary>
public string PositionCode { get; set; } public string PositionCode { get; set; }
/// <summary> /// <summary>
/// 推荐类型 /// 推荐类型
/// </summary> /// </summary>
public EnumRecommendType RecommendType { get; set; } public EnumRecommendType RecommendType { get; set; }
/// <summary>
/// 需求数量
/// </summary>
public decimal RequestQty { get; set; }
#endregion
#region 推荐来源
/// <summary>
/// 推荐来源托标签
/// </summary>
public string RecommendFromContainerCode { get; set; }
/// <summary>
/// 推荐来源箱标签
/// </summary>
public string RecommendFromPackingCode { get; set; }
/// <summary>
/// 推荐来源批次供应商批次
/// </summary>
public string RecommendFromSupplierBatch { get; set; }
/// <summary>
/// 推荐来源批次到货时间
/// </summary>
public DateTime RecommendFromArriveDate { get; set; }
/// <summary>
/// 推荐来源批次生产时间
/// </summary>
public DateTime RecommendFromProduceDate { get; set; }
/// <summary>
/// 推荐来源批次过期时间
/// </summary>
public DateTime RecommendFromExpireDate { get; set; }
/// <summary>
/// 推荐来源批次排序
/// </summary>
public string RecommendFromLot { get; set; }
/// <summary>
/// 推荐来源库位
/// </summary>
public string RecommendFromLocationCode { get; set; }
/// <summary>
/// 推荐来源库区
/// </summary>
public string RecommendFromLocationArea { get; set; }
/// <summary>
/// 推荐来源库位组
/// </summary>
public string RecommendFromLocationGroup { get; set; }
/// <summary>
/// 推荐来源ERP库位
/// </summary>
public string RecommendFromLocationErpCode { get; set; }
/// <summary>
/// 推荐来源仓库
/// </summary>
public string RecommendFromWarehouseCode { get; set; }
/// <summary>
/// 推荐来源数量
/// </summary>
public decimal RecommendFromQty { get; set; }
#endregion
#region 推荐目标
/// <summary>
/// 推荐目标托标签
/// </summary>
public string RecommendToContainerCode { get; set; }
/// <summary>
/// 推荐目标箱标签
/// </summary>
public string RecommendToPackingCode { get; set; }
/// <summary>
/// 推荐目标批次供应商批次
/// </summary>
public string RecommendToSupplierBatch { get; set; }
/// <summary>
/// 推荐目标批次到货时间
/// </summary>
public DateTime RecommendToArriveDate { get; set; }
/// <summary>
/// 推荐目标批次生产时间
/// </summary>
public DateTime RecommendToProduceDate { get; set; }
/// <summary>
/// 推荐目标批次过期时间
/// </summary>
public DateTime RecommendToExpireDate { get; set; }
/// <summary>
/// 推荐目标批次排序
/// </summary>
public string RecommendToLot { get; set; }
/// <summary>
/// 推荐目标库位
/// </summary>
public string RecommendToLocationCode { get; set; }
/// <summary>
/// 推荐目标库区
/// </summary>
public string RecommendToLocationArea { get; set; }
/// <summary>
/// 推荐目标库位组
/// </summary>
public string RecommendToLocationGroup { get; set; }
/// <summary>
/// 推荐目标ERP库位
/// </summary>
public string RecommendToLocationErpCode { get; set; }
/// <summary>
/// 推荐目标仓库
/// </summary>
public string RecommendToWarehouseCode { get; set; }
/// <summary>
/// 推荐目标数量
/// </summary>
public decimal RecommendToQty { get; set; }
#endregion
#region 库移来源
/// <summary>
/// 库移来源托标签
/// </summary>
public string TransferLibFromContainerCode { get; set; }
/// <summary>
/// 库移来源箱标签
/// </summary>
public string TransferLibFromPackingCode { get; set; }
/// <summary>
/// 库移来源批次供应商批次
/// </summary>
public string TransferLibFromSupplierBatch { get; set; }
/// <summary>
/// 库移来源批次到货时间
/// </summary>
public DateTime TransferLibFromArriveDate { get; set; }
/// <summary>
/// 库移来源批次生产时间
/// </summary>
public DateTime TransferLibFromProduceDate { get; set; }
/// <summary>
/// 库移来源批次过期时间
/// </summary>
public DateTime TransferLibFromExpireDate { get; set; }
/// <summary>
/// 库移来源批次排序
/// </summary>
public string TransferLibFromLot { get; set; }
/// <summary>
/// 库移来源库位
/// </summary>
public string TransferLibFromLocationCode { get; set; }
/// <summary>
/// 库移来源库区
/// </summary>
public string TransferLibFromLocationArea { get; set; }
/// <summary>
/// 库移来源库位组
/// </summary>
public string TransferLibFromLocationGroup { get; set; }
/// <summary>
/// 库移来源ERP库位
/// </summary>
public string TransferLibFromLocationErpCode { get; set; }
/// <summary>
/// 库移来源仓库
/// </summary>
public string TransferLibFromWarehouseCode { get; set; }
/// <summary>
/// 库移来源数量
/// </summary>
public decimal TransferLibFromQty { get; set; }
#endregion
#region 库移目标
/// <summary>
/// 库移目标托标签
/// </summary>
public string TransferLibToContainerCode { get; set; }
/// <summary>
/// 库移目标箱标签
/// </summary>
public string TransferLibToPackingCode { get; set; }
/// <summary>
/// 库移目标批次供应商批次
/// </summary>
public string TransferLibToSupplierBatch { get; set; }
/// <summary>
/// 库移目标批次到货时间
/// </summary>
public DateTime TransferLibToArriveDate { get; set; }
/// <summary>
/// 库移目标批次生产时间
/// </summary>
public DateTime TransferLibToProduceDate { get; set; }
/// <summary>
/// 库移目标批次过期时间
/// </summary>
public DateTime TransferLibToExpireDate { get; set; }
/// <summary>
/// 库移目标批次排序
/// </summary>
public string TransferLibToLot { get; set; }
/// <summary>
/// 库移目标库位
/// </summary>
public string TransferLibToLocationCode { get; set; }
/// <summary>
/// 库移目标库区
/// </summary>
public string TransferLibToLocationArea { get; set; }
/// <summary>
/// 库移目标库位组
/// </summary>
public string TransferLibToLocationGroup { get; set; }
/// <summary>
/// 库移目标ERP库位
/// </summary>
public string TransferLibToLocationErpCode { get; set; }
/// <summary>
/// 库移目标仓库
/// </summary>
public string TransferLibToWarehouseCode { get; set; }
/// <summary>
/// 库移目标数量
/// </summary>
public decimal TransferLibToQty { get; set; }
#endregion
#region 实际来源
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledFromContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledFromPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledFromSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledFromArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledFromProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledFromExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledFromLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledFromLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledFromLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledFromLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledFromLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledFromWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledFromQty { get; set; }
#endregion
#region 实际目标
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledToContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledToPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledToSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledToArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledToProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledToExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledToLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledToLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledToLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledToLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledToLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledToWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledToQty { get; set; }
#endregion
} }

6
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNote.cs

@ -18,12 +18,6 @@ public class CoatingIssueNote : SfsStoreAggregateRootBase<CoatingIssueNoteDetail
[IgnoreUpdate] [IgnoreUpdate]
public string JobNumber { get; set; } public string JobNumber { get; set; }
/// <summary>
/// 车间
/// </summary>
[IgnoreUpdate]
public string Workshop { get; set; }
/// <summary> /// <summary>
/// 明细列表 /// 明细列表
/// </summary> /// </summary>

499
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDetail.cs

@ -1,44 +1,519 @@
using System; using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes; namespace Win_in.Sfs.Wms.Store.Domain;
public class CoatingIssueNoteDetail : SfsStoreRecommendFromDetailWithFromToEntityBase public class CoatingIssueNoteDetail : SfsStoreDetailEntityBase
{ {
#region 库存基础信息
/// <summary> /// <summary>
/// 发料时间 /// 物品代码
/// </summary> /// </summary>
public DateTime IssueTime { get; set; } public string ItemCode { get; set; }
/// <summary> /// <summary>
/// 过期时间 /// 物品名称
/// </summary> /// </summary>
public DateTime ExpiredTime { get; set; } public string ItemName { get; set; }
/// <summary> /// <summary>
/// 生产线 /// 物品描述1
/// </summary> /// </summary>
public string ProdLine { get; set; } public string ItemDesc1 { get; set; }
/// <summary>
/// 物品描述2
/// </summary>
public string ItemDesc2 { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal StdPackQty { get; set; }
/// <summary>
/// 库存状态
/// </summary>
public EnumInventoryStatus Status { get; set; }
/// <summary>
/// 计量单位
/// </summary>
public string Uom { get; set; }
#endregion
#region 请求信息
/// <summary>
/// 请求库位
/// </summary>
public string RequestLocationCode { get; set; }
/// <summary>
/// 到库区
/// </summary>
public string RequestLocationArea { get; set; }
/// <summary>
/// 到库位组
/// </summary>
public string RequestLocationGroup { get; set; }
/// <summary>
/// 到ERP库位
/// </summary>
public string RequestLocationErpCode { get; set; }
/// <summary> /// <summary>
/// 工作中心 /// 到仓库
/// </summary> /// </summary>
public string WorkStation { get; set; } public string RequestWarehouseCode { get; set; }
/// <summary> /// <summary>
/// 在途库库位 /// 在途库库位
/// </summary> /// </summary>
public string OnTheWayLocationCode { get; set; } public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 生产线
/// </summary>
public string ProdLine { get; set; }
/// <summary> /// <summary>
/// 位置码 /// 位置码
/// </summary> /// </summary>
public string PositionCode { get; set; } public string PositionCode { get; set; }
/// <summary> /// <summary>
/// 推荐类型 /// 推荐类型
/// </summary> /// </summary>
public EnumRecommendType RecommendType { get; set; } public EnumRecommendType RecommendType { get; set; }
/// <summary>
/// 需求数量
/// </summary>
public decimal RequestQty { get; set; }
#endregion
#region 推荐来源
/// <summary>
/// 推荐来源托标签
/// </summary>
public string RecommendFromContainerCode { get; set; }
/// <summary>
/// 推荐来源箱标签
/// </summary>
public string RecommendFromPackingCode { get; set; }
/// <summary>
/// 推荐来源批次供应商批次
/// </summary>
public string RecommendFromSupplierBatch { get; set; }
/// <summary>
/// 推荐来源批次到货时间
/// </summary>
public DateTime RecommendFromArriveDate { get; set; }
/// <summary>
/// 推荐来源批次生产时间
/// </summary>
public DateTime RecommendFromProduceDate { get; set; }
/// <summary>
/// 推荐来源批次过期时间
/// </summary>
public DateTime RecommendFromExpireDate { get; set; }
/// <summary>
/// 推荐来源批次排序
/// </summary>
public string RecommendFromLot { get; set; }
/// <summary>
/// 推荐来源库位
/// </summary>
public string RecommendFromLocationCode { get; set; }
/// <summary>
/// 推荐来源库区
/// </summary>
public string RecommendFromLocationArea { get; set; }
/// <summary>
/// 推荐来源库位组
/// </summary>
public string RecommendFromLocationGroup { get; set; }
/// <summary>
/// 推荐来源ERP库位
/// </summary>
public string RecommendFromLocationErpCode { get; set; }
/// <summary>
/// 推荐来源仓库
/// </summary>
public string RecommendFromWarehouseCode { get; set; }
/// <summary>
/// 推荐来源数量
/// </summary>
public decimal RecommendFromQty { get; set; }
#endregion
#region 推荐目标
/// <summary>
/// 推荐目标托标签
/// </summary>
public string RecommendToContainerCode { get; set; }
/// <summary>
/// 推荐目标箱标签
/// </summary>
public string RecommendToPackingCode { get; set; }
/// <summary>
/// 推荐目标批次供应商批次
/// </summary>
public string RecommendToSupplierBatch { get; set; }
/// <summary>
/// 推荐目标批次到货时间
/// </summary>
public DateTime RecommendToArriveDate { get; set; }
/// <summary>
/// 推荐目标批次生产时间
/// </summary>
public DateTime RecommendToProduceDate { get; set; }
/// <summary>
/// 推荐目标批次过期时间
/// </summary>
public DateTime RecommendToExpireDate { get; set; }
/// <summary>
/// 推荐目标批次排序
/// </summary>
public string RecommendToLot { get; set; }
/// <summary>
/// 推荐目标库位
/// </summary>
public string RecommendToLocationCode { get; set; }
/// <summary>
/// 推荐目标库区
/// </summary>
public string RecommendToLocationArea { get; set; }
/// <summary>
/// 推荐目标库位组
/// </summary>
public string RecommendToLocationGroup { get; set; }
/// <summary>
/// 推荐目标ERP库位
/// </summary>
public string RecommendToLocationErpCode { get; set; }
/// <summary>
/// 推荐目标仓库
/// </summary>
public string RecommendToWarehouseCode { get; set; }
/// <summary>
/// 推荐目标数量
/// </summary>
public decimal RecommendToQty { get; set; }
#endregion
#region 库移来源
/// <summary>
/// 库移来源托标签
/// </summary>
public string TransferLibFromContainerCode { get; set; }
/// <summary>
/// 库移来源箱标签
/// </summary>
public string TransferLibFromPackingCode { get; set; }
/// <summary>
/// 库移来源批次供应商批次
/// </summary>
public string TransferLibFromSupplierBatch { get; set; }
/// <summary>
/// 库移来源批次到货时间
/// </summary>
public DateTime TransferLibFromArriveDate { get; set; }
/// <summary>
/// 库移来源批次生产时间
/// </summary>
public DateTime TransferLibFromProduceDate { get; set; }
/// <summary>
/// 库移来源批次过期时间
/// </summary>
public DateTime TransferLibFromExpireDate { get; set; }
/// <summary>
/// 库移来源批次排序
/// </summary>
public string TransferLibFromLot { get; set; }
/// <summary>
/// 库移来源库位
/// </summary>
public string TransferLibFromLocationCode { get; set; }
/// <summary>
/// 库移来源库区
/// </summary>
public string TransferLibFromLocationArea { get; set; }
/// <summary>
/// 库移来源库位组
/// </summary>
public string TransferLibFromLocationGroup { get; set; }
/// <summary>
/// 库移来源ERP库位
/// </summary>
public string TransferLibFromLocationErpCode { get; set; }
/// <summary>
/// 库移来源仓库
/// </summary>
public string TransferLibFromWarehouseCode { get; set; }
/// <summary>
/// 库移来源数量
/// </summary>
public decimal TransferLibFromQty { get; set; }
#endregion
#region 库移目标
/// <summary>
/// 库移目标托标签
/// </summary>
public string TransferLibToContainerCode { get; set; }
/// <summary>
/// 库移目标箱标签
/// </summary>
public string TransferLibToPackingCode { get; set; }
/// <summary>
/// 库移目标批次供应商批次
/// </summary>
public string TransferLibToSupplierBatch { get; set; }
/// <summary>
/// 库移目标批次到货时间
/// </summary>
public DateTime TransferLibToArriveDate { get; set; }
/// <summary>
/// 库移目标批次生产时间
/// </summary>
public DateTime TransferLibToProduceDate { get; set; }
/// <summary>
/// 库移目标批次过期时间
/// </summary>
public DateTime TransferLibToExpireDate { get; set; }
/// <summary>
/// 库移目标批次排序
/// </summary>
public string TransferLibToLot { get; set; }
/// <summary>
/// 库移目标库位
/// </summary>
public string TransferLibToLocationCode { get; set; }
/// <summary>
/// 库移目标库区
/// </summary>
public string TransferLibToLocationArea { get; set; }
/// <summary>
/// 库移目标库位组
/// </summary>
public string TransferLibToLocationGroup { get; set; }
/// <summary>
/// 库移目标ERP库位
/// </summary>
public string TransferLibToLocationErpCode { get; set; }
/// <summary>
/// 库移目标仓库
/// </summary>
public string TransferLibToWarehouseCode { get; set; }
/// <summary>
/// 库移目标数量
/// </summary>
public decimal TransferLibToQty { get; set; }
#endregion
#region 实际来源
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledFromContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledFromPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledFromSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledFromArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledFromProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledFromExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledFromLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledFromLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledFromLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledFromLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledFromLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledFromWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledFromQty { get; set; }
#endregion
#region 实际目标
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledToContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledToPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledToSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledToArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledToProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledToExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledToLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledToLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledToLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledToLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledToLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledToWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledToQty { get; set; }
#endregion
} }

4
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleRequests/AssembleRequest.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequests.cs

@ -7,7 +7,7 @@ namespace Win_in.Sfs.Wms.Store.Domain;
/// <summary> /// <summary>
/// 装配叫料申请 /// 装配叫料申请
/// </summary> /// </summary>
public class AssembleRequest : SfsStoreRequestAggregateRootBase<AssembleRequestDetail> public class AssembleIssueRequests : SfsStoreRequestAggregateRootBase<AssembleIssueRequestsDetail>
{ {
/// <summary> /// <summary>
/// 叫料类型 /// 叫料类型
@ -25,5 +25,5 @@ public class AssembleRequest : SfsStoreRequestAggregateRootBase<AssembleRequestD
/// 明细列表 /// 明细列表
/// </summary> /// </summary>
[IgnoreUpdate] [IgnoreUpdate]
public override List<AssembleRequestDetail> Details { get; set; } = new List<AssembleRequestDetail>(); public override List<AssembleIssueRequestsDetail> Details { get; set; } = new List<AssembleIssueRequestsDetail>();
} }

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleRequests/AssembleRequestDetail.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsDetail.cs

@ -9,7 +9,7 @@ namespace Win_in.Sfs.Wms.Store.Domain;
/// <summary> /// <summary>
/// 装配叫料申请明细 /// 装配叫料申请明细
/// </summary> /// </summary>
public class AssembleRequestDetail : SfsStoreDetailWithQtyEntityBase, IHasToLocation public class AssembleIssueRequestsDetail : SfsStoreDetailWithQtyEntityBase, IHasToLocation
{ {
#region 目标库位信息 #region 目标库位信息

20
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleRequests/AssembleRequestManager.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsManager.cs

@ -9,15 +9,15 @@ using static Win_in.Sfs.Wms.Store.Domain.Shared.StoreSettings;
namespace Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Domain;
public class AssembleRequestManager public class AssembleIssueRequestsManager
: SfsStoreRequestManagerBase<AssembleRequest, AssembleRequestDetail> : SfsStoreRequestManagerBase<AssembleIssueRequests, AssembleIssueRequestsDetail>
, IAssembleRequestManager , IAssembleIssueRequestsManager
{ {
private readonly IAssembleRequestRepository _repository; private readonly IAssembleIssueRequestsRepository _repository;
public AssembleRequestManager( public AssembleIssueRequestsManager(
IAssembleRequestRepository repository IAssembleIssueRequestsRepository repository
) : base(repository) ) : base(repository)
{ {
@ -34,14 +34,14 @@ public class AssembleRequestManager
/// </summary> /// </summary>
/// <param name="entity"></param> /// <param name="entity"></param>
/// <returns></returns> /// <returns></returns>
public virtual async Task<AssembleRequest> CreateBynNumberAsync(AssembleRequest entity) public virtual async Task<AssembleIssueRequests> CreateByNumberAsync(AssembleIssueRequests entity)
{ {
var number = string.IsNullOrEmpty(entity.Number) ? await GenerateNumberAsync(nameof(AssembleRequest), entity.ActiveDate).ConfigureAwait(false) : entity.Number; var number = string.IsNullOrEmpty(entity.Number) ? await GenerateNumberAsync(nameof(AssembleIssueRequests), entity.ActiveDate).ConfigureAwait(false) : entity.Number;
entity.SetIdAndNumberWithDetails(GuidGenerator, number); entity.SetIdAndNumberWithDetails(GuidGenerator, number);
entity.Submit(); entity.Submit();
entity.Agree(); entity.Agree();
entity.RequestStatus = EnumRequestStatus.Partial; entity.RequestStatus = EnumRequestStatus.Partial;
await LocalEventBus.PublishAsync(new SfsHandledEntityEventData<AssembleRequest>(entity), false) await LocalEventBus.PublishAsync(new SfsHandledEntityEventData<AssembleIssueRequests>(entity), false)
.ConfigureAwait(false); .ConfigureAwait(false);
await _repository.InsertAsync(entity).ConfigureAwait(false); await _repository.InsertAsync(entity).ConfigureAwait(false);
return entity; return entity;
@ -63,7 +63,7 @@ public class AssembleRequestManager
/// <summary> /// <summary>
/// 执行导入 /// 执行导入
/// </summary> /// </summary>
public virtual async Task ImportDataAsync(List<AssembleRequest> mergeEntities, List<AssembleRequest> deleteEntities = null) public virtual async Task ImportDataAsync(List<AssembleIssueRequests> mergeEntities, List<AssembleIssueRequests> deleteEntities = null)
{ {
if (deleteEntities != null && deleteEntities.Count > 0) if (deleteEntities != null && deleteEntities.Count > 0)
{ {

14
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/IAssembleIssueRequestsManager.cs

@ -0,0 +1,14 @@
using System.Threading.Tasks;
namespace Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Shared.Domain;
public interface IAssembleIssueRequestsManager : ISfsStoreRequestManager<AssembleIssueRequests, AssembleIssueRequestsDetail>,
IBulkImportService<AssembleIssueRequests>
{
Task CompleteAsync(string number);
Task<AssembleIssueRequests> CreateByNumberAsync(AssembleIssueRequests entity);
}

4
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleRequests/IAssembleRequestRepository.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/IAssembleIssueRequestsRepository.cs

@ -2,8 +2,8 @@ using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Domain;
public interface IAssembleRequestRepository : ISfsStoreRepositoryBase<AssembleRequest>, public interface IAssembleIssueRequestsRepository : ISfsStoreRepositoryBase<AssembleIssueRequests>,
ISfsBulkRepositoryBase<AssembleRequest> ISfsBulkRepositoryBase<AssembleIssueRequests>
{ {
} }

13
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleRequests/IAssembleRequestManager.cs

@ -1,13 +0,0 @@
using System.Threading.Tasks;
namespace Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Shared.Domain;
public interface IAssembleRequestManager : ISfsStoreRequestManager<AssembleRequest, AssembleRequestDetail>,
IBulkImportService<AssembleRequest>
{
Task CompleteAsync(string number);
Task<AssembleRequest> CreateBynNumberAsync(AssembleRequest entity);
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/CoatingMaterialRequests/CoatingMaterialRequestManager.cs

@ -32,7 +32,7 @@ public class CoatingMaterialRequestManager
/// </summary> /// </summary>
/// <param name="entity"></param> /// <param name="entity"></param>
/// <returns></returns> /// <returns></returns>
public virtual async Task<CoatingMaterialRequest> CreateBynNumberAsync(CoatingMaterialRequest entity) public virtual async Task<CoatingMaterialRequest> CreateByNumberAsync(CoatingMaterialRequest entity)
{ {
var number = string.IsNullOrEmpty(entity.Number) ? await GenerateNumberAsync(nameof(CoatingMaterialRequest), entity.ActiveDate).ConfigureAwait(false) : entity.Number; var number = string.IsNullOrEmpty(entity.Number) ? await GenerateNumberAsync(nameof(CoatingMaterialRequest), entity.ActiveDate).ConfigureAwait(false) : entity.Number;
entity.SetIdAndNumberWithDetails(GuidGenerator, number); entity.SetIdAndNumberWithDetails(GuidGenerator, number);

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/CoatingMaterialRequests/ICoatingMaterialRequestManager.cs

@ -10,5 +10,5 @@ public interface ICoatingMaterialRequestManager : ISfsStoreRequestManager<Coatin
{ {
Task CompleteAsync(string number); Task CompleteAsync(string number);
Task<CoatingMaterialRequest> CreateBynNumberAsync(CoatingMaterialRequest entity); Task<CoatingMaterialRequest> CreateByNumberAsync(CoatingMaterialRequest entity);
} }

0
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionRequests/IInjectionRequestManager.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionIssueRequests/IInjectionRequestManager.cs

0
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionRequests/IInjectionRequestRepository.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionIssueRequests/IInjectionRequestRepository.cs

0
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionRequests/InjectionRequest.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionIssueRequests/InjectionRequest.cs

0
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionRequests/InjectionRequestDetail.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionIssueRequests/InjectionRequestDetail.cs

0
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionRequests/InjectionRequestManager.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionIssueRequests/InjectionRequestManager.cs

6
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/ThirdLocationRequests/ThirdLocationRequestManager.cs

@ -14,15 +14,15 @@ public class ThirdLocationRequestManager
, IThirdLocationRequestManager , IThirdLocationRequestManager
{ {
private readonly IThirdLocationRequestRepository _repository; private readonly IThirdLocationRequestRepository _repository;
private readonly IIssueJobRepository _issueJobRepository;
public ThirdLocationRequestManager( public ThirdLocationRequestManager(
IThirdLocationRequestRepository repository IThirdLocationRequestRepository repository
, IIssueJobRepository issueJobRepository
) : base(repository) ) : base(repository)
{ {
_repository = repository; _repository = repository;
_issueJobRepository = issueJobRepository;
} }

31
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/ChassisOperationSequence/ChassisOperationSequenceDbContextModelCreatingExtensions.cs

@ -0,0 +1,31 @@
using Microsoft.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.Modeling;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Equipments;
namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore;
public static class ChassisOperationSequenceDbContextModelCreatingExtensions
{
public static void ConfigureChassisOperationSequence(this ModelBuilder builder, StoreModelBuilderConfigurationOptions options)
{
builder.Entity<Domain.ChassisOperationSequence>(b =>
{
//Configure table & schema name
b.ToTable(options.TablePrefix + nameof(ChassisOperationSequence), options.Schema);
//Configure ABP properties
b.ConfigureByConvention();
//Configure Sfs base properties
b.ConfigureSfsStoreBase();
b.Property(q => q.SortNumber).IsRequired();
b.Property(q => q.ChassisOperationSequenceNumber).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength).IsRequired();
b.Property(q => q.Number).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength).IsRequired();
b.HasIndex(q => q.ChassisOperationSequenceNumber).IsUnique();
b.HasIndex(q => q.SortNumber).IsUnique();
b.HasIndex(q => q.Number).IsUnique();
});
}
}

18
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/ChassisOperationSequence/ChassisOperationSequenceEfCoreRepository.cs

@ -0,0 +1,18 @@
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Equipments;
namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore;
public class ChassisOperationSequenceEfCoreRepository : SfsStoreEfCoreRepositoryBase<StoreDbContext, Domain.ChassisOperationSequence>, IChassisOperationSequenceRepository, ISfsBulkRepositoryBase<Domain.ChassisOperationSequence>
{
public ChassisOperationSequenceEfCoreRepository(IDbContextProvider<StoreDbContext> dbContextProvider) : base(dbContextProvider)
{
}
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/IStoreDbContext.cs

@ -22,7 +22,7 @@ public interface IStoreDbContext : IEfCoreDbContext
public DbSet<ProductReceiptRequest> ProductReceiptRequests { get; } public DbSet<ProductReceiptRequest> ProductReceiptRequests { get; }
public DbSet<MaterialRequest> MaterialRequests { get; } public DbSet<MaterialRequest> MaterialRequests { get; }
public DbSet<InjectionRequest> InjectionRequests { get; } public DbSet<InjectionRequest> InjectionRequests { get; }
public DbSet<AssembleRequest> AssembleRequests { get; } public DbSet<AssembleIssueRequests> AssembleIssueRequests { get; }
public DbSet<ThirdLocationRequest> ThirdLocationRequests { get; } public DbSet<ThirdLocationRequest> ThirdLocationRequests { get; }
public DbSet<ContainerRequest> ContainerRequests { get; } public DbSet<ContainerRequest> ContainerRequests { get; }
public DbSet<DeliverRequest> DeliverRequests { get; } public DbSet<DeliverRequest> DeliverRequests { get; }

21
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/AssembleJobs/AssembleJobDbContextModelCreatingExtensions.cs

@ -23,8 +23,9 @@ public static class AssembleJobDbContextModelCreatingExtensions
//Properties //Properties
b.Property(q => q.RequestType).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.RequestType).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.AssembleRequestNumber).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.AssembleRequestNumber).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.Workshop).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.JobType).HasConversion<string>();
b.Property(q => q.JobStatus).HasConversion<string>();
//Relations //Relations
b.HasMany(q => q.Details).WithOne().HasForeignKey(d => d.MasterID).IsRequired(); b.HasMany(q => q.Details).WithOne().HasForeignKey(d => d.MasterID).IsRequired();
//Indexes //Indexes
@ -40,25 +41,17 @@ public static class AssembleJobDbContextModelCreatingExtensions
//Configure Sfs base properties //Configure Sfs base properties
b.ConfigureSfsBase(); b.ConfigureSfsBase();
//Configure Job base properties //Configure Job base properties
b.ConfigureJobRecommendFromDetail(); //b.ConfigureJobRecommendFromDetail();
//Properties //Properties
b.Property(q => q.ExpiredTime).IsRequired();
b.Property(q => q.ToLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ToLocationErpCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ToWarehouseCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ToLocationArea).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ToLocationGroup).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.RequestLocationCode).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.RequestLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.WorkStation).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.Operation).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.DistributionType).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
b.Property(q => q.TruncType).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
b.Property(q => q.PlannedSplitRule).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
b.Property(q => q.OnTheWayLocationCode).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.OnTheWayLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.PositionCode).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.PositionCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.OnTheWayLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.PositionCode).HasMaxLength(SfsPropertyConst.CodeLength).IsRequired(false);
b.Property(q => q.RecommendType).HasMaxLength(SfsPropertyConst.CodeLength).HasConversion<string>(); b.Property(q => q.RecommendType).HasMaxLength(SfsPropertyConst.CodeLength).HasConversion<string>();
b.Property(q => q.Status).IsRequired().HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
//Relations //Relations
//None //None

21
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/CoatingIssueJob/CoatingIssueJobDbContextModelCreatingExtensions.cs

@ -24,8 +24,9 @@ public static class CoatingIssueJobDbContextModelCreatingExtensions
//Properties //Properties
b.Property(q => q.RequestType).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.RequestType).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.MaterialRequestNumber).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.MaterialRequestNumber).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.Workshop).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.JobType).HasConversion<string>();
b.Property(q => q.JobStatus).HasConversion<string>();
//Relations //Relations
b.HasMany(q => q.Details).WithOne().HasForeignKey(d => d.MasterID).IsRequired(); b.HasMany(q => q.Details).WithOne().HasForeignKey(d => d.MasterID).IsRequired();
//Indexes //Indexes
@ -41,25 +42,17 @@ public static class CoatingIssueJobDbContextModelCreatingExtensions
//Configure Sfs base properties //Configure Sfs base properties
b.ConfigureSfsBase(); b.ConfigureSfsBase();
//Configure Job base properties //Configure Job base properties
b.ConfigureJobRecommendFromDetail(); //b.ConfigureJobRecommendFromDetail();
//Properties //Properties
b.Property(q => q.ExpiredTime).IsRequired();
b.Property(q => q.ToLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ToLocationErpCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ToWarehouseCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ToLocationArea).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ToLocationGroup).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.RequestLocationCode).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.RequestLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.WorkStation).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.OnTheWayLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.Operation).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.PositionCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.DistributionType).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
b.Property(q => q.TruncType).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
b.Property(q => q.PlannedSplitRule).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
b.Property(q => q.OnTheWayLocationCode).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.OnTheWayLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.PositionCode).HasMaxLength(SfsPropertyConst.CodeLength).IsRequired(false); b.Property(q => q.PositionCode).HasMaxLength(SfsPropertyConst.CodeLength).IsRequired(false);
b.Property(q => q.RecommendType).HasMaxLength(SfsPropertyConst.CodeLength).HasConversion<string>(); b.Property(q => q.RecommendType).HasMaxLength(SfsPropertyConst.CodeLength).HasConversion<string>();
b.Property(q => q.Status).IsRequired().HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
//Relations //Relations
//None //None

16
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403054940_Update_InjectionRequest.Designer.cs

@ -41,7 +41,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasMaxLength(64) .HasMaxLength(64)
.HasColumnType("nvarchar(64)"); .HasColumnType("nvarchar(64)");
b.Property<string>("AssembleRequestNumber") b.Property<string>("AssembleIssueRequestsNumber")
.HasMaxLength(64) .HasMaxLength(64)
.HasColumnType("nvarchar(64)"); .HasColumnType("nvarchar(64)");
@ -840,7 +840,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.ToTable("Store_AssembleNoteDetail", (string)null); b.ToTable("Store_AssembleNoteDetail", (string)null);
}); });
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b => modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{ {
b.Property<Guid>("Id") b.Property<Guid>("Id")
.HasColumnType("uniqueidentifier"); .HasColumnType("uniqueidentifier");
@ -928,10 +928,10 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number") b.HasIndex("Number")
.IsUnique(); .IsUnique();
b.ToTable("Store_AssembleRequest", (string)null); b.ToTable("Store_AssembleIssueRequests", (string)null);
}); });
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b => modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{ {
b.Property<Guid>("Id") b.Property<Guid>("Id")
.HasColumnType("uniqueidentifier"); .HasColumnType("uniqueidentifier");
@ -1075,7 +1075,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number", "ItemCode", "ToLocationCode") b.HasIndex("Number", "ItemCode", "ToLocationCode")
.IsUnique(); .IsUnique();
b.ToTable("Store_AssembleRequestDetail", (string)null); b.ToTable("Store_AssembleIssueRequestsDetail", (string)null);
}); });
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.BackFlushNote", b => modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.BackFlushNote", b =>
@ -26388,9 +26388,9 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.IsRequired(); .IsRequired();
}); });
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b => modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{ {
b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", null) b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", null)
.WithMany("Details") .WithMany("Details")
.HasForeignKey("MasterID") .HasForeignKey("MasterID")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
@ -27199,7 +27199,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Navigation("Details"); b.Navigation("Details");
}); });
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b => modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{ {
b.Navigation("Details"); b.Navigation("Details");
}); });

34
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403054940_Update_InjectionRequest.cs

@ -47,7 +47,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
RequestType = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true), RequestType = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
ProdLine = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true), ProdLine = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
AssembleRequestNumber = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true), AssembleIssueRequestsNumber = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
Workshop = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true), Workshop = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
UseOnTheWayLocation = table.Column<bool>(type: "bit", nullable: false), UseOnTheWayLocation = table.Column<bool>(type: "bit", nullable: false),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true),
@ -111,7 +111,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
}); });
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "Store_AssembleRequest", name: "Store_AssembleIssueRequests",
columns: table => new columns: table => new
{ {
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
@ -138,7 +138,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
}, },
constraints: table => constraints: table =>
{ {
table.PrimaryKey("PK_Store_AssembleRequest", x => x.Id); table.PrimaryKey("PK_Store_AssembleIssueRequests", x => x.Id);
}); });
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
@ -331,7 +331,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
}); });
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "Store_AssembleRequestDetail", name: "Store_AssembleIssueRequestsDetail",
columns: table => new columns: table => new
{ {
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
@ -367,11 +367,11 @@ namespace Win_in.Sfs.Wms.Store.Migrations
}, },
constraints: table => constraints: table =>
{ {
table.PrimaryKey("PK_Store_AssembleRequestDetail", x => x.Id); table.PrimaryKey("PK_Store_AssembleIssueRequestsDetail", x => x.Id);
table.ForeignKey( table.ForeignKey(
name: "FK_Store_AssembleRequestDetail_Store_AssembleRequest_MasterID", name: "FK_Store_AssembleIssueRequestsDetail_Store_AssembleIssueRequests_MasterID",
column: x => x.MasterID, column: x => x.MasterID,
principalTable: "Store_AssembleRequest", principalTable: "Store_AssembleIssueRequests",
principalColumn: "Id", principalColumn: "Id",
onDelete: ReferentialAction.Cascade); onDelete: ReferentialAction.Cascade);
}); });
@ -466,24 +466,24 @@ namespace Win_in.Sfs.Wms.Store.Migrations
filter: "[FromPackingCode] IS NOT NULL"); filter: "[FromPackingCode] IS NOT NULL");
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_Store_AssembleRequest_Number", name: "IX_Store_AssembleIssueRequests_Number",
table: "Store_AssembleRequest", table: "Store_AssembleIssueRequests",
column: "Number", column: "Number",
unique: true); unique: true);
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_Store_AssembleRequestDetail_ItemCode", name: "IX_Store_AssembleIssueRequestsDetail_ItemCode",
table: "Store_AssembleRequestDetail", table: "Store_AssembleIssueRequestsDetail",
column: "ItemCode"); column: "ItemCode");
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_Store_AssembleRequestDetail_MasterID", name: "IX_Store_AssembleIssueRequestsDetail_MasterID",
table: "Store_AssembleRequestDetail", table: "Store_AssembleIssueRequestsDetail",
column: "MasterID"); column: "MasterID");
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_Store_AssembleRequestDetail_Number_ItemCode_ToLocationCode", name: "IX_Store_AssembleIssueRequestsDetail_Number_ItemCode_ToLocationCode",
table: "Store_AssembleRequestDetail", table: "Store_AssembleIssueRequestsDetail",
columns: new[] { "Number", "ItemCode", "ToLocationCode" }, columns: new[] { "Number", "ItemCode", "ToLocationCode" },
unique: true); unique: true);
@ -515,7 +515,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
name: "Store_AssembleNoteDetail"); name: "Store_AssembleNoteDetail");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Store_AssembleRequestDetail"); name: "Store_AssembleIssueRequestsDetail");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Store_MesNoteDetail"); name: "Store_MesNoteDetail");
@ -527,7 +527,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
name: "Store_AssembleNote"); name: "Store_AssembleNote");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Store_AssembleRequest"); name: "Store_AssembleIssueRequests");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Store_MesNote"); name: "Store_MesNote");

16
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403071320_transferLib_3temp.Designer.cs

@ -41,7 +41,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasMaxLength(64) .HasMaxLength(64)
.HasColumnType("nvarchar(64)"); .HasColumnType("nvarchar(64)");
b.Property<string>("AssembleRequestNumber") b.Property<string>("AssembleIssueRequestsNumber")
.HasMaxLength(64) .HasMaxLength(64)
.HasColumnType("nvarchar(64)"); .HasColumnType("nvarchar(64)");
@ -840,7 +840,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.ToTable("Store_AssembleNoteDetail", (string)null); b.ToTable("Store_AssembleNoteDetail", (string)null);
}); });
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b => modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{ {
b.Property<Guid>("Id") b.Property<Guid>("Id")
.HasColumnType("uniqueidentifier"); .HasColumnType("uniqueidentifier");
@ -928,10 +928,10 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number") b.HasIndex("Number")
.IsUnique(); .IsUnique();
b.ToTable("Store_AssembleRequest", (string)null); b.ToTable("Store_AssembleIssueRequests", (string)null);
}); });
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b => modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{ {
b.Property<Guid>("Id") b.Property<Guid>("Id")
.HasColumnType("uniqueidentifier"); .HasColumnType("uniqueidentifier");
@ -1075,7 +1075,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number", "ItemCode", "ToLocationCode") b.HasIndex("Number", "ItemCode", "ToLocationCode")
.IsUnique(); .IsUnique();
b.ToTable("Store_AssembleRequestDetail", (string)null); b.ToTable("Store_AssembleIssueRequestsDetail", (string)null);
}); });
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.BackFlushNote", b => modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.BackFlushNote", b =>
@ -26128,9 +26128,9 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.IsRequired(); .IsRequired();
}); });
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b => modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{ {
b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", null) b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", null)
.WithMany("Details") .WithMany("Details")
.HasForeignKey("MasterID") .HasForeignKey("MasterID")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
@ -26930,7 +26930,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Navigation("Details"); b.Navigation("Details");
}); });
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b => modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{ {
b.Navigation("Details"); b.Navigation("Details");
}); });

34
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403071320_transferLib_3temp.cs

@ -43,7 +43,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
RequestType = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true), RequestType = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
ProdLine = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true), ProdLine = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
AssembleRequestNumber = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true), AssembleIssueRequestsNumber = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
Workshop = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true), Workshop = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
UseOnTheWayLocation = table.Column<bool>(type: "bit", nullable: false), UseOnTheWayLocation = table.Column<bool>(type: "bit", nullable: false),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true),
@ -107,7 +107,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
}); });
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "Store_AssembleRequest", name: "Store_AssembleIssueRequests",
columns: table => new columns: table => new
{ {
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
@ -134,7 +134,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
}, },
constraints: table => constraints: table =>
{ {
table.PrimaryKey("PK_Store_AssembleRequest", x => x.Id); table.PrimaryKey("PK_Store_AssembleIssueRequests", x => x.Id);
}); });
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
@ -302,7 +302,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
}); });
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "Store_AssembleRequestDetail", name: "Store_AssembleIssueRequestsDetail",
columns: table => new columns: table => new
{ {
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
@ -338,11 +338,11 @@ namespace Win_in.Sfs.Wms.Store.Migrations
}, },
constraints: table => constraints: table =>
{ {
table.PrimaryKey("PK_Store_AssembleRequestDetail", x => x.Id); table.PrimaryKey("PK_Store_AssembleIssueRequestsDetail", x => x.Id);
table.ForeignKey( table.ForeignKey(
name: "FK_Store_AssembleRequestDetail_Store_AssembleRequest_MasterID", name: "FK_Store_AssembleIssueRequestsDetail_Store_AssembleIssueRequests_MasterID",
column: x => x.MasterID, column: x => x.MasterID,
principalTable: "Store_AssembleRequest", principalTable: "Store_AssembleIssueRequests",
principalColumn: "Id", principalColumn: "Id",
onDelete: ReferentialAction.Cascade); onDelete: ReferentialAction.Cascade);
}); });
@ -382,24 +382,24 @@ namespace Win_in.Sfs.Wms.Store.Migrations
filter: "[FromPackingCode] IS NOT NULL"); filter: "[FromPackingCode] IS NOT NULL");
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_Store_AssembleRequest_Number", name: "IX_Store_AssembleIssueRequests_Number",
table: "Store_AssembleRequest", table: "Store_AssembleIssueRequests",
column: "Number", column: "Number",
unique: true); unique: true);
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_Store_AssembleRequestDetail_ItemCode", name: "IX_Store_AssembleIssueRequestsDetail_ItemCode",
table: "Store_AssembleRequestDetail", table: "Store_AssembleIssueRequestsDetail",
column: "ItemCode"); column: "ItemCode");
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_Store_AssembleRequestDetail_MasterID", name: "IX_Store_AssembleIssueRequestsDetail_MasterID",
table: "Store_AssembleRequestDetail", table: "Store_AssembleIssueRequestsDetail",
column: "MasterID"); column: "MasterID");
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_Store_AssembleRequestDetail_Number_ItemCode_ToLocationCode", name: "IX_Store_AssembleIssueRequestsDetail_Number_ItemCode_ToLocationCode",
table: "Store_AssembleRequestDetail", table: "Store_AssembleIssueRequestsDetail",
columns: new[] { "Number", "ItemCode", "ToLocationCode" }, columns: new[] { "Number", "ItemCode", "ToLocationCode" },
unique: true); unique: true);
} }
@ -413,7 +413,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
name: "Store_AssembleNoteDetail"); name: "Store_AssembleNoteDetail");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Store_AssembleRequestDetail"); name: "Store_AssembleIssueRequestsDetail");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Job_AssembleJob"); name: "Job_AssembleJob");
@ -422,7 +422,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
name: "Store_AssembleNote"); name: "Store_AssembleNote");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Store_AssembleRequest"); name: "Store_AssembleIssueRequests");
migrationBuilder.DropColumn( migrationBuilder.DropColumn(
name: "JobNumber", name: "JobNumber",

16
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240409090529_Update_InjectionRequest_2024_04_09.Designer.cs

@ -41,7 +41,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasMaxLength(64) .HasMaxLength(64)
.HasColumnType("nvarchar(64)"); .HasColumnType("nvarchar(64)");
b.Property<string>("AssembleRequestNumber") b.Property<string>("AssembleIssueRequestsNumber")
.HasMaxLength(64) .HasMaxLength(64)
.HasColumnType("nvarchar(64)"); .HasColumnType("nvarchar(64)");
@ -840,7 +840,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.ToTable("Store_AssembleNoteDetail", (string)null); b.ToTable("Store_AssembleNoteDetail", (string)null);
}); });
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b => modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{ {
b.Property<Guid>("Id") b.Property<Guid>("Id")
.HasColumnType("uniqueidentifier"); .HasColumnType("uniqueidentifier");
@ -928,10 +928,10 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number") b.HasIndex("Number")
.IsUnique(); .IsUnique();
b.ToTable("Store_AssembleRequest", (string)null); b.ToTable("Store_AssembleIssueRequests", (string)null);
}); });
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b => modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{ {
b.Property<Guid>("Id") b.Property<Guid>("Id")
.HasColumnType("uniqueidentifier"); .HasColumnType("uniqueidentifier");
@ -1075,7 +1075,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number", "ItemCode", "ToLocationCode") b.HasIndex("Number", "ItemCode", "ToLocationCode")
.IsUnique(); .IsUnique();
b.ToTable("Store_AssembleRequestDetail", (string)null); b.ToTable("Store_AssembleIssueRequestsDetail", (string)null);
}); });
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.BackFlushNote", b => modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.BackFlushNote", b =>
@ -28245,9 +28245,9 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.IsRequired(); .IsRequired();
}); });
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b => modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{ {
b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", null) b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", null)
.WithMany("Details") .WithMany("Details")
.HasForeignKey("MasterID") .HasForeignKey("MasterID")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
@ -29110,7 +29110,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Navigation("Details"); b.Navigation("Details");
}); });
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b => modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{ {
b.Navigation("Details"); b.Navigation("Details");
}); });

16
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240412052222_Update_Injection.Designer.cs

@ -41,7 +41,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasMaxLength(64) .HasMaxLength(64)
.HasColumnType("nvarchar(64)"); .HasColumnType("nvarchar(64)");
b.Property<string>("AssembleRequestNumber") b.Property<string>("AssembleIssueRequestsNumber")
.HasMaxLength(64) .HasMaxLength(64)
.HasColumnType("nvarchar(64)"); .HasColumnType("nvarchar(64)");
@ -840,7 +840,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.ToTable("Store_AssembleNoteDetail", (string)null); b.ToTable("Store_AssembleNoteDetail", (string)null);
}); });
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b => modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{ {
b.Property<Guid>("Id") b.Property<Guid>("Id")
.HasColumnType("uniqueidentifier"); .HasColumnType("uniqueidentifier");
@ -928,10 +928,10 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number") b.HasIndex("Number")
.IsUnique(); .IsUnique();
b.ToTable("Store_AssembleRequest", (string)null); b.ToTable("Store_AssembleIssueRequests", (string)null);
}); });
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b => modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{ {
b.Property<Guid>("Id") b.Property<Guid>("Id")
.HasColumnType("uniqueidentifier"); .HasColumnType("uniqueidentifier");
@ -1075,7 +1075,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number", "ItemCode", "ToLocationCode") b.HasIndex("Number", "ItemCode", "ToLocationCode")
.IsUnique(); .IsUnique();
b.ToTable("Store_AssembleRequestDetail", (string)null); b.ToTable("Store_AssembleIssueRequestsDetail", (string)null);
}); });
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.BackFlushNote", b => modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.BackFlushNote", b =>
@ -28333,9 +28333,9 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.IsRequired(); .IsRequired();
}); });
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b => modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{ {
b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", null) b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", null)
.WithMany("Details") .WithMany("Details")
.HasForeignKey("MasterID") .HasForeignKey("MasterID")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
@ -29198,7 +29198,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Navigation("Details"); b.Navigation("Details");
}); });
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b => modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{ {
b.Navigation("Details"); b.Navigation("Details");
}); });

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

Loading…
Cancel
Save