Browse Source

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

dev_DY_CC
lvzb 1 year ago
parent
commit
4bada39222
  1. 1
      WinIn.FasterZ.Wms.Fe/asdf
  2. 0
      WinIn.FasterZ.Wms.Fe/安胖胖目录.txt
  3. 6
      be/Hosts/Wms.Host/Win_in.Sfs.Wms.Store.HttpApi.Host/Properties/PublishProfiles/FolderProfile1.pubxml
  4. 19
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/ThirdLocationJobController.cs
  5. 17
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/IssueNoteController.cs
  6. 64
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/TransferLibNoteController.cs
  7. 7
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ItemContainers/DTOs/ItemContainerDTO.cs
  8. 8
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ItemContainers/Inputs/ItemContainerEditInput.cs
  9. 11
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ItemContainers/Inputs/ItemContainerImportInput.cs
  10. 4
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ItemContainers/ItemContainerAppService.cs
  11. 4
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCodes/PositionCodeAppService.cs
  12. 6
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/ItemContainers/ItemContainer.cs
  13. 4
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/ItemContainers/ItemContainerDbContextModelCreatingExtensions.cs
  14. 6
      be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumRecommendType.cs
  15. 17
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/InjectionJobs/DTOs/InjectionJobDTO.cs
  16. 509
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/InjectionJobs/DTOs/InjectionJobDetailDTO.cs
  17. 11
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/InjectionJobs/IInjectionJobAppService.cs
  18. 519
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/InjectionJobs/Inputs/InjectionJobDetailInput.cs
  19. 14
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/InjectionJobs/Inputs/InjectionJobEditInput.cs
  20. 452
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/TransferLibJobs/DTOs/TransferLibJobDetailDTO.cs
  21. 456
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/TransferLibJobs/Inputs/TransferLibJobDetailInput.cs
  22. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/InjectionNotes/DTOs/InjectionNoteDTO.cs
  23. 513
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/InjectionNotes/DTOs/InjectionNoteDetailDTO.cs
  24. 506
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/InjectionNotes/Inputs/InjectionNoteDetailInput.cs
  25. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/InjectionNotes/Inputs/InjectionNoteEditInput.cs
  26. 452
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferLibNotes/DTOs/TransferLibNoteDetailDTO.cs
  27. 76
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferLibNotes/ITransferLibNoteAppService.cs
  28. 454
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferLibNotes/Inputs/TransferLibNoteDetailInput.cs
  29. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/InjectionRequests/DTOs/InjectionRequestDTO.cs
  30. 13
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/InjectionRequests/Inputs/InjectionRequestDetailInput.cs
  31. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/InjectionRequests/Inputs/InjectionRequestEditInput.cs
  32. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ThirdLocationRequests/DTOs/ThirdLocationRequestDetailDTO.cs
  33. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ThirdLocationRequests/Inputs/ThirdLocationRequestDetailInput.cs
  34. 46
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/TransferLibRequests/DTOs/TransferLibRequestDetailDTO.cs
  35. 46
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/TransferLibRequests/Inputs/TransferLibRequestDetailInput.cs
  36. 217
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/InjectionJobs/InjectionJobAppService.cs
  37. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/TransferLibJobs/TransferLibJobAppService.cs
  38. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferLibNotes/ITransferLibCallback.cs
  39. 393
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferLibNotes/TransferLibNoteAppService.cs
  40. 30
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferLibNotes/TransferLibNoteMapperProfile.cs
  41. 17
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/CoatingMaterialRequests/CoatingMaterialRequestAppService.cs
  42. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/InjectionRequests/InjectionRequestAppService.cs
  43. 3
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/InjectionRequests/InjectionRequestAutoMapperProfile.cs
  44. 17
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/MaterialRequestAppService.cs
  45. 3
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ThirdLocationRequests/ThirdLocationRequestAutoMapperProfile.cs
  46. 90
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/TransferLibRequests/TransferLibRequestAppService.cs
  47. 33
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/TransferLibRequests/TransferLibRequestMapperProfile.cs
  48. 197
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Bases/NewRecommendHandled/NewRecommendFromTo.cs
  49. 148
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Bases/NewRecommendHandled/NewRecommendHandledFromTo.cs
  50. 41
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/InjectionJobs/InjectionJob.cs
  51. 478
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/InjectionJobs/InjectionJobDetail.cs
  52. 70
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/InjectionJobs/InjectionJobManager.cs
  53. 10
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/SfsJobRecommendToDetailEntityBase.cs
  54. 33
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/TransferLibJobs/TransferLibJob.cs
  55. 448
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/TransferLibJobs/TransferLibJobDetail.cs
  56. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/InjectionNotes/InjectionNote.cs
  57. 500
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/InjectionNotes/InjectionNoteDetail.cs
  58. 433
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/TransferLibNotes/TransferLibNoteDetail.cs
  59. 32
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/TransferLibNotes/TransferLibNoteManager.cs
  60. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionRequests/InjectionRequest.cs
  61. 10
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionRequests/InjectionRequestDetail.cs
  62. 5
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/ThirdLocationRequests/ThirdLocationRequestDetail.cs
  63. 77
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/ThirdLocationRequests/ThirdLocationRequestManager.cs
  64. 47
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/TransferLibRequests/TransferLibRequestDetail.cs
  65. 32
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/TransferLibRequests/TransferLibRequestManager.cs
  66. 21
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/InjectionJobs/InjectionJobDbContextModelCreatingExtensions.cs
  67. 29666
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240412052222_Update_Injection.Designer.cs
  68. 2661
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240412052222_Update_Injection.cs
  69. 29756
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240412061448_transferLibV2.Designer.cs
  70. 558
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240412061448_transferLibV2.cs
  71. 738
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/StoreDbContextModelSnapshot.cs
  72. 10
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/InjectionNotes/InjectionNoteDbContextModelCreatingExtensions.cs
  73. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/TransferLibNotes/TransferLibNoteDbContextModelCreatingExtensions.cs
  74. 3
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/MaterialRequests/InjectionRequests/InjectionRequestDbContextModelCreatingExtensions.cs
  75. 3
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/ThirdLocationRequests/ThirdLocationRequestDbContextModelCreatingExtensions.cs
  76. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/TransferLibRequests/TransferLibRequestDbContextModelCreatingExtensions.cs
  77. 55
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/InjectionJobAutoMapperProfile.cs
  78. 31
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Notes/InjectionNoteAutoMapperProfile.cs
  79. 98
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/InjectionRequestAutoMapperProfile.cs
  80. 46
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/TransferLibRequestAutoMapperProfile.cs
  81. 226
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/InjectionJobEventHandler.cs
  82. 5
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/ThirdLocationJobEventHandler.cs
  83. 21
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/TransferLibJobEventHandler.cs
  84. 115
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InjectionRequestEventHandler.cs
  85. 32
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/ThirdLocationRequestEventHandler.cs
  86. 10
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/TransferLibRequestEventHandler.cs
  87. 88
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/InjectionNoteEventHandler.cs
  88. 11
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/ThirdLocationNoteEventHandler.cs

1
WinIn.FasterZ.Wms.Fe/asdf

@ -1 +0,0 @@
asdf

0
WinIn.FasterZ.Wms.Fe/安胖胖目录.txt

6
be/Hosts/Wms.Host/Win_in.Sfs.Wms.Store.HttpApi.Host/Properties/PublishProfiles/FolderProfile1.pubxml

@ -10,8 +10,12 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<PublishProvider>FileSystem</PublishProvider>
<PublishUrl>bin\Release\net6.0\publish\</PublishUrl>
<PublishUrl>D:\发布\WMS\store</PublishUrl>
<WebPublishMethod>FileSystem</WebPublishMethod>
<_TargetId>Folder</_TargetId>
<SiteUrlToLaunchAfterPublish />
<TargetFramework>net6.0</TargetFramework>
<ProjectGuid>488eeada-cfed-4016-9884-7a1dcbe5eb9c</ProjectGuid>
<SelfContained>false</SelfContained>
</PropertyGroup>
</Project>

19
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/ThirdLocationJobController.cs

@ -77,19 +77,9 @@ public class ThirdLocationJobController : AbpController
/// <param name="pageIndex"></param>
/// <returns></returns>
[HttpGet("list")]
public virtual async Task<PagedResultDto<ThirdLocationJobDTO>> GetListAsync(int pageSize, int pageIndex, bool isFinished)
public virtual async Task<PagedResultDto<ThirdLocationJobDTO>> GetListAsync(int pageSize, int pageIndex)
{
var dtos = await _dictApp.GetByCodeAsync("ContainerSpecificationsType").ConfigureAwait(false);
var status = new List<int>();
if (isFinished == true)
{
status.Add((int)EnumJobStatus.Done);
}
else
{
status.Add((int)EnumJobStatus.Open);
}
var status = new List<int>() { (int)EnumJobStatus.Open, (int)EnumJobStatus.Doing };
var jsonStatus = JsonSerializer.Serialize(status);
var request = new SfsJobRequestInputBase
@ -100,10 +90,11 @@ public class ThirdLocationJobController : AbpController
Condition = new Condition
{
Filters = new List<Filter>
{
new(nameof(ThirdLocationJobDTO.JobStatus),jsonStatus,"In")
{
new(nameof(IssueJobDTO.JobStatus),jsonStatus,"In")
}
}
};
var list = await _thirdLocationJobAppService.GetPagedListByFilterAsync(request, true).ConfigureAwait(false);

17
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/IssueNoteController.cs

@ -39,22 +39,7 @@ public class IssueNoteController : AbpController
{
p.ToLot = string.Empty;
p.ToPackingCode = string.Empty;
if(p.PositionCode.Contains('W'))
{
p.RecommendType = EnumRecommendType.W;
}
else if(p.PositionCode.Contains('Q'))
{
p.RecommendType = EnumRecommendType.Q;
}
else if (p.PositionCode.Contains('K'))
{
p.RecommendType = EnumRecommendType.K;
}
else
{
p.RecommendType = EnumRecommendType.None;
}
});

64
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/TransferLibNoteController.cs

@ -120,68 +120,4 @@ public class TransferLibNoteController : AbpController
var result = await _transferLibNoteAppService.GetByNumberAsync(number).ConfigureAwait(false);
return Ok(result);
}
/// <summary>
/// 完成对应的请求
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpPost("complete/{id}")]
public virtual async Task<TransferLibNoteDTO> CompleteAsync(Guid id)
{
var entity = await _transferLibNoteAppService.ConfirmAsync(id).ConfigureAwait(false);
return entity;
}
/// <summary>
/// 库存转移
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("")]
public virtual async Task<TransferLibNoteDTO> Create(TransferLibNoteEditInput input)
{
return await _transferLibNoteAppService.CreateAsync(input).ConfigureAwait(false);
}
/// <summary>
/// 拆箱
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <returns></returns>
[HttpPost("split-packing")]
public async Task<TransferLibNoteDTO> SplitPackingAsync(TransferLibNoteEditInput transferLibNoteEditInput)
{
return await _transferLibNoteAppService.SplitPackingAsync(transferLibNoteEditInput).ConfigureAwait(false);
}
/// <summary>
/// 采购收货拆箱,同时更新、插入PurchaseReceipt任务表、申请表
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
[HttpPost("split-packing-purchase-receipt")]
public async Task<bool> SplitPacking_PurchaseReceiptAsync(TransferLibNoteEditInput transferLibNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInput updateJobDetailInput)
{
var ret = await _transferLibNoteAppService.SplitPacking_PurchaseReceiptAsync(transferLibNoteEditInput, updateJobDetailInput).ConfigureAwait(false);
return ret;
}
/// <summary>
/// 发料拆箱,同时更新、插入Inspect任务表(没有找到申请表//??)
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
[HttpPost("split-packing-issue")]
public async Task<TransferLibNoteDTO> SplitPacking_IssueAsync(TransferLibNoteEditInput transferLibNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInput updateJobDetailInput)
{
var ret = await _transferLibNoteAppService.SplitPacking_IssueAsync(transferLibNoteEditInput, updateJobDetailInput).ConfigureAwait(false);
return ret;
}
}

7
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ItemContainers/DTOs/ItemContainerDTO.cs

@ -20,12 +20,7 @@ public class ItemContainerDTO : SfsBaseDataDTOBase
[Display(Name = "收容器名称")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ContainerName { get; set; }
/// <summary>
/// 收容器类型
/// </summary>
[Display(Name = "收容器类型")]
[StringLength(SfsEfCorePropertyConst.DescLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ContainerType { get; set; }
/// <summary>
/// 物品代码
/// </summary>

8
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ItemContainers/Inputs/ItemContainerEditInput.cs

@ -12,13 +12,7 @@ public class ItemContainerEditInput : SfsBaseDataCreateOrUpdateInputBase
[Display(Name = "收容器名称")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ContainerName { get; set; }
/// <summary>
/// 收容器类型
/// </summary>
[Display(Name = "收容器类型")]
[StringLength(SfsEfCorePropertyConst.DescLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ContainerType { get; set; }
/// <summary>
/// 收容器计量单位

11
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ItemContainers/Inputs/ItemContainerImportInput.cs

@ -22,16 +22,7 @@ public class ItemContainerImportInput : SfsBaseDataImportInputBase
[Display(Name = "收容器名称")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ContainerName { get; set; }
/// <summary>
/// 收容器类型
/// </summary>
[Display(Name = "收容器类型")]
[StringLength(SfsEfCorePropertyConst.DescLength, ErrorMessage = "{0}最多输入{1}个字符")]
[ValueMapping("EA", "EA")]
[ValueMapping("Box", "Box")]
[ValueMapping("Pallet", "Pallet")]
public string ContainerType { get; set; }
/// <summary>
/// 物品编号

4
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ItemContainers/ItemContainerAppService.cs

@ -49,10 +49,10 @@ public class ItemContainerAppService
[UnitOfWork]
public override async Task<ItemContainerDTO> CreateAsync(ItemContainerEditInput input)
{
var existEntity = await _repository.FirstOrDefaultAsync(p=>p.ContainerCode==input.ContainerCode).ConfigureAwait(false);
var existEntity = await _repository.FirstOrDefaultAsync(p=>p.ItemCode == input.ItemCode).ConfigureAwait(false);
if (existEntity != null)
{
throw new UserFriendlyException($"{input.ContainerCode} 已存在");
throw new UserFriendlyException($"物品 {input.ItemCode} 已存在");
}
var itemBasic = await ItemBasicAppService.GetByCodeAsync(input.ItemCode).ConfigureAwait(false);

4
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCodes/PositionCodeAppService.cs

@ -68,9 +68,9 @@ public class PositionCodeAppService
var itemBasic = await ItemBasicAppService.GetByCodeAsync(input.PartCode).ConfigureAwait(false);
Check.NotNull(itemBasic, "物品代码", $"物品 {input.PartCode} 不存在");
//如果类型选择为原料,校验物料号类型必须为原料,器具、KItting 的不用加校验
if (input.Type == EnumRecommendType.W && itemBasic.Type != "10C02")
if (input.Type == EnumRecommendType.W && itemBasic.CanBuy != true)
{
throw new UserFriendlyException($"{input.PartCode} 物料号类型必须为原料");
throw new UserFriendlyException($"{input.PartCode} 物料号类型必须为采购件");
}
input.PartName = itemBasic.Name;
input.PartDesc = itemBasic.Desc1;

6
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/ItemContainers/ItemContainer.cs

@ -17,11 +17,7 @@ public class ItemContainer : SfsBaseDataAggregateRootBase
/// 收容器名称
/// </summary>
public string ContainerName { get; set; }
/// <summary>
/// 收容器类型
/// </summary>
public string ContainerType { get; set; }
/// <summary>
/// 物品代码

4
be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/ItemContainers/ItemContainerDbContextModelCreatingExtensions.cs

@ -24,13 +24,13 @@ public static class ItemContainerDbContextModelCreatingExtensions
b.Property(q => q.ContainerCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ItemCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ContainerName).HasMaxLength(SfsPropertyConst.NameLength);
b.Property(q => q.ContainerType).HasMaxLength(SfsPropertyConst.NameLength);
//Relations
//None
//Indexes
b.HasIndex(q => new { q.ItemCode, q.ContainerCode }).IsUnique();
b.HasIndex(q => new { q.ItemCode }).IsUnique();
});
}
}

6
be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumRecommendType.cs

@ -19,10 +19,10 @@ public enum EnumRecommendType
W = 1,
/// <summary>
/// 器具
/// 半成品
/// </summary>
[Display(Name = "器具")]
Q = 2,
[Display(Name = "半成品")]
B = 2,
/// <summary>
/// kitting区

17
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/InjectionJobs/DTOs/InjectionJobDTO.cs

@ -4,41 +4,34 @@ using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
/// <summary>
/// 注塑发料任务
/// 注塑发料任务
/// </summary>
[Display(Name = "注塑发料任务")]
public class InjectionJobDTO : SfsJobDTOBase<InjectionJobDetailDTO>
{
/// <summary>
/// 叫料请求类型
/// 叫料请求类型
/// </summary>
[Display(Name = "叫料请求类型")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string RequestType { get; set; }
/// <summary>
/// 生产线
/// 生产线
/// </summary>
[Display(Name = "生产线")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ProdLine { get; set; }
/// <summary>
/// 要货单号
/// 要货单号
/// </summary>
[Display(Name = "要货单号")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string InjectionRequestNumber { get; set; }
/// <summary>
/// 车间
/// </summary>
//[Display(Name = "车间")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Workshop { get; set; }
/// <summary>
/// 使用在途库
/// 使用在途库
/// </summary>
[Display(Name = "使用在途库")]
public bool UseOnTheWayLocation { get; set; }

509
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/InjectionJobs/DTOs/InjectionJobDetailDTO.cs

@ -1,112 +1,519 @@
using System;
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;
public class InjectionJobDetailDTO : SfsJobRecommendFromDetailDTOBase, IHasToLocation
public class InjectionJobDetailDTO : SfsDetailDTOBase
{
#region 库存基础信息
/// <summary>
/// 请求库位
/// 物品代码
/// </summary>
[Display(Name = "请求库位")]
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>
public EnumInventoryStatus Status { get; set; }
/// <summary>
/// 到库位
/// 计量单
/// </summary>
[Display(Name = "到库位")]
public string ToLocationCode { get; set; }
public string Uom { get; set; }
#endregion
#region 请求信息
/// <summary>
/// 请求库位
/// </summary>
public string RequestLocationCode { get; set; }
/// <summary>
/// 到库区
/// 到库区
/// </summary>
[Display(Name = "到库区")]
public string ToLocationArea { get; set; }
public string RequestLocationArea { get; set; }
/// <summary>
/// 到库位组
/// 到库位组
/// </summary>
[Display(Name = "到库位组")]
public string ToLocationGroup { get; set; }
public string RequestLocationGroup { get; set; }
/// <summary>
/// 到ERP库位
/// 到ERP库位
/// </summary>
[Display(Name = "到ERP库位")]
public string ToLocationErpCode { get; set; }
public string RequestLocationErpCode { get; set; }
/// <summary>
/// 到仓库
/// 到仓库
/// </summary>
[Display(Name = "到仓库")]
public string ToWarehouseCode { get; set; }
public string RequestWarehouseCode { get; set; }
/// <summary>
/// 在途库库位
/// 在途库库位
/// </summary>
[Display(Name = "在途库库位")]
public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 生产线
/// 生产线
/// </summary>
[Display(Name = "生产线")]
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>
[Display(Name = "工作中心")]
public string WorkStation { get; set; }
public string RecommendFromLocationErpCode { get; set; }
/// <summary>
/// 过期时间
/// 推荐来源仓库
/// </summary>
[Display(Name = "过期时间")]
public DateTime ExpiredTime { get; set; }
public string RecommendFromWarehouseCode { get; set; }
/// <summary>
/// 工序
/// 推荐来源数量
/// </summary>
[Display(Name = "工序")]
public string Operation { get; set; }
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>
[Display(Name = "配送方式")]
public EnumDistributionType DistributionType { get; set; }
public string RecommendToLocationGroup { get; set; }
/// <summary>
/// 取整方式
/// 推荐目标ERP库位
/// </summary>
[Display(Name = "取整方式")]
public EnumTruncType TruncType { get; set; }
public string RecommendToLocationErpCode { get; set; }
/// <summary>
/// 取整后数量
/// 推荐目标仓库
/// </summary>
[Display(Name = "取整后数量")]
public decimal RoundedQty { get; set; }
public string RecommendToWarehouseCode { get; set; }
/// <summary>
/// 计划拆分规则
/// 推荐目标数量
/// </summary>
[Display(Name = "计划拆分规则")]
public EnumPlannedSplitRule PlannedSplitRule { get; set; }
public decimal RecommendToQty { get; set; }
#endregion
#region 库移来源
/// <summary>
/// 计划开始时间
/// 库移来源托标签
/// </summary>
[Display(Name = "计划开始时间")]
public DateTime PlanBeginTime { get; set; }
public string TransferLibFromContainerCode { get; set; }
/// <summary>
/// 每次配送数量
/// 库移来源箱标签
/// </summary>
[Display(Name = "每次配送数量")]
public decimal DeliveryQty { get; set; }
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/InjectionJobs/IInjectionJobAppService.cs

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

519
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/InjectionJobs/Inputs/InjectionJobDetailInput.cs

@ -1,134 +1,519 @@
using System;
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;
public class InjectionJobDetailInput : SfsJobRecommendFromDetailInputBase, IHasToLocation
public class InjectionJobDetailInput : SfsDetailInputBase
{
#region 库存基础信息
/// <summary>
/// 请求库位
/// 物品代码
/// </summary>
[Display(Name = "请求库位")]
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
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>
public EnumInventoryStatus Status { get; set; }
/// <summary>
/// 到库位
/// 计量单
/// </summary>
[Display(Name = "到库位")]
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ToLocationCode { get; set; }
public string Uom { get; set; }
#endregion
#region 请求信息
/// <summary>
/// 请求库位
/// </summary>
public string RequestLocationCode { get; set; }
/// <summary>
/// 到库区
/// 到库区
/// </summary>
[Display(Name = "到库区")]
public string ToLocationArea { get; set; }
public string RequestLocationArea { get; set; }
/// <summary>
/// 到库位组
/// 到库位组
/// </summary>
[Display(Name = "到库位组")]
public string ToLocationGroup { get; set; }
public string RequestLocationGroup { get; set; }
/// <summary>
/// 到ERP库位
/// 到ERP库位
/// </summary>
[Display(Name = "到ERP库位")]
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ToLocationErpCode { get; set; }
public string RequestLocationErpCode { get; set; }
/// <summary>
/// 到仓库
/// 到仓库
/// </summary>
[Display(Name = "到仓库")]
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ToWarehouseCode { get; set; }
public string RequestWarehouseCode { get; set; }
/// <summary>
/// 在途库库位
/// 在途库库位
/// </summary>
[Display(Name = "在途库库位")]
public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 生产线
/// 生产线
/// </summary>
[Display(Name = "生产线")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ProdLine { get; set; }
/// <summary>
/// 工作中心
/// 位置码
/// </summary>
public string PositionCode { get; set; }
/// <summary>
/// 推荐的类型
/// </summary>
[Display(Name = "工作中心")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string WorkStation { get; set; }
public EnumRecommendType RecommendType { get; set; }
/// <summary>
/// 过期时间
/// 需求数量
/// </summary>
[Display(Name = "过期时间")]
[Required(ErrorMessage = "{0}是必填项")]
public DateTime ExpiredTime { get; set; }
public decimal RequestQty { get; set; }
#endregion
#region 推荐来源
/// <summary>
/// 工序
/// 推荐来源托标签
/// </summary>
[Display(Name = "工序")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Operation { get; set; }
public string RecommendFromContainerCode { get; set; }
/// <summary>
/// 配送方式
/// 推荐来源箱标签
/// </summary>
[Display(Name = "配送方式")]
public EnumDistributionType DistributionType { get; set; }
public string RecommendFromPackingCode { get; set; }
/// <summary>
/// 取整方式
/// 推荐来源批次供应商批次
/// </summary>
[Display(Name = "取整方式")]
public EnumTruncType TruncType { get; set; }
public string RecommendFromSupplierBatch { get; set; }
/// <summary>
/// 取整后数量
/// 推荐来源批次到货时间
/// </summary>
[Display(Name = "取整后数量")]
public decimal RoundedQty { get; set; }
public DateTime RecommendFromArriveDate { get; set; }
/// <summary>
/// 计划拆分规则
/// 推荐来源批次生产时间
/// </summary>
[Display(Name = "计划拆分规则")]
public EnumPlannedSplitRule PlannedSplitRule { get; set; }
public DateTime RecommendFromProduceDate { get; set; }
/// <summary>
/// 计划开始时间
/// 推荐来源批次过期时间
/// </summary>
[Display(Name = "计划开始时间")]
public DateTime PlanBeginTime { get; set; }
public DateTime RecommendFromExpireDate { get; set; }
/// <summary>
/// 每次配送数量
/// 推荐来源批次排序
/// </summary>
[Display(Name = "每次配送数量")]
public decimal DeliveryQty { get; set; }
public string RecommendFromLot { get; set; }
/// <summary>
/// 位置码
/// 推荐来源库
/// </summary>
public string PositionCode { get; set; }
public string RecommendFromLocationCode { get; set; }
/// <summary>
/// 推荐类型
/// 推荐来源库区
/// </summary>
public EnumRecommendType RecommendType { get; set; }
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
}

14
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/InjectionJobs/Inputs/InjectionJobEditInput.cs

@ -60,20 +60,6 @@ public class InjectionJobEditInput : SfsJobCreateUpdateInputBase, ISfsJobCreateI
[Required(ErrorMessage = "{0}是必填项")]
public List<InjectionJobDetailInput> Details { get; set; } = new();
/// <summary>
/// 车间
/// </summary>
//[Display(Name = "车间")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Workshop { get; set; }
/// <summary>
/// 生产线
/// </summary>
[Display(Name = "生产线")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ProdLine { get; set; }
/// <summary>
/// 使用在途库
/// </summary>

452
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/TransferLibJobs/DTOs/TransferLibJobDetailDTO.cs

@ -1,53 +1,467 @@
using System;
using System.ComponentModel.DataAnnotations;
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.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
/// <summary>
/// //??TransferLib实体
/// //??TransferLib实体
/// </summary>
public class TransferLibJobDetailDTO : SfsStoreDetailWithFromToDTOBase
public class TransferLibJobDetailDTO : SfsDetailDTOBase
{
/// <summary>
/// 在途库地址
/// </summary>
[Display(Name = "在途库地址")]
public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 原因
/// 原因
/// </summary>
[Display(Name = "原因")]
public string Reason { get; set; }
/// <summary>
/// 执行任务状态
/// 执行任务状态
/// </summary>
public EnumJobStatus JobStatus { get; set; }
#region 回调服务相关
/// <summary>
/// 回调服务名称
/// 回调服务名称
/// </summary>
[Display(Name = "回调服务名称")]
public string CallServerName { get; set; }
/// <summary>
/// 回调业务类型
/// 回调业务类型
/// </summary>
[Display(Name = "回调业务类型")]
public string CallBusinessType { get; set; }
/// <summary>
/// 调用者传入申请单号
/// 调用者传入申请单号
/// </summary>
[Display(Name = "传入申请单号")]
public string CallRequestNumber { get; set; }
/// <summary>
/// 调用者传入任务单号
/// 调用者传入任务单号
/// </summary>
[Display(Name = "传入任务单号")]
public string CallJobNumber { get; set; }
#endregion
#region 库存基础信息
/// <summary>
/// 物品代码
/// </summary>
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>
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>
public string RequestWarehouseCode { get; set; }
/// <summary>
/// 在途库库位
/// </summary>
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 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
#region 开关
//箱码
public bool IsPackingCodeFrom { get; set; }
public bool IsPackingCodeTo { get; set; }
//批次
public bool IsLotFrom { get; set; }
public bool IsLotTo { get; set; }
//零件号
public bool IsItemCodeFrom { get; set; }
public bool IsItemCodeTo { get; set; }
//状态
public bool IsStatusFrom { get; set; }
public bool IsStatusTo { get; set; }
//库位
public bool IsLocationCodeFrom { get; set; }
public bool IsLocationCodeTo { get; set; }
//库位组
public bool IsLocationGroupFrom { get; set; }
public bool IsLocationGroupTo { get; set; }
//区域
public bool IsLocationAreaFrom { get; set; }
public bool IsLocationAreaTo { get; set; }
//储位
public bool IsLocationErpCodeFrom { get; set; }
public bool IsLocationErpCodeTo { get; set; }
//数量
public bool IsQtyFrom { get; set; }
public bool IsQtyTo { get; set; }
#endregion
}

456
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/TransferLibJobs/Inputs/TransferLibJobDetailInput.cs

@ -1,57 +1,467 @@
using System;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Data;
using Win_in.Sfs.Shared.Domain;
using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
/// <summary>
/// //??TransferLib实体
/// //??TransferLib实体
/// </summary>
public class TransferLibJobDetailInput : SfsStoreDetailWithFromToInputBase
public class TransferLibJobDetailInput : SfsStoreCreateOrUpdateInputBase
{
/// <summary>
/// 在途库地址
/// </summary>
[Display(Name = "在途库地址")]
public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 原因
/// 原因
/// </summary>
[Display(Name = "原因")]
[StringLength(SfsEfCorePropertyConst.RemarkLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Reason { get; set; }
/// <summary>
/// 执行任务状态
/// 执行任务状态
/// </summary>
public EnumJobStatus JobStatus { get; set; }
#region 回调服务相关
/// <summary>
/// 回调服务名称
/// 回调服务名称
/// </summary>
[Display(Name = "回调服务名称")]
public string CallServerName { get; set; }
/// <summary>
/// 回调业务类型
/// 回调业务类型
/// </summary>
[Display(Name = "回调业务类型")]
public string CallBusinessType { get; set; }
/// <summary>
/// 调用者传入申请单号
/// 调用者传入申请单号
/// </summary>
[Display(Name = "传入申请单号")]
public string CallRequestNumber { get; set; }
/// <summary>
/// 调用者传入任务单号
/// 调用者传入任务单号
/// </summary>
[Display(Name = "传入任务单号")]
public string CallJobNumber { get; set; }
#endregion
#region 库存基础信息
/// <summary>
/// 物品代码
/// </summary>
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>
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>
public string RequestWarehouseCode { get; set; }
/// <summary>
/// 在途库库位
/// </summary>
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 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
#region 开关
//箱码
public bool IsPackingCodeFrom { get; set; }
public bool IsPackingCodeTo { get; set; }
//批次
public bool IsLotFrom { get; set; }
public bool IsLotTo { get; set; }
//零件号
public bool IsItemCodeFrom { get; set; }
public bool IsItemCodeTo { get; set; }
//状态
public bool IsStatusFrom { get; set; }
public bool IsStatusTo { get; set; }
//库位
public bool IsLocationCodeFrom { get; set; }
public bool IsLocationCodeTo { get; set; }
//库位组
public bool IsLocationGroupFrom { get; set; }
public bool IsLocationGroupTo { get; set; }
//区域
public bool IsLocationAreaFrom { get; set; }
public bool IsLocationAreaTo { get; set; }
//储位
public bool IsLocationErpCodeFrom { get; set; }
public bool IsLocationErpCodeTo { get; set; }
//数量
public bool IsQtyFrom { get; set; }
public bool IsQtyTo { get; set; }
#endregion
}

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

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

513
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/InjectionNotes/DTOs/InjectionNoteDetailDTO.cs

@ -1,42 +1,519 @@
using System;
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;
public class InjectionNoteDetailDTO : SfsStoreRecommendFromDetailWithFromToDTOBase
public class InjectionNoteDetailDTO : SfsDetailDTOBase
{
#region 库存基础信息
/// <summary>
/// 发料时间
/// 物品代码
/// </summary>
[Display(Name = "发料时间")]
public DateTime IssueTime { get; set; }
public string ItemCode { get; set; }
/// <summary>
/// 过期时间
/// 物品名称
/// </summary>
[Display(Name = "过期时间")]
public DateTime ExpiredTime { get; set; }
public string ItemName { get; set; }
/// <summary>
/// 生产线
/// 物品描述1
/// </summary>
[Display(Name = "生产线")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
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>
[Display(Name = "工作中心")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string WorkStation { get; set; }
public string RequestLocationArea { get; set; }
/// <summary>
/// 在途库库位
/// 到库位组
/// </summary>
public string RequestLocationGroup { get; set; }
/// <summary>
/// 到ERP库位
/// </summary>
public string RequestLocationErpCode { get; set; }
/// <summary>
/// 到仓库
/// </summary>
public string RequestWarehouseCode { get; set; }
/// <summary>
/// 在途库库位
/// </summary>
[Display(Name = "在途库库位")]
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
}

506
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/InjectionNotes/Inputs/InjectionNoteDetailInput.cs

@ -1,53 +1,519 @@
using System;
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;
public class InjectionNoteDetailInput : SfsStoreRecommendFromDetailWithFromToInputBase
public class InjectionNoteDetailInput : SfsDetailInputBase
{
#region 库存基础信息
/// <summary>
/// 发料时间
/// 物品代码
/// </summary>
[Display(Name = "发料时间")]
public DateTime IssueTime { get; set; }
public string ItemCode { get; set; }
/// <summary>
/// 过期时间
/// 物品名称
/// </summary>
[Display(Name = "过期时间")]
public DateTime ExpiredTime { get; set; }
public string ItemName { get; set; }
/// <summary>
/// 生产线
/// 物品描述1
/// </summary>
[Display(Name = "生产线")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
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>
[Display(Name = "工作中心")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string WorkStation { get; set; }
public string RequestLocationArea { get; set; }
/// <summary>
/// 在途库库位
/// 到库位组
/// </summary>
public string RequestLocationGroup { get; set; }
/// <summary>
/// 到ERP库位
/// </summary>
public string RequestLocationErpCode { get; set; }
/// <summary>
/// 到仓库
/// </summary>
public string RequestWarehouseCode { get; set; }
/// <summary>
/// 在途库库位
/// </summary>
[Display(Name = "在途库库位")]
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
}

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

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

452
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferLibNotes/DTOs/TransferLibNoteDetailDTO.cs

@ -1,53 +1,467 @@
using System;
using System.ComponentModel.DataAnnotations;
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;
/// <summary>
/// 库存转移记录-明细表 //??TransferLib实体
/// 库存转移记录-明细表 //??TransferLib实体
/// </summary>
public class TransferLibNoteDetailDTO : SfsStoreDetailWithFromToDTOBase
public class TransferLibNoteDetailDTO : SfsDetailDTOBase
{
/// <summary>
/// 在途库地址
/// </summary>
[Display(Name = "在途库地址")]
public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 原因
/// 原因
/// </summary>
[Display(Name = "原因")]
public string Reason { get; set; }
/// <summary>
/// 执行任务状态
/// 执行任务状态
/// </summary>
public EnumJobStatus JobStatus { get; set; }
#region 回调服务相关
/// <summary>
/// 回调服务名称
/// 回调服务名称
/// </summary>
[Display(Name = "回调服务名称")]
public string CallServerName { get; set; }
/// <summary>
/// 回调业务类型
/// 回调业务类型
/// </summary>
[Display(Name = "回调业务类型")]
public string CallBusinessType { get; set; }
/// <summary>
/// 调用者传入申请单号
/// 调用者传入申请单号
/// </summary>
[Display(Name = "传入申请单号")]
public string CallRequestNumber { get; set; }
/// <summary>
/// 调用者传入任务单号
/// 调用者传入任务单号
/// </summary>
[Display(Name = "传入任务单号")]
public string CallJobNumber { get; set; }
#endregion
#region 库存基础信息
/// <summary>
/// 物品代码
/// </summary>
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>
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>
public string RequestWarehouseCode { get; set; }
/// <summary>
/// 在途库库位
/// </summary>
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 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
#region 开关
//箱码
public bool IsPackingCodeFrom { get; set; }
public bool IsPackingCodeTo { get; set; }
//批次
public bool IsLotFrom { get; set; }
public bool IsLotTo { get; set; }
//零件号
public bool IsItemCodeFrom { get; set; }
public bool IsItemCodeTo { get; set; }
//状态
public bool IsStatusFrom { get; set; }
public bool IsStatusTo { get; set; }
//库位
public bool IsLocationCodeFrom { get; set; }
public bool IsLocationCodeTo { get; set; }
//库位组
public bool IsLocationGroupFrom { get; set; }
public bool IsLocationGroupTo { get; set; }
//区域
public bool IsLocationAreaFrom { get; set; }
public bool IsLocationAreaTo { get; set; }
//储位
public bool IsLocationErpCodeFrom { get; set; }
public bool IsLocationErpCodeTo { get; set; }
//数量
public bool IsQtyFrom { get; set; }
public bool IsQtyTo { get; set; }
#endregion
}

76
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferLibNotes/ITransferLibNoteAppService.cs

@ -9,82 +9,10 @@ namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public interface ITransferLibNoteAppService :
ISfsStoreMasterReadOnlyAppServiceBase<TransferLibNoteDTO, SfsStoreRequestInputBase, TransferLibNoteDetailDTO, SfsStoreRequestInputBase>
{
Task<TransferLibNoteDTO> CreateAsync(TransferLibNoteEditInput input);
Task<PagedResultDto<TransferLibNoteDTO>> GetWipTransferListAsync(SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default);
Task<PagedResultDto<TransferLibNoteDTO>> GetAreaTransferListAsync(SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default);
Task<PagedResultDto<TransferLibNoteDTO>> GetCustomerTransferListAsync(SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default);
Task<PagedResultDto<TransferLibNoteDTO>> GetListForDiffERPLocAsync(
SfsStoreRequestInputBase sfsRequestDTO,
bool includeDetails = false,
CancellationToken cancellationToken = default);
Task<PagedResultDto<TransferLibNoteDTO>> GetInsideTransferListAsync(
SfsStoreRequestInputBase sfsRequestDTO,
bool includeDetails = false,
CancellationToken cancellationToken = default);
Task<TransferLibNoteDTO> ConfirmAsync(Guid id);
/// <summary>
/// 库存转移
/// ¿â´æ×ªÒÆ
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task<List<TransferLibNoteDTO>> CreateManyAsync(List<TransferLibNoteEditInput> input);
/// <summary>
/// 拆箱
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <returns></returns>
Task<TransferLibNoteDTO> SplitPackingAsync(TransferLibNoteEditInput transferLibNoteEditInput);
/// <summary>
/// 按条件获取拆箱的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// </summary>
/// <param name="sfsRequestDTO"></param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
Task<PagedResultDto<TransferLibNoteDTO>> GetSplitPackingTransferListAsync(
SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default);
/// <summary>
/// 采购收货拆箱,同时更新、插入PurchaseReceipt任务表、申请表
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
Task<bool> SplitPacking_PurchaseReceiptAsync(TransferLibNoteEditInput transferLibNoteEditInput, SplitPacking_UpdateJobDetailInput updateJobDetailInput);
/// <summary>
/// 质检拆箱,同时更新、插入Inspect任务表(不更新申请表)
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
Task<TransferLibNoteDTO> SplitPacking_InspectAsync(TransferLibNoteEditInput transferLibNoteEditInput, SplitPacking_UpdateJobDetailInput updateJobDetailInput);
/// <summary>
/// 发料拆箱,同时更新、插入Inspect任务表(没有找到申请表//??)
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
Task<TransferLibNoteDTO> SplitPacking_IssueAsync(TransferLibNoteEditInput transferLibNoteEditInput, SplitPacking_UpdateJobDetailInput updateJobDetailInput);
Task<TransferLibNoteDTO> CreateAsync(TransferLibNoteEditInput input);
}

454
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferLibNotes/Inputs/TransferLibNoteDetailInput.cs

@ -1,57 +1,467 @@
using System;
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;
/// <summary>
/// 库存转移记录-明细表 //??TransferLib实体
/// 库存转移记录-明细表 //??TransferLib实体
/// </summary>
public class TransferLibNoteDetailInput : SfsStoreDetailWithFromToInputBase
public class TransferLibNoteDetailInput : SfsDetailInputBase
{
/// <summary>
/// 在途库地址
/// </summary>
[Display(Name = "在途库地址")]
public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 原因
/// 原因
/// </summary>
[Display(Name = "原因")]
[StringLength(SfsEfCorePropertyConst.RemarkLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Reason { get; set; }
/// <summary>
/// 执行任务状态
/// 执行任务状态
/// </summary>
public EnumJobStatus JobStatus { get; set; }
#region 回调服务相关
/// <summary>
/// 回调服务名称
/// 回调服务名称
/// </summary>
[Display(Name = "回调服务名称")]
public string CallServerName { get; set; }
/// <summary>
/// 回调业务类型
/// 回调业务类型
/// </summary>
[Display(Name = "回调业务类型")]
public string CallBusinessType { get; set; }
/// <summary>
/// 调用者传入申请单号
/// 调用者传入申请单号
/// </summary>
[Display(Name = "传入申请单号")]
public string CallRequestNumber { get; set; }
/// <summary>
/// 调用者传入任务单号
/// 调用者传入任务单号
/// </summary>
[Display(Name = "传入任务单号")]
public string CallJobNumber { get; set; }
#endregion
#region 库存基础信息
/// <summary>
/// 物品代码
/// </summary>
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>
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>
public string RequestWarehouseCode { get; set; }
/// <summary>
/// 在途库库位
/// </summary>
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 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
#region 开关
//箱码
public bool IsPackingCodeFrom { get; set; }
public bool IsPackingCodeTo { get; set; }
//批次
public bool IsLotFrom { get; set; }
public bool IsLotTo { get; set; }
//零件号
public bool IsItemCodeFrom { get; set; }
public bool IsItemCodeTo { get; set; }
//状态
public bool IsStatusFrom { get; set; }
public bool IsStatusTo { get; set; }
//库位
public bool IsLocationCodeFrom { get; set; }
public bool IsLocationCodeTo { get; set; }
//库位组
public bool IsLocationGroupFrom { get; set; }
public bool IsLocationGroupTo { get; set; }
//区域
public bool IsLocationAreaFrom { get; set; }
public bool IsLocationAreaTo { get; set; }
//储位
public bool IsLocationErpCodeFrom { get; set; }
public bool IsLocationErpCodeTo { get; set; }
//数量
public bool IsQtyFrom { get; set; }
public bool IsQtyTo { get; set; }
#endregion
}

6
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/InjectionRequests/DTOs/InjectionRequestDTO.cs

@ -10,12 +10,6 @@ public class InjectionRequestDTO : SfsStoreRequestDTOBase<InjectionRequestDetail
[Display(Name = "叫料类型")]
public string Type { get; set; }
/// <summary>
/// 生产线
/// </summary>
[Display(Name = "生产线")]
public string ProdLine { get; set; }
/// <summary>
/// 是否使用在途库
/// </summary>

13
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/InjectionRequests/Inputs/InjectionRequestDetailInput.cs

@ -49,19 +49,6 @@ public class InjectionRequestDetailInput : SfsStoreDetailWithQtyInputBase
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ProdLine { get; set; }
/// <summary>
/// 工作中心
/// </summary>
[Display(Name = "工作中心")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string WorkStation { get; set; }
/// <summary>
/// 过期时间
/// </summary>
[Display(Name = "过期时间")]
public DateTime ExpiredTime { get; set; }
/// <summary>
/// 状态
/// </summary>

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/InjectionRequests/Inputs/InjectionRequestEditInput.cs

@ -14,13 +14,6 @@ public class InjectionRequestEditInput : SfsStoreRequestCreateOrUpdateInputBase
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Workshop { get; set; }
/// <summary>
/// 生产线
/// </summary>
[Display(Name = "生产线")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ProdLine { get; set; }
/// <summary>
/// 使用在途库
/// </summary>

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ThirdLocationRequests/DTOs/ThirdLocationRequestDetailDTO.cs

@ -43,12 +43,7 @@ public class ThirdLocationRequestDetailDTO : SfsStoreDetailWithQtyDTOBase
/// </summary>
[Display(Name = "已收数量")]
public decimal ReceivedQty { get; set; }
/// <summary>
/// 明细状态
/// </summary>
[Display(Name = "明细状态")]
public EnumStatus Status { get; set; }
/// <summary>
/// 请求未发

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ThirdLocationRequests/Inputs/ThirdLocationRequestDetailInput.cs

@ -71,12 +71,7 @@ public class ThirdLocationRequestDetailInput : SfsStoreDetailWithQtyInputBase
/// </summary>
[Display(Name = "已收数量")]
public decimal ReceivedQty { get; set; }
/// <summary>
/// 明细状态
/// </summary>
[Display(Name = "明细状态")]
public EnumStatus Status { get; set; }
/// <summary>
/// 位置码

46
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/TransferLibRequests/DTOs/TransferLibRequestDetailDTO.cs

@ -1,12 +1,13 @@
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
/// <summary>
/// 库存转移记录-明细表
/// </summary>
public class TransferLibRequestDetailDTO : SfsStoreDetailWithFromToDTOBase
public class TransferLibRequestDetailDTO : NewRecommendFromTo
{
/// <summary>
@ -46,4 +47,47 @@ public class TransferLibRequestDetailDTO : SfsStoreDetailWithFromToDTOBase
public string CallJobNumber { get; set; }
#endregion
#region 校验
//箱码
public bool CheckPackingCodeFrom { get; set; }
public bool CheckPackingCodeTo { get; set; }
//批次
public bool CheckLotFrom { get; set; }
public bool CheckLotTo { get; set; }
//零件号
public bool CheckItemCodeFrom { get; set; }
public bool CheckItemCodeTo { get; set; }
//状态
public bool CheckStatusFrom { get; set; }
public bool CheckStatusTo { get; set; }
//库位
public bool CheckLocationCodeFrom { get; set; }
public bool CheckLocationCodeTo { get; set; }
//库位组
public bool CheckLocationGroupFrom { get; set; }
public bool CheckLocationGroupTo { get; set; }
//区域
public bool CheckLocationAreaFrom { get; set; }
public bool CheckLocationAreaTo { get; set; }
//储位
public bool CheckLocationErpCodeFrom { get; set; }
public bool CheckLocationErpCodeTo { get; set; }
//数量
public bool CheckQtyFrom { get; set; }
public bool CheckQtyTo { get; set; }
#endregion
}

46
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/TransferLibRequests/Inputs/TransferLibRequestDetailInput.cs

@ -1,13 +1,14 @@
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
/// <summary>
/// 库存转移记录-明细表
/// </summary>
public class TransferLibRequestDetailInput : SfsStoreDetailWithFromToInputBase
public class TransferLibRequestDetailInput : NewRecommendFromTo
{
/// <summary>
/// 原因
@ -47,4 +48,47 @@ public class TransferLibRequestDetailInput : SfsStoreDetailWithFromToInputBase
public string CallJobNumber { get; set; }
#endregion
#region 校验
//箱码
public bool CheckPackingCodeFrom { get; set; }
public bool CheckPackingCodeTo { get; set; }
//批次
public bool CheckLotFrom { get; set; }
public bool CheckLotTo { get; set; }
//零件号
public bool CheckItemCodeFrom { get; set; }
public bool CheckItemCodeTo { get; set; }
//状态
public bool CheckStatusFrom { get; set; }
public bool CheckStatusTo { get; set; }
//库位
public bool CheckLocationCodeFrom { get; set; }
public bool CheckLocationCodeTo { get; set; }
//库位组
public bool CheckLocationGroupFrom { get; set; }
public bool CheckLocationGroupTo { get; set; }
//区域
public bool CheckLocationAreaFrom { get; set; }
public bool CheckLocationAreaTo { get; set; }
//储位
public bool CheckLocationErpCodeFrom { get; set; }
public bool CheckLocationErpCodeTo { get; set; }
//数量
public bool CheckQtyFrom { get; set; }
public bool CheckQtyTo { get; set; }
#endregion
}

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

@ -1,14 +1,16 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Linq.Expressions;
using System.Threading;
using System.Threading.Tasks;
using Castle.Components.DictionaryAdapter;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
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.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
@ -22,59 +24,111 @@ namespace Win_in.Sfs.Wms.Store.Application;
[Authorize]
[Route($"{StoreConsts.RootPath}injection-job")]
public class InjectionJobAppService
: SfsJobAppServiceBase<InjectionJob, InjectionJobDetail, InjectionJobDTO, SfsJobRequestInputBase, InjectionJobCheckInput, InjectionJobEditInput>,
IInjectionJobAppService,ITransferLibCallback
: SfsJobAppServiceBase<InjectionJob, InjectionJobDetail, InjectionJobDTO, SfsJobRequestInputBase,
InjectionJobCheckInput, InjectionJobEditInput>,
IInjectionJobAppService, ITransferLibCallback
{
private readonly IInjectionJobManager _injectionJobManager;
private readonly ILocationAppService _locationAppService;
private readonly ITransferLibJobAppService _transferLibJobAppService;
public InjectionJobAppService(
IInjectionJobRepository repository, IInjectionJobManager injectionJobManager
) : base(repository, injectionJobManager)
IInjectionJobRepository repository, IInjectionJobManager injectionJobManager,
ILocationAppService locationAppService, ITransferLibJobAppService transferLibJobAppService) : base(repository, injectionJobManager)
{
_injectionJobManager = injectionJobManager;
_locationAppService = locationAppService;
_transferLibJobAppService = transferLibJobAppService;
}
public override Task<List<InjectionJobDTO>> CreateManyAsync(List<InjectionJobEditInput> inputs)
/// <summary>
/// 批量创建
/// </summary>
/// <param name="inputs"></param>
/// <returns></returns>
[HttpPost("create-many")]
public override async Task<List<InjectionJobDTO>> CreateManyAsync(List<InjectionJobEditInput> inputs)
{
return base.CreateManyAsync(inputs);
foreach (var input in inputs)
{
await CheckMinRowAndSetStatusAsync(input).ConfigureAwait(false);
}
return await base.CreateManyAsync(inputs).ConfigureAwait(false);
}
public override Task<InjectionJobDTO> CreateAsync(InjectionJobEditInput input)
/// <summary>
/// 创建
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("")]
public override async Task<InjectionJobDTO> CreateAsync(InjectionJobEditInput input)
{
return base.CreateAsync(input);
await CheckMinRowAndSetStatusAsync(input).ConfigureAwait(false);
return await base.CreateAsync(input).ConfigureAwait(false);
}
/// <summary>
/// 根据物品和库位 检查是否存在发料任务
/// 判断是不是在最底层 如果不是则把状态变更为等待 并把库移推荐的From和To赋值
/// </summary>
/// <param name="itemCode"></param>
/// <param name="locationCode"></param>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
[Authorize]
[HttpGet("check-job-exist")]
public virtual async Task<List<InjectionJobDTO>> CheckJobExistByItemCodeAndLocationCodeAsync(string itemCode,
string locationCode)
private async Task CheckMinRowAndSetStatusAsync(InjectionJobEditInput input)
{
var entities = await _repository.GetListAsync(c =>
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<InjectionJob>, List<InjectionJobDTO>>(entities);
return dtos;
var jobDetailInputdetail = input.Details.FirstOrDefault();
var loctionDto = await _locationAppService.GetByCodeAsync(jobDetailInputdetail.RecommendFromLocationCode)
.ConfigureAwait(false);
if (loctionDto.RowCode == 1)
{
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;
}
else
{
input.JobStatus = EnumJobStatus.Wait;
}
}
[HttpPost("cancel-by-request/{injectionNumber}")]
public virtual async Task CancelByMaterialRequestAsync(string injectionNumber)
{
var entities = await _repository.GetListAsync(p => p.InjectionRequestNumber == injectionNumber).ConfigureAwait(false);
var entities = await _repository.GetListAsync(p => p.InjectionRequestNumber == injectionNumber)
.ConfigureAwait(false);
foreach (var entity in entities)
{
await _injectionJobManager.CancelAsync(entity).ConfigureAwait(false);
}
}
[HttpPost("invalid")]
public override async Task CancelAsync(Guid id)
{
@ -82,81 +136,64 @@ public class InjectionJobAppService
if (injectionJob == null)
{
throw new UserFriendlyException($"未找到ID为 {id} 的任务");
}
await _injectionJobManager.CancelAsync(injectionJob).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<InjectionJobDTO>> GetListByTypeAsync(SfsJobRequestInputBase requestInput,
string requestType, bool includeDetails = false, CancellationToken cancellationToken = default)
{
Expression<Func<InjectionJob, bool>> expression = p => p.RequestType == requestType;
if (requestInput.Condition.Filters?.Count > 0)
{
expression = expression.And(requestInput.Condition.Filters.ToLambda<InjectionJob>());
}
return await GetPagedListAsync(expression, requestInput.SkipCount, requestInput.MaxResultCount,
requestInput.Sorting, includeDetails, cancellationToken).ConfigureAwait(false);
await _injectionJobManager.CancelAsync(injectionJob).ConfigureAwait(false);
}
[HttpPost("by-request-number/{requestNumber}")]
public virtual async Task<List<InjectionJobDTO>> GetByRequestNumberAsync(string requestNumber)
{
var entitys = await _repository.GetListAsync(p => p.InjectionRequestNumber == requestNumber).ConfigureAwait(false);
var entitys = await _repository.GetListAsync(p => p.InjectionRequestNumber == requestNumber)
.ConfigureAwait(false);
return ObjectMapper.Map<List<InjectionJob>, List<InjectionJobDTO>>(entitys);
}
/// <summary>
/// 保存拆箱时涉及的明细修改
/// </summary>
/// <returns></returns>
[HttpPost("save-detail-split-packing")]
public virtual async Task<InjectionJobDTO> SaveDetail_SplitPackingAsync(SplitPacking_UpdateJobDetailInput input)
{
var job = await _repository.FindAsync(p => p.Number == input.Number).ConfigureAwait(false);
InjectionJobDetail detail = job.Details.FirstOrDefault(p => p.RecommendPackingCode == input.FromPackingCode ); /*&& p.HandledQty == input.FromQty*/
if (detail == null)
{
//throw new UserFriendlyException($"根据HandledPackingCode={input.FromPackingCode}取InjectionJobDetail表为空!");
throw new UserFriendlyException($"根据RecommendPackingCode={input.FromPackingCode}取InjectionJobDetail表为空!");
}
//插入目标箱
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<InjectionJob, InjectionJobDTO>(entity);
return ret;
}
[HttpPost("Do-Call-Back")]
public Tuple<bool?, string> DoTransferLibCallback(string businessType, string requestNum, string jobNum)
[HttpPost("do-call-back")]
public async Task<Tuple<bool?, string>> DoTransferLibCallbackAsync(string businessType, string requestNum, string jobNum)
{
throw new NotImplementedException();
var job = await _repository.FindAsync(p => p.Number == jobNum).ConfigureAwait(false);
//todo 等云峰写好换成真实的
var transferLibJobDto= await _transferLibJobAppService.GetByNumberAsync("AAA").ConfigureAwait(false);
var transferLibNote = new TransferLibNote();
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 new Tuple<bool?, string>(true,"s");
}
[HttpPost("test")]

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/TransferLibJobs/TransferLibJobAppService.cs

@ -72,7 +72,7 @@ public class TransferLibJobAppService
{
throw new UserFriendlyException($"{methodPrefix}类型为{dto.CallServerName}的对象没有实现ITransferLibCallback接口");
}
Tuple<bool?, string> callbackRet = transferLibCallback.DoTransferLibCallback(dto.CallServerName, dto.CallRequestNumber, dto.CallJobNumber);
Tuple<bool?, string> callbackRet = await transferLibCallback.DoTransferLibCallbackAsync(dto.CallServerName, dto.CallRequestNumber, dto.CallJobNumber);
if (callbackRet != null && callbackRet.Item1 == false)
{
throw new UserFriendlyException($"{methodPrefix}执行回调服务{dto.CallServerName}出错,返回错误信息:{callbackRet.Item2}");

6
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferLibNotes/ITransferLibCallback.cs

@ -3,11 +3,12 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Win_in.Sfs.Wms.Inventory.Application.Contracts;
namespace Win_in.Sfs.Wms.Store.Notes;
public interface ITransferLibCallback
{
Tuple<bool?, string> DoTransferLibCallback(string businessType, string requestNum, string jobNum);
Task<Tuple<bool?, string>> DoTransferLibCallbackAsync(string businessType, string requestNum, string jobNum);
}
public class TestTransferLibCallback : ITransferLibCallback
@ -16,7 +17,8 @@ public class TestTransferLibCallback : ITransferLibCallback
{
}
public Tuple<bool?, string> DoTransferLibCallback(string businessType, string requestNum, string jobNum)
public async Task<Tuple<bool?, string>> DoTransferLibCallbackAsync(string businessType, string requestNum,
string jobNum)
{
return Tuple.Create<bool?, string>(true, "调用新移库回调方法成功!");

393
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferLibNotes/TransferLibNoteAppService.cs

@ -67,269 +67,7 @@ public class TransferLibNoteAppService : SfsStoreWithDetailsAppServiceBase
_issueJobAppService = issueJobAppService;
_expectOutAppService = expectOutAppService;
}
#region 东阳使用
/// <summary>
/// 用来重写 导入数据时可以加工数据
/// </summary>
/// <param name="dictionary"></param>
/// <returns></returns>
protected override async Task<Dictionary<TransferLibNote, EntityState>> ImportProcessingEntityAsync(
Dictionary<TransferLibNote, EntityState> dictionary)
{
var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key);
foreach (var transferLibNote in addList)
{
if (transferLibNote.Type == EnumTransSubType.Transfer_Inside.GetDisplayName()) //储位内调拨
{
transferLibNote.Type = EnumTransSubType.Transfer_Inside.ToString();//重点 需要转换
foreach (var detail in transferLibNote.Details)
{
var balanceDto = await _balanceAppService.GetByItemLocationAndPackingAsync(detail.FromPackingCode,
detail.ItemCode, detail.FromLocationCode).ConfigureAwait(false);
var toLocationDto = await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false);
var fromLocationDto = await _locationAppService.GetByCodeAsync(detail.FromLocationCode).ConfigureAwait(false);
CheckLocation(toLocationDto, detail);
CheckFromLocation(fromLocationDto, detail);
if (toLocationDto.Type != fromLocationDto.Type)
{
throw new UserFriendlyException($"来源库位与目标库位类型不一致");
}
detail.OnTheWayLocationCode = bool.FalseString;
detail.ItemCode=balanceDto.ItemCode;
detail.ArriveDate=balanceDto.ArriveDate;
detail.ItemDesc1=balanceDto.ItemDesc1;
detail.ItemDesc2=balanceDto.ItemDesc2;
detail.ItemName=balanceDto.ItemName;
detail.ProduceDate=balanceDto.ProduceDate;
detail.Qty=balanceDto.Qty;
detail.Uom=balanceDto.Uom;
detail.ExpireDate=balanceDto.ExpireDate;
detail.StdPackQty=balanceDto.StdPackQty;
detail.SupplierBatch=balanceDto.SupplierBatch;
detail.FromLocationArea = balanceDto.LocationArea;
detail.FromContainerCode = balanceDto.ContainerCode;
detail.FromLocationErpCode = balanceDto.LocationErpCode;
detail.FromLocationGroup = balanceDto.LocationGroup;
detail.FromPackingCode = balanceDto.PackingCode;
detail.FromLocationArea = balanceDto.LocationArea;
detail.FromStatus = balanceDto.Status;
detail.FromWarehouseCode = balanceDto.WarehouseCode;
detail.FromLot = balanceDto.Lot;
detail.ToLocationArea = toLocationDto.AreaCode;
detail.ToLocationErpCode = toLocationDto.ErpLocationCode;
detail.ToLocationGroup = toLocationDto.LocationGroupCode;
detail.ToWarehouseCode = toLocationDto.WarehouseCode;
detail.ToContainerCode = balanceDto.ContainerCode;
detail.ToPackingCode = balanceDto.PackingCode;
detail.ToLocationArea = balanceDto.LocationArea;
detail.ToStatus = balanceDto.Status;
detail.ToLot = balanceDto.Lot;
}
}
}
return dictionary;
}
/// <summary>
/// 拆箱
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <returns></returns>
[HttpPost("split-packing")]
public async Task<TransferLibNoteDTO> SplitPackingAsync(TransferLibNoteEditInput transferLibNoteEditInput)
{
//插入拆箱记录表
await WriteSplitPackingRec(transferLibNoteEditInput).ConfigureAwait(false);
//更新库存
transferLibNoteEditInput.Type = EnumTransSubType.Transfer_SplitPacking.ToString();
return await CreateAsync(transferLibNoteEditInput).ConfigureAwait(false);
}
#region 校验
private void CheckLocation(LocationDTO locationDto, TransferLibNoteDetail detail)
{
if (locationDto == null)
{
throw new UserFriendlyException($"库位代码为【{detail.ToLocationCode}】不存在");
}
}
private void CheckFromLocation(LocationDTO locationDto, TransferLibNoteDetail detail)
{
if (locationDto == null)
{
throw new UserFriendlyException($"库位代码为【{detail.FromLocationCode}】不存在");
}
}
#endregion
/// <summary>
/// 按条件获取拆箱的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// </summary>
/// <param name="sfsRequestDTO"></param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpPost("get-split-packing-list")]
public virtual async Task<PagedResultDto<TransferLibNoteDTO>> GetSplitPackingTransferListAsync(
SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default)
{
return await GetSubTypeListAsync(sfsRequestDTO, EnumTransSubType.Transfer_SplitPacking, includeDetails,
cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// 按条件获取线边调拨的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// </summary>
/// <param name="sfsRequestDTO"></param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpPost("get-wip-list")]
public virtual async Task<PagedResultDto<TransferLibNoteDTO>> GetWipTransferListAsync(
SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default)
{
return await GetSubTypeListAsync(sfsRequestDTO, EnumTransSubType.Transfer_WIP, includeDetails,
cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// 按条件获取储位间调拨的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// </summary>
/// <param name="sfsRequestDTO"></param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpPost("get-erp-loc-list")]
public virtual async Task<PagedResultDto<TransferLibNoteDTO>> GetAreaTransferListAsync(
SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default)
{
return await GetSubTypeListAsync(sfsRequestDTO, EnumTransSubType.Transfer_Area, includeDetails,
cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// 按条件获取储位内移库的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// </summary>
/// <param name="sfsRequestDTO"></param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpPost("get-inside-list")]
public virtual async Task<PagedResultDto<TransferLibNoteDTO>> GetInsideTransferListAsync(
SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default)
{
return await GetSubTypeListAsync(sfsRequestDTO, EnumTransSubType.Transfer_Inside, includeDetails,
cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// 按条件获取客户储位间调拨的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// </summary>
/// <param name="sfsRequestDTO"></param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpPost("get-custom-loc-list")]
public virtual async Task<PagedResultDto<TransferLibNoteDTO>> GetCustomerTransferListAsync(
SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default)
{
return await GetSubTypeListAsync(sfsRequestDTO, EnumTransSubType.Transfer_Customer, includeDetails,
cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// 按条件获取储位间调拨的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// </summary>
/// <param name="sfsRequestDTO"></param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpPost("get-diff-erp-loc-list")]
public virtual async Task<PagedResultDto<TransferLibNoteDTO>> GetListForDiffERPLocAsync(
SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default)
{
return await GetSubTypeListAsync(sfsRequestDTO, EnumTransSubType.Transfer_Warehouse, includeDetails,
cancellationToken).ConfigureAwait(false);
}
private async Task<PagedResultDto<TransferLibNoteDTO>> GetSubTypeListAsync(SfsStoreRequestInputBase sfsRequestDTO,
EnumTransSubType type, bool includeDetails = false,
CancellationToken cancellationToken = default)
{
sfsRequestDTO.Condition.Filters.Add(new Filter
{
Action = "==",
Column = "Type",
Logic = EnumFilterLogic.And.ToString(),
Value = type.ToString()
});
var expression = sfsRequestDTO.Condition.Filters?.Count > 0
? sfsRequestDTO.Condition.Filters.ToLambda<TransferLibNote>()
: p => true;
return await GetPagedListAsync(expression, sfsRequestDTO.SkipCount, sfsRequestDTO.MaxResultCount,
sfsRequestDTO.Sorting, includeDetails, cancellationToken).ConfigureAwait(false);
}
#endregion
/// <summary>
/// 库存转移
/// </summary>
@ -380,133 +118,4 @@ public class TransferLibNoteAppService : SfsStoreWithDetailsAppServiceBase
var dto = ObjectMapper.Map<TransferLibNote, TransferLibNoteDTO>(entity);
return dto;
}
/// <summary>
/// 插入拆箱记录表
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <returns></returns>
private async Task<bool> WriteSplitPackingRec(TransferLibNoteEditInput transferLibNoteEditInput)
{
List<SplitPackingRecEditInput> recLst = new List<SplitPackingRecEditInput>();
foreach (var inputDetail in transferLibNoteEditInput.Details)
{
SplitPackingRecEditInput packRec = new SplitPackingRecEditInput();
packRec.OprType = OprTypeEnum.SplitBox;
packRec.FromPackingCode = inputDetail.FromPackingCode;
//packRec.FromTopPackingCode = inputDetail.;
packRec.FromStdPackQty = inputDetail.StdPackQty;
packRec.FromUom = inputDetail.Uom;
packRec.FromQty = inputDetail.Qty;
packRec.ToPackingCode = inputDetail.ToPackingCode;
//packRec.ToTopPackingCode = inputDetail.;
packRec.ToStdPackQty = inputDetail.StdPackQty;
packRec.ToUom = inputDetail.Uom;
packRec.ToQty = inputDetail.Qty;
packRec.ItemCode = inputDetail.ItemCode;
packRec.ItemName = inputDetail.ItemName;
packRec.ItemDesc1 = inputDetail.ItemDesc1;
packRec.ItemDesc2 = inputDetail.ItemDesc2;
packRec.FromLot = inputDetail.FromLot;
packRec.ToLot = inputDetail.ToLot;
//packRec.PurchaseInfo_PoNumber = inputDetail.; // 采购订单
//packRec.PurchaseInfo_AsnNumber = inputDetail.; //供应商发货单
//packRec.ArrivalNoticNumber = inputDetail.; //到货通知
//packRec.TaskOrderNumber = inputDetail.; //任务单
//packRec.ReceiptRecNumber = inputDetail.; //收货记录单
//packRec.PutOnShelfNumber = inputDetail.; //上架单
recLst.Add(packRec);
}
var ret = await _splitPackingRecAppService.BatchInsertAsync(recLst).ConfigureAwait(false);
return ret;
}
/// <summary>
/// 采购收货拆箱,同时更新、插入PurchaseReceipt任务表、申请表
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
[HttpPost("split-packing-purchase-receipt")]
public async Task<bool> SplitPacking_PurchaseReceiptAsync(TransferLibNoteEditInput transferLibNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInput updateJobDetailInput)
{
var jobRet = await _purchaseReceiptJobAppService.SaveDetail_SplitPackingAsync(updateJobDetailInput).ConfigureAwait(false);
var requestRet = await _purchaseReceiptRequestAppService.SaveDetail_SplitPackingAsync(updateJobDetailInput, jobRet.PurchaseReceiptRequestNumber).ConfigureAwait(false);
bool ret = await WriteSplitPackingRec(transferLibNoteEditInput).ConfigureAwait(false); //采购收货-目检-拆箱时,还没有入库,不涉及库存操作
return ret;
}
/// <summary>
/// 质检拆箱,同时更新、插入Inspect任务表(不更新申请表)
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
[HttpPost("split-packing-inspect")]
public async Task<TransferLibNoteDTO> SplitPacking_InspectAsync(TransferLibNoteEditInput transferLibNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInput updateJobDetailInput)
{
//SplitPacking_UpdateDetailInput newInput = new SplitPacking_UpdateDetailInput();
//newInput.Number = updateJobDetailInput.Number;
//newInput.FromPackingCode = updateJobDetailInput.FromPackingCode;
//newInput.FromQty = updateJobDetailInput.FromQty;
//newInput.ToPackingCode = updateJobDetailInput.ToPackingCode;
//newInput.ToQty = updateJobDetailInput.ToQty;
//newInput.FromLocationCode = transferLibNoteEditInput.Details[0].FromLocationCode;
//newInput.ToLocationCode = transferLibNoteEditInput.Details[0].ToLocationCode;
//var expectOutRet = await _expectOutAppService.SaveDetail_SplitPackingAsync(newInput).ConfigureAwait(false);
var jobRet = await _inspectJobAppService.SaveDetail_SplitPackingAsync(updateJobDetailInput).ConfigureAwait(false);
var ret = await SplitPackingAsync(transferLibNoteEditInput).ConfigureAwait(false); //库存操作
return ret;
}
/// <summary>
/// 发料拆箱,同时更新、插入Inspect任务表(没有找到申请表//??)
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
[HttpPost("split-packing-issue")]
public async Task<TransferLibNoteDTO> SplitPacking_IssueAsync(TransferLibNoteEditInput transferLibNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInput updateJobDetailInput)
{
SplitPacking_UpdateDetailInput newInput = new SplitPacking_UpdateDetailInput();
newInput.Number = updateJobDetailInput.Number;
newInput.FromPackingCode = updateJobDetailInput.FromPackingCode;
newInput.FromQty = updateJobDetailInput.FromQty;
newInput.ToPackingCode = updateJobDetailInput.ToPackingCode;
newInput.ToQty = updateJobDetailInput.ToQty;
newInput.FromLocationCode = transferLibNoteEditInput.Details[0].FromLocationCode;
newInput.ToLocationCode = transferLibNoteEditInput.Details[0].ToLocationCode;
var expectOutRet = await _expectOutAppService.SaveDetail_SplitPackingAsync(newInput).ConfigureAwait(false);
var jobRet = await _issueJobAppService.SaveDetail_SplitPackingAsync(updateJobDetailInput).ConfigureAwait(false);
var ret = await SplitPackingAsync(transferLibNoteEditInput).ConfigureAwait(false); //库存操作
return ret;
}
/// <summary>
/// 拆箱,预计出表存在数据时不允许办理
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <param name="updateJobDetailInputBase"></param>
/// <returns></returns>
[HttpPost("split-packing-check-expect-out")]
public async Task<TransferLibNoteDTO> SplitPackingCheckExpectOutAsync(TransferLibNoteEditInput transferLibNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInputBase updateJobDetailInputBase)
{
var detailObj = transferLibNoteEditInput.Details[0];
SplitPacking_UpdateDetailInput newInput = new SplitPacking_UpdateDetailInput();
newInput.Number = updateJobDetailInputBase.Number;
newInput.FromPackingCode = detailObj.FromPackingCode;
newInput.FromQty = detailObj.Qty;
newInput.ToPackingCode = detailObj.ToPackingCode;
newInput.ToQty = detailObj.Qty;
newInput.FromLocationCode = detailObj.FromLocationCode;
newInput.ToLocationCode = detailObj.ToLocationCode;
var expectOutLst = await _expectOutAppService.GetListByJobNumberAsync(newInput).ConfigureAwait(false);
if (expectOutLst.Count > 0)
{
throw new UserFriendlyException($"预计出表存在数据,不允许办理拆箱:JobNumber={newInput.Number}|PackingCode={newInput.FromPackingCode}|Qty={newInput.FromQty}|LocationCode={newInput.FromLocationCode}");
}
var ret = await SplitPackingAsync(transferLibNoteEditInput).ConfigureAwait(false);
return ret;
}
}

30
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferLibNotes/TransferLibNoteMapperProfile.cs

@ -38,34 +38,6 @@ public partial class StoreApplicationAutoMapperProfile : Profile
.Ignore(x => x.Id);
CreateMap<TransferLibNoteImportInput, TransferLibNoteDetail>()
.IgnoreAuditedObjectProperties()
.ForMember(x => x.ToPackingCode, y => y.MapFrom(d => d.PackingCode))
.ForMember(x => x.FromPackingCode, y => y.MapFrom(d => d.PackingCode))
.ForMember(x => x.FromStatus, y => y.MapFrom(d => d.Status))
.ForMember(x => x.ToStatus, y => y.MapFrom(d => d.Status))
.Ignore(x => x.FromLocationGroup)
.Ignore(x => x.FromLocationArea)
.Ignore(x => x.FromLocationErpCode)
.Ignore(x => x.FromWarehouseCode)
.Ignore(x => x.ToLocationArea)
.Ignore(x => x.ToLocationGroup)
.Ignore(x => x.ToLocationErpCode)
.Ignore(x => x.ToWarehouseCode)
.Ignore(x => x.Reason)
.Ignore(x => x.SupplierBatch).Ignore(x => x.ArriveDate).Ignore(x => x.ProduceDate).Ignore(x => x.ExpireDate)
.Ignore(x => x.Remark)
.Ignore(x => x.ItemName)
.Ignore(x => x.ItemDesc1)
.Ignore(x => x.ItemDesc2)
.Ignore(x => x.FromContainerCode)
.Ignore(x => x.ToContainerCode)
.Ignore(x => x.FromLot)
.Ignore(x => x.ToLot)
.Ignore(x => x.StdPackQty)
.Ignore(x => x.Uom)
.Ignore(x => x.MasterID)
.Ignore(x => x.TenantId)
.Ignore(x => x.Number)
.Ignore(x => x.Id);
.IgnoreAuditedObjectProperties();
}
}

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

@ -218,22 +218,7 @@ public class CoatingMaterialRequestAppService : SfsStoreRequestAppServiceBase<Co
var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detailInput.ItemCode).ConfigureAwait(false);
CheckItemBasic(itemBasicDto, detailInput.ItemCode);
detailInput.ItemDesc1 = itemBasicDto.Desc1;
if (detailInput.PositionCode.Contains('W'))
{
detailInput.RecommendType = EnumRecommendType.W;
}
else if (detailInput.PositionCode.Contains('Q'))
{
detailInput.RecommendType = EnumRecommendType.Q;
}
else if (detailInput.PositionCode.Contains('K'))
{
detailInput.RecommendType = EnumRecommendType.K;
}
else
{
detailInput.RecommendType = EnumRecommendType.None;
}
//var productionLineDto = await _productionLineAppService.GetByLocationGroupCodeAsync(toLocationDto.LocationGroupCode).ConfigureAwait(false);

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

@ -95,6 +95,7 @@ public class InjectionRequestAppService : SfsStoreRequestAppServiceBase<Injectio
detailInput.ToWarehouseCode= toLocationDto.WarehouseCode;
detailInput.ProdLine = detailInput.ToLocationCode;
detailInput.ToLocationErpCode = toLocationDto.ErpLocationCode;
detailInput.Status = EnumStatus.Open;
//因为是刚创建的 所以发料数一定是0
detailInput.IssuedQty = 0;

3
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/InjectionRequests/InjectionRequestAutoMapperProfile.cs

@ -26,7 +26,6 @@ public partial class StoreApplicationAutoMapperProfile : Profile
CreateMap<InjectionRequestImportInput, InjectionRequest>()
.IgnoreAuditedObjectProperties()
.ForMember(x => x.Type, y => y.MapFrom(t => t.Type.ToString()))
.Ignore(x => x.ProdLine)
.Ignore(x => x.UseOnTheWayLocation)
.Ignore(x => x.Details)
.Ignore(x => x.Remark)
@ -47,8 +46,6 @@ public partial class StoreApplicationAutoMapperProfile : Profile
.Ignore(x => x.ToLocationGroup)
.Ignore(x => x.ItemName).Ignore(x => x.ItemDesc1).Ignore(x => x.ItemDesc2)
.Ignore(x => x.ProdLine)
.Ignore(x => x.WorkStation)
.Ignore(x => x.ExpiredTime)
.Ignore(x => x.IssuedQty)
.Ignore(x => x.ReceivedQty)
.Ignore(x => x.ToBeIssuedQty)

17
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/MaterialRequestAppService.cs

@ -214,22 +214,7 @@ public class MaterialRequestAppService : SfsStoreRequestAppServiceBase<MaterialR
var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detailInput.ItemCode).ConfigureAwait(false);
CheckItemBasic(itemBasicDto, detailInput.ItemCode);
detailInput.ItemDesc1 = itemBasicDto.Desc1;
if(detailInput.PositionCode.Contains('W'))
{
detailInput.RecommendType = EnumRecommendType.W;
}
else if(detailInput.PositionCode.Contains('Q'))
{
detailInput.RecommendType = EnumRecommendType.Q;
}
else if(detailInput.PositionCode.Contains('K'))
{
detailInput.RecommendType = EnumRecommendType.K;
}
else
{
detailInput.RecommendType = EnumRecommendType.None;
}
//var productionLineDto = await _productionLineAppService.GetByLocationGroupCodeAsync(toLocationDto.LocationGroupCode).ConfigureAwait(false);

3
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ThirdLocationRequests/ThirdLocationRequestAutoMapperProfile.cs

@ -42,8 +42,7 @@ public partial class StoreApplicationAutoMapperProfile : Profile
.Ignore(x => x.Remark);
CreateMap<ThirdLocationRequestImportInput, ThirdLocationRequestDetail>()
.IgnoreAuditedObjectProperties()
.ForMember(x => x.Status, y => y.MapFrom(t => EnumStatus.Open))
.IgnoreAuditedObjectProperties()
.Ignore(x => x.ToLocationErpCode)
.Ignore(x => x.ToWarehouseCode)
.Ignore(x => x.ToLocationArea)

90
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/TransferLibRequests/TransferLibRequestAppService.cs

@ -106,51 +106,51 @@ public class TransferLibRequestAppService : SfsStoreRequestAppServiceBase
foreach (var detail in transferLibRequest.Details)
{
var balanceDto = await _balanceAppService.GetByItemLocationAndPackingAsync(detail.FromPackingCode,
detail.ItemCode, detail.FromLocationCode).ConfigureAwait(false);
var toLocationDto = await _locationAppService.GetByCodeAsync(detail.ToLocationCode)
var balanceDto = await _balanceAppService.GetByItemLocationAndPackingAsync(detail.RecommendFromPackingCode,
detail.ItemCode, detail.RecommendFromLocationCode).ConfigureAwait(false);
var toLocationDto = await _locationAppService.GetByCodeAsync(detail.RecommendToLocationCode)
.ConfigureAwait(false);
var fromLocationDto = await _locationAppService.GetByCodeAsync(detail.FromLocationCode)
var fromLocationDto = await _locationAppService.GetByCodeAsync(detail.RecommendFromLocationCode)
.ConfigureAwait(false);
CheckLocation(toLocationDto, detail.ToLocationCode);
CheckLocation(fromLocationDto, detail.FromLocationCode);
CheckLocation(toLocationDto, detail.RecommendToLocationCode);
CheckLocation(fromLocationDto, detail.RecommendFromLocationCode);
if (toLocationDto.Type != fromLocationDto.Type)
{
throw new UserFriendlyException($"来源库位与目标库位类型不一致");
}
detail.ItemCode = balanceDto.ItemCode;
detail.ArriveDate = balanceDto.ArriveDate;
detail.ItemDesc1 = balanceDto.ItemDesc1;
detail.ItemDesc2 = balanceDto.ItemDesc2;
detail.ItemName = balanceDto.ItemName;
detail.ProduceDate = balanceDto.ProduceDate;
detail.Qty = detail.Qty;
detail.Uom = balanceDto.Uom;
detail.ExpireDate = balanceDto.ExpireDate;
detail.StdPackQty = balanceDto.StdPackQty;
detail.SupplierBatch = balanceDto.SupplierBatch;
detail.FromLocationArea = balanceDto.LocationArea;
detail.FromContainerCode = balanceDto.ContainerCode;
detail.FromLocationErpCode = balanceDto.LocationErpCode;
detail.FromLocationGroup = balanceDto.LocationGroup;
detail.FromPackingCode = balanceDto.PackingCode;
detail.FromLocationArea = balanceDto.LocationArea;
detail.FromStatus = balanceDto.Status;
detail.FromWarehouseCode = balanceDto.WarehouseCode;
detail.FromLot = balanceDto.Lot;
detail.ToLocationArea = toLocationDto.AreaCode;
detail.ToLocationErpCode = toLocationDto.ErpLocationCode;
detail.ToLocationGroup = toLocationDto.LocationGroupCode;
detail.ToWarehouseCode = toLocationDto.WarehouseCode;
detail.ToContainerCode = balanceDto.ContainerCode;
detail.ToPackingCode = balanceDto.PackingCode;
detail.ToLocationArea = balanceDto.LocationArea;
detail.ToStatus = balanceDto.Status;
detail.ToLot = balanceDto.Lot;
//detail.ItemCode = balanceDto.ItemCode;
//detail.ArriveDate = balanceDto.ArriveDate;
//detail.ItemDesc1 = balanceDto.ItemDesc1;
//detail.ItemDesc2 = balanceDto.ItemDesc2;
//detail.ItemName = balanceDto.ItemName;
//detail.ProduceDate = balanceDto.ProduceDate;
//detail.Qty = detail.Qty;
//detail.Uom = balanceDto.Uom;
//detail.ExpireDate = balanceDto.ExpireDate;
//detail.StdPackQty = balanceDto.StdPackQty;
//detail.SupplierBatch = balanceDto.SupplierBatch;
//detail.FromLocationArea = balanceDto.LocationArea;
//detail.FromContainerCode = balanceDto.ContainerCode;
//detail.FromLocationErpCode = balanceDto.LocationErpCode;
//detail.FromLocationGroup = balanceDto.LocationGroup;
//detail.FromPackingCode = balanceDto.PackingCode;
//detail.FromLocationArea = balanceDto.LocationArea;
//detail.FromStatus = balanceDto.Status;
//detail.FromWarehouseCode = balanceDto.WarehouseCode;
//detail.FromLot = balanceDto.Lot;
//detail.ToLocationArea = toLocationDto.AreaCode;
//detail.ToLocationErpCode = toLocationDto.ErpLocationCode;
//detail.ToLocationGroup = toLocationDto.LocationGroupCode;
//detail.ToWarehouseCode = toLocationDto.WarehouseCode;
//detail.ToContainerCode = balanceDto.ContainerCode;
//detail.ToPackingCode = balanceDto.PackingCode;
//detail.ToLocationArea = balanceDto.LocationArea;
//detail.ToStatus = balanceDto.Status;
//detail.ToLot = balanceDto.Lot;
}
await SetEntityPropertiesAsync(transferLibRequest, enumTransSubType)
@ -319,14 +319,14 @@ public class TransferLibRequestAppService : SfsStoreRequestAppServiceBase
var entity = ObjectMapper.Map<TransferLibRequestEditInput, TransferLibRequest>(input);
var subType = Enum.Parse<EnumTransSubType>(input.Type);
var tranType = await TransactionTypeAclService.GetByTransTypeAsync(EnumTransType.TransferLib, subType)
.ConfigureAwait(false);
entity.Type = ((int)subType).ToString();
entity.AutoCompleteJob = tranType.AutoCompleteJob;
entity.AutoSubmit = tranType.AutoSubmitRequest;
entity.AutoAgree = tranType.AutoAgreeRequest;
entity.AutoHandle = tranType.AutoHandleRequest;
entity.DirectCreateNote = tranType.DirectCreateNote;
//var tranType = await TransactionTypeAclService.GetByTransTypeAsync(EnumTransType.TransferLib, subType)
// .ConfigureAwait(false);
//entity.Type = ((int)subType).ToString();
//entity.AutoCompleteJob = tranType.AutoCompleteJob;
//entity.AutoSubmit = tranType.AutoSubmitRequest;
//entity.AutoAgree = tranType.AutoAgreeRequest;
//entity.AutoHandle = tranType.AutoHandleRequest;
//entity.DirectCreateNote = tranType.DirectCreateNote;
await _transferLibRequestManager.CreateAsync(entity).ConfigureAwait(false);

33
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/TransferLibRequests/TransferLibRequestMapperProfile.cs

@ -48,35 +48,10 @@ public partial class StoreApplicationAutoMapperProfile : Profile
.Ignore(x => x.Number)
.Ignore(x => x.Id);
CreateMap<TransferLibRequestImportInput, TransferLibRequestDetail>()
CreateMap<TransferLibRequestImportInput, TransferLibRequestDetail>(MemberList.None)
.IgnoreAuditedObjectProperties()
.ForMember(x => x.ToPackingCode, y => y.MapFrom(d => d.PackingCode ?? string.Empty))
.ForMember(x => x.FromPackingCode, y => y.MapFrom(d => d.PackingCode ?? string.Empty))
.ForMember(x => x.FromStatus, y => y.MapFrom(d => d.Status))
.ForMember(x => x.ToStatus, y => y.MapFrom(d => d.Status))
.Ignore(x => x.FromLocationGroup)
.Ignore(x => x.FromLocationArea)
.Ignore(x => x.FromLocationErpCode)
.Ignore(x => x.FromWarehouseCode)
.Ignore(x => x.ToLocationArea)
.Ignore(x => x.ToLocationGroup)
.Ignore(x => x.ToLocationErpCode)
.Ignore(x => x.ToWarehouseCode)
.Ignore(x => x.Reason)
.Ignore(x => x.SupplierBatch).Ignore(x => x.ArriveDate).Ignore(x => x.ProduceDate).Ignore(x => x.ExpireDate)
.Ignore(x => x.Remark)
.Ignore(x => x.ItemName)
.Ignore(x => x.ItemDesc1)
.Ignore(x => x.ItemDesc2)
.Ignore(x => x.FromContainerCode)
.Ignore(x => x.ToContainerCode)
.Ignore(x => x.FromLot)
.Ignore(x => x.ToLot)
.Ignore(x => x.StdPackQty)
.Ignore(x => x.Uom)
.Ignore(x => x.MasterID)
.Ignore(x => x.TenantId)
.Ignore(x => x.Number)
.Ignore(x => x.Id);
.ForMember(x => x.RecommendFromPackingCode, y => y.MapFrom(d => d.PackingCode ?? string.Empty))
.ForMember(x => x.RecommendToPackingCode, y => y.MapFrom(d => d.PackingCode ?? string.Empty))
.ForMember(x => x.Status, y => y.MapFrom(d => d.Status));
}
}

197
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Bases/NewRecommendHandled/NewRecommendFromTo.cs

@ -0,0 +1,197 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Domain;
public class NewRecommendFromTo : SfsStoreDetailEntityBase//SfsDetailEntityBase
{
#region 库存基础信息
/*
/// <summary>
/// 物品代码
/// </summary>
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>
public EnumInventoryStatus Status { get; set; }
/// <summary>
/// 计量单位
/// </summary>
public string Uom { 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
public void SetId(Guid id)
{
this.Id = id;
}
}

148
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Bases/NewRecommendHandled/NewRecommendHandledFromTo.cs

@ -0,0 +1,148 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Win_in.Sfs.Wms.Store.Domain;
public class NewRecommendHandledFromTo : NewRecommendFromTo
{
#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
}

41
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/InjectionJobs/InjectionJob.cs

@ -25,17 +25,11 @@ public class InjectionJob : SfsJobAggregateRootBase<InjectionJobDetail>
public string ProdLine { get; set; }
/// <summary>
/// 要货单号
/// 注塑要料单号
/// </summary>
[IgnoreUpdate]
public string InjectionRequestNumber { get; set; }
/// <summary>
/// 车间
/// </summary>
[IgnoreUpdate]
public string Workshop { get; set; }
/// <summary>
/// 使用在途库
/// </summary>
@ -49,36 +43,5 @@ public class InjectionJob : SfsJobAggregateRootBase<InjectionJobDetail>
[IgnoreUpdate]
public override List<InjectionJobDetail> Details { get; set; } = new List<InjectionJobDetail>();
/// <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);
}
}

478
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/InjectionJobs/InjectionJobDetail.cs

@ -1,40 +1,80 @@
using System;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Domain;
public class InjectionJobDetail : SfsJobRecommendFromDetailEntityBase, IHasToLocation
public class InjectionJobDetail : SfsDetailEntityBase
{
#region 库存基础信息
/// <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>
public EnumInventoryStatus Status { get; set; }
/// <summary>
/// 计量单位
/// </summary>
public string Uom { get; set; }
#endregion
#region 请求信息
/// <summary>
/// 到库位
/// 请求库位
/// </summary>
public string ToLocationCode { get; set; }
public string RequestLocationCode { get; set; }
/// <summary>
/// 到库区
/// </summary>
public string ToLocationArea { get; set; }
public string RequestLocationArea { get; set; }
/// <summary>
/// 到库位组
/// </summary>
public string ToLocationGroup { get; set; }
public string RequestLocationGroup { get; set; }
/// <summary>
/// 到ERP库位
/// </summary>
public string ToLocationErpCode { get; set; }
public string RequestLocationErpCode { get; set; }
/// <summary>
/// 到仓库
/// </summary>
public string ToWarehouseCode { get; set; }
public string RequestWarehouseCode { get; set; }
/// <summary>
/// 在途库库位
@ -47,59 +87,435 @@ public class InjectionJobDetail : SfsJobRecommendFromDetailEntityBase, IHasToLoc
public string ProdLine { get; set; }
/// <summary>
/// 工作中心
/// 位置码
/// </summary>
public string WorkStation { get; set; }
public string PositionCode { get; set; }
/// <summary>
/// 过期时间
/// 推荐的类型
/// </summary>
public DateTime ExpiredTime { get; set; }
public EnumRecommendType RecommendType { get; set; }
/// <summary>
/// 工序
/// 需求数量
/// </summary>
public string Operation { get; set; }
public decimal RequestQty { get; set; }
#endregion
#region 推荐来源
/// <summary>
/// 配送方式
/// 推荐来源托标签
/// </summary>
public EnumDistributionType DistributionType { get; set; }
public string RecommendFromContainerCode { get; set; }
/// <summary>
/// 取整方式
/// 推荐来源箱标签
/// </summary>
public EnumTruncType TruncType { get; set; }
public string RecommendFromPackingCode { get; set; }
/// <summary>
/// 取整后数量
/// 推荐来源批次供应商批次
/// </summary>
public decimal RoundedQty { get; set; }
public string RecommendFromSupplierBatch { get; set; }
/// <summary>
/// 计划拆分规则
/// 推荐来源批次到货时间
/// </summary>
public EnumPlannedSplitRule PlannedSplitRule { get; set; }
public DateTime RecommendFromArriveDate { get; set; }
/// <summary>
/// 计划开始时间
/// 推荐来源批次生产时间
/// </summary>
public DateTime PlanBeginTime { get; set; }
public DateTime RecommendFromProduceDate { get; set; }
/// <summary>
/// 每次配送数量
/// 推荐来源批次过期时间
/// </summary>
public decimal DeliveryQty { get; set; }
public DateTime RecommendFromExpireDate { get; set; }
/// <summary>
/// 位置码
/// 推荐来源批次排序
/// </summary>
public string PositionCode { get; set; }
public string RecommendFromLot { get; set; }
/// <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)
{

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

@ -30,22 +30,40 @@ public class InjectionJobManager : SfsJobManagerBase<InjectionJob, InjectionJobD
{
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);
}
var inputDetail = input.Details.First();
var detail = entity.Details.First();
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);
}
@ -63,20 +81,22 @@ public class InjectionJobManager : SfsJobManagerBase<InjectionJob, InjectionJobD
}
}
public override async Task<List<InjectionJob>> GetWorkingListByPackingAsync(string packingCode)
public async Task<InjectionJob> GetAsync(Expression<Func<InjectionJob, bool>> expression)
{
return await Repository.GetListAsync(c => c.Details.Any(p => p.RecommendPackingCode == packingCode) && c.JobStatus != EnumJobStatus.Closed && c.JobStatus != EnumJobStatus.Cancelled, true).ConfigureAwait(false);
return await Repository.FindAsync(expression).ConfigureAwait(false);
}
public override async Task<List<InjectionJob>> 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);
#region 无用
public override Task<List<InjectionJob>> GetWorkingListByPackingAsync(string packingCode)
{
throw new NotImplementedException();
}
public async Task<InjectionJob> GetAsync(Expression<Func<InjectionJob, bool>> expression)
public override Task<List<InjectionJob>> GetWorkingListByContainerAsync(string containerCode)
{
return await Repository.FindAsync(expression).ConfigureAwait(false);
throw new NotImplementedException();
}
#endregion
}

10
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/SfsJobRecommendToDetailEntityBase.cs

@ -14,6 +14,11 @@ public abstract class SfsJobRecommendToDetailEntityBase
, IHasStdPack
{
/// <summary>
/// 物品代码
/// </summary>
public string ItemCode { get; set; }
/// <summary>
/// 物品名称
/// </summary>
@ -29,11 +34,6 @@ public abstract class SfsJobRecommendToDetailEntityBase
/// </summary>
public string ItemDesc2 { get; set; }
/// <summary>
/// 物品代码
/// </summary>
public string ItemCode { get; set; }
/// <summary>
/// 标包数量
/// </summary>

33
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/TransferLibJobs/TransferLibJob.cs

@ -1,86 +1,85 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using Volo.Abp.Data;
using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Domain;
/// <summary>
/// 计划外出库任务 //??TransferLib实体
/// 计划外出库任务 //??TransferLib实体
/// </summary>
[Display(Name = "计划外出库任务")]
public class TransferLibJob : SfsJobAggregateRootBase<TransferLibJobDetail>
{
/// <summary>
/// 申请单号
/// 申请单号
/// </summary>
[IgnoreUpdate]
public string RequestNumber { get; set; }
/// <summary>
/// 任务单号
/// 任务单号
/// </summary>
[IgnoreUpdate]
public string JobNumber { get; set; }
/// <summary>
/// 调拨类型
/// 调拨类型
/// </summary>
[Display(Name = "调拨类型")]
[Required(ErrorMessage = "调拨类型不能为空")]
public string Type { get; set; }
/// <summary>
/// 使用中间库
/// 使用中间库
/// </summary>
[Display(Name = "使用中间库")]
public bool UseOnTheWayLocation { get; set; }
/// <summary>
/// 确认时间
/// 确认时间
/// </summary>
[Display(Name = "确认时间")]
[IgnoreUpdate]
public DateTime? ConfirmTime { get; set; }
/// <summary>
/// 已确认
/// 已确认
/// </summary>
[Display(Name = "已确认")]
public bool Confirmed { get; set; }
/// <summary>
/// 任务明细
/// 任务明细
/// </summary>
[IgnoreUpdate]
public override List<TransferLibJobDetail> Details { get; set; } = new List<TransferLibJobDetail>();
public override List<TransferLibJobDetail> Details { get; set; } = new();
#region 回调服务相关
/// <summary>
/// 回调服务名称
/// 回调服务名称
/// </summary>
[Display(Name = "回调服务名称")]
public string CallServerName { get; set; }
/// <summary>
/// 回调业务类型
/// 回调业务类型
/// </summary>
[Display(Name = "回调业务类型")]
public string CallBusinessType { get; set; }
/// <summary>
/// 调用者传入申请单号
/// 调用者传入申请单号
/// </summary>
[Display(Name = "传入申请单号")]
public string CallRequestNumber { get; set; }
/// <summary>
/// 调用者传入任务单号
/// 调用者传入任务单号
/// </summary>
[Display(Name = "传入任务单号")]
public string CallJobNumber { get; set; }
#endregion
#endregion
}

448
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/TransferLibJobs/TransferLibJobDetail.cs

@ -1,48 +1,466 @@
using System;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Data;
using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Domain;
/// <summary>
/// //??TransferLib实体
/// //??TransferLib实体
/// </summary>
public class TransferLibJobDetail : SfsStoreDetailWithFromToEntityBase
public class TransferLibJobDetail : SfsStoreDetailEntityBase
{
/// <summary>
/// 中间库地址
/// </summary>
public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 原因
/// 原因
/// </summary>
public string Reason { get; set; }
/// <summary>
/// 执行任务状态
/// 执行任务状态
/// </summary>
public EnumJobStatus JobStatus { get; set; }
#region 回调服务相关
/// <summary>
/// 回调服务名称
/// 回调服务名称
/// </summary>
public string CallServerName { get; set; }
/// <summary>
/// 回调业务类型
/// 回调业务类型
/// </summary>
public string CallBusinessType { get; set; }
/// <summary>
/// 调用者传入申请单号
/// 调用者传入申请单号
/// </summary>
public string CallRequestNumber { get; set; }
/// <summary>
/// 调用者传入任务单号
/// 调用者传入任务单号
/// </summary>
public string CallJobNumber { get; set; }
#endregion
#region 库存基础信息
/// <summary>
/// 物品代码
/// </summary>
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>
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>
public string RequestWarehouseCode { get; set; }
/// <summary>
/// 在途库库位
/// </summary>
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 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
#region 开关
//箱码
public bool IsPackingCodeFrom { get; set; }
public bool IsPackingCodeTo { get; set; }
//批次
public bool IsLotFrom { get; set; }
public bool IsLotTo { get; set; }
//零件号
public bool IsItemCodeFrom { get; set; }
public bool IsItemCodeTo { get; set; }
//状态
public bool IsStatusFrom { get; set; }
public bool IsStatusTo { get; set; }
//库位
public bool IsLocationCodeFrom { get; set; }
public bool IsLocationCodeTo { get; set; }
//库位组
public bool IsLocationGroupFrom { get; set; }
public bool IsLocationGroupTo { get; set; }
//区域
public bool IsLocationAreaFrom { get; set; }
public bool IsLocationAreaTo { get; set; }
//储位
public bool IsLocationErpCodeFrom { get; set; }
public bool IsLocationErpCodeTo { get; set; }
//数量
public bool IsQtyFrom { get; set; }
public bool IsQtyTo { get; set; }
#endregion
}

6
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/InjectionNotes/InjectionNote.cs

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

500
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/InjectionNotes/InjectionNoteDetail.cs

@ -1,43 +1,519 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Domain;
public class InjectionNoteDetail : SfsStoreRecommendFromDetailWithFromToEntityBase
public class InjectionNoteDetail : SfsStoreDetailEntityBase
{
#region 库存基础信息
/// <summary>
/// 发料时间
/// 物品代码
/// </summary>
public DateTime IssueTime { get; set; }
public string ItemCode { get; set; }
/// <summary>
/// 过期时间
/// 物品名称
/// </summary>
public DateTime ExpiredTime { get; set; }
public string ItemName { get; set; }
/// <summary>
/// 生产线
/// 物品描述1
/// </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 WorkStation { get; set; }
public string RequestLocationArea { get; set; }
/// <summary>
/// 在途库库位
/// 到库位组
/// </summary>
public string RequestLocationGroup { get; set; }
/// <summary>
/// 到ERP库位
/// </summary>
public string RequestLocationErpCode { get; set; }
/// <summary>
/// 到仓库
/// </summary>
public string RequestWarehouseCode { get; set; }
/// <summary>
/// 在途库库位
/// </summary>
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
}

433
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/TransferLibNotes/TransferLibNoteDetail.cs

@ -1,3 +1,8 @@
using System;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Domain.Entities.Auditing;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Domain;
@ -5,14 +10,8 @@ namespace Win_in.Sfs.Wms.Store.Domain;
/// <summary>
/// 库存转移记录-明细表 //??TransferLib实体
/// </summary>
public class TransferLibNoteDetail : SfsStoreDetailWithFromToEntityBase
public class TransferLibNoteDetail : SfsStoreDetailEntityBase
{
/// <summary>
/// 中间库地址
/// </summary>
public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 原因
/// </summary>
@ -22,6 +21,7 @@ public class TransferLibNoteDetail : SfsStoreDetailWithFromToEntityBase
/// 执行任务状态
/// </summary>
public EnumJobStatus JobStatus { get; set; }
#region 回调服务相关
/// <summary>
/// 回调服务名称
@ -44,4 +44,423 @@ public class TransferLibNoteDetail : SfsStoreDetailWithFromToEntityBase
public string CallJobNumber { get; set; }
#endregion
#region 库存基础信息
/// <summary>
/// 物品代码
/// </summary>
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>
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>
public string RequestWarehouseCode { get; set; }
/// <summary>
/// 在途库库位
/// </summary>
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 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
#region 开关
//箱码
public bool IsPackingCodeFrom { get; set; }
public bool IsPackingCodeTo { get; set; }
//批次
public bool IsLotFrom { get; set; }
public bool IsLotTo { get; set; }
//零件号
public bool IsItemCodeFrom { get; set; }
public bool IsItemCodeTo { get; set; }
//状态
public bool IsStatusFrom { get; set; }
public bool IsStatusTo { get; set; }
//库位
public bool IsLocationCodeFrom { get; set; }
public bool IsLocationCodeTo { get; set; }
//库位组
public bool IsLocationGroupFrom { get; set; }
public bool IsLocationGroupTo { get; set; }
//区域
public bool IsLocationAreaFrom { get; set; }
public bool IsLocationAreaTo { get; set; }
//储位
public bool IsLocationErpCodeFrom { get; set; }
public bool IsLocationErpCodeTo { get; set; }
//数量
public bool IsQtyFrom { get; set; }
public bool IsQtyTo { get; set; }
#endregion
public void SetId(Guid id)
{
this.Id = id;
}
}

32
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/TransferLibNotes/TransferLibNoteManager.cs

@ -87,27 +87,31 @@ public class TransferLibNoteManager : SfsStoreManagerBase<TransferLibNote, Trans
detail.ItemDesc2 = item.Desc2;
}
var balance = await BalanceAppService.GetByItemLocationPackingAndStatusAsync(detail.FromPackingCode, detail.ItemCode, detail.FromLocationCode, detail.FromStatus).ConfigureAwait(false);
var balance = await BalanceAppService.GetByItemLocationPackingAndStatusAsync(detail.HandledFromPackingCode, detail.ItemCode, detail.HandledFromLocationCode, detail.Status).ConfigureAwait(false);
Check.NotNull(balance, "库存", $"不存在箱码为{detail.FromPackingCode},零件编码为{detail.ItemCode},库位为{detail.FromLocationCode},状态为{detail.FromStatus}的库存!");
Check.NotNull(balance, "库存", $"不存在箱码为{detail.HandledFromPackingCode},零件编码为{detail.ItemCode},库位为{detail.HandledFromLocationCode},状态为{detail.Status}的库存!");
detail.SupplierBatch = balance.SupplierBatch;
detail.ArriveDate = balance.ArriveDate;
detail.ProduceDate = balance.ProduceDate;
detail.ExpireDate = balance.ExpireDate;
detail.HandledFromSupplierBatch = balance.SupplierBatch;
detail.HandledToSupplierBatch = balance.SupplierBatch;
detail.HandledFromArriveDate = balance.ArriveDate;
detail.HandledToArriveDate = balance.ArriveDate;
detail.HandledFromProduceDate = balance.ProduceDate;
detail.HandledToProduceDate = balance.ProduceDate;
detail.HandledFromExpireDate = balance.ExpireDate;
detail.HandledToExpireDate = balance.ExpireDate;
//通过箱码和库位获取库存信息
detail.FromStatus = balance.Status;
detail.Status = balance.Status;
detail.FromLot = balance.Lot;
detail.FromWarehouseCode = balance.WarehouseCode;
detail.FromContainerCode = balance.ContainerCode;
detail.HandledFromLot = balance.Lot;
detail.HandledFromWarehouseCode = balance.WarehouseCode;
detail.HandledFromContainerCode = balance.ContainerCode;
detail.ToLot = balance.Lot;
detail.ToWarehouseCode = balance.WarehouseCode;
detail.ToContainerCode = balance.ContainerCode;
detail.HandledToLot = balance.Lot;
detail.HandledToWarehouseCode = balance.WarehouseCode;
detail.HandledToContainerCode = balance.ContainerCode;
detail.ToStatus = balance.Status;
detail.Status = balance.Status;
}
}

6
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionRequests/InjectionRequest.cs

@ -16,12 +16,6 @@ public class InjectionRequest : SfsStoreRequestAggregateRootBase<InjectionReques
[IgnoreUpdate]
public string Type { get; set; }
/// <summary>
/// 生产线
/// </summary>
[IgnoreUpdate]
public string ProdLine { get; set; }
/// <summary>
/// 使用在途库
/// </summary>

10
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionRequests/InjectionRequestDetail.cs

@ -56,16 +56,6 @@ public class InjectionRequestDetail : SfsStoreDetailWithQtyEntityBase, IHasToLoc
/// </summary>
public string ProdLine { get; set; }
/// <summary>
/// 工作中心
/// </summary>
public string WorkStation { get; set; }
/// <summary>
/// 过期时间
/// </summary>
public DateTime ExpiredTime { get; set; }
/// <summary>
/// 已发数量
/// </summary>

5
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/ThirdLocationRequests/ThirdLocationRequestDetail.cs

@ -77,10 +77,7 @@ public class ThirdLocationRequestDetail : SfsStoreDetailWithQtyEntityBase, IHasT
/// </summary>
public decimal ReceivedQty { get; set; }
/// <summary>
/// 明细状态
/// </summary>
public EnumStatus Status { get; set; }
/// <summary>
/// 请求未发 还未发送的数量

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

@ -73,48 +73,49 @@ public class ThirdLocationRequestManager
private void SetMaterialRequestDetailStatus(ThirdLocationRequestDetail detail)
{
if (detail.ReceivedQty >= detail.Qty)//执行的时候 实际收料 多余 要料数
{
detail.Status = EnumStatus.Close;
}
else
{
detail.Status = EnumStatus.Open;
}
//if (detail.ReceivedQty >= detail.Qty)//执行的时候 实际收料 多余 要料数
//{
// detail.Status = EnumStatus.Close;
//}
//else
//{
// detail.Status = EnumStatus.Open;
//}
}
private async Task SetMaterialRequestStatusAsync(ThirdLocationRequest materialRequest)
{
if (materialRequest.Details.All(p => p.Status == EnumStatus.Close))
{
materialRequest.RequestStatus = EnumRequestStatus.Completed;
}
else
{
var issueJobs = await _issueJobRepository.GetListAsync(t => t.MaterialRequestNumber == materialRequest.Number).ConfigureAwait(false);
if (issueJobs.Count > 0)
{
if (issueJobs.All(t => t.JobStatus is EnumJobStatus.Done or EnumJobStatus.Closed or EnumJobStatus.Cancelled))
{
if (materialRequest.Details.All(p => p.ReceivedQty >= p.Qty))
{
materialRequest.RequestStatus = EnumRequestStatus.Completed;
}
else
{
materialRequest.RequestStatus = EnumRequestStatus.Partial;
}
}
else
{
materialRequest.RequestStatus = EnumRequestStatus.Partial;
}
}
else
{
materialRequest.RequestStatus = EnumRequestStatus.Partial;
}
}
//if (materialRequest.Details.All(p => p.Status == EnumStatus.Close))
//{
// materialRequest.RequestStatus = EnumRequestStatus.Completed;
//}
//else
//{
// var issueJobs = await _issueJobRepository.GetListAsync(t => t.MaterialRequestNumber == materialRequest.Number).ConfigureAwait(false);
// if (issueJobs.Count > 0)
// {
// if (issueJobs.All(t => t.JobStatus is EnumJobStatus.Done or EnumJobStatus.Closed or EnumJobStatus.Cancelled))
// {
// if (materialRequest.Details.All(p => p.ReceivedQty >= p.Qty))
// {
// materialRequest.RequestStatus = EnumRequestStatus.Completed;
// }
// else
// {
// materialRequest.RequestStatus = EnumRequestStatus.Partial;
// }
// }
// else
// {
// materialRequest.RequestStatus = EnumRequestStatus.Partial;
// }
// }
// else
// {
// materialRequest.RequestStatus = EnumRequestStatus.Partial;
// }
//}
}
public virtual async Task CompleteAsync(string number)

47
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/TransferLibRequests/TransferLibRequestDetail.cs

@ -1,11 +1,12 @@
using System.Text.Json;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Domain;
/// <summary>
/// //??TransferLib实体
/// </summary>
public class TransferLibRequestDetail : SfsStoreDetailWithFromToEntityBase
public class TransferLibRequestDetail : NewRecommendFromTo
{
/// <summary>
/// 原因代码
@ -42,4 +43,48 @@ public class TransferLibRequestDetail : SfsStoreDetailWithFromToEntityBase
/// </summary>
public string CallJobNumber { get; set; }
#endregion
#region 校验
//箱码
public bool CheckPackingCodeFrom { get; set; }
public bool CheckPackingCodeTo { get; set; }
//批次
public bool CheckLotFrom { get; set; }
public bool CheckLotTo { get; set; }
//零件号
public bool CheckItemCodeFrom { get; set; }
public bool CheckItemCodeTo { get; set; }
//状态
public bool CheckStatusFrom { get; set; }
public bool CheckStatusTo { get; set; }
//库位
public bool CheckLocationCodeFrom { get; set; }
public bool CheckLocationCodeTo { get; set; }
//库位组
public bool CheckLocationGroupFrom { get; set; }
public bool CheckLocationGroupTo { get; set; }
//区域
public bool CheckLocationAreaFrom { get; set; }
public bool CheckLocationAreaTo { get; set; }
//储位
public bool CheckLocationErpCodeFrom { get; set; }
public bool CheckLocationErpCodeTo { get; set; }
//数量
public bool CheckQtyFrom { get; set; }
public bool CheckQtyTo { get; set; }
#endregion
}

32
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/TransferLibRequests/TransferLibRequestManager.cs

@ -49,27 +49,31 @@ public class TransferLibRequestManager : SfsStoreRequestManagerBase<TransferLibR
detail.ItemDesc2 = item.Desc2;
}
var balance = await BalanceAppService.GetByItemLocationPackingAndStatusAsync(detail.FromPackingCode, detail.ItemCode, detail.FromLocationCode, detail.FromStatus).ConfigureAwait(false);
var balance = await BalanceAppService.GetByItemLocationPackingAndStatusAsync(detail.RecommendFromPackingCode, detail.ItemCode, detail.RecommendFromLocationCode, detail.Status).ConfigureAwait(false);
Check.NotNull(balance, "库存", $"不存在箱码为{detail.FromPackingCode},零件编码为{detail.ItemCode},库位为{detail.FromLocationCode},状态为{detail.FromStatus}的库存!");
Check.NotNull(balance, "库存", $"不存在箱码为{detail.RecommendFromPackingCode},零件编码为{detail.ItemCode},库位为{detail.RecommendFromLocationCode},状态为{detail.Status}的库存!");
detail.SupplierBatch = balance.SupplierBatch;
detail.ArriveDate = balance.ArriveDate;
detail.ProduceDate = balance.ProduceDate;
detail.ExpireDate = balance.ExpireDate;
detail.RecommendFromSupplierBatch = balance.SupplierBatch;
detail.RecommendToSupplierBatch = balance.SupplierBatch;
detail.RecommendFromArriveDate = balance.ArriveDate;
detail.RecommendToArriveDate = balance.ArriveDate;
detail.RecommendFromProduceDate = balance.ProduceDate;
detail.RecommendToProduceDate = balance.ProduceDate;
detail.RecommendFromExpireDate = balance.ExpireDate;
detail.RecommendToExpireDate = balance.ExpireDate;
//通过箱码和库位获取库存信息
detail.FromStatus = balance.Status;
//detail.Status = balance.Status;
detail.FromLot = balance.Lot;
detail.FromWarehouseCode = balance.WarehouseCode;
detail.FromContainerCode = balance.ContainerCode;
detail.RecommendFromLot = balance.Lot;
detail.RecommendFromWarehouseCode = balance.WarehouseCode;
detail.RecommendFromContainerCode = balance.ContainerCode;
detail.ToLot = balance.Lot;
detail.ToWarehouseCode = balance.WarehouseCode;
detail.ToContainerCode = balance.ContainerCode;
detail.RecommendToLot = balance.Lot;
detail.RecommendToWarehouseCode = balance.WarehouseCode;
detail.RecommendToContainerCode = balance.ContainerCode;
detail.ToStatus = balance.Status;
detail.Status = balance.Status;
}
}
}

21
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/InjectionJobs/InjectionJobDbContextModelCreatingExtensions.cs

@ -23,8 +23,9 @@ public static class InjectionJobDbContextModelCreatingExtensions
//Properties
b.Property(q => q.RequestType).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.InjectionRequestNumber).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.Workshop).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
b.HasMany(q => q.Details).WithOne().HasForeignKey(d => d.MasterID).IsRequired();
//Indexes
@ -40,25 +41,17 @@ public static class InjectionJobDbContextModelCreatingExtensions
//Configure Sfs base properties
b.ConfigureSfsBase();
//Configure Job base properties
b.ConfigureJobRecommendFromDetail();
//b.ConfigureJobRecommendFromDetail();
//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.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.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.Status).IsRequired().HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
//Relations
//None

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

File diff suppressed because it is too large

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

File diff suppressed because it is too large

29756
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240412061448_transferLibV2.Designer.cs

File diff suppressed because it is too large

558
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240412061448_transferLibV2.cs

@ -0,0 +1,558 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Win_in.Sfs.Wms.Store.Migrations
{
public partial class transferLibV2 : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<DateTime>(
name: "RecommendFromArriveDate",
table: "Store_TransferLibNoteDetail",
type: "datetime2",
nullable: false,
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
migrationBuilder.AddColumn<string>(
name: "RecommendFromContainerCode",
table: "Store_TransferLibNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<DateTime>(
name: "RecommendFromExpireDate",
table: "Store_TransferLibNoteDetail",
type: "datetime2",
nullable: false,
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
migrationBuilder.AddColumn<string>(
name: "RecommendFromLocationArea",
table: "Store_TransferLibNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendFromLocationCode",
table: "Store_TransferLibNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendFromLocationErpCode",
table: "Store_TransferLibNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendFromLocationGroup",
table: "Store_TransferLibNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendFromLot",
table: "Store_TransferLibNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendFromPackingCode",
table: "Store_TransferLibNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<DateTime>(
name: "RecommendFromProduceDate",
table: "Store_TransferLibNoteDetail",
type: "datetime2",
nullable: false,
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
migrationBuilder.AddColumn<decimal>(
name: "RecommendFromQty",
table: "Store_TransferLibNoteDetail",
type: "decimal(18,6)",
nullable: false,
defaultValue: 0m);
migrationBuilder.AddColumn<string>(
name: "RecommendFromSupplierBatch",
table: "Store_TransferLibNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendFromWarehouseCode",
table: "Store_TransferLibNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<DateTime>(
name: "RecommendToArriveDate",
table: "Store_TransferLibNoteDetail",
type: "datetime2",
nullable: false,
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
migrationBuilder.AddColumn<string>(
name: "RecommendToContainerCode",
table: "Store_TransferLibNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<DateTime>(
name: "RecommendToExpireDate",
table: "Store_TransferLibNoteDetail",
type: "datetime2",
nullable: false,
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
migrationBuilder.AddColumn<string>(
name: "RecommendToLocationArea",
table: "Store_TransferLibNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendToLocationCode",
table: "Store_TransferLibNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendToLocationErpCode",
table: "Store_TransferLibNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendToLocationGroup",
table: "Store_TransferLibNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendToLot",
table: "Store_TransferLibNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendToPackingCode",
table: "Store_TransferLibNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<DateTime>(
name: "RecommendToProduceDate",
table: "Store_TransferLibNoteDetail",
type: "datetime2",
nullable: false,
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
migrationBuilder.AddColumn<decimal>(
name: "RecommendToQty",
table: "Store_TransferLibNoteDetail",
type: "decimal(18,6)",
nullable: false,
defaultValue: 0m);
migrationBuilder.AddColumn<string>(
name: "RecommendToSupplierBatch",
table: "Store_TransferLibNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendToWarehouseCode",
table: "Store_TransferLibNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<DateTime>(
name: "RecommendFromArriveDate",
table: "Job_TransferLibJobDetail",
type: "datetime2",
nullable: false,
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
migrationBuilder.AddColumn<string>(
name: "RecommendFromContainerCode",
table: "Job_TransferLibJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<DateTime>(
name: "RecommendFromExpireDate",
table: "Job_TransferLibJobDetail",
type: "datetime2",
nullable: false,
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
migrationBuilder.AddColumn<string>(
name: "RecommendFromLocationArea",
table: "Job_TransferLibJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendFromLocationCode",
table: "Job_TransferLibJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendFromLocationErpCode",
table: "Job_TransferLibJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendFromLocationGroup",
table: "Job_TransferLibJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendFromLot",
table: "Job_TransferLibJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendFromPackingCode",
table: "Job_TransferLibJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<DateTime>(
name: "RecommendFromProduceDate",
table: "Job_TransferLibJobDetail",
type: "datetime2",
nullable: false,
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
migrationBuilder.AddColumn<decimal>(
name: "RecommendFromQty",
table: "Job_TransferLibJobDetail",
type: "decimal(18,6)",
nullable: false,
defaultValue: 0m);
migrationBuilder.AddColumn<string>(
name: "RecommendFromSupplierBatch",
table: "Job_TransferLibJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendFromWarehouseCode",
table: "Job_TransferLibJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<DateTime>(
name: "RecommendToArriveDate",
table: "Job_TransferLibJobDetail",
type: "datetime2",
nullable: false,
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
migrationBuilder.AddColumn<string>(
name: "RecommendToContainerCode",
table: "Job_TransferLibJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<DateTime>(
name: "RecommendToExpireDate",
table: "Job_TransferLibJobDetail",
type: "datetime2",
nullable: false,
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
migrationBuilder.AddColumn<string>(
name: "RecommendToLocationArea",
table: "Job_TransferLibJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendToLocationCode",
table: "Job_TransferLibJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendToLocationErpCode",
table: "Job_TransferLibJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendToLocationGroup",
table: "Job_TransferLibJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendToLot",
table: "Job_TransferLibJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendToPackingCode",
table: "Job_TransferLibJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<DateTime>(
name: "RecommendToProduceDate",
table: "Job_TransferLibJobDetail",
type: "datetime2",
nullable: false,
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
migrationBuilder.AddColumn<decimal>(
name: "RecommendToQty",
table: "Job_TransferLibJobDetail",
type: "decimal(18,6)",
nullable: false,
defaultValue: 0m);
migrationBuilder.AddColumn<string>(
name: "RecommendToSupplierBatch",
table: "Job_TransferLibJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RecommendToWarehouseCode",
table: "Job_TransferLibJobDetail",
type: "nvarchar(max)",
nullable: true);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "RecommendFromArriveDate",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendFromContainerCode",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendFromExpireDate",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendFromLocationArea",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendFromLocationCode",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendFromLocationErpCode",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendFromLocationGroup",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendFromLot",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendFromPackingCode",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendFromProduceDate",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendFromQty",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendFromSupplierBatch",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendFromWarehouseCode",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendToArriveDate",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendToContainerCode",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendToExpireDate",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendToLocationArea",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendToLocationCode",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendToLocationErpCode",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendToLocationGroup",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendToLot",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendToPackingCode",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendToProduceDate",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendToQty",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendToSupplierBatch",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendToWarehouseCode",
table: "Store_TransferLibNoteDetail");
migrationBuilder.DropColumn(
name: "RecommendFromArriveDate",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendFromContainerCode",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendFromExpireDate",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendFromLocationArea",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendFromLocationCode",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendFromLocationErpCode",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendFromLocationGroup",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendFromLot",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendFromPackingCode",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendFromProduceDate",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendFromQty",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendFromSupplierBatch",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendFromWarehouseCode",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendToArriveDate",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendToContainerCode",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendToExpireDate",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendToLocationArea",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendToLocationCode",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendToLocationErpCode",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendToLocationGroup",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendToLot",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendToPackingCode",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendToProduceDate",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendToQty",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendToSupplierBatch",
table: "Job_TransferLibJobDetail");
migrationBuilder.DropColumn(
name: "RecommendToWarehouseCode",
table: "Job_TransferLibJobDetail");
}
}
}

738
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/StoreDbContextModelSnapshot.cs

@ -6545,10 +6545,6 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Property<string>("Worker")
.HasColumnType("nvarchar(max)");
b.Property<string>("Workshop")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.HasKey("Id");
b.HasIndex("Number")
@ -6570,94 +6566,95 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("uniqueidentifier")
.HasColumnName("CreatorId");
b.Property<decimal>("DeliveryQty")
.HasColumnType("decimal(18,6)");
b.Property<string>("DistributionType")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<DateTime>("ExpiredTime")
.HasColumnType("datetime2");
b.Property<DateTime>("HandledArriveDate")
b.Property<DateTime>("HandledFromArriveDate")
.HasColumnType("datetime2");
b.Property<string>("HandledContainerCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("HandledContainerCode");
b.Property<string>("HandledFromContainerCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("HandledExpireDate")
b.Property<DateTime>("HandledFromExpireDate")
.HasColumnType("datetime2");
b.Property<string>("HandledFromLocationArea")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("HandledFromLocationArea");
.HasColumnType("nvarchar(max)");
b.Property<string>("HandledFromLocationCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("HandledFromLocationCode");
.HasColumnType("nvarchar(max)");
b.Property<string>("HandledFromLocationErpCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("HandledFromLocationErpCode");
.HasColumnType("nvarchar(max)");
b.Property<string>("HandledFromLocationGroup")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("HandledFromLocationGroup");
.HasColumnType("nvarchar(max)");
b.Property<string>("HandledFromLot")
.HasColumnType("nvarchar(max)");
b.Property<string>("HandledFromPackingCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("HandledFromProduceDate")
.HasColumnType("datetime2");
b.Property<decimal>("HandledFromQty")
.HasColumnType("decimal(18,6)");
b.Property<string>("HandledFromSupplierBatch")
.HasColumnType("nvarchar(max)");
b.Property<string>("HandledFromWarehouseCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("HandledFromWarehouseCode");
.HasColumnType("nvarchar(max)");
b.Property<string>("HandledLot")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("HandledLot");
b.Property<DateTime>("HandledToArriveDate")
.HasColumnType("datetime2");
b.Property<string>("HandledPackingCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("HandledPackingCode");
b.Property<string>("HandledToContainerCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("HandledProduceDate")
b.Property<DateTime>("HandledToExpireDate")
.HasColumnType("datetime2");
b.Property<decimal>("HandledQty")
b.Property<string>("HandledToLocationArea")
.HasColumnType("nvarchar(max)");
b.Property<string>("HandledToLocationCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("HandledToLocationErpCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("HandledToLocationGroup")
.HasColumnType("nvarchar(max)");
b.Property<string>("HandledToLot")
.HasColumnType("nvarchar(max)");
b.Property<string>("HandledToPackingCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("HandledToProduceDate")
.HasColumnType("datetime2");
b.Property<decimal>("HandledToQty")
.HasColumnType("decimal(18,6)");
b.Property<string>("HandledSupplierBatch")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("HandledSupplierBatch");
b.Property<string>("HandledToSupplierBatch")
.HasColumnType("nvarchar(max)");
b.Property<string>("HandledToWarehouseCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("ItemCode")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("ItemCode");
.HasColumnType("nvarchar(max)");
b.Property<string>("ItemDesc1")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("ItemDesc1");
.HasColumnType("nvarchar(max)");
b.Property<string>("ItemDesc2")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("ItemDesc2");
.HasColumnType("nvarchar(max)");
b.Property<string>("ItemName")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("ItemName");
.HasColumnType("nvarchar(max)");
b.Property<DateTime?>("LastModificationTime")
.HasColumnType("datetime2")
@ -6671,26 +6668,12 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("uniqueidentifier");
b.Property<string>("Number")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
.HasColumnType("nvarchar(max)");
b.Property<string>("OnTheWayLocationCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("Operation")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<DateTime>("PlanBeginTime")
.HasColumnType("datetime2");
b.Property<string>("PlannedSplitRule")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("PositionCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
@ -6699,62 +6682,83 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<DateTime>("RecommendArriveDate")
b.Property<DateTime>("RecommendFromArriveDate")
.HasColumnType("datetime2");
b.Property<string>("RecommendContainerCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("RecommendContainerCode");
b.Property<string>("RecommendFromContainerCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("RecommendExpireDate")
b.Property<DateTime>("RecommendFromExpireDate")
.HasColumnType("datetime2");
b.Property<string>("RecommendFromLocationArea")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("RecommendFromLocationArea");
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendFromLocationCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("RecommendFromLocationCode");
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendFromLocationErpCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("RecommendFromLocationErpCode");
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendFromLocationGroup")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("RecommendFromLocationGroup");
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendFromLot")
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendFromPackingCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("RecommendFromProduceDate")
.HasColumnType("datetime2");
b.Property<decimal>("RecommendFromQty")
.HasColumnType("decimal(18,6)");
b.Property<string>("RecommendFromSupplierBatch")
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendFromWarehouseCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("RecommendFromWarehouseCode");
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendLot")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("RecommendLot");
b.Property<DateTime>("RecommendToArriveDate")
.HasColumnType("datetime2");
b.Property<string>("RecommendPackingCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("RecommendPackingCode");
b.Property<string>("RecommendToContainerCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("RecommendProduceDate")
b.Property<DateTime>("RecommendToExpireDate")
.HasColumnType("datetime2");
b.Property<decimal>("RecommendQty")
b.Property<string>("RecommendToLocationArea")
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendToLocationCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendToLocationErpCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendToLocationGroup")
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendToLot")
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendToPackingCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("RecommendToProduceDate")
.HasColumnType("datetime2");
b.Property<decimal>("RecommendToQty")
.HasColumnType("decimal(18,6)");
b.Property<string>("RecommendSupplierBatch")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("RecommendSupplierBatch");
b.Property<string>("RecommendToSupplierBatch")
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendToWarehouseCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendType")
.IsRequired()
@ -6766,17 +6770,27 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("nvarchar(3072)")
.HasColumnName("Remark");
b.Property<string>("RequestLocationArea")
.HasColumnType("nvarchar(max)");
b.Property<string>("RequestLocationCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<decimal>("RoundedQty")
b.Property<string>("RequestLocationErpCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("RequestLocationGroup")
.HasColumnType("nvarchar(max)");
b.Property<decimal>("RequestQty")
.HasColumnType("decimal(18,6)");
b.Property<string>("Status")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("RequestWarehouseCode")
.HasColumnType("nvarchar(max)");
b.Property<int>("Status")
.HasColumnType("int");
b.Property<decimal>("StdPackQty")
.HasColumnType("decimal(18,6)");
@ -6785,37 +6799,86 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.Property<string>("ToLocationArea")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<DateTime>("TransferLibFromArriveDate")
.HasColumnType("datetime2");
b.Property<string>("ToLocationCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("TransferLibFromContainerCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("ToLocationErpCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<DateTime>("TransferLibFromExpireDate")
.HasColumnType("datetime2");
b.Property<string>("ToLocationGroup")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("TransferLibFromLocationArea")
.HasColumnType("nvarchar(max)");
b.Property<string>("ToWarehouseCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("TransferLibFromLocationCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("TruncType")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("TransferLibFromLocationErpCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("Uom")
b.Property<string>("TransferLibFromLocationGroup")
.HasColumnType("nvarchar(max)");
b.Property<string>("WorkStation")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("TransferLibFromLot")
.HasColumnType("nvarchar(max)");
b.Property<string>("TransferLibFromPackingCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("TransferLibFromProduceDate")
.HasColumnType("datetime2");
b.Property<decimal>("TransferLibFromQty")
.HasColumnType("decimal(18,6)");
b.Property<string>("TransferLibFromSupplierBatch")
.HasColumnType("nvarchar(max)");
b.Property<string>("TransferLibFromWarehouseCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("TransferLibToArriveDate")
.HasColumnType("datetime2");
b.Property<string>("TransferLibToContainerCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("TransferLibToExpireDate")
.HasColumnType("datetime2");
b.Property<string>("TransferLibToLocationArea")
.HasColumnType("nvarchar(max)");
b.Property<string>("TransferLibToLocationCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("TransferLibToLocationErpCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("TransferLibToLocationGroup")
.HasColumnType("nvarchar(max)");
b.Property<string>("TransferLibToLot")
.HasColumnType("nvarchar(max)");
b.Property<string>("TransferLibToPackingCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("TransferLibToProduceDate")
.HasColumnType("datetime2");
b.Property<decimal>("TransferLibToQty")
.HasColumnType("decimal(18,6)");
b.Property<string>("TransferLibToSupplierBatch")
.HasColumnType("nvarchar(max)");
b.Property<string>("TransferLibToWarehouseCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("Uom")
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
@ -6898,10 +6961,6 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Property<string>("Worker")
.HasColumnType("nvarchar(max)");
b.Property<string>("Workshop")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.HasKey("Id");
b.HasIndex("Number")
@ -6915,9 +6974,6 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Property<Guid>("Id")
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("ArriveDate")
.HasColumnType("datetime2");
b.Property<DateTime>("CreationTime")
.HasColumnType("datetime2")
.HasColumnName("CreationTime");
@ -6926,113 +6982,83 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("uniqueidentifier")
.HasColumnName("CreatorId");
b.Property<DateTime>("ExpireDate")
b.Property<DateTime>("HandledFromArriveDate")
.HasColumnType("datetime2");
b.Property<DateTime>("ExpiredTime")
b.Property<string>("HandledFromContainerCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("HandledFromExpireDate")
.HasColumnType("datetime2");
b.Property<string>("FromContainerCode")
b.Property<string>("HandledFromLocationArea")
.HasColumnType("nvarchar(max)");
b.Property<string>("FromLocationArea")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("FromLocationArea");
b.Property<string>("FromLocationCode")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("FromLocationCode");
b.Property<string>("HandledFromLocationCode")
.HasColumnType("nvarchar(450)");
b.Property<string>("FromLocationErpCode")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("FromLocationErpCode");
b.Property<string>("HandledFromLocationErpCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("FromLocationGroup")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("FromLocationGroup");
b.Property<string>("HandledFromLocationGroup")
.HasColumnType("nvarchar(max)");
b.Property<string>("FromLot")
b.Property<string>("HandledFromLot")
.HasColumnType("nvarchar(max)");
b.Property<string>("FromPackingCode")
b.Property<string>("HandledFromPackingCode")
.HasColumnType("nvarchar(450)");
b.Property<string>("FromStatus")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<DateTime>("HandledFromProduceDate")
.HasColumnType("datetime2");
b.Property<string>("FromWarehouseCode")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("FromWarehouseCode");
b.Property<decimal>("HandledFromQty")
.HasColumnType("decimal(18,6)");
b.Property<DateTime>("HandledArriveDate")
.HasColumnType("datetime2");
b.Property<string>("HandledFromSupplierBatch")
.HasColumnType("nvarchar(max)");
b.Property<string>("HandledContainerCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("HandledContainerCode");
b.Property<string>("HandledFromWarehouseCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("HandledExpireDate")
b.Property<DateTime>("HandledToArriveDate")
.HasColumnType("datetime2");
b.Property<string>("HandledFromLocationArea")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("HandledFromLocationArea");
b.Property<string>("HandledToContainerCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("HandledFromLocationCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("HandledFromLocationCode");
b.Property<DateTime>("HandledToExpireDate")
.HasColumnType("datetime2");
b.Property<string>("HandledFromLocationErpCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("HandledFromLocationErpCode");
b.Property<string>("HandledToLocationArea")
.HasColumnType("nvarchar(max)");
b.Property<string>("HandledFromLocationGroup")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("HandledFromLocationGroup");
b.Property<string>("HandledToLocationCode")
.HasColumnType("nvarchar(450)");
b.Property<string>("HandledFromWarehouseCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("HandledFromWarehouseCode");
b.Property<string>("HandledToLocationErpCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("HandledLot")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("HandledLot");
b.Property<string>("HandledToLocationGroup")
.HasColumnType("nvarchar(max)");
b.Property<string>("HandledPackingCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("HandledPackingCode");
b.Property<string>("HandledToLot")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("HandledProduceDate")
b.Property<string>("HandledToPackingCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("HandledToProduceDate")
.HasColumnType("datetime2");
b.Property<decimal>("HandledQty")
b.Property<decimal>("HandledToQty")
.HasColumnType("decimal(18,6)");
b.Property<string>("HandledSupplierBatch")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("HandledSupplierBatch");
b.Property<string>("HandledToSupplierBatch")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("IssueTime")
.HasColumnType("datetime2");
b.Property<string>("HandledToWarehouseCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("ItemCode")
.IsRequired()
@ -7084,70 +7110,83 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<DateTime>("ProduceDate")
.HasColumnType("datetime2");
b.Property<decimal>("Qty")
.HasPrecision(18, 6)
.HasColumnType("decimal(18,6)")
.HasColumnName("Qty");
b.Property<DateTime>("RecommendArriveDate")
b.Property<DateTime>("RecommendFromArriveDate")
.HasColumnType("datetime2");
b.Property<string>("RecommendContainerCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("RecommendContainerCode");
b.Property<string>("RecommendFromContainerCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("RecommendExpireDate")
b.Property<DateTime>("RecommendFromExpireDate")
.HasColumnType("datetime2");
b.Property<string>("RecommendFromLocationArea")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("RecommendFromLocationArea");
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendFromLocationCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("RecommendFromLocationCode");
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendFromLocationErpCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("RecommendFromLocationErpCode");
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendFromLocationGroup")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("RecommendFromLocationGroup");
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendFromLot")
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendFromPackingCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("RecommendFromProduceDate")
.HasColumnType("datetime2");
b.Property<decimal>("RecommendFromQty")
.HasColumnType("decimal(18,6)");
b.Property<string>("RecommendFromSupplierBatch")
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendFromWarehouseCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("RecommendFromWarehouseCode");
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendLot")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("RecommendLot");
b.Property<DateTime>("RecommendToArriveDate")
.HasColumnType("datetime2");
b.Property<string>("RecommendPackingCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("RecommendPackingCode");
b.Property<string>("RecommendToContainerCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("RecommendProduceDate")
b.Property<DateTime>("RecommendToExpireDate")
.HasColumnType("datetime2");
b.Property<decimal>("RecommendQty")
b.Property<string>("RecommendToLocationArea")
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendToLocationCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendToLocationErpCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendToLocationGroup")
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendToLot")
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendToPackingCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("RecommendToProduceDate")
.HasColumnType("datetime2");
b.Property<decimal>("RecommendToQty")
.HasColumnType("decimal(18,6)");
b.Property<string>("RecommendSupplierBatch")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("RecommendSupplierBatch");
b.Property<string>("RecommendToSupplierBatch")
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendToWarehouseCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("RecommendType")
.IsRequired()
@ -7159,79 +7198,124 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("nvarchar(3072)")
.HasColumnName("Remark");
b.Property<decimal>("StdPackQty")
b.Property<string>("RequestLocationArea")
.HasColumnType("nvarchar(max)");
b.Property<string>("RequestLocationCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("RequestLocationErpCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("RequestLocationGroup")
.HasColumnType("nvarchar(max)");
b.Property<decimal>("RequestQty")
.HasColumnType("decimal(18,6)");
b.Property<string>("SupplierBatch")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("SupplierBatch");
b.Property<string>("RequestWarehouseCode")
.HasColumnType("nvarchar(max)");
b.Property<int>("Status")
.HasColumnType("int");
b.Property<decimal>("StdPackQty")
.HasColumnType("decimal(18,6)");
b.Property<Guid?>("TenantId")
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.Property<string>("ToContainerCode")
b.Property<DateTime>("TransferLibFromArriveDate")
.HasColumnType("datetime2");
b.Property<string>("TransferLibFromContainerCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("ToLocationArea")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("ToLocationArea");
b.Property<DateTime>("TransferLibFromExpireDate")
.HasColumnType("datetime2");
b.Property<string>("ToLocationCode")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("ToLocationCode");
b.Property<string>("TransferLibFromLocationArea")
.HasColumnType("nvarchar(max)");
b.Property<string>("ToLocationErpCode")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("ToLocationErpCode");
b.Property<string>("TransferLibFromLocationCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("ToLocationGroup")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("ToLocationGroup");
b.Property<string>("TransferLibFromLocationErpCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("ToLot")
b.Property<string>("TransferLibFromLocationGroup")
.HasColumnType("nvarchar(max)");
b.Property<string>("ToPackingCode")
b.Property<string>("TransferLibFromLot")
.HasColumnType("nvarchar(max)");
b.Property<string>("ToStatus")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("TransferLibFromPackingCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("ToWarehouseCode")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("ToWarehouseCode");
b.Property<DateTime>("TransferLibFromProduceDate")
.HasColumnType("datetime2");
b.Property<string>("Uom")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("Uom");
b.Property<decimal>("TransferLibFromQty")
.HasColumnType("decimal(18,6)");
b.Property<string>("WorkStation")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("TransferLibFromSupplierBatch")
.HasColumnType("nvarchar(max)");
b.Property<string>("TransferLibFromWarehouseCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("TransferLibToArriveDate")
.HasColumnType("datetime2");
b.Property<string>("TransferLibToContainerCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("TransferLibToExpireDate")
.HasColumnType("datetime2");
b.Property<string>("TransferLibToLocationArea")
.HasColumnType("nvarchar(max)");
b.Property<string>("TransferLibToLocationCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("TransferLibToLocationErpCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("TransferLibToLocationGroup")
.HasColumnType("nvarchar(max)");
b.Property<string>("TransferLibToLot")
.HasColumnType("nvarchar(max)");
b.Property<string>("TransferLibToPackingCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("TransferLibToProduceDate")
.HasColumnType("datetime2");
b.Property<decimal>("TransferLibToQty")
.HasColumnType("decimal(18,6)");
b.Property<string>("TransferLibToSupplierBatch")
.HasColumnType("nvarchar(max)");
b.Property<string>("TransferLibToWarehouseCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("Uom")
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("FromPackingCode");
b.HasIndex("HandledFromPackingCode");
b.HasIndex("MasterID");
b.HasIndex("Number", "FromPackingCode", "FromLocationCode", "ToLocationCode")
b.HasIndex("Number", "HandledFromPackingCode", "HandledFromLocationCode", "HandledToLocationCode")
.IsUnique()
.HasFilter("[FromPackingCode] IS NOT NULL");
.HasFilter("[HandledFromPackingCode] IS NOT NULL AND [HandledFromLocationCode] IS NOT NULL AND [HandledToLocationCode] IS NOT NULL");
b.ToTable("Store_InjectionNoteDetail", (string)null);
});
@ -7343,9 +7427,6 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("uniqueidentifier")
.HasColumnName("CreatorId");
b.Property<DateTime>("ExpiredTime")
.HasColumnType("datetime2");
b.Property<decimal>("IssuedQty")
.HasPrecision(18, 6)
.HasColumnType("decimal(18,6)");
@ -7458,10 +7539,6 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("nvarchar(64)")
.HasColumnName("Uom");
b.Property<string>("WorkStation")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.HasKey("Id");
b.HasIndex("ItemCode");
@ -21755,6 +21832,14 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Property<DateTime>("ExpiredTime")
.HasColumnType("datetime2");
b.Property<string>("FromLocationArea")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("FromLocationCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<DateTime>("HandledArriveDate")
.HasColumnType("datetime2");
@ -21940,10 +22025,6 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("nvarchar(3072)")
.HasColumnName("Remark");
b.Property<string>("RequestLocationCode")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<decimal>("RoundedQty")
.HasColumnType("decimal(18,6)");
@ -22518,7 +22599,14 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("datetime2");
b.Property<string>("FromLocationArea")
.HasColumnType("nvarchar(max)");
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("FromLocationCode")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<decimal>("IssuedQty")
.HasPrecision(18, 6)

10
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/InjectionNotes/InjectionNoteDbContextModelCreatingExtensions.cs

@ -21,7 +21,6 @@ public static class InjectionNoteDbContextModelCreatingExtensions
//Properties
b.Property(q => q.RequestNumber).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.RequestType).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.Workshop).HasMaxLength(SfsPropertyConst.NameLength);
b.Property(q => q.Remark).HasMaxLength(SfsPropertyConst.RemarkLength);
//Relations
@ -43,21 +42,16 @@ public static class InjectionNoteDbContextModelCreatingExtensions
b.ConfigureSfsStoreDetailBase();
//Properties
b.Property(q => q.IssueTime).IsRequired();
b.Property(q => q.ExpiredTime).IsRequired();
b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.NameLength);
b.Property(q => q.WorkStation).HasMaxLength(SfsPropertyConst.NameLength);
b.Property(q => q.OnTheWayLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.FromStatus).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
b.Property(q => q.ToStatus).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
b.Property(q => q.PositionCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.RecommendType).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
//Relations
//Indexes
b.HasIndex(q => new { q.Number, q.FromPackingCode, q.FromLocationCode, q.ToLocationCode }).IsUnique();
b.HasIndex(q => new { q.FromPackingCode });
b.HasIndex(q => new { q.Number, q.HandledFromPackingCode, q.HandledFromLocationCode, q.HandledToLocationCode }).IsUnique();
b.HasIndex(q => new { q.HandledFromPackingCode });
});
}
}

6
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/TransferLibNotes/TransferLibNoteDbContextModelCreatingExtensions.cs

@ -40,13 +40,13 @@ public static class TransferLibNoteDbContextModelCreatingExtensions
//Properties
b.Property(q => q.Reason).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.FromStatus).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
b.Property(q => q.ToStatus).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
b.Property(q => q.Status).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
b.Property(q => q.Status).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
//Relations
//Indexes
b.HasIndex(q => new { q.Number, q.FromPackingCode, q.FromLocationCode, q.ToLocationCode, q.FromStatus, q.ToStatus }).IsUnique();
b.HasIndex(q => new { q.Number, q.HandledFromPackingCode, q.HandledFromLocationCode, q.HandledToLocationCode, q.Status }).IsUnique();
});
}
}

3
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/MaterialRequests/InjectionRequests/InjectionRequestDbContextModelCreatingExtensions.cs

@ -20,7 +20,6 @@ public static class InjectionRequestDbContextModelCreatingExtensions
//Properties
b.Property(q => q.Type).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.RequestStatus).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
//Relations
@ -46,9 +45,7 @@ public static class InjectionRequestDbContextModelCreatingExtensions
b.Property(q => q.ToWarehouseCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ToLocationArea).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ToLocationGroup).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ExpiredTime).IsRequired();
b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.WorkStation).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.IssuedQty).HasPrecision(18, 6);
b.Property(q => q.ReceivedQty).HasPrecision(18, 6);
b.Property(q => q.Status).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();

3
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/ThirdLocationRequests/ThirdLocationRequestDbContextModelCreatingExtensions.cs

@ -53,8 +53,7 @@ public static class ThirdLocationRequestDbContextModelCreatingExtensions
b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.WorkStation).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.IssuedQty).HasPrecision(18, 6);
b.Property(q => q.ReceivedQty).HasPrecision(18, 6);
b.Property(q => q.Status).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
b.Property(q => q.ReceivedQty).HasPrecision(18, 6);
b.Property(q => q.PositionCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.RecommendType).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();

4
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/TransferLibRequests/TransferLibRequestDbContextModelCreatingExtensions.cs

@ -40,8 +40,8 @@ public static class TransferLibRequestDbContextModelCreatingExtensions
b.ConfigureSfsStoreDetailBase();
//Properties
b.Property(q => q.FromStatus).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
b.Property(q => q.ToStatus).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
//b.Property(q => q.FromStatus).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
//b.Property(q => q.ToStatus).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
//Relations

55
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/InjectionJobAutoMapperProfile.cs

@ -23,44 +23,8 @@ public partial class StoreEventAutoMapperProfile : Profile
.Ignore(x => x.ConfirmTime);
CreateMap<InjectionJobDetail, InjectionNoteDetail>()
.ForMember(x => x.FromPackingCode, y => y.MapFrom(d => d.HandledPackingCode))
.ForMember(x => x.ToPackingCode, y => y.MapFrom(d => d.HandledPackingCode))
.ForMember(x => x.SupplierBatch, y => y.MapFrom(d => d.HandledSupplierBatch))
.ForMember(x => x.ArriveDate, y => y.MapFrom(d => d.HandledArriveDate))
.ForMember(x => x.ProduceDate, y => y.MapFrom(d => d.HandledProduceDate))
.ForMember(x => x.ExpireDate, y => y.MapFrom(d => d.HandledExpireDate))
.ForMember(x => x.FromLot, y => y.MapFrom(d => d.HandledLot))
.ForMember(x => x.ToLot, y => y.MapFrom(d => d.HandledLot))
.ForMember(x => x.ToContainerCode, y => y.MapFrom(d => d.HandledContainerCode))
.ForMember(x => x.FromContainerCode, y => y.MapFrom(d => d.HandledContainerCode))
.ForMember(x => x.FromStatus, y => y.MapFrom(d => d.Status))
.ForMember(x => x.ToStatus, y => y.MapFrom(d => d.Status))
.ForMember(x => x.Qty, y => y.MapFrom(d => d.HandledQty))
.ForMember(x => x.IssueTime, y => y.MapFrom(d => DateTime.Now))
.ForMember(x => x.FromLocationCode, y => y.MapFrom(d => d.HandledFromLocationCode))
.ForMember(x => x.FromLocationArea, y => y.MapFrom(d => d.HandledFromLocationArea))
.ForMember(x => x.FromLocationGroup, y => y.MapFrom(d => d.HandledFromLocationGroup))
.ForMember(x => x.FromLocationErpCode, y => y.MapFrom(d => d.HandledFromLocationErpCode))
.ForMember(x => x.FromWarehouseCode, y => y.MapFrom(d => d.HandledFromWarehouseCode))
.ForMember(x => x.ToLocationCode, y => y.MapFrom(d => d.ToLocationCode))
.Ignore(x => x.ToLocationArea)
.Ignore(x => x.ToLocationGroup)
.Ignore(x => x.ToLocationErpCode)
;
CreateMap<InjectionJobDetail, ExpectInEditInput>()
.MapExpectInOutFrom()
.Ignore(x => x.Worker)
.Ignore(x => x.SerialNumber)
.Ignore(x => x.ExtraProperties)
;
CreateMap<InjectionJobDetail, ExpectOutEditInput>()
.MapExpectInOutFrom()
.Ignore(x => x.Worker)
.Ignore(x => x.SerialNumber)
.Ignore(x => x.ExtraProperties);
CreateMap<InjectionJob, InjectionNoteEditInput>()
.ForMember(x => x.RequestNumber, y => y.MapFrom(d => d.InjectionRequestNumber))
.Ignore(x => x.Confirmed)
@ -68,25 +32,6 @@ public partial class StoreEventAutoMapperProfile : Profile
.Ignore(x => x.ActiveDate)
;
CreateMap<InjectionJobDetail, InjectionNoteDetailInput>()
.ForMember(x => x.Qty, y => y.MapFrom(d => d.HandledQty))
.ForMember(x => x.IssueTime, y => y.MapFrom(d => DateTime.Now))
.ForMember(x => x.FromPackingCode, y => y.MapFrom(d => d.HandledPackingCode))
.ForMember(x => x.ToPackingCode, y => y.MapFrom(d => d.HandledPackingCode))
.ForMember(x => x.FromContainerCode, y => y.MapFrom(d => d.HandledContainerCode))
.ForMember(x => x.ToContainerCode, y => y.MapFrom(d => d.HandledContainerCode))
.ForMember(x => x.FromLot, y => y.MapFrom(d => d.HandledLot))
.ForMember(x => x.ToLot, y => y.MapFrom(d => d.HandledLot))
.ForMember(x => x.SupplierBatch, y => y.MapFrom(d => d.HandledSupplierBatch))
.ForMember(x => x.ArriveDate, y => y.MapFrom(d => d.HandledArriveDate))
.ForMember(x => x.ProduceDate, y => y.MapFrom(d => d.HandledProduceDate))
.ForMember(x => x.ExpireDate, y => y.MapFrom(d => d.ExpiredTime))
.ForMember(x => x.FromLocationCode, y => y.MapFrom(d => d.HandledFromLocationCode))
.ForMember(x => x.FromLocationArea, y => y.MapFrom(d => d.HandledFromLocationArea))
.ForMember(x => x.FromLocationGroup, y => y.MapFrom(d => d.HandledFromLocationGroup))
.ForMember(x => x.FromLocationErpCode, y => y.MapFrom(d => d.HandledFromLocationErpCode))
.ForMember(x => x.FromWarehouseCode, y => y.MapFrom(d => d.HandledFromWarehouseCode))
.ForMember(x => x.FromStatus, y => y.MapFrom(d => d.Status))
.ForMember(x => x.ToStatus, y => y.MapFrom(d => d.Status))
;
}
}

31
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Notes/InjectionNoteAutoMapperProfile.cs

@ -16,7 +16,36 @@ public partial class StoreEventAutoMapperProfile : Profile
.Ignore(x => x.TransType)
.Ignore(x => x.ExtraProperties)
.Ignore(x => x.TransSubType)
.ForMember(x => x.Qty, y => y.MapFrom(t => t.HandledToQty))
.ForMember(x => x.SupplierBatch, y => y.MapFrom(t => t.HandledFromSupplierBatch))
.ForMember(x => x.ArriveDate, y => y.MapFrom(t => t.HandledFromArriveDate))
.ForMember(x => x.ProduceDate, y => y.MapFrom(t => t.HandledFromProduceDate))
.ForMember(x => x.ExpireDate, y => y.MapFrom(t => t.HandledFromExpireDate))
.ForMember(x => x.FromPackingCode, y => y.MapFrom(t => t.HandledFromPackingCode))
.ForMember(x => x.FromContainerCode, y => y.MapFrom(t => t.HandledFromContainerCode))
.ForMember(x => x.FromLot, y => y.MapFrom(t => t.HandledFromLot))
.ForMember(x => x.FromStatus, y => y.MapFrom(t => t.Status))
.ForMember(x => x.FromLocationCode, y => y.MapFrom(t => t.HandledFromLocationCode))
.ForMember(x => x.FromLocationGroup, y => y.MapFrom(t => t.HandledFromLocationGroup))
.ForMember(x => x.FromLocationArea, y => y.MapFrom(t => t.HandledFromLocationArea))
.ForMember(x => x.FromLocationErpCode, y => y.MapFrom(t => t.HandledFromLocationErpCode))
.ForMember(x => x.FromWarehouseCode, y => y.MapFrom(t => t.HandledFromWarehouseCode))
.ForMember(x => x.ToLot, y => y.MapFrom(t => t.HandledToLot))
.ForMember(x => x.ToStatus, y => y.MapFrom(t => t.Status))
.ForMember(x => x.ToPackingCode, y => y.MapFrom(t => t.HandledToPackingCode))
.ForMember(x => x.ToContainerCode, y => y.MapFrom(t => t.HandledToContainerCode))
.ForMember(x => x.ToLocationCode, y => y.MapFrom(t => t.HandledToLocationCode))
.ForMember(x => x.ToLocationGroup, y => y.MapFrom(t => t.HandledToLocationGroup))
.ForMember(x => x.ToLocationArea, y => y.MapFrom(t => t.HandledToLocationArea))
.ForMember(x => x.ToLocationErpCode, y => y.MapFrom(t => t.HandledToLocationErpCode))
.ForMember(x => x.ToWarehouseCode, y => y.MapFrom(t => t.HandledToWarehouseCode))
;
}
}

98
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/InjectionRequestAutoMapperProfile.cs

@ -32,103 +32,5 @@ public partial class StoreEventAutoMapperProfile : Profile
.Ignore(x => x.CompleteTime)
.Ignore(x => x.Details)
;
CreateMap<InjectionRequestDetail, InjectionJobDetailInput>()
.ForMember(x => x.RequestLocationCode, y => y.MapFrom(d => d.ToLocationCode))
.Ignore(x => x.RecommendFromLocationArea)
.Ignore(x => x.RecommendFromLocationGroup)
.Ignore(x => x.HandledFromLocationArea)
.Ignore(x => x.HandledFromLocationGroup)
.Ignore(x => x.RecommendFromWarehouseCode)
.Ignore(x => x.HandledFromWarehouseCode)
.Ignore(x => x.OnTheWayLocationCode)
.Ignore(x => x.DistributionType)
.Ignore(x => x.RoundedQty)
.Ignore(x => x.Operation)
.Ignore(x => x.ExpiredTime)
.Ignore(x => x.TruncType)
.Ignore(x => x.PlanBeginTime)
.Ignore(x => x.PlannedSplitRule)
.Ignore(x => x.DeliveryQty)
.Ignore(x => x.Status)
.Ignore(x => x.RecommendContainerCode)
.Ignore(x => x.StdPackQty)
.Ignore(x => x.RecommendPackingCode)
.Ignore(x => x.HandledContainerCode)
.Ignore(x => x.HandledPackingCode)
.Ignore(x => x.RecommendSupplierBatch)
.Ignore(x => x.RecommendProduceDate)
.Ignore(x => x.RecommendArriveDate)
.Ignore(x => x.RecommendExpireDate)
.Ignore(x => x.HandledFromLocationCode)
.Ignore(x => x.HandledFromLocationErpCode)
.Ignore(x => x.HandledUom)
.Ignore(x => x.RecommendFromLocationErpCode)
.Ignore(x => x.HandledExpireDate)
.Ignore(x => x.HandledLot)
.Ignore(x => x.HandledArriveDate)
.Ignore(x => x.HandledProduceDate)
.Ignore(x => x.HandledQty)
.Ignore(x => x.RecommendQty)
.Ignore(x => x.Uom)
.Ignore(x => x.HandledSupplierBatch)
.Ignore(x => x.RecommendFromLocationCode)
.Ignore(x => x.RecommendLot)
.IgnoreIHasRecommendAndHandledFrom();
CreateMap<BalanceDTO, InjectionJobDetailInput>()
.ForMember(x => x.RecommendArriveDate, y => y.MapFrom(d => d.ArriveDate))
.ForMember(x => x.RecommendContainerCode, y => y.MapFrom(d => d.ContainerCode))
.ForMember(x => x.RecommendExpireDate, y => y.MapFrom(d => d.ExpireDate))
.ForMember(x => x.RecommendFromLocationCode, y => y.MapFrom(d => d.LocationCode))
.ForMember(x => x.RecommendFromLocationErpCode, y => y.MapFrom(d => d.LocationErpCode))
.ForMember(x => x.RecommendFromWarehouseCode, y => y.MapFrom(d => d.WarehouseCode))
.ForMember(x => x.RecommendFromLocationArea, y => y.MapFrom(d => d.LocationArea))
.ForMember(x => x.RecommendFromLocationGroup, y => y.MapFrom(d => d.LocationGroup))
.ForMember(x => x.RecommendLot, y => y.MapFrom(d => d.Lot))
.ForMember(x => x.RecommendPackingCode, y => y.MapFrom(d => d.PackingCode))
.ForMember(x => x.RecommendProduceDate, y => y.MapFrom(d => d.ProduceDate))
.ForMember(x => x.RecommendQty, y => y.MapFrom(d => d.Qty))
.ForMember(x => x.RecommendSupplierBatch, y => y.MapFrom(d => d.SupplierBatch))
.ForMember(x => x.Uom, y => y.MapFrom(d => d.Uom)).Ignore(x => x.HandledArriveDate)
.Ignore(x => x.HandledFromLocationArea)
.Ignore(x => x.HandledFromLocationGroup)
.Ignore(x => x.ToLocationErpCode)
.Ignore(x => x.ToWarehouseCode)
.Ignore(x => x.ToLocationArea)
.Ignore(x => x.ToLocationGroup)
.Ignore(x => x.HandledFromWarehouseCode)
.Ignore(x => x.RequestLocationCode)
.Ignore(x => x.ToLocationCode)
.Ignore(x => x.ProdLine)
.Ignore(x => x.WorkStation)
.Ignore(x => x.HandledContainerCode)
.Ignore(x => x.HandledExpireDate)
.Ignore(x => x.HandledFromLocationCode)
.Ignore(x => x.HandledFromLocationErpCode)
.Ignore(x => x.HandledLot)
.Ignore(x => x.HandledPackingCode)
.Ignore(x => x.HandledProduceDate)
.Ignore(x => x.HandledQty)
.Ignore(x => x.HandledSupplierBatch)
.Ignore(x => x.HandledUom)
.Ignore(x => x.Remark)
.Ignore(x => x.OnTheWayLocationCode)
.Ignore(x => x.DistributionType)
.Ignore(x => x.RoundedQty)
.Ignore(x => x.Operation)
.Ignore(x => x.ExpiredTime)
.Ignore(x => x.TruncType)
.Ignore(x => x.PlanBeginTime)
.Ignore(x => x.PlannedSplitRule)
.Ignore(x => x.DeliveryQty)
.Ignore(x => x.RequestLocationCode)
.Ignore(x => x.ToLocationCode)
.Ignore(x => x.ProdLine)
.Ignore(x => x.WorkStation)
.Ignore(x => x.PositionCode)
.Ignore(x => x.RecommendType)
.IgnoreIHasRecommendAndHandledFrom();
}
}

46
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/TransferLibRequestAutoMapperProfile.cs

@ -9,50 +9,6 @@ public partial class StoreEventAutoMapperProfile : Profile
{
private void TransferLibRequestAutoMapperProfile()
{
CreateMap<TransferLibRequest, TransferLibNote>()
.IgnoreAuditedObjectProperties()
.ForMember(x => x.RequestNumber, y => y.MapFrom(d => d.Number))
.ForMember(x => x.Confirmed, y => y.MapFrom(d => !d.UseOnTheWayLocation))
.Ignore(x => x.ConfirmTime)
.Ignore(x => x.JobNumber)
.Ignore(x => x.Number)
.Ignore(x => x.Id);
CreateMap<TransferLibRequestDetail, TransferLibNoteDetail>()
.Ignore(x => x.OnTheWayLocationCode);
CreateMap<TransferLibRequest, TransferLibJob>()
.IgnoreAuditedObjectProperties()
.ForMember(x => x.RequestNumber, y => y.MapFrom(d => d.Number))
.ForMember(x => x.Confirmed, y => y.MapFrom(d => !d.UseOnTheWayLocation))
.ForMember(dest => dest.Details, option => option.MapFrom(src => src.Details))
.Ignore(x => x.ConfirmTime)
.Ignore(x => x.JobNumber)
.Ignore(x => x.Number)
.Ignore(x => x.Id)
.Ignore(x => x.WarehouseCode)
//.Ignore(x => x.Details)
.Ignore(x => x.IsAutoComplete)
.Ignore(x => x.JobType)
.Ignore(x => x.JobDescription)
.Ignore(x => x.JobStatus)
.Ignore(x => x.WorkGroupCode)
.Ignore(x => x.Priority)
.Ignore(x => x.PriorityIncrement)
.Ignore(x => x.AcceptUserId)
.Ignore(x => x.AcceptUserName)
.Ignore(x => x.AcceptTime)
.Ignore(x => x.CompleteUserId)
.Ignore(x => x.CompleteUserName)
.Ignore(x => x.CompleteTime)
.Ignore(x => x.UpStreamJobNumber)
.BeforeMap((notice, input) => input.JobType = EnumJobType.Transfer)
.BeforeMap((notice, input) => input.JobStatus = EnumJobStatus.Open)
.BeforeMap((notice, input) => input.IsAutoComplete = false)
;
CreateMap<TransferLibRequestDetail, TransferLibJobDetail>()
.Ignore(x => x.OnTheWayLocationCode)
;
}
}

226
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/InjectionJobEventHandler.cs

@ -5,12 +5,10 @@ using Volo.Abp.EventBus;
using Volo.Abp.Uow;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Inventory.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;
namespace Win_in.Sfs.Wms.Store.Event.BusinessJob;
@ -20,20 +18,16 @@ public class InjectionJobEventHandler :
, ILocalEventHandler<SfsCreatedEntityEventData<InjectionJob>>
, ILocalEventHandler<SfsCreatedEntityEventData<List<InjectionJob>>>
{
private const EnumTransType TransType = EnumTransType.Issue;
private readonly IInjectionNoteAppService _injectionNoteAppService;
private readonly IBalanceAppService _balanceAppService;
private readonly IExpectOutAppService _expectOutAppService;
private readonly ILocationAppService _locationAppService;
private readonly ITransferLibRequestAppService _transferLibRequestAppService;
public InjectionJobEventHandler(IInjectionNoteAppService injectionNoteAppService,
IBalanceAppService balanceAppService, IExpectOutAppService expectOutAppService,
IExpectOutAppService expectOutAppService,
ILocationAppService locationAppService, ITransferLibRequestAppService transferLibRequestAppService)
{
_injectionNoteAppService = injectionNoteAppService;
_balanceAppService = balanceAppService;
_expectOutAppService = expectOutAppService;
_locationAppService = locationAppService;
_transferLibRequestAppService = transferLibRequestAppService;
@ -95,88 +89,101 @@ public class InjectionJobEventHandler :
var expectOutEditInputs = new List<ExpectOutEditInput>();
foreach (var detail in entity.Details)
{
var balanceDto = await _balanceAppService
.GetRealQtyByPackingCodeAndItemCodeAndLocationCodeAndStatusAsync(detail.RecommendPackingCode,
detail.ItemCode, detail.RecommendFromLocationCode, EnumInventoryStatus.OK).ConfigureAwait(false);
var inputoExpectOutEditInput = new ExpectOutEditInput();
inputoExpectOutEditInput.JobNumber = entity.Number;
inputoExpectOutEditInput.ItemCode = detail.ItemCode;
inputoExpectOutEditInput.Qty = balanceDto.Qty;
inputoExpectOutEditInput.LocationCode = balanceDto.LocationCode;
inputoExpectOutEditInput.ArriveDate = balanceDto.ArriveDate;
inputoExpectOutEditInput.ContainerCode = balanceDto.ContainerCode;
inputoExpectOutEditInput.ExpireDate = balanceDto.ExpireDate;
inputoExpectOutEditInput.ItemDesc1 = balanceDto.ItemDesc1;
inputoExpectOutEditInput.ItemDesc2 = balanceDto.ItemDesc2;
inputoExpectOutEditInput.ItemName = balanceDto.ItemName;
inputoExpectOutEditInput.LocationArea = balanceDto.LocationArea;
inputoExpectOutEditInput.LocationGroup = balanceDto.LocationGroup;
inputoExpectOutEditInput.LocationErpCode = balanceDto.LocationErpCode;
inputoExpectOutEditInput.PackingCode = balanceDto.PackingCode;
inputoExpectOutEditInput.Lot = balanceDto.Lot;
inputoExpectOutEditInput.ProduceDate = balanceDto.ProduceDate;
inputoExpectOutEditInput.Status = balanceDto.Status;
inputoExpectOutEditInput.Uom = balanceDto.Uom;
inputoExpectOutEditInput.SupplierBatch = balanceDto.SupplierBatch;
inputoExpectOutEditInput.WarehouseCode= balanceDto.WarehouseCode;
inputoExpectOutEditInput.Qty = detail.RecommendFromQty;
inputoExpectOutEditInput.LocationCode = detail.RecommendFromLocationCode;
inputoExpectOutEditInput.ArriveDate = detail.RecommendFromArriveDate;
inputoExpectOutEditInput.ContainerCode = detail.RecommendFromContainerCode;
inputoExpectOutEditInput.ExpireDate = detail.RecommendFromExpireDate;
inputoExpectOutEditInput.ItemDesc1 = detail.ItemDesc1;
inputoExpectOutEditInput.ItemDesc2 = detail.ItemDesc2;
inputoExpectOutEditInput.ItemName = detail.ItemName;
inputoExpectOutEditInput.LocationArea = detail.RecommendFromLocationArea;
inputoExpectOutEditInput.LocationGroup = detail.RecommendFromLocationGroup;
inputoExpectOutEditInput.LocationErpCode = detail.RecommendFromLocationErpCode;
inputoExpectOutEditInput.PackingCode = detail.RecommendFromPackingCode;
inputoExpectOutEditInput.Lot = detail.RecommendFromLot;
inputoExpectOutEditInput.ProduceDate = detail.RecommendFromProduceDate;
inputoExpectOutEditInput.Status = detail.Status;
inputoExpectOutEditInput.Uom = detail.Uom;
inputoExpectOutEditInput.SupplierBatch = detail.RecommendFromSupplierBatch;
inputoExpectOutEditInput.WarehouseCode = detail.RecommendFromWarehouseCode;
expectOutEditInputs.Add(inputoExpectOutEditInput);
}
await _expectOutAppService.AddManyAsync(expectOutEditInputs).ConfigureAwait(false);
await Task.CompletedTask.ConfigureAwait(false);
}
/// <summary>
/// 根据是否在 第一层 来创建 是否生成库移任务
/// 根据是否在 第一层 来创建 是否生成库移任务
/// </summary>
/// <returns></returns>
private async Task CreateTransferLibAsync(InjectionJob injectionJob)
{
foreach (var detail in injectionJob.Details)
if (!await IsMinRowAsync(injectionJob).ConfigureAwait(false))
{
var input = new TransferLibRequestEditInput();
input.CallBusinessType = nameof(IInjectionJobAppService);
input.CallJobNumber = injectionJob.Number;
input.CallRequestNumber = injectionJob.InjectionRequestNumber;
input.CallServerName = "Win_in.Sfs.Wms.Store.Application.InjectionJobAppService";
input.Type = "Transfer_Warehouse";
input.UseOnTheWayLocation = true;
var detailInput = new TransferLibRequestDetailInput();
detailInput.CallBusinessType = nameof(IInjectionJobAppService);
detailInput.CallRequestNumber = injectionJob.InjectionRequestNumber;
detailInput.CallServerName = "Win_in.Sfs.Wms.Store.Application.InjectionJobAppService";
detailInput.CallJobNumber = injectionJob.Number;
detailInput.JobStatus = EnumJobStatus.Open;
detailInput.ItemCode=detail.ItemCode;
detailInput.Qty = detail.RecommendQty;
detailInput.ArriveDate = detailInput.ArriveDate;
detailInput.ExpireDate=detailInput.ExpireDate;
detailInput.ProduceDate = detail.RecommendProduceDate;
detailInput.ToLocationCode = detail.ToLocationCode;
detailInput.ToWarehouseCode=detail.ToWarehouseCode;
detailInput.ToLocationErpCode=detail.ToLocationErpCode;
detailInput.ToLocationGroup=detail.ToLocationGroup;
detailInput.ToLocationArea= detail.ToLocationArea;
detailInput.FromLocationCode = detail.RecommendFromLocationCode;
detailInput.FromLocationArea = detail.RecommendFromLocationArea;
detailInput.FromLocationGroup=detail.RecommendFromLocationGroup;
detailInput.FromLocationErpCode= detail.RecommendFromLocationErpCode;
detailInput.FromWarehouseCode= detail.RecommendFromWarehouseCode;
detailInput.FromLot = detail.RecommendLot;
detailInput.ToLot=detail.RecommendLot;
detailInput.Qty=detail.RecommendQty;
detailInput.StdPackQty = detail.StdPackQty;
detailInput.Uom=detail.Uom;
detailInput.SupplierBatch = detail.RecommendSupplierBatch;
await _transferLibRequestAppService.CreateAsync(input).ConfigureAwait(false);
foreach (var detail in injectionJob.Details)
{
var input = new TransferLibRequestEditInput();
input.CallBusinessType = nameof(IInjectionJobAppService);
input.CallJobNumber = injectionJob.Number;
input.CallRequestNumber = injectionJob.InjectionRequestNumber;
input.CallServerName = "Win_in.Sfs.Wms.Store.Application.InjectionJobAppService";
input.Type = "Transfer_Warehouse";
input.UseOnTheWayLocation = true;
var detailInput = new TransferLibRequestDetailInput();
detailInput.CallBusinessType = nameof(IInjectionJobAppService);
detailInput.CallRequestNumber = injectionJob.InjectionRequestNumber;
detailInput.CallServerName = "Win_in.Sfs.Wms.Store.Application.InjectionJobAppService";
detailInput.CallJobNumber = injectionJob.Number;
detailInput.JobStatus = EnumJobStatus.Open;
detailInput.ItemCode = detail.ItemCode;
detailInput.StdPackQty = detail.StdPackQty;
detailInput.Uom = detail.Uom;
detailInput.Status = detail.Status;
detailInput.RecommendFromQty = detail.RecommendFromQty;
detailInput.RecommendFromLot = detail.RecommendFromLot;
detailInput.RecommendFromPackingCode = detailInput.RecommendFromPackingCode;
detailInput.RecommendToLot = detail.RecommendToLot;
detailInput.RecommendFromArriveDate = detail.RecommendFromArriveDate;
detailInput.RecommendFromExpireDate = detail.RecommendFromExpireDate;
detailInput.RecommendFromProduceDate = detail.RecommendFromProduceDate;
detailInput.RecommendFromSupplierBatch = detail.RecommendFromSupplierBatch;
detailInput.RecommendFromLocationCode = detail.RecommendFromLocationCode;
detailInput.RecommendFromLocationGroup = detail.RecommendFromLocationGroup;
detailInput.RecommendFromLocationArea = detail.RecommendFromLocationArea;
detailInput.RecommendFromLocationErpCode = detail.RecommendFromLocationErpCode;
detailInput.RecommendFromWarehouseCode = detail.RecommendFromWarehouseCode;
detailInput.RecommendToQty = detail.RecommendToQty;
detailInput.RecommendToLot = detail.RecommendToLot;
detailInput.RecommendToPackingCode = detailInput.RecommendToPackingCode;
detailInput.RecommendToLot = detail.RecommendToLot;
detailInput.RecommendToArriveDate = detail.RecommendToArriveDate;
detailInput.RecommendToExpireDate = detail.RecommendToExpireDate;
detailInput.RecommendToProduceDate = detail.RecommendToProduceDate;
detailInput.RecommendToSupplierBatch = detail.RecommendToSupplierBatch;
detailInput.RecommendToLocationCode = detail.RecommendToLocationCode;
detailInput.RecommendToLocationGroup = detail.RecommendToLocationGroup;
detailInput.RecommendToLocationArea = detail.RecommendToLocationArea;
detailInput.RecommendToLocationErpCode = detail.RecommendToLocationErpCode;
detailInput.RecommendToWarehouseCode = detail.RecommendToWarehouseCode;
await _transferLibRequestAppService.CreateAsync(input).ConfigureAwait(false);
}
}
}
/// <summary>
@ -188,78 +195,29 @@ public class InjectionJobEventHandler :
{
var injectionNoteCreateInput = ObjectMapper.Map<InjectionJob, InjectionNoteEditInput>(entity);
injectionNoteCreateInput.JobNumber = entity.Number;
var locationCodes = injectionNoteCreateInput.Details.Select(p => p.ToLocationCode).Distinct().ToList();
var locations = await _locationAppService.GetByCodesAsync(locationCodes).ConfigureAwait(false);
injectionNoteCreateInput.Details.RemoveAll(p => p.Qty == 0);
foreach (var detail in injectionNoteCreateInput.Details)
{
var location = locations.First(p => p.Code == detail.ToLocationCode);
await RemovePackingCodeAndContainerCodeAndLotAsync(detail, location.Type).ConfigureAwait(false); //去箱 去托 去批
detail.ToLocationArea = location.AreaCode;
detail.ToLocationGroup = location.LocationGroupCode;
detail.ToLocationErpCode = location.ErpLocationCode;
detail.ToWarehouseCode = location.WarehouseCode;
}
await Task.CompletedTask.ConfigureAwait(false);
return injectionNoteCreateInput;
}
/// <summary>
/// 去除箱码 托码 批次
/// 判断是不是在最底层 如果不是则把状态变更为等待
/// </summary>
private async Task RemovePackingCodeAndContainerCodeAndLotAsync(InjectionNoteDetailInput injectionNoteDetail,
EnumLocationType locationType)
/// <param name="injectionJob"></param>
/// <returns></returns>
private async Task<bool> IsMinRowAsync(InjectionJob injectionJob)
{
switch (locationType)
var detail = injectionJob.Details.FirstOrDefault();
var loctionDto = await _locationAppService.GetByCodeAsync(detail.RecommendFromLocationCode)
.ConfigureAwait(false);
if (loctionDto.RowCode == 1)
{
case EnumLocationType.WIP:
{
//用开关控制 发料到线边后去除箱码和托码 ???
if (await SettingManager.IsTrueAsync(StoreSettings.Issue.ToWip.IsRemovePackingCode)
.ConfigureAwait(false))
{
injectionNoteDetail.ToPackingCode = "";
}
if (await SettingManager.IsTrueAsync(StoreSettings.Issue.ToWip.IsRemoveContainerCode)
.ConfigureAwait(false))
{
injectionNoteDetail.ToContainerCode = "";
}
if (await SettingManager.IsTrueAsync(StoreSettings.Issue.ToWip.IsRemoveLot).ConfigureAwait(false))
{
injectionNoteDetail.ToLot = "";
}
break;
}
case EnumLocationType.SEMI:
{
//用开关控制 发料到后去除箱码和托码 ???
if (await SettingManager.IsTrueAsync(StoreSettings.Issue.ToSemi.IsRemovePackingCode)
.ConfigureAwait(false))
{
injectionNoteDetail.ToPackingCode = "";
}
if (await SettingManager.IsTrueAsync(StoreSettings.Issue.ToSemi.IsRemoveContainerCode)
.ConfigureAwait(false))
{
injectionNoteDetail.ToContainerCode = "";
}
if (await SettingManager.IsTrueAsync(StoreSettings.Issue.ToSemi.IsRemoveLot).ConfigureAwait(false))
{
injectionNoteDetail.ToLot = "";
}
break;
}
return true;
}
return false;
}
#endregion

5
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/ThirdLocationJobEventHandler.cs

@ -75,6 +75,11 @@ public class ThirdLocationJobEventHandler :
detail.ToLocationGroup = location.LocationGroupCode;
detail.ToLocationErpCode = location.ErpLocationCode;
detail.ToWarehouseCode = location.WarehouseCode;
var locationFrom = await _locationAppService.GetByCodeAsync(detail.FromLocationCode).ConfigureAwait(false);
detail.FromLocationErpCode = locationFrom.ErpLocationCode;
detail.FromWarehouseCode = locationFrom.WarehouseCode;
detail.FromStatus = EnumInventoryStatus.OK;
}
return thirdLocationNoteCreateInput;

21
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/TransferLibJobEventHandler.cs

@ -17,7 +17,7 @@ public class TransferLibJobEventHandler :
public TransferLibJobEventHandler(
ITransferLibNoteAppService noteApp
)
)
{
_noteApp = noteApp;
}
@ -42,7 +42,6 @@ public class TransferLibJobEventHandler :
var note = BuildTransferLibNoteCreateInput(entity);
await _noteApp.CreateAsync(note).ConfigureAwait(false);
}
[UnitOfWork]
@ -51,11 +50,10 @@ public class TransferLibJobEventHandler :
var entity = eventData.Entity;
var note = BuildTransferLibNoteCreateInput(entity);
await _noteApp.CreateAsync(note).ConfigureAwait(false);
}
/// <summary>
/// 创建补料记录实体
/// 创建补料记录实体
/// </summary>
/// <param name="entity"></param>
/// <param name="input"></param>
@ -63,22 +61,7 @@ public class TransferLibJobEventHandler :
private TransferLibNoteEditInput BuildTransferLibNoteCreateInput(TransferLibJob entity)
{
var createInput = ObjectMapper.Map<TransferLibJob, TransferLibNoteEditInput>(entity);
createInput.Details.RemoveAll(p => p.Qty == 0);
/*
createInput.Details = new List<TransferLibNoteDetailInput>();
foreach (var inputDetail in entity.Details)
{
var detail = ObjectMapper.Map<TransferLibJobDetail, TransferLibNoteDetailInput>(inputDetail);
detail.ExtraProperties = inputDetail.ExtraProperties;
createInput.Details.Add(detail);
}
*/
return createInput;
}
}

115
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InjectionRequestEventHandler.cs

@ -148,7 +148,7 @@ public class InjectionRequestEventHandler
var fromLocationCode = jobDetails[0].RecommendFromLocationCode;
var fromLocation = await _locationAppService.GetByCodeAsync(fromLocationCode).ConfigureAwait(false);
var job = jobs.FirstOrDefault(p => p.WorkGroupCode == fromLocation?.WorkGroupCode);
if (job == null || job.Details.Any(p => p.ToLocationCode != injectionRequestDetail.ToLocationCode))
if (job == null || job.Details.Any(p => p.RecommendToLocationCode != injectionRequestDetail.ToLocationCode))
{
job = await BuildInjectionJobCreateInputWithQtyTypeAsync(injectionRequest, fromLocation)
.ConfigureAwait(false);
@ -210,7 +210,6 @@ public class InjectionRequestEventHandler
job.JobStatus = EnumJobStatus.Open;
job.WorkGroupCode = fromLocation.WorkGroupCode;
job.WarehouseCode = fromLocation.WarehouseCode;
job.ProdLine = fromLocation.LocationGroupCode;
job.Worker = injectionRequest.Worker;
if (string.IsNullOrEmpty(job.Worker))
{
@ -303,31 +302,29 @@ public class InjectionRequestEventHandler
var detail = ObjectMapper.Map<BalanceDTO, InjectionJobDetailInput>(balance);
detail.RequestLocationCode = injectionRequestDetail.ToLocationCode;
detail.WorkStation = injectionRequestDetail.WorkStation;
detail.ExpiredTime = injectionRequestDetail.ExpiredTime;
detail.PositionCode = injectionRequestDetail.PositionCode;
detail.RecommendType = injectionRequestDetail.RecommendType;
detail.RecommendPackingCode = balance.PackingCode;
detail.RecommendContainerCode = balance.ContainerCode;
detail.RecommendSupplierBatch = balance.SupplierBatch;
detail.RecommendProduceDate = balance.ProduceDate;
detail.RecommendExpireDate = balance.ExpireDate;
detail.RecommendLot = balance.Lot;
detail.RecommendProduceDate = balance.ProduceDate;
detail.RecommendArriveDate = balance.ArriveDate;
detail.RecommendFromPackingCode = balance.PackingCode;
detail.RecommendFromContainerCode = balance.ContainerCode;
detail.RecommendFromSupplierBatch = balance.SupplierBatch;
detail.RecommendFromProduceDate = balance.ProduceDate;
detail.RecommendFromExpireDate = balance.ExpireDate;
detail.RecommendFromLot = balance.Lot;
detail.RecommendFromProduceDate = balance.ProduceDate;
detail.RecommendFromArriveDate = balance.ArriveDate;
detail.RecommendFromLocationArea = balance.LocationArea;
detail.RecommendFromLocationCode = balance.LocationCode;
detail.RecommendFromLocationErpCode = balance.LocationErpCode;
detail.RecommendFromLocationGroup = balance.LocationGroup;
detail.RecommendFromWarehouseCode = balance.WarehouseCode;
detail.RecommendQty = balance.Qty;
detail.RecommendFromQty = balance.Qty;
detail.Uom = balance.Uom;
detail.ToLocationCode = injectionRequestDetail.ToLocationCode;
detail.ToLocationErpCode = injectionRequestDetail.ToLocationErpCode;
detail.ToLocationArea = injectionRequestDetail.ToLocationArea;
detail.ToWarehouseCode = injectionRequestDetail.ToWarehouseCode;
detail.RecommendToLocationCode = injectionRequestDetail.ToLocationCode;
detail.RecommendToLocationErpCode = injectionRequestDetail.ToLocationErpCode;
detail.RecommendToLocationArea = injectionRequestDetail.ToLocationArea;
detail.RecommendToWarehouseCode = injectionRequestDetail.ToWarehouseCode;
//detail.ProdLine = prodLine == null ? toLocationGroupCode : prodLine.Code;
detail.ProdLine = toLocationGroupCode;
@ -392,19 +389,21 @@ public class InjectionRequestEventHandler
};
var usableList = await _balanceAppService.GetUsableListAsync(input).ConfigureAwait(false);
usableList = usableList.Where(p => !useBalanceList.Contains(p.PackingCode)).ToList();
for (var i = 0; i < sumBoxQty; i++)
if (usableList.Any())
{
var firstUsable = usableList.First();
useBalanceList.Add(firstUsable.PackingCode);
usableList.Remove(firstUsable);
for (var i = 0; i < sumBoxQty; i++)
{
var firstUsable = usableList.First();
useBalanceList.Add(firstUsable.PackingCode);
usableList.Remove(firstUsable);
var injectionJobEditInput =
await BuildInjectionJobCreateInputWithBoxQtyTypeAsync(injectionRequest, inputDetailTemplate,
firstUsable)
.ConfigureAwait(false);
var injectionJobEditInput =
await BuildInjectionJobCreateInputWithBoxQtyTypeAsync(injectionRequest, inputDetailTemplate,
firstUsable)
.ConfigureAwait(false);
inputJobs.Add(injectionJobEditInput);
inputJobs.Add(injectionJobEditInput);
}
}
}
@ -422,13 +421,11 @@ public class InjectionRequestEventHandler
InjectionRequest injectionRequest,
InjectionRequestDetail injectionRequestDetail, BalanceDTO balanceDtos)
{
InjectionJobEditInput job;
job = ObjectMapper.Map<InjectionRequest, InjectionJobEditInput>(injectionRequest);
var job = ObjectMapper.Map<InjectionRequest, InjectionJobEditInput>(injectionRequest);
job.JobType = EnumJobType.IssueJob;
job.JobStatus = EnumJobStatus.Open;
job.WorkGroupCode = injectionRequestDetail.ToLocationGroup;
job.WarehouseCode = injectionRequestDetail.ToWarehouseCode;
job.ProdLine = injectionRequestDetail.ProdLine;
job.Worker = injectionRequest.Worker;
job.InjectionRequestNumber = injectionRequest.Number;
@ -450,36 +447,56 @@ public class InjectionRequestEventHandler
private async Task<InjectionJobDetailInput> BuildInjectionJobDetailWithBoxQtyTypeAsync(
InjectionRequestDetail injectionRequestDetail, BalanceDTO balance)
{
var detail = ObjectMapper.Map<BalanceDTO, InjectionJobDetailInput>(balance);
var detail = new InjectionJobDetailInput();
detail.RequestLocationCode = injectionRequestDetail.ToLocationCode;
detail.WorkStation = injectionRequestDetail.WorkStation;
detail.ExpiredTime = injectionRequestDetail.ExpiredTime;
detail.PositionCode = injectionRequestDetail.PositionCode;
detail.RecommendType = injectionRequestDetail.RecommendType;
detail.ProdLine = injectionRequestDetail.ToLocationCode;
detail.ItemCode = injectionRequestDetail.ItemCode;
detail.ItemName=injectionRequestDetail.ItemName;
detail.ItemDesc1=injectionRequestDetail.ItemDesc1;
detail.ItemDesc2 = injectionRequestDetail.ItemDesc2;
detail.Status = EnumInventoryStatus.OK;
detail.Uom = balance.Uom;
detail.RecommendFromPackingCode = balance.PackingCode;
detail.RecommendFromContainerCode = balance.ContainerCode;
detail.RecommendFromLot = balance.Lot;
detail.RecommendFromQty = balance.Qty;
detail.RecommendFromSupplierBatch = balance.SupplierBatch;
detail.RecommendFromProduceDate = balance.ProduceDate;
detail.RecommendFromExpireDate = balance.ExpireDate;
detail.RecommendFromProduceDate = balance.ProduceDate;
detail.RecommendFromArriveDate = balance.ArriveDate;
detail.RecommendPackingCode = balance.PackingCode;
detail.RecommendContainerCode = balance.ContainerCode;
detail.RecommendSupplierBatch = balance.SupplierBatch;
detail.RecommendProduceDate = balance.ProduceDate;
detail.RecommendExpireDate = balance.ExpireDate;
detail.RecommendLot = balance.Lot;
detail.RecommendProduceDate = balance.ProduceDate;
detail.RecommendArriveDate = balance.ArriveDate;
detail.RecommendFromLocationArea = balance.LocationArea;
detail.RecommendFromLocationCode = balance.LocationCode;
detail.RecommendFromLocationErpCode = balance.LocationErpCode;
detail.RecommendFromLocationGroup = balance.LocationGroup;
detail.RecommendFromWarehouseCode = balance.WarehouseCode;
detail.RecommendQty = balance.Qty;
detail.Uom = balance.Uom;
detail.ToLocationCode = injectionRequestDetail.ToLocationCode;
detail.ToLocationErpCode = injectionRequestDetail.ToLocationErpCode;
detail.ToLocationArea = injectionRequestDetail.ToLocationArea;
detail.ToWarehouseCode = injectionRequestDetail.ToWarehouseCode;
detail.ToLocationGroup= injectionRequestDetail.ToLocationGroup;
detail.RecommendToPackingCode = balance.PackingCode;
detail.RecommendToContainerCode = balance.ContainerCode;
detail.RecommendToLot = balance.Lot;
detail.RecommendToQty = balance.Qty;
detail.RecommendToSupplierBatch = balance.SupplierBatch;
detail.RecommendToProduceDate = balance.ProduceDate;
detail.RecommendToExpireDate = balance.ExpireDate;
detail.RecommendToProduceDate = balance.ProduceDate;
detail.RecommendToArriveDate = balance.ArriveDate;
detail.RecommendToLocationCode = injectionRequestDetail.ToLocationCode;
detail.RecommendToLocationErpCode = injectionRequestDetail.ToLocationErpCode;
detail.RecommendToLocationArea = injectionRequestDetail.ToLocationArea;
detail.RecommendToWarehouseCode = injectionRequestDetail.ToWarehouseCode;
detail.RecommendToLocationGroup = injectionRequestDetail.ToLocationGroup;
detail.ProdLine = injectionRequestDetail.ToLocationCode;
await Task.CompletedTask.ConfigureAwait(false);
return detail;
}

32
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/ThirdLocationRequestEventHandler.cs

@ -256,38 +256,12 @@ public class ThirdLocationRequestEventHandler
jobs.Add(job);
}
job.Details.AddRange(jobDetails);
if (thirdLocationRequestDetail.ToBeIssuedQty < 0)
{
thirdLocationRequestDetail.Status = EnumStatus.Close;
}
}
jobs = jobs.Where(p => p.Details.Any()).ToList();
var openRequestDetails =
thirdLocationRequest.Details.Where(p => p.Status != EnumStatus.Close).ToList();
if (!openRequestDetails.Any())
{
return jobs;
}
var enableMultipleCreateThirdLocationJob = await SettingManager.IsTrueAsync(StoreSettings.MaterialRequest.EnableMultipleCreateIssueJob).ConfigureAwait(false);
if (enableMultipleCreateThirdLocationJob)
{
//thirdLocationRequest.Partial();
}
else
{
var sb = new StringBuilder();
foreach (var openRequestDetail in openRequestDetails)
{
sb.AppendLine($"{openRequestDetail.ItemCode}请求数量 {openRequestDetail.Qty},可用库存数量 {openRequestDetail.IssuedQty}");
}
throw new UserFriendlyException($"{sb} 可用库存数量不足, 无法生成发料任务");
}
return jobs;
}

10
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/TransferLibRequestEventHandler.cs

@ -52,9 +52,13 @@ public class TransferLibRequestEventHandler
var entity = eventData.Entity;
var enumTransSubType = Enum.Parse<EnumTransSubType>(entity.Type);
return;
if (entity.DirectCreateNote)
{
var input = ObjectMapper.Map<TransferLibRequest, TransferLibNote>(entity);
//todo 等云峰做完处理
var input = new TransferLibNote()
{ };
//获取在途库
var locationDto = await _locationAppService.GetFirstByTypeAsync(EnumLocationType.TRANSPORT)
@ -70,7 +74,9 @@ public class TransferLibRequestEventHandler
}
else
{
var input = ObjectMapper.Map<TransferLibRequest, TransferLibJob>(entity);
//todo 刘云峰
//var input = ObjectMapper.Map<TransferLibRequest, TransferLibJob>(entity);
var input = new TransferLibJob();
//获取在途库
var locationDto = await _locationAppService.GetFirstByTypeAsync(EnumLocationType.TRANSPORT)

88
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/InjectionNoteEventHandler.cs

@ -0,0 +1,88 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.EventBus;
using Volo.Abp.Uow;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Event.Transaction;
namespace Win_in.Sfs.Wms.Store.Event.Transactions;
public class InjectionNoteEventHandler
: StoreInventoryEventHandlerBase
, ILocalEventHandler<SfsCreatedEntityEventData<InjectionNote>>
, ILocalEventHandler<SfsCreatedEntityEventData<List<InjectionNote>>>
, ILocalEventHandler<SfsConfirmedEntityEventData<InjectionNote>>
{
private const EnumTransType TransType = EnumTransType.Issue;
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<InjectionNote> eventData)
{
var entity = eventData.Entity;
var transferLogs = new List<TransferLogEditInput>();
var route = entity.UseOnTheWayLocation
? EnumTransferRoute.SourceToOnTheWay
: EnumTransferRoute.SourceToDestination;
transferLogs.AddRange(await BuildTransferLogsAsync(entity).ConfigureAwait(false));
await TransferLogAppService.AddManyAsync(transferLogs).ConfigureAwait(false);
}
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<List<InjectionNote>> eventData)
{
var entities = eventData.Entity;
var transferLogs = new List<TransferLogEditInput>();
//如果要做库存事务汇总,可以修改此处
foreach (var issueNote in entities)
{
transferLogs.AddRange(await BuildTransferLogsAsync(issueNote).ConfigureAwait(false));
}
await TransferLogAppService.AddManyAsync(transferLogs).ConfigureAwait(false);
}
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsConfirmedEntityEventData<InjectionNote> eventData)
{
var entity = eventData.Entity;
var inputList = await BuildTransferLogsAsync(entity)
.ConfigureAwait(false);
await AddTransferLogsAsync(inputList).ConfigureAwait(false);
}
private async Task AddTransferLogsAsync(List<TransferLogEditInput> inputList)
{
var transferLogs = new List<TransferLogEditInput>();
transferLogs.AddRange(inputList);
await TransferLogAppService.AddManyAsync(transferLogs).ConfigureAwait(false);
}
private async Task<List<TransferLogEditInput>> BuildTransferLogsAsync(InjectionNote issueNote)
{
var transferLogs = new List<TransferLogEditInput>();
foreach (var detail in issueNote.Details.Where(detail => detail.HandledToQty != 0))
{
var transferLog = ObjectMapper.Map<InjectionNoteDetail, TransferLogEditInput>(detail);
transferLog.TransSubType = EnumTransSubType.Issue_WIP;
transferLog.TransType = TransType;
transferLog.DocNumber = issueNote.Number;
transferLog.JobNumber = issueNote.JobNumber;
transferLogs.Add(transferLog);
}
await Task.CompletedTask.ConfigureAwait(false);
return transferLogs;
}
}

11
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/ThirdLocationNoteEventHandler.cs

@ -22,10 +22,13 @@ public class ThirdLocationNoteEventHandler
private const EnumTransType TransType = EnumTransType.TransferLib;
private readonly ILocationAppService _locationAppService;
private readonly IThirdLocationRequestManager _thirdLocationRequestManager;
public ThirdLocationNoteEventHandler(ILocationAppService locationAppService)
public ThirdLocationNoteEventHandler(ILocationAppService locationAppService
, IThirdLocationRequestManager thirdLocationRequestManager)
{
_locationAppService = locationAppService;
_thirdLocationRequestManager = thirdLocationRequestManager;
}
[UnitOfWork]
@ -39,6 +42,12 @@ public class ThirdLocationNoteEventHandler
await TransferLogAppService.AddManyAsync(transferLogs).ConfigureAwait(false);
if (!string.IsNullOrEmpty(entity.RequestNumber))
{
var thirdLocationRequest = await _thirdLocationRequestManager.GetByNumberAsync(entity.RequestNumber).ConfigureAwait(false);
await _thirdLocationRequestManager.CompleteAsync(thirdLocationRequest).ConfigureAwait(false);
}
}
[UnitOfWork]

Loading…
Cancel
Save