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
907aee7597
  1. 6
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Incoming/InjectionMoldingRequestReader.cs
  2. 12
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCodes/PositionCodeAppService.cs
  3. 16
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/ExpectOuts/IExpectOutAppService.cs
  4. 3
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Balances/BalanceAppService.cs
  5. 33
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/ExpectOuts/ExpectOutAppService.cs
  6. 1
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/Balances/BalanceManager.cs
  7. 5
      be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Basedata/EnumLocationType.cs
  8. 7
      be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Basedata/EnumProductionLineType.cs
  9. 18
      be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumIssueRequestType - 复制.cs
  10. 36
      be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumIssueRequestType.cs
  11. 29
      be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumIssueType.cs
  12. 6
      be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumRecommendType.cs
  13. 8
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleIssueJobs/DTOs/AssembleIssueJobDTO.cs
  14. 8
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleIssueJobs/Inputs/AssembleIssueJobEditInput.cs
  15. 8
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/DTOs/CoatingIssueJobDTO.cs
  16. 0
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/DTOs/CoatingIssueJobDetailDTO.cs
  17. 0
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/Inputs/CoatingIssueJobCheckInput.cs
  18. 0
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/Inputs/CoatingIssueJobDetailInput.cs
  19. 8
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/Inputs/CoatingIssueJobEditInput.cs
  20. 8
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/InjectionJobs/DTOs/InjectionIssueJobDTO.cs
  21. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/InjectionJobs/DTOs/InjectionIssueJobDetailDTO.cs
  22. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/InjectionJobs/Inputs/InjectionIssueJobDetailInput.cs
  23. 15
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/InjectionJobs/Inputs/InjectionIssueJobEditInput.cs
  24. 11
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/KittingIssueJobs/DTOs/KittingIssueJobDTO.cs
  25. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/KittingIssueJobs/IKittingIssueJobAppService.cs
  26. 9
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/KittingIssueJobs/Inputs/KittingIssueJobEditInput.cs
  27. 8
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleIssueNotes/DTOs/AssembleIssueNoteDTO.cs
  28. 5
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleIssueNotes/IAssembleIssueNoteAppService.cs
  29. 8
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleIssueNotes/Inputs/AssembleIssueNoteEditInput.cs
  30. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleIssueNotes/Inputs/AssembleIssueNoteImportInput.cs
  31. 9
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/DTOs/CoatingIssueNoteDTO.cs
  32. 0
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/DTOs/CoatingIssueNoteDetailDTO.cs
  33. 5
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/ICoatingIssueNoteAppService.cs
  34. 0
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/Inputs/CoatingIssueNoteDetailInput.cs
  35. 8
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/Inputs/CoatingIssueNoteEditInput.cs
  36. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/Inputs/CoatingIssueNoteImportInput.cs
  37. 8
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/InjectionIssueNotes/DTOs/InjectionIssueNoteDTO.cs
  38. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/InjectionIssueNotes/DTOs/InjectionIssueNoteDetailDTO.cs
  39. 11
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/InjectionIssueNotes/IInjectionIssueNoteAppService.cs
  40. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/InjectionIssueNotes/Inputs/InjectionIssueNoteDetailInput.cs
  41. 8
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/InjectionIssueNotes/Inputs/InjectionIssueNoteEditInput.cs
  42. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/InjectionIssueNotes/Inputs/InjectionIssueNoteImportInput.cs
  43. 9
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/KittingIssueNotes/DTOs/KittingIssueNoteDTO.cs
  44. 5
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/KittingIssueNotes/IKittingIssueNoteAppService.cs
  45. 10
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/KittingIssueNotes/Inputs/KittingIssueNoteEditInput.cs
  46. 9
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/KittingIssueNotes/Inputs/KittingIssueNoteImportInput.cs
  47. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/InjectionIssueRequests/DTOs/InjectionIssueRequestDTO.cs
  48. 65
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/InjectionIssueRequests/DTOs/InjectionIssueRequestDetailDTO.cs
  49. 8
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/InjectionIssueRequests/DTOs/UnCompletedRequestDto.cs
  50. 8
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/InjectionIssueRequests/IInjectionIssueRequestAppService.cs
  51. 13
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/InjectionIssueRequests/Inputs/InjectionIssueRequestEditInput.cs
  52. 9
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/InjectionIssueRequests/Inputs/InjectionIssueRequestImportInput.cs
  53. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/KittingIssueRequests/DTOs/KittingIssueRequestDTO.cs
  54. 58
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/KittingIssueRequests/DTOs/KittingIssueRequestDetailDTO.cs
  55. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/KittingIssueRequests/IKittingIssueRequestAppService.cs
  56. 3
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/KittingIssueRequests/Inputs/KittingIssueRequestEditInput.cs
  57. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/KittingIssueRequests/Inputs/KittingIssueRequestImportInput.cs
  58. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AssembleIssueJobs/AssembleIssueJobAppService.cs
  59. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAppService.cs
  60. 9
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/InjectionIssueJobs/InjectionIssueJobAppService.cs
  61. 249
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobAppService.cs
  62. 47
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/AssembleIssueNotes/AssembleIssueNoteAppService.cs
  63. 44
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteAppService.cs
  64. 11
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/InjectionIssueNotes/InjectionIssueNoteAppService.cs
  65. 46
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/KittingIssueNotes/KittingIssueNoteAppService.cs
  66. 159
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/AssembleIssueRequests/AssembleIssueRequestAppService.cs
  67. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/AssembleIssueRequests/AssembleIssueRequestAutoMapperProfile.cs
  68. 137
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/CoatingIssueRequests/CoatingIssueRequestAppService.cs
  69. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/CoatingIssueRequests/CoatingIssueRequestAutoMapperProfile.cs
  70. 229
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/InjectionIssueRequests/InjectionIssueRequestAppService.cs
  71. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/InjectionIssueRequests/InjectionIssueRequestAutoMapperProfile.cs
  72. 223
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/KittingIssueRequests/KittingIssueRequestAppService.cs
  73. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/KittingIssueRequests/KittingIssueRequestAutoMapperProfile.cs
  74. 8
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/AssembleIssueJobs/AssembleIssueJob.cs
  75. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJob.cs
  76. 13
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/InjectionIssueJobs/InjectionIssueJob.cs
  77. 11
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/InjectionIssueJobs/InjectionIssueJobDetail.cs
  78. 13
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJob.cs
  79. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/AssembleIssueNotes/AssembleIssueNote.cs
  80. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNote.cs
  81. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/InjectionIssueNotes/InjectionIssueNote.cs
  82. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/InjectionIssueNotes/InjectionIssueNoteDetail.cs
  83. 14
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/KittingIssueNotes/KittingIssueNote.cs
  84. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/AssembleIssueRequests/AssembleIssueRequest.cs
  85. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/CoatingIssuelRequests/CoatingIssueRequest.cs
  86. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/InjectionIssueRequests/InjectionIssueRequest.cs
  87. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/InjectionIssueRequests/InjectionIssueRequestDetail.cs
  88. 13
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/KittingIssueRequests/KittingIssueRequest.cs
  89. 23
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/KittingIssueRequests/KittingIssueRequestManager.cs
  90. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/AssembleIssueJobs/AssembleIssueJobDbContextModelCreatingExtensions.cs
  91. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/CoatingIssueJob/CoatingIssueJobDbContextModelCreatingExtensions.cs
  92. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/InjectionIssueJobs/InjectionIssueJobDbContextModelCreatingExtensions.cs
  93. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobDbContextModelCreatingExtensions.cs
  94. 32114
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240426024936_Update_Issue.Designer.cs
  95. 181
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240426024936_Update_Issue.cs
  96. 55
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/StoreDbContextModelSnapshot.cs
  97. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/AssembleIssueNotes/AssembleIssueNoteDbContextModelCreatingExtensions.cs
  98. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDbContextModelCreatingExtensions.cs
  99. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/InjectionIssueNotes/InjectionIssueNoteDbContextModelCreatingExtensions.cs
  100. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/KittingIssueNotes/KittingIssueNoteDbContextModelCreatingExtensions.cs

6
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Incoming/InjectionMoldingRequestReader.cs

@ -20,6 +20,8 @@ using System.Text.Json.Serialization;
using System.IdentityModel.Tokens.Jwt; using System.IdentityModel.Tokens.Jwt;
using Volo.Abp; using Volo.Abp;
using System.Net.NetworkInformation; using System.Net.NetworkInformation;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent.Incoming; namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent.Incoming;
public class InjectionMoldingRequestReader : IReader public class InjectionMoldingRequestReader : IReader
{ {
@ -121,7 +123,7 @@ public class InjectionMoldingRequestReader : IReader
InjectionIssueRequestEditInput input = new InjectionIssueRequestEditInput(); InjectionIssueRequestEditInput input = new InjectionIssueRequestEditInput();
input.Worker = "Vision"; input.Worker = "Vision";
input.Type = "Vision"; input.IssueRequestType = EnumIssueRequestType.Vision;
input.AutoSubmit = true; input.AutoSubmit = true;
input.ActiveDate = DateTime.Now; input.ActiveDate = DateTime.Now;
input.UseOnTheWayLocation = false; input.UseOnTheWayLocation = false;
@ -135,7 +137,7 @@ public class InjectionMoldingRequestReader : IReader
ToLocationCode = inject.AreaID.ToString(), ToLocationCode = inject.AreaID.ToString(),
PositionCode=inject.CargoID, PositionCode=inject.CargoID,
Qty = 1, Qty = 1,
RecommendType = EnumRecommendType.W, RecommendType = EnumRecommendType.RAW,
IssuedQty = 0, IssuedQty = 0,
ReceivedQty = 0, ReceivedQty = 0,
Status = EnumStatus.Open, Status = EnumStatus.Open,

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

@ -68,7 +68,7 @@ public class PositionCodeAppService
var itemBasic = await ItemBasicAppService.GetByCodeAsync(input.PartCode).ConfigureAwait(false); var itemBasic = await ItemBasicAppService.GetByCodeAsync(input.PartCode).ConfigureAwait(false);
Check.NotNull(itemBasic, "物品代码", $"物品 {input.PartCode} 不存在"); Check.NotNull(itemBasic, "物品代码", $"物品 {input.PartCode} 不存在");
//如果类型选择为原料,校验物料号类型必须为原料,器具、KItting 的不用加校验 //如果类型选择为原料,校验物料号类型必须为原料,器具、KItting 的不用加校验
if (input.Type == EnumRecommendType.W && itemBasic.CanBuy != true) if (input.Type == EnumRecommendType.RAW && itemBasic.CanBuy != true)
{ {
throw new UserFriendlyException($"{input.PartCode} 物料号类型必须为采购件"); throw new UserFriendlyException($"{input.PartCode} 物料号类型必须为采购件");
} }
@ -80,7 +80,7 @@ public class PositionCodeAppService
var location = await LocationAppService.GetByCodeAsync(input.LocationCode).ConfigureAwait(false); var location = await LocationAppService.GetByCodeAsync(input.LocationCode).ConfigureAwait(false);
Check.NotNull(location, "库位代码", $"库位 {input.LocationCode} 不存在"); Check.NotNull(location, "库位代码", $"库位 {input.LocationCode} 不存在");
//如果类型选择为原料,库位的类型必须为原料库位 //如果类型选择为原料,库位的类型必须为原料库位
if (input.Type == EnumRecommendType.W && location.Type != EnumLocationType.RAW) if (input.Type == EnumRecommendType.RAW && location.Type != EnumLocationType.RAW)
{ {
throw new UserFriendlyException($"{input.LocationCode} 库位的类型必须为原料库位"); throw new UserFriendlyException($"{input.LocationCode} 库位的类型必须为原料库位");
} }
@ -120,7 +120,7 @@ public class PositionCodeAppService
var itemBasic = await ItemBasicAppService.GetByCodeAsync(input.PartCode).ConfigureAwait(false); var itemBasic = await ItemBasicAppService.GetByCodeAsync(input.PartCode).ConfigureAwait(false);
Check.NotNull(itemBasic, "物品代码", $"物品 {input.PartCode} 不存在"); Check.NotNull(itemBasic, "物品代码", $"物品 {input.PartCode} 不存在");
//如果类型选择为原料,校验物料号类型必须为原料,器具、KItting 的不用加校验 //如果类型选择为原料,校验物料号类型必须为原料,器具、KItting 的不用加校验
if (input.Type == EnumRecommendType.W && itemBasic.Type != "10C02") if (input.Type == EnumRecommendType.RAW && itemBasic.Type != "10C02")
{ {
throw new UserFriendlyException($"{input.PartCode} 物料号类型必须为原料"); throw new UserFriendlyException($"{input.PartCode} 物料号类型必须为原料");
} }
@ -132,7 +132,7 @@ public class PositionCodeAppService
var location = await LocationAppService.GetByCodeAsync(input.LocationCode).ConfigureAwait(false); var location = await LocationAppService.GetByCodeAsync(input.LocationCode).ConfigureAwait(false);
Check.NotNull(location, "库位代码", $"库位 {input.LocationCode} 不存在"); Check.NotNull(location, "库位代码", $"库位 {input.LocationCode} 不存在");
//如果类型选择为原料,库位的类型必须为原料库位 //如果类型选择为原料,库位的类型必须为原料库位
if (input.Type == EnumRecommendType.W && location.Type!= EnumLocationType.RAW) if (input.Type == EnumRecommendType.RAW && location.Type!= EnumLocationType.RAW)
{ {
throw new UserFriendlyException($"{input.LocationCode} 库位的类型必须为原料库位"); throw new UserFriendlyException($"{input.LocationCode} 库位的类型必须为原料库位");
} }
@ -180,13 +180,13 @@ public class PositionCodeAppService
} }
var itemBasic = await ItemBasicAppService.GetByCodeAsync(input.PartCode).ConfigureAwait(false); var itemBasic = await ItemBasicAppService.GetByCodeAsync(input.PartCode).ConfigureAwait(false);
//如果类型选择为原料,校验物料号类型必须为原料,器具、KItting 的不用加校验 //如果类型选择为原料,校验物料号类型必须为原料,器具、KItting 的不用加校验
if (input.Type == EnumRecommendType.W && itemBasic.Type != "10C02") if (input.Type == EnumRecommendType.RAW && itemBasic.Type != "10C02")
{ {
validationRresult.Add(new ValidationResult($"物品代码{input.PartCode} 物料号类型必须为原料", new string[] { "物料号类型" })); validationRresult.Add(new ValidationResult($"物品代码{input.PartCode} 物料号类型必须为原料", new string[] { "物料号类型" }));
} }
var location = await LocationAppService.GetByCodeAsync(input.LocationCode).ConfigureAwait(false); var location = await LocationAppService.GetByCodeAsync(input.LocationCode).ConfigureAwait(false);
//如果类型选择为原料,库位的类型必须为原料库位 //如果类型选择为原料,库位的类型必须为原料库位
if (input.Type==EnumRecommendType.W && location.Type != EnumLocationType.RAW) if (input.Type==EnumRecommendType.RAW && location.Type != EnumLocationType.RAW)
{ {
validationRresult.Add(new ValidationResult($"库位代码{input.LocationCode} 库位的类型必须为原料库位", new string[] { "库位类型" })); validationRresult.Add(new ValidationResult($"库位代码{input.LocationCode} 库位的类型必须为原料库位", new string[] { "库位类型" }));
} }

16
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/ExpectOuts/IExpectOutAppService.cs

@ -24,13 +24,6 @@ public interface IExpectOutAppService
EnumInventoryStatus enumInventoryStatus, EnumInventoryStatus enumInventoryStatus,
string lot); string lot);
Task RemoveListByItemCodeAndStatusAndPackingCodeAsync(
string itemCode,
string locationCode,
string packingCode,
EnumInventoryStatus enumInventoryStatus,
string lot);
/// <summary> /// <summary>
/// 保存拆箱时涉及的明细修改 /// 保存拆箱时涉及的明细修改
/// </summary> /// </summary>
@ -43,4 +36,13 @@ public interface IExpectOutAppService
/// <returns></returns> /// <returns></returns>
Task<List<ExpectOutDTO>> GetListByJobNumberAsync(SplitPacking_UpdateDetailInput input); Task<List<ExpectOutDTO>> GetListByJobNumberAsync(SplitPacking_UpdateDetailInput input);
Task RemoveByNumberAndInventoryAsync(
string jobNumber,
string itemCode,
string locationCode,
string packingCode,
EnumInventoryStatus enumInventoryStatus,
string lot,
decimal qty);
} }

3
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Balances/BalanceAppService.cs

@ -604,8 +604,9 @@ public class BalanceAppService
[HttpGet("usable-list")] [HttpGet("usable-list")]
public virtual async Task<List<BalanceDTO>> GetUsableListAsync(RecommendBalanceRequestInput input) public virtual async Task<List<BalanceDTO>> GetUsableListAsync(RecommendBalanceRequestInput input)
{ {
var inventoryBalances = await _balanceManager var inventoryBalances = await _balanceManager
.GetUsableListAsync(input.ItemCode, input.Locations, input.Statuses, true).ConfigureAwait(false); .GetUsableListAsync(input.ItemCode, input.Locations, input.Statuses, input.IsPackingCode).ConfigureAwait(false);
var dtos = ObjectMapper.Map<List<Balance>, List<BalanceDTO>>(inventoryBalances); var dtos = ObjectMapper.Map<List<Balance>, List<BalanceDTO>>(inventoryBalances);

33
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/ExpectOuts/ExpectOutAppService.cs

@ -43,6 +43,39 @@ public class ExpectOutAppService
await _expectOutManager.RemoveAsync(jobNumber).ConfigureAwait(false); await _expectOutManager.RemoveAsync(jobNumber).ConfigureAwait(false);
} }
[HttpPost("remove/job-number-and-inventory-balance")]
public virtual async Task RemoveByNumberAndInventoryAsync(
string jobNumber,
string itemCode,
string locationCode,
string packingCode,
EnumInventoryStatus enumInventoryStatus,
string lot,
decimal qty)
{
var expectOut= await _repository.FindAsync(p =>
p.ItemCode == itemCode &&
p.Status == enumInventoryStatus &&
p.PackingCode == packingCode &&
p.Lot == lot&&
p.JobNumber==jobNumber
).ConfigureAwait(false);
if (expectOut != null)
{
expectOut.Qty -= qty;
}
if (expectOut.Qty == 0)
{
await _repository.DeleteAsync(expectOut).ConfigureAwait(false);
}
else
{
await _repository.UpdateAsync(expectOut).ConfigureAwait(false);
}
}
[HttpPost("remove/{id}")] [HttpPost("remove/{id}")]
public virtual async Task RemoveAsync(Guid id) public virtual async Task RemoveAsync(Guid id)
{ {

1
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/Balances/BalanceManager.cs

@ -867,6 +867,7 @@ public class BalanceManager : DomainService, IBalanceManager
.FilterLocationEnablePickAsync(locations) .FilterLocationEnablePickAsync(locations)
//排序库存余额 最终可用的余额集合 //排序库存余额 最终可用的余额集合
.SortByFifo(); .SortByFifo();
usableBalances = usableBalances.Where(p => p.Qty != 0).ToList();
return usableBalances; return usableBalances;
} }

5
be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Basedata/EnumLocationType.cs

@ -83,4 +83,9 @@ public enum EnumLocationType
/// Kitting线边 /// Kitting线边
/// </summary> /// </summary>
[Display(Name = "Kitting线边")] KittingWip = 15, [Display(Name = "Kitting线边")] KittingWip = 15,
/// <summary>
/// 立体库
/// </summary>
[Display(Name = "立体库")] DimensionalStorehouse = 16,
} }

7
be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Basedata/EnumProductionLineType.cs

@ -19,5 +19,10 @@ public enum EnumProductionLineType
/// <summary> /// <summary>
/// 装配 /// 装配
/// </summary> /// </summary>
[Display(Name = "装配")] Assemble = 3 [Display(Name = "装配")] Assemble = 3,
/// <summary>
/// Kitting
/// </summary>
[Display(Name = "Kitting")] Kitting = 4
} }

18
be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumIssueRequestType - 复制.cs

@ -0,0 +1,18 @@
using System.ComponentModel.DataAnnotations;
namespace Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
public enum EnumIssueSendType
{
None = 0,
/// <summary>
/// 按数量
/// </summary>
[Display(Name = "按数量")] QtyType = 1,
/// <summary>
/// 按箱数
/// </summary>
[Display(Name = "按箱数")] BoxQtyType = 2
}

36
be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumIssueRequestType.cs

@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
public enum EnumIssueRequestType
{
None = 0,
/// <summary>
/// 视觉
/// </summary>
[Display(Name = "视觉发起")]
Vision =1,
/// <summary>
/// Mes
/// </summary>
[Display(Name = "Mes发起")]
Mes =2,
/// <summary>
/// 立体库
/// </summary>
[Display(Name = "立体库发起")]
DimensionalStorehouse=3,
/// <summary>
/// 位置码
/// </summary>
[Display(Name = "位置码")]
PositionCode =4,
}

29
be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumIssueType.cs

@ -1,29 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
public enum EnumIssueType
{
None=0,
/// <summary>
/// 按箱 叫料
/// </summary>
BoxQty=1,
/// <summary>
/// 按数量 叫料
/// </summary>
Qty=2,
/// <summary>
/// 按视觉 叫料
/// </summary>
Vision = 3,
}

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

@ -16,17 +16,17 @@ public enum EnumRecommendType
/// 原料 /// 原料
/// </summary> /// </summary>
[Display(Name = "原料")] [Display(Name = "原料")]
W = 1, RAW = 1,
/// <summary> /// <summary>
/// 半成品 /// 半成品
/// </summary> /// </summary>
[Display(Name = "半成品")] [Display(Name = "半成品")]
B = 2, SEMI = 2,
/// <summary> /// <summary>
/// kitting区 /// kitting区
/// </summary> /// </summary>
[Display(Name = "Kitting区")] [Display(Name = "Kitting区")]
K = 3 KITTING = 3
} }

8
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleIssueJobs/DTOs/AssembleIssueJobDTO.cs

@ -1,5 +1,6 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -10,11 +11,10 @@ namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class AssembleIssueJobDTO : SfsJobDTOBase<AssembleIssueJobDetailDTO> public class AssembleIssueJobDTO : SfsJobDTOBase<AssembleIssueJobDetailDTO>
{ {
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料请求类型")] [Display(Name = "叫料类型")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] public EnumIssueRequestType IssueRequestType { get; set; }
public string RequestType { get; set; }
/// <summary> /// <summary>
/// 生产线 /// 生产线

8
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleIssueJobs/Inputs/AssembleIssueJobEditInput.cs

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -25,11 +26,10 @@ public class AssembleIssueJobEditInput : SfsJobCreateUpdateInputBase, ISfsJobCre
public string AssembleRequestNumber { get; set; } public string AssembleRequestNumber { get; set; }
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料请求类型")] [Display(Name = "叫料类型")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] public EnumIssueRequestType IssueRequestType { get; set; }
public string RequestType { get; set; }
/// <summary> /// <summary>
/// 任务类型 /// 任务类型

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

@ -1,5 +1,6 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs; namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
@ -11,11 +12,10 @@ namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
public class CoatingIssueJobDTO : SfsJobDTOBase<CoatingIssueJobDetailDTO> public class CoatingIssueJobDTO : SfsJobDTOBase<CoatingIssueJobDetailDTO>
{ {
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料请求类型")] [Display(Name = "叫料类型")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] public EnumIssueRequestType IssueRequestType { get; set; }
public string RequestType { get; set; }
/// <summary> /// <summary>
/// 生产线 /// 生产线

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

0
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobCheckInput.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/Inputs/CoatingIssueJobCheckInput.cs

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

8
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobEditInput.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/Inputs/CoatingIssueJobEditInput.cs

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs; namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
@ -26,11 +27,10 @@ public class CoatingIssueJobEditInput : SfsJobCreateUpdateInputBase, ISfsJobCrea
public string MaterialRequestNumber { get; set; } public string MaterialRequestNumber { get; set; }
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料请求类型")] [Display(Name = "叫料类型")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] public EnumIssueRequestType IssueRequestType { get; set; }
public string RequestType { get; set; }
/// <summary> /// <summary>
/// 任务类型 /// 任务类型

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

@ -1,5 +1,6 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -10,11 +11,10 @@ namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class InjectionIssueJobDTO : SfsJobDTOBase<InjectionIssueJobDetailDTO> public class InjectionIssueJobDTO : SfsJobDTOBase<InjectionIssueJobDetailDTO>
{ {
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料请求类型")] [Display(Name = "叫料类型")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] public EnumIssueRequestType IssueRequestType { get; set; }
public string RequestType { get; set; }
/// <summary> /// <summary>
/// 生产线 /// 生产线

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

@ -3,6 +3,7 @@ using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Application.Contracts; using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;

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

@ -3,6 +3,7 @@ using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Application.Contracts; using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;

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

@ -9,7 +9,6 @@ namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class InjectionIssueJobEditInput : SfsJobCreateUpdateInputBase, ISfsJobCreateInput<InjectionIssueJobDetailInput> public class InjectionIssueJobEditInput : SfsJobCreateUpdateInputBase, ISfsJobCreateInput<InjectionIssueJobDetailInput>
{ {
#region Create
/// <summary> /// <summary>
/// 上游任务编号 /// 上游任务编号
/// </summary> /// </summary>
@ -25,13 +24,6 @@ public class InjectionIssueJobEditInput : SfsJobCreateUpdateInputBase, ISfsJobCr
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string InjectionIssueRequestNumber { get; set; } public string InjectionIssueRequestNumber { get; set; }
/// <summary>
/// 叫料请求类型
/// </summary>
[Display(Name = "叫料请求类型")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string RequestType { get; set; }
/// <summary> /// <summary>
/// 任务类型 /// 任务类型
/// </summary> /// </summary>
@ -65,5 +57,10 @@ public class InjectionIssueJobEditInput : SfsJobCreateUpdateInputBase, ISfsJobCr
/// </summary> /// </summary>
[Display(Name = "使用在途库")] [Display(Name = "使用在途库")]
public bool UseOnTheWayLocation { get; set; } public bool UseOnTheWayLocation { get; set; }
#endregion
/// <summary>
/// 叫料类型
/// </summary>
[Display(Name = "叫料类型")]
public EnumIssueRequestType IssueRequestType { get; set; }
} }

11
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/KittingIssueJobs/DTOs/KittingIssueJobDTO.cs

@ -1,5 +1,6 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -10,12 +11,10 @@ namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class KittingIssueJobDTO : SfsJobDTOBase<KittingIssueJobDetailDTO> public class KittingIssueJobDTO : SfsJobDTOBase<KittingIssueJobDetailDTO>
{ {
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料请求类型")] [Display(Name = "叫料类型")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] public EnumIssueRequestType IssueRequestType { get; set; }
public string RequestType { get; set; }
/// <summary> /// <summary>
/// 生产线 /// 生产线
/// </summary> /// </summary>
@ -35,4 +34,6 @@ public class KittingIssueJobDTO : SfsJobDTOBase<KittingIssueJobDetailDTO>
/// </summary> /// </summary>
[Display(Name = "使用在途库")] [Display(Name = "使用在途库")]
public bool UseOnTheWayLocation { get; set; } public bool UseOnTheWayLocation { get; set; }
public EnumIssueSendType EnumIssueSendType { get; set; }
} }

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/KittingIssueJobs/IKittingIssueJobAppService.cs

@ -1,3 +1,4 @@
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -11,4 +12,10 @@ public interface IKittingIssueJobAppService
Task CancelByMaterialRequestAsync(string requestNumber); Task CancelByMaterialRequestAsync(string requestNumber);
Task<List<KittingIssueJobDTO>> GetByRequestNumberAsync(string requestNumber); Task<List<KittingIssueJobDTO>> GetByRequestNumberAsync(string requestNumber);
/// <summary>
/// 执行任务明细
/// </summary>
/// <returns></returns>
Task ExecuteDetailAsync(Guid masterId,Guid detailId, KittingIssueJobDetailDTO issueJobDetailDto);
} }

9
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/KittingIssueJobs/Inputs/KittingIssueJobEditInput.cs

@ -26,11 +26,10 @@ public class KittingIssueJobEditInput : SfsJobCreateUpdateInputBase, ISfsJobCrea
public string KittingRequestNumber { get; set; } public string KittingRequestNumber { get; set; }
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料请求类型")] [Display(Name = "叫料类型")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] public EnumIssueRequestType IssueRequestType { get; set; }
public string RequestType { get; set; }
/// <summary> /// <summary>
/// 任务类型 /// 任务类型
@ -65,5 +64,7 @@ public class KittingIssueJobEditInput : SfsJobCreateUpdateInputBase, ISfsJobCrea
/// </summary> /// </summary>
[Display(Name = "使用在途库")] [Display(Name = "使用在途库")]
public bool UseOnTheWayLocation { get; set; } public bool UseOnTheWayLocation { get; set; }
public EnumIssueSendType EnumIssueSendType { get; set; }
#endregion #endregion
} }

8
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleIssueNotes/DTOs/AssembleIssueNoteDTO.cs

@ -1,6 +1,7 @@
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -20,11 +21,10 @@ public class AssembleIssueNoteDTO : SfsStoreDTOBase<AssembleIssueNoteDetailDTO>,
public string RequestNumber { get; set; } public string RequestNumber { get; set; }
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料请求类型")] [Display(Name = "叫料类型")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] public EnumIssueRequestType IssueRequestType { get; set; }
public string RequestType { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库

5
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleIssueNotes/IAssembleIssueNoteAppService.cs

@ -12,10 +12,5 @@ public interface IAssembleIssueNoteAppService : ISfsStoreMasterReadOnlyAppServic
Task<AssembleIssueNoteDTO> ConfirmAsync(Guid id); Task<AssembleIssueNoteDTO> ConfirmAsync(Guid id);
Task<AssembleIssueNoteDTO> ConfirmAsync(string number);
Task<PagedResultDto<AssembleIssueNoteDTO>> GetListByTypeAsync(SfsStoreRequestInputBase requestInput,
string requestType, bool includeDetails = false, CancellationToken cancellationToken = default);
Task<List<AssembleIssueNoteDTO>> GetListUnConfirmedByTypeAsync(string requestType);
} }

8
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleIssueNotes/Inputs/AssembleIssueNoteEditInput.cs

@ -1,6 +1,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -41,11 +42,10 @@ public class AssembleIssueNoteEditInput : SfsStoreCreateOrUpdateInputBase
public string RequestNumber { get; set; } public string RequestNumber { get; set; }
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料请求类型")] [Display(Name = "叫料类型")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] public EnumIssueRequestType IssueRequestType { get; set; }
public string RequestType { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库

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

@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -19,10 +20,10 @@ public class AssembleIssueNoteImportInput : SfsStoreImportInputBase, IHasJobNumb
public string RequestNumber { get; set; } public string RequestNumber { get; set; }
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料请求类型")] [Display(Name = "叫料类型")]
public string RequestType { get; set; } public EnumIssueRequestType IssueRequestType { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库

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

@ -1,6 +1,7 @@
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes; namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes;
@ -18,13 +19,11 @@ public class CoatingIssueNoteDTO : SfsStoreDTOBase<CoatingIssueNoteDetailDTO>, I
/// </summary> /// </summary>
[Display(Name = "请求代码")] [Display(Name = "请求代码")]
public string RequestNumber { get; set; } public string RequestNumber { get; set; }
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料请求类型")] [Display(Name = "叫料类型")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] public EnumIssueRequestType IssueRequestType { get; set; }
public string RequestType { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库

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

5
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/ICoatingIssueNoteAppService.cs

@ -13,10 +13,5 @@ public interface ICoatingIssueNoteAppService : ISfsStoreMasterReadOnlyAppService
Task<CoatingIssueNoteDTO> ConfirmAsync(Guid id); Task<CoatingIssueNoteDTO> ConfirmAsync(Guid id);
Task<CoatingIssueNoteDTO> ConfirmAsync(string number);
Task<PagedResultDto<CoatingIssueNoteDTO>> GetListByTypeAsync(SfsStoreRequestInputBase requestInput,
string requestType, bool includeDetails = false, CancellationToken cancellationToken = default);
Task<List<CoatingIssueNoteDTO>> GetListUnConfirmedByTypeAsync(string requestType);
} }

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

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

@ -1,6 +1,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes; namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes;
@ -42,11 +43,10 @@ public class CoatingIssueNoteEditInput : SfsStoreCreateOrUpdateInputBase
public string RequestNumber { get; set; } public string RequestNumber { get; set; }
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料请求类型")] [Display(Name = "叫料类型")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] public EnumIssueRequestType IssueRequestType { get; set; }
public string RequestType { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库

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

@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes; namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes;
@ -20,10 +21,10 @@ public class CoatingIssueNoteImportInput : SfsStoreImportInputBase, IHasJobNumbe
public string RequestNumber { get; set; } public string RequestNumber { get; set; }
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料请求类型")] [Display(Name = "叫料类型")]
public string RequestType { get; set; } public EnumIssueRequestType IssueRequestType { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库

8
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/InjectionIssueNotes/DTOs/InjectionIssueNoteDTO.cs

@ -1,6 +1,7 @@
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -20,11 +21,10 @@ public class InjectionIssueNoteDTO : SfsStoreDTOBase<InjectionIssueNoteDetailDTO
public string RequestNumber { get; set; } public string RequestNumber { get; set; }
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料请求类型")] [Display(Name = "叫料类型")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] public EnumIssueRequestType IssueRequestType { get; set; }
public string RequestType { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/InjectionIssueNotes/DTOs/InjectionIssueNoteDetailDTO.cs

@ -3,6 +3,7 @@ using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Application.Contracts; using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;

11
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/InjectionIssueNotes/IInjectionIssueNoteAppService.cs

@ -3,10 +3,12 @@ using System.Collections.Generic;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public interface IInjectionIssueNoteAppService : ISfsStoreMasterReadOnlyAppServiceBase<InjectionIssueNoteDTO, SfsStoreRequestInputBase, InjectionIssueNoteDetailDTO, SfsStoreRequestInputBase> public interface IInjectionIssueNoteAppService : ISfsStoreMasterReadOnlyAppServiceBase<InjectionIssueNoteDTO,
SfsStoreRequestInputBase, InjectionIssueNoteDetailDTO, SfsStoreRequestInputBase>
{ {
Task<InjectionIssueNoteDTO> CreateAsync(InjectionIssueNoteEditInput input); Task<InjectionIssueNoteDTO> CreateAsync(InjectionIssueNoteEditInput input);
@ -14,8 +16,9 @@ public interface IInjectionIssueNoteAppService : ISfsStoreMasterReadOnlyAppServi
Task<InjectionIssueNoteDTO> ConfirmAsync(string number); Task<InjectionIssueNoteDTO> ConfirmAsync(string number);
Task<PagedResultDto<InjectionIssueNoteDTO>> GetListByTypeAsync(SfsStoreRequestInputBase requestInput, Task<List<InjectionIssueNoteDTO>> GetListUnConfirmedByTypeAsync(EnumIssueRequestType issueRequestType);
string requestType, bool includeDetails = false, CancellationToken cancellationToken = default);
Task<List<InjectionIssueNoteDTO>> GetListUnConfirmedByTypeAsync(string requestType); Task<PagedResultDto<InjectionIssueNoteDTO>> GetListByTypeAsync(SfsStoreRequestInputBase requestInput,
EnumIssueRequestType issueRequestType, bool includeDetails = false,
CancellationToken cancellationToken = default);
} }

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/InjectionIssueNotes/Inputs/InjectionIssueNoteDetailInput.cs

@ -3,6 +3,7 @@ using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Application.Contracts; using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;

8
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/InjectionIssueNotes/Inputs/InjectionIssueNoteEditInput.cs

@ -1,6 +1,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -41,11 +42,10 @@ public class InjectionIssueNoteEditInput : SfsStoreCreateOrUpdateInputBase
public string RequestNumber { get; set; } public string RequestNumber { get; set; }
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料请求类型")] [Display(Name = "叫料类型")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] public EnumIssueRequestType IssueRequestType { get; set; }
public string RequestType { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库

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

@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -19,10 +20,10 @@ public class InjectionIssueNoteImportInput : SfsStoreImportInputBase, IHasJobNum
public string RequestNumber { get; set; } public string RequestNumber { get; set; }
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料请求类型")] [Display(Name = "叫料类型")]
public string RequestType { get; set; } public EnumIssueRequestType IssueRequestType { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库

9
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/KittingIssueNotes/DTOs/KittingIssueNoteDTO.cs

@ -1,6 +1,7 @@
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -20,11 +21,10 @@ public class KittingIssueNoteDTO : SfsStoreDTOBase<KittingIssueNoteDetailDTO>, I
public string RequestNumber { get; set; } public string RequestNumber { get; set; }
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料请求类型")] [Display(Name = "叫料类型")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] public EnumIssueRequestType IssueRequestType { get; set; }
public string RequestType { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库
@ -44,4 +44,5 @@ public class KittingIssueNoteDTO : SfsStoreDTOBase<KittingIssueNoteDetailDTO>, I
[Display(Name = "确认时间")] [Display(Name = "确认时间")]
public DateTime? ConfirmTime { get; set; } public DateTime? ConfirmTime { get; set; }
public EnumIssueSendType EnumIssueSendType { get; set; }
} }

5
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/KittingIssueNotes/IKittingIssueNoteAppService.cs

@ -12,10 +12,5 @@ public interface IKittingIssueNoteAppService : ISfsStoreMasterReadOnlyAppService
Task<KittingIssueNoteDTO> ConfirmAsync(Guid id); Task<KittingIssueNoteDTO> ConfirmAsync(Guid id);
Task<KittingIssueNoteDTO> ConfirmAsync(string number);
Task<PagedResultDto<KittingIssueNoteDTO>> GetListByTypeAsync(SfsStoreRequestInputBase requestInput,
string requestType, bool includeDetails = false, CancellationToken cancellationToken = default);
Task<List<KittingIssueNoteDTO>> GetListUnConfirmedByTypeAsync(string requestType);
} }

10
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/KittingIssueNotes/Inputs/KittingIssueNoteEditInput.cs

@ -1,6 +1,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -41,16 +42,17 @@ public class KittingIssueNoteEditInput : SfsStoreCreateOrUpdateInputBase
public string RequestNumber { get; set; } public string RequestNumber { get; set; }
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料请求类型")] [Display(Name = "叫料类型")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] public EnumIssueRequestType IssueRequestType { get; set; }
public string RequestType { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库
/// </summary> /// </summary>
[Display(Name = "使用在途库")] [Display(Name = "使用在途库")]
public bool UseOnTheWayLocation { get; set; } public bool UseOnTheWayLocation { get; set; }
public EnumIssueSendType EnumIssueSendType { get; set; }
#endregion #endregion
} }

9
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/KittingIssueNotes/Inputs/KittingIssueNoteImportInput.cs

@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -19,10 +20,10 @@ public class KittingIssueNoteImportInput : SfsStoreImportInputBase, IHasJobNumbe
public string RequestNumber { get; set; } public string RequestNumber { get; set; }
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料请求类型")] [Display(Name = "叫料类型")]
public string RequestType { get; set; } public EnumIssueRequestType IssueRequestType { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库
@ -30,4 +31,6 @@ public class KittingIssueNoteImportInput : SfsStoreImportInputBase, IHasJobNumbe
[Display(Name = "使用在途库")] [Display(Name = "使用在途库")]
[Required(ErrorMessage = "{0}是必填项")] [Required(ErrorMessage = "{0}是必填项")]
public bool UseOnTheWayLocation { get; set; } public bool UseOnTheWayLocation { get; set; }
public EnumIssueSendType EnumIssueSendType { get; set; }
} }

4
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/InjectionIssueRequests/DTOs/InjectionIssueRequestDTO.cs

@ -1,4 +1,6 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -8,7 +10,7 @@ public class InjectionIssueRequestDTO : SfsStoreRequestDTOBase<InjectionIssueReq
/// 叫料类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料类型")] [Display(Name = "叫料类型")]
public string Type { get; set; } public EnumIssueRequestType IssueRequestType { get; set; }
/// <summary> /// <summary>
/// 是否使用在途库 /// 是否使用在途库

65
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/InjectionIssueRequests/DTOs/InjectionIssueRequestDetailDTO.cs

@ -8,55 +8,92 @@ namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class InjectionIssueRequestDetailDTO : SfsStoreDetailWithQtyDTOBase public class InjectionIssueRequestDetailDTO : SfsStoreDetailWithQtyDTOBase
{ {
#region 目标库位信息
/// <summary>
/// 目标库位
/// </summary>
[Display(Name = "目标库位")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ToLocationCode { get; set; }
/// <summary>
/// 目标库区
/// </summary>
[Display(Name = "目标库区")]
public string ToLocationArea { get; set; }
/// <summary>
/// 目标库位组
/// </summary>
[Display(Name = "目标库位组")]
public string ToLocationGroup { get; set; }
/// <summary>
/// 目标ERP储位
/// </summary>
[Display(Name = "目标ERP储位")]
public string ToLocationErpCode { get; set; }
/// <summary>
/// 目标仓库
/// </summary>
[Display(Name = "目标仓库")]
public string ToWarehouseCode { get; set; }
#endregion
/// <summary>
/// 生产线
/// </summary>
public string ProdLine { get; set; }
/// <summary> /// <summary>
/// 已发数量 /// 已发数量
/// </summary> /// </summary>
[Display(Name = "已发数量")]
public decimal IssuedQty { get; set; } public decimal IssuedQty { get; set; }
/// <summary> /// <summary>
/// 已收数量 /// 已收数量
/// </summary> /// </summary>
[Display(Name = "已收数量")]
public decimal ReceivedQty { get; set; } public decimal ReceivedQty { get; set; }
/// <summary> /// <summary>
/// 明细状态 /// 明细状态
/// </summary> /// </summary>
[Display(Name = "明细状态")]
public EnumStatus Status { get; set; } public EnumStatus Status { get; set; }
/// <summary> /// <summary>
/// 请求未发 /// 请求未发 还未发送的数量
/// </summary> /// </summary>
[Display(Name = "请求未发")]
[NotMapped] [NotMapped]
public decimal ToBeIssuedQty => Qty - IssuedQty; public decimal ToBeIssuedQty => Qty - IssuedQty;
/// <summary> /// <summary>
/// 已发未收 /// 已发未收
/// </summary> /// </summary>
[Display(Name = "已发未收")]
[NotMapped] [NotMapped]
public decimal ToBeReceivedQty => IssuedQty - ReceivedQty; public decimal ToBeReceivedQty => IssuedQty - ReceivedQty;
/// <summary> /// <summary>
/// 请求未收 /// 请求未收
/// </summary> /// </summary>
[Display(Name = "请求未收")]
[NotMapped] [NotMapped]
public decimal NotFinishQty => Qty - ReceivedQty; public decimal NotFinishQty => Qty - ReceivedQty;
/// <summary>
/// 位置码
/// </summary>
public string PositionCode { get; set; }
/// <summary>
/// 推荐类型
/// </summary>
public EnumRecommendType RecommendType { get; set; }
/// <summary> /// <summary>
/// 需求箱数量 /// 需求箱数量
/// </summary> /// </summary>
[Display(Name = "需求箱数量")] [Display(Name = "需求箱数量")]
public decimal BoxQty { get; set; } public decimal BoxQty { get; set; }
} }
public class UnCompletedRequestDto
{
public string ItemCode { get; set; }
public string LocCode { get; set; }
public string PositionCode { get; set; }
}

8
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/InjectionIssueRequests/DTOs/UnCompletedRequestDto.cs

@ -0,0 +1,8 @@
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class UnCompletedRequestDto
{
public string ItemCode { get; set; }
public string LocCode { get; set; }
public string PositionCode { get; set; }
}

8
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/InjectionIssueRequests/IInjectionIssueRequestAppService.cs

@ -10,14 +10,6 @@ public interface IInjectionIssueRequestAppService
: ISfsStoreRequestMasterAppServiceBase<InjectionIssueRequestDTO, SfsStoreRequestInputBase, InjectionIssueRequestEditInput, InjectionIssueRequestDetailDTO, SfsStoreRequestInputBase> : ISfsStoreRequestMasterAppServiceBase<InjectionIssueRequestDTO, SfsStoreRequestInputBase, InjectionIssueRequestEditInput, InjectionIssueRequestDetailDTO, SfsStoreRequestInputBase>
{ {
Task<InjectionIssueRequestDTO> CreateAndHandleAsync(InjectionIssueRequestEditInput input);
/// <summary>
/// 获取已完成的叫料单数量
/// </summary>
/// <returns></returns>
Task<long> GetCountAsync();
/// <summary> /// <summary>
/// 获取物品类别列表 /// 获取物品类别列表
/// </summary> /// </summary>

13
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/InjectionIssueRequests/Inputs/InjectionIssueRequestEditInput.cs

@ -1,18 +1,16 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class InjectionIssueRequestEditInput : SfsStoreRequestCreateOrUpdateInputBase public class InjectionIssueRequestEditInput : SfsStoreRequestCreateOrUpdateInputBase
{ {
#region Base
/// <summary> /// <summary>
/// 叫料类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料类型")] [Display(Name = "叫料类型")]
public string Type { get; set; } public EnumIssueRequestType IssueRequestType { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库
@ -24,10 +22,5 @@ public class InjectionIssueRequestEditInput : SfsStoreRequestCreateOrUpdateInput
/// 明细列表 /// 明细列表
/// </summary> /// </summary>
[Display(Name = "明细列表")] [Display(Name = "明细列表")]
public List<InjectionIssueRequestDetailInput> Details { get; set; } = new List<InjectionIssueRequestDetailInput>(); public List<InjectionIssueRequestDetailInput> Details { get; set; } = new();
#endregion
#region Create
#endregion
} }

9
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/InjectionIssueRequests/Inputs/InjectionIssueRequestImportInput.cs

@ -1,6 +1,5 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Application.Contracts; using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -11,11 +10,7 @@ public class InjectionIssueRequestImportInput : SfsStoreImportInputBase
/// 叫料类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料类型")] [Display(Name = "叫料类型")]
[Required(ErrorMessage = "{0}是必填项")] public EnumIssueRequestType IssueRequestType { get; set; }
[ImporterHeader(Name = "叫料类型")]
[ExporterHeader(DisplayName = "叫料类型")]
[ValueMapping("人工拉动", EnumMaterialRequestType.Issue_Manual)]
public string Type { get; set; }
/// <summary> /// <summary>
/// 物品代码 /// 物品代码

4
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/KittingIssueRequests/DTOs/KittingIssueRequestDTO.cs

@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -8,8 +9,7 @@ public class KittingIssueRequestDTO : SfsStoreRequestDTOBase<KittingIssueRequest
/// 叫料类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料类型")] [Display(Name = "叫料类型")]
public string Type { get; set; } public EnumIssueRequestType IssueRequestType { get; set; }
/// <summary> /// <summary>
/// 是否使用在途库 /// 是否使用在途库
/// </summary> /// </summary>

58
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/KittingIssueRequests/DTOs/KittingIssueRequestDetailDTO.cs

@ -8,45 +8,89 @@ namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class KittingIssueRequestDetailDTO : SfsStoreDetailWithQtyDTOBase public class KittingIssueRequestDetailDTO : SfsStoreDetailWithQtyDTOBase
{ {
#region 目标库位信息
/// <summary>
/// 目标库位
/// </summary>
[Display(Name = "目标库位")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ToLocationCode { get; set; }
/// <summary>
/// 目标库区
/// </summary>
[Display(Name = "目标库区")]
public string ToLocationArea { get; set; }
/// <summary>
/// 目标库位组
/// </summary>
[Display(Name = "目标库位组")]
public string ToLocationGroup { get; set; }
/// <summary>
/// 目标ERP储位
/// </summary>
[Display(Name = "目标ERP储位")]
public string ToLocationErpCode { get; set; }
/// <summary>
/// 目标仓库
/// </summary>
[Display(Name = "目标仓库")]
public string ToWarehouseCode { get; set; }
#endregion
/// <summary>
/// 生产线
/// </summary>
public string ProdLine { get; set; }
/// <summary> /// <summary>
/// 已发数量 /// 已发数量
/// </summary> /// </summary>
[Display(Name = "已发数量")]
public decimal IssuedQty { get; set; } public decimal IssuedQty { get; set; }
/// <summary> /// <summary>
/// 已收数量 /// 已收数量
/// </summary> /// </summary>
[Display(Name = "已收数量")]
public decimal ReceivedQty { get; set; } public decimal ReceivedQty { get; set; }
/// <summary> /// <summary>
/// 明细状态 /// 明细状态
/// </summary> /// </summary>
[Display(Name = "明细状态")]
public EnumStatus Status { get; set; } public EnumStatus Status { get; set; }
/// <summary> /// <summary>
/// 请求未发 /// 请求未发 还未发送的数量
/// </summary> /// </summary>
[Display(Name = "请求未发")]
[NotMapped] [NotMapped]
public decimal ToBeIssuedQty => Qty - IssuedQty; public decimal ToBeIssuedQty => Qty - IssuedQty;
/// <summary> /// <summary>
/// 已发未收 /// 已发未收
/// </summary> /// </summary>
[Display(Name = "已发未收")]
[NotMapped] [NotMapped]
public decimal ToBeReceivedQty => IssuedQty - ReceivedQty; public decimal ToBeReceivedQty => IssuedQty - ReceivedQty;
/// <summary> /// <summary>
/// 请求未收 /// 请求未收
/// </summary> /// </summary>
[Display(Name = "请求未收")]
[NotMapped] [NotMapped]
public decimal NotFinishQty => Qty - ReceivedQty; public decimal NotFinishQty => Qty - ReceivedQty;
/// <summary>
/// 位置码
/// </summary>
public string PositionCode { get; set; }
/// <summary>
/// 推荐类型
/// </summary>
public EnumRecommendType RecommendType { get; set; }
/// <summary> /// <summary>
/// 需求箱数量 /// 需求箱数量
/// </summary> /// </summary>

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/KittingIssueRequests/IKittingIssueRequestAppService.cs

@ -1,3 +1,4 @@
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -10,4 +11,5 @@ public interface IKittingIssueRequestAppService
{ {
Task<KittingIssueRequestDTO> CreateAndHandleAsync(KittingIssueRequestEditInput input); Task<KittingIssueRequestDTO> CreateAndHandleAsync(KittingIssueRequestEditInput input);
Task UpdateStatusCompletedAsync(string number);
} }

3
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/KittingIssueRequests/Inputs/KittingIssueRequestEditInput.cs

@ -1,6 +1,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -12,7 +13,7 @@ public class KittingIssueRequestEditInput : SfsStoreRequestCreateOrUpdateInputBa
/// 叫料类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料类型")] [Display(Name = "叫料类型")]
public string Type { get; set; } public EnumIssueRequestType IssueRequestType { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/KittingIssueRequests/Inputs/KittingIssueRequestImportInput.cs

@ -1,6 +1,7 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Application.Contracts; using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -11,11 +12,7 @@ public class KittingIssueRequestImportInput : SfsStoreImportInputBase
/// 叫料类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料类型")] [Display(Name = "叫料类型")]
[Required(ErrorMessage = "{0}是必填项")] public EnumIssueRequestType IssueRequestType { get; set; }
[ImporterHeader(Name = "叫料类型")]
[ExporterHeader(DisplayName = "叫料类型")]
[ValueMapping("人工拉动", EnumMaterialRequestType.Issue_Manual)]
public string Type { get; set; }
/// <summary> /// <summary>
/// 物品代码 /// 物品代码

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AssembleIssueJobs/AssembleIssueJobAppService.cs

@ -72,7 +72,7 @@ public class AssembleIssueJobAppService
var loctionDto = await _locationAppService.GetByCodeAsync(jobDetailInputdetail.RecommendFromLocationCode) var loctionDto = await _locationAppService.GetByCodeAsync(jobDetailInputdetail.RecommendFromLocationCode)
.ConfigureAwait(false); .ConfigureAwait(false);
if (loctionDto.RowCode != 1) if (loctionDto.Type == EnumLocationType.RAW && loctionDto.RowCode != 1)
{ {
input.JobStatus = EnumJobStatus.Wait; input.JobStatus = EnumJobStatus.Wait;

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

@ -73,7 +73,7 @@ public class CoatingIssueJobAppService
var loctionDto = await _locationAppService.GetByCodeAsync(jobDetailInputdetail.RecommendFromLocationCode) var loctionDto = await _locationAppService.GetByCodeAsync(jobDetailInputdetail.RecommendFromLocationCode)
.ConfigureAwait(false); .ConfigureAwait(false);
if (loctionDto.RowCode != 1) if (loctionDto.Type == EnumLocationType.RAW && loctionDto.RowCode != 1)
{ {
input.JobStatus = EnumJobStatus.Wait; input.JobStatus = EnumJobStatus.Wait;

9
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/InjectionIssueJobs/InjectionIssueJobAppService.cs

@ -75,7 +75,7 @@ public class InjectionIssueJobAppService
var loctionDto = await _locationAppService.GetByCodeAsync(jobDetailInputdetail.RecommendFromLocationCode) var loctionDto = await _locationAppService.GetByCodeAsync(jobDetailInputdetail.RecommendFromLocationCode)
.ConfigureAwait(false); .ConfigureAwait(false);
if (loctionDto.RowCode != 1) if (loctionDto.Type == EnumLocationType.RAW && loctionDto.RowCode != 1)
{ {
input.JobStatus = EnumJobStatus.Wait; input.JobStatus = EnumJobStatus.Wait;
@ -184,11 +184,4 @@ public class InjectionIssueJobAppService
return; return;
} }
[HttpPost("test")]
public virtual async Task Test()
{
Console.WriteLine("FuAZCZXVZXVXZVZ");
await Task.CompletedTask;
}
} }

249
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobAppService.cs

@ -1,19 +1,14 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data;
using System.Linq; using System.Linq;
using System.Linq.Expressions;
using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Castle.Components.DictionaryAdapter;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Win_in.Sfs.Basedata.Application.Contracts; 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; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Wms.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain; using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared; using Win_in.Sfs.Wms.Store.Domain.Shared;
@ -31,14 +26,23 @@ public class KittingIssueJobAppService
private readonly IKittingIssueJobManager _kittingIssueJobManager; private readonly IKittingIssueJobManager _kittingIssueJobManager;
private readonly ILocationAppService _locationAppService; private readonly ILocationAppService _locationAppService;
private readonly ITransferLibJobAppService _transferLibJobAppService; private readonly ITransferLibJobAppService _transferLibJobAppService;
private readonly IKittingIssueNoteAppService _kittingIssueNoteAppService;
private readonly IExpectOutAppService _expectOutAppService;
protected IKittingIssueRequestAppService KittingIssueRequestAppService =>
LazyServiceProvider.LazyGetRequiredService<IKittingIssueRequestAppService>();
public KittingIssueJobAppService( public KittingIssueJobAppService(
IKittingIssueJobRepository repository, IKittingIssueJobManager kittingIssueJobManager, IKittingIssueJobRepository repository, IKittingIssueJobManager kittingIssueJobManager,
ILocationAppService locationAppService, ITransferLibJobAppService transferLibJobAppService) : base(repository, kittingIssueJobManager) ILocationAppService locationAppService, ITransferLibJobAppService transferLibJobAppService,
IKittingIssueNoteAppService kittingIssueNoteAppService, IExpectOutAppService expectOutAppService) : base(
repository, kittingIssueJobManager)
{ {
_kittingIssueJobManager = kittingIssueJobManager; _kittingIssueJobManager = kittingIssueJobManager;
_locationAppService = locationAppService; _locationAppService = locationAppService;
_transferLibJobAppService = transferLibJobAppService; _transferLibJobAppService = transferLibJobAppService;
_kittingIssueNoteAppService = kittingIssueNoteAppService;
_expectOutAppService = expectOutAppService;
} }
[HttpPost("add-many")] [HttpPost("add-many")]
@ -47,6 +51,7 @@ public class KittingIssueJobAppService
foreach (var input in inputs) foreach (var input in inputs)
{ {
await CheckMinRowAndSetStatusAsync(input).ConfigureAwait(false); await CheckMinRowAndSetStatusAsync(input).ConfigureAwait(false);
await CheckDimensionalStorehouseAsync(input).ConfigureAwait(false);
} }
return await base.CreateManyAsync(inputs).ConfigureAwait(false); return await base.CreateManyAsync(inputs).ConfigureAwait(false);
@ -56,10 +61,139 @@ public class KittingIssueJobAppService
public override async Task<KittingIssueJobDTO> CreateAsync(KittingIssueJobEditInput input) public override async Task<KittingIssueJobDTO> CreateAsync(KittingIssueJobEditInput input)
{ {
await CheckMinRowAndSetStatusAsync(input).ConfigureAwait(false); await CheckMinRowAndSetStatusAsync(input).ConfigureAwait(false);
await CheckDimensionalStorehouseAsync(input).ConfigureAwait(false);
return await base.CreateAsync(input).ConfigureAwait(false); return await base.CreateAsync(input).ConfigureAwait(false);
} }
[HttpPost("invalid")]
public override async Task CancelAsync(Guid id)
{
var injectionJob = await _repository.GetAsync(id).ConfigureAwait(false);
if (injectionJob == null)
{
throw new UserFriendlyException($"未找到ID为 {id} 的任务");
}
await _kittingIssueJobManager.CancelAsync(injectionJob).ConfigureAwait(false);
}
[HttpPost("cancel-by-request/{injectionNumber}")]
public virtual async Task CancelByMaterialRequestAsync(string injectionNumber)
{
var entities = await _repository.GetListAsync(p => p.KittingRequestNumber == injectionNumber)
.ConfigureAwait(false);
foreach (var entity in entities)
{
await _kittingIssueJobManager.CancelAsync(entity).ConfigureAwait(false);
}
}
[HttpPost("by-request-number/{requestNumber}")]
public virtual async Task<List<KittingIssueJobDTO>> GetByRequestNumberAsync(string requestNumber)
{
var entitys = await _repository.GetListAsync(p => p.KittingRequestNumber == requestNumber)
.ConfigureAwait(false);
return ObjectMapper.Map<List<KittingIssueJob>, List<KittingIssueJobDTO>>(entitys);
}
/// <summary>
/// 库移回调
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost("Do-Call-Back")]
public async Task DoTransferLibCallbackAsync(TransferLibJobDTO dto)
{
var job = await _repository.FindAsync(p => p.Number == dto.CallJobNumber).ConfigureAwait(false);
var transferLibJobDto = await _transferLibJobAppService.GetByNumberAsync(dto.Number).ConfigureAwait(false);
var transferLibNoteDetail = dto.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);
}
/// <summary>
/// 执行任务明细
/// </summary>
/// <returns></returns>
[HttpPost("ExecuteDetail/{masterId}")]
public async Task ExecuteDetailAsync(Guid masterId, Guid detailId, KittingIssueJobDetailDTO issueJobDetailDto)
{
var kittingIssueJob = await _repository.GetAsync(masterId).ConfigureAwait(false);
var kittingIssueJobDto = ObjectMapper.Map<KittingIssueJob, KittingIssueJobDTO>(kittingIssueJob);
kittingIssueJobDto.Details = new List<KittingIssueJobDetailDTO> { issueJobDetailDto };
var kittingIssueNoteEditInput = await BuildKittingIssueNoteAsync(kittingIssueJobDto).ConfigureAwait(false);
await _kittingIssueNoteAppService.CreateAsync(kittingIssueNoteEditInput).ConfigureAwait(false);
kittingIssueJobDto = ObjectMapper.Map<KittingIssueJob, KittingIssueJobDTO>(kittingIssueJob);
if (kittingIssueJob.EnumIssueSendType == EnumIssueSendType.QtyType) //按箱叫料 因为任务只有1箱 所以可以直接完成
{
await UpdateJobStatusDoneAsync(kittingIssueJob, issueJobDetailDto).ConfigureAwait(false);
}
else
{
var detail = kittingIssueJob.Details.First(p => p.Id == issueJobDetailDto.Id);
if (issueJobDetailDto.HandledToQty >= detail.RequestQty)
{
await UpdateJobStatusDoneAsync(kittingIssueJob, issueJobDetailDto).ConfigureAwait(false);
}
}
}
#region 私有
/// <summary>
/// 创建补料记录实体
/// </summary>
/// <param name="kittingIssueJobDto"></param>
/// <returns></returns>
private async Task<KittingIssueNoteEditInput> BuildKittingIssueNoteAsync(KittingIssueJobDTO kittingIssueJobDto)
{
var kittingIssueNoteCreateInput =
ObjectMapper.Map<KittingIssueJobDTO, KittingIssueNoteEditInput>(kittingIssueJobDto);
kittingIssueNoteCreateInput.JobNumber = kittingIssueJobDto.Number;
await Task.CompletedTask.ConfigureAwait(false);
return kittingIssueNoteCreateInput;
}
/// <summary> /// <summary>
/// 判断是不是在最底层 如果不是则把状态变更为等待 并把库移推荐的From和To赋值 /// 判断是不是在最底层 如果不是则把状态变更为等待 并把库移推荐的From和To赋值
/// </summary> /// </summary>
@ -72,7 +206,7 @@ public class KittingIssueJobAppService
var loctionDto = await _locationAppService.GetByCodeAsync(jobDetailInputdetail.RecommendFromLocationCode) var loctionDto = await _locationAppService.GetByCodeAsync(jobDetailInputdetail.RecommendFromLocationCode)
.ConfigureAwait(false); .ConfigureAwait(false);
if (loctionDto.RowCode != 1) if (loctionDto.Type == EnumLocationType.RAW && loctionDto.RowCode != 1)
{ {
input.JobStatus = EnumJobStatus.Wait; input.JobStatus = EnumJobStatus.Wait;
@ -106,86 +240,49 @@ public class KittingIssueJobAppService
} }
} }
[HttpPost("cancel-by-request/{requestNumber}")] /// <summary>
public virtual async Task CancelByMaterialRequestAsync(string requestNumber) /// 判断是不是在立体库
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
private async Task CheckDimensionalStorehouseAsync(KittingIssueJobEditInput input)
{ {
var entities = await _repository.GetListAsync(p => p.KittingRequestNumber == requestNumber) var jobDetailInputdetail = input.Details.FirstOrDefault();
var loctionDto = await _locationAppService.GetByCodeAsync(jobDetailInputdetail.RecommendFromLocationCode)
.ConfigureAwait(false); .ConfigureAwait(false);
foreach (var entity in entities)
{
await _kittingIssueJobManager.CancelAsync(entity).ConfigureAwait(false);
}
}
[HttpPost("invalid")] if (loctionDto.Type == EnumLocationType.DimensionalStorehouse)
public override async Task CancelAsync(Guid id)
{
var kittingIssueJob = await _repository.GetAsync(id).ConfigureAwait(false);
if (kittingIssueJob == null)
{ {
throw new UserFriendlyException($"未找到ID为 {id} 的任务"); input.JobStatus = EnumJobStatus.Wait;
}
await _kittingIssueJobManager.CancelAsync(kittingIssueJob).ConfigureAwait(false); //todo 调用立库接口
} }
[HttpPost("by-request-number/{requestNumber}")]
public virtual async Task<List<KittingIssueJobDTO>> GetByRequestNumberAsync(string requestNumber)
{
var entitys = await _repository.GetListAsync(p => p.KittingRequestNumber == requestNumber)
.ConfigureAwait(false);
return ObjectMapper.Map<List<KittingIssueJob>, List<KittingIssueJobDTO>>(entitys);
} }
[HttpPost("Do-Call-Back")] private async Task UpdateJobStatusDoneAsync(KittingIssueJob kittingIssueJob,
public async Task DoTransferLibCallbackAsync(TransferLibJobDTO dto) KittingIssueJobDetailDTO kittingIssueJobDetailDto)
{ {
var job = await _repository.FindAsync(p => p.Number == dto.CallJobNumber).ConfigureAwait(false); if (kittingIssueJob.JobStatus is EnumJobStatus.Closed or EnumJobStatus.Cancelled or EnumJobStatus.None
or EnumJobStatus.Done) //需要考虑下 多次提交的问题 所以不判断 进行中
var transferLibJobDto= await _transferLibJobAppService.GetByNumberAsync(dto.Number).ConfigureAwait(false); {
throw new UserFriendlyException(
var transferLibNoteDetail= dto.Details.First(); $"任务状态错误:编号为【{kittingIssueJob.Number}】的任务已经【{kittingIssueJob.JobStatus.GetDisplayName()}】");
}
var jobDetail = job.Details.First();
job.JobStatus = EnumJobStatus.Open;
jobDetail.TransferLibFromArriveDate = transferLibNoteDetail.HandledFromArriveDate; kittingIssueJob.JobStatus = EnumJobStatus.Done;
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; await _expectOutAppService.RemoveByNumberAndInventoryAsync(kittingIssueJob.Number,
jobDetail.TransferLibToContainerCode = transferLibNoteDetail.HandledToContainerCode; kittingIssueJobDetailDto.ItemCode,
jobDetail.TransferLibToExpireDate = transferLibNoteDetail.HandledToExpireDate; kittingIssueJobDetailDto.HandledToLocationCode, kittingIssueJobDetailDto.HandledToPackingCode,
jobDetail.TransferLibToLocationArea = transferLibNoteDetail.HandledToLocationArea; kittingIssueJobDetailDto.Status, kittingIssueJobDetailDto.HandledToLot,
jobDetail.TransferLibToLocationCode = transferLibNoteDetail.HandledToLocationCode; kittingIssueJobDetailDto.HandledToQty).ConfigureAwait(false);
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); await KittingIssueRequestAppService.UpdateStatusCompletedAsync(kittingIssueJob.KittingRequestNumber)
.ConfigureAwait(false);
return; await Task.CompletedTask.ConfigureAwait(false);
} }
[HttpPost("test")] #endregion
public virtual async Task Test()
{
Console.WriteLine("FuAZCZXVZXVXZVZ");
await Task.CompletedTask;
}
} }

47
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/AssembleIssueNotes/AssembleIssueNoteAppService.cs

@ -58,51 +58,4 @@ public class AssembleIssueNoteAppService :
await LocalEventBus.PublishAsync(new SfsConfirmedEntityEventData<AssembleIssueNote>(assembleNote), false).ConfigureAwait(false); await LocalEventBus.PublishAsync(new SfsConfirmedEntityEventData<AssembleIssueNote>(assembleNote), false).ConfigureAwait(false);
return ObjectMapper.Map<AssembleIssueNote, AssembleIssueNoteDTO>(assembleNote); return ObjectMapper.Map<AssembleIssueNote, AssembleIssueNoteDTO>(assembleNote);
} }
[HttpPost("confirm-by-number/{number}")]
public virtual async Task<AssembleIssueNoteDTO> ConfirmAsync(string number)
{
var entity = await _repository.FindAsync(p => p.Number == number).ConfigureAwait(false);
Check.NotNull(entity, nameof(AssembleIssueNote));
var result = await _assembleNoteManager.ConfirmAsync(entity.Id).ConfigureAwait(false);
var dto = ObjectMapper.Map<AssembleIssueNote, AssembleIssueNoteDTO>(result);
return dto;
}
/// <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<AssembleIssueNoteDTO>> GetListByTypeAsync(SfsStoreRequestInputBase requestInput,
string requestType, bool includeDetails = false, CancellationToken cancellationToken = default)
{
Expression<Func<AssembleIssueNote, bool>> expression = p => p.RequestType == requestType;
if (requestInput.Condition.Filters?.Count > 0)
{
expression = expression.And(requestInput.Condition.Filters.ToLambda<AssembleIssueNote>());
}
return await GetPagedListAsync(expression, requestInput.SkipCount, requestInput.MaxResultCount,
requestInput.Sorting, includeDetails, cancellationToken).ConfigureAwait(false);
}
[HttpGet("list/un-confirmed/{requestType}")]
public virtual async Task<List<AssembleIssueNoteDTO>> GetListUnConfirmedByTypeAsync(string requestType)
{
var entities = await _repository.GetListAsync(c => !c.Confirmed && c.RequestType == requestType)
.ConfigureAwait(false);
var dtos = ObjectMapper.Map<List<AssembleIssueNote>, List<AssembleIssueNoteDTO>>(entities);
return dtos;
}
} }

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

@ -60,50 +60,6 @@ public class CoatingIssueNoteAppService :
return ObjectMapper.Map<CoatingIssueNote, CoatingIssueNoteDTO>(coatingIssueNote); return ObjectMapper.Map<CoatingIssueNote, CoatingIssueNoteDTO>(coatingIssueNote);
} }
[HttpPost("confirm-by-number/{number}")]
public virtual async Task<CoatingIssueNoteDTO> ConfirmAsync(string number)
{
var entity = await _repository.FindAsync(p => p.Number == number).ConfigureAwait(false);
Check.NotNull(entity, nameof(CoatingIssueNote));
var result = await _coatingIssueNoteManager.ConfirmAsync(entity.Id).ConfigureAwait(false);
var dto = ObjectMapper.Map<CoatingIssueNote, CoatingIssueNoteDTO>(result);
return dto;
}
/// <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<CoatingIssueNoteDTO>> GetListByTypeAsync(SfsStoreRequestInputBase requestInput,
string requestType, bool includeDetails = false, CancellationToken cancellationToken = default)
{
Expression<Func<CoatingIssueNote, bool>> expression = p => p.RequestType == requestType;
if (requestInput.Condition.Filters?.Count > 0)
{
expression = expression.And(requestInput.Condition.Filters.ToLambda<CoatingIssueNote>());
}
return await GetPagedListAsync(expression, requestInput.SkipCount, requestInput.MaxResultCount,
requestInput.Sorting, includeDetails, cancellationToken).ConfigureAwait(false);
}
[HttpGet("list/un-confirmed/{requestType}")]
public virtual async Task<List<CoatingIssueNoteDTO>> GetListUnConfirmedByTypeAsync(string requestType)
{
var entities = await _repository.GetListAsync(c => !c.Confirmed && c.RequestType == requestType)
.ConfigureAwait(false);
var dtos = ObjectMapper.Map<List<CoatingIssueNote>, List<CoatingIssueNoteDTO>>(entities);
return dtos;
}
} }

11
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/InjectionIssueNotes/InjectionIssueNoteAppService.cs

@ -10,6 +10,7 @@ using Volo.Abp;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Entities;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Shared.Event; using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain; using Win_in.Sfs.Wms.Store.Domain;
@ -85,9 +86,9 @@ public class InjectionIssueNoteAppService :
/// <returns></returns> /// <returns></returns>
[HttpPost("by-type/{requestType}")] [HttpPost("by-type/{requestType}")]
public virtual async Task<PagedResultDto<InjectionIssueNoteDTO>> GetListByTypeAsync(SfsStoreRequestInputBase requestInput, public virtual async Task<PagedResultDto<InjectionIssueNoteDTO>> GetListByTypeAsync(SfsStoreRequestInputBase requestInput,
string requestType, bool includeDetails = false, CancellationToken cancellationToken = default) EnumIssueRequestType issueRequestType, bool includeDetails = false, CancellationToken cancellationToken = default)
{ {
Expression<Func<InjectionIssueNote, bool>> expression = p => p.RequestType == requestType; Expression<Func<InjectionIssueNote, bool>> expression = p => p.IssueRequestType == issueRequestType;
if (requestInput.Condition.Filters?.Count > 0) if (requestInput.Condition.Filters?.Count > 0)
{ {
expression = expression.And(requestInput.Condition.Filters.ToLambda<InjectionIssueNote>()); expression = expression.And(requestInput.Condition.Filters.ToLambda<InjectionIssueNote>());
@ -97,10 +98,10 @@ public class InjectionIssueNoteAppService :
requestInput.Sorting, includeDetails, cancellationToken).ConfigureAwait(false); requestInput.Sorting, includeDetails, cancellationToken).ConfigureAwait(false);
} }
[HttpGet("list/un-confirmed/{requestType}")] [HttpPost("list-by-type-and-un-confirmed")]
public virtual async Task<List<InjectionIssueNoteDTO>> GetListUnConfirmedByTypeAsync(string requestType) public virtual async Task<List<InjectionIssueNoteDTO>> GetListUnConfirmedByTypeAsync(EnumIssueRequestType issueRequestType)
{ {
var entities = await _repository.GetListAsync(c => !c.Confirmed && c.RequestType == requestType) var entities = await _repository.GetListAsync(c => !c.Confirmed && c.IssueRequestType == issueRequestType)
.ConfigureAwait(false); .ConfigureAwait(false);
var dtos = ObjectMapper.Map<List<InjectionIssueNote>, List<InjectionIssueNoteDTO>>(entities); var dtos = ObjectMapper.Map<List<InjectionIssueNote>, List<InjectionIssueNoteDTO>>(entities);

46
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/KittingIssueNotes/KittingIssueNoteAppService.cs

@ -59,50 +59,4 @@ public class KittingIssueNoteAppService :
return ObjectMapper.Map<KittingIssueNote, KittingIssueNoteDTO>(kittingIssueNote); return ObjectMapper.Map<KittingIssueNote, KittingIssueNoteDTO>(kittingIssueNote);
} }
[HttpPost("confirm-by-number/{number}")]
public virtual async Task<KittingIssueNoteDTO> ConfirmAsync(string number)
{
var entity = await _repository.FindAsync(p => p.Number == number).ConfigureAwait(false);
Check.NotNull(entity, nameof(KittingIssueNote));
var result = await _kittingIssueNoteManager.ConfirmAsync(entity.Id).ConfigureAwait(false);
var dto = ObjectMapper.Map<KittingIssueNote, KittingIssueNoteDTO>(result);
return dto;
}
/// <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<KittingIssueNoteDTO>> GetListByTypeAsync(SfsStoreRequestInputBase requestInput,
string requestType, bool includeDetails = false, CancellationToken cancellationToken = default)
{
Expression<Func<KittingIssueNote, bool>> expression = p => p.RequestType == requestType;
if (requestInput.Condition.Filters?.Count > 0)
{
expression = expression.And(requestInput.Condition.Filters.ToLambda<KittingIssueNote>());
}
return await GetPagedListAsync(expression, requestInput.SkipCount, requestInput.MaxResultCount,
requestInput.Sorting, includeDetails, cancellationToken).ConfigureAwait(false);
}
[HttpGet("list/un-confirmed/{requestType}")]
public virtual async Task<List<KittingIssueNoteDTO>> GetListUnConfirmedByTypeAsync(string requestType)
{
var entities = await _repository.GetListAsync(c => !c.Confirmed && c.RequestType == requestType)
.ConfigureAwait(false);
var dtos = ObjectMapper.Map<List<KittingIssueNote>, List<KittingIssueNoteDTO>>(entities);
return dtos;
}
} }

159
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/AssembleIssueRequests/AssembleIssueRequestAppService.cs

@ -1,25 +1,10 @@
using System; using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Linq.Expressions;
using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using DocumentFormat.OpenXml.Office.PowerPoint.Y2021.M06.Main;
using IdentityModel;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain; using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared; using Win_in.Sfs.Wms.Store.Domain.Shared;
@ -31,8 +16,10 @@ namespace Win_in.Sfs.Wms.Store.Application;
/// </summary> /// </summary>
[Authorize] [Authorize]
[Route($"{StoreConsts.RootPath}assemble-request")] [Route($"{StoreConsts.RootPath}assemble-request")]
public class AssembleIssueRequestAppService : SfsStoreRequestAppServiceBase<AssembleIssueRequest, AssembleIssueRequestDTO, public class AssembleIssueRequestAppService : SfsStoreRequestAppServiceBase<AssembleIssueRequest,
SfsStoreRequestInputBase, AssembleIssueRequestEditInput, AssembleIssueRequestDetail, AssembleIssueRequestDetailDTO, AssembleIssueRequestDTO,
SfsStoreRequestInputBase, AssembleIssueRequestEditInput, AssembleIssueRequestDetail,
AssembleIssueRequestDetailDTO,
SfsStoreRequestInputBase, AssembleIssueRequestImportInput>, SfsStoreRequestInputBase, AssembleIssueRequestImportInput>,
IAssembleIssueRequestAppService IAssembleIssueRequestAppService
{ {
@ -68,8 +55,6 @@ public class AssembleIssueRequestAppService : SfsStoreRequestAppServiceBase<Asse
} }
#region 东阳V2
public override async Task<AssembleIssueRequestDTO> HandleAsync(Guid id) public override async Task<AssembleIssueRequestDTO> HandleAsync(Guid id)
{ {
await Task.CompletedTask.ConfigureAwait(false); await Task.CompletedTask.ConfigureAwait(false);
@ -129,7 +114,8 @@ public class AssembleIssueRequestAppService : SfsStoreRequestAppServiceBase<Asse
/// <returns></returns> /// <returns></returns>
private async Task SetRequestAutoPropertiesAsync(AssembleIssueRequestEditInput entity) private async Task SetRequestAutoPropertiesAsync(AssembleIssueRequestEditInput entity)
{ {
var tranType = await _transactionTypeAppService.GetByTransTypeAsync(EnumTransType.Issue, EnumTransSubType.None).ConfigureAwait(false); var tranType = await _transactionTypeAppService.GetByTransTypeAsync(EnumTransType.Issue, EnumTransSubType.None)
.ConfigureAwait(false);
Check.NotNull(tranType, "事务类型", "事务类型不存在"); Check.NotNull(tranType, "事务类型", "事务类型不存在");
entity.AutoSubmit = tranType.AutoSubmitRequest; entity.AutoSubmit = tranType.AutoSubmitRequest;
entity.AutoAgree = tranType.AutoAgreeRequest; entity.AutoAgree = tranType.AutoAgreeRequest;
@ -148,113 +134,9 @@ public class AssembleIssueRequestAppService : SfsStoreRequestAppServiceBase<Asse
return assembleRequestDto; return assembleRequestDto;
} }
#endregion
#region 导入
/// <summary>
/// 用来重写 导入数据时可以加工数据
/// </summary>
/// <param name="dictionary"></param>
/// <returns></returns>
protected override async Task<Dictionary<AssembleIssueRequest, EntityState>> ImportProcessingEntityAsync(
Dictionary<AssembleIssueRequest, EntityState> dictionary)
{
var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key);
foreach (var assembleRequest in addList)
{
assembleRequest.Worker = CurrentUser.GetUserName();
assembleRequest.CreatorId = CurrentUser.Id;
if (assembleRequest.Type == EnumTransSubType.Issue_Manual.GetDisplayName())
{
assembleRequest.Type = EnumTransSubType.Issue_Manual.ToString();
}
foreach (var detail in assembleRequest.Details)
{
var locationDto = await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false);
CheckLocation(locationDto, detail.ToLocationCode);
var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
CheckItemBasic(itemBasicDto, detail.ItemCode);
detail.ToLocationArea = locationDto.AreaCode;
detail.ToLocationErpCode = locationDto.ErpLocationCode;
detail.ToLocationGroup = locationDto.LocationGroupCode;
detail.ToWarehouseCode = locationDto.WarehouseCode;
detail.ItemDesc1 = itemBasicDto.Desc1;
detail.ItemDesc2 = itemBasicDto.Desc2;
detail.ItemName = itemBasicDto.Name;
detail.Uom = itemBasicDto.BasicUom;
detail.StdPackQty = itemBasicDto.StdPackQty;
}
}
return dictionary;
}
/// <summary>
/// 导入验证
/// </summary>
/// <param name="model"></param>
/// <param name="validationRresult"></param>
/// <returns></returns>
protected override async Task ValidateImportModelAsync(AssembleIssueRequestImportInput model,
List<ValidationResult> validationRresult)
{
_ = new Dictionary<string, string>();
_ = await CheckItemBasicAsync(model, validationRresult).ConfigureAwait(false);
_ = await CheckLocationAsync(model, validationRresult).ConfigureAwait(false);
await CheckAreaAsync(model, validationRresult).ConfigureAwait(false);
await CheckStoreRelationAsync(model, validationRresult).ConfigureAwait(false);
}
#endregion
#region 校验 #region 校验
protected override async Task<bool> ValidateImportEntities(Dictionary<AssembleIssueRequest, EntityState> dict)
{
foreach (var entity in dict.Keys)
{
var tranType = await TransactionTypeAclService
.GetByTransTypeAsync(EnumTransType.Issue, EnumTransSubType.None).ConfigureAwait(false);
Check.NotNull(tranType, "事务类型", "事务类型不存在");
entity.AutoCompleteJob = tranType.AutoCompleteJob;
entity.AutoSubmit = tranType.AutoSubmitRequest;
entity.AutoAgree = tranType.AutoAgreeRequest;
entity.AutoHandle = tranType.AutoHandleRequest;
entity.DirectCreateNote = tranType.DirectCreateNote;
}
return await base.ValidateImportEntities(dict).ConfigureAwait(false);
}
protected async Task CheckAreaAsync(AssembleIssueRequestImportInput importInput,
List<ValidationResult> validationRresult)
{
var area = await _areaApp.GetByCodeAsync(importInput.FromLocationArea).ConfigureAwait(false);
if (area == null)
{
validationRresult.Add(new ValidationResult($"调出库区{importInput.FromLocationArea}不存在", new[] { "调出库区" }));
}
}
protected async Task CheckStoreRelationAsync(AssembleIssueRequestImportInput importInput,
List<ValidationResult> validationRresult)
{
var itemStoreRelation = await _itemStoreRelationApp
.GetFirstAsync(importInput.ItemCode, importInput.ToLocationCode).ConfigureAwait(false);
if (itemStoreRelation == null)
{
validationRresult.Add(new ValidationResult(
$"物品代码{importInput.ItemCode}与目标库位{importInput.ToLocationCode}不存在对应关", new[] { "物品库位对应关系" }));
}
}
private void CheckItemBasic(ItemBasicDTO itemBasicDto, string itemCode) private void CheckItemBasic(ItemBasicDTO itemBasicDto, string itemCode)
{ {
if (itemBasicDto == null) if (itemBasicDto == null)
@ -276,34 +158,5 @@ public class AssembleIssueRequestAppService : SfsStoreRequestAppServiceBase<Asse
} }
} }
protected async Task<ItemBasicDTO> CheckItemBasicAsync(AssembleIssueRequestImportInput importInput,
List<ValidationResult> validationRresult)
{
var item = await _itemBasicAppService.GetByCodeAsync(importInput.ItemCode).ConfigureAwait(false);
if (item == null)
{
validationRresult.Add(new ValidationResult($"物品代码{importInput.ItemCode}不存在", new[] { "物品代码" }));
}
else if (item.StdPackQty == 0)
{
validationRresult.Add(
new ValidationResult($"物品代码{importInput.ItemCode}的物品信息中标准包装等于0或不存在", new[] { "标准包装" }));
}
return item;
}
protected async Task<LocationDTO> CheckLocationAsync(AssembleIssueRequestImportInput importInput,
List<ValidationResult> validationRresult)
{
var location = await _locationAppService.GetByCodeAsync(importInput.ToLocationCode).ConfigureAwait(false);
if (location == null)
{
validationRresult.Add(new ValidationResult($"目标库位{importInput.ToLocationCode}不存在", new[] { "目标库位" }));
}
return location;
}
#endregion #endregion
} }

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/AssembleIssueRequests/AssembleIssueRequestAutoMapperProfile.cs

@ -25,7 +25,6 @@ public partial class StoreApplicationAutoMapperProfile : Profile
CreateMap<AssembleIssueRequestImportInput, AssembleIssueRequest>() CreateMap<AssembleIssueRequestImportInput, AssembleIssueRequest>()
.IgnoreAuditedObjectProperties() .IgnoreAuditedObjectProperties()
.ForMember(x => x.Type, y => y.MapFrom(t => t.Type.ToString()))
.Ignore(x => x.UseOnTheWayLocation) .Ignore(x => x.UseOnTheWayLocation)
.Ignore(x => x.Details) .Ignore(x => x.Details)
.Ignore(x => x.Remark) .Ignore(x => x.Remark)

137
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/CoatingIssueRequests/CoatingIssueRequestAppService.cs

@ -67,9 +67,6 @@ public class CoatingIssueRequestAppService : SfsStoreRequestAppServiceBase<Coati
_transactionTypeAppService = transactionTypeAppService; _transactionTypeAppService = transactionTypeAppService;
} }
#region 东阳V2
public override async Task<CoatingIssueRequestDTO> HandleAsync(Guid id) public override async Task<CoatingIssueRequestDTO> HandleAsync(Guid id)
{ {
await Task.CompletedTask.ConfigureAwait(false); await Task.CompletedTask.ConfigureAwait(false);
@ -150,113 +147,8 @@ public class CoatingIssueRequestAppService : SfsStoreRequestAppServiceBase<Coati
return coatingMaterialRequestDto; return coatingMaterialRequestDto;
} }
#endregion
#region 导入
/// <summary>
/// 用来重写 导入数据时可以加工数据
/// </summary>
/// <param name="dictionary"></param>
/// <returns></returns>
protected override async Task<Dictionary<CoatingIssueRequest, EntityState>> ImportProcessingEntityAsync(
Dictionary<CoatingIssueRequest, EntityState> dictionary)
{
var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key);
foreach (var coatingMaterialRequest in addList)
{
coatingMaterialRequest.Worker = CurrentUser.GetUserName();
coatingMaterialRequest.CreatorId = CurrentUser.Id;
if (coatingMaterialRequest.Type == EnumTransSubType.Issue_Manual.GetDisplayName())
{
coatingMaterialRequest.Type = EnumTransSubType.Issue_Manual.ToString();
}
foreach (var detail in coatingMaterialRequest.Details)
{
var locationDto = await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false);
CheckLocation(locationDto, detail.ToLocationCode);
var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
CheckItemBasic(itemBasicDto, detail.ItemCode);
detail.ToLocationArea = locationDto.AreaCode;
detail.ToLocationErpCode = locationDto.ErpLocationCode;
detail.ToLocationGroup = locationDto.LocationGroupCode;
detail.ToWarehouseCode = locationDto.WarehouseCode;
detail.ItemDesc1 = itemBasicDto.Desc1;
detail.ItemDesc2 = itemBasicDto.Desc2;
detail.ItemName = itemBasicDto.Name;
detail.Uom = itemBasicDto.BasicUom;
detail.StdPackQty = itemBasicDto.StdPackQty;
}
}
return dictionary;
}
/// <summary>
/// 导入验证
/// </summary>
/// <param name="model"></param>
/// <param name="validationRresult"></param>
/// <returns></returns>
protected override async Task ValidateImportModelAsync(CoatingIssueRequestImportInput model,
List<ValidationResult> validationRresult)
{
_ = new Dictionary<string, string>();
_ = await CheckItemBasicAsync(model, validationRresult).ConfigureAwait(false);
_ = await CheckLocationAsync(model, validationRresult).ConfigureAwait(false);
await CheckAreaAsync(model, validationRresult).ConfigureAwait(false);
await CheckStoreRelationAsync(model, validationRresult).ConfigureAwait(false);
}
#endregion
#region 校验 #region 校验
protected override async Task<bool> ValidateImportEntities(Dictionary<CoatingIssueRequest, EntityState> dict)
{
foreach (var entity in dict.Keys)
{
var tranType = await TransactionTypeAclService
.GetByTransTypeAsync(EnumTransType.Issue, EnumTransSubType.None).ConfigureAwait(false);
Check.NotNull(tranType, "事务类型", "事务类型不存在");
entity.AutoCompleteJob = tranType.AutoCompleteJob;
entity.AutoSubmit = tranType.AutoSubmitRequest;
entity.AutoAgree = tranType.AutoAgreeRequest;
entity.AutoHandle = tranType.AutoHandleRequest;
entity.DirectCreateNote = tranType.DirectCreateNote;
}
return await base.ValidateImportEntities(dict).ConfigureAwait(false);
}
protected async Task CheckAreaAsync(CoatingIssueRequestImportInput importInput,
List<ValidationResult> validationRresult)
{
var area = await _areaApp.GetByCodeAsync(importInput.FromLocationArea).ConfigureAwait(false);
if (area == null)
{
validationRresult.Add(new ValidationResult($"调出库区{importInput.FromLocationArea}不存在", new[] { "调出库区" }));
}
}
protected async Task CheckStoreRelationAsync(CoatingIssueRequestImportInput importInput,
List<ValidationResult> validationRresult)
{
var itemStoreRelation = await _itemStoreRelationApp
.GetFirstAsync(importInput.ItemCode, importInput.ToLocationCode).ConfigureAwait(false);
if (itemStoreRelation == null)
{
validationRresult.Add(new ValidationResult(
$"物品代码{importInput.ItemCode}与目标库位{importInput.ToLocationCode}不存在对应关", new[] { "物品库位对应关系" }));
}
}
private void CheckItemBasic(ItemBasicDTO itemBasicDto, string itemCode) private void CheckItemBasic(ItemBasicDTO itemBasicDto, string itemCode)
{ {
if (itemBasicDto == null) if (itemBasicDto == null)
@ -278,34 +170,5 @@ public class CoatingIssueRequestAppService : SfsStoreRequestAppServiceBase<Coati
} }
} }
protected async Task<ItemBasicDTO> CheckItemBasicAsync(CoatingIssueRequestImportInput importInput,
List<ValidationResult> validationRresult)
{
var item = await _itemBasicAppService.GetByCodeAsync(importInput.ItemCode).ConfigureAwait(false);
if (item == null)
{
validationRresult.Add(new ValidationResult($"物品代码{importInput.ItemCode}不存在", new[] { "物品代码" }));
}
else if (item.StdPackQty == 0)
{
validationRresult.Add(
new ValidationResult($"物品代码{importInput.ItemCode}的物品信息中标准包装等于0或不存在", new[] { "标准包装" }));
}
return item;
}
protected async Task<LocationDTO> CheckLocationAsync(CoatingIssueRequestImportInput importInput,
List<ValidationResult> validationRresult)
{
var location = await _locationAppService.GetByCodeAsync(importInput.ToLocationCode).ConfigureAwait(false);
if (location == null)
{
validationRresult.Add(new ValidationResult($"目标库位{importInput.ToLocationCode}不存在", new[] { "目标库位" }));
}
return location;
}
#endregion #endregion
} }

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/CoatingIssueRequests/CoatingIssueRequestAutoMapperProfile.cs

@ -26,7 +26,6 @@ public partial class StoreApplicationAutoMapperProfile : Profile
CreateMap<CoatingIssueRequestImportInput, CoatingIssueRequest>() CreateMap<CoatingIssueRequestImportInput, CoatingIssueRequest>()
.IgnoreAuditedObjectProperties() .IgnoreAuditedObjectProperties()
.ForMember(x => x.Type, y => y.MapFrom(t => t.Type.ToString()))
.Ignore(x => x.UseOnTheWayLocation) .Ignore(x => x.UseOnTheWayLocation)
.Ignore(x => x.Details) .Ignore(x => x.Details)
.Ignore(x => x.Remark) .Ignore(x => x.Remark)

229
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/InjectionIssueRequests/InjectionIssueRequestAppService.cs

@ -1,26 +1,13 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq; using System.Linq;
using System.Linq.Expressions;
using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using DocumentFormat.OpenXml.Office.PowerPoint.Y2021.M06.Main;
using IdentityModel;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store; using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain; using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared; using Win_in.Sfs.Wms.Store.Domain.Shared;
@ -32,48 +19,37 @@ namespace Win_in.Sfs.Wms.Store.Application;
/// </summary> /// </summary>
[Authorize] [Authorize]
[Route($"{StoreConsts.RootPath}injection-issue-request")] [Route($"{StoreConsts.RootPath}injection-issue-request")]
public class InjectionIssueRequestAppService : SfsStoreRequestAppServiceBase<InjectionIssueRequest, InjectionIssueRequestDTO, public class InjectionIssueRequestAppService : SfsStoreRequestAppServiceBase<InjectionIssueRequest,
SfsStoreRequestInputBase, InjectionIssueRequestEditInput, InjectionIssueRequestDetail, InjectionIssueRequestDetailDTO, InjectionIssueRequestDTO,
SfsStoreRequestInputBase, InjectionIssueRequestEditInput, InjectionIssueRequestDetail,
InjectionIssueRequestDetailDTO,
SfsStoreRequestInputBase, InjectionIssueRequestImportInput>, SfsStoreRequestInputBase, InjectionIssueRequestImportInput>,
IInjectionIssueRequestAppService IInjectionIssueRequestAppService
{ {
private readonly IInjectionIssueRequestManager _injectionRequestManager; private readonly IInjectionIssueRequestManager _injectionRequestManager;
private readonly IItemStoreRelationAppService _itemStoreRelationApp;
private readonly IAreaAppService _areaApp;
private readonly ILocationAppService _locationAppService; private readonly ILocationAppService _locationAppService;
private readonly IItemBasicAppService _itemBasicAppService; private readonly IItemBasicAppService _itemBasicAppService;
private readonly IItemContainerAppService _itemContainerAppService; private readonly IItemContainerAppService _itemContainerAppService;
private readonly IProductionLineAppService _productionLineAppService;
private readonly ITransactionTypeAppService _transactionTypeAppService; private readonly ITransactionTypeAppService _transactionTypeAppService;
public InjectionIssueRequestAppService( public InjectionIssueRequestAppService(
IInjectionIssueRequestRepository repository, IInjectionIssueRequestRepository repository,
IInjectionIssueRequestManager injectionRequestManager, IInjectionIssueRequestManager injectionRequestManager,
IPreparationPlanManager preparationPlanManager,
IItemStoreRelationAppService itemStoreRelationApp,
IAreaAppService areaApp,
ILocationAppService locationAppService, ILocationAppService locationAppService,
IItemBasicAppService itemBasicAppService, IItemBasicAppService itemBasicAppService,
IItemContainerAppService itemContainerAppService, IItemContainerAppService itemContainerAppService,
IProductionLineAppService productionLineAppService,
ITransactionTypeAppService transactionTypeAppService ITransactionTypeAppService transactionTypeAppService
) )
: base(repository, injectionRequestManager) : base(repository, injectionRequestManager)
{ {
_injectionRequestManager = injectionRequestManager; _injectionRequestManager = injectionRequestManager;
_itemStoreRelationApp = itemStoreRelationApp;
_areaApp = areaApp;
_locationAppService = locationAppService; _locationAppService = locationAppService;
_itemBasicAppService = itemBasicAppService; _itemBasicAppService = itemBasicAppService;
_itemContainerAppService= itemContainerAppService; _itemContainerAppService = itemContainerAppService;
_productionLineAppService = productionLineAppService;
_transactionTypeAppService = transactionTypeAppService; _transactionTypeAppService = transactionTypeAppService;
} }
#region 东阳V2
public override async Task<InjectionIssueRequestDTO> HandleAsync(Guid id) public override async Task<InjectionIssueRequestDTO> HandleAsync(Guid id)
{ {
await Task.CompletedTask.ConfigureAwait(false); await Task.CompletedTask.ConfigureAwait(false);
@ -101,7 +77,7 @@ public class InjectionIssueRequestAppService : SfsStoreRequestAppServiceBase<Inj
detailInput.ToLocationArea = toLocationDto.AreaCode; detailInput.ToLocationArea = toLocationDto.AreaCode;
detailInput.ToLocationGroup = toLocationDto.LocationGroupCode; detailInput.ToLocationGroup = toLocationDto.LocationGroupCode;
detailInput.ToWarehouseCode= toLocationDto.WarehouseCode; detailInput.ToWarehouseCode = toLocationDto.WarehouseCode;
detailInput.ProdLine = detailInput.ToLocationCode; detailInput.ProdLine = detailInput.ToLocationCode;
detailInput.ToLocationErpCode = toLocationDto.ErpLocationCode; detailInput.ToLocationErpCode = toLocationDto.ErpLocationCode;
@ -109,8 +85,9 @@ public class InjectionIssueRequestAppService : SfsStoreRequestAppServiceBase<Inj
detailInput.ItemDesc2 = itemBasicDto.Desc2; detailInput.ItemDesc2 = itemBasicDto.Desc2;
detailInput.ItemName = itemBasicDto.Name; detailInput.ItemName = itemBasicDto.Name;
var itemContainerDto = await _itemContainerAppService.GetListByItemCodeAsync(detailInput.ItemCode).ConfigureAwait(false); var itemContainerDto = await _itemContainerAppService.GetListByItemCodeAsync(detailInput.ItemCode)
if(itemContainerDto.Count>0) .ConfigureAwait(false);
if (itemContainerDto.Count > 0)
{ {
detailInput.Uom = itemContainerDto[0].BasicUom; detailInput.Uom = itemContainerDto[0].BasicUom;
detailInput.Qty = itemContainerDto[0].Qty; detailInput.Qty = itemContainerDto[0].Qty;
@ -146,7 +123,8 @@ public class InjectionIssueRequestAppService : SfsStoreRequestAppServiceBase<Inj
/// <returns></returns> /// <returns></returns>
private async Task SetRequestAutoPropertiesAsync(InjectionIssueRequestEditInput entity) private async Task SetRequestAutoPropertiesAsync(InjectionIssueRequestEditInput entity)
{ {
var tranType = await _transactionTypeAppService.GetByTransTypeAsync(EnumTransType.Issue, EnumTransSubType.None).ConfigureAwait(false); var tranType = await _transactionTypeAppService.GetByTransTypeAsync(EnumTransType.Issue, EnumTransSubType.None)
.ConfigureAwait(false);
Check.NotNull(tranType, "事务类型", "事务类型不存在"); Check.NotNull(tranType, "事务类型", "事务类型不存在");
entity.AutoSubmit = tranType.AutoSubmitRequest; entity.AutoSubmit = tranType.AutoSubmitRequest;
entity.AutoAgree = tranType.AutoAgreeRequest; entity.AutoAgree = tranType.AutoAgreeRequest;
@ -178,113 +156,39 @@ public class InjectionIssueRequestAppService : SfsStoreRequestAppServiceBase<Inj
return entities; return entities;
} }
#endregion
#region 导入
/// <summary> /// <summary>
/// 用来重写 导入数据时可以加工数据 /// 获取已完成的叫料单数量
/// </summary> /// </summary>
/// <param name="dictionary"></param>
/// <returns></returns> /// <returns></returns>
protected override async Task<Dictionary<InjectionIssueRequest, EntityState>> ImportProcessingEntityAsync( [HttpPost("get-uncompleted-request")]
Dictionary<InjectionIssueRequest, EntityState> dictionary) public async Task<List<UnCompletedRequestDto>> GetUnCompletedRequestAsync(List<UnCompletedRequestDto> p_list)
{ {
var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key); var returnList = new List<UnCompletedRequestDto>();
//枚举类型查不到改成SQL查询
foreach (var injectionRequest in addList) var list = await _repository.GetListAsync(p =>
p.RequestStatus != EnumRequestStatus.Completed && p.IssueRequestType == EnumIssueRequestType.Vision)
.ConfigureAwait(false);
foreach (var itm in list)
{ {
injectionRequest.Worker = CurrentUser.GetUserName(); var query = from detail in itm.Details
injectionRequest.CreatorId = CurrentUser.Id; join citm in p_list on new
if (injectionRequest.Type == EnumTransSubType.Issue_Manual.GetDisplayName())
{ {
injectionRequest.Type = EnumTransSubType.Issue_Manual.ToString(); detail.ItemCode, locCode = detail.ToLocationCode, areaCode = detail.PositionCode
} } equals
new { citm.ItemCode, locCode = citm.LocCode, areaCode = citm.PositionCode }
foreach (var detail in injectionRequest.Details) select new UnCompletedRequestDto
{ {
var locationDto = await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false); ItemCode = detail.ItemCode, LocCode = detail.ToLocationCode, PositionCode = detail.PositionCode
CheckLocation(locationDto, detail.ToLocationCode); };
var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false); returnList.AddRange(query.ToList());
CheckItemBasic(itemBasicDto, detail.ItemCode);
detail.ToLocationArea = locationDto.AreaCode;
detail.ToLocationErpCode = locationDto.ErpLocationCode;
detail.ToLocationGroup = locationDto.LocationGroupCode;
detail.ToWarehouseCode = locationDto.WarehouseCode;
detail.ItemDesc1 = itemBasicDto.Desc1;
detail.ItemDesc2 = itemBasicDto.Desc2;
detail.ItemName = itemBasicDto.Name;
detail.Uom = itemBasicDto.BasicUom;
detail.StdPackQty = itemBasicDto.StdPackQty;
}
}
return dictionary;
} }
/// <summary> return returnList;
/// 导入验证
/// </summary>
/// <param name="model"></param>
/// <param name="validationRresult"></param>
/// <returns></returns>
protected override async Task ValidateImportModelAsync(InjectionIssueRequestImportInput model,
List<ValidationResult> validationRresult)
{
_ = new Dictionary<string, string>();
_ = await CheckItemBasicAsync(model, validationRresult).ConfigureAwait(false);
_ = await CheckLocationAsync(model, validationRresult).ConfigureAwait(false);
await CheckAreaAsync(model, validationRresult).ConfigureAwait(false);
await CheckStoreRelationAsync(model, validationRresult).ConfigureAwait(false);
} }
#endregion
#region 校验 #region 校验
protected override async Task<bool> ValidateImportEntities(Dictionary<InjectionIssueRequest, EntityState> dict)
{
foreach (var entity in dict.Keys)
{
var tranType = await TransactionTypeAclService
.GetByTransTypeAsync(EnumTransType.Issue, EnumTransSubType.None).ConfigureAwait(false);
Check.NotNull(tranType, "事务类型", "事务类型不存在");
entity.AutoCompleteJob = tranType.AutoCompleteJob;
entity.AutoSubmit = tranType.AutoSubmitRequest;
entity.AutoAgree = tranType.AutoAgreeRequest;
entity.AutoHandle = tranType.AutoHandleRequest;
entity.DirectCreateNote = tranType.DirectCreateNote;
}
return await base.ValidateImportEntities(dict).ConfigureAwait(false);
}
protected async Task CheckAreaAsync(InjectionIssueRequestImportInput importInput,
List<ValidationResult> validationRresult)
{
var area = await _areaApp.GetByCodeAsync(importInput.FromLocationArea).ConfigureAwait(false);
if (area == null)
{
validationRresult.Add(new ValidationResult($"调出库区{importInput.FromLocationArea}不存在", new[] { "调出库区" }));
}
}
protected async Task CheckStoreRelationAsync(InjectionIssueRequestImportInput importInput,
List<ValidationResult> validationRresult)
{
var itemStoreRelation = await _itemStoreRelationApp
.GetFirstAsync(importInput.ItemCode, importInput.ToLocationCode).ConfigureAwait(false);
if (itemStoreRelation == null)
{
validationRresult.Add(new ValidationResult(
$"物品代码{importInput.ItemCode}与目标库位{importInput.ToLocationCode}不存在对应关", new[] { "物品库位对应关系" }));
}
}
private void CheckItemBasic(ItemBasicDTO itemBasicDto, string itemCode) private void CheckItemBasic(ItemBasicDTO itemBasicDto, string itemCode)
{ {
if (itemBasicDto == null) if (itemBasicDto == null)
@ -306,78 +210,5 @@ public class InjectionIssueRequestAppService : SfsStoreRequestAppServiceBase<Inj
} }
} }
protected async Task<ItemBasicDTO> CheckItemBasicAsync(InjectionIssueRequestImportInput importInput,
List<ValidationResult> validationRresult)
{
var item = await _itemBasicAppService.GetByCodeAsync(importInput.ItemCode).ConfigureAwait(false);
if (item == null)
{
validationRresult.Add(new ValidationResult($"物品代码{importInput.ItemCode}不存在", new[] { "物品代码" }));
}
else if (item.StdPackQty == 0)
{
validationRresult.Add(
new ValidationResult($"物品代码{importInput.ItemCode}的物品信息中标准包装等于0或不存在", new[] { "标准包装" }));
}
return item;
}
protected async Task<LocationDTO> CheckLocationAsync(InjectionIssueRequestImportInput importInput,
List<ValidationResult> validationRresult)
{
var location = await _locationAppService.GetByCodeAsync(importInput.ToLocationCode).ConfigureAwait(false);
if (location == null)
{
validationRresult.Add(new ValidationResult($"目标库位{importInput.ToLocationCode}不存在", new[] { "目标库位" }));
}
return location;
}
/// <summary>
/// 获取已完成的叫料单数量
/// </summary>
/// <returns></returns>
[HttpGet("get-completed-injection-request-count")]
public async Task<long> GetCountAsync()
{
//枚举类型查不到改成SQL查询
var query =await _repository.GetCountAsync(p => p.RequestStatus != EnumRequestStatus.Completed
&&p.Type==nameof(EnumIssueType.Vision)).ConfigureAwait(false);
return query;
}
/// <summary>
/// 获取已完成的叫料单数量
/// </summary>
/// <returns></returns>
[HttpPost("get-uncompleted-request")]
public async Task<List<UnCompletedRequestDto>> GetUnCompletedRequestAsync(List<UnCompletedRequestDto> p_list)
{
List<UnCompletedRequestDto> returnList = new List<UnCompletedRequestDto>();
//枚举类型查不到改成SQL查询
var list =await _repository.WithDetails().Where(p => p.RequestStatus != EnumRequestStatus.Completed && p.Type == nameof(EnumIssueType.Vision)).ToListAsync().ConfigureAwait(false);
foreach (var itm in list)
{
var query = from detail in itm.Details join citm in p_list on new { detail.ItemCode, locCode= detail.ToLocationCode,areaCode=detail.PositionCode } equals
new { citm.ItemCode, locCode= citm.LocCode,areaCode=citm.PositionCode }
select new UnCompletedRequestDto { ItemCode = detail.ItemCode, LocCode = detail.ToLocationCode, PositionCode = detail.PositionCode } ;
returnList.AddRange(query.ToList());
}
return returnList;
}
#endregion #endregion
} }

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/InjectionIssueRequests/InjectionIssueRequestAutoMapperProfile.cs

@ -25,7 +25,6 @@ public partial class StoreApplicationAutoMapperProfile : Profile
CreateMap<InjectionIssueRequestImportInput, InjectionIssueRequest>() CreateMap<InjectionIssueRequestImportInput, InjectionIssueRequest>()
.IgnoreAuditedObjectProperties() .IgnoreAuditedObjectProperties()
.ForMember(x => x.Type, y => y.MapFrom(t => t.Type.ToString()))
.Ignore(x => x.UseOnTheWayLocation) .Ignore(x => x.UseOnTheWayLocation)
.Ignore(x => x.Details) .Ignore(x => x.Details)
.Ignore(x => x.Remark) .Ignore(x => x.Remark)

223
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/KittingIssueRequests/KittingIssueRequestAppService.cs

@ -1,25 +1,12 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq; using System.Linq;
using System.Linq.Expressions;
using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using DocumentFormat.OpenXml.Office.PowerPoint.Y2021.M06.Main;
using IdentityModel;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain; using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared; using Win_in.Sfs.Wms.Store.Domain.Shared;
@ -42,6 +29,7 @@ public class KittingIssueRequestAppService : SfsStoreRequestAppServiceBase<Kitti
private readonly ILocationAppService _locationAppService; private readonly ILocationAppService _locationAppService;
private readonly IItemBasicAppService _itemBasicAppService; private readonly IItemBasicAppService _itemBasicAppService;
private readonly IProductionLineAppService _productionLineAppService; private readonly IProductionLineAppService _productionLineAppService;
private readonly IKittingIssueJobAppService _kittingIssueJobAppService;
private readonly ITransactionTypeAppService _transactionTypeAppService; private readonly ITransactionTypeAppService _transactionTypeAppService;
@ -54,8 +42,7 @@ public class KittingIssueRequestAppService : SfsStoreRequestAppServiceBase<Kitti
ILocationAppService locationAppService, ILocationAppService locationAppService,
IItemBasicAppService itemBasicAppService, IItemBasicAppService itemBasicAppService,
IProductionLineAppService productionLineAppService, IProductionLineAppService productionLineAppService,
ITransactionTypeAppService transactionTypeAppService ITransactionTypeAppService transactionTypeAppService, IKittingIssueJobAppService kittingIssueJobAppService)
)
: base(repository, kittingIssueRequestManager) : base(repository, kittingIssueRequestManager)
{ {
_kittingIssueRequestManager = kittingIssueRequestManager; _kittingIssueRequestManager = kittingIssueRequestManager;
@ -66,15 +53,12 @@ public class KittingIssueRequestAppService : SfsStoreRequestAppServiceBase<Kitti
_productionLineAppService = productionLineAppService; _productionLineAppService = productionLineAppService;
_transactionTypeAppService = transactionTypeAppService; _transactionTypeAppService = transactionTypeAppService;
_kittingIssueJobAppService = kittingIssueJobAppService;
} }
#region 东阳V2
public override async Task<KittingIssueRequestDTO> HandleAsync(Guid id) public override async Task<KittingIssueRequestDTO> HandleAsync(Guid id)
{ {
await Task.CompletedTask.ConfigureAwait(false); return await base.HandleAsync(id).ConfigureAwait(false);
return null;
} }
[HttpPost("")] [HttpPost("")]
@ -88,18 +72,21 @@ public class KittingIssueRequestAppService : SfsStoreRequestAppServiceBase<Kitti
} }
} }
foreach (var detailInput in input.Details) //赋值生产线 foreach (var detailInput in input.Details)
{ {
var toLocationDto = var toLocationDto =
await _locationAppService.GetByCodeAsync(detailInput.ToLocationCode).ConfigureAwait(false); await _locationAppService.GetByCodeAsync(detailInput.ToLocationCode).ConfigureAwait(false);
CheckLocation(toLocationDto, detailInput.ToLocationCode); CheckLocation(toLocationDto, detailInput.ToLocationCode);
var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detailInput.ItemCode).ConfigureAwait(false); var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detailInput.ItemCode).ConfigureAwait(false);
CheckItemBasic(itemBasicDto, detailInput.ItemCode); CheckItemBasic(itemBasicDto, detailInput.ItemCode);
var productionLineDto= await _productionLineAppService.GetByLocationCodeAsync(detailInput.ToLocationCode).ConfigureAwait(false);
CheckProductionLine(productionLineDto,detailInput.ProdLine);
detailInput.ProdLine = productionLineDto.Code;
detailInput.ToLocationArea = toLocationDto.AreaCode; detailInput.ToLocationArea = toLocationDto.AreaCode;
detailInput.ToLocationGroup = toLocationDto.LocationGroupCode; detailInput.ToLocationGroup = toLocationDto.LocationGroupCode;
detailInput.ToWarehouseCode= toLocationDto.WarehouseCode; detailInput.ToWarehouseCode = toLocationDto.WarehouseCode;
detailInput.ProdLine = detailInput.ToLocationCode;
detailInput.ToLocationErpCode = toLocationDto.ErpLocationCode; detailInput.ToLocationErpCode = toLocationDto.ErpLocationCode;
detailInput.ItemDesc1 = itemBasicDto.Desc1; detailInput.ItemDesc1 = itemBasicDto.Desc1;
@ -111,6 +98,7 @@ public class KittingIssueRequestAppService : SfsStoreRequestAppServiceBase<Kitti
//因为是刚创建的 所以发料数一定是0 //因为是刚创建的 所以发料数一定是0
detailInput.IssuedQty = 0; detailInput.IssuedQty = 0;
detailInput.RecommendType = EnumRecommendType.KITTING;
} }
await SetRequestAutoPropertiesAsync(input).ConfigureAwait(false); await SetRequestAutoPropertiesAsync(input).ConfigureAwait(false);
@ -130,7 +118,8 @@ public class KittingIssueRequestAppService : SfsStoreRequestAppServiceBase<Kitti
/// <returns></returns> /// <returns></returns>
private async Task SetRequestAutoPropertiesAsync(KittingIssueRequestEditInput entity) private async Task SetRequestAutoPropertiesAsync(KittingIssueRequestEditInput entity)
{ {
var tranType = await _transactionTypeAppService.GetByTransTypeAsync(EnumTransType.Issue, EnumTransSubType.None).ConfigureAwait(false); var tranType = await _transactionTypeAppService.GetByTransTypeAsync(EnumTransType.Issue, EnumTransSubType.None)
.ConfigureAwait(false);
Check.NotNull(tranType, "事务类型", "事务类型不存在"); Check.NotNull(tranType, "事务类型", "事务类型不存在");
entity.AutoSubmit = tranType.AutoSubmitRequest; entity.AutoSubmit = tranType.AutoSubmitRequest;
entity.AutoAgree = tranType.AutoAgreeRequest; entity.AutoAgree = tranType.AutoAgreeRequest;
@ -144,115 +133,108 @@ public class KittingIssueRequestAppService : SfsStoreRequestAppServiceBase<Kitti
{ {
var kittingIssueRequestDto = await CreateAsync(input).ConfigureAwait(false); var kittingIssueRequestDto = await CreateAsync(input).ConfigureAwait(false);
await HandleAsync(kittingIssueRequestDto.Id).ConfigureAwait(false); //await HandleAsync(kittingIssueRequestDto.Id).ConfigureAwait(false);
return kittingIssueRequestDto; return kittingIssueRequestDto;
} }
#endregion [HttpPost("UpdateStatusCompleted")]
public async Task UpdateStatusCompletedAsync(string number)
#region 导入
/// <summary>
/// 用来重写 导入数据时可以加工数据
/// </summary>
/// <param name="dictionary"></param>
/// <returns></returns>
protected override async Task<Dictionary<KittingIssueRequest, EntityState>> ImportProcessingEntityAsync(
Dictionary<KittingIssueRequest, EntityState> dictionary)
{ {
var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key); var kittingIssueRequest=await _repository.FindAsync(p=>p.Number== number).ConfigureAwait(false);
foreach (var kittingIssueRequest in addList) var kittingIssueJobDtos=await _kittingIssueJobAppService.GetByRequestNumberAsync(kittingIssueRequest.Number).ConfigureAwait(false);
{
kittingIssueRequest.Worker = CurrentUser.GetUserName(); if (!kittingIssueJobDtos.Any(p =>
kittingIssueRequest.CreatorId = CurrentUser.Id; p.JobStatus == EnumJobStatus.Open || p.JobStatus == EnumJobStatus.Doing ||
if (kittingIssueRequest.Type == EnumTransSubType.Issue_Manual.GetDisplayName()) p.JobStatus == EnumJobStatus.Partial) )
{ {
kittingIssueRequest.Type = EnumTransSubType.Issue_Manual.ToString(); return;
} }
else
{
bool flag = true;
foreach (var detail in kittingIssueRequest.Details) foreach (var detail in kittingIssueRequest.Details)
{ {
var locationDto = await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false); if (detail.Qty > detail.IssuedQty)
CheckLocation(locationDto, detail.ToLocationCode); {
flag = false;
var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false); return;
CheckItemBasic(itemBasicDto, detail.ItemCode);
detail.ToLocationArea = locationDto.AreaCode;
detail.ToLocationErpCode = locationDto.ErpLocationCode;
detail.ToLocationGroup = locationDto.LocationGroupCode;
detail.ToWarehouseCode = locationDto.WarehouseCode;
detail.ItemDesc1 = itemBasicDto.Desc1;
detail.ItemDesc2 = itemBasicDto.Desc2;
detail.ItemName = itemBasicDto.Name;
detail.Uom = itemBasicDto.BasicUom;
detail.StdPackQty = itemBasicDto.StdPackQty;
}
} }
return dictionary;
} }
/// <summary> if (flag)
/// 导入验证
/// </summary>
/// <param name="model"></param>
/// <param name="validationRresult"></param>
/// <returns></returns>
protected override async Task ValidateImportModelAsync(KittingIssueRequestImportInput model,
List<ValidationResult> validationRresult)
{ {
_ = new Dictionary<string, string>(); CheckStatus(EnumRequestStatus.Completed, kittingIssueRequest.RequestStatus);
_ = await CheckItemBasicAsync(model, validationRresult).ConfigureAwait(false); kittingIssueRequest.RequestStatus = EnumRequestStatus.Completed;
_ = await CheckLocationAsync(model, validationRresult).ConfigureAwait(false); await _repository.UpdateAsync(kittingIssueRequest).ConfigureAwait(false);
await CheckAreaAsync(model, validationRresult).ConfigureAwait(false); }
await CheckStoreRelationAsync(model, validationRresult).ConfigureAwait(false);
} }
#endregion kittingIssueRequest.RequestStatus = EnumRequestStatus.Completed;
}
#region 校验 #region 校验
protected override async Task<bool> ValidateImportEntities(Dictionary<KittingIssueRequest, EntityState> dict) private void CheckStatus(EnumRequestStatus targetStatus, EnumRequestStatus nowStatus)
{ {
foreach (var entity in dict.Keys) var validSourceStatuses = new List<EnumRequestStatus>();
switch (targetStatus)
{ {
var tranType = await TransactionTypeAclService case EnumRequestStatus.None:
.GetByTransTypeAsync(EnumTransType.Issue, EnumTransSubType.None).ConfigureAwait(false); break;
case EnumRequestStatus.New:
Check.NotNull(tranType, "事务类型", "事务类型不存在"); break;
case EnumRequestStatus.Reviewing:
entity.AutoCompleteJob = tranType.AutoCompleteJob; validSourceStatuses = new List<EnumRequestStatus> { EnumRequestStatus.New };
entity.AutoSubmit = tranType.AutoSubmitRequest; break;
entity.AutoAgree = tranType.AutoAgreeRequest; case EnumRequestStatus.Refused:
entity.AutoHandle = tranType.AutoHandleRequest; validSourceStatuses = new List<EnumRequestStatus> { EnumRequestStatus.Reviewing };
entity.DirectCreateNote = tranType.DirectCreateNote; break;
} case EnumRequestStatus.Agreed:
validSourceStatuses = new List<EnumRequestStatus> { EnumRequestStatus.Reviewing };
return await base.ValidateImportEntities(dict).ConfigureAwait(false); break;
} case EnumRequestStatus.Handling:
validSourceStatuses = new List<EnumRequestStatus>
protected async Task CheckAreaAsync(KittingIssueRequestImportInput importInput, {
List<ValidationResult> validationRresult) EnumRequestStatus.Agreed, EnumRequestStatus.Partial,
};
break;
case EnumRequestStatus.Completed:
validSourceStatuses = new List<EnumRequestStatus>
{
EnumRequestStatus.Handling, EnumRequestStatus.Partial,
};
break;
case EnumRequestStatus.Cancelled:
validSourceStatuses = new List<EnumRequestStatus>
{
EnumRequestStatus.New, EnumRequestStatus.Reviewing, EnumRequestStatus.Agreed,
};
break;
case EnumRequestStatus.Abort:
validSourceStatuses = new List<EnumRequestStatus>
{ {
var area = await _areaApp.GetByCodeAsync(importInput.FromLocationArea).ConfigureAwait(false); EnumRequestStatus.Handling, EnumRequestStatus.Partial,
if (area == null) };
break;
case EnumRequestStatus.Partial:
{ {
validationRresult.Add(new ValidationResult($"调出库区{importInput.FromLocationArea}不存在", new[] { "调出库区" })); validSourceStatuses = new List<EnumRequestStatus>
{
EnumRequestStatus.Handling, EnumRequestStatus.Partial,
};
break;
} }
default:
throw new ArgumentOutOfRangeException(nameof(targetStatus), targetStatus, null);
} }
protected async Task CheckStoreRelationAsync(KittingIssueRequestImportInput importInput, if (!validSourceStatuses.Contains(nowStatus))
List<ValidationResult> validationRresult)
{
var itemStoreRelation = await _itemStoreRelationApp
.GetFirstAsync(importInput.ItemCode, importInput.ToLocationCode).ConfigureAwait(false);
if (itemStoreRelation == null)
{ {
validationRresult.Add(new ValidationResult( throw new UserFriendlyException(
$"物品代码{importInput.ItemCode}与目标库位{importInput.ToLocationCode}不存在对应关", new[] { "物品库位对应关系" })); $"当前状态为 {nowStatus.GetDisplayName()} ,无法变更为 {targetStatus.GetDisplayName()}");
} }
} }
@ -271,39 +253,18 @@ public class KittingIssueRequestAppService : SfsStoreRequestAppServiceBase<Kitti
throw new UserFriendlyException($"库位代码为【{locationCode}】不存在"); throw new UserFriendlyException($"库位代码为【{locationCode}】不存在");
} }
if (locationDto.Type != EnumLocationType.WIP) if (locationDto.Type != EnumLocationType.KittingWip)
{ {
throw new UserFriendlyException($"库位代码【{locationCode}】不是【{EnumLocationType.WIP.GetDisplayName()}】类型"); throw new UserFriendlyException($"库位代码【{locationCode}】不是【{EnumLocationType.KittingWip.GetDisplayName()}】类型");
} }
} }
protected async Task<ItemBasicDTO> CheckItemBasicAsync(KittingIssueRequestImportInput importInput, private void CheckProductionLine(ProductionLineDTO productionLineDto, string productionCode)
List<ValidationResult> validationRresult)
{
var item = await _itemBasicAppService.GetByCodeAsync(importInput.ItemCode).ConfigureAwait(false);
if (item == null)
{ {
validationRresult.Add(new ValidationResult($"物品代码{importInput.ItemCode}不存在", new[] { "物品代码" })); if (productionLineDto == null)
}
else if (item.StdPackQty == 0)
{ {
validationRresult.Add( throw new UserFriendlyException($"未找到生产线【{productionCode}】");
new ValidationResult($"物品代码{importInput.ItemCode}的物品信息中标准包装等于0或不存在", new[] { "标准包装" }));
}
return item;
} }
protected async Task<LocationDTO> CheckLocationAsync(KittingIssueRequestImportInput importInput,
List<ValidationResult> validationRresult)
{
var location = await _locationAppService.GetByCodeAsync(importInput.ToLocationCode).ConfigureAwait(false);
if (location == null)
{
validationRresult.Add(new ValidationResult($"目标库位{importInput.ToLocationCode}不存在", new[] { "目标库位" }));
}
return location;
} }
#endregion #endregion

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/KittingIssueRequests/KittingIssueRequestAutoMapperProfile.cs

@ -25,7 +25,6 @@ public partial class StoreApplicationAutoMapperProfile : Profile
CreateMap<KittingIssueRequestImportInput, KittingIssueRequest>() CreateMap<KittingIssueRequestImportInput, KittingIssueRequest>()
.IgnoreAuditedObjectProperties() .IgnoreAuditedObjectProperties()
.ForMember(x => x.Type, y => y.MapFrom(t => t.Type.ToString()))
.Ignore(x => x.UseOnTheWayLocation) .Ignore(x => x.UseOnTheWayLocation)
.Ignore(x => x.Details) .Ignore(x => x.Details)
.Ignore(x => x.Remark) .Ignore(x => x.Remark)

8
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/AssembleIssueJobs/AssembleIssueJob.cs

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks; using System.Threading.Tasks;
using Win_in.Sfs.Shared.Domain.Entities; using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Domain;
@ -12,11 +13,12 @@ namespace Win_in.Sfs.Wms.Store.Domain;
[Display(Name = "装配发料任务")] [Display(Name = "装配发料任务")]
public class AssembleIssueJob : SfsJobAggregateRootBase<AssembleIssueJobDetail> public class AssembleIssueJob : SfsJobAggregateRootBase<AssembleIssueJobDetail>
{ {
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[IgnoreUpdate] [Display(Name = "叫料类型")]
public string RequestType { get; set; } public EnumIssueRequestType IssueRequestType { get; set; }
/// <summary> /// <summary>
/// 生产线 /// 生产线

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

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks; using System.Threading.Tasks;
using Win_in.Sfs.Shared.Domain.Entities; using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Wms.Store.Domain; using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs; namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
@ -14,10 +15,10 @@ namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
public class CoatingIssueJob : SfsJobAggregateRootBase<CoatingIssueJobDetail> public class CoatingIssueJob : SfsJobAggregateRootBase<CoatingIssueJobDetail>
{ {
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[IgnoreUpdate] [Display(Name = "叫料类型")]
public string RequestType { get; set; } public EnumIssueRequestType IssueRequestType { get; set; }
/// <summary> /// <summary>
/// 生产线 /// 生产线

13
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/InjectionIssueJobs/InjectionIssueJob.cs

@ -1,8 +1,7 @@
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using Win_in.Sfs.Shared.Domain.Entities; using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Domain;
@ -13,10 +12,10 @@ namespace Win_in.Sfs.Wms.Store.Domain;
public class InjectionIssueJob : SfsJobAggregateRootBase<InjectionIssueJobDetail> public class InjectionIssueJob : SfsJobAggregateRootBase<InjectionIssueJobDetail>
{ {
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[IgnoreUpdate] [Display(Name = "叫料类型")]
public string RequestType { get; set; } public EnumIssueRequestType IssueRequestType { get; set; }
/// <summary> /// <summary>
/// 生产线 /// 生产线
@ -41,7 +40,5 @@ public class InjectionIssueJob : SfsJobAggregateRootBase<InjectionIssueJobDetail
/// 任务明细 /// 任务明细
/// </summary> /// </summary>
[IgnoreUpdate] [IgnoreUpdate]
public override List<InjectionIssueJobDetail> Details { get; set; } = new List<InjectionIssueJobDetail>(); public override List<InjectionIssueJobDetail> Details { get; set; } = new();
} }

11
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/InjectionIssueJobs/InjectionIssueJobDetail.cs

@ -1,8 +1,9 @@
using System; using System;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Domain;
@ -13,21 +14,25 @@ public class InjectionIssueJobDetail : SfsDetailEntityBase
/// <summary> /// <summary>
/// 物品代码 /// 物品代码
/// </summary> /// </summary>
[Display(Name = "物品代码")]
public string ItemCode { get; set; } public string ItemCode { get; set; }
/// <summary> /// <summary>
/// 物品名称 /// 物品名称
/// </summary> /// </summary>
[Display(Name = "物品名称")]
public string ItemName { get; set; } public string ItemName { get; set; }
/// <summary> /// <summary>
/// 物品描述1 /// 物品描述1
/// </summary> /// </summary>
[Display(Name = "物品描述1")]
public string ItemDesc1 { get; set; } public string ItemDesc1 { get; set; }
/// <summary> /// <summary>
/// 物品描述2 /// 物品描述2
/// </summary> /// </summary>
[Display(Name = "物品描述2")]
public string ItemDesc2 { get; set; } public string ItemDesc2 { get; set; }
/// <summary> /// <summary>
@ -40,11 +45,13 @@ public class InjectionIssueJobDetail : SfsDetailEntityBase
/// <summary> /// <summary>
/// 库存状态 /// 库存状态
/// </summary> /// </summary>
[Display(Name = "库存状态")]
public EnumInventoryStatus Status { get; set; } public EnumInventoryStatus Status { get; set; }
/// <summary> /// <summary>
/// 计量单位 /// 计量单位
/// </summary> /// </summary>
[Display(Name = "计量单位")]
public string Uom { get; set; } public string Uom { get; set; }
#endregion #endregion
@ -519,6 +526,6 @@ public class InjectionIssueJobDetail : SfsDetailEntityBase
public void SetId(Guid id) public void SetId(Guid id)
{ {
this.Id = id; Id = id;
} }
} }

13
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJob.cs

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks; using System.Threading.Tasks;
using Win_in.Sfs.Shared.Domain.Entities; using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Domain;
@ -13,35 +14,31 @@ namespace Win_in.Sfs.Wms.Store.Domain;
public class KittingIssueJob : SfsJobAggregateRootBase<KittingIssueJobDetail> public class KittingIssueJob : SfsJobAggregateRootBase<KittingIssueJobDetail>
{ {
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[IgnoreUpdate] [Display(Name = "叫料类型")]
public string RequestType { get; set; } public EnumIssueRequestType IssueRequestType { get; set; }
/// <summary> /// <summary>
/// 生产线 /// 生产线
/// </summary> /// </summary>
[IgnoreUpdate]
public string ProdLine { get; set; } public string ProdLine { get; set; }
/// <summary> /// <summary>
/// 要料单号 /// 要料单号
/// </summary> /// </summary>
[IgnoreUpdate]
public string KittingRequestNumber { get; set; } public string KittingRequestNumber { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库
/// </summary> /// </summary>
[Display(Name = "使用在途库")] [Display(Name = "使用在途库")]
[IgnoreUpdate]
public bool UseOnTheWayLocation { get; set; } public bool UseOnTheWayLocation { get; set; }
/// <summary> /// <summary>
/// 任务明细 /// 任务明细
/// </summary> /// </summary>
[IgnoreUpdate]
public override List<KittingIssueJobDetail> Details { get; set; } = new List<KittingIssueJobDetail>(); public override List<KittingIssueJobDetail> Details { get; set; } = new List<KittingIssueJobDetail>();
public EnumIssueSendType EnumIssueSendType { get; set; }
} }

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/AssembleIssueNotes/AssembleIssueNote.cs

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Volo.Abp; using Volo.Abp;
using Win_in.Sfs.Shared.Domain.Entities; using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Domain;
@ -27,10 +28,10 @@ public class AssembleIssueNote : SfsStoreAggregateRootBase<AssembleIssueNoteDeta
public string RequestNumber { get; set; } public string RequestNumber { get; set; }
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[IgnoreUpdate] [Display(Name = "叫料类型")]
public string RequestType { get; set; } public EnumIssueRequestType IssueRequestType { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库

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

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Volo.Abp; using Volo.Abp;
using Win_in.Sfs.Shared.Domain.Entities; using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Wms.Store.Domain; using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes; namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes;
@ -28,10 +29,10 @@ public class CoatingIssueNote : SfsStoreAggregateRootBase<CoatingIssueNoteDetail
public string RequestNumber { get; set; } public string RequestNumber { get; set; }
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[IgnoreUpdate] [Display(Name = "叫料类型")]
public string RequestType { get; set; } public EnumIssueRequestType IssueRequestType { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/InjectionIssueNotes/InjectionIssueNote.cs

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Volo.Abp; using Volo.Abp;
using Win_in.Sfs.Shared.Domain.Entities; using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Domain;
@ -27,10 +28,10 @@ public class InjectionIssueNote : SfsStoreAggregateRootBase<InjectionIssueNoteDe
public string RequestNumber { get; set; } public string RequestNumber { get; set; }
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[IgnoreUpdate] [Display(Name = "叫料类型")]
public string RequestType { get; set; } public EnumIssueRequestType IssueRequestType { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/InjectionIssueNotes/InjectionIssueNoteDetail.cs

@ -3,6 +3,7 @@ using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Domain;

14
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/KittingIssueNotes/KittingIssueNote.cs

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Volo.Abp; using Volo.Abp;
using Win_in.Sfs.Shared.Domain.Entities; using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Domain;
@ -20,29 +21,24 @@ public class KittingIssueNote : SfsStoreAggregateRootBase<KittingIssueNoteDetail
/// <summary> /// <summary>
/// 明细列表 /// 明细列表
/// </summary> /// </summary>
[IgnoreUpdate]
public override List<KittingIssueNoteDetail> Details { get; set; } = new List<KittingIssueNoteDetail>(); public override List<KittingIssueNoteDetail> Details { get; set; } = new List<KittingIssueNoteDetail>();
[IgnoreUpdate]
public string RequestNumber { get; set; } public string RequestNumber { get; set; }
/// <summary> /// <summary>
/// 叫料请求类型 /// 叫料类型
/// </summary> /// </summary>
[IgnoreUpdate] [Display(Name = "叫料类型")]
public string RequestType { get; set; } public EnumIssueRequestType IssueRequestType { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库
/// </summary> /// </summary>
[IgnoreUpdate]
public bool UseOnTheWayLocation { get; set; } public bool UseOnTheWayLocation { get; set; }
/// <summary> /// <summary>
/// 确认时间 /// 确认时间
/// </summary> /// </summary>
[Display(Name = "确认时间")] [Display(Name = "确认时间")]
[IgnoreUpdate]
public DateTime? ConfirmTime { get; set; } public DateTime? ConfirmTime { get; set; }
/// <summary> /// <summary>
@ -51,6 +47,8 @@ public class KittingIssueNote : SfsStoreAggregateRootBase<KittingIssueNoteDetail
[Display(Name = "已确认")] [Display(Name = "已确认")]
public bool Confirmed { get; set; } public bool Confirmed { get; set; }
public EnumIssueSendType EnumIssueSendType { get; set; }
public void Confirm(DateTime confirmTime) public void Confirm(DateTime confirmTime)
{ {

4
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/AssembleIssueRequests/AssembleIssueRequest.cs

@ -1,6 +1,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Entities; using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Domain;
@ -13,8 +14,7 @@ public class AssembleIssueRequest : SfsStoreRequestAggregateRootBase<AssembleIss
/// 叫料类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料类型")] [Display(Name = "叫料类型")]
[IgnoreUpdate] public EnumIssueRequestType IssueRequestType { get; set; }
public string Type { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库

4
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/CoatingIssuelRequests/CoatingIssueRequest.cs

@ -1,6 +1,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Entities; using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Wms.Store.Domain; using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Requests.MaterialRequests; namespace Win_in.Sfs.Wms.Store.Requests.MaterialRequests;
@ -14,8 +15,7 @@ public class CoatingIssueRequest : SfsStoreRequestAggregateRootBase<CoatingIssue
/// 叫料类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料类型")] [Display(Name = "叫料类型")]
[IgnoreUpdate] public EnumIssueRequestType IssueRequestType { get; set; }
public string Type { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库

6
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/InjectionIssueRequests/InjectionIssueRequest.cs

@ -1,6 +1,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Entities; using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Domain;
@ -13,8 +14,7 @@ public class InjectionIssueRequest : SfsStoreRequestAggregateRootBase<InjectionI
/// 叫料类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料类型")] [Display(Name = "叫料类型")]
[IgnoreUpdate] public EnumIssueRequestType IssueRequestType { get; set; }
public string Type { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库
@ -25,5 +25,5 @@ public class InjectionIssueRequest : SfsStoreRequestAggregateRootBase<InjectionI
/// 明细列表 /// 明细列表
/// </summary> /// </summary>
[IgnoreUpdate] [IgnoreUpdate]
public override List<InjectionIssueRequestDetail> Details { get; set; } = new List<InjectionIssueRequestDetail>(); public override List<InjectionIssueRequestDetail> Details { get; set; } = new();
} }

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/InjectionIssueRequests/InjectionIssueRequestDetail.cs

@ -1,4 +1,3 @@
using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
@ -46,7 +45,6 @@ public class InjectionIssueRequestDetail : SfsStoreDetailWithQtyEntityBase, IHas
#endregion #endregion
/// <summary> /// <summary>
/// 生产线 /// 生产线
/// </summary> /// </summary>

13
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/KittingIssueRequests/KittingIssueRequest.cs

@ -1,6 +1,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Entities; using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Domain;
@ -13,17 +14,15 @@ public class KittingIssueRequest : SfsStoreRequestAggregateRootBase<KittingIssue
/// 叫料类型 /// 叫料类型
/// </summary> /// </summary>
[Display(Name = "叫料类型")] [Display(Name = "叫料类型")]
[IgnoreUpdate] public EnumIssueRequestType IssueRequestType { get; set; }
public string Type { get; set; }
/// <summary> /// <summary>
/// 使用在途库 /// 使用在途库
/// </summary> /// </summary>
public bool UseOnTheWayLocation { get; set; } public bool UseOnTheWayLocation { get; set; }
/// <summary> ///// <summary>
/// 明细列表 ///// 明细列表
/// </summary> ///// </summary>
[IgnoreUpdate] //public List<KittingIssueRequestDetail> Details { get; set; } = new List<KittingIssueRequestDetail>();
public override List<KittingIssueRequestDetail> Details { get; set; } = new List<KittingIssueRequestDetail>();
} }

23
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/KittingIssueRequests/KittingIssueRequestManager.cs

@ -19,11 +19,6 @@ public class KittingIssueRequestManager
_repository = repository; _repository = repository;
} }
#region 东阳V2
#endregion
/// <summary> /// <summary>
/// 创建 同时 直接赋值Number 为了返回Number /// 创建 同时 直接赋值Number 为了返回Number
/// </summary> /// </summary>
@ -53,22 +48,8 @@ public class KittingIssueRequestManager
} }
} }
public Task ImportDataAsync(List<KittingIssueRequest> entities, List<KittingIssueRequest> deleteEntities = null)
#region 导入
/// <summary>
/// 执行导入
/// </summary>
public virtual async Task ImportDataAsync(List<KittingIssueRequest> mergeEntities,
List<KittingIssueRequest> deleteEntities = null)
{
if (deleteEntities != null && deleteEntities.Count > 0)
{ {
await _repository.BulkDeleteAsync(deleteEntities).ConfigureAwait(false); throw new System.NotImplementedException();
} }
await CreateManyAsync(mergeEntities).ConfigureAwait(false);
}
#endregion
} }

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/AssembleIssueJobs/AssembleIssueJobDbContextModelCreatingExtensions.cs

@ -21,7 +21,6 @@ public static class AssembleIssueJobDbContextModelCreatingExtensions
//Configure Job base properties //Configure Job base properties
b.ConfigureJob<AssembleIssueJob, AssembleIssueJobDetail>(); b.ConfigureJob<AssembleIssueJob, AssembleIssueJobDetail>();
//Properties //Properties
b.Property(q => q.RequestType).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.AssembleRequestNumber).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.AssembleRequestNumber).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.JobType).HasConversion<string>(); b.Property(q => q.JobType).HasConversion<string>();

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

@ -22,7 +22,6 @@ public static class CoatingIssueJobDbContextModelCreatingExtensions
//Configure Job base properties //Configure Job base properties
b.ConfigureJob<CoatingIssueJob, CoatingIssueJobDetail>(); b.ConfigureJob<CoatingIssueJob, CoatingIssueJobDetail>();
//Properties //Properties
b.Property(q => q.RequestType).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.MaterialRequestNumber).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.MaterialRequestNumber).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.JobType).HasConversion<string>(); b.Property(q => q.JobType).HasConversion<string>();

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/InjectionIssueJobs/InjectionIssueJobDbContextModelCreatingExtensions.cs

@ -21,7 +21,6 @@ public static class InjectionIssueJobDbContextModelCreatingExtensions
//Configure Job base properties //Configure Job base properties
b.ConfigureJob<InjectionIssueJob, InjectionIssueJobDetail>(); b.ConfigureJob<InjectionIssueJob, InjectionIssueJobDetail>();
//Properties //Properties
b.Property(q => q.RequestType).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.InjectionIssueRequestNumber).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.InjectionIssueRequestNumber).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.JobType).HasConversion<string>(); b.Property(q => q.JobType).HasConversion<string>();

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobDbContextModelCreatingExtensions.cs

@ -21,7 +21,6 @@ public static class KittingIssueJobDbContextModelCreatingExtensions
//Configure Job base properties //Configure Job base properties
b.ConfigureJob<KittingIssueJob, KittingIssueJobDetail>(); b.ConfigureJob<KittingIssueJob, KittingIssueJobDetail>();
//Properties //Properties
b.Property(q => q.RequestType).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.KittingRequestNumber).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.KittingRequestNumber).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.JobType).HasConversion<string>(); b.Property(q => q.JobType).HasConversion<string>();

32114
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240426024936_Update_Issue.Designer.cs

File diff suppressed because it is too large

181
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240426024936_Update_Issue.cs

@ -0,0 +1,181 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Win_in.Sfs.Wms.Store.Migrations
{
public partial class Update_Issue : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropIndex(
name: "IX_Store_KittingPackagingNoteDetail_KittingCode",
table: "Store_KittingPackagingNoteDetail");
migrationBuilder.DropIndex(
name: "IX_Store_KittingPackagingNoteChassisDetail_KittingCode",
table: "Store_KittingPackagingNoteChassisDetail");
migrationBuilder.DropColumn(
name: "Type",
table: "Store_KittingIssueRequest");
migrationBuilder.DropColumn(
name: "Type",
table: "Store_InjectionIssueRequest");
migrationBuilder.DropColumn(
name: "RequestType",
table: "Store_InjectionIssueNote");
migrationBuilder.DropColumn(
name: "RequestType",
table: "Store_CountPlan");
migrationBuilder.DropColumn(
name: "Type",
table: "Store_CoatingIssueRequest");
migrationBuilder.DropColumn(
name: "Type",
table: "Store_AssembleIssueRequest");
migrationBuilder.DropColumn(
name: "RequestType",
table: "Job_InjectionIssueJob");
migrationBuilder.AddColumn<int>(
name: "IssueRequestType",
table: "Store_KittingIssueRequest",
type: "int",
nullable: false,
defaultValue: 0);
migrationBuilder.AddColumn<int>(
name: "IssueRequestType",
table: "Store_InjectionIssueRequest",
type: "int",
nullable: false,
defaultValue: 0);
migrationBuilder.AddColumn<int>(
name: "IssueRequestType",
table: "Store_InjectionIssueNote",
type: "int",
nullable: false,
defaultValue: 0);
migrationBuilder.AddColumn<int>(
name: "IssueRequestType",
table: "Store_CoatingIssueRequest",
type: "int",
nullable: false,
defaultValue: 0);
migrationBuilder.AddColumn<int>(
name: "IssueRequestType",
table: "Store_AssembleIssueRequest",
type: "int",
nullable: false,
defaultValue: 0);
migrationBuilder.AddColumn<int>(
name: "IssueRequestType",
table: "Job_InjectionIssueJob",
type: "int",
nullable: false,
defaultValue: 0);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "IssueRequestType",
table: "Store_KittingIssueRequest");
migrationBuilder.DropColumn(
name: "IssueRequestType",
table: "Store_InjectionIssueRequest");
migrationBuilder.DropColumn(
name: "IssueRequestType",
table: "Store_InjectionIssueNote");
migrationBuilder.DropColumn(
name: "IssueRequestType",
table: "Store_CoatingIssueRequest");
migrationBuilder.DropColumn(
name: "IssueRequestType",
table: "Store_AssembleIssueRequest");
migrationBuilder.DropColumn(
name: "IssueRequestType",
table: "Job_InjectionIssueJob");
migrationBuilder.AddColumn<string>(
name: "Type",
table: "Store_KittingIssueRequest",
type: "nvarchar(64)",
maxLength: 64,
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Type",
table: "Store_InjectionIssueRequest",
type: "nvarchar(64)",
maxLength: 64,
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RequestType",
table: "Store_InjectionIssueNote",
type: "nvarchar(64)",
maxLength: 64,
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RequestType",
table: "Store_CountPlan",
type: "nvarchar(64)",
maxLength: 64,
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<string>(
name: "Type",
table: "Store_CoatingIssueRequest",
type: "nvarchar(64)",
maxLength: 64,
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Type",
table: "Store_AssembleIssueRequest",
type: "nvarchar(64)",
maxLength: 64,
nullable: true);
migrationBuilder.AddColumn<string>(
name: "RequestType",
table: "Job_InjectionIssueJob",
type: "nvarchar(64)",
maxLength: 64,
nullable: true);
migrationBuilder.CreateIndex(
name: "IX_Store_KittingPackagingNoteDetail_KittingCode",
table: "Store_KittingPackagingNoteDetail",
column: "KittingCode",
unique: true,
filter: "[KittingCode] IS NOT NULL");
migrationBuilder.CreateIndex(
name: "IX_Store_KittingPackagingNoteChassisDetail_KittingCode",
table: "Store_KittingPackagingNoteChassisDetail",
column: "KittingCode",
unique: true,
filter: "[KittingCode] IS NOT NULL");
}
}
}

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

@ -965,6 +965,9 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("nvarchar(max)") .HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties"); .HasColumnName("ExtraProperties");
b.Property<int>("IssueRequestType")
.HasColumnType("int");
b.Property<DateTime?>("LastModificationTime") b.Property<DateTime?>("LastModificationTime")
.HasColumnType("datetime2") .HasColumnType("datetime2")
.HasColumnName("LastModificationTime"); .HasColumnName("LastModificationTime");
@ -993,10 +996,6 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("TenantId"); .HasColumnName("TenantId");
b.Property<string>("Type")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<bool>("UseOnTheWayLocation") b.Property<bool>("UseOnTheWayLocation")
.HasColumnType("bit"); .HasColumnType("bit");
@ -5158,11 +5157,6 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasMaxLength(64) .HasMaxLength(64)
.HasColumnType("nvarchar(64)"); .HasColumnType("nvarchar(64)");
b.Property<string>("RequestType")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("Stage") b.Property<string>("Stage")
.IsRequired() .IsRequired()
.HasMaxLength(64) .HasMaxLength(64)
@ -7684,6 +7678,9 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("bit") .HasColumnType("bit")
.HasDefaultValue(false); .HasDefaultValue(false);
b.Property<int>("IssueRequestType")
.HasColumnType("int");
b.Property<string>("JobDescription") b.Property<string>("JobDescription")
.HasMaxLength(1024) .HasMaxLength(1024)
.HasColumnType("nvarchar(1024)"); .HasColumnType("nvarchar(1024)");
@ -7730,10 +7727,6 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("nvarchar(3072)") .HasColumnType("nvarchar(3072)")
.HasColumnName("Remark"); .HasColumnName("Remark");
b.Property<string>("RequestType")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<Guid?>("TenantId") b.Property<Guid?>("TenantId")
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("TenantId"); .HasColumnName("TenantId");
@ -8131,6 +8124,9 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("nvarchar(max)") .HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties"); .HasColumnName("ExtraProperties");
b.Property<int>("IssueRequestType")
.HasColumnType("int");
b.Property<string>("JobNumber") b.Property<string>("JobNumber")
.HasMaxLength(64) .HasMaxLength(64)
.HasColumnType("nvarchar(64)") .HasColumnType("nvarchar(64)")
@ -8159,10 +8155,6 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasMaxLength(64) .HasMaxLength(64)
.HasColumnType("nvarchar(64)"); .HasColumnType("nvarchar(64)");
b.Property<string>("RequestType")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<Guid?>("TenantId") b.Property<Guid?>("TenantId")
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("TenantId"); .HasColumnName("TenantId");
@ -8573,6 +8565,9 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("nvarchar(max)") .HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties"); .HasColumnName("ExtraProperties");
b.Property<int>("IssueRequestType")
.HasColumnType("int");
b.Property<DateTime?>("LastModificationTime") b.Property<DateTime?>("LastModificationTime")
.HasColumnType("datetime2") .HasColumnType("datetime2")
.HasColumnName("LastModificationTime"); .HasColumnName("LastModificationTime");
@ -8601,10 +8596,6 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("TenantId"); .HasColumnName("TenantId");
b.Property<string>("Type")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<bool>("UseOnTheWayLocation") b.Property<bool>("UseOnTheWayLocation")
.HasColumnType("bit"); .HasColumnType("bit");
@ -14258,6 +14249,9 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("nvarchar(max)") .HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties"); .HasColumnName("ExtraProperties");
b.Property<int>("IssueRequestType")
.HasColumnType("int");
b.Property<DateTime?>("LastModificationTime") b.Property<DateTime?>("LastModificationTime")
.HasColumnType("datetime2") .HasColumnType("datetime2")
.HasColumnName("LastModificationTime"); .HasColumnName("LastModificationTime");
@ -14286,10 +14280,6 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("TenantId"); .HasColumnName("TenantId");
b.Property<string>("Type")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<bool>("UseOnTheWayLocation") b.Property<bool>("UseOnTheWayLocation")
.HasColumnType("bit"); .HasColumnType("bit");
@ -14572,10 +14562,6 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasKey("Id"); b.HasKey("Id");
b.HasIndex("KittingCode")
.IsUnique()
.HasFilter("[KittingCode] IS NOT NULL");
b.HasIndex("MasterID"); b.HasIndex("MasterID");
b.ToTable("Store_KittingPackagingNoteChassisDetail", (string)null); b.ToTable("Store_KittingPackagingNoteChassisDetail", (string)null);
@ -14647,10 +14633,6 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasKey("Id"); b.HasKey("Id");
b.HasIndex("KittingCode")
.IsUnique()
.HasFilter("[KittingCode] IS NOT NULL");
b.HasIndex("MasterID"); b.HasIndex("MasterID");
b.ToTable("Store_KittingPackagingNoteDetail", (string)null); b.ToTable("Store_KittingPackagingNoteDetail", (string)null);
@ -30506,6 +30488,9 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("nvarchar(max)") .HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties"); .HasColumnName("ExtraProperties");
b.Property<int>("IssueRequestType")
.HasColumnType("int");
b.Property<DateTime?>("LastModificationTime") b.Property<DateTime?>("LastModificationTime")
.HasColumnType("datetime2") .HasColumnType("datetime2")
.HasColumnName("LastModificationTime"); .HasColumnName("LastModificationTime");
@ -30534,10 +30519,6 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("TenantId"); .HasColumnName("TenantId");
b.Property<string>("Type")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<bool>("UseOnTheWayLocation") b.Property<bool>("UseOnTheWayLocation")
.HasColumnType("bit"); .HasColumnType("bit");

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/AssembleIssueNotes/AssembleIssueNoteDbContextModelCreatingExtensions.cs

@ -20,7 +20,6 @@ public static class AssembleIssueNoteDbContextModelCreatingExtensions
//Properties //Properties
b.Property(q => q.RequestNumber).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.RequestNumber).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.RequestType).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.Remark).HasMaxLength(SfsPropertyConst.RemarkLength); b.Property(q => q.Remark).HasMaxLength(SfsPropertyConst.RemarkLength);
//Relations //Relations

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDbContextModelCreatingExtensions.cs

@ -21,7 +21,6 @@ public static class CoatingIssueNoteDbContextModelCreatingExtensions
//Properties //Properties
b.Property(q => q.RequestNumber).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.RequestNumber).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.RequestType).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.Remark).HasMaxLength(SfsPropertyConst.RemarkLength); b.Property(q => q.Remark).HasMaxLength(SfsPropertyConst.RemarkLength);
//Relations //Relations

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/InjectionIssueNotes/InjectionIssueNoteDbContextModelCreatingExtensions.cs

@ -20,7 +20,6 @@ public static class InjectionIssueNoteDbContextModelCreatingExtensions
//Properties //Properties
b.Property(q => q.RequestNumber).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.RequestNumber).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.RequestType).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.Remark).HasMaxLength(SfsPropertyConst.RemarkLength); b.Property(q => q.Remark).HasMaxLength(SfsPropertyConst.RemarkLength);
//Relations //Relations

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/KittingIssueNotes/KittingIssueNoteDbContextModelCreatingExtensions.cs

@ -20,7 +20,6 @@ public static class KittingIssueNoteDbContextModelCreatingExtensions
//Properties //Properties
b.Property(q => q.RequestNumber).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.RequestNumber).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.RequestType).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.Remark).HasMaxLength(SfsPropertyConst.RemarkLength); b.Property(q => q.Remark).HasMaxLength(SfsPropertyConst.RemarkLength);
//Relations //Relations

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

Loading…
Cancel
Save