Browse Source

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

dev_DY_CC
郑勃旭 1 year ago
parent
commit
b68b5935b6
  1. BIN
      .vs/WZC2_New/v17/.wsuo
  2. 35
      .vs/WZC2_New/v17/DocumentLayout.json
  3. BIN
      .vs/slnx.sqlite
  4. 4
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp/DataExchangeDapperFawtygModule.cs
  5. 14
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp/PurchasePrices/PurchasePriceLinq2DbRepository.cs
  6. 20
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp/SalePrices/SalePriceLinq2DbRepository.cs
  7. 2
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp/TyrpDb.cs
  8. 16
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/Products/mes_product.cs
  9. 10
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/PurchasePrices/IPurchasePriceLinq2DbRepository.cs
  10. 8
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/PurchasePrices/IPurchasePriceManager.cs
  11. 23
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/PurchasePrices/PurchasePriceManager.cs
  12. 33
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/PurchasePrices/ismout.cs
  13. 10
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/SalePrices/ISalePriceLinq2DbRepository.cs
  14. 8
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/SalePrices/ISalePriceManager.cs
  15. 23
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/SalePrices/SalePriceManager.cs
  16. 33
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/SalePrices/spriceout.cs
  17. 2
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent/FawtygAutoMapperProfile.cs
  18. 34
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent/Incoming/PlanReader.cs
  19. 13
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent/Incoming/ShipReader.cs
  20. 21
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesOutConverter.cs
  21. 5
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesOutReader.cs
  22. 6
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/appsettings.json
  23. 6
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/FawtygAutoMapperProfile.cs
  24. 75
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/PurchasePriceConverter.cs
  25. 133
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/PurchasePriceReader.cs
  26. 74
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/SalePriceConverter.cs
  27. 132
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/SalePriceReader.cs
  28. 75
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/StdCostPriceConverter.cs
  29. 131
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/StdCostPriceReader.cs
  30. 24
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/TyrpIncomingBackgroundWorker.cs
  31. 67
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Outgoing/DeliverNoteConverter.cs
  32. 18
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/AgentModule.cs
  33. 21
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsExtensions.cs
  34. 12
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsWorker.cs
  35. 4
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/appsettings.json
  36. 52
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/ProductReceiptNote/ProductReceiptNoteSumDetailExchangeDto.cs
  37. 49
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/PurchasePrice/PurchasePriceExchangeDto.cs
  38. 55
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/SalePrice/SalePriceExchangeDto.cs
  39. 45
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/StdCostPrice/StdCostPriceExchangeDto.cs
  40. 90
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/Win_in.Sfs.Wms.DataExchange.Application.Contracts.xml
  41. 12
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Domain.Shared/Enums/EnumIncomingDataType.cs
  42. 4
      be/Hosts/Basedata.Host/Win_in.Sfs.Basedata.HttpApi.Host/Properties/PublishProfiles/FolderProfile.pubxml
  43. 4
      be/Hosts/Wms.Host/Win_in.Sfs.Wms.Store.HttpApi.Host/Properties/PublishProfiles/FolderProfile.pubxml
  44. 16
      be/Hosts/Wms.Host/Win_in.Sfs.Wms.Store.HttpApi.Host/Properties/PublishProfiles/FolderProfile1.pubxml
  45. 64
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/BaseDatas/EquipmentController.cs
  46. 43
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/BaseDatas/KittingController.cs
  47. 40
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/BaseDatas/PositionCodeController.cs
  48. 42
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/BaseDatas/SplitPackingRecController.cs
  49. 213
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/ContainerJobController.cs
  50. 29
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Labels/InventoryLabelController.cs
  51. 38
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ContainerNoteController.cs
  52. 51
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ContainerRequestController.cs
  53. 17
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/IssueNoteController.cs
  54. 4
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/MaterialRequestController.cs
  55. 74
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/PurchaseReturnRequestController.cs
  56. 40
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/TransferNoteController.cs
  57. 10
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/PdaHostAutoMapperProfile.cs
  58. 2
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Properties/PublishProfiles/FolderProfile.pubxml
  59. 9
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Boms/IBomAppService.cs
  60. 54
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentAreaDTO.cs
  61. 49
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentAreaForDongyangExportDTO.cs
  62. 64
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentDTO.cs
  63. 53
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentForDongyangExportDTO.cs
  64. 40
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentLocCapDTO.cs
  65. 31
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentLocDTO.cs
  66. 73
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentPartCodeDTO.cs
  67. 19
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentRecordErrorDTO.cs
  68. 21
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/EquipmentAreaPermissions.cs
  69. 21
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/EquipmentPermissions.cs
  70. 28
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/IEquipmentAppService.cs
  71. 28
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/IEquipmentAreaAppService.cs
  72. 33
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/IEquipmentLocAppService.cs
  73. 28
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/IEquipmentLocCapAppService.cs
  74. 31
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/IEquipmentPartCodeAppService.cs
  75. 51
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentAreaCheckInput.cs
  76. 225
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentAreaEditInput.cs
  77. 53
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentAreaImportInput.cs
  78. 55
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentCheckInput.cs
  79. 236
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentEditInput.cs
  80. 64
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentImportInput.cs
  81. 20
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocCapCheckInput.cs
  82. 20
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocCapEditInput.cs
  83. 38
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocCapImportInput.cs
  84. 27
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocCheckInput .cs
  85. 28
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocEditInput.cs
  86. 33
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocImportInput.cs
  87. 43
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentPartCodeCheckInput.cs
  88. 53
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentPartCodeEditInput.cs
  89. 60
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentPartCodeImportInput.cs
  90. 41
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/DTOs/KittingDTO.cs
  91. 49
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/DTOs/KittingDetailDTO.cs
  92. 9
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/IKttingAppService.cs
  93. 49
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingDetailInput.cs
  94. 32
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingEditInput.cs
  95. 149
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingImportInput.cs
  96. 21
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/KittingPermissions.cs
  97. 2
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Permissions/BasedataPermissionDefinitionProvider.cs
  98. 63
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/DTOs/PositionCodeDTO.cs
  99. 9
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/IPositionCodeAppService.cs
  100. 67
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/Inputs/PositionCodeEditInput.cs

BIN
.vs/WZC2_New/v17/.wsuo

Binary file not shown.

35
.vs/WZC2_New/v17/DocumentLayout.json

@ -0,0 +1,35 @@
{
"Version": 1,
"WorkspaceRootPath": "D:\\www\\WZC2_New\\",
"Documents": [],
"DocumentGroupContainers": [
{
"Orientation": 1,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedHeight": 200,
"SelectedChildIndex": -1,
"Children": [
{
"$type": "Bookmark",
"Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
},
{
"$type": "Bookmark",
"Name": "ST:128:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
},
{
"$type": "Bookmark",
"Name": "ST:129:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
},
{
"$type": "Bookmark",
"Name": "ST:128:0:{1fc202d4-d401-403c-9834-5b218574bb67}"
}
]
}
]
}
]
}

BIN
.vs/slnx.sqlite

Binary file not shown.

4
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp/DataExchangeDapperFawtygModule.cs

@ -11,6 +11,8 @@ using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.Boms;
using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.Customers; using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.Customers;
using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.Dictpjs; using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.Dictpjs;
using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.Products; using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.Products;
using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.PurchasePrices;
using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.SalePrices;
using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.Venders; using Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.Venders;
namespace Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp; namespace Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp;
@ -45,5 +47,7 @@ public class DataExchangeDapperFawtygModule : AbpModule
context.Services.AddTransient<IDictpjLinq2DbRepository, DictpjLinq2DbRepository>(); context.Services.AddTransient<IDictpjLinq2DbRepository, DictpjLinq2DbRepository>();
context.Services.AddTransient<ICustomerLinq2DbRepository, CustomerLinq2DbRepository>(); context.Services.AddTransient<ICustomerLinq2DbRepository, CustomerLinq2DbRepository>();
context.Services.AddTransient<IBackfluLinq2DbRepository, BackfluLinq2DbRepository>(); context.Services.AddTransient<IBackfluLinq2DbRepository, BackfluLinq2DbRepository>();
context.Services.AddTransient<IPurchasePriceLinq2DbRepository, PurchasePriceLinq2DbRepository>();
context.Services.AddTransient<ISalePriceLinq2DbRepository, SalePriceLinq2DbRepository>();
} }
} }

14
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp/PurchasePrices/PurchasePriceLinq2DbRepository.cs

@ -0,0 +1,14 @@
using Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp;
using Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp.Bases;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
namespace Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.PurchasePrices;
public class PurchasePriceLinq2DbRepository :
Linq2DbCrudRepository<ismout>,
IPurchasePriceLinq2DbRepository
{
public PurchasePriceLinq2DbRepository(TyrpDb tyrpDb) : base(tyrpDb)
{
}
}

20
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp/SalePrices/SalePriceLinq2DbRepository.cs

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp.Bases;
using Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
namespace Win_in.Sfs.Wms.DataExchange.LinqToDB.Fawtyg.Tyrp.SalePrices;
public class SalePriceLinq2DbRepository :
Linq2DbCrudRepository<spriceout>,
ISalePriceLinq2DbRepository
{
public SalePriceLinq2DbRepository(TyrpDb tyrpDb) : base(tyrpDb)
{
}
}

2
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp/TyrpDb.cs

@ -18,6 +18,8 @@ public class TyrpDb : DataConnection, ITransientDependency
public ITable<vmout> Supplier => this.GetTable<vmout>(); public ITable<vmout> Supplier => this.GetTable<vmout>();
public ITable<pjtmout> Dictpj => this.GetTable<pjtmout>(); public ITable<pjtmout> Dictpj => this.GetTable<pjtmout>();
public ITable<cmout> Customer => this.GetTable<cmout>(); public ITable<cmout> Customer => this.GetTable<cmout>();
public ITable<ismout> PurchasePrice => this.GetTable<ismout>();
public ITable<spriceout> SalePrice => this.GetTable<spriceout>();
public ITable<scmout> Backflu => this.GetTable<scmout>(); public ITable<scmout> Backflu => this.GetTable<scmout>();
public ITable<mes_product> mes_product => this.GetTable<mes_product>(); public ITable<mes_product> mes_product => this.GetTable<mes_product>();

16
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/Products/mes_product.cs

@ -86,12 +86,18 @@ public class mes_product : Entity
/// </summary> /// </summary>
public string mes_product_active { get; set; } public string mes_product_active { get; set; }
/// <summary> /// <summary>
/// /// 最小領用倍數
/// </summary> /// </summary>
public string mes_product_qad01 { get; set; } public decimal mes_product_qad01 { get; set; }
/// <summary>
// public string mes_product_fih_factory { get; set; } /// 正廠編號
/// </summary>
public string mes_product_fih_factory { get; set; }
/// <summary>
/// 标准成本
/// </summary>
/// <returns></returns>
public decimal mes_product_price_std { get; set; }
public override object[] GetKeys() public override object[] GetKeys()
{ {
return new object[] { mes_product_part_ser }; return new object[] { mes_product_part_ser };

10
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/PurchasePrices/IPurchasePriceLinq2DbRepository.cs

@ -0,0 +1,10 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
public interface IPurchasePriceLinq2DbRepository : ILinq2DbRepository<ismout>
{
}

8
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/PurchasePrices/IPurchasePriceManager.cs

@ -0,0 +1,8 @@
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
public interface IPurchasePriceManager
{
Task<List<ismout>> GetToBeProcessedListAsync();
}

23
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/PurchasePrices/PurchasePriceManager.cs

@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Services;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
public class PurchasePriceManager : DomainService, IPurchasePriceManager
{
private readonly IPurchasePriceLinq2DbRepository _repository;
public PurchasePriceManager(IPurchasePriceLinq2DbRepository repository)
{
_repository = repository;
}
public async Task<List<ismout>> GetToBeProcessedListAsync()
{
var purchaseprice = await _repository.GetListAsync().ConfigureAwait(false);
return purchaseprice.ToList();
}
}

33
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/PurchasePrices/ismout.cs

@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
/// <summary>
/// 采购价格
/// </summary>
public class ismout : Entity
{
/// <summary>
/// 物料代码
/// </summary>
public string ismout_part { get; set; }
/// <summary>
/// 供应商代码
/// </summary>
public string ismout_vend { get; set; }
/// <summary>
/// 采购价格
/// </summary>
public decimal ismout_price { get; set; }
public override object[] GetKeys()
{
return new object[] { ismout_part, ismout_vend };
}
}

10
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/SalePrices/ISalePriceLinq2DbRepository.cs

@ -0,0 +1,10 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
public interface ISalePriceLinq2DbRepository : ILinq2DbRepository<spriceout>
{
}

8
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/SalePrices/ISalePriceManager.cs

@ -0,0 +1,8 @@
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
public interface ISalePriceManager
{
Task<List<spriceout>> GetToBeProcessedListAsync();
}

23
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/SalePrices/SalePriceManager.cs

@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Services;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
public class SalePriceManager : DomainService, ISalePriceManager
{
private readonly ISalePriceLinq2DbRepository _repository;
public SalePriceManager(ISalePriceLinq2DbRepository repository)
{
_repository = repository;
}
public async Task<List<spriceout>> GetToBeProcessedListAsync()
{
var saleprice = await _repository.GetListAsync().ConfigureAwait(false);
return saleprice.ToList();
}
}

33
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/SalePrices/spriceout.cs

@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities;
namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
/// <summary>
/// 销售价格
/// </summary>
public class spriceout : Entity
{
/// <summary>
/// 物料代码
/// </summary>
public string spriceout_part { get; set; }
/// <summary>
/// 客户代码
/// </summary>
public string spriceout_cust { get; set; }
/// <summary>
/// 销售价格
/// </summary>
public decimal spriceout_price { get; set; }
public override object[] GetKeys()
{
return new object[] { spriceout_part, spriceout_cust };
}
}

2
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent/FawtygAutoMapperProfile.cs

@ -86,7 +86,7 @@ public class FawtygAutoMapperProfile : Profile
CreateMap<SupplierAsnDetailExchangeDto, InventoryLabelEditInput>() CreateMap<SupplierAsnDetailExchangeDto, InventoryLabelEditInput>()
.ForMember(x => x.Code, y => y.MapFrom(d => d.PackingCode)) .ForMember(x => x.Code, y => y.MapFrom(d => d.PackingCode))
.ForMember(x => x.LabelType, y => y.MapFrom(d => EnumLabelType.PurchaseLabel)) .ForMember(x => x.LabelType, y => y.MapFrom(d => Label.Domain.Shared.EnumLabelType.PurchaseLabel))
.ForMember(x => x.LabelStatus, y => y.MapFrom(d => LabelStatus.Enable)) .ForMember(x => x.LabelStatus, y => y.MapFrom(d => LabelStatus.Enable))
.Ignore(x => x.FullBarcodeString) .Ignore(x => x.FullBarcodeString)
.Ignore(x => x.RecommendLocationCode) .Ignore(x => x.RecommendLocationCode)

34
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent/Incoming/PlanReader.cs

@ -5,6 +5,7 @@ using System.Text.Json;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Volo.Abp.Guids; using Volo.Abp.Guids;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.DataExchange.Domain; using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.EOS; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.EOS;
@ -20,17 +21,20 @@ public class PlanReader : IReader
private readonly IIncomingFromExternalManager _incomingFromExternalManager; private readonly IIncomingFromExternalManager _incomingFromExternalManager;
private readonly ILogger<PlanReader> _logger; private readonly ILogger<PlanReader> _logger;
private readonly IGuidGenerator _guidGenerator; private readonly IGuidGenerator _guidGenerator;
private readonly IPurchasePriceSheetAppService _purchasePriceSheetAppService;
public PlanReader( public PlanReader(
IPlanManager planManager IPlanManager planManager
, IIncomingFromExternalManager incomingFromExternalManager , IIncomingFromExternalManager incomingFromExternalManager
, ILogger<PlanReader> logger , ILogger<PlanReader> logger
, IGuidGenerator guidGenerator , IGuidGenerator guidGenerator,
IPurchasePriceSheetAppService purchasePriceSheetAppService
) )
{ {
_planManager = planManager; _planManager = planManager;
_incomingFromExternalManager = incomingFromExternalManager; _incomingFromExternalManager = incomingFromExternalManager;
_logger = logger; _logger = logger;
_guidGenerator = guidGenerator; _guidGenerator = guidGenerator;
_purchasePriceSheetAppService = purchasePriceSheetAppService;
} }
@ -43,6 +47,12 @@ public class PlanReader : IReader
_logger.LogInformation("no plans"); _logger.LogInformation("no plans");
return new List<IncomingFromExternal>(); return new List<IncomingFromExternal>();
} }
var pobillno = await GetPriceItems(toBeProcessedPlans).ConfigureAwait(false);
if (pobillno.Count > 0)
{
toBeProcessedPlans = toBeProcessedPlans.Where(r => !pobillno.Contains(r.PlanBillNo)).ToList();
}
//Plan逐一转换为PurchaseOrder //Plan逐一转换为PurchaseOrder
var incomingDataList = BuildIncomingFromExternalFromPlanAsync(toBeProcessedPlans); var incomingDataList = BuildIncomingFromExternalFromPlanAsync(toBeProcessedPlans);
await _incomingFromExternalManager.CreateBulkAsync(incomingDataList).ConfigureAwait(false); await _incomingFromExternalManager.CreateBulkAsync(incomingDataList).ConfigureAwait(false);
@ -50,7 +60,22 @@ public class PlanReader : IReader
await _planManager.UpdateProcessedListAsync(toBeProcessedPlans).ConfigureAwait(false); await _planManager.UpdateProcessedListAsync(toBeProcessedPlans).ConfigureAwait(false);
return incomingDataList; return incomingDataList;
} }
private async Task<List<string>> GetPriceItems(List<Plan> toBeProcessedPlans)
{
List<string> pobillno = new List<string>();
foreach (var plan in toBeProcessedPlans)
{
if (pobillno.Contains(plan.PlanBillNo)) continue;
var price = await _purchasePriceSheetAppService.GetByItemCodeAsync(plan.ERP,plan.SupplierCode).ConfigureAwait(false);
if (price == null)
{
pobillno.Add(plan.PlanBillNo);
}
}
return pobillno;
}
private List<IncomingFromExternal> BuildIncomingFromExternalFromPlanAsync(List<Plan> toBeProcessedPlans) private List<IncomingFromExternal> BuildIncomingFromExternalFromPlanAsync(List<Plan> toBeProcessedPlans)
{ {
var incomingDataList = new List<IncomingFromExternal>(); var incomingDataList = new List<IncomingFromExternal>();
@ -109,9 +134,10 @@ public class PlanReader : IReader
OrderDate = plan.ReleaseDate, OrderDate = plan.ReleaseDate,
DueDate = plan.PlanArriveDate, DueDate = plan.PlanArriveDate,
ContactName = plan.PlanUserCode, ContactName = plan.PlanUserCode,
OrderStatus = plan.PlanBillState == 0 //OrderStatus = plan.PlanBillState == 0
? EnumOrderStatus.Open // ? EnumOrderStatus.Open
: EnumOrderStatus.Close, // : EnumOrderStatus.Close,
OrderStatus= EnumOrderStatus.Open,
ActiveDate = plan.EosDate, ActiveDate = plan.EosDate,
Worker = plan.PlanUserCode, Worker = plan.PlanUserCode,
// PoType = "2", // PoType = "2",

13
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent/Incoming/ShipReader.cs

@ -11,6 +11,7 @@ using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.EOS; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.EOS;
using Win_in.Sfs.Wms.DataExchange.Domain.Shared; using Win_in.Sfs.Wms.DataExchange.Domain.Shared;
using Win_in.Sfs.Wms.DataExchange.WMS.SuppplierAsn; using Win_in.Sfs.Wms.DataExchange.WMS.SuppplierAsn;
using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent; namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent;
@ -22,12 +23,14 @@ public class ShipReader : IReader
private readonly ILogger<ShipReader> _logger; private readonly ILogger<ShipReader> _logger;
private readonly ISupplierItemAppService _supplierItemAppService; private readonly ISupplierItemAppService _supplierItemAppService;
private readonly ISupplierAppService _supplierAppService; private readonly ISupplierAppService _supplierAppService;
private readonly IPurchaseOrderAppService _purchaseOrderAppService;
public ShipReader( public ShipReader(
IShipManager shipManager IShipManager shipManager
, IIncomingFromExternalManager incomingFromExternalManager , IIncomingFromExternalManager incomingFromExternalManager
, ILogger<ShipReader> logger, , ILogger<ShipReader> logger,
ISupplierItemAppService supplierItemAppService, ISupplierItemAppService supplierItemAppService,
ISupplierAppService supplierAppService ISupplierAppService supplierAppService,
IPurchaseOrderAppService purchaseOrderAppService
) )
{ {
_shipManager = shipManager; _shipManager = shipManager;
@ -35,6 +38,7 @@ public class ShipReader : IReader
_logger = logger; _logger = logger;
_supplierItemAppService = supplierItemAppService; _supplierItemAppService = supplierItemAppService;
_supplierAppService = supplierAppService; _supplierAppService = supplierAppService;
_purchaseOrderAppService=purchaseOrderAppService;
} }
public virtual async Task<List<IncomingFromExternal>> ReadAsync() public virtual async Task<List<IncomingFromExternal>> ReadAsync()
@ -52,6 +56,13 @@ public class ShipReader : IReader
{ {
toBeProcessedShips = toBeProcessedShips.Where(r => !shipbillno.Contains(r.ShipBillNo)).ToList(); toBeProcessedShips = toBeProcessedShips.Where(r => !shipbillno.Contains(r.ShipBillNo)).ToList();
} }
//排除没有订单号的收货单(被排出的下次同步)
var pobilllist= toBeProcessedShips.Select(r => r.PlanBillNo).Distinct().ToList();
var ponumber =await _purchaseOrderAppService.GetNoPoBillList(pobilllist).ConfigureAwait(false);
if(ponumber.Count > 0)
{
toBeProcessedShips = toBeProcessedShips.Where(r => !ponumber.Contains(r.PlanBillNo)).ToList();
}
//Ship逐一转换为SupplierAsn //Ship逐一转换为SupplierAsn
var incomingDataList = await BuildIncomingFromExternalFromShipAsync(toBeProcessedShips).ConfigureAwait(false); var incomingDataList = await BuildIncomingFromExternalFromShipAsync(toBeProcessedShips).ConfigureAwait(false);
await _incomingFromExternalManager.CreateManyAsync(incomingDataList).ConfigureAwait(false); await _incomingFromExternalManager.CreateManyAsync(incomingDataList).ConfigureAwait(false);

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

@ -6,10 +6,12 @@ using System.Threading.Tasks;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Org.BouncyCastle.Asn1.Pkcs; using Org.BouncyCastle.Asn1.Pkcs;
using Volo.Abp.Data;
using Volo.Abp.ObjectMapping; using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.DataExchange.Domain; using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.Domain.Shared;
using Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote; using Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote;
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;
@ -62,7 +64,7 @@ public class MesOutConverter : IIncomingConverter
{ {
List<EnumLocationType> types = new List<EnumLocationType> { EnumLocationType.FG, EnumLocationType.WIP }; List<EnumLocationType> types = new List<EnumLocationType> { EnumLocationType.FG, EnumLocationType.WIP };
var incomingToWmsList = new List<IncomingToWms>(); var incomingToWmsList = new List<IncomingToWms>();
var groups = incomingDataList.GroupBy(p => p.SourceDataGroupCode); var groups = incomingDataList.GroupBy(p => new { p.SourceDataGroupCode, p.TableType });//按照库位和是为为返喷分组
foreach (var group in groups) foreach (var group in groups)
{ {
var first = group.First(); var first = group.First();
@ -80,15 +82,26 @@ public class MesOutConverter : IIncomingConverter
wmsProductReceiptNote.Worker = "MES";//操作人 wmsProductReceiptNote.Worker = "MES";//操作人
wmsProductReceiptNote.ReceiptType = EnumReceiptType.MesScanReceipt;//完工收货方式 wmsProductReceiptNote.ReceiptType = EnumReceiptType.MesScanReceipt;//完工收货方式
wmsProductReceiptNote.Details = new List<ProductReceiptNoteDetailInput>(); wmsProductReceiptNote.Details = new List<ProductReceiptNoteDetailInput>();
List<ProductReceiptNoteSumDetailExchangeDto> sumDetails = new List<ProductReceiptNoteSumDetailExchangeDto>();
foreach (var incomingFromExternal in group.ToList()) foreach (var incomingFromExternal in group.ToList())
{ {
ProductReceiptNoteSumDetailExchangeDto sumdetail = new ProductReceiptNoteSumDetailExchangeDto();
var productReceiptNote = JsonSerializer.Deserialize<ProductReceiptNoteExchangeDto>(incomingFromExternal.DestinationDataContent); var productReceiptNote = JsonSerializer.Deserialize<ProductReceiptNoteExchangeDto>(incomingFromExternal.DestinationDataContent);
var wmsProductReceiptNoteDetail = _objectMapper.Map<ProductReceiptNoteDetailExchangeDto, ProductReceiptNoteDetailInput>(productReceiptNote.Detail); var wmsProductReceiptNoteDetail = _objectMapper.Map<ProductReceiptNoteDetailExchangeDto, ProductReceiptNoteDetailInput>(productReceiptNote.Detail);
var oldNoteDetail= wmsProductReceiptNote.Details.FirstOrDefault(r => r.ItemCode == wmsProductReceiptNoteDetail.ItemCode && r.LocationErpCode == wmsProductReceiptNoteDetail.LocationErpCode);
var oldNoteDetail = wmsProductReceiptNote.Details.FirstOrDefault(r => r.ItemCode == wmsProductReceiptNoteDetail.ItemCode && r.LocationErpCode == wmsProductReceiptNoteDetail.LocationErpCode && (first.TableType != EnumExchangeTableType.MainTable ? true : r.ReturnQty != 0));
sumdetail.itemCode = wmsProductReceiptNoteDetail.ItemCode;
sumdetail.locationCode = wmsProductReceiptNoteDetail.LocationErpCode;
sumdetail.Qty = wmsProductReceiptNoteDetail.Qty;
sumdetail.BadQty = wmsProductReceiptNoteDetail.ReturnQty;
sumdetail.Memo = wmsProductReceiptNoteDetail.Remark;
sumdetail.MesGuid = incomingFromExternal.SourceDataId;
sumDetails.Add(sumdetail);
if (oldNoteDetail != null) if (oldNoteDetail != null)
{ {
oldNoteDetail.Qty = oldNoteDetail.Qty + wmsProductReceiptNoteDetail.Qty; oldNoteDetail.Qty = oldNoteDetail.Qty + wmsProductReceiptNoteDetail.Qty;
oldNoteDetail.ReturnQty = oldNoteDetail.ReturnQty + wmsProductReceiptNoteDetail.ReturnQty;
} }
else else
{ {
@ -141,6 +154,8 @@ public class MesOutConverter : IIncomingConverter
wmsProductReceiptNote.Details.Add(wmsProductReceiptNoteDetail); wmsProductReceiptNote.Details.Add(wmsProductReceiptNoteDetail);
} }
} }
wmsProductReceiptNote.ExtraProperties = new ExtraPropertyDictionary();
wmsProductReceiptNote.ExtraProperties.Add(first.SourceDataGroupCode, JsonSerializer.Serialize(sumDetails));
incomingToWms.DataContent = JsonSerializer.Serialize(wmsProductReceiptNote); incomingToWms.DataContent = JsonSerializer.Serialize(wmsProductReceiptNote);
incomingToWmsList.Add(incomingToWms); incomingToWmsList.Add(incomingToWms);
} }

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

@ -119,6 +119,11 @@ public class MesOutReader : IReader
DestinationSystem = EnumSystemType.WMS.ToString(), DestinationSystem = EnumSystemType.WMS.ToString(),
}; };
//返喷数不为零用tabletype标志出来,用于后续汇总
if (mesOut.Mesout_bad != 0)
{
incomingData.TableType = EnumExchangeTableType.MainTable;
}
return incomingData; return incomingData;
} }

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

@ -1,8 +1,8 @@
{ {
"ConnectionStrings": { "ConnectionStrings": {
"Default": "Server=10.164.113.32,1818\\SHDB;Database=Wms_Dy_ShangHai;uid=ShWmsUser;pwd=Faty@Wms_20230413#SH;TrustServerCertificate=True", "Default": "Server=10.164.113.32,1818\\SHDB;Database=Wms_Dy_ShangHai;uid=ShWmsUser;pwd=Faty@Wms_20230413#SH;TrustServerCertificate=True;Encrypt=false",
"DataExchange": "Server=10.164.113.32,1818\\SHDB;Database=Wms_DataExchange_Main_Dy_ShangHai;uid=ShWmsUser;pwd=Faty@Wms_20230413#SH;TrustServerCertificate=True", "DataExchange": "Server=10.164.113.32,1818\\SHDB;Database=Wms_DataExchange_Main_Dy_ShangHai;uid=ShWmsUser;pwd=Faty@Wms_20230413#SH;TrustServerCertificate=True;Encrypt=false",
"MES": "Server=10.164.113.32,1818\\SHDB;Database=MES_SH;uid=ShWmsUser;pwd=Faty@Wms_20230413#SH;TrustServerCertificate=True" "MES": "Server=10.164.113.32,1818\\SHDB;Database=MES_SH;uid=ShWmsUser;pwd=Faty@Wms_20230413#SH;TrustServerCertificate=True;Encrypt=false"
}, },
"AuthServer": { "AuthServer": {

6
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/FawtygAutoMapperProfile.cs

@ -20,10 +20,13 @@ using Win_in.Sfs.Wms.DataExchange.WMS.ProductionReturnNote;
using Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote; using Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote;
using Win_in.Sfs.Wms.DataExchange.WMS.ProductRecycleNote; using Win_in.Sfs.Wms.DataExchange.WMS.ProductRecycleNote;
using Win_in.Sfs.Wms.DataExchange.WMS.PurchaseOrder; using Win_in.Sfs.Wms.DataExchange.WMS.PurchaseOrder;
using Win_in.Sfs.Wms.DataExchange.WMS.PurchasePrice;
using Win_in.Sfs.Wms.DataExchange.WMS.PurchaseReturn; using Win_in.Sfs.Wms.DataExchange.WMS.PurchaseReturn;
using Win_in.Sfs.Wms.DataExchange.WMS.PutawayNote; using Win_in.Sfs.Wms.DataExchange.WMS.PutawayNote;
using Win_in.Sfs.Wms.DataExchange.WMS.RecycledMaterialReceiptNote; using Win_in.Sfs.Wms.DataExchange.WMS.RecycledMaterialReceiptNote;
using Win_in.Sfs.Wms.DataExchange.WMS.SalePrice;
using Win_in.Sfs.Wms.DataExchange.WMS.ScrapNote; using Win_in.Sfs.Wms.DataExchange.WMS.ScrapNote;
using Win_in.Sfs.Wms.DataExchange.WMS.StdCostPrice;
using Win_in.Sfs.Wms.DataExchange.WMS.Supplier; using Win_in.Sfs.Wms.DataExchange.WMS.Supplier;
using Win_in.Sfs.Wms.DataExchange.WMS.TransferNote; using Win_in.Sfs.Wms.DataExchange.WMS.TransferNote;
using Win_in.Sfs.Wms.DataExchange.WMS.UnplannedIssueNote; using Win_in.Sfs.Wms.DataExchange.WMS.UnplannedIssueNote;
@ -107,6 +110,9 @@ public class FawtygAutoMapperProfile : Profile
CreateMap<BomDTO, BomExchangeDto>(); CreateMap<BomDTO, BomExchangeDto>();
CreateMap<SupplierExchangeDto, SupplierEditInput>(); CreateMap<SupplierExchangeDto, SupplierEditInput>();
CreateMap<CustomerExchangeDto, CustomerEditInput>(); CreateMap<CustomerExchangeDto, CustomerEditInput>();
CreateMap<PurchasePriceExchangeDto, PurchasePriceSheetEditInput>();
CreateMap<SalePriceExchangeDto, SalePriceSheetEditInput>();
CreateMap<StdCostPriceExchangeDto, StdCostPriceSheetEditInput>();
CreateMap<ProductRecycleNoteDTO, ProductRecycleNoteEditInput>(); CreateMap<ProductRecycleNoteDTO, ProductRecycleNoteEditInput>();
CreateMap<ProductRecycleNoteDetailDTO, ProductRecycleNoteDetailInput>(); CreateMap<ProductRecycleNoteDetailDTO, ProductRecycleNoteDetailInput>();

75
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/PurchasePriceConverter.cs

@ -0,0 +1,75 @@
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Volo.Abp.Guids;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.WMS.PurchasePrice;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent.Incoming;
public class PurchasePriceConverter : IIncomingConverter
{
private readonly IIncomingToWmsManager _incomingToWmsManager;
private readonly IObjectMapper _objectMapper;
private readonly ILogger<PurchasePriceConverter> _logger;
private readonly IGuidGenerator _guidGenerator;
private readonly IIncomingFromExternalManager _incomingFromExternalManager;
public PurchasePriceConverter(
IIncomingToWmsManager incomingToWmsManager,
IObjectMapper objectMapper,
ILogger<PurchasePriceConverter> logger,
IGuidGenerator guidGenerator
,
IIncomingFromExternalManager incomingFromExternalManager
)
{
_incomingToWmsManager = incomingToWmsManager;
_objectMapper = objectMapper;
_logger = logger;
_guidGenerator = guidGenerator;
_incomingFromExternalManager = incomingFromExternalManager;
}
public virtual async Task ConvertAsync(List<IncomingFromExternal> incomingFromExternalList)
{
if (!incomingFromExternalList.Any())
{
_logger.LogInformation("无采购价格转换");
return;
}
var incomingToWmsDataList = await BuildIncomingToWmsOfPurchaseOrderAsync(incomingFromExternalList).ConfigureAwait(false);
await _incomingToWmsManager.CreateBulkAsync(incomingToWmsDataList).ConfigureAwait(false);
//归档
await _incomingFromExternalManager.ArchiveManyAsync(incomingFromExternalList).ConfigureAwait(false);
}
private async Task<List<IncomingToWms>> BuildIncomingToWmsOfPurchaseOrderAsync(List<IncomingFromExternal> incomingDataList)
{
await Task.CompletedTask.ConfigureAwait(false);
var incomingToWmsList = new List<IncomingToWms>();
var groups = incomingDataList.GroupBy(p => p.SourceDataGroupCode);
foreach (var group in groups)
{
var first = group.First();
var incomingToWms = new IncomingToWms()
{
DataType = first.DataType,
DataAction = first.DataAction,
SourceSystem = first.SourceSystem,
DataIdentityCode = first.SourceDataGroupCode,
};
incomingToWms.SetId(_guidGenerator.Create());
incomingToWms.SetEffectiveDate(first.EffectiveDate);
var exchangePurchasePrice = JsonSerializer.Deserialize<PurchasePriceExchangeDto>(first.DestinationDataContent);
var wmsPurchasePrice = _objectMapper.Map<PurchasePriceExchangeDto, PurchasePriceSheetEditInput>(exchangePurchasePrice);
incomingToWms.DataContent = JsonSerializer.Serialize(wmsPurchasePrice);
incomingToWmsList.Add(incomingToWms);
}
return incomingToWmsList;
}
}

133
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/PurchasePriceReader.cs

@ -0,0 +1,133 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Volo.Abp.Guids;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
using Win_in.Sfs.Wms.DataExchange.Domain.Shared;
using Win_in.Sfs.Wms.DataExchange.WMS.PurchasePrice;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent.Incoming;
public class PurchasePriceReader : IReader
{
private readonly IPurchasePriceManager _iPurchasePriceManager;
private readonly IIncomingFromExternalManager _incomingFromExternalManager;
private readonly ILogger<PurchasePriceReader> _logger;
private readonly IGuidGenerator _guidGenerator;
private readonly IConfiguration _configuration;
private readonly IPurchasePriceSheetAppService _purchasePriceAppService;
private readonly IObjectMapper _objectMapper;
public PurchasePriceReader(
IPurchasePriceManager iPurchasePriceManager
, IIncomingFromExternalManager incomingFromExternalManager
, IGuidGenerator guidGenerator
, ILogger<PurchasePriceReader> logger
, IConfiguration configuration,
IPurchasePriceSheetAppService purchasePriceSheetAppService,
IObjectMapper objectMapper
)
{
_guidGenerator = guidGenerator;
_configuration = configuration;
_iPurchasePriceManager = iPurchasePriceManager;
_incomingFromExternalManager = incomingFromExternalManager;
_logger = logger;
_purchasePriceAppService = purchasePriceSheetAppService;
_objectMapper = objectMapper;
}
public virtual async Task<List<IncomingFromExternal>> ReadAsync()
{
//从Tyrp读取待处理PurchasePrice
var toBeProcessedPurchasePrices = await _iPurchasePriceManager.GetToBeProcessedListAsync().ConfigureAwait(false);
if (!toBeProcessedPurchasePrices.Any())
{
_logger.LogInformation("no PurchasePrices");
return new List<IncomingFromExternal>();
}
//获取wms采购单价数据
SfsBaseDataRequestInputBase input = new SfsBaseDataRequestInputBase();
var wmsPurchasePrices = await _purchasePriceAppService.GetAllListByFilterAsync(input).ConfigureAwait(false);
var wmsToPurchasePriceExchangeDtos = _objectMapper.Map<List<PurchasePriceSheetDTO>, List<PurchasePriceExchangeDto>>(wmsPurchasePrices);
List<PurchasePriceExchangeDto> eosToBomExchangeDtos = new List<PurchasePriceExchangeDto>();
foreach (var toBeProcessedPurchasePrice in toBeProcessedPurchasePrices)
{
var purchasePrice = BuildScrapNoteOrderExchangeMes(toBeProcessedPurchasePrice);
eosToBomExchangeDtos.Add(purchasePrice);
}
//和wms和eos数据进行比较,获取需要处理得数据
var updateDatas = eosToBomExchangeDtos.Except(wmsToPurchasePriceExchangeDtos).ToList();
if (!updateDatas.Any())
{
_logger.LogInformation("no PurchasePrices");
return new List<IncomingFromExternal>();
}
//PurchasePrice逐一转换为PurchasePrice
var incomingDataList = BuildIncomingFromExternalFromBomAsync(updateDatas, toBeProcessedPurchasePrices);
await _incomingFromExternalManager.CreateBulkAsync(incomingDataList).ConfigureAwait(false);
return incomingDataList;
}
private List<IncomingFromExternal> BuildIncomingFromExternalFromBomAsync(List<PurchasePriceExchangeDto> updateDatas,List<ismout> toBeProcessedPurchasePrices)
{
var incomingDataList = new List<IncomingFromExternal>();
foreach (var data in updateDatas)
{
var item = toBeProcessedPurchasePrices.FirstOrDefault(r => r.ismout_part == data.ItemCode && r.ismout_vend == data.SupplierCode);
var incomingData = BuildIncomingFromExternal(item);
incomingData.SetEffectiveDate(DateTime.Now);
try
{
incomingData.DestinationDataContent = JsonSerializer.Serialize(data);
incomingData.SetId(_guidGenerator.Create());
}
catch (Exception ex)
{
incomingData.SetError(EnumExchangeDataErrorCode.Exception, ex.Message, ex.ToString());
}
incomingDataList.Add(incomingData);
}
return incomingDataList;
}
private IncomingFromExternal BuildIncomingFromExternal(ismout PurchasePrice)
{
var incomingData = new IncomingFromExternal()
{
DataType = EnumIncomingDataType.PurchasePrice.ToString(),
DataAction = EnumExchangeDataAction.Add,
SourceSystem = EnumSystemType.ERP.ToString(),
SourceDataId = PurchasePrice.ismout_part,
SourceDataGroupCode = PurchasePrice.ismout_part,
SourceDataDetailCode = PurchasePrice.ismout_vend,
SourceDataContent = JsonSerializer.Serialize(PurchasePrice),
WriteTime = DateTime.Now,
Writer = nameof(TyrpIncomingBackgroundWorker),
DestinationSystem = EnumSystemType.ERP.ToString(),
};
return incomingData;
}
private static PurchasePriceExchangeDto BuildScrapNoteOrderExchangeMes(ismout PurchasePrice)
{
var price = new PurchasePriceExchangeDto()
{
ItemCode = PurchasePrice.ismout_part,
SupplierCode = PurchasePrice.ismout_vend,
PurchasePrice = PurchasePrice.ismout_price,
Description = "接口同步",
};
return price;
}
}

74
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/SalePriceConverter.cs

@ -0,0 +1,74 @@
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Volo.Abp.Guids;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.WMS.SalePrice;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent.Incoming;
public class SalePriceConverter : IIncomingConverter
{
private readonly IIncomingToWmsManager _incomingToWmsManager;
private readonly IObjectMapper _objectMapper;
private readonly ILogger<SalePriceConverter> _logger;
private readonly IGuidGenerator _guidGenerator;
private readonly IIncomingFromExternalManager _incomingFromExternalManager;
public SalePriceConverter(
IIncomingToWmsManager incomingToWmsManager,
IObjectMapper objectMapper,
ILogger<SalePriceConverter> logger,
IGuidGenerator guidGenerator
,
IIncomingFromExternalManager incomingFromExternalManager
)
{
_incomingToWmsManager = incomingToWmsManager;
_objectMapper = objectMapper;
_logger = logger;
_guidGenerator = guidGenerator;
_incomingFromExternalManager = incomingFromExternalManager;
}
public virtual async Task ConvertAsync(List<IncomingFromExternal> incomingFromExternalList)
{
if (!incomingFromExternalList.Any())
{
_logger.LogInformation("无销售价格转换");
return;
}
var incomingToWmsDataList = await BuildIncomingToWmsOfPurchaseOrderAsync(incomingFromExternalList).ConfigureAwait(false);
await _incomingToWmsManager.CreateBulkAsync(incomingToWmsDataList).ConfigureAwait(false);
//归档
await _incomingFromExternalManager.ArchiveManyAsync(incomingFromExternalList).ConfigureAwait(false);
}
private async Task<List<IncomingToWms>> BuildIncomingToWmsOfPurchaseOrderAsync(List<IncomingFromExternal> incomingDataList)
{
await Task.CompletedTask.ConfigureAwait(false);
var incomingToWmsList = new List<IncomingToWms>();
var groups = incomingDataList.GroupBy(p => p.SourceDataGroupCode);
foreach (var group in groups)
{
var first = group.First();
var incomingToWms = new IncomingToWms()
{
DataType = first.DataType,
DataAction = first.DataAction,
SourceSystem = first.SourceSystem,
DataIdentityCode = first.SourceDataGroupCode,
};
incomingToWms.SetId(_guidGenerator.Create());
incomingToWms.SetEffectiveDate(first.EffectiveDate);
var exchangeSalePrice = JsonSerializer.Deserialize<SalePriceExchangeDto>(first.DestinationDataContent);
var wmsSalePrice = _objectMapper.Map<SalePriceExchangeDto, SalePriceSheetEditInput>(exchangeSalePrice);
incomingToWms.DataContent = JsonSerializer.Serialize(wmsSalePrice);
incomingToWmsList.Add(incomingToWms);
}
return incomingToWmsList;
}
}

132
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/SalePriceReader.cs

@ -0,0 +1,132 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Volo.Abp.Guids;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
using Win_in.Sfs.Wms.DataExchange.Domain.Shared;
using Win_in.Sfs.Wms.DataExchange.WMS.SalePrice;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent.Incoming;
public class SalePriceReader : IReader
{
private readonly ISalePriceManager _iSalePriceManager;
private readonly IIncomingFromExternalManager _incomingFromExternalManager;
private readonly ILogger<SalePriceReader> _logger;
private readonly IGuidGenerator _guidGenerator;
private readonly IConfiguration _configuration;
private readonly ISalePriceSheetAppService _SalePriceAppService;
private readonly IObjectMapper _objectMapper;
public SalePriceReader(
ISalePriceManager iSalePriceManager
, IIncomingFromExternalManager incomingFromExternalManager
, IGuidGenerator guidGenerator
, ILogger<SalePriceReader> logger
, IConfiguration configuration,
ISalePriceSheetAppService SalePriceSheetAppService,
IObjectMapper objectMapper
)
{
_guidGenerator = guidGenerator;
_configuration = configuration;
_iSalePriceManager = iSalePriceManager;
_incomingFromExternalManager = incomingFromExternalManager;
_logger = logger;
_SalePriceAppService = SalePriceSheetAppService;
_objectMapper = objectMapper;
}
public virtual async Task<List<IncomingFromExternal>> ReadAsync()
{
//从Tyrp读取待处理SalePrice
var toBeProcessedSalePrices = await _iSalePriceManager.GetToBeProcessedListAsync().ConfigureAwait(false);
if (!toBeProcessedSalePrices.Any())
{
_logger.LogInformation("no SalePrices");
return new List<IncomingFromExternal>();
}
//获取wms销售单价数据
SfsBaseDataRequestInputBase input = new SfsBaseDataRequestInputBase();
var wmsSalePrices = await _SalePriceAppService.GetAllListByFilterAsync(input).ConfigureAwait(false);
var wmsToSalePriceExchangeDtos = _objectMapper.Map<List<SalePriceSheetDTO>, List<SalePriceExchangeDto>>(wmsSalePrices);
List<SalePriceExchangeDto> eosToBomExchangeDtos = new List<SalePriceExchangeDto>();
foreach (var toBeProcessedSalePrice in toBeProcessedSalePrices)
{
var SalePrice = BuildScrapNoteOrderExchangeMes(toBeProcessedSalePrice);
eosToBomExchangeDtos.Add(SalePrice);
}
//和wms和eos数据进行比较,获取需要处理得数据
var updateDatas = eosToBomExchangeDtos.Except(wmsToSalePriceExchangeDtos).ToList();
if (!updateDatas.Any())
{
_logger.LogInformation("no SalePrices");
return new List<IncomingFromExternal>();
}
//SalePrice逐一转换为SalePrice
var incomingDataList = BuildIncomingFromExternalFromBomAsync(updateDatas, toBeProcessedSalePrices);
await _incomingFromExternalManager.CreateBulkAsync(incomingDataList).ConfigureAwait(false);
return incomingDataList;
}
private List<IncomingFromExternal> BuildIncomingFromExternalFromBomAsync(List<SalePriceExchangeDto> updateDatas, List<spriceout> toBeProcessedSalePrices)
{
var incomingDataList = new List<IncomingFromExternal>();
foreach (var data in updateDatas)
{
var item = toBeProcessedSalePrices.FirstOrDefault(r => r.spriceout_part == data.ItemCode && r.spriceout_cust == data.CustomerCode);
var incomingData = BuildIncomingFromExternal(item);
incomingData.SetEffectiveDate(DateTime.Now);
try
{
incomingData.DestinationDataContent = JsonSerializer.Serialize(data);
incomingData.SetId(_guidGenerator.Create());
}
catch (Exception ex)
{
incomingData.SetError(EnumExchangeDataErrorCode.Exception, ex.Message, ex.ToString());
}
incomingDataList.Add(incomingData);
}
return incomingDataList;
}
private IncomingFromExternal BuildIncomingFromExternal(spriceout SalePrice)
{
var incomingData = new IncomingFromExternal()
{
DataType = EnumIncomingDataType.SalePrice.ToString(),
DataAction = EnumExchangeDataAction.Add,
SourceSystem = EnumSystemType.ERP.ToString(),
SourceDataId = SalePrice.spriceout_part,
SourceDataGroupCode = SalePrice.spriceout_part,
SourceDataDetailCode = SalePrice.spriceout_cust,
SourceDataContent = JsonSerializer.Serialize(SalePrice),
WriteTime = DateTime.Now,
Writer = nameof(TyrpIncomingBackgroundWorker),
DestinationSystem = EnumSystemType.ERP.ToString(),
};
return incomingData;
}
private static SalePriceExchangeDto BuildScrapNoteOrderExchangeMes(spriceout SalePrice)
{
var price = new SalePriceExchangeDto()
{
ItemCode = SalePrice.spriceout_part,
CustomerCode = SalePrice.spriceout_cust,
SalePrice = SalePrice.spriceout_price,
Description = "接口同步",
};
return price;
}
}

75
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/StdCostPriceConverter.cs

@ -0,0 +1,75 @@
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Volo.Abp.Guids;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.WMS.StdCostPrice;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent.Incoming;
public class StdCostPriceConverter : IIncomingConverter
{
private readonly IIncomingToWmsManager _incomingToWmsManager;
private readonly IObjectMapper _objectMapper;
private readonly ILogger<StdCostPriceConverter> _logger;
private readonly IGuidGenerator _guidGenerator;
private readonly IIncomingFromExternalManager _incomingFromExternalManager;
public StdCostPriceConverter(
IIncomingToWmsManager incomingToWmsManager,
IObjectMapper objectMapper,
ILogger<StdCostPriceConverter> logger,
IGuidGenerator guidGenerator
,
IIncomingFromExternalManager incomingFromExternalManager
)
{
_incomingToWmsManager = incomingToWmsManager;
_objectMapper = objectMapper;
_logger = logger;
_guidGenerator = guidGenerator;
_incomingFromExternalManager = incomingFromExternalManager;
}
public virtual async Task ConvertAsync(List<IncomingFromExternal> incomingFromExternalList)
{
if (!incomingFromExternalList.Any())
{
_logger.LogInformation("无标准成本价格转换");
return;
}
var incomingToWmsDataList = await BuildIncomingToWmsOfPurchaseOrderAsync(incomingFromExternalList).ConfigureAwait(false);
await _incomingToWmsManager.CreateBulkAsync(incomingToWmsDataList).ConfigureAwait(false);
//归档
await _incomingFromExternalManager.ArchiveManyAsync(incomingFromExternalList).ConfigureAwait(false);
}
private async Task<List<IncomingToWms>> BuildIncomingToWmsOfPurchaseOrderAsync(List<IncomingFromExternal> incomingDataList)
{
await Task.CompletedTask.ConfigureAwait(false);
var incomingToWmsList = new List<IncomingToWms>();
var groups = incomingDataList.GroupBy(p => p.SourceDataGroupCode);
foreach (var group in groups)
{
var first = group.First();
var incomingToWms = new IncomingToWms()
{
DataType = first.DataType,
DataAction = first.DataAction,
SourceSystem = first.SourceSystem,
DataIdentityCode = first.SourceDataGroupCode,
};
incomingToWms.SetId(_guidGenerator.Create());
incomingToWms.SetEffectiveDate(first.EffectiveDate);
var exchangeStdCostPrice = JsonSerializer.Deserialize<StdCostPriceExchangeDto>(first.DestinationDataContent);
var wmsStdCostPrice = _objectMapper.Map<StdCostPriceExchangeDto, StdCostPriceSheetEditInput>(exchangeStdCostPrice);
incomingToWms.DataContent = JsonSerializer.Serialize(wmsStdCostPrice);
incomingToWmsList.Add(incomingToWms);
}
return incomingToWmsList;
}
}

131
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/StdCostPriceReader.cs

@ -0,0 +1,131 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Volo.Abp.Guids;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
using Win_in.Sfs.Wms.DataExchange.Domain.Shared;
using Win_in.Sfs.Wms.DataExchange.WMS.StdCostPrice;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent.Incoming;
public class StdCostPriceReader : IReader
{
private readonly IProductManager _productManager;
private readonly IIncomingFromExternalManager _incomingFromExternalManager;
private readonly ILogger<StdCostPriceReader> _logger;
private readonly IGuidGenerator _guidGenerator;
private readonly IConfiguration _configuration;
private readonly IStdCostPriceSheetAppService _StdCostPriceAppService;
private readonly IObjectMapper _objectMapper;
public StdCostPriceReader(
IProductManager productManager
, IIncomingFromExternalManager incomingFromExternalManager
, IGuidGenerator guidGenerator
, ILogger<StdCostPriceReader> logger
, IConfiguration configuration,
IStdCostPriceSheetAppService StdCostPriceSheetAppService,
IObjectMapper objectMapper
)
{
_guidGenerator = guidGenerator;
_configuration = configuration;
_productManager = productManager;
_incomingFromExternalManager = incomingFromExternalManager;
_logger = logger;
_StdCostPriceAppService = StdCostPriceSheetAppService;
_objectMapper = objectMapper;
}
public virtual async Task<List<IncomingFromExternal>> ReadAsync()
{
//从ERP读取待处理part
var toBeProcessedProducts = await _productManager.GetToBeProcessedListAsync().ConfigureAwait(false);
if (!toBeProcessedProducts.Any())
{
_logger.LogInformation("no StdCostPrices");
return new List<IncomingFromExternal>();
}
//获取wms标准成本单价数据
SfsBaseDataRequestInputBase input = new SfsBaseDataRequestInputBase();
var wmsStdCostPrices = await _StdCostPriceAppService.GetAllListByFilterAsync(input).ConfigureAwait(false);
var wmsToStdCostPriceExchangeDtos = _objectMapper.Map<List<StdCostPriceSheetDTO>, List<StdCostPriceExchangeDto>>(wmsStdCostPrices);
List<StdCostPriceExchangeDto> eosToBomExchangeDtos = new List<StdCostPriceExchangeDto>();
foreach (var toBeProcessedProduct in toBeProcessedProducts)
{
var StdCostPrice = BuildScrapNoteOrderExchangeMes(toBeProcessedProduct);
eosToBomExchangeDtos.Add(StdCostPrice);
}
//和wms和eos数据进行比较,获取需要处理得数据
var updateDatas = eosToBomExchangeDtos.Except(wmsToStdCostPriceExchangeDtos).ToList();
if (!updateDatas.Any())
{
_logger.LogInformation("no StdCostPrices");
return new List<IncomingFromExternal>();
}
//StdCostPrice逐一转换为StdCostPrice
var incomingDataList = BuildIncomingFromExternalFromBomAsync(updateDatas, toBeProcessedProducts);
await _incomingFromExternalManager.CreateBulkAsync(incomingDataList).ConfigureAwait(false);
return incomingDataList;
}
private List<IncomingFromExternal> BuildIncomingFromExternalFromBomAsync(List<StdCostPriceExchangeDto> updateDatas, List<mes_product> toBeProcessedProducts)
{
var incomingDataList = new List<IncomingFromExternal>();
foreach (var data in updateDatas)
{
var item = toBeProcessedProducts.FirstOrDefault(r => r.mes_product_part == data.ItemCode);
var incomingData = BuildIncomingFromExternal(item);
incomingData.SetEffectiveDate(DateTime.Now);
try
{
incomingData.DestinationDataContent = JsonSerializer.Serialize(data);
incomingData.SetId(_guidGenerator.Create());
}
catch (Exception ex)
{
incomingData.SetError(EnumExchangeDataErrorCode.Exception, ex.Message, ex.ToString());
}
incomingDataList.Add(incomingData);
}
return incomingDataList;
}
private IncomingFromExternal BuildIncomingFromExternal(mes_product product)
{
var incomingData = new IncomingFromExternal()
{
DataType = EnumIncomingDataType.StdCostPrice.ToString(),
DataAction = EnumExchangeDataAction.Add,
SourceSystem = EnumSystemType.ERP.ToString(),
SourceDataId = product.mes_product_part_ser.ToString(),
SourceDataGroupCode = product.mes_product_part,
SourceDataDetailCode = product.mes_product_part,
SourceDataContent = JsonSerializer.Serialize(product),
WriteTime = DateTime.Now,
Writer = nameof(TyrpIncomingBackgroundWorker),
DestinationSystem = EnumSystemType.ERP.ToString(),
};
return incomingData;
}
private static StdCostPriceExchangeDto BuildScrapNoteOrderExchangeMes(mes_product product)
{
var price = new StdCostPriceExchangeDto()
{
ItemCode = product.mes_product_part,
StdCostPrice = product.mes_product_price_std,
Description = "接口同步",
};
return price;
}
}

24
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Incoming/TyrpIncomingBackgroundWorker.cs

@ -126,6 +126,30 @@ public class TyrpIncomingBackgroundWorker : AsyncPeriodicBackgroundWorkerBase
var customersFromExternalList = await CustomerReader.ReadAsync().ConfigureAwait(false); var customersFromExternalList = await CustomerReader.ReadAsync().ConfigureAwait(false);
//转换Customer //转换Customer
await CustomerConverter.ConvertAsync(customersFromExternalList).ConfigureAwait(false); await CustomerConverter.ConvertAsync(customersFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"Read PurchasePrice");//采购价格
var PurchasePriceReader = workerContext.ServiceProvider.GetRequiredService<PurchasePriceReader>();
var PurchasePriceConverter = workerContext.ServiceProvider.GetRequiredService<PurchasePriceConverter>();
//读取并保存PurchasePrice
var purchasePriceFromExternalList = await PurchasePriceReader.ReadAsync().ConfigureAwait(false);
//转换PurchasePrice
await PurchasePriceConverter.ConvertAsync(purchasePriceFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"Read SalePrice");//销售价格
var SalePriceReader = workerContext.ServiceProvider.GetRequiredService<SalePriceReader>();
var SalePriceConverter = workerContext.ServiceProvider.GetRequiredService<SalePriceConverter>();
//读取并保存SalePrice
var salePriceFromExternalList = await SalePriceReader.ReadAsync().ConfigureAwait(false);
//转换SalePrice
await SalePriceConverter.ConvertAsync(salePriceFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"Read StdCostPrice");//标准成本价格
var StdCostPriceReader = workerContext.ServiceProvider.GetRequiredService<StdCostPriceReader>();
var StdCostPriceConverter = workerContext.ServiceProvider.GetRequiredService<StdCostPriceConverter>();
//读取并保存StdCostPrice
var stdCostPriceFromExternalList = await StdCostPriceReader.ReadAsync().ConfigureAwait(false);
//转换StdCostPrice
await StdCostPriceConverter.ConvertAsync(stdCostPriceFromExternalList).ConfigureAwait(false);
} }
else else
{ {

67
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Outgoing/DeliverNoteConverter.cs

@ -4,6 +4,7 @@ using System.Linq;
using System.Text.Json; using System.Text.Json;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.ObjectMapping; using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Wms.DataExchange.Domain; using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp;
using Win_in.Sfs.Wms.DataExchange.Domain.Shared; using Win_in.Sfs.Wms.DataExchange.Domain.Shared;
@ -19,16 +20,19 @@ public class DeliverNoteConverter : IOutgoingConverter
private readonly IOutgoingToExternalManager _outgoingToExternalManager; private readonly IOutgoingToExternalManager _outgoingToExternalManager;
// private readonly IUserDepartmentAppService _departmentAppService; // private readonly IUserDepartmentAppService _departmentAppService;
private readonly IObjectMapper _objectMapper; private readonly IObjectMapper _objectMapper;
private readonly ISalePriceSheetAppService _salePriceSheetAppService;
public DeliverNoteConverter( public DeliverNoteConverter(
IOutgoingFromWmsManager outgoingFromWmsManager IOutgoingFromWmsManager outgoingFromWmsManager
, IOutgoingToExternalManager outgoingToExternalManager , IOutgoingToExternalManager outgoingToExternalManager
, IObjectMapper objectMapper , IObjectMapper objectMapper,
ISalePriceSheetAppService salePriceSheetAppService
) )
{ {
_outgoingFromWmsManager = outgoingFromWmsManager; _outgoingFromWmsManager = outgoingFromWmsManager;
_outgoingToExternalManager = outgoingToExternalManager; _outgoingToExternalManager = outgoingToExternalManager;
_objectMapper = objectMapper; _objectMapper = objectMapper;
_salePriceSheetAppService = salePriceSheetAppService;
} }
/// <summary> /// <summary>
@ -40,38 +44,22 @@ public class DeliverNoteConverter : IOutgoingConverter
var outgoingToExternalList = new List<OutgoingToExternal>(); var outgoingToExternalList = new List<OutgoingToExternal>();
//获取要同步得数据 //获取要同步得数据
var outgoingFromWmsList = await _outgoingFromWmsManager.GetToBeProcessedListAsync(EnumOutgoingDataType.Deliver, EnumSystemType.ERP).ConfigureAwait(false); var outgoingFromWmsList = await _outgoingFromWmsManager.GetToBeProcessedListAsync(EnumOutgoingDataType.Deliver, EnumSystemType.ERP).ConfigureAwait(false);
List<OutgoingFromWms> outgoingFromWmsToTyrp = new List<OutgoingFromWms>();//待传列表
foreach (var outgoingFromWms in outgoingFromWmsList) foreach (var outgoingFromWms in outgoingFromWmsList)
{ {
bool flag = true;//用于标注是否同步,如果没有销售价格不同步
string tyrpNumber = outgoingFromWms.TyrpNumber; string tyrpNumber = outgoingFromWms.TyrpNumber;
#region 主表
var wmsReceipt = JsonSerializer.Deserialize<DeliverNoteDTO>(outgoingFromWms.DataContent); var wmsReceipt = JsonSerializer.Deserialize<DeliverNoteDTO>(outgoingFromWms.DataContent);
var exchangeReceipt = _objectMapper.Map<DeliverNoteDTO, DeliverNoteExchangeDto>(wmsReceipt);
var purchaseOrder = BuildDataInterface(exchangeReceipt, tyrpNumber);
var outgoingToExternal = new OutgoingToExternal()
{
DataType = EnumOutgoingDataType.Deliver.ToString(),
TableType = EnumExchangeTableType.MainTable,
DataAction = outgoingFromWms.DataAction,
SerialNumber=tyrpNumber,
SourceSystem = EnumSystemType.WMS.ToString(),
SourceDataId = wmsReceipt.Id.ToString(),
SourceDataGroupCode = wmsReceipt.Number,
SourceDataDetailCode = wmsReceipt.Number,
Writer = nameof(TyrpOutgoingBackgroundWorker),
DestinationSystem = EnumSystemType.ERP.ToString(),
DestinationDataId = "",
};
outgoingToExternal.SetEffectiveDate(outgoingFromWms.EffectiveDate);
outgoingToExternal.SourceDataContent = JsonSerializer.Serialize(exchangeReceipt);
outgoingToExternal.DestinationDataContent = JsonSerializer.Serialize(purchaseOrder);
outgoingToExternalList.Add(outgoingToExternal);
#endregion
#region 明细 #region 明细
var WipDetails = wmsReceipt.Details.GroupBy(r => new { r.Number, r.ItemCode, r.FromLocationErpCode }).Select(p => new DeliverNoteDetailExchangeDto { Qty = p.Sum(itm => itm.Qty), Number = p.Key.Number, ItemCode = p.Key.ItemCode, FromLocationErpCode = p.Key.FromLocationErpCode }); var WipDetails = wmsReceipt.Details.GroupBy(r => new { r.Number, r.ItemCode, r.FromLocationErpCode }).Select(p => new DeliverNoteDetailExchangeDto { Qty = p.Sum(itm => itm.Qty), Number = p.Key.Number, ItemCode = p.Key.ItemCode, FromLocationErpCode = p.Key.FromLocationErpCode });
foreach (var detail in WipDetails) foreach (var detail in WipDetails)
{ {
var item= _salePriceSheetAppService.GetByItemCodeAndCustomerCode(detail.ItemCode, wmsReceipt.CustomerCode);
if (item==null)
{
flag = false;
continue;
}
var outgoingDetailToExternal = new OutgoingToExternal() var outgoingDetailToExternal = new OutgoingToExternal()
{ {
DataType = EnumOutgoingDataType.Deliver.ToString(), DataType = EnumOutgoingDataType.Deliver.ToString(),
@ -93,11 +81,38 @@ public class DeliverNoteConverter : IOutgoingConverter
outgoingToExternalList.Add(outgoingDetailToExternal); outgoingToExternalList.Add(outgoingDetailToExternal);
} }
#endregion #endregion
#region 主表
if (flag)
{
var exchangeReceipt = _objectMapper.Map<DeliverNoteDTO, DeliverNoteExchangeDto>(wmsReceipt);
var purchaseOrder = BuildDataInterface(exchangeReceipt, tyrpNumber);
var outgoingToExternal = new OutgoingToExternal()
{
DataType = EnumOutgoingDataType.Deliver.ToString(),
TableType = EnumExchangeTableType.MainTable,
DataAction = outgoingFromWms.DataAction,
SerialNumber = tyrpNumber,
SourceSystem = EnumSystemType.WMS.ToString(),
SourceDataId = wmsReceipt.Id.ToString(),
SourceDataGroupCode = wmsReceipt.Number,
SourceDataDetailCode = wmsReceipt.Number,
Writer = nameof(TyrpOutgoingBackgroundWorker),
DestinationSystem = EnumSystemType.ERP.ToString(),
DestinationDataId = "",
};
outgoingToExternal.SetEffectiveDate(outgoingFromWms.EffectiveDate);
outgoingToExternal.SourceDataContent = JsonSerializer.Serialize(exchangeReceipt);
outgoingToExternal.DestinationDataContent = JsonSerializer.Serialize(purchaseOrder);
outgoingToExternalList.Add(outgoingToExternal);
outgoingFromWmsToTyrp.Add(outgoingFromWms);//加入到待传列表
}
#endregion
} }
//插入到中间表OutgoingToExternal //插入到中间表OutgoingToExternal
await _outgoingToExternalManager.CreateManyAsync(outgoingToExternalList).ConfigureAwait(false); await _outgoingToExternalManager.CreateManyAsync(outgoingToExternalList).ConfigureAwait(false);
//将outgoingFromWms数据归档 //将outgoingFromWms数据归档
await _outgoingFromWmsManager.ArchiveManyAsync(outgoingFromWmsList).ConfigureAwait(false); await _outgoingFromWmsManager.ArchiveManyAsync(outgoingFromWmsToTyrp).ConfigureAwait(false);
return outgoingToExternalList; return outgoingToExternalList;
} }

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

@ -49,15 +49,15 @@ public class AgentModule : AbpModule
PreConfigure<AbpHttpClientBuilderOptions>(options => PreConfigure<AbpHttpClientBuilderOptions>(options =>
{ {
//Polly 重试3次 //Polly 重试3次
options.ProxyClientBuildActions.Add((remoteServiceName, clientBuilder) => //options.ProxyClientBuildActions.Add((remoteServiceName, clientBuilder) =>
{ //{
clientBuilder.AddTransientHttpErrorPolicy(policyBuilder => // clientBuilder.AddTransientHttpErrorPolicy(policyBuilder =>
policyBuilder.WaitAndRetryAsync( // policyBuilder.WaitAndRetryAsync(
3, // 3,
i => TimeSpan.FromSeconds(Math.Pow(2, i)) // i => TimeSpan.FromSeconds(Math.Pow(2, i))
) // )
); // );
}); //});
//默认添加Authorization Header: Bearer Token //默认添加Authorization Header: Bearer Token
options.ProxyClientActions.Add((a, s, h) => options.ProxyClientActions.Add((a, s, h) =>

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

@ -21,7 +21,7 @@ public static class IncomingToWmsExtensions
{ {
var purchaseOrder = JsonSerializer.Deserialize<PurchaseOrderEditInput>(incomingConverted.DataContent); var purchaseOrder = JsonSerializer.Deserialize<PurchaseOrderEditInput>(incomingConverted.DataContent);
var purchaseOrderAppService = workerContext.ServiceProvider.GetRequiredService<IPurchaseOrderAppService>(); var purchaseOrderAppService = workerContext.ServiceProvider.GetRequiredService<IPurchaseOrderAppService>();
await purchaseOrderAppService.CreateAsync(purchaseOrder).ConfigureAwait(false); await purchaseOrderAppService.CreateOrUpdateAsync(purchaseOrder).ConfigureAwait(false);
} }
public static async Task HandleAsnsAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext) public static async Task HandleAsnsAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext)
@ -126,7 +126,24 @@ public static class IncomingToWmsExtensions
var customerAppService = workerContext.ServiceProvider.GetRequiredService<ICustomerAppService>(); var customerAppService = workerContext.ServiceProvider.GetRequiredService<ICustomerAppService>();
await customerAppService.UpsertAsyncByInterface(customer).ConfigureAwait(false); await customerAppService.UpsertAsyncByInterface(customer).ConfigureAwait(false);
} }
public static async Task HandlePurchasePricesAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext)
{
var purchaseprice = JsonSerializer.Deserialize<PurchasePriceSheetEditInput>(incomingConverted.DataContent);
var purchasepriceAppService = workerContext.ServiceProvider.GetRequiredService<IPurchasePriceSheetAppService>();
await purchasepriceAppService.UpsertAsyncByInterface(purchaseprice).ConfigureAwait(false);
}
public static async Task HandleSalePricesAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext)
{
var saleprice = JsonSerializer.Deserialize<SalePriceSheetEditInput>(incomingConverted.DataContent);
var salepriceAppService = workerContext.ServiceProvider.GetRequiredService<ISalePriceSheetAppService>();
await salepriceAppService.UpsertAsyncByInterface(saleprice).ConfigureAwait(false);
}
public static async Task HandleStdCostPricesAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext)
{
var stdcostprice = JsonSerializer.Deserialize<StdCostPriceSheetEditInput>(incomingConverted.DataContent);
var stdcostpriceAppService = workerContext.ServiceProvider.GetRequiredService<IStdCostPriceSheetAppService>();
await stdcostpriceAppService.UpsertAsyncByInterface(stdcostprice).ConfigureAwait(false);
}
public static async Task HandleCustomerItemsAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext) public static async Task HandleCustomerItemsAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext)
{ {
var customerItem = JsonSerializer.Deserialize<CustomerItemEditInput>(incomingConverted.DataContent); var customerItem = JsonSerializer.Deserialize<CustomerItemEditInput>(incomingConverted.DataContent);

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

@ -141,6 +141,15 @@ public class IncomingToWmsWorker : AsyncPeriodicBackgroundWorkerBase
case EnumIncomingDataType.Customer: case EnumIncomingDataType.Customer:
await incomingToWms.HandleCustomersAsync(workerContext).ConfigureAwait(false); await incomingToWms.HandleCustomersAsync(workerContext).ConfigureAwait(false);
break; break;
case EnumIncomingDataType.PurchasePrice:
await incomingToWms.HandlePurchasePricesAsync(workerContext).ConfigureAwait(false);
break;
case EnumIncomingDataType.SalePrice:
await incomingToWms.HandleSalePricesAsync(workerContext).ConfigureAwait(false);
break;
case EnumIncomingDataType.StdCostPrice:
await incomingToWms.HandleStdCostPricesAsync(workerContext).ConfigureAwait(false);
break;
case EnumIncomingDataType.CustomerItem: case EnumIncomingDataType.CustomerItem:
await incomingToWms.HandleCustomerItemsAsync(workerContext).ConfigureAwait(false); await incomingToWms.HandleCustomerItemsAsync(workerContext).ConfigureAwait(false);
break; break;
@ -237,6 +246,8 @@ public class IncomingToWmsWorker : AsyncPeriodicBackgroundWorkerBase
if (!string.IsNullOrEmpty(_options.Value.IncomingOptions.apiUrl)) if (!string.IsNullOrEmpty(_options.Value.IncomingOptions.apiUrl))
{ {
var productReceiptJson = JsonSerializer.Deserialize<ProductReceiptNoteEditInput>(incomingToWms.DataContent); var productReceiptJson = JsonSerializer.Deserialize<ProductReceiptNoteEditInput>(incomingToWms.DataContent);
var memos = productReceiptJson.Details.Select(r => r.Remark).ToList();
string memostr = String.Join(", ", memos);
productReceiptJson.Worker = "Mes"; productReceiptJson.Worker = "Mes";
try try
{ {
@ -256,6 +267,7 @@ public class IncomingToWmsWorker : AsyncPeriodicBackgroundWorkerBase
// 读取响应内容并返回 // 读取响应内容并返回
string responseBody = await response.Content.ReadAsStringAsync().ConfigureAwait(false); string responseBody = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
Logger.LogInformation("标签" + memostr);
} }
catch (HttpRequestException ex) catch (HttpRequestException ex)
{ {

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

@ -42,14 +42,14 @@
"IncomingOptions": { "IncomingOptions": {
"Active": true, "Active": true,
"PeriodSeconds": 10, "PeriodSeconds": 10,
"RetryTimes": 3, "RetryTimes": 1,
"BatchSize": 100, "BatchSize": 100,
"apiUrl": "http://10.164.113.31:60085/" "apiUrl": "http://10.164.113.31:60085/"
}, },
"OutgoingOptions": { "OutgoingOptions": {
"Active": false, "Active": false,
"PeriodSeconds": 10, "PeriodSeconds": 10,
"RetryTimes": 3, "RetryTimes": 1,
"BatchSize": 100, "BatchSize": 100,
"BaseUrl": "https://localhost:7034/test", "BaseUrl": "https://localhost:7034/test",
"Username": "username", "Username": "username",

52
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/ProductReceiptNote/ProductReceiptNoteSumDetailExchangeDto.cs

@ -0,0 +1,52 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote;
public class ProductReceiptNoteSumDetailExchangeDto
{
/// <summary>
/// 零件编号
/// </summary>
[Display(Name = "零件编号")]
public string itemCode { get; set; }
/// <summary>
/// 库位编码
/// </summary>
[Display(Name = "零件编号")]
public string locationCode { get; set; }
/// <summary>
/// MesGuid
/// </summary>
[Display(Name = "MesGuid")]
public string MesGuid { get; set; }
/// <summary>
/// id
/// </summary>
[Display(Name = "id")]
public string Memo { get; set; }
/// <summary>
/// 生效日期
/// </summary>
[Display(Name = "生效日期")]
public DateTime CreatDate { get; set; } = DateTime.Now.Date;
/// <summary>
/// 数量
/// </summary>
[Display(Name = "数量")]
public decimal Qty { get; set; }
/// <summary>
/// 返喷数量
/// </summary>
[Display(Name = "返喷数量")]
public decimal BadQty { get; set; }
}

49
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/PurchasePrice/PurchasePriceExchangeDto.cs

@ -0,0 +1,49 @@
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Wms.DataExchange.WMS.Bom;
namespace Win_in.Sfs.Wms.DataExchange.WMS.PurchasePrice;
public class PurchasePriceExchangeDto
{
/// <summary>
/// 物品代码
/// </summary>
[Display(Name = "物品代码")]
[Required]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ItemCode { get; set; }
/// <summary>
/// 供应商编号
/// </summary>
[Display(Name = "供应商编号")]
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string SupplierCode { get; set; }
/// <summary>
/// 价格单描述
/// </summary>
public string Description { get; set; }
/// <summary>
/// 客户简称
/// </summary>
public decimal PurchasePrice { get; set; }
public override bool Equals(object obj)
{
if (obj is PurchasePriceExchangeDto)
{
PurchasePriceExchangeDto purchaseprice = obj as PurchasePriceExchangeDto;
return ItemCode == purchaseprice.ItemCode && SupplierCode == purchaseprice.SupplierCode && PurchasePrice == purchaseprice.PurchasePrice;
}
return false;
}
public override int GetHashCode()
{
return ItemCode.GetHashCode() ^ SupplierCode.GetHashCode() ^ PurchasePrice.GetHashCode();
}
}

55
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/SalePrice/SalePriceExchangeDto.cs

@ -0,0 +1,55 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using IdentityServer4.Models;
using System.Xml.Linq;
using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Wms.DataExchange.WMS.SalePrice;
public class SalePriceExchangeDto
{
/// <summary>
/// 物品代码
/// </summary>
[Display(Name = "物品代码")]
[Required]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ItemCode { get; set; }
/// <summary>
/// 客户编号
/// </summary>
[Display(Name = "客户编号")]
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string CustomerCode { get; set; }
/// <summary>
/// 价格单描述
/// </summary>
public string Description { get; set; }
/// <summary>
/// 销售价格
/// </summary>
public decimal SalePrice { get; set; }
public override bool Equals(object obj)
{
if (obj is SalePriceExchangeDto)
{
SalePriceExchangeDto saleprice = obj as SalePriceExchangeDto;
return ItemCode == saleprice.ItemCode && CustomerCode == saleprice.CustomerCode && SalePrice == saleprice.SalePrice;
}
return false;
}
public override int GetHashCode()
{
return ItemCode.GetHashCode() ^ CustomerCode.GetHashCode() ^ SalePrice.GetHashCode();
}
}

45
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/StdCostPrice/StdCostPriceExchangeDto.cs

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using IdentityServer4.Models;
using System.Xml.Linq;
using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Wms.DataExchange.WMS.StdCostPrice;
public class StdCostPriceExchangeDto
{
/// <summary>
/// 物品代码
/// </summary>
[Display(Name = "物品代码")]
[Required]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ItemCode { get; set; }
/// <summary>
/// 价格单描述
/// </summary>
public string Description { get; set; }
/// <summary>
/// 标准成本价
/// </summary>
public decimal StdCostPrice { get; set; }
public override bool Equals(object obj)
{
if (obj is StdCostPriceExchangeDto)
{
StdCostPriceExchangeDto scp = obj as StdCostPriceExchangeDto;
return ItemCode == scp.ItemCode && StdCostPrice == scp.StdCostPrice;
}
return false;
}
public override int GetHashCode()
{
return ItemCode.GetHashCode() ^ StdCostPrice.GetHashCode();
}
}

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

@ -841,6 +841,41 @@
明细列表 明细列表
</summary> </summary>
</member> </member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote.ProductReceiptNoteSumDetailExchangeDto.itemCode">
<summary>
零件编号
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote.ProductReceiptNoteSumDetailExchangeDto.locationCode">
<summary>
库位编码
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote.ProductReceiptNoteSumDetailExchangeDto.MesGuid">
<summary>
MesGuid
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote.ProductReceiptNoteSumDetailExchangeDto.Memo">
<summary>
id
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote.ProductReceiptNoteSumDetailExchangeDto.CreatDate">
<summary>
生效日期
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote.ProductReceiptNoteSumDetailExchangeDto.Qty">
<summary>
数量
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote.ProductReceiptNoteSumDetailExchangeDto.BadQty">
<summary>
返喷数量
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ProductRecycleNote.ProductRecycleMaterialDetailExchangeDto.ProductItemCode"> <member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ProductRecycleNote.ProductRecycleMaterialDetailExchangeDto.ProductItemCode">
<summary> <summary>
产成品物料号 产成品物料号
@ -991,6 +1026,26 @@
明细 明细
</summary> </summary>
</member> </member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.PurchasePrice.PurchasePriceExchangeDto.ItemCode">
<summary>
物品代码
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.PurchasePrice.PurchasePriceExchangeDto.SupplierCode">
<summary>
供应商编号
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.PurchasePrice.PurchasePriceExchangeDto.Description">
<summary>
价格单描述
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.PurchasePrice.PurchasePriceExchangeDto.PurchasePrice">
<summary>
客户简称
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.PurchaseReceipt.PurchaseReceiptNoteDetailExchangeDto.LocationErpCode"> <member name="P:Win_in.Sfs.Wms.DataExchange.WMS.PurchaseReceipt.PurchaseReceiptNoteDetailExchangeDto.LocationErpCode">
<summary> <summary>
库位组 库位组
@ -1256,6 +1311,26 @@
生效日期 生效日期
</summary> </summary>
</member> </member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.SalePrice.SalePriceExchangeDto.ItemCode">
<summary>
物品代码
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.SalePrice.SalePriceExchangeDto.CustomerCode">
<summary>
客户编号
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.SalePrice.SalePriceExchangeDto.Description">
<summary>
价格单描述
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.SalePrice.SalePriceExchangeDto.SalePrice">
<summary>
销售价格
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ScrapNote.ScrapNoteDetailExchangeDto.ToPackingCode"> <member name="P:Win_in.Sfs.Wms.DataExchange.WMS.ScrapNote.ScrapNoteDetailExchangeDto.ToPackingCode">
<summary> <summary>
目标箱码 目标箱码
@ -1356,6 +1431,21 @@
明细 明细
</summary> </summary>
</member> </member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.StdCostPrice.StdCostPriceExchangeDto.ItemCode">
<summary>
物品代码
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.StdCostPrice.StdCostPriceExchangeDto.Description">
<summary>
价格单描述
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.StdCostPrice.StdCostPriceExchangeDto.StdCostPrice">
<summary>
标准成本价
</summary>
</member>
<member name="P:Win_in.Sfs.Wms.DataExchange.WMS.SuppplierAsn.SupplierAsnDetailExchangeDto.Number"> <member name="P:Win_in.Sfs.Wms.DataExchange.WMS.SuppplierAsn.SupplierAsnDetailExchangeDto.Number">
<summary> <summary>
ASN单号 ASN单号

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

@ -98,5 +98,17 @@ public enum EnumIncomingDataType
/// 退货单 /// 退货单
/// </summary> /// </summary>
PurchaseReturn = 23, PurchaseReturn = 23,
/// <summary>
/// 采购价格
/// </summary>
PurchasePrice=24,
/// <summary>
/// 销售价格
/// </summary>
SalePrice = 25,
/// <summary>
/// 标准成本价格
/// </summary>
StdCostPrice=26,
} }

4
be/Hosts/Basedata.Host/Win_in.Sfs.Basedata.HttpApi.Host/Properties/PublishProfiles/FolderProfile.pubxml

@ -4,13 +4,13 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
--> -->
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<DeleteExistingFiles>true</DeleteExistingFiles> <DeleteExistingFiles>false</DeleteExistingFiles>
<ExcludeApp_Data>false</ExcludeApp_Data> <ExcludeApp_Data>false</ExcludeApp_Data>
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish> <LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration> <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform> <LastUsedPlatform>Any CPU</LastUsedPlatform>
<PublishProvider>FileSystem</PublishProvider> <PublishProvider>FileSystem</PublishProvider>
<PublishUrl>.\..\..\..\OutPut\BaseData\</PublishUrl> <PublishUrl>D:\发布\WMS\base</PublishUrl>
<WebPublishMethod>FileSystem</WebPublishMethod> <WebPublishMethod>FileSystem</WebPublishMethod>
<SiteUrlToLaunchAfterPublish /> <SiteUrlToLaunchAfterPublish />
<TargetFramework>net6.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>

4
be/Hosts/Wms.Host/Win_in.Sfs.Wms.Store.HttpApi.Host/Properties/PublishProfiles/FolderProfile.pubxml

@ -4,13 +4,13 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
--> -->
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<DeleteExistingFiles>true</DeleteExistingFiles> <DeleteExistingFiles>false</DeleteExistingFiles>
<ExcludeApp_Data>false</ExcludeApp_Data> <ExcludeApp_Data>false</ExcludeApp_Data>
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish> <LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration> <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform> <LastUsedPlatform>Any CPU</LastUsedPlatform>
<PublishProvider>FileSystem</PublishProvider> <PublishProvider>FileSystem</PublishProvider>
<PublishUrl>.\..\..\..\OutPut\StoreHost\</PublishUrl> <PublishUrl>D:\发布\WMS\store</PublishUrl>
<WebPublishMethod>FileSystem</WebPublishMethod> <WebPublishMethod>FileSystem</WebPublishMethod>
<SiteUrlToLaunchAfterPublish /> <SiteUrlToLaunchAfterPublish />
<TargetFramework>net6.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>

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

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<DeleteExistingFiles>False</DeleteExistingFiles>
<ExcludeApp_Data>False</ExcludeApp_Data>
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<PublishProvider>FileSystem</PublishProvider>
<PublishUrl>D:\~all-publish\WMS2.0_东阳\Win_in.Sfs.Wms.Store.HttpApi.Host</PublishUrl>
<WebPublishMethod>FileSystem</WebPublishMethod>
</PropertyGroup>
</Project>

64
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/BaseDatas/EquipmentController.cs

@ -0,0 +1,64 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.Json;
using Win_in.Sfs.Basedata.Application.Contracts;
namespace Win_in.Sfs.Wms.Pda.Controllers.BaseDatas;
/// <summary>
/// 器具控制器
/// </summary>
[ApiController]
[Route($"{PdaHostConst.ROOT_ROUTE}Equipment")]
public class EquipmentController : AbpController
{
private readonly IEquipmentAppService _dictApp;
private readonly IEquipmentLocAppService _locApp;
/// <summary>
///
/// </summary>
/// <param name="dictApp"></param>
public EquipmentController(IEquipmentAppService dictApp,
IEquipmentLocAppService locApp,
IOptions<AbpJsonOptions> options)
{
_locApp = locApp;
_dictApp = dictApp;
var str = options.Value.DefaultDateTimeFormat;
Console.WriteLine(str);
}
/// <summary>
/// 按代码获取字典
/// </summary>
/// <param name="code">字典代码</param>
/// <returns></returns>
[HttpGet("by-code")]
public virtual async Task<EquipmentDTO> GetByCodeAsync(string code)
{
var dtos = await _dictApp.GetByCodeAsync(code).ConfigureAwait(false);
return dtos;
}
[HttpGet("getLocs")]
public virtual async Task<List<string>> GetLocsAsync()
{
var dtos = await _locApp.GetLocsAsync().ConfigureAwait(false);
return dtos;
}
}

43
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/BaseDatas/KittingController.cs

@ -0,0 +1,43 @@
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.Json;
using Win_in.Sfs.Basedata.Application.Contracts;
namespace Win_in.Sfs.Wms.Pda.Controllers.BaseDatas;
/// <summary>
/// 器具控制器
/// </summary>
[ApiController]
[Route($"{PdaHostConst.ROOT_ROUTE}Kitting")]
public class KittingController : AbpController
{
private readonly IKittingAppService _dictApp;
/// <summary>
///
/// </summary>
/// <param name="dictApp"></param>
public KittingController(IKittingAppService dictApp,IOptions<AbpJsonOptions> options)
{
_dictApp = dictApp;
var str = options.Value.DefaultDateTimeFormat;
Console.WriteLine(str);
}
/// <summary>
/// 按代码获取字典
/// </summary>
/// <param name="code">字典代码</param>
/// <returns></returns>
[HttpGet("by-code")]
public virtual async Task<KittingDTO> GetByCodeAsync(string code)
{
var dtos = await _dictApp.GetByCodeAsync(code).ConfigureAwait(false);
return dtos;
}
}

40
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/BaseDatas/PositionCodeController.cs

@ -0,0 +1,40 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Pda.Controllers.BaseDatas;
/// <summary>
///
/// </summary>
[ApiController]
[Route($"{PdaHostConst.ROOT_ROUTE}position-code")]
public class PositionCodeController : AbpController
{
private readonly IPositionCodeAppService _positionCodeAppService;
/// <summary>
///
/// </summary>
/// <param name="locationAppService"></param>
public PositionCodeController(IPositionCodeAppService positionCodeAppService)
{
_positionCodeAppService = positionCodeAppService;
}
/// <summary>
/// 根据code获取库位信息
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
[HttpGet("{code}")]
public virtual async Task<PositionCodeDTO> GetAsync(string code)
{
var result = await _positionCodeAppService.GetByCodeAsync(code).ConfigureAwait(false);
return result;
}
}

42
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/BaseDatas/SplitPackingRecController.cs

@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.Json;
using Win_in.Sfs.Basedata.Application.Contracts;
namespace Win_in.Sfs.Wms.Pda.Controllers.BaseDatas;
/// <summary>
/// 字典控制器
/// </summary>
[ApiController]
[Route($"{PdaHostConst.ROOT_ROUTE}split-packing-rec")]
public class SplitPackingRecController : AbpController
{
private readonly ISplitPackingRecAppService _splitPackingRecApp;
/// <summary>
///
/// </summary>
/// <param name="splitPackingRecApp"></param>
public SplitPackingRecController(ISplitPackingRecAppService splitPackingRecApp, IOptions<AbpJsonOptions> options)
{
_splitPackingRecApp = splitPackingRecApp;
var str = options.Value.DefaultDateTimeFormat;
Console.WriteLine(str);
}
/// <summary>
/// 取拆分记录列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("get-all")]
public virtual async Task<List<SplitPackingRecDTO>> GetAllListByFilterAsync(SfsBaseDataRequestInputBase input)
{
return await _splitPackingRecApp.GetAllListByFilterAsync(input).ConfigureAwait(false);
}
}

213
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/ContainerJobController.cs

@ -0,0 +1,213 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Polly.Caching;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.AspNetCore.Mvc;
using Win_in.Sfs.Auth.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.Wms.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.Pda.Controllers.Jobs;
/// <summary>
///
/// </summary>
[ApiController]
[Route($"{PdaHostConst.ROOT_ROUTE}job/container")]
public class ContainerJobController : AbpController
{
private readonly IContainerJobAppService _containerJobAppService;
private readonly IUserWorkGroupAppService _userWorkGroupAppService;
private readonly IDictAppService _dictApp;
/// <summary>
///
/// </summary>
/// <param name="ContainerJobAppService"></param>
/// <param name="userWorkGroupAppService"></param>
public ContainerJobController(
IContainerJobAppService containerJobAppService,
IDictAppService dictApp
, IUserWorkGroupAppService userWorkGroupAppService)
{
_userWorkGroupAppService = userWorkGroupAppService;
_containerJobAppService = containerJobAppService;
_dictApp=dictApp;
}
/// <summary>
/// 获取任务详情
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("{id}")]
public virtual async Task<ActionResult<ContainerJobDTO>> GetAsync(Guid id)
{
var result = await _containerJobAppService.GetAsync(id).ConfigureAwait(false);
return Ok(result);
}
/// <summary>
/// 获取列表 筛选
/// </summary>
/// <param name="sfsRequestDTO"></param>
/// <returns></returns>
[HttpPost("list")]
public virtual async Task<PagedResultDto<ContainerJobDTO>> GetListAsync(SfsJobRequestInputBase sfsRequestDTO)
{
var list = await _containerJobAppService.GetPagedListByFilterAsync(sfsRequestDTO, true).ConfigureAwait(false);
return list;
}
/// <summary>
/// 获取列表
/// </summary>
/// <param name="pageSize"></param>
/// <param name="pageIndex"></param>
/// <returns></returns>
[HttpGet("list")]
public virtual async Task<PagedResultDto<ContainerJobDTO>> GetListAsync(int pageSize, int pageIndex, bool isFinished)
{
var dtos = await _dictApp.GetByCodeAsync("ContainerSpecificationsType").ConfigureAwait(false);
var status = new List<int>();
if(isFinished==true)
{
status.Add((int)EnumJobStatus.Done);
}
else
{
status.Add((int)EnumJobStatus.Open);
}
var jsonStatus = JsonSerializer.Serialize(status);
var request = new SfsJobRequestInputBase
{
MaxResultCount = pageSize,
SkipCount = (pageIndex - 1) * pageSize,
Sorting = $"{nameof(ContainerJobDTO.CreationTime)} ASC",
Condition = new Condition
{
Filters = new List<Filter>
{
new(nameof(ContainerJobDTO.JobStatus),jsonStatus,"In")
}
}
};
var list = await _containerJobAppService.GetPagedListByFilterAsync(request, true).ConfigureAwait(false);
foreach (var item in list.Items)
{
if(!string.IsNullOrEmpty(item.SpecificationsType))
{
var dictName= dtos.Items.FirstOrDefault(t => t.Code == item.SpecificationsType);
item.SpecificationsTypeName = dictName.Name;
}
}
return list;
}
/// <summary>
/// 根据Job Number 获取任务列表
/// </summary>
/// <param name="jobNumber"></param>
/// <returns></returns>
[HttpGet("by-number/{jobNumber}")]
public virtual async Task<ActionResult<ContainerJobDTO>> GetByNumberAsync(string jobNumber)
{
var jobDto = await _containerJobAppService.GetByNumberAsync(jobNumber).ConfigureAwait(false);
if (jobDto == null)
{
throw new UserFriendlyException($"未找到编号为 {jobNumber} 的任务");
}
var wlgCodes = await _userWorkGroupAppService.GetCodsOfCurrentUserAsync().ConfigureAwait(false);
if (!wlgCodes.Contains(jobDto.WorkGroupCode))
{
return new NotFoundObjectResult($"任务属于工作组 {jobDto.WorkGroupCode}");
}
if (jobDto.JobStatus == EnumJobStatus.Doing && jobDto.AcceptUserId != CurrentUser.Id)
{
return new NotFoundObjectResult($"任务正在被 {jobDto.AcceptUserName} 处理");
}
return jobDto;
}
/// <summary>
/// 获取任务数量
/// </summary>
/// <returns></returns>
[HttpGet("count")]
public virtual async Task<ActionResult<long>> CountAsync()
{
var wlgCodes = await _userWorkGroupAppService.GetCodsOfCurrentUserAsync().ConfigureAwait(false);
var jsonCodes = JsonSerializer.Serialize(wlgCodes);
var status = new List<int>() { (int)EnumJobStatus.Open, (int)EnumJobStatus.Doing };
var jsonStatus = JsonSerializer.Serialize(status);
var request = new SfsJobRequestInputBase
{
Sorting = $"{nameof(ContainerJobDTO.Priority)} ASC",
Condition = new Condition
{
Filters = new List<Filter>
{
new(nameof(ContainerJobDTO.WorkGroupCode),jsonCodes,"In"),
new(nameof(ContainerJobDTO.JobStatus),jsonStatus,"In")
}
}
};
var count = await _containerJobAppService.GetCountByFilterAsync(request).ConfigureAwait(false);
return Ok(count);
}
/// <summary>
/// 承接任务
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpPost("take/{id}")]
public virtual async Task TakeAsync(Guid id)
{
await _containerJobAppService.AcceptAsync(id).ConfigureAwait(false);
}
/// <summary>
/// 取消承接任务
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpPost("cancel-take/{id}")]
public virtual async Task CancelTakeAsync(Guid id)
{
await _containerJobAppService.CancelAcceptAsync(id).ConfigureAwait(false);
}
/// <summary>
/// 执行任务
/// </summary>
/// <param name="id"></param>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost("finish/{id}")]
public virtual async Task FinishAsync(Guid id, [FromBody] ContainerJobDTO dto)
{
await _containerJobAppService.CompleteAsync(id, dto).ConfigureAwait(false);
}
}

29
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Labels/InventoryLabelController.cs

@ -1,4 +1,6 @@
namespace Win_in.Sfs.Wms.Pda.Controllers.Inventories; namespace Win_in.Sfs.Wms.Pda.Controllers.Inventories;
using System.Collections.Generic;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
@ -34,4 +36,31 @@ public class InventoryLabelController : AbpController
{ {
return await _labelAppService.GetByCodeAsync(code).ConfigureAwait(false); return await _labelAppService.GetByCodeAsync(code).ConfigureAwait(false);
} }
/// <summary>
/// 生成箱码
/// </summary>
/// <param name="input"></param>
/// <param name="count"></param>
/// <returns></returns>
[HttpPost("generate-and-create/many/{count}")]
public virtual async Task<List<InventoryLabelDto>> GenerateAndCreateManyAsync(InventoryLabelWithoutCodeCreateInput input, int count)
{
return await _labelAppService.GenerateAndCreateManyAsync(input, count).ConfigureAwait(false);
}
/// <summary>
/// EOF系统接口
/// 插入箱码记录表、插入拆箱记录表
/// 是客户箱码,不需要LabelDefine
/// </summary>
/// <param name="inputs"></param>
/// <returns></returns>
[HttpPost("create-many-no-code-new")]
public virtual async Task<List<InventoryLabelDto>> CreateManyByNoCode_NewAsync(List<InventoryLabelEditInput> inputs)
{
return await _labelAppService.CreateManyByNoCode_NewAsync(inputs).ConfigureAwait(false);
}
} }

38
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ContainerNoteController.cs

@ -0,0 +1,38 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc;
using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.Pda.Controllers.Stores;
/// <summary>
///
/// </summary>
[ApiController]
[Route($"{PdaHostConst.ROOT_ROUTE}store/container")]
public class ContainerNoteController : AbpController
{
private readonly IContainerNoteAppService _containerNoteAppService;
/// <summary>
///
/// </summary>
/// <param name="containerNoteAppService"></param>
public ContainerNoteController(IContainerNoteAppService containerNoteAppService)
{
_containerNoteAppService = containerNoteAppService;
}
/// <summary>
/// 创建器具转移记录
/// </summary>
/// <param name="input">CreateInput</param>
/// <returns></returns>
[HttpPost("")]
public virtual async Task CreateAsync(ContainerNoteEditInput input)
{
await _containerNoteAppService.CreateAsync(input).ConfigureAwait(false);
}
}

51
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ContainerRequestController.cs

@ -0,0 +1,51 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc;
using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.Pda.Controllers.Stores;
/// <summary>
///空器具呼叫请求
/// </summary>
[ApiController]
[Route($"{PdaHostConst.ROOT_ROUTE}store/container-request")]
public class ContainerRequestController : AbpController
{
private readonly IContainerRequestAppService _containerRequestAppService;
/// <summary>
///
/// </summary>
/// <param name="ContainerRequestAppService"></param>
public ContainerRequestController(IContainerRequestAppService ContainerRequestAppService)
{
_containerRequestAppService = ContainerRequestAppService;
}
/// <summary>
/// 空器具申请
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("")]
public virtual async Task CreateAsync(ContainerRequestEditInput input)
{
_ = await _containerRequestAppService.CreateAsync(input).ConfigureAwait(false);
}
/// <summary>
/// 根据number获取空器具申请详情
/// </summary>
/// <param name="number"></param>
/// <returns></returns>
[HttpGet("{number}")]
public virtual async Task<ActionResult<ContainerRequestDTO>> GetAsync(string number)
{
var result = await _containerRequestAppService.GetByNumberAsync(number).ConfigureAwait(false);
return Ok(result);
}
}

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

@ -39,6 +39,23 @@ public class IssueNoteController : AbpController
{ {
p.ToLot = string.Empty; p.ToLot = string.Empty;
p.ToPackingCode = string.Empty; p.ToPackingCode = string.Empty;
if(p.PositionCode.Contains('W'))
{
p.RecommendType = EnumRecommendType.W;
}
else if(p.PositionCode.Contains('Q'))
{
p.RecommendType = EnumRecommendType.Q;
}
else if (p.PositionCode.Contains('K'))
{
p.RecommendType = EnumRecommendType.K;
}
else
{
p.RecommendType = EnumRecommendType.None;
}
}); });
await _issueNoteAppService.CreateAsync(input).ConfigureAwait(false); await _issueNoteAppService.CreateAsync(input).ConfigureAwait(false);

4
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/MaterialRequestController.cs

@ -25,14 +25,14 @@ public class MaterialRequestController : AbpController
} }
/// <summary> /// <summary>
/// 创建要料申请(自动执行生成发料任务) /// 扫描位置码创建要料申请(自动执行生成发料任务)
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost("")] [HttpPost("")]
public virtual async Task CreateAsync(MaterialRequestEditInput input) public virtual async Task CreateAsync(MaterialRequestEditInput input)
{ {
_ = await _materialRequestAppService.CreateAndHandleAsync(input).ConfigureAwait(false); _ = await _materialRequestAppService.CreateAndHandleByAPIAsync(input).ConfigureAwait(false);
} }
/// <summary> /// <summary>

74
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/PurchaseReturnRequestController.cs

@ -0,0 +1,74 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.Domain.Entities.Auditing;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Pda.Models;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Pda.Controllers.Stores;
[ApiController]
[Route($"{PdaHostConst.ROOT_ROUTE}store/purchase-return-request")]
public class PurchaseReturnRequestController : AbpController
{
private readonly IPurchaseReturnRequestAppService _purchaseReturnRequestAppService;
private readonly ITransactionTypeAppService _transactionTypeAppService;
public PurchaseReturnRequestController(IPurchaseReturnRequestAppService purchaseReturnRequestAppService,
ITransactionTypeAppService transactionTypeAppService
)
{
_purchaseReturnRequestAppService = purchaseReturnRequestAppService;
_transactionTypeAppService = transactionTypeAppService;
}
/// <summary>
/// 创建退货申请
/// </summary>
[HttpPost("create-many")]
public virtual async Task<ActionResult> CreateManyAsync(List<PurchaseReturnRequestPdaInput> input)
{
List<PurchaseReturnRequestEditInput> entitys = new List<PurchaseReturnRequestEditInput>();
var groups = input.GroupBy(r => r.AsnNumber).ToList();
foreach (var group in groups)
{
var list = group.ToList();
var entity = ObjectMapper.Map<PurchaseReturnRequestPdaInput, PurchaseReturnRequestEditInput>(list[0]);
await SetRequestAutoPropertiesAsync(entity).ConfigureAwait(false);
entity.Details = new List<PurchaseReturnRequestDetailInput>();
foreach (var item in list)
{
var detail = ObjectMapper.Map<PurchaseReturnRequestPdaInput, PurchaseReturnRequestDetailInput>(list[0]);
entity.Details.Add(detail);
}
entitys.Add(entity);
}
await _purchaseReturnRequestAppService.CreateManyAsync(entitys).ConfigureAwait(false);
return Ok();
}
/// <summary>
/// 赋值Request业务属性
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
private async Task SetRequestAutoPropertiesAsync(PurchaseReturnRequestEditInput entity)
{
var tranType = await _transactionTypeAppService.GetByTransTypeAsync(EnumTransType.PurchaseReturn, 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;
}
}

40
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/TransferNoteController.cs

@ -144,4 +144,44 @@ public class TransferNoteController : AbpController
{ {
return await _transferNoteAppService.CreateAsync(input).ConfigureAwait(false); return await _transferNoteAppService.CreateAsync(input).ConfigureAwait(false);
} }
/// <summary>
/// 拆箱
/// </summary>
/// <param name="transferNoteEditInput"></param>
/// <returns></returns>
[HttpPost("split-packing")]
public async Task<TransferNoteDTO> SplitPackingAsync(TransferNoteEditInput transferNoteEditInput)
{
return await _transferNoteAppService.SplitPackingAsync(transferNoteEditInput).ConfigureAwait(false);
}
/// <summary>
/// 采购收货拆箱,同时更新、插入PurchaseReceipt任务表、申请表
/// </summary>
/// <param name="transferNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
[HttpPost("split-packing-purchase-receipt")]
public async Task<bool> SplitPacking_PurchaseReceiptAsync(TransferNoteEditInput transferNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInput updateJobDetailInput)
{
var ret = await _transferNoteAppService.SplitPacking_PurchaseReceiptAsync(transferNoteEditInput, updateJobDetailInput).ConfigureAwait(false);
return ret;
}
/// <summary>
/// 发料拆箱,同时更新、插入Inspect任务表(没有找到申请表//??)
/// </summary>
/// <param name="transferNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
[HttpPost("split-packing-issue")]
public async Task<TransferNoteDTO> SplitPacking_IssueAsync(TransferNoteEditInput transferNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInput updateJobDetailInput)
{
var ret = await _transferNoteAppService.SplitPacking_IssueAsync(transferNoteEditInput, updateJobDetailInput).ConfigureAwait(false);
return ret;
}
} }

10
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/PdaHostAutoMapperProfile.cs

@ -2,6 +2,7 @@ using AutoMapper;
using Volo.Abp.AutoMapper; using Volo.Abp.AutoMapper;
using Win_in.Sfs.Wms.Pda.Controllers.Jobs; using Win_in.Sfs.Wms.Pda.Controllers.Jobs;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Pda; namespace Win_in.Sfs.Wms.Pda;
@ -19,6 +20,15 @@ public class PdaHostAutoMapperProfile : Profile
.Ignore(x => x.TimeWindow) .Ignore(x => x.TimeWindow)
.Ignore(x => x.SupplierName) .Ignore(x => x.SupplierName)
; ;
CreateMap<PurchaseReturnRequestPdaInput, PurchaseReturnRequestEditInput>()
.Ignore(x => x.ReturnType)
.Ignore(x => x.ReturnTime)
.Ignore(x => x.ActiveDate)
.Ignore(x => x.Details)
.Ignore(x => x.TenantId)
.Ignore(x => x.Remark)
.Ignore(x => x.ExtraProperties);
CreateMap<PurchaseReturnRequestPdaInput, PurchaseReturnRequestDetailInput>();
} }
} }

2
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Properties/PublishProfiles/FolderProfile.pubxml

@ -10,7 +10,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration> <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform> <LastUsedPlatform>Any CPU</LastUsedPlatform>
<PublishProvider>FileSystem</PublishProvider> <PublishProvider>FileSystem</PublishProvider>
<PublishUrl>.\..\..\..\OutPut\PDA\</PublishUrl> <PublishUrl>D:\发布\WMS\pda</PublishUrl>
<WebPublishMethod>FileSystem</WebPublishMethod> <WebPublishMethod>FileSystem</WebPublishMethod>
<SiteUrlToLaunchAfterPublish /> <SiteUrlToLaunchAfterPublish />
<TargetFramework>net6.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>

9
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Boms/IBomAppService.cs

@ -33,4 +33,13 @@ public interface IBomAppService
Task<List<Bom>> GetListOfComponentAsync(string component); Task<List<Bom>> GetListOfComponentAsync(string component);
Task AddOrUpsertListAsync(List<BomEditInput> inputs); Task AddOrUpsertListAsync(List<BomEditInput> inputs);
Task UpsertAsyncByInterface(BomEditInput input); Task UpsertAsyncByInterface(BomEditInput input);
/// <summary>
/// 根据总成号、总成数量取所有子物料及其汇总数量
/// </summary>
/// <param name="productCode">总成号</param>
/// <param name="productNum">总成数量</param>
/// <returns></returns>
Task<List<BomDTO>> GetMaterialTotalQtyAsync(string productCode, int productNum);
} }

54
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentAreaDTO.cs

@ -0,0 +1,54 @@
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
using System;
using System.Collections.Generic;
[Display(Name = "器具基本信息")]
public class EquipmentAreaDTO : SfsBaseDataDTOBase, IHasCode
{
/// <summary>
/// 器具编号
/// </summary>
[Display(Name = "器具编号")]
public string Code { get; set; }
/// <summary>
/// 类型
/// </summary>
[Display(Name = "类型")]
public string Type { get; set; } = string.Empty;
/// <summary>
/// 型号
/// </summary>
[Display(Name = "型号")]
public string Model { get; set; } = string.Empty;
/// <summary>
/// 库位编号
/// </summary>
[Display(Name = "库位编号")]
public string LocCode { get; set; } = string.Empty;
/// <summary>
/// 状态
/// </summary>
[Display(Name = "状态")]
public int State { get; set; } = 0;
/// <summary>
/// 位置编号
/// </summary>
[Display(Name = "位置编号")]
public string AreaCode { get; set; }
/// <summary>
/// 数量
/// </summary>
[Display(Name = "数量")]
public decimal Qty { get; set; }
}

49
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentAreaForDongyangExportDTO.cs

@ -0,0 +1,49 @@
using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
[Display(Name = "物料信息")]
public class EquipmentAreaForDongyangExportDTO
{
/// <summary>
/// 器具编号
/// </summary>
[Display(Name = "器具编号")]
public string Code { get; set; }
/// <summary>
/// 类型
/// </summary>
[Display(Name = "类型")]
public string Type { get; set; } = string.Empty;
/// <summary>
/// 型号
/// </summary>
[Display(Name = "型号")]
public string Model { get; set; } = string.Empty;
/// <summary>
/// 库位编号
/// </summary>
[Display(Name = "库位编号")]
public string LocCode { get; set; } = string.Empty;
/// <summary>
/// 状态
/// </summary>
[Display(Name = "状态")]
public int State { get; set; } = 0;
/// <summary>
/// 位置编号
/// </summary>
[Display(Name = "位置编号")]
public string AreaCode { get; set; }
/// <summary>
/// 数量
/// </summary>
[Display(Name = "数量")]
public decimal Qty { get; set; }
}

64
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentDTO.cs

@ -0,0 +1,64 @@
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
using System;
using System.Collections.Generic;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Basedata;
[Display(Name = "器具基本信息")]
public class EquipmentDTO : SfsBaseDataDTOBase, IHasCode
{
/// <summary>
/// 类型
/// </summary>
[Display(Name = "类型")]
public EnumEquipmentType Type { get; set; }
/// <summary>
/// 器具编号
/// </summary>
[Display(Name = "器具代码")]
[Required(ErrorMessage = "{0}是必填项")]
public string Code { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数")]
[Required(ErrorMessage = "{0}是必填项")]
public decimal StdQty { get; set; }
/// <summary>
/// 型号
/// </summary>
[Display(Name = "型号")]
public EnumEquipmentModel Model { get; set; }
/// <summary>
/// 库位编号
/// </summary>
[Display(Name = "库位代码")]
[Required(ErrorMessage = "{0}是必填项")]
public string LocCode { get; set; } = string.Empty;
/// <summary>
/// 状态
/// </summary>
[Display(Name = "状态")]
public int State { get; set; } = 0;
/// <summary>
/// 创建人
/// </summary>
[Display(Name = "创建人")]
public string Creator { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Display(Name = "创建时间")]
public DateTime CreatTime { get; set; } = DateTime.Now;
}

53
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentForDongyangExportDTO.cs

@ -0,0 +1,53 @@
using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
[Display(Name = "物料信息")]
public class EquipmentForDongyangExportDTO
{
/// <summary>
/// 器具编号
/// </summary>
[Display(Name = "器具编号")]
public string Code { get; set; }
/// <summary>
/// 类型
/// </summary>
[Display(Name = "类型")]
public string Type { get; set; } = string.Empty;
/// <summary>
/// 型号
/// </summary>
[Display(Name = "型号")]
public string Model { get; set; } = string.Empty;
/// <summary>
/// 库位编号
/// </summary>
[Display(Name = "库位编号")]
public string LocCode { get; set; } = string.Empty;
/// <summary>
/// 状态
/// </summary>
[Display(Name = "状态")]
public int State { get; set; } = 0;
/// <summary>
/// 备注
/// </summary>
[Display(Name = "备注")]
public string Remark { get; set; } = string.Empty;
/// <summary>
/// 创建人
/// </summary>
[Display(Name = "创建人")]
public string Creator { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Display(Name = "创建时间")]
public DateTime CreatTime { get; set; } = DateTime.Now;
}

40
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentLocCapDTO.cs

@ -0,0 +1,40 @@
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
[Display(Name = "器具容量占用信息")]
public class EquipmentLocCapDTO : SfsBaseDataDTOBase, IHasCode
{
/// <summary>
/// 器具代码
/// </summary>
[Display(Name = "器具代码")]
public string Code { get; set; }
/// 占用百分比
/// </summary>
[Display(Name = "占用百分比")]
public decimal Percent { get; set; }
/// <summary>
/// 零件号
/// </summary>
public string PartCode { get; set; }
/// <summary>
/// 录入数量
/// </summary>
public decimal Qty { get; set; }
/// <summary>
/// 标包数量
/// </summary>
public decimal StdQty { get; set; }
}

31
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentLocDTO.cs

@ -0,0 +1,31 @@
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
using System;
using System.Collections.Generic;
[Display(Name = "器具库位关系")]
public class EquipmentLocDTO : SfsBaseDataDTOBase, IHasCode
{
/// <summary>
/// 器具编号
/// </summary>
[Display(Name = "器具代码")]
[Required(ErrorMessage = "{0}是必填项")]
public string Code { get; set; }
/// <summary>
/// 库位编号
/// </summary>
[Display(Name = "库位代码")]
[Required(ErrorMessage = "{0}是必填项")]
public string LocCode { get; set; }
}

73
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentPartCodeDTO.cs

@ -0,0 +1,73 @@
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
using System;
using System.Collections.Generic;
[Display(Name = "器具零件关系信息")]
public class EquipmentPartCodeDTO : SfsBaseDataDTOBase, IHasCode
{
/// <summary>
/// 器具代号
/// </summary>
[Display(Name = "器具代码")]
[Required(ErrorMessage = "{0}是必填项")]
public string Code { get; set; }
///// <summary>
///// 型号
///// </summary>
//[Display(Name = "型号")]
//public string Model { get; set; } = string.Empty;
/// <summary>
/// 库位编号
/// </summary>
[Display(Name = "零件代码")]
[Required(ErrorMessage = "{0}是必填项")]
public string PartCode { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数")]
[Required(ErrorMessage = "{0}是必填项")]
public decimal StdQty { get; set; }
/// <summary>
/// 单位
/// </summary>
[Display(Name = "单位")]
public string Unit { get; set; }
/// <summary>
/// 状态
/// </summary>
//[Display(Name = "状态")]
//public int State { get; set; } = 0;
///// <summary>
///// 创建人
///// </summary>
//[Display(Name = "创建人")]
//public string Creator { get; set; }
///// <summary>
///// 创建时间
///// </summary>
//[Display(Name = "创建时间")]
//public DateTime CreatTime { get; set; } = DateTime.Now;
}

19
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentRecordErrorDTO.cs

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Win_in.Sfs.Basedata.Equipments.DTOs;
[Display(Name = "器具校验信息")]
public class EquipmentRecordErrorDTO
{
[Display(Name = "器具代码")]
public string EqptCode { set; get; }
[Display(Name = "零件代码")]
public string PartCode { set; get; }
[Display(Name = "错误信息")]
public string Error { set; get; }
}

21
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/EquipmentAreaPermissions.cs

@ -0,0 +1,21 @@
using Volo.Abp.Authorization.Permissions;
using Win_in.Sfs.Basedata.Domain;
namespace Win_in.Sfs.Basedata.Application.Contracts;
public static class EquipmentAreaPermissions
{
public const string Default = BasedataPermissions.GroupName + "." + nameof(Equipment);
public const string Create = Default + "." + BasedataPermissions.CreateStr;
public const string Update = Default + "." + BasedataPermissions.UpdateStr;
public const string Delete = Default + "." + BasedataPermissions.DeleteStr;
public static void AddEquipmentPermission(this PermissionGroupDefinition permissionGroup)
{
var EquipmentPermission = permissionGroup.AddPermission(Default, BasedataPermissionDefinitionProvider.L(nameof(Equipment)));
EquipmentPermission.AddChild(Create, BasedataPermissionDefinitionProvider.L(BasedataPermissions.CreateStr));
EquipmentPermission.AddChild(Update, BasedataPermissionDefinitionProvider.L(BasedataPermissions.UpdateStr));
EquipmentPermission.AddChild(Delete, BasedataPermissionDefinitionProvider.L(BasedataPermissions.DeleteStr));
}
}

21
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/EquipmentPermissions.cs

@ -0,0 +1,21 @@
using Volo.Abp.Authorization.Permissions;
using Win_in.Sfs.Basedata.Domain;
namespace Win_in.Sfs.Basedata.Application.Contracts;
public static class EquipmentPermissions
{
public const string Default = BasedataPermissions.GroupName + "." + nameof(Equipment);
public const string Create = Default + "." + BasedataPermissions.CreateStr;
public const string Update = Default + "." + BasedataPermissions.UpdateStr;
public const string Delete = Default + "." + BasedataPermissions.DeleteStr;
public static void AddEquipmentPermission(this PermissionGroupDefinition permissionGroup)
{
var EquipmentPermission = permissionGroup.AddPermission(Default, BasedataPermissionDefinitionProvider.L(nameof(Equipment)));
EquipmentPermission.AddChild(Create, BasedataPermissionDefinitionProvider.L(BasedataPermissions.CreateStr));
EquipmentPermission.AddChild(Update, BasedataPermissionDefinitionProvider.L(BasedataPermissions.UpdateStr));
EquipmentPermission.AddChild(Delete, BasedataPermissionDefinitionProvider.L(BasedataPermissions.DeleteStr));
}
}

28
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/IEquipmentAppService.cs

@ -0,0 +1,28 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
public interface IEquipmentAppService
: ISfsBaseDataAppServiceBase<EquipmentDTO, SfsBaseDataRequestInputBase, EquipmentEditInput>
, ISfsGetByCodeAppService<EquipmentDTO>
, ISfsCheckAppService<EquipmentCheckInput>
, ISfsUpsertAppService<EquipmentEditInput>
{
//Task<bool> CheckItemIsAvailable(string itemCode);
//[HttpGet("check-item-is-available-no-select-sql")]
//void CheckItemIsAvailable(EquipmentDTO EquipmentDTO);
//Task<List<EquipmentDTO>> GetListByNameAsync(string name);
//Task<EquipmentDTO> GetOrAddAsync(EquipmentEditInput input);
//Task<EnumItemManageType> GetManageTypeAsync(string itemCode);
//Task<Dictionary<string, EnumItemManageType>> GetManageTypesAsync(List<string> itemCodes);
//Task UpsertAsyncByInterface(EquipmentEditInput input);
//Task UpsertStdPackQtyAsync(string itemCode, decimal stdpackqty);
}

28
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/IEquipmentAreaAppService.cs

@ -0,0 +1,28 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
public interface IEquipmentAreaAppService
: ISfsBaseDataAppServiceBase<EquipmentAreaDTO, SfsBaseDataRequestInputBase, EquipmentAreaEditInput>
, ISfsGetByCodeAppService<EquipmentAreaDTO>
, ISfsCheckAppService<EquipmentAreaCheckInput>
, ISfsUpsertAppService<EquipmentAreaEditInput>
{
//Task<bool> CheckItemIsAvailable(string itemCode);
//[HttpGet("check-item-is-available-no-select-sql")]
//void CheckItemIsAvailable(EquipmentDTO EquipmentDTO);
//Task<List<EquipmentDTO>> GetListByNameAsync(string name);
//Task<EquipmentDTO> GetOrAddAsync(EquipmentEditInput input);
//Task<EnumItemManageType> GetManageTypeAsync(string itemCode);
//Task<Dictionary<string, EnumItemManageType>> GetManageTypesAsync(List<string> itemCodes);
//Task UpsertAsyncByInterface(EquipmentEditInput input);
//Task UpsertStdPackQtyAsync(string itemCode, decimal stdpackqty);
}

33
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/IEquipmentLocAppService.cs

@ -0,0 +1,33 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
public interface IEquipmentLocAppService
: ISfsBaseDataAppServiceBase<EquipmentLocDTO, SfsBaseDataRequestInputBase, EquipmentLocEditInput>
, ISfsGetByCodeAppService<EquipmentLocDTO>
, ISfsCheckAppService<EquipmentLocCheckInput>
, ISfsUpsertAppService<EquipmentLocEditInput>
{
Task<List<EquipmentLocDTO>> GetEquipmentLocAsync(List<string> p_ls);
Task<List<string>> GetLocsAsync();
//Task<bool> CheckItemIsAvailable(string itemCode);
//[HttpGet("check-item-is-available-no-select-sql")]
//void CheckItemIsAvailable(EquipmentLocDTO EquipmentLocDTO);
//Task<List<EquipmentLocDTO>> GetListByNameAsync(string name);
//Task<EquipmentLocDTO> GetOrAddAsync(EquipmentLocEditInput input);
//Task<EnumItemManageType> GetManageTypeAsync(string itemCode);
//Task<Dictionary<string, EnumItemManageType>> GetManageTypesAsync(List<string> itemCodes);
//Task UpsertAsyncByInterface(EquipmentLocEditInput input);
//Task UpsertStdPackQtyAsync(string itemCode, decimal stdpackqty);
}

28
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/IEquipmentLocCapAppService.cs

@ -0,0 +1,28 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
public interface IEquipmentLocCapAppService
: ISfsBaseDataAppServiceBase<EquipmentLocCapDTO, SfsBaseDataRequestInputBase, EquipmentLocCapEditInput>
, ISfsGetByCodeAppService<EquipmentLocCapDTO>
, ISfsCheckAppService<EquipmentLocCapCheckInput>
, ISfsUpsertAppService<EquipmentLocCapEditInput>
{
//Task<bool> CheckItemIsAvailable(string itemCode);
//[HttpGet("check-item-is-available-no-select-sql")]
//void CheckItemIsAvailable(EquipmentLocCapDTO EquipmentLocCapDTO);
//Task<List<EquipmentLocCapDTO>> GetListByNameAsync(string name);
//Task<EquipmentLocCapDTO> GetOrAddAsync(EquipmentLocCapEditInput input);
//Task<EnumItemManageType> GetManageTypeAsync(string itemCode);
//Task<Dictionary<string, EnumItemManageType>> GetManageTypesAsync(List<string> itemCodes);
//Task UpsertAsyncByInterface(EquipmentLocCapEditInput input);
//Task UpsertStdPackQtyAsync(string itemCode, decimal stdpackqty);
}

31
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/IEquipmentPartCodeAppService.cs

@ -0,0 +1,31 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
public interface IEquipmentPartCodeAppService
: ISfsBaseDataAppServiceBase<EquipmentPartCodeDTO, SfsBaseDataRequestInputBase, EquipmentPartCodeEditInput>
, ISfsGetByCodeAppService<EquipmentPartCodeDTO>
, ISfsUpsertAppService<EquipmentPartCodeEditInput>
{
Task<List<EquipmentPartCodeDTO>> GetEquipmentPartCodesAsync(List<string> p_ls);
//Task<bool> CheckItemIsAvailable(string itemCode);
//[HttpGet("check-item-is-available-no-select-sql")]
//void CheckItemIsAvailable(EquipmentPartCodeDTO EquipmentPartCodeDTO);
//Task<List<EquipmentPartCodeDTO>> GetListByNameAsync(string name);
//Task<EquipmentPartCodeDTO> GetOrAddAsync(EquipmentPartCodeEditInput input);
//Task<EnumItemManageType> GetManageTypeAsync(string itemCode);
//Task<Dictionary<string, EnumItemManageType>> GetManageTypesAsync(List<string> itemCodes);
//Task UpsertAsyncByInterface(EquipmentPartCodeEditInput input);
//Task UpsertStdPackQtyAsync(string itemCode, decimal stdpackqty);
}

51
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentAreaCheckInput.cs

@ -0,0 +1,51 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
public class EquipmentAreaCheckInput
{
/// <summary>
/// 器具编号
/// </summary>
[Display(Name = "器具编号")]
public string Code { get; set; }
/// <summary>
/// 类型
/// </summary>
[Display(Name = "类型")]
public string Type { get; set; } = string.Empty;
/// <summary>
/// 型号
/// </summary>
[Display(Name = "型号")]
public string Model { get; set; } = string.Empty;
/// <summary>
/// 库位编号
/// </summary>
[Display(Name = "库位编号")]
public string LocCode { get; set; } = string.Empty;
/// <summary>
/// 状态
/// </summary>
[Display(Name = "状态")]
public int State { get; set; } = 0;
/// <summary>
/// 位置编号
/// </summary>
[Display(Name = "位置编号")]
public string AreaCode { get; set; }
/// <summary>
/// 数量
/// </summary>
[Display(Name = "数量")]
public decimal Qty { get; set; }
}

225
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentAreaEditInput.cs

@ -0,0 +1,225 @@
using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
public class EquipmentAreaEditInput : SfsBaseDataCreateOrUpdateInputBase
{
/// <summary>
/// 器具编号
/// </summary>
[Display(Name = "器具编号")]
public string Code { get; set; }
/// <summary>
/// 类型
/// </summary>
[Display(Name = "类型")]
public string Type { get; set; } = string.Empty;
/// <summary>
/// 型号
/// </summary>
[Display(Name = "型号")]
public string Model { get; set; } = string.Empty;
/// <summary>
/// 库位编号
/// </summary>
[Display(Name = "库位编号")]
public string LocCode { get; set; } = string.Empty;
/// <summary>
/// 状态
/// </summary>
[Display(Name = "状态")]
public int State { get; set; } = 0;
/// <summary>
/// 位置编号
/// </summary>
[Display(Name = "位置编号")]
public string AreaCode { get; set; }
/// <summary>
/// 数量
/// </summary>
[Display(Name = "数量")]
public decimal Qty { get; set; }
//#region Base
///// <summary>
///// 名称
///// </summary>
//[Display(Name = "名称")]
//[Required(ErrorMessage = "{0}是必填项")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Name { get; set; }
///// <summary>
///// 描述1
///// </summary>
//[Display(Name = "描述1")]
//[StringLength(SfsEfCorePropertyConst.DescLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Desc1 { get; set; }
///// <summary>
///// 描述2
///// </summary>
//[Display(Name = "描述2")]
//[StringLength(SfsEfCorePropertyConst.DescLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Desc2 { get; set; }
///// <summary>
///// 状态
///// </summary>
//[Display(Name = "状态")]
//[Required(ErrorMessage = "{0}是必填项")]
//public EnumItemStatus Status { get; set; }
///// <summary>
///// 制造件
///// </summary>
//[Display(Name = "制造件")]
//[Required(ErrorMessage = "{0}是必填项")]
//public bool CanMake { get; set; }
///// <summary>
///// 采购件
///// </summary>
//[Display(Name = "采购件")]
//[Required(ErrorMessage = "{0}是必填项")]
//public bool CanBuy { get; set; }
///// <summary>
///// 外包件
///// </summary>
//[Display(Name = "外包件")]
//public bool CanOutsourcing { get; set; }
///// <summary>
///// 回收件
///// </summary>
//[Display(Name = "回收件")]
//public bool IsRecycled { get; set; }
///// <summary>
///// 类型
///// </summary>
//[Display(Name = "类型")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Type { get; set; }
///// <summary>
///// 种类
///// </summary>
//[Display(Name = "种类")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Category { get; set; }
///// <summary>
///// 分组
///// </summary>
//[Display(Name = "分组")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Group { get; set; }
///// <summary>
///// 颜色
///// </summary>
//[Display(Name = "颜色")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Color { get; set; }
///// <summary>
///// 配置
///// </summary>
//[Display(Name = "配置")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Configuration { get; set; }
///// <summary>
///// 虚零件
///// </summary>
//[Display(Name = "虚零件(Is phantom)")]
//public virtual bool IsPhantom { get; set; }
///// <summary>
///// 基本计量单位
///// </summary>
//[Display(Name = "基本计量单位")]
//[Required(ErrorMessage = "{0}是必填项")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string BasicUom { get; set; }
///// <summary>
///// 标包数
///// </summary>
//[Display(Name = "标包数")]
//[Required(ErrorMessage = "{0}是必填项")]
//public decimal StdPackQty { get; set; }
///// <summary>
///// ABC类
///// </summary>
//[Display(Name = "ABC类")]
//[Required(ErrorMessage = "{0}是必填项", AllowEmptyStrings = true)]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string AbcClass { get; set; }
///// <summary>
///// 项目
///// </summary>
//[Display(Name = "项目")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Project { get; set; }
///// <summary>
///// 版本
///// </summary>
//[Display(Name = "版本")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Version { get; set; }
///// <summary>
///// 工程变革
///// </summary>
//[Display(Name = "工程变革")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Eco { get; set; }
///// <summary>
///// 有效期
///// </summary>
//[Display(Name = "有效期")]
//public int Validity { get; set; }
///// <summary>
///// 有效期单位
///// </summary>
//[Display(Name = "有效期单位")]
//public EnumValidityUnit ValidityUnit { get; set; }
///// <summary>
///// 管理类型
///// </summary>
//[Display(Name = "管理类型")]
//public EnumItemManageType ManageType { get; set; }
///// <summary>
///// 打印标签用的一个等级
///// </summary>
//[Display(Name = "Elevel")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Elevel { get; set; }
//#endregion
//#region Create
///// <summary>
///// 代码
///// </summary>
//[Display(Name = "代码")]
//[Required(ErrorMessage = "{0}是必填项")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Code { get; set; }
//#endregion
}

53
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentAreaImportInput.cs

@ -0,0 +1,53 @@
using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
[Display(Name = "器具位置")]
public class EquipmentAreaImportInput : SfsBaseDataImportInputBase
{
/// <summary>
/// 器具编号
/// </summary>
[Display(Name = "器具编号")]
public string Code { get; set; }
/// <summary>
/// 类型
/// </summary>
[Display(Name = "类型")]
public string Type { get; set; } = string.Empty;
/// <summary>
/// 型号
/// </summary>
[Display(Name = "型号")]
public string Model { get; set; } = string.Empty;
/// <summary>
/// 库位编号
/// </summary>
[Display(Name = "库位编号")]
public string LocCode { get; set; } = string.Empty;
/// <summary>
/// 状态
/// </summary>
[Display(Name = "状态")]
public int State { get; set; } = 0;
/// <summary>
/// 位置编号
/// </summary>
[Display(Name = "位置编号")]
public string AreaCode { get; set; }
/// <summary>
/// 数量
/// </summary>
[Display(Name = "数量")]
public decimal Qty { get; set; }
}

55
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentCheckInput.cs

@ -0,0 +1,55 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
public class EquipmentCheckInput
{
/// <summary>
/// 器具编号
/// </summary>
[Display(Name = "器具编号")]
public string Code { get; set; }
/// <summary>
/// 类型
/// </summary>
[Display(Name = "类型")]
public string Type { get; set; } = string.Empty;
/// <summary>
/// 型号
/// </summary>
[Display(Name = "型号")]
public string Model { get; set; } = string.Empty;
/// <summary>
/// 库位编号
/// </summary>
[Display(Name = "库位编号")]
public string LocCode { get; set; } = string.Empty;
/// <summary>
/// 状态
/// </summary>
[Display(Name = "状态")]
public int State { get; set; } = 0;
/// <summary>
/// 备注
/// </summary>
[Display(Name = "备注")]
public string Remark { get; set; } = string.Empty;
/// <summary>
/// 创建人
/// </summary>
[Display(Name = "创建人")]
public string Creator { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Display(Name = "创建时间")]
public DateTime CreatTime { get; set; }=DateTime.Now;
}

236
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentEditInput.cs

@ -0,0 +1,236 @@
using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Basedata;
namespace Win_in.Sfs.Basedata.Application.Contracts;
public class EquipmentEditInput : SfsBaseDataCreateOrUpdateInputBase
{
/// <summary>
/// 类型
/// </summary>
[Display(Name = "类型")]
public EnumEquipmentType Type { get; set; }
/// <summary>
/// 器具编号
/// </summary>
[Display(Name = "器具代码")]
[Required(ErrorMessage = "{0}是必填项")]
public string Code { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数")]
[Required(ErrorMessage = "{0}是必填项")]
public decimal StdQty { get; set; }
/// <summary>
/// 型号
/// </summary>
[Display(Name = "型号")]
public EnumEquipmentModel Model { get; set; }
/// <summary>
/// 库位编号
/// </summary>
[Display(Name = "库位代码")]
[Required(ErrorMessage = "{0}是必填项")]
public string LocCode { get; set; } = string.Empty;
/// <summary>
/// 状态
/// </summary>
[Display(Name = "状态")]
public int State { get; set; } = 0;
/// <summary>
/// 创建人
/// </summary>
[Display(Name = "创建人")]
public string Creator { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Display(Name = "创建时间")]
public DateTime CreatTime { get; set; }=DateTime.Now;
//#region Base
///// <summary>
///// 名称
///// </summary>
//[Display(Name = "名称")]
//[Required(ErrorMessage = "{0}是必填项")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Name { get; set; }
///// <summary>
///// 描述1
///// </summary>
//[Display(Name = "描述1")]
//[StringLength(SfsEfCorePropertyConst.DescLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Desc1 { get; set; }
///// <summary>
///// 描述2
///// </summary>
//[Display(Name = "描述2")]
//[StringLength(SfsEfCorePropertyConst.DescLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Desc2 { get; set; }
///// <summary>
///// 状态
///// </summary>
//[Display(Name = "状态")]
//[Required(ErrorMessage = "{0}是必填项")]
//public EnumItemStatus Status { get; set; }
///// <summary>
///// 制造件
///// </summary>
//[Display(Name = "制造件")]
//[Required(ErrorMessage = "{0}是必填项")]
//public bool CanMake { get; set; }
///// <summary>
///// 采购件
///// </summary>
//[Display(Name = "采购件")]
//[Required(ErrorMessage = "{0}是必填项")]
//public bool CanBuy { get; set; }
///// <summary>
///// 外包件
///// </summary>
//[Display(Name = "外包件")]
//public bool CanOutsourcing { get; set; }
///// <summary>
///// 回收件
///// </summary>
//[Display(Name = "回收件")]
//public bool IsRecycled { get; set; }
///// <summary>
///// 类型
///// </summary>
//[Display(Name = "类型")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Type { get; set; }
///// <summary>
///// 种类
///// </summary>
//[Display(Name = "种类")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Category { get; set; }
///// <summary>
///// 分组
///// </summary>
//[Display(Name = "分组")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Group { get; set; }
///// <summary>
///// 颜色
///// </summary>
//[Display(Name = "颜色")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Color { get; set; }
///// <summary>
///// 配置
///// </summary>
//[Display(Name = "配置")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Configuration { get; set; }
///// <summary>
///// 虚零件
///// </summary>
//[Display(Name = "虚零件(Is phantom)")]
//public virtual bool IsPhantom { get; set; }
///// <summary>
///// 基本计量单位
///// </summary>
//[Display(Name = "基本计量单位")]
//[Required(ErrorMessage = "{0}是必填项")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string BasicUom { get; set; }
///// <summary>
///// 标包数
///// </summary>
//[Display(Name = "标包数")]
//[Required(ErrorMessage = "{0}是必填项")]
//public decimal StdPackQty { get; set; }
///// <summary>
///// ABC类
///// </summary>
//[Display(Name = "ABC类")]
//[Required(ErrorMessage = "{0}是必填项", AllowEmptyStrings = true)]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string AbcClass { get; set; }
///// <summary>
///// 项目
///// </summary>
//[Display(Name = "项目")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Project { get; set; }
///// <summary>
///// 版本
///// </summary>
//[Display(Name = "版本")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Version { get; set; }
///// <summary>
///// 工程变革
///// </summary>
//[Display(Name = "工程变革")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Eco { get; set; }
///// <summary>
///// 有效期
///// </summary>
//[Display(Name = "有效期")]
//public int Validity { get; set; }
///// <summary>
///// 有效期单位
///// </summary>
//[Display(Name = "有效期单位")]
//public EnumValidityUnit ValidityUnit { get; set; }
///// <summary>
///// 管理类型
///// </summary>
//[Display(Name = "管理类型")]
//public EnumItemManageType ManageType { get; set; }
///// <summary>
///// 打印标签用的一个等级
///// </summary>
//[Display(Name = "Elevel")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Elevel { get; set; }
//#endregion
//#region Create
///// <summary>
///// 代码
///// </summary>
//[Display(Name = "代码")]
//[Required(ErrorMessage = "{0}是必填项")]
//[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
//public string Code { get; set; }
//#endregion
}

64
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentImportInput.cs

@ -0,0 +1,64 @@
using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Basedata;
namespace Win_in.Sfs.Basedata.Application.Contracts;
[Display(Name = "物品")]
public class EquipmentImportInput : SfsBaseDataImportInputBase
{
/// <summary>
/// 类型
/// </summary>
[Display(Name = "类型")]
public Win_in.Sfs.Shared.Domain.Shared.Enums.Basedata.EnumEquipmentType Type { get; set; }
/// <summary>
/// 器具编号
/// </summary>
[Display(Name = "器具代码")]
[Required(ErrorMessage = "{0}是必填项")]
public string Code { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数")]
[Required(ErrorMessage = "{0}是必填项")]
public decimal StdQty { get; set; }
/// <summary>
/// 型号
/// </summary>
[Display(Name = "型号")]
public EnumEquipmentModel Model { get; set; }
/// <summary>
/// 库位编号
/// </summary>
[Display(Name = "库位代码")]
[Required(ErrorMessage = "{0}是必填项")]
public string LocCode { get; set; } = string.Empty;
/// <summary>
/// 状态
/// </summary>
[Display(Name = "状态")]
public int State { get; set; } = 0;
/// <summary>
/// 创建人
/// </summary>
[Display(Name = "创建人")]
public string Creator { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Display(Name = "创建时间")]
public DateTime CreatTime { get; set; } = DateTime.Now;
}

20
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocCapCheckInput.cs

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
public class EquipmentLocCapCheckInput
{
/// <summary>
/// 器具代码
/// </summary>
[Display(Name = "器具代码")]
public string Code { get; set; }
/// 占用百分比
/// </summary>
[Display(Name = "占用百分比")]
public decimal Percent { get; set; }
}

20
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocCapEditInput.cs

@ -0,0 +1,20 @@
using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Basedata;
namespace Win_in.Sfs.Basedata.Application.Contracts;
public class EquipmentLocCapEditInput : SfsBaseDataCreateOrUpdateInputBase
{
/// <summary>
/// 器具代码
/// </summary>
[Display(Name = "器具代码")]
public string Code { get; set; }
/// 占用百分比
/// </summary>
[Display(Name = "占用百分比")]
public decimal Percent { get; set; }
}

38
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocCapImportInput.cs

@ -0,0 +1,38 @@
using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Basedata;
namespace Win_in.Sfs.Basedata.Application.Contracts;
[Display(Name = "器具容量")]
public class EquipmentLocCapImportInput : SfsBaseDataImportInputBase
{
/// <summary>
/// 器具代码
/// </summary>
[Display(Name = "器具代码")]
public string Code { get; set; }
/// 占用百分比
/// </summary>
[Display(Name = "占用百分比")]
public decimal Percent { get; set; }
//[Display(Name = "零件代码")]
//public string PartCode { get; set; }
//[Display(Name = "当前数量")]
///// <summary>
///// 录入数量
///// </summary>
//public decimal Qty { get; set; }
//[Display(Name = "标包数量")]
///// <summary>
///// 标包数量
///// </summary>
//public decimal StdQty { get; set; }
}

27
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocCheckInput .cs

@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
public class EquipmentLocCheckInput
{
/// <summary>
/// 器具编号
/// </summary>
[Display(Name = "器具代码")]
[Required(ErrorMessage = "{0}是必填项")]
public string Code { get; set; }
/// <summary>
/// 库位编号
/// </summary>
[Display(Name = "库位代码")]
[Required(ErrorMessage = "{0}是必填项")]
public string LocCode { get; set; }
}

28
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocEditInput.cs

@ -0,0 +1,28 @@
using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
public class EquipmentLocEditInput : SfsBaseDataCreateOrUpdateInputBase
{
/// <summary>
/// 器具编号
/// </summary>
[Display(Name = "器具代码")]
[Required(ErrorMessage = "{0}是必填项")]
public string Code { get; set; }
/// <summary>
/// 库位编号
/// </summary>
[Display(Name = "库位代码")]
[Required(ErrorMessage = "{0}是必填项")]
public string LocCode { get; set; }
[Display(Name = "状态")]
public int State { get; set; } = 0;
}

33
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocImportInput.cs

@ -0,0 +1,33 @@
using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
[Display(Name = "器具")]
public class EquipmentLocImportInput : SfsBaseDataImportInputBase
{
/// <summary>
/// 器具编号
/// </summary>
[Display(Name = "器具代码")]
[Required(ErrorMessage = "{0}是必填项")]
public string Code { get; set; }
/// <summary>
/// 库位编号
/// </summary>
[Display(Name = "库位代码")]
[Required(ErrorMessage = "{0}是必填项")]
public string LocCode { get; set; }
[Display(Name = "状态")]
public int State { get; set; } = 0;
}

43
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentPartCodeCheckInput.cs

@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
public class EquipmentPartCodeCheckInput
{
/// <summary>
/// 器具代号
/// </summary>
[Display(Name = "器具代码")]
[Required(ErrorMessage = "{0}是必填项")]
public string Code { get; set; }
///// <summary>
///// 型号
///// </summary>
//[Display(Name = "型号")]
//public string Model { get; set; } = string.Empty;
/// <summary>
/// 库位编号
/// </summary>
[Display(Name = "零件代码")]
[Required(ErrorMessage = "{0}是必填项")]
public string PartCode { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数")]
[Required(ErrorMessage = "{0}是必填项")]
public decimal StdQty { get; set; }
}

53
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentPartCodeEditInput.cs

@ -0,0 +1,53 @@
using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
public class EquipmentPartCodeEditInput : SfsBaseDataCreateOrUpdateInputBase
{
/// <summary>
/// 器具代号
/// </summary>
[Display(Name = "器具代码")]
[Required(ErrorMessage = "{0}是必填项")]
public string Code { get; set; }
///// <summary>
///// 型号
///// </summary>
//[Display(Name = "型号")]
//public string Model { get; set; } = string.Empty;
/// <summary>
/// 库位编号
/// </summary>
[Display(Name = "零件代码")]
[Required(ErrorMessage = "{0}是必填项")]
public string PartCode { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数")]
[Required(ErrorMessage = "{0}是必填项")]
public decimal StdQty { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "单位")]
[Required(ErrorMessage = "{0}是必填项")]
public string Unit { get; set; }
[Display(Name = "状态")]
public int State { get; set; } = 0;
}

60
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentPartCodeImportInput.cs

@ -0,0 +1,60 @@
using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
[Display(Name = "器具")]
public class EquipmentPartCodeImportInput : SfsBaseDataImportInputBase
{
/// <summary>
/// 器具代号
/// </summary>
[Display(Name = "器具代码")]
[Required(ErrorMessage = "{0}是必填项")]
public string Code { get; set; }
///// <summary>
///// 型号
///// </summary>
//[Display(Name = "型号")]
//public string Model { get; set; } = string.Empty;
/// <summary>
/// 库位编号
/// </summary>
[Display(Name = "零件代码")]
[Required(ErrorMessage = "{0}是必填项")]
public string PartCode { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数")]
[Required(ErrorMessage = "{0}是必填项")]
public decimal StdQty { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "单位")]
[Required(ErrorMessage = "{0}是必填项")]
public string Unit { get; set; }
[Display(Name = "状态")]
public int State { get; set; } = 0;
}

41
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/DTOs/KittingDTO.cs

@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Application.Dtos;
using Win_in.Sfs.Basedata.Domain;
using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Entities;
namespace Win_in.Sfs.Basedata.Application.Contracts;
[Display(Name = "Kitting箱")]
public class KittingDTO : EntityDto<Guid>, IHasCode, IHasName
{
[Display(Name ="编号")]
public string Code { get; set; }
[Display(Name = "名称")]
public string Name { get; set; }
[Display(Name = "明细")]
public List<KittingDetailDTO> Details { set; get; }= new List<KittingDetailDTO>();
}
public class KittingErrorDto
{
[Display(Name = "Kitting编号")]
public string Code { get; set; }
[Display(Name = "零件代码")]
public string PartCode { get; set; }
[Display(Name = "错误信息")]
public string Content { get; set; }
}

49
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/DTOs/KittingDetailDTO.cs

@ -0,0 +1,49 @@
using System;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Application.Dtos;
using Volo.Abp.MultiTenancy;
using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Basedata.Application.Contracts;
[Display(Name = "Kitting箱明细")]
public class KittingDetailDTO: AuditedEntityDto<Guid>, IMultiTenant, IRemark
{
/// <summary>
/// 主表ID
/// </summary>
[Display(Name = "主表ID")]
public Guid MasterId { get; set; }
/// <summary>
/// 物料编码
/// </summary>
[Display(Name = "物料编码")]
public string PartCode { set; get; }
/// <summary>
/// 描述1
/// </summary>
[Display(Name = "描述1")]
public string Desc1 { set; get; }
/// <summary>
/// 描述2
/// </summary>
[Display(Name = "描述2")]
public string Desc2 { set; get; }
/// <summary>
/// 包装数量
/// </summary>
[Display(Name = "包装数量")]
public decimal Qty { set; get; }
/// <summary>
/// 配置
/// </summary>
[Display(Name = "配置")]
public string Conf { set; get; }
public Guid? TenantId { set; get; }
public string Remark { get; set; }
}

9
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/IKttingAppService.cs

@ -0,0 +1,9 @@
using System.Threading.Tasks;
using Win_in.Sfs.Shared.Application.Contracts;
namespace Win_in.Sfs.Basedata.Application.Contracts;
public interface IKittingAppService: ISfsBaseDataAppServiceBase<KittingDTO, SfsBaseDataRequestInputBase, KittingEditInput>, ISfsGetByCodeAppService<KittingDTO>
{
Task UpdateAsync(KittingEditInput input);
}

49
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingDetailInput.cs

@ -0,0 +1,49 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.MultiTenancy;
using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Basedata.Kittings.Inputs;
public class KittingDetailInput: EntityDto<Guid>, IMultiTenant, IRemark
{
/// <summary>
/// 主表ID
/// </summary>
[Display(Name = "主表ID")]
public Guid MasterId { get; set; }
/// <summary>
/// 物料编码
/// </summary>
[Display(Name = "物料编码")]
public string PartCode { set; get; }
/// <summary>
/// 描述1
/// </summary>
[Display(Name = "描述1")]
public string Desc1 { set; get; }
/// <summary>
/// 描述2
/// </summary>
[Display(Name = "描述2")]
public string Desc2 { set; get; }
/// <summary>
/// 包装数量
/// </summary>
[Display(Name = "包装数量")]
public decimal Qty { set; get; }
/// <summary>
/// 配置
/// </summary>
[Display(Name = "配置")]
public string Conf { set; get; }
[Display(Name = "租户ID")]
public Guid? TenantId { set; get;
}
[Display(Name = "备注")]
public string Remark { get; set; }
}

32
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingEditInput.cs

@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
using Volo.Abp.MultiTenancy;
using Win_in.Sfs.Basedata.Domain;
using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.Basedata.Kittings.Inputs;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Entities;
namespace Win_in.Sfs.Basedata.Application.Contracts;
public class KittingEditInput : EntityDto<Guid>, IMultiTenant, IRemark, IHasExtraProperties
{
public string Code { get; set; }
public string Name { get; set; }
public virtual List<KittingDetailInput> Details { get; set; }=new List<KittingDetailInput>();
[DefaultValue(null)]
public Guid? TenantId { get; set; }
public string Remark { get; set; }
[DefaultValue("{}")]
public ExtraPropertyDictionary ExtraProperties { get; set; }
}

149
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingImportInput.cs

@ -0,0 +1,149 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Basedata.Domain;
using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Entities;
namespace Win_in.Sfs.Basedata.Application.Contracts;
[Display(Name = "Kitting箱")]
public class KittingImportInput : SfsBaseDataImportInputBase
{
/// <summary>
/// Kitting编码
/// </summary>
[Display(Name ="Kitting编码")]
public string Code { get; set; }
/// <summary>
/// Kitting名称
/// </summary>
[Display(Name = "Kitting名称")]
public string Name { get; set; }
/// <summary>
/// 物料编码
/// </summary>
[Display(Name = "物料编码")]
public string PartCode { set; get; }
/// <summary>
/// 描述1
/// </summary>
[Display(Name = "物料描述1")]
public string Desc1 { set; get; }
/// <summary>
/// 描述2
/// </summary>
[Display(Name = "物料描述2")]
public string Desc2 { set; get; }
/// <summary>
/// 包装数量
/// </summary>
[Display(Name = "包装数量")]
public decimal Qty { set; get; }
/// <summary>
/// 配置
/// </summary>
[Display(Name = "配置")]
public string Conf { set; get; }
//[Display(Name = "租户ID")]
//public Guid? TenantId
//{
// set; get;
//}
//[Display(Name = "备注")]
//public string Remark { get; set; }
}
//[Serializable]
//public class CustomerDTO : SfsBaseDataDTOBase
//{
// ///<summary>
// ///�ͻ�����
// ///</summary>
// [Display(Name = "�ͻ�����")]
// [Required(ErrorMessage = "{0}�DZ�����")]
// [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}�������{1}���ַ�")]
// public string Code { get; set; }
// /// <summary>
// /// �ͻ�����
// /// </summary>
// [Display(Name = "�ͻ�����")]
// [Required(ErrorMessage = "{0}�DZ�����")]
// [StringLength(SfsEfCorePropertyConst.NameLength, ErrorMessage = "{0}�������{1}���ַ�")]
// public string Name { get; set; }
// /// <summary>
// /// �ͻ�����
// /// </summary>
// [Display(Name = "�ͻ�����")]
// [StringLength(SfsEfCorePropertyConst.DescLength, ErrorMessage = "{0}�������{1}���ַ�")]
// public string Description { get; set; }
// /// <summary>
// /// ��ϵ��ַ
// /// </summary>
// [Display(Name = "��ϵ��ַ")]
// [StringLength(SfsEfCorePropertyConst.DescLength, ErrorMessage = "{0}�������{1}���ַ�")]
// public string Address { get; set; }
// /// <summary>
// /// ��ϵ��
// /// </summary>
// [Display(Name = "��ϵ��")]
// [StringLength(SfsEfCorePropertyConst.NameLength, ErrorMessage = "{0}�������{1}���ַ�")]
// public string Contact { get; set; }
// /// <summary>
// /// ��ϵ�绰
// /// </summary>
// [Display(Name = "��ϵ�绰")]
// public string ContactPhone { get; set; }
// /// <summary>
// /// ��ϵ�ʼ�
// /// </summary>
// [Display(Name = "��ϵ�ʼ�")]
// public string ContactEmail { get; set; }
// /// <summary>
// /// ��ϵ����
// /// </summary>
// [Display(Name = "��ϵ����")]
// public string ContactFax { get; set; }
// /// <summary>
// /// ˰��
// /// </summary>
// [Display(Name = "˰��")]
// public Nullable<decimal> TaxRate { get; set; }
// /// <summary>
// /// ����ID
// /// </summary>
// [Display(Name = "����Id")]
// public Guid CurrencyId { get; set; }
// /// <summary>
// /// ����ID
// /// </summary>
// [Display(Name = "��������")]
// public string CurrencyName { get; set; }
// /// <summary>
// /// �ͻ�����
// /// </summary>
// [Display(Name = "�ͻ�����")]
// public Nullable<int> CustomerType { get; set; }
// public bool Enabled { get; set; }
// //public ICollection<CustomerItemDTO> CustomerItems { set; get; }
//}

21
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/KittingPermissions.cs

@ -0,0 +1,21 @@
using Volo.Abp.Authorization.Permissions;
using Win_in.Sfs.Basedata.Domain;
namespace Win_in.Sfs.Basedata.Application.Contracts;
public static class KittingPermissions
{
public const string Default = BasedataPermissions.GroupName + "." + nameof(Kitting);
public const string Create = Default + "." + BasedataPermissions.CreateStr;
public const string Update = Default + "." + BasedataPermissions.UpdateStr;
public const string Delete = Default + "." + BasedataPermissions.DeleteStr;
public static void AddKittingPermission(this PermissionGroupDefinition permissionGroup)
{
var customerPermission = permissionGroup.AddPermission(Default, BasedataPermissionDefinitionProvider.L(nameof(Kitting)));
customerPermission.AddChild(Create, BasedataPermissionDefinitionProvider.L(BasedataPermissions.CreateStr));
customerPermission.AddChild(Update, BasedataPermissionDefinitionProvider.L(BasedataPermissions.UpdateStr));
customerPermission.AddChild(Delete, BasedataPermissionDefinitionProvider.L(BasedataPermissions.DeleteStr));
}
}

2
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Permissions/BasedataPermissionDefinitionProvider.cs

@ -30,11 +30,13 @@ public class BasedataPermissionDefinitionProvider : PermissionDefinitionProvider
basedataGroup.AddSalePriceSheetPermission(); basedataGroup.AddSalePriceSheetPermission();
basedataGroup.AddShiftPermission(); basedataGroup.AddShiftPermission();
basedataGroup.AddStdCostPriceSheetPermission(); basedataGroup.AddStdCostPriceSheetPermission();
basedataGroup.AddSplitPackingRecPermission();
basedataGroup.AddUomPermission(); basedataGroup.AddUomPermission();
basedataGroup.AddItemBasicPermission(); basedataGroup.AddItemBasicPermission();
basedataGroup.AddItemCategoryPermission(); basedataGroup.AddItemCategoryPermission();
basedataGroup.AddItemPackPermission(); basedataGroup.AddItemPackPermission();
basedataGroup.AddCategoryPermission(); basedataGroup.AddCategoryPermission();
basedataGroup.AddPositionCodePermission();
basedataGroup.AddWorkShopPermission(); basedataGroup.AddWorkShopPermission();
basedataGroup.AddDockPermission(); basedataGroup.AddDockPermission();
basedataGroup.AddLocationGroupPermission(); basedataGroup.AddLocationGroupPermission();

63
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/DTOs/PositionCodeDTO.cs

@ -0,0 +1,63 @@
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
[Display(Name = "位置码")]
public class PositionCodeDTO : SfsBaseDataDTOBase, IHasCode
{
/// <summary>
/// 代码
/// </summary>
[Display(Name = "代码")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Code { get; set; }
/// <summary>
/// 物料号
/// </summary>
[Display(Name = "物料号")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string PartCode { get; set; }
/// <summary>
/// 物料名称
/// </summary>
[Display(Name = "物料名称")]
[StringLength(SfsEfCorePropertyConst.NameLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string PartName { get; set; }
/// <summary>
/// 物料描述
/// </summary>
[Display(Name = "物料描述")]
[StringLength(SfsEfCorePropertyConst.DescLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string PartDesc { get; set; }
/// <summary>
/// 基本计量单位
/// </summary>
[Display(Name = "基本计量单位")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string BasicUom { get; set; }
/// <summary>
/// 库位
/// </summary>
[Display(Name = "库位")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string LocationCode { get; set; }
/// <summary>
/// 库位名称
/// </summary>
[Display(Name = "库位名称")]
[StringLength(SfsEfCorePropertyConst.NameLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string LocationName { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数量")]
public decimal StdPackQty { get; set; }
/// <summary>
/// 类型
/// </summary>
[Display(Name = "类型")]
public EnumRecommendType Type { get; set; }
}

9
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/IPositionCodeAppService.cs

@ -0,0 +1,9 @@
using Win_in.Sfs.Shared.Application.Contracts;
namespace Win_in.Sfs.Basedata.Application.Contracts;
public interface IPositionCodeAppService
: ISfsBaseDataAppServiceBase<PositionCodeDTO, SfsBaseDataRequestInputBase, PositionCodeEditInput>
, ISfsGetByCodeAppService<PositionCodeDTO>
{
}

67
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/Inputs/PositionCodeEditInput.cs

@ -0,0 +1,67 @@
using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts;
[Serializable]
public class PositionCodeEditInput : SfsBaseDataCreateOrUpdateInputBase
{
#region Base
/// <summary>
/// 物料号
/// </summary>
[Display(Name = "物料号")]
[Required(ErrorMessage = "{0}是必填项")]
public string PartCode { get; set; }
/// <summary>
/// 物料名称
/// </summary>
[Display(Name = "物料名称")]
public string PartName { get; set; }
/// <summary>
/// 物料描述
/// </summary>
[Display(Name = "物料描述")]
public string PartDesc { get; set; }
/// <summary>
/// 基本计量单位
/// </summary>
[Display(Name = "基本计量单位")]
public string BasicUom { get; set; }
/// <summary>
/// 库位
/// </summary>
[Display(Name = "库位")]
[Required(ErrorMessage = "{0}是必填项")]
public string LocationCode { get; set; }
/// <summary>
/// 库位名称
/// </summary>
[Display(Name = "库位名称")]
public string LocationName { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数量")]
public decimal StdPackQty { get; set; }
/// <summary>
/// 类型
/// </summary>
[Display(Name = "类型")]
[Required(ErrorMessage = "{0}是必填项")]
public EnumRecommendType Type { get; set; }
#endregion
#region Create
/// <summary>
/// 代码
/// </summary>
[Display(Name = "代码")]
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Code { get; set; }
#endregion
}

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

Loading…
Cancel
Save