From 4eafe9c975b88483da2a16f20c45285db0a3e791 Mon Sep 17 00:00:00 2001 From: zs <zhousong@weben-smart.com> Date: 周一, 05 5月 2025 21:33:05 +0800 Subject: [PATCH] 库存及库存明细 --- HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505121050_InitialCreate3.cs | 28 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfoDto.cs | 86 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialDto.cs | 4 HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505121050_InitialCreate3.Designer.cs | 1003 +++++++++ HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/MaterialCheckStatusEnum.cs | 35 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/WmsMaterialStocksExportModel.cs | 7 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialCreateOrUpdateDtoBase.cs | 4 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfoCreateDto.cs | 17 HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsPlaceController.cs | 4 HIAWms/web/src/config/menu.ts | 14 HIAWms/web/src/widgets/WmsMaterialStock/Models/WmsMaterialStock.ts | 41 HIAWms/web/src/widgets/WmsMaterialStock/Views/WmsMaterialStock.module.scss | 7 HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/CMSPluginDbContext.cs | 1 HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterialInfo导出模板.xlsx | 0 HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Scripts/UpdateMigrations.bat | 2 HIAWms/web/src/widgets/WmsMaterialStock/type/Type.d.ts | 45 HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterialStock导出模板.xlsx | 0 HIAWms/web/src/widgets/WmsMaterialStock/index.ts | 14 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfoUpdateDto.cs | 14 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsPlaceAppService.cs | 4 HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsAreaRepository.cs | 5 HIAWms/web/src/widgets/WmsMaterialStock/Views/Pages/Dialog/WmsMaterialStockDrawer/WmsMaterialStockDrawer.module.scss | 3 HIAWms/web/src/widgets/WmsMaterialStock/Controllers/File.ts | 31 HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialInfos/WmsMaterialInfoSpecification.cs | 41 HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505105851_InitialCreate2.Designer.cs | 998 +++++++++ HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/GetWmsMaterialsInput.cs | 6 HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialInfoAppService.cs | 350 +++ HIAWms/web/src/widgets/WmsMaterialStock/Views/Pages/Dialog/WmsMaterialStockDrawer/WmsMaterialStockDrawer.tsx | 61 HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs | 1 HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsPlaceAutoMapperProfile.cs | 2 HIAWms/web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/WmsMaterialStock.module.scss | 113 + HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsAreaAppService.cs | 2 HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterialInfo.cs | 120 + HIAWms/web/src/widgets/WmsMaterialStock/Models/Service/WmsMaterialStock.ts | 30 HIAWms/web/src/widgets/WmsMaterialStock/Models/Service/WmsMaterialStockDrawer.ts | 29 HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialInfos/WmsMaterialInfo.cs | 92 HIAWms/web/src/widgets/WmsMaterialStock/Views/config/WmsMaterialStock.json | 3 HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsPlaceAppService.cs | 8 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfosExportModel.cs | 77 HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialStocks/WmsMaterialStock.cs | 25 HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs | 328 +++ HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/WmsMaterialStockDto.cs | 16 HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterialInfos/WmsMaterialInfoEto.cs | 22 HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505105851_InitialCreate2.cs | 196 + HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/GetWmsMaterialStocksInput.cs | 4 HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialInfoRepository.cs | 100 HIAWms/web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.tsx | 8 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfoCreateOrUpdateDtoBase.cs | 77 HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialInfos/IWmsMaterialInfoRepository.cs | 54 HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs | 3 HIAWms/web/src/widgets/WmsMaterialStock/Controllers/WmsMaterialStock.ts | 264 ++ HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialInfos/WmsMaterialInfoDataSeedContributor.cs | 67 HIAWms/web/src/widgets/WmsMaterialStock/Models/WmsMaterialStockDrawer.ts | 38 HIAWms/web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/Config.ts | 55 HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsMaterialInfoAutoMapperProfile.cs | 28 HIAWms/server/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginDbContext.cs | 1 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfosImportModel.cs | 34 HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterial.cs | 6 HIAWms/web/src/widgets/WmsMaterialStock/enum.ts | 15 HIAWms/web/src/widgets/WmsContainer/Controllers/WmsContainer.ts | 68 HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialStockRepository.cs | 119 + HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialStockAppService.cs | 125 + HIAWms/web/src/widgets/WmsMaterialStock/Views/WmsMaterialStock.tsx | 80 HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterialStock.cs | 19 HIAWms/web/src/widgets/WmsMaterialStock/Controllers/WmsMaterialStockDrawer.tsx | 343 +++ HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterialInfos/WmsMaterialInfoConsts.cs | 17 HIAWms/web/src/widgets/HIAWms/Views/Pages/WmsMaterial/Config.ts | 4 HIAWms/web/components.d.ts | 1 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialsExportModel.cs | 5 HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsMaterialInfoController.cs | 187 + HIAWms/web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/WmsMaterialStock.tsx | 468 ++++ HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/WmsMaterialStockCreateOrUpdateDtoBase.cs | 7 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsMaterialInfoAppService.cs | 46 HIAWms/server/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginDbContext.cs | 1 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/GetWmsMaterialInfosInput.cs | 59 HIAWms/server/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsMaterialInfoEventHandler.cs | 17 HIAWms/web/src/widgets/WmsStoreInfo/Controllers/WmsAreaDrawer.ts | 4 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/GetWmsPlacesInput.cs | 2 78 files changed, 6,132 insertions(+), 83 deletions(-) diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/GetWmsMaterialInfosInput.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/GetWmsMaterialInfosInput.cs new file mode 100644 index 0000000..d68800b --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/GetWmsMaterialInfosInput.cs @@ -0,0 +1,59 @@ +using CMS.Plugin.HIAWms.Domain.Shared.Enums; +using Volo.Abp.Application.Dtos; + +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialInfos; + +/// <summary> +/// WmsMaterialInfo鏌ヨ鍙傛暟瀵硅薄 +/// </summary> +public class GetWmsMaterialInfosInput : ExtensiblePagedAndSortedResultRequestDto +{ + /// <summary> + /// Gets or sets the filter. + /// </summary> + public string Filter { get; set; } + + /// <summary> + /// Gets or sets the name. + /// </summary> + public string Name { get; set; } + /// <summary> + /// 鐗╂枡浠e彿 + /// </summary> + public string MaterialNo { get; set; } + + /// <summary> + /// 鐗╂枡鍚嶇О + /// </summary> + public string MaterialName { get; set; } + + /// <summary> + /// 鏈哄瀷 + /// </summary> + public string? MaterialModel { get; set; } + + /// <summary> + /// 鐗╂枡鍞竴鐮� + /// </summary> + public string MaterialId { get; set; } + + /// <summary> + /// 鏁伴噺 + /// </summary> + public int? StockNumber { get; set; } + + /// <summary> + /// 鐗╂枡鎵瑰彿 + /// </summary> + public string? MaterialBatch { get; set; } + + /// <summary> + /// 渚涘簲鍟嗙紪鍙� + /// </summary> + public string? SupplierCode { get; set; } + + /// <summary> + /// 妫�楠岀姸鎬� + /// </summary> + public MaterialCheckStatusEnum? CheckStatus { get; set; } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfoCreateDto.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfoCreateDto.cs new file mode 100644 index 0000000..1b51090 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfoCreateDto.cs @@ -0,0 +1,17 @@ +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialInfos; + +/// <summary> +/// WmsMaterialInfo鍒涘缓鍙傛暟瀵硅薄 +/// </summary> +public class WmsMaterialInfoCreateDto : WmsMaterialInfoCreateOrUpdateDtoBase +{ + /// <summary> + /// 鎺掑簭 + /// </summary> + public virtual int? Sort { get; set; } + + /// <summary> + /// 鏄惁绂佺敤 + /// </summary> + public bool? IsDisabled { get; set; } = false; +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfoCreateOrUpdateDtoBase.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfoCreateOrUpdateDtoBase.cs new file mode 100644 index 0000000..f634209 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfoCreateOrUpdateDtoBase.cs @@ -0,0 +1,77 @@ +using CMS.Plugin.HIAWms.Domain.Shared.Enums; +using Volo.Abp.Application.Dtos; + +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialInfos; + +/// <summary> +/// WmsMaterialInfo鍒涘缓鎴栨洿鏂板熀绫� +/// </summary> +public abstract class WmsMaterialInfoCreateOrUpdateDtoBase : ExtensibleEntityDto +{ + /// <summary> + /// 鐗╂枡浠e彿 + /// </summary> + public string MaterialNo { get; set; } + + /// <summary> + /// 鐗╂枡鍚嶇О + /// </summary> + public string MaterialName { get; set; } + + /// <summary> + /// 鏈哄瀷 + /// </summary> + public string? MaterialModel { get; set; } + + /// <summary> + /// 鐗╂枡鍞竴鐮� + /// </summary> + public string MaterialId { get; set; } + + /// <summary> + /// 鏁伴噺 + /// </summary> + public int? StockNumber { get; set; } + + /// <summary> + /// 鐗╂枡鎵瑰彿 + /// </summary> + public string? MaterialBatch { get; set; } + + /// <summary> + /// 渚涘簲鍟嗙紪鍙� + /// </summary> + public string? SupplierCode { get; set; } + + /// <summary> + /// 妫�楠岀姸鎬� + /// </summary> + public MaterialCheckStatusEnum? CheckStatus { get; set; } + + /// <summary> + /// 鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ�� + /// </summary> + public string RedundantField1 { get; set; } + + /// <summary> + /// 鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ�� + /// </summary> + public string RedundantField2 { get; set; } + + /// <summary> + /// 鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ�� + /// </summary> + public string RedundantField3 { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + public virtual string Remark { get; set; } + + /// <summary> + /// Initializes a new instance of the <see cref="WmsMaterialInfoCreateOrUpdateDtoBase"/> class. + /// </summary> + public WmsMaterialInfoCreateOrUpdateDtoBase() : base(false) + { + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfoDto.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfoDto.cs new file mode 100644 index 0000000..736a0b3 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfoDto.cs @@ -0,0 +1,86 @@ +using CMS.Plugin.HIAWms.Domain.Shared.Enums; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Domain.Entities; + +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialInfos; + +/// <summary> +/// WmsMaterialInfo鏁版嵁鍙傛暟瀵硅薄 +/// </summary> +public class WmsMaterialInfoDto : ExtensibleEntityDto<Guid>, IHasConcurrencyStamp +{ + /// <summary> + /// 鐗╂枡浠e彿 + /// </summary> + public string MaterialNo { get; set; } + + /// <summary> + /// 鐗╂枡鍚嶇О + /// </summary> + public string MaterialName { get; set; } + + /// <summary> + /// 鏈哄瀷 + /// </summary> + public string? MaterialModel { get; set; } + + /// <summary> + /// 鐗╂枡鍞竴鐮� + /// </summary> + public string MaterialId { get; set; } + + /// <summary> + /// 鏁伴噺 + /// </summary> + public int? StockNumber { get; set; } + + /// <summary> + /// 鐗╂枡鎵瑰彿 + /// </summary> + public string? MaterialBatch { get; set; } + + /// <summary> + /// 渚涘簲鍟嗙紪鍙� + /// </summary> + public string? SupplierCode { get; set; } + + /// <summary> + /// 妫�楠岀姸鎬� + /// </summary> + public MaterialCheckStatusEnum? CheckStatus { get; set; } + + /// <summary> + /// 鎺掑簭 + /// </summary> + public virtual int Sort { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + public virtual string Remark { get; set; } + + /// <summary> + /// 鏄惁绂佺敤 + /// </summary> + public virtual bool? IsDisabled { get; set; } + + /// <summary> + /// 骞跺彂鎴� + /// </summary> + public string ConcurrencyStamp { get; set; } + + /// <summary> + /// Gets the export data. + /// </summary> + /// <returns></returns> + public Dictionary<string, object> GetExportData() + { + var exportData = new Dictionary<string, object>(); + foreach (var property in this.GetType().GetProperties()) + { + exportData.Add(property.Name, property.GetValue(this)); + } + + return exportData; + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfoUpdateDto.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfoUpdateDto.cs new file mode 100644 index 0000000..aef6c50 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfoUpdateDto.cs @@ -0,0 +1,14 @@ +using Volo.Abp.Domain.Entities; + +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialInfos; + +/// <summary> +/// WmsMaterialInfo鏇存柊鍙傛暟瀵硅薄 +/// </summary> +public class WmsMaterialInfoUpdateDto : WmsMaterialInfoCreateOrUpdateDtoBase, IHasConcurrencyStamp +{ + /// <summary> + /// 骞跺彂鎴� + /// </summary> + public string ConcurrencyStamp { get; set; } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfosExportModel.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfosExportModel.cs new file mode 100644 index 0000000..481491c --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfosExportModel.cs @@ -0,0 +1,77 @@ +using CMS.Plugin.HIAWms.Domain.Shared.Enums; +using MiniExcelLibs.Attributes; + +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialInfos +{ + /// <summary> + /// WmsMaterialInfos瀵煎嚭妯″瀷 + /// </summary> + public class WmsMaterialInfosExportModel + { + /// <summary> + /// WmsMaterialInfo瀵煎嚭妯″瀷 + /// </summary> + public class WorkSectionExportModel + { + /// <summary> + /// 鐗╂枡缂栧彿 + /// </summary> + [ExcelColumn(Name = "鐗╂枡缂栧彿", Width = 20)] + public string MaterialNo { get; set; } + + /// <summary> + /// 鐗╂枡鍚嶇О + /// </summary> + [ExcelColumn(Name = "鐗╂枡鍚嶇О", Width = 25)] + public string MaterialName { get; set; } + + /// <summary> + /// 鏈哄瀷/瑙勬牸 + /// </summary> + [ExcelColumn(Name = "鏈哄瀷瑙勬牸", Width = 20)] + public string MaterialModel { get; set; } + + /// <summary> + /// 鐗╂枡鍞竴鐮� + /// </summary> + [ExcelColumn(Name = "鍞竴鏍囪瘑鐮�", Width = 25)] + public string MaterialId { get; set; } + + /// <summary> + /// 搴撳瓨鏁伴噺 + /// </summary> + [ExcelColumn(Name = "搴撳瓨鏁伴噺", Width = 15)] + public int? StockNumber { get; set; } + + /// <summary> + /// 鐗╂枡鎵规 + /// </summary> + [ExcelColumn(Name = "鐗╂枡鎵规", Width = 20)] + public string MaterialBatch { get; set; } + + /// <summary> + /// 渚涘簲鍟嗙紪鍙� + /// </summary> + [ExcelColumn(Name = "渚涘簲鍟嗙紪鍙�", Width = 25)] + public string SupplierCode { get; set; } + + /// <summary> + /// 妫�楠岀姸鎬� + /// </summary> + [ExcelColumn(Name = "妫�楠岀姸鎬�", Width = 25)] + public MaterialCheckStatusEnum? CheckStatus { get; set; } + + /// <summary> + /// 鍏ュ簱鏃堕棿 + /// </summary> + [ExcelColumn(Name = "鍏ュ簱鏃堕棿", Width = 25, Format = "yyyy-MM-dd HH:mm")] + public DateTime? InStockTime { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + [ExcelColumn(Name = "澶囨敞", Width = 30)] + public string Remark { get; set; } + } + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfosImportModel.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfosImportModel.cs new file mode 100644 index 0000000..954133d --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialInfos/WmsMaterialInfosImportModel.cs @@ -0,0 +1,34 @@ +using static CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialInfos.WmsMaterialInfosExportModel; + +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialInfos +{ + /// <summary> + /// WmsMaterialInfos瀵煎叆妯″瀷 + /// </summary> + public class WmsMaterialInfosImportModel + { + private List<WmsMaterialInfoImportModel> _wmsmaterialinfos = new(); + + public List<WmsMaterialInfoImportModel> WmsMaterialInfos + { + get => _wmsmaterialinfos; + set + { + _wmsmaterialinfos = value; + var rowIndex = 2; + _wmsmaterialinfos?.ForEach(x => x.RowIndex = rowIndex++); + } + } + + /// <summary> + /// WmsMaterialInfo瀵煎叆妯″瀷 + /// </summary> + public class WmsMaterialInfoImportModel : WorkSectionExportModel + { + /// <summary> + /// 琛屽彿 + /// </summary> + public int RowIndex { get; set; } + } + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/GetWmsMaterialStocksInput.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/GetWmsMaterialStocksInput.cs index a3bddeb..79db668 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/GetWmsMaterialStocksInput.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/GetWmsMaterialStocksInput.cs @@ -34,6 +34,10 @@ public virtual string MaterialId { get; set; } /// <summary> + /// 妫�楠岀姸鎬� + /// </summary> + public MaterialCheckStatusEnum? CheckStatus { get; set; } + /// <summary> /// 鍚嶇О /// </summary> public virtual string MaterialName { get; set; } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/WmsMaterialStockCreateOrUpdateDtoBase.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/WmsMaterialStockCreateOrUpdateDtoBase.cs index 8f776ef..c6da695 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/WmsMaterialStockCreateOrUpdateDtoBase.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/WmsMaterialStockCreateOrUpdateDtoBase.cs @@ -84,9 +84,14 @@ public string AreaName { get; set; } /// <summary> + /// 妫�楠岀姸鎬� + /// </summary> + public MaterialCheckStatusEnum? CheckStatus { get; set; } + + /// <summary> /// 鏄惁閿佸畾 /// </summary> - public int IsLock { get; set; } + public YesNoEnum IsLock { get; set; } /// <summary> /// 鏄惁绌烘墭 diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/WmsMaterialStockDto.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/WmsMaterialStockDto.cs index 722b8e6..16f60e0 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/WmsMaterialStockDto.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/WmsMaterialStockDto.cs @@ -132,6 +132,22 @@ public string AreaName { get; set; } /// <summary> + /// 妫�楠岀姸鎬� + /// </summary> + public MaterialCheckStatusEnum? CheckStatus { get; set; } + + /// <summary> + /// 妫�楠岀姸鎬� + /// </summary> + public string CheckStatusDesc + { + get + { + return GetEnumDescriptionUtil.GetEnumDescription(CheckStatus); + } + } + + /// <summary> /// 鏄惁閿佸畾 /// </summary> public YesNoEnum IsLock { get; set; } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/WmsMaterialStocksExportModel.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/WmsMaterialStocksExportModel.cs index 46f79ea..e9a10eb 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/WmsMaterialStocksExportModel.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/WmsMaterialStocksExportModel.cs @@ -102,11 +102,16 @@ public string AreaName { get; set; } /// <summary> + /// 妫�楠岀姸鎬� + /// </summary> + public MaterialCheckStatusEnum? CheckStatus { get; set; } + + /// <summary> /// 閿佸畾鐘舵�� /// <para>0-鏈攣瀹� 1-宸查攣瀹�</para> /// </summary> [ExcelColumn(Name = "鏄惁閿佸畾", Width = 25)] - public int IsLock { get; set; } + public YesNoEnum IsLock { get; set; } /// <summary> /// 鏄惁绌烘墭 diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/GetWmsMaterialsInput.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/GetWmsMaterialsInput.cs index 4a5d512..5427e01 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/GetWmsMaterialsInput.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/GetWmsMaterialsInput.cs @@ -28,6 +28,12 @@ /// </summary> public string MaterialName { get; set; } + + /// <summary> + /// 鍨嬪彿 + /// </summary> + public string MaterialModel { get; set; } + /// <summary> /// 閲囪喘绫诲瀷锛堟灇涓惧�硷級 /// </summary> diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialCreateOrUpdateDtoBase.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialCreateOrUpdateDtoBase.cs index 9d4e9c8..cfe0a7d 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialCreateOrUpdateDtoBase.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialCreateOrUpdateDtoBase.cs @@ -19,6 +19,10 @@ public string MaterialName { get; set; } /// <summary> + /// 鍨嬪彿 + /// </summary> + public string MaterialModel { get; set; } + /// <summary> /// 閲囪喘绫诲瀷锛堟灇涓惧�硷級 /// </summary> public PurchaseTypeEnum PurchaseType { get; set; } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialDto.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialDto.cs index 9681abf..d9cd88b 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialDto.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialDto.cs @@ -98,6 +98,10 @@ } /// <summary> + /// 鍨嬪彿 + /// </summary> + public string MaterialModel { get; set; } + /// <summary> /// 鐢熶骇宸ュ巶 /// </summary> public string Factory { get; set; } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialsExportModel.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialsExportModel.cs index 3a90013..e34c158 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialsExportModel.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialsExportModel.cs @@ -81,6 +81,11 @@ public string MaterialQuality { get; set; } /// <summary> + /// 鍨嬪彿 + /// </summary> + [ExcelColumn(Name = "鍨嬪彿", Width = 25)] + public string MaterialModel { get; set; } + /// <summary> /// 闀垮害锛堝崟浣嶏細绫筹級 /// </summary> /// <example>6.0</example> diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/GetWmsPlacesInput.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/GetWmsPlacesInput.cs index 11c2d01..64fea4b 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/GetWmsPlacesInput.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/GetWmsPlacesInput.cs @@ -6,7 +6,7 @@ /// <summary> /// WmsPlace鏌ヨ鍙傛暟瀵硅薄 /// </summary> -public class GetWmsPlacesInput : ExtensiblePagedAndSortedResultRequestDto +public class GetWmsMaterialInfoInput : ExtensiblePagedAndSortedResultRequestDto { /// <summary> /// Gets or sets the filter. diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsMaterialInfoAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsMaterialInfoAppService.cs new file mode 100644 index 0000000..970ee0b --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsMaterialInfoAppService.cs @@ -0,0 +1,46 @@ +using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialInfos; +using Volo.Abp.Application.Services; + +namespace CMS.Plugin.HIAWms.Application.Contracts.Services; + +/// <summary> +/// WmsMaterialInfo搴旂敤鏈嶅姟 +/// </summary> +public interface IWmsMaterialInfoAppService : ICrudAppService<WmsMaterialInfoDto, Guid, GetWmsMaterialInfosInput, WmsMaterialInfoCreateDto, WmsMaterialInfoUpdateDto> +{ + /// <summary> + /// Clones the asynchronous. + /// </summary> + /// <param name="ids">The ids.</param> + /// <returns></returns> + Task<List<WmsMaterialInfoDto>> CloneAsync(IEnumerable<Guid> ids); + + /// <summary> + /// Deletes the many asynchronous. + /// </summary> + /// <param name="ids">The ids.</param> + /// <returns></returns> + Task DeleteManyAsync(IEnumerable<Guid> ids); + + /// <summary> + /// Adjusts the sort asynchronous. + /// </summary> + /// <param name="id">The identifier.</param> + /// <param name="sort">The sort.</param> + /// <returns></returns> + Task AdjustSortAsync(Guid id, int sort); + + /// <summary> + /// Imports the asynchronous. + /// </summary> + /// <param name="input">The input.</param> + /// <returns></returns> + Task ImportAsync(WmsMaterialInfosImportModel input); + + /// <summary> + /// Exports the asynchronous. + /// </summary> + /// <param name="input">The input.</param> + /// <returns></returns> + Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsMaterialInfosInput input); +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsPlaceAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsPlaceAppService.cs index 5aa95c9..04c1832 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsPlaceAppService.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsPlaceAppService.cs @@ -6,7 +6,7 @@ /// <summary> /// WmsPlace搴旂敤鏈嶅姟 /// </summary> -public interface IWmsPlaceAppService : ICrudAppService<WmsPlaceDto, Guid, GetWmsPlacesInput, WmsPlaceCreateDto, WmsPlaceUpdateDto> +public interface IWmsPlaceAppService : ICrudAppService<WmsPlaceDto, Guid, GetWmsMaterialInfoInput, WmsPlaceCreateDto, WmsPlaceUpdateDto> { /// <summary> /// Clones the asynchronous. @@ -42,5 +42,5 @@ /// </summary> /// <param name="input">The input.</param> /// <returns></returns> - Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsPlacesInput input); + Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsMaterialInfoInput input); } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsAreaAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsAreaAppService.cs index 044e7d3..cbbdf8e 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsAreaAppService.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsAreaAppService.cs @@ -236,7 +236,7 @@ throw new UserFriendlyException(errorMsg); } - var oldWmsArea = await _wmsareaRepository.FindByNameAsync(wmsarea.AreaName); + var oldWmsArea = await _wmsareaRepository.FindByNameAsync(wmsarea.AreaNo); if (oldWmsArea != null) { var wmsareaUpdateDto = new WmsAreaUpdateDto diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs index c70214a..8231e75 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs @@ -105,6 +105,7 @@ wmsmaterial.Length = input.Length; wmsmaterial.IsMainBranch = input.IsMainBranch; wmsmaterial.Factory = input.Factory; + wmsmaterial.MaterialModel = input.MaterialModel; wmsmaterial.Certification = input.Certification; await _wmsmaterialRepository.UpdateAsync(wmsmaterial); diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialInfoAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialInfoAppService.cs new file mode 100644 index 0000000..d25bdf5 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialInfoAppService.cs @@ -0,0 +1,350 @@ +using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialInfos; +using CMS.Plugin.HIAWms.Application.Contracts.Services; +using CMS.Plugin.HIAWms.Domain.WmsMaterialInfos; +using CMS.Plugin.HIAWms.Domain.Shared; +using CMS.Plugin.HIAWms.Domain.Shared.WmsMaterialInfos; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Data; +using Volo.Abp.ObjectExtending; +using Volo.Abp.ObjectMapping; + +namespace CMS.Plugin.HIAWms.Application.Implements; + +/// <inheritdoc /> +public class WmsMaterialInfoAppService : CMSPluginAppService, IWmsMaterialInfoAppService +{ + private readonly IWmsMaterialInfoRepository _wmsmaterialinfoRepository; + + /// <summary> + /// Initializes a new instance of the <see cref="WmsMaterialInfoAppService"/> class. + /// </summary> + /// <param name="wmsmaterialinfoRepository">The task job repository.</param> + public WmsMaterialInfoAppService(IWmsMaterialInfoRepository wmsmaterialinfoRepository) + { + _wmsmaterialinfoRepository = wmsmaterialinfoRepository; + } + + /// <inheritdoc /> + public virtual async Task<WmsMaterialInfoDto> GetAsync(Guid id) + { + return ObjectMapper.Map<WmsMaterialInfo, WmsMaterialInfoDto>(await _wmsmaterialinfoRepository.GetAsync(id)); + } + + /// <inheritdoc /> + public virtual async Task<PagedResultDto<WmsMaterialInfoDto>> GetListAsync(GetWmsMaterialInfosInput input) + { + Check.NotNull(input, nameof(input)); + + if (input.Sorting.IsNullOrWhiteSpace()) + { + input.Sorting = nameof(WmsMaterialInfo.Sort); + } + + var specification = new WmsMaterialInfoSpecification(input.Name); + var materialInfo = ObjectMapper.Map<GetWmsMaterialInfosInput, WmsMaterialInfo>(input); + var count = await _wmsmaterialinfoRepository.GetCountAsync(materialInfo,input.Filter, specification); + var list = await _wmsmaterialinfoRepository.GetListAsync(materialInfo,input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter, specification); + + return new PagedResultDto<WmsMaterialInfoDto>(count, ObjectMapper.Map<List<WmsMaterialInfo>, List<WmsMaterialInfoDto>>(list)); + } + + /// <inheritdoc /> + public virtual async Task<WmsMaterialInfoDto> CreateAsync(WmsMaterialInfoCreateDto input) + { + await CheckCreateOrUpdateDtoAsync(input); + + var exist = await _wmsmaterialinfoRepository.NameExistAsync(input.MaterialNo); + if (exist) + { + throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialNo]); + } + + var maxSort = await _wmsmaterialinfoRepository.GetMaxSortAsync(); + var sort = input.Sort ?? maxSort; + var wmsmaterialinfo = ObjectMapper.Map<WmsMaterialInfoCreateDto, WmsMaterialInfo>(input); + input.MapExtraPropertiesTo(wmsmaterialinfo, MappingPropertyDefinitionChecks.None); + wmsmaterialinfo.Sort = sort; + await _wmsmaterialinfoRepository.InsertAsync(wmsmaterialinfo); + + if (input.Sort.HasValue && wmsmaterialinfo.Sort != maxSort) + { + await AdjustSortAsync(wmsmaterialinfo.Id, wmsmaterialinfo.Sort); + } + + return ObjectMapper.Map<WmsMaterialInfo, WmsMaterialInfoDto>(wmsmaterialinfo); + } + + /// <inheritdoc /> + public virtual async Task<WmsMaterialInfoDto> UpdateAsync(Guid id, WmsMaterialInfoUpdateDto input) + { + await CheckCreateOrUpdateDtoAsync(input); + + var wmsMaterialInfo = await _wmsmaterialinfoRepository.GetAsync(id); + var exist = await _wmsmaterialinfoRepository.NameExistAsync(input.MaterialNo, wmsMaterialInfo.Id); + if (exist) + { + throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialNo]); + } + + wmsMaterialInfo.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp); + input.MapExtraPropertiesTo(wmsMaterialInfo, MappingPropertyDefinitionChecks.None); + + wmsMaterialInfo.MaterialNo = input.MaterialNo; + wmsMaterialInfo.MaterialName = input.MaterialName; + wmsMaterialInfo.MaterialModel = input.MaterialModel; + wmsMaterialInfo.MaterialId = input.MaterialId; + wmsMaterialInfo.StockNumber = input.StockNumber; + wmsMaterialInfo.MaterialBatch = input.MaterialBatch; + wmsMaterialInfo.SupplierCode = input.SupplierCode; + wmsMaterialInfo.CheckStatus = input.CheckStatus; + wmsMaterialInfo.RedundantField1 = input.RedundantField1; + wmsMaterialInfo.RedundantField2 = input.RedundantField2; + wmsMaterialInfo.RedundantField3 = input.RedundantField3; + wmsMaterialInfo.Remark = input.Remark; + + await _wmsmaterialinfoRepository.UpdateAsync(wmsMaterialInfo); + + return ObjectMapper.Map<WmsMaterialInfo, WmsMaterialInfoDto>(wmsMaterialInfo); + } + + /// <inheritdoc /> + public async Task<List<WmsMaterialInfoDto>> CloneAsync(IEnumerable<Guid> ids) + { + var wmsmaterialinfos = new List<WmsMaterialInfo>(); + if (ids != null) + { + var sort = await _wmsmaterialinfoRepository.GetMaxSortAsync(); + foreach (var id in ids) + { + var wmsmaterialinfo = await _wmsmaterialinfoRepository.FindAsync(id); + if (wmsmaterialinfo != null) + { + var name = wmsmaterialinfo.MaterialName + WmsMaterialInfoConsts.CloneTag; + var notExist = false; + while (!notExist) + { + var exist = await _wmsmaterialinfoRepository.NameExistAsync(name); + if (exist || wmsmaterialinfos.Any(x => x.MaterialName == name)) + { + name += WmsMaterialInfoConsts.CloneTag; + continue; + } + + notExist = true; + } + + //wmsmaterialinfo = await _wmsmaterialinfoRepository.InsertAsync(wmsmaterialinfo.Clone(GuidGenerator.Create(), name, sort++)); + wmsmaterialinfos.Add(wmsmaterialinfo); + } + } + } + + return ObjectMapper.Map<List<WmsMaterialInfo>, List<WmsMaterialInfoDto>>(wmsmaterialinfos); + } + + /// <inheritdoc /> + public virtual Task DeleteAsync(Guid id) + { + return _wmsmaterialinfoRepository.DeleteAsync(id); + } + + /// <inheritdoc /> + public async Task DeleteManyAsync(IEnumerable<Guid> ids) + { + foreach (var id in ids) + { + await DeleteAsync(id); + } + } + + /// <inheritdoc /> + public virtual async Task AdjustSortAsync(Guid id, int sort) + { + var list = await _wmsmaterialinfoRepository.GetListAsync(null,nameof(WmsMaterialInfo.Sort)); + if (list != null && list.Any()) + { + var initSort = 1; + list.ForEach(x => x.AdjustSort(initSort++)); + var entity = list.FirstOrDefault(x => x.Id == id); + if (entity != null) + { + if (sort == 1) + { + list.Where(x => x.Id != id).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1)); + } + else if (entity.Sort > sort) + { + list.Where(x => x.Id != id && x.Sort >= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1)); + list.Where(x => x.Id != id && x.Sort < sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1)); + } + else if (entity.Sort < sort) + { + list.Where(x => x.Id != id && x.Sort > sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1)); + list.Where(x => x.Id != id && x.Sort <= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1)); + } + + entity.AdjustSort(sort); + } + } + + await _wmsmaterialinfoRepository.UpdateManyAsync(list); + } + + /// <inheritdoc /> + public async Task ImportAsync(WmsMaterialInfosImportModel input) + { + Check.NotNull(input, nameof(input)); + + var wmsmaterialinfoCreateDtos = new List<(int RowIndex, WmsMaterialInfoCreateDto Item)>(); + var wmsmaterialinfoUpdateDtos = new List<(int RowIndex, Guid Id, WmsMaterialInfoUpdateDto Item)>(); + var wmsmaterialinfos = input.WmsMaterialInfos; + + if (wmsmaterialinfos != null && wmsmaterialinfos.Any()) + { + #region 瀵煎叆鏍¢獙 + + // 鍒ゆ柇鍚嶇О鏄惁閲嶅锛屽苟杈撳嚭绗嚑琛岄噸澶� + var duplicateWmsMaterialInfos = wmsmaterialinfos.GroupBy(x => x.MaterialNo).Where(x => x.Count() > 1).ToList(); + if (duplicateWmsMaterialInfos?.Any() == true) + { + var duplicateWmsMaterialInfoMsgs = duplicateWmsMaterialInfos.Select(x => $"绗� {string.Join(",", x.Select(x => x.RowIndex))} 琛岋細{x.Key} 鍚嶇О閲嶅"); + var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝 {string.Join(",", duplicateWmsMaterialInfoMsgs)}锛岀粓姝㈠鍏�"; + throw new UserFriendlyException(errorMsg); + } + + #endregion + + foreach (var wmsmaterialinfo in wmsmaterialinfos) + { + if (wmsmaterialinfo.MaterialNo.IsNullOrWhiteSpace() && wmsmaterialinfo.MaterialNo.IsNullOrWhiteSpace()) + { + continue; + } + + if (wmsmaterialinfo.MaterialNo.IsNullOrWhiteSpace()) + { + var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsmaterialinfo.RowIndex}琛岋細WmsMaterialInfo鍚嶇О涓嶈兘涓虹┖"; + throw new UserFriendlyException(errorMsg); + } + + var oldWmsMaterialInfo = await _wmsmaterialinfoRepository.FindByNameAsync(wmsmaterialinfo.MaterialNo); + if (oldWmsMaterialInfo != null) + { + var wmsmaterialinfoUpdateDto = new WmsMaterialInfoUpdateDto + { + MaterialNo = wmsmaterialinfo.MaterialNo, + MaterialName = wmsmaterialinfo.MaterialName, + MaterialId = wmsmaterialinfo.MaterialId, + + // 鐗╂枡鐗规�� + MaterialModel = wmsmaterialinfo.MaterialModel, + MaterialBatch = wmsmaterialinfo.MaterialBatch, + StockNumber = wmsmaterialinfo.StockNumber, + + // 渚涘簲鍟嗕俊鎭� + SupplierCode = wmsmaterialinfo.SupplierCode, + + // 鐘舵�佷俊鎭� + CheckStatus = wmsmaterialinfo.CheckStatus, + + // 绯荤粺瀛楁 + Remark = wmsmaterialinfo.Remark, + }; + + wmsmaterialinfoUpdateDtos.Add((wmsmaterialinfo.RowIndex, oldWmsMaterialInfo.Id, wmsmaterialinfoUpdateDto)); + } + else + { + var wmsmaterialinfoCreateDto = new WmsMaterialInfoCreateDto + { + MaterialNo = wmsmaterialinfo.MaterialNo, + MaterialName = wmsmaterialinfo.MaterialName, + MaterialId = wmsmaterialinfo.MaterialId, + + // 鐗╂枡鐗规�� + MaterialModel = wmsmaterialinfo.MaterialModel, + MaterialBatch = wmsmaterialinfo.MaterialBatch, + StockNumber = wmsmaterialinfo.StockNumber, + + // 渚涘簲鍟嗕俊鎭� + SupplierCode = wmsmaterialinfo.SupplierCode, + + // 鐘舵�佷俊鎭� + CheckStatus = wmsmaterialinfo.CheckStatus, + + // 绯荤粺瀛楁 + Remark = wmsmaterialinfo.Remark, + }; + + wmsmaterialinfoCreateDtos.Add((wmsmaterialinfo.RowIndex, wmsmaterialinfoCreateDto)); + } + } + } + + // 鏂板 + foreach (var wmsmaterialinfoDto in wmsmaterialinfoCreateDtos) + { + try + { + await CreateAsync(wmsmaterialinfoDto.Item); + } + catch (Exception e) + { + var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsmaterialinfoDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�"; + throw new UserFriendlyException(errorMsg); + } + } + + // 鏇存柊 + foreach (var wmsmaterialinfoDto in wmsmaterialinfoUpdateDtos) + { + try + { + await UpdateAsync(wmsmaterialinfoDto.Id, wmsmaterialinfoDto.Item); + } + catch (Exception e) + { + var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsmaterialinfoDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�"; + throw new UserFriendlyException(errorMsg); + } + } + } + + /// <inheritdoc /> + public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsMaterialInfosInput input) + { + Check.NotNull(input, nameof(input)); + + if (input.Sorting.IsNullOrWhiteSpace()) + { + input.Sorting = nameof(WmsMaterialInfo.Sort); + } + + var specification = new WmsMaterialInfoSpecification(input.Name); + var materialInfo = ObjectMapper.Map<GetWmsMaterialInfosInput, WmsMaterialInfo>(input); + var list = await _wmsmaterialinfoRepository.GetListAsync(materialInfo,input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter, specification, includeDetails: true); + var result = ObjectMapper.Map<List<WmsMaterialInfo>, List<WmsMaterialInfoDto>>(list); + + var sheets = new Dictionary<string, object> + { + ["閰嶇疆"] = result.Select(x => x.GetExportData()).ToList(), + }; + + var fileName = result.Count > 1 ? "WmsMaterialInfo鍒楄〃" : result.Count == 1 ? result.First()?.MaterialNo : "WmsMaterialInfo妯$増"; + return (sheets, fileName); + } + + /// <summary> + /// Checks the create or update dto asynchronous. + /// </summary> + /// <param name="input">The input.</param> + protected Task CheckCreateOrUpdateDtoAsync(WmsMaterialInfoCreateOrUpdateDtoBase input) + { + Check.NotNull(input, nameof(input)); + Check.NotNullOrWhiteSpace(input.MaterialNo, "缂栧彿", WmsMaterialInfoConsts.MaxMaterialIdLength); + Check.NotNullOrWhiteSpace(input.MaterialName, "鍚嶇О", WmsMaterialInfoConsts.MaxMaterialIdLength); + Check.Length(input.Remark, "澶囨敞", WmsMaterialInfoConsts.MaxRemarkLength); + return Task.CompletedTask; + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialStockAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialStockAppService.cs index 6b88e6a..4f3b9ee 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialStockAppService.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialStockAppService.cs @@ -8,6 +8,10 @@ using Volo.Abp.Data; using Volo.Abp.ObjectExtending; using CMS.Plugin.HIAWms.Domain.Shared.Util; +using CMS.Plugin.HIAWms.Domain.WmsMaterials; +using CMS.Plugin.HIAWms.Domain.WmsContainers; +using CMS.Plugin.HIAWms.Domain.WmsPlaces; +using CMS.Plugin.HIAWms.Domain.WmsAreas; namespace CMS.Plugin.HIAWms.Application.Implements; @@ -15,14 +19,27 @@ public class WmsMaterialStockAppService : CMSPluginAppService, IWmsMaterialStockAppService { private readonly IWmsMaterialStockRepository _wmsmaterialstockRepository; + private readonly IWmsMaterialRepository _wmsMaterialRepository; + private readonly IWmsContainerRepository _wmscontainerRepository; + private readonly IWmsPlaceRepository _wmsplaceRepository; + private readonly IWmsAreaRepository _wmsareaRepository; /// <summary> /// Initializes a new instance of the <see cref="WmsMaterialStockAppService"/> class. /// </summary> /// <param name="wmsmaterialstockRepository">The task job repository.</param> - public WmsMaterialStockAppService(IWmsMaterialStockRepository wmsmaterialstockRepository) + public WmsMaterialStockAppService(IWmsMaterialStockRepository wmsmaterialstockRepository, + IWmsMaterialRepository wmsMaterialRepository, + IWmsContainerRepository wmscontainerRepository, + IWmsPlaceRepository wmsplaceRepository, + IWmsAreaRepository wmsareaRepository + ) { _wmsmaterialstockRepository = wmsmaterialstockRepository; + _wmsMaterialRepository = wmsMaterialRepository; + _wmscontainerRepository = wmscontainerRepository; + _wmsplaceRepository = wmsplaceRepository; + _wmsareaRepository = wmsareaRepository; } /// <inheritdoc /> @@ -54,19 +71,60 @@ { await CheckCreateOrUpdateDtoAsync(input); - var exist = await _wmsmaterialstockRepository.NameExistAsync(input.MaterialNo); - if (exist) + //var exist = await _wmsmaterialstockRepository.NameExistAsync(input.MaterialNo); + //if (exist) + //{ + // throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialNo]); + //} + var material = await _wmsMaterialRepository.FindByNameAsync(input.MaterialNo); + if(material == null) { - throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialNo]); + throw new UserFriendlyException("鐗╂枡淇℃伅涓嶅瓨鍦�"); } - + var container = await _wmscontainerRepository.FindByNameAsync(input.ContainerNo); + if (container == null) + { + throw new UserFriendlyException("鎵樼洏淇℃伅涓嶅瓨鍦�"); + } + var place = await _wmsplaceRepository.FindByNameAsync(input.PlaceNo); + if(place == null) + { + throw new UserFriendlyException("搴撲綅淇℃伅涓嶅瓨鍦�"); + } + var area = await _wmsareaRepository.FindByNameAsync(place.AreaCode); + if(area == null) + { + throw new UserFriendlyException("搴撲綅搴撳尯淇℃伅涓嶅瓨鍦�"); + } var maxSort = await _wmsmaterialstockRepository.GetMaxSortAsync(); var sort = input.Sort ?? maxSort; var wmsmaterialstock = ObjectMapper.Map<WmsMaterialStockCreateDto, WmsMaterialStock>(input); input.MapExtraPropertiesTo(wmsmaterialstock, MappingPropertyDefinitionChecks.None); + wmsmaterialstock.MaterialId = Guid.NewGuid().ToString("N"); + material.MaterialName = material.MaterialName; + + wmsmaterialstock.ContainerStatus = Domain.Shared.Enums.ContainerStatusEnum.KUWEI; + wmsmaterialstock.ContainerType = container.ContainerType; + + wmsmaterialstock.PlaceStatus = Domain.Shared.Enums.PlaceStatusEnum.CUNHUO; + wmsmaterialstock.StorageTypeNo = place.StorageTypeNo; + wmsmaterialstock.AreaCode = place.AreaCode; + wmsmaterialstock.AreaName = area.AreaName; + + wmsmaterialstock.MaterialModel = material.MaterialModel; + wmsmaterialstock.MaterialBatch = input.MaterialBatch; + wmsmaterialstock.Sort = sort; wmsmaterialstock.InStockTime = DateTime.Now; await _wmsmaterialstockRepository.InsertAsync(wmsmaterialstock); + + + container.ContainerStatus = Domain.Shared.Enums.ContainerStatusEnum.KUWEI; + place.PlaceStatus = Domain.Shared.Enums.PlaceStatusEnum.CUNHUO; + place.Islock = input.IsLock; + + await _wmscontainerRepository.UpdateAsync(container); + await _wmsplaceRepository.UpdateAsync(place); if (input.Sort.HasValue && wmsmaterialstock.Sort != maxSort) { @@ -82,35 +140,62 @@ await CheckCreateOrUpdateDtoAsync(input); var wmsmaterialstock = await _wmsmaterialstockRepository.GetAsync(id); - var exist = await _wmsmaterialstockRepository.NameExistAsync(input.MaterialNo, wmsmaterialstock.Id); - if (exist) + //var exist = await _wmsmaterialstockRepository.NameExistAsync(input.MaterialNo, wmsmaterialstock.Id); + //if (exist) + //{ + // throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialNo]); + //} + var material = await _wmsMaterialRepository.FindByNameAsync(input.MaterialNo); + if (material == null) { - throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialNo]); + throw new UserFriendlyException("鐗╂枡淇℃伅涓嶅瓨鍦�"); } - + var container = await _wmscontainerRepository.FindByNameAsync(input.ContainerNo); + if (container == null) + { + throw new UserFriendlyException("鎵樼洏淇℃伅涓嶅瓨鍦�"); + } + var place = await _wmsplaceRepository.FindByNameAsync(input.PlaceNo); + if (place == null) + { + throw new UserFriendlyException("搴撲綅淇℃伅涓嶅瓨鍦�"); + } + var area = await _wmsareaRepository.FindByNameAsync(place.AreaCode); + if (area == null) + { + throw new UserFriendlyException("搴撲綅搴撳尯淇℃伅涓嶅瓨鍦�"); + } wmsmaterialstock.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp); input.MapExtraPropertiesTo(wmsmaterialstock, MappingPropertyDefinitionChecks.None); - wmsmaterialstock.MaterialNo = input.MaterialNo; - wmsmaterialstock.MaterialName = input.MaterialName; wmsmaterialstock.ContainerNo = input.ContainerNo; - wmsmaterialstock.ContainerStatus = input.ContainerStatus; - wmsmaterialstock.ContainerType = input.ContainerType; wmsmaterialstock.StockNumber = input.StockNumber; - wmsmaterialstock.MaterialBatch = input.MaterialBatch; - wmsmaterialstock.SupplierCode = input.SupplierCode; - wmsmaterialstock.MaterialModel = input.MaterialModel; wmsmaterialstock.PlaceNo = input.PlaceNo; - wmsmaterialstock.PlaceStatus = input.PlaceStatus; - wmsmaterialstock.StorageTypeNo = input.StorageTypeNo; - wmsmaterialstock.AreaCode = input.AreaCode; - wmsmaterialstock.AreaName = input.AreaName; wmsmaterialstock.IsLock = input.IsLock; wmsmaterialstock.InStockTime = input.InStockTime; wmsmaterialstock.Remark = input.Remark; + wmsmaterialstock.MaterialName = material.MaterialName; + wmsmaterialstock.ContainerStatus = Domain.Shared.Enums.ContainerStatusEnum.KUWEI; + wmsmaterialstock.ContainerType = container.ContainerType; + + wmsmaterialstock.PlaceStatus = Domain.Shared.Enums.PlaceStatusEnum.CUNHUO; + wmsmaterialstock.StorageTypeNo = place.StorageTypeNo; + wmsmaterialstock.AreaCode = place.AreaCode; + wmsmaterialstock.AreaName = area.AreaName; + + wmsmaterialstock.MaterialModel = material.MaterialModel; + wmsmaterialstock.MaterialBatch = input.MaterialBatch; + await _wmsmaterialstockRepository.UpdateAsync(wmsmaterialstock); + container.ContainerStatus = Domain.Shared.Enums.ContainerStatusEnum.KUWEI; + place.PlaceStatus = Domain.Shared.Enums.PlaceStatusEnum.CUNHUO; + place.Islock = input.IsLock; + + await _wmscontainerRepository.UpdateAsync(container); + await _wmsplaceRepository.UpdateAsync(place); + return ObjectMapper.Map<WmsMaterialStock, WmsMaterialStockDto>(wmsmaterialstock); } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsPlaceAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsPlaceAppService.cs index 8d3b362..8c94ab0 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsPlaceAppService.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsPlaceAppService.cs @@ -32,7 +32,7 @@ } /// <inheritdoc /> - public virtual async Task<PagedResultDto<WmsPlaceDto>> GetListAsync(GetWmsPlacesInput input) + public virtual async Task<PagedResultDto<WmsPlaceDto>> GetListAsync(GetWmsMaterialInfoInput input) { Check.NotNull(input, nameof(input)); @@ -42,7 +42,7 @@ } var specification = new WmsPlaceSpecification(input.Name); - var place = ObjectMapper.Map<GetWmsPlacesInput, WmsPlace>(input); + var place = ObjectMapper.Map<GetWmsMaterialInfoInput, WmsPlace>(input); var count = await _wmsplaceRepository.GetCountAsync(place,input.Filter, specification); var list = await _wmsplaceRepository.GetListAsync(place, input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter, specification); @@ -285,7 +285,7 @@ } /// <inheritdoc /> - public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsPlacesInput input) + public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsMaterialInfoInput input) { Check.NotNull(input, nameof(input)); @@ -295,7 +295,7 @@ } var specification = new WmsPlaceSpecification(input.Name); - var place = ObjectMapper.Map<GetWmsPlacesInput, WmsPlace>(input); + var place = ObjectMapper.Map<GetWmsMaterialInfoInput, WmsPlace>(input); var list = await _wmsplaceRepository.GetListAsync(place, input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter, specification, includeDetails: true); var result = ObjectMapper.Map<List<WmsPlace>, List<WmsPlaceDto>>(list); diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsMaterialInfoAutoMapperProfile.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsMaterialInfoAutoMapperProfile.cs new file mode 100644 index 0000000..3c94602 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsMaterialInfoAutoMapperProfile.cs @@ -0,0 +1,28 @@ +using AutoMapper; +using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialInfos; +using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsPlaces; +using CMS.Plugin.HIAWms.Domain.WmsMaterialInfos; +using CMS.Plugin.HIAWms.Domain.WmsPlaces; +using Volo.Abp.ObjectExtending; + +namespace CMS.Plugin.HIAWms.Application.MapperProfiles; + +/// <summary> +/// AutoMapper閰嶇疆 +/// </summary> +/// <seealso cref="AutoMapper.Profile" /> +public class WmsMaterialInfoAutoMapperProfile : Profile +{ + /// <summary> + /// Initializes a new instance of the <see cref="WmsMaterialInfoAutoMapperProfile"/> class. + /// </summary> + public WmsMaterialInfoAutoMapperProfile() + { + /* You can configure your AutoMapper mapping configuration here. + * Alternatively, you can split your mapping configurations + * into multiple profile classes for a better organization. */ + CreateMap<WmsMaterialInfo, WmsMaterialInfoDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); + CreateMap<WmsMaterialInfoCreateDto, WmsMaterialInfo>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); + CreateMap<GetWmsMaterialInfoInput, WmsMaterialInfo>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsPlaceAutoMapperProfile.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsPlaceAutoMapperProfile.cs index f58553d..85c14d0 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsPlaceAutoMapperProfile.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsPlaceAutoMapperProfile.cs @@ -21,6 +21,6 @@ * into multiple profile classes for a better organization. */ CreateMap<WmsPlace, WmsPlaceDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); CreateMap<WmsPlaceCreateDto, WmsPlace>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); - CreateMap<GetWmsPlacesInput, WmsPlace>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); + CreateMap<GetWmsMaterialInfoInput, WmsPlace>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); } } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/MaterialCheckStatusEnum.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/MaterialCheckStatusEnum.cs new file mode 100644 index 0000000..0d9125d --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/MaterialCheckStatusEnum.cs @@ -0,0 +1,35 @@ +锘縰sing System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CMS.Plugin.HIAWms.Domain.Shared.Enums +{ + /// <summary> + /// 搴撳瓨鐗╂枡鐨勬楠岀姸鎬� + /// </summary> + [Description("搴撳瓨鐗╂枡鐨勬楠岀姸鎬�")] + public enum MaterialCheckStatusEnum + { + /// <summary> + /// 鏈楠� + /// </summary> + [Description("鏈楠�")] + WEIJIANYAN = 1, + + /// <summary> + /// 鍚堟牸 + /// </summary> + [Description("鍚堟牸")] + HEGE = 2, + + /// <summary> + /// 涓嶅悎鏍� + /// </summary> + [Description("涓嶅悎鏍�")] + BUHEGE = 3, + + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterialInfos/WmsMaterialInfoConsts.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterialInfos/WmsMaterialInfoConsts.cs new file mode 100644 index 0000000..a7bdf8e --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterialInfos/WmsMaterialInfoConsts.cs @@ -0,0 +1,17 @@ +namespace CMS.Plugin.HIAWms.Domain.Shared.WmsMaterialInfos; + +/// <summary> +/// WmsMaterialInfo甯搁噺瀹氫箟 +/// </summary> +public static class WmsMaterialInfoConsts +{ + public const string CloneTag = "_鍓湰"; + public const int MaxMaterialNoLength = 50; + public const int MaxMaterialNameLength = 100; + public const int MaxMaterialModelLength = 50; + public const int MaxMaterialIdLength = 64; + public const int MaxMaterialBatchLength = 50; + public const int MaxSupplierCodeLength = 50; + public const int MaxRedundantFieldLength = 255; + public const int MaxRemarkLength = 500; +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterialInfos/WmsMaterialInfoEto.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterialInfos/WmsMaterialInfoEto.cs new file mode 100644 index 0000000..0757427 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterialInfos/WmsMaterialInfoEto.cs @@ -0,0 +1,22 @@ +namespace CMS.Plugin.HIAWms.Domain.Shared.WmsMaterialInfos; + +/// <summary> +/// WmsMaterialInfo浜嬩欢鍙傛暟瀵硅薄 +/// </summary> +[Serializable] +public class WmsMaterialInfoEto +{ + /// <summary> + /// Initializes a new instance of the <see cref="WmsMaterialInfoEto"/> class. + /// </summary> + /// <param name="name">The name.</param> + public WmsMaterialInfoEto(string name) + { + Name = name; + } + + /// <summary> + /// 鍚嶇О + /// </summary> + public string Name { get; } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsMaterialInfoEventHandler.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsMaterialInfoEventHandler.cs new file mode 100644 index 0000000..a8efffc --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsMaterialInfoEventHandler.cs @@ -0,0 +1,17 @@ +using CMS.Plugin.HIAWms.Domain.Shared.WmsMaterialInfos; +using Volo.Abp.DependencyInjection; +using Volo.Abp.EventBus.Distributed; + +namespace CMS.Plugin.HIAWms.Domain.EventHandlers; + +/// <summary> +/// WmsMaterialInfo浜嬩欢澶勭悊绋嬪簭 +/// </summary> +public class WmsMaterialInfoEventHandler : IDistributedEventHandler<WmsMaterialInfoEto>, ITransientDependency +{ + /// <inheritdoc /> + public Task HandleEventAsync(WmsMaterialInfoEto eventData) + { + return Task.CompletedTask; + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialInfos/IWmsMaterialInfoRepository.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialInfos/IWmsMaterialInfoRepository.cs new file mode 100644 index 0000000..d3f08ec --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialInfos/IWmsMaterialInfoRepository.cs @@ -0,0 +1,54 @@ +using Volo.Abp.Domain.Repositories; +using Volo.Abp.Specifications; + +namespace CMS.Plugin.HIAWms.Domain.WmsMaterialInfos; + +/// <summary> +/// WmsMaterialInfo浠撳偍 +/// </summary> +public interface IWmsMaterialInfoRepository : IBasicRepository<WmsMaterialInfo, Guid> +{ + /// <summary> + /// Finds the by name asynchronous. + /// </summary> + /// <param name="name">The name.</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns></returns> + Task<WmsMaterialInfo> FindByNameAsync(string name, CancellationToken cancellationToken = default); + + /// <summary> + /// Names the exist asynchronous. + /// </summary> + /// <param name="name">The name.</param> + /// <param name="id">The identifier.</param> + /// <returns></returns> + Task<bool> NameExistAsync(string name, Guid? id = null); + + /// <summary> + /// Gets the maximum sort asynchronous. + /// </summary> + /// <returns></returns> + Task<int> GetMaxSortAsync(); + + /// <summary> + /// Gets the list asynchronous. + /// </summary> + /// <param name="sorting">The sorting.</param> + /// <param name="maxResultCount">The maximum result count.</param> + /// <param name="skipCount">The skip count.</param> + /// <param name="filter">The filter.</param> + /// <param name="specification">The specification.</param> + /// <param name="includeDetails">if set to <c>true</c> [include details].</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns></returns> + Task<List<WmsMaterialInfo>> GetListAsync(WmsMaterialInfo? materialInfo, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, string filter = null, Specification<WmsMaterialInfo> specification = null, bool includeDetails = false, CancellationToken cancellationToken = default); + + /// <summary> + /// Gets the count asynchronous. + /// </summary> + /// <param name="filter">The filter.</param> + /// <param name="specification">The specification.</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns></returns> + Task<long> GetCountAsync(WmsMaterialInfo? materialInfo, string filter = null, Specification<WmsMaterialInfo> specification = null, CancellationToken cancellationToken = default); +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialInfos/WmsMaterialInfo.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialInfos/WmsMaterialInfo.cs new file mode 100644 index 0000000..57fa045 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialInfos/WmsMaterialInfo.cs @@ -0,0 +1,92 @@ +using CMS.Plugin.HIAWms.Domain.Shared.Enums; +using CMS.Plugin.HIAWms.Domain.Shared.WmsMaterialInfos; +using Volo.Abp; +using Volo.Abp.Domain.Entities.Auditing; + +namespace CMS.Plugin.HIAWms.Domain.WmsMaterialInfos +{ + /// <summary> + /// WmsMaterialInfo + /// </summary> + public class WmsMaterialInfo : FullAuditedAggregateRoot<Guid> + { + /// <summary> + /// 鐗╂枡浠e彿 + /// </summary> + public string MaterialNo { get; set; } + + /// <summary> + /// 鐗╂枡鍚嶇О + /// </summary> + public string MaterialName { get; set; } + + /// <summary> + /// 鏈哄瀷 + /// </summary> + public string? MaterialModel { get; set; } + + /// <summary> + /// 鐗╂枡鍞竴鐮� + /// </summary> + public string MaterialId { get; set; } + + /// <summary> + /// 鏁伴噺 + /// </summary> + public int? StockNumber { get; set; } + + /// <summary> + /// 鐗╂枡鎵瑰彿 + /// </summary> + public string? MaterialBatch { get; set; } + + /// <summary> + /// 渚涘簲鍟嗙紪鍙� + /// </summary> + public string? SupplierCode { get; set; } + + /// <summary> + /// 妫�楠岀姸鎬� + /// </summary> + public MaterialCheckStatusEnum? CheckStatus { get; set; } + + /// <summary> + /// 鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ�� + /// </summary> + public string RedundantField1 { get; set; } + + /// <summary> + /// 鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ�� + /// </summary> + public string RedundantField2 { get; set; } + + /// <summary> + /// 鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ�� + /// </summary> + public string RedundantField3 { get; set; } + /// <summary> + /// 鎺掑簭 + /// </summary> + public virtual int Sort { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + public virtual string Remark { get; set; } + + /// <summary> + /// 鏄惁绂佺敤 + /// </summary> + public virtual bool? IsDisabled { get; set; } + + /// <summary> + /// Adjusts the sort. + /// </summary> + /// <param name="sort">The sort.</param> + public void AdjustSort(int sort) + { + Sort = sort; + } + + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialInfos/WmsMaterialInfoDataSeedContributor.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialInfos/WmsMaterialInfoDataSeedContributor.cs new file mode 100644 index 0000000..825721c --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialInfos/WmsMaterialInfoDataSeedContributor.cs @@ -0,0 +1,67 @@ +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Guids; +using Volo.Abp.Uow; + +namespace CMS.Plugin.HIAWms.Domain.WmsMaterialInfos +{ + /// <summary> + /// WmsMaterialInfo绉嶅瓙鏁版嵁鎻愪緵绋嬪簭 + /// </summary> + public class WmsMaterialInfoDataSeedContributor : IDataSeedContributor, ITransientDependency + { + private readonly IUnitOfWorkManager _unitOfWorkManager; + private readonly IWmsMaterialInfoRepository _wmsmaterialinfoRepository; + private readonly IGuidGenerator _guidGenerator; + + /// <summary> + /// Initializes a new instance of the <see cref="WmsMaterialInfoDataSeedContributor"/> class. + /// </summary> + /// <param name="unitOfWorkManager">The unit of work manager.</param> + /// <param name="guidGenerator">The unique identifier generator.</param> + /// <param name="wmsmaterialinfoRepository">The work section repository.</param> + public WmsMaterialInfoDataSeedContributor(IUnitOfWorkManager unitOfWorkManager, IGuidGenerator guidGenerator, IWmsMaterialInfoRepository wmsmaterialinfoRepository) + { + _unitOfWorkManager = unitOfWorkManager; + _wmsmaterialinfoRepository = wmsmaterialinfoRepository; + _guidGenerator = guidGenerator; + } + + /// <inheritdoc /> + public async Task SeedAsync(DataSeedContext context) + { + if (context.Properties.ContainsKey(CMSPluginDbProperties.ConnectionStringName) && context.Properties[CMSPluginDbProperties.ConnectionStringName]?.ToString() == CMSPluginDbProperties.ConnectionStringName) + { + try + { + //using var unitofWork = _unitOfWorkManager.Begin(requiresNew: true); + //await unitofWork.SaveChangesAsync(); + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + } + + if (context.Properties.ContainsKey("SeedTestData") && context.Properties["SeedTestData"]?.ToString() == "SeedTestData") + { + try + { + await SeedWmsMaterialInfoDataAsync(); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + } + + /// <summary> + /// Seeds the work section data asynchronous. + /// </summary> + private async Task SeedWmsMaterialInfoDataAsync() + { + + } + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialInfos/WmsMaterialInfoSpecification.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialInfos/WmsMaterialInfoSpecification.cs new file mode 100644 index 0000000..672c877 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialInfos/WmsMaterialInfoSpecification.cs @@ -0,0 +1,41 @@ +using System.Linq.Expressions; + +namespace CMS.Plugin.HIAWms.Domain.WmsMaterialInfos +{ + /// <summary> + /// WmsMaterialInfo瑙勭害 + /// </summary> + public class WmsMaterialInfoSpecification : Volo.Abp.Specifications.Specification<WmsMaterialInfo> + { + private readonly string _materialNo; + + /// <summary> + /// Initializes a new instance of the <see cref="WmsMaterialInfoSpecification"/> class. + /// </summary> + public WmsMaterialInfoSpecification() + { + } + + /// <summary> + /// Initializes a new instance of the <see cref="WmsMaterialInfoSpecification"/> class. + /// </summary> + /// <param name="materialNo">The name.</param> + public WmsMaterialInfoSpecification(string materialNo = null) + { + _materialNo = materialNo; + } + + /// <inheritdoc /> + public override Expression<Func<WmsMaterialInfo, bool>> ToExpression() + { + Expression<Func<WmsMaterialInfo, bool>> expression = c => 1 == 1; + + if (_materialNo != null) + { + expression = expression.And(c => c.MaterialNo == _materialNo); + } + + return expression; + } + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialStocks/WmsMaterialStock.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialStocks/WmsMaterialStock.cs index 1b3279e..dc2982c 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialStocks/WmsMaterialStock.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialStocks/WmsMaterialStock.cs @@ -87,14 +87,19 @@ public string AreaName { get; set; } /// <summary> + /// 妫�楠岀姸鎬� + /// </summary> + public MaterialCheckStatusEnum? CheckStatus { get; set; } + + /// <summary> /// 鏄惁閿佸畾 /// </summary> - public int IsLock { get; set; } + public YesNoEnum IsLock { get; set; } /// <summary> /// 鏄惁绌烘墭 /// </summary> - public YesNoEnum EmptyContainer { get; protected set; } + public YesNoEnum EmptyContainer { get; set; } /// <summary> /// 鍏ュ簱鏃堕棿 @@ -111,6 +116,22 @@ /// </summary> public virtual string Remark { get; set; } + + /// <summary> + /// 鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ�� + /// </summary> + public string RedundantField1 { get; set; } + + /// <summary> + /// 鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ�� + /// </summary> + public string RedundantField2 { get; set; } + + /// <summary> + /// 鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ�� + /// </summary> + public string RedundantField3 { get; set; } + /// <summary> /// 鏄惁绂佺敤 /// </summary> diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterial.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterial.cs index 4b9d049..2ffc4ca 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterial.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterial.cs @@ -21,6 +21,12 @@ /// </summary> public string MaterialName { get; set; } + + /// <summary> + /// 鍨嬪彿 + /// </summary> + public string MaterialModel { get; set; } + /// <summary> /// 閲囪喘绫诲瀷锛堟灇涓惧�硷級 /// </summary> diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs index f04c91b..7bce03b 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs @@ -101,6 +101,9 @@ b.Property(x => x.Certification) .HasMaxLength(128) .HasComment("璇佷功缂栧彿"); + b.Property(x => x.MaterialModel) + .HasMaxLength(128) + .HasComment("鍨嬪彿"); // 鍐椾綑瀛楁閰嶇疆 b.Property(x => x.RedundantField1) diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterialInfo.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterialInfo.cs new file mode 100644 index 0000000..a65cb63 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterialInfo.cs @@ -0,0 +1,120 @@ +using CMS.Plugin.HIAWms.Domain; +using CMS.Plugin.HIAWms.Domain.WmsMaterialInfos; +using CMS.Plugin.HIAWms.Domain.Shared.WmsMaterialInfos; +using Microsoft.EntityFrameworkCore; +using Volo.Abp; +using Volo.Abp.EntityFrameworkCore.Modeling; + +namespace CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions; + +/// <summary> +/// EfCore鎵╁睍 +/// </summary> +public static partial class CMSPluginEfCoreExtensions +{ + /// <summary> + /// Includes the details. + /// </summary> + /// <param name="queryable">The queryable.</param> + /// <param name="include">if set to <c>true</c> [include].</param> + /// <returns></returns> + public static IQueryable<WmsMaterialInfo> IncludeDetails(this IQueryable<WmsMaterialInfo> queryable, bool include = true) + { + if (!include) + { + return queryable; + } + + return queryable; + } + + /// <summary> + /// Configures the wmsmaterialinfo. + /// </summary> + /// <param name="builder">The builder.</param> + public static void ConfigureWmsMaterialInfo(this ModelBuilder builder) + { + Check.NotNull(builder, nameof(builder)); + + builder.Entity<WmsMaterialInfo>(b => + { + // 閰嶇疆琛ㄥ拰鏋舵瀯鍚嶇О + b.ToTable((CMSPluginDbProperties.DbTablePrefix + "_WmsMaterialInfos").ToLower(), + CMSPluginDbProperties.DbSchema) + .HasComment("WMS鐗╂枡淇℃伅琛�"); + + b.ConfigureByConvention(); + + // 涓婚敭閰嶇疆 + b.HasKey(x => x.Id); + + // 灞炴�ч厤缃� + b.Property(x => x.MaterialNo) + .HasMaxLength(WmsMaterialInfoConsts.MaxMaterialNoLength) + .IsRequired() + .HasComment("鐗╂枡浠e彿"); + + b.Property(x => x.MaterialName) + .HasMaxLength(WmsMaterialInfoConsts.MaxMaterialNameLength) + .IsRequired() + .HasComment("鐗╂枡鍚嶇О"); + + b.Property(x => x.MaterialModel) + .HasMaxLength(WmsMaterialInfoConsts.MaxMaterialModelLength) + .HasComment("鏈哄瀷/瑙勬牸"); + + b.Property(x => x.MaterialId) + .HasMaxLength(WmsMaterialInfoConsts.MaxMaterialIdLength) + .IsRequired() + .HasComment("鐗╂枡鍞竴鐮�"); + + b.Property(x => x.StockNumber) + .HasComment("搴撳瓨鏁伴噺"); + + b.Property(x => x.MaterialBatch) + .HasMaxLength(WmsMaterialInfoConsts.MaxMaterialBatchLength) + .HasComment("鐗╂枡鎵瑰彿"); + + b.Property(x => x.SupplierCode) + .HasMaxLength(WmsMaterialInfoConsts.MaxSupplierCodeLength) + .HasComment("渚涘簲鍟嗙紪鍙�"); + + b.Property(x => x.CheckStatus) + .HasComment("妫�楠岀姸鎬�(0:鏈楠�,1:妫�楠岄�氳繃,2:妫�楠屼笉閫氳繃)"); + + b.Property(x => x.RedundantField1) + .HasMaxLength(WmsMaterialInfoConsts.MaxRedundantFieldLength) + .HasComment("鍐椾綑瀛楁1"); + + b.Property(x => x.RedundantField2) + .HasMaxLength(WmsMaterialInfoConsts.MaxRedundantFieldLength) + .HasComment("鍐椾綑瀛楁2"); + + b.Property(x => x.RedundantField3) + .HasMaxLength(WmsMaterialInfoConsts.MaxRedundantFieldLength) + .HasComment("鍐椾綑瀛楁3"); + + b.Property(x => x.Sort) + .HasDefaultValue(0) + .HasComment("鎺掑簭"); + + b.Property(x => x.Remark) + .HasMaxLength(WmsMaterialInfoConsts.MaxRemarkLength) + .HasComment("澶囨敞"); + + b.Property(x => x.IsDisabled) + .HasComment("鏄惁绂佺敤"); + + // 绱㈠紩閰嶇疆 + b.HasIndex(x => x.MaterialNo).IsUnique(); + b.HasIndex(x => x.MaterialName); + b.HasIndex(x => x.MaterialId).IsUnique(); + b.HasIndex(x => x.MaterialBatch); + b.HasIndex(x => x.SupplierCode); + b.HasIndex(x => x.CheckStatus); + + // 鎵╁睍灞炴�ч厤缃� + b.ApplyObjectExtensionMappings(); + }); + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterialStock.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterialStock.cs index d178432..cb7f889 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterialStock.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterialStock.cs @@ -123,6 +123,25 @@ .HasMaxLength(500) .HasComment("澶囨敞"); + b.Property(x => x.CheckStatus) + .HasComment("妫�楠岀姸鎬�(1:鏈楠�,2:妫�楠岄�氳繃,3:妫�楠屼笉閫氳繃)"); + + // 鍐椾綑瀛楁閰嶇疆 + b.Property(x => x.RedundantField1) + .HasMaxLength(256) + .IsRequired(false) + .HasComment("鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property(x => x.RedundantField2) + .HasMaxLength(256) + .IsRequired(false) + .HasComment("鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property(x => x.RedundantField3) + .HasMaxLength(256) + .IsRequired(false) + .HasComment("鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��"); + b.Property(x => x.IsDisabled) .HasComment("鏄惁绂佺敤"); diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsAreaRepository.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsAreaRepository.cs index 64d4d26..3f3a094 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsAreaRepository.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsAreaRepository.cs @@ -24,15 +24,14 @@ } /// <inheritdoc /> - public virtual async Task<WmsArea> FindByNameAsync(string name, CancellationToken cancellationToken = default) + public virtual async Task<WmsArea> FindByNameAsync(string areaNo, CancellationToken cancellationToken = default) { return await (await GetDbSetAsync()) .IncludeDetails() .OrderBy(t => t.Sort) .Where(x => !x.IsDeleted) - .FirstOrDefaultAsync(t => t.AreaName == name, GetCancellationToken(cancellationToken)); + .FirstOrDefaultAsync(t => t.AreaNo == areaNo, GetCancellationToken(cancellationToken)); } - /// <summary> /// 查看库区是否存在 diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialInfoRepository.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialInfoRepository.cs new file mode 100644 index 0000000..ae965d9 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialInfoRepository.cs @@ -0,0 +1,100 @@ +using System.Linq.Dynamic.Core; +using CMS.Plugin.HIAWms.Domain.WmsMaterialInfos; +using CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions; +using MathNet.Numerics; +using Microsoft.EntityFrameworkCore; +using Volo.Abp.Domain.Repositories.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.Specifications; + +namespace CMS.Plugin.HIAWms.EntityFrameworkCore.Repositories; + +/// <inheritdoc /> +public class EfCoreWmsMaterialInfoRepository : EfCoreRepository<ICMSPluginDbContext, WmsMaterialInfo, Guid>, IWmsMaterialInfoRepository +{ + /// <summary> + /// Initializes a new instance of the <see cref="EfCoreWmsMaterialInfoRepository"/> class. + /// </summary> + /// <param name="dbContextProvider">The database context provider.</param> + public EfCoreWmsMaterialInfoRepository(IDbContextProvider<ICMSPluginDbContext> dbContextProvider) + : base(dbContextProvider) + { + } + + /// <inheritdoc /> + public virtual async Task<WmsMaterialInfo> FindByNameAsync(string materialInfo, CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()) + .IncludeDetails() + .OrderBy(t => t.Sort) + .FirstOrDefaultAsync(t => t.MaterialNo == materialInfo, GetCancellationToken(cancellationToken)); + } + + /// <inheritdoc /> + public async Task<bool> NameExistAsync(string materialInfo, Guid? id = null) + { + return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id).AnyAsync(x => x.MaterialNo == materialInfo); + } + + /// <inheritdoc /> + public async Task<int> GetMaxSortAsync() + { + var hasAny = await (await GetQueryableAsync()).AnyAsync(); + if (!hasAny) + { + return 1; + } + + var sort = await (await GetQueryableAsync()).MaxAsync(x => x.Sort); + return sort + 1; + } + + /// <inheritdoc /> + public async Task<List<WmsMaterialInfo>> GetListAsync(WmsMaterialInfo? materialInfo,string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, string filter = null, Specification<WmsMaterialInfo> specification = null, bool includeDetails = false, CancellationToken cancellationToken = default) + { + specification ??= new WmsMaterialInfoSpecification(); + return await (await GetDbSetAsync()) + .IncludeDetails(includeDetails) + .WhereIf(!filter.IsNullOrWhiteSpace(), + u => u.MaterialNo.Contains(filter) || + u.MaterialName.Contains(filter) || + u.MaterialModel.Contains(filter) || + u.MaterialBatch.Contains(filter) || + u.SupplierCode.Contains(filter)) + // 精确查询条件 + .WhereIf(!string.IsNullOrEmpty(materialInfo?.MaterialNo), u => u.MaterialNo.Contains(materialInfo.MaterialNo)) + .WhereIf(!string.IsNullOrEmpty(materialInfo?.MaterialName), u => u.MaterialName.Contains(materialInfo.MaterialName)) + .WhereIf(!string.IsNullOrEmpty(materialInfo?.MaterialModel), u => u.MaterialModel.Contains(materialInfo.MaterialModel)) + .WhereIf(!string.IsNullOrEmpty(materialInfo?.MaterialBatch), u => u.MaterialBatch == materialInfo.MaterialBatch) + .WhereIf(!string.IsNullOrEmpty(materialInfo?.SupplierCode), u => u.SupplierCode == materialInfo.SupplierCode) + .OrderBy(sorting) + .PageBy(skipCount, maxResultCount) + .ToListAsync(GetCancellationToken(cancellationToken)); + } + + /// <inheritdoc /> + public async Task<long> GetCountAsync(WmsMaterialInfo? materialInfo, string filter = null, Specification<WmsMaterialInfo> specification = null, CancellationToken cancellationToken = default) + { + specification ??= new WmsMaterialInfoSpecification(); + return await (await GetQueryableAsync()) + .WhereIf(!filter.IsNullOrWhiteSpace(), + u => u.MaterialNo.Contains(filter) || + u.MaterialName.Contains(filter) || + u.MaterialModel.Contains(filter) || + u.MaterialBatch.Contains(filter) || + u.SupplierCode.Contains(filter)) + // 精确查询条件 + .WhereIf(!string.IsNullOrEmpty(materialInfo?.MaterialNo), u => u.MaterialNo.Contains(materialInfo.MaterialNo)) + .WhereIf(!string.IsNullOrEmpty(materialInfo?.MaterialName), u => u.MaterialName.Contains(materialInfo.MaterialName)) + .WhereIf(!string.IsNullOrEmpty(materialInfo?.MaterialModel), u => u.MaterialModel.Contains(materialInfo.MaterialModel)) + .WhereIf(!string.IsNullOrEmpty(materialInfo?.MaterialBatch), u => u.MaterialBatch == materialInfo.MaterialBatch) + .WhereIf(!string.IsNullOrEmpty(materialInfo?.SupplierCode), u => u.SupplierCode == materialInfo.SupplierCode) + .CountAsync(cancellationToken: GetCancellationToken(cancellationToken)); + } + + /// <inheritdoc /> + public override async Task<IQueryable<WmsMaterialInfo>> WithDetailsAsync() + { + return (await GetQueryableAsync()).IncludeDetails(); + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialStockRepository.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialStockRepository.cs index 4e491d3..86b12d4 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialStockRepository.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialStockRepository.cs @@ -2,6 +2,7 @@ using CMS.Plugin.HIAWms.Domain.WmsMaterialStocks; using CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions; using Microsoft.EntityFrameworkCore; +using SqlKata; using Volo.Abp.Domain.Repositories.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.Specifications; @@ -25,6 +26,7 @@ { return await (await GetDbSetAsync()) .IncludeDetails() + .Where(u => !u.IsDeleted) .OrderBy(t => t.Sort) .FirstOrDefaultAsync(t => t.MaterialNo == materialNo, GetCancellationToken(cancellationToken)); } @@ -32,19 +34,22 @@ /// <inheritdoc /> public async Task<bool> NameExistAsync(string materialNo, Guid? id = null) { - return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id).AnyAsync(x => x.MaterialNo == materialNo); + return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id) + .Where(u => !u.IsDeleted).AnyAsync(x => x.MaterialNo == materialNo); } /// <inheritdoc /> public async Task<int> GetMaxSortAsync() { - var hasAny = await (await GetQueryableAsync()).AnyAsync(); + var hasAny = await (await GetQueryableAsync()) + .Where(u => !u.IsDeleted).AnyAsync(); if (!hasAny) { return 1; } - var sort = await (await GetQueryableAsync()).MaxAsync(x => x.Sort); + var sort = await (await GetQueryableAsync()) + .Where(u => !u.IsDeleted).MaxAsync(x => x.Sort); return sort + 1; } @@ -52,7 +57,7 @@ public async Task<List<WmsMaterialStock>> GetListAsync(WmsMaterialStock? stock, DateTime? startTime = null, DateTime? endTime = null, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, string filter = null, Specification<WmsMaterialStock> specification = null, bool includeDetails = false, CancellationToken cancellationToken = default) { specification ??= new WmsMaterialStockSpecification(); - return await (await GetDbSetAsync()) + var baseQuery = (await GetDbSetAsync()) .IncludeDetails(includeDetails) .WhereIf(!filter.IsNullOrWhiteSpace(), u => u.MaterialNo.Contains(filter) || @@ -76,16 +81,66 @@ .WhereIf(stock.IsLock > 0, u => u.IsLock == stock.IsLock) .WhereIf(startTime.HasValue, u => u.InStockTime >= startTime.Value) .WhereIf(endTime.HasValue, u => u.InStockTime <= endTime.Value) + .Where(u => !u.IsDeleted) + .AsQueryable(); + + var materialList = await baseQuery + .Select(x => new + { + x.MaterialNo, + x.MaterialName, + x.PlaceNo, + x.ContainerNo, + x.ContainerStatus, + x.PlaceStatus, + x.StorageTypeNo, + x.MaterialBatch, + x.MaterialModel, + x.AreaCode, + x.AreaName, + x.CheckStatus, + x.IsLock, + x.EmptyContainer, + x.InStockTime + }) + .ToListAsync(GetCancellationToken(cancellationToken)); + + var groupedData = materialList + .GroupBy(x => new { x.MaterialNo, x.PlaceNo, x.ContainerNo, x.MaterialName }) + .Select(g => new WmsMaterialStock + { + MaterialNo = g.Key.MaterialNo, + MaterialName = g.Key.MaterialName, + PlaceNo = g.Key.PlaceNo, + ContainerNo = g.Key.ContainerNo, + ContainerStatus = g.First().ContainerStatus, + PlaceStatus = g.First().PlaceStatus, + StorageTypeNo = g.First().StorageTypeNo, + MaterialBatch = g.First().MaterialBatch, + MaterialModel = g.First().MaterialModel, + AreaCode = g.First().AreaCode, + AreaName = g.First().AreaName, + CheckStatus = g.First().CheckStatus, + IsLock = g.First().IsLock, + EmptyContainer = g.First().EmptyContainer, + InStockTime = g.First().InStockTime, + StockNumber = g.Count() + }) + .AsQueryable(); // 转换回IQueryable以支持后续操作 + + var result = groupedData .OrderBy(sorting.IsNullOrEmpty() ? nameof(WmsMaterialStock.Sort) : sorting) .PageBy(skipCount, maxResultCount) - .ToListAsync(GetCancellationToken(cancellationToken)); + .ToList(); + + return result; } /// <inheritdoc /> public async Task<long> GetCountAsync(WmsMaterialStock? stock, DateTime? startTime = null, DateTime? endTime = null, string filter = null, Specification<WmsMaterialStock> specification = null, CancellationToken cancellationToken = default) { specification ??= new WmsMaterialStockSpecification(); - return await (await GetQueryableAsync()) + var baseQuery = (await GetQueryableAsync()) .WhereIf(!filter.IsNullOrWhiteSpace(), u => u.MaterialNo.Contains(filter) || u.MaterialName.Contains(filter) || @@ -108,12 +163,60 @@ .WhereIf(stock.IsLock > 0, u => u.IsLock == stock.IsLock) .WhereIf(startTime.HasValue, u => u.InStockTime >= startTime.Value) .WhereIf(endTime.HasValue, u => u.InStockTime <= endTime.Value) - .CountAsync(cancellationToken: GetCancellationToken(cancellationToken)); + .Where(u => !u.IsDeleted) + .AsQueryable(); + + var materialList = await baseQuery + .Select(x => new + { + x.MaterialNo, + x.MaterialName, + x.PlaceNo, + x.ContainerNo, + x.ContainerStatus, + x.PlaceStatus, + x.StorageTypeNo, + x.MaterialBatch, + x.MaterialModel, + x.AreaCode, + x.AreaName, + x.CheckStatus, + x.IsLock, + x.EmptyContainer, + x.InStockTime + }) + .ToListAsync(GetCancellationToken(cancellationToken)); + + var groupedData = materialList + .GroupBy(x => new { x.MaterialNo, x.PlaceNo, x.ContainerNo, x.MaterialName }) + .Select(g => new WmsMaterialStock + { + MaterialNo = g.Key.MaterialNo, + MaterialName = g.Key.MaterialName, + PlaceNo = g.Key.PlaceNo, + ContainerNo = g.Key.ContainerNo, + ContainerStatus = g.First().ContainerStatus, + PlaceStatus = g.First().PlaceStatus, + StorageTypeNo = g.First().StorageTypeNo, + MaterialBatch = g.First().MaterialBatch, + MaterialModel = g.First().MaterialModel, + AreaCode = g.First().AreaCode, + AreaName = g.First().AreaName, + CheckStatus = g.First().CheckStatus, + IsLock = g.First().IsLock, + EmptyContainer = g.First().EmptyContainer, + InStockTime = g.First().InStockTime, + StockNumber = g.Count() + }) + .AsQueryable(); // 转换回IQueryable以支持后续操作 + + return groupedData.Count(); } /// <inheritdoc /> public override async Task<IQueryable<WmsMaterialStock>> WithDetailsAsync() { - return (await GetQueryableAsync()).IncludeDetails(); + return (await GetQueryableAsync()).IncludeDetails() + .Where(u => !u.IsDeleted); } } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/CMSPluginDbContext.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/CMSPluginDbContext.cs index 69c16c1..204efe4 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/CMSPluginDbContext.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/CMSPluginDbContext.cs @@ -38,6 +38,7 @@ builder.ConfigureWmsPlace(); builder.ConfigureWmsMaterial(); builder.ConfigureWmsMaterialStock(); + builder.ConfigureWmsMaterialInfo(); /* Configure your own tables/entities inside here */ diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505105851_InitialCreate2.Designer.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505105851_InitialCreate2.Designer.cs new file mode 100644 index 0000000..d34dfb9 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505105851_InitialCreate2.Designer.cs @@ -0,0 +1,998 @@ +锘�// <auto-generated /> +using System; +using CMS.Plugin.HIAWms.MySQL; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace CMS.Plugin.HIAWms.MySQL.Migrations +{ + [DbContext(typeof(CMSPluginDbContext))] + [Migration("20250505105851_InitialCreate2")] + partial class InitialCreate2 + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql) + .HasAnnotation("ProductVersion", "6.0.16") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsAreas.WmsArea", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property<string>("AreaDesc") + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasComment("鎻忚堪"); + + b.Property<string>("AreaName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("搴撳尯鍚嶇О"); + + b.Property<string>("AreaNo") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("搴撳尯缂栧彿"); + + b.Property<int>("AreaStatus") + .HasColumnType("int") + .HasComment("搴撳尯鐘舵��"); + + b.Property<int>("AreaType") + .HasColumnType("int") + .HasComment("搴撳尯绫诲瀷"); + + b.Property<string>("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property<DateTime>("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property<Guid?>("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property<Guid?>("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property<DateTime?>("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property<string>("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property<bool>("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property<bool?>("IsDisabled") + .HasColumnType("tinyint(1)") + .HasComment("鏄惁绂佺敤"); + + b.Property<DateTime?>("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property<Guid?>("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property<string>("RedundantField1") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField2") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField3") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("Remark") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasComment("澶囨敞"); + + b.Property<int>("Sort") + .HasColumnType("int") + .HasComment("鎺掑簭"); + + b.Property<string>("StoreCode") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("浠撳簱浠g爜"); + + b.Property<string>("StoreName") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("浠撳簱鍚嶇О"); + + b.HasKey("Id"); + + b.HasIndex("AreaName"); + + b.ToTable("scms_wmsareas", (string)null); + + b.HasComment("搴撳尯琛�"); + }); + + modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsContainers.WmsContainer", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property<string>("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property<string>("ContainerNo") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("鎵樼洏缂栧彿"); + + b.Property<int>("ContainerStatus") + .HasColumnType("int") + .HasComment("鎵樼洏鐘舵��"); + + b.Property<int>("ContainerType") + .HasColumnType("int") + .HasComment("鎵樼洏绫诲瀷"); + + b.Property<DateTime>("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property<Guid?>("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property<Guid?>("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property<DateTime?>("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property<int?>("ExceptionNumber") + .HasColumnType("int") + .HasComment("寮傚父鏁伴噺"); + + b.Property<string>("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property<bool>("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property<bool?>("IsDisabled") + .HasColumnType("tinyint(1)") + .HasComment("鏄惁绂佺敤"); + + b.Property<DateTime?>("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property<Guid?>("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property<decimal?>("LimitHeight") + .HasPrecision(18, 2) + .HasColumnType("decimal(18,2)") + .HasComment("闄愰珮"); + + b.Property<decimal?>("LimitLength") + .HasPrecision(18, 2) + .HasColumnType("decimal(18,2)") + .HasComment("闄愰暱"); + + b.Property<decimal?>("LimitWidth") + .HasPrecision(18, 2) + .HasColumnType("decimal(18,2)") + .HasComment("闄愬"); + + b.Property<int?>("MaterialNumber") + .HasColumnType("int") + .HasComment("鐗╂枡鏁伴噺"); + + b.Property<decimal?>("MaxWeight") + .HasPrecision(18, 2) + .HasColumnType("decimal(18,2)") + .HasComment("杞介噸涓婇檺"); + + b.Property<string>("RedundantField1") + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasComment("鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField2") + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasComment("鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField3") + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasComment("鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("Remark") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasComment("澶囨敞"); + + b.Property<int>("Sort") + .HasColumnType("int") + .HasComment("鎺掑簭"); + + b.Property<decimal?>("SpecHeight") + .HasPrecision(18, 2) + .HasColumnType("decimal(18,2)") + .HasComment("楂樺害"); + + b.Property<decimal?>("SpecLength") + .HasPrecision(18, 2) + .HasColumnType("decimal(18,2)") + .HasComment("闀垮害"); + + b.Property<decimal?>("SpecWidth") + .HasPrecision(18, 2) + .HasColumnType("decimal(18,2)") + .HasComment("瀹藉害"); + + b.HasKey("Id"); + + b.HasIndex("ContainerNo") + .IsUnique(); + + b.HasIndex("ContainerStatus"); + + b.HasIndex("ContainerType"); + + b.ToTable("scms_wmscontainers", (string)null); + + b.HasComment("鎵樼洏淇℃伅琛�"); + }); + + modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsMaterialInfos.WmsMaterialInfo", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property<int?>("CheckStatus") + .HasColumnType("int") + .HasComment("妫�楠岀姸鎬�(0:鏈楠�,1:妫�楠岄�氳繃,2:妫�楠屼笉閫氳繃)"); + + b.Property<string>("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property<DateTime>("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property<Guid?>("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property<Guid?>("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property<DateTime?>("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property<string>("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property<bool>("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property<bool?>("IsDisabled") + .HasColumnType("tinyint(1)") + .HasComment("鏄惁绂佺敤"); + + b.Property<DateTime?>("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property<Guid?>("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property<string>("MaterialBatch") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("鐗╂枡鎵瑰彿"); + + b.Property<string>("MaterialId") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("鐗╂枡鍞竴鐮�"); + + b.Property<string>("MaterialModel") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("鏈哄瀷/瑙勬牸"); + + b.Property<string>("MaterialName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("鐗╂枡鍚嶇О"); + + b.Property<string>("MaterialNo") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("鐗╂枡浠e彿"); + + b.Property<string>("RedundantField1") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("鍐椾綑瀛楁1"); + + b.Property<string>("RedundantField2") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("鍐椾綑瀛楁2"); + + b.Property<string>("RedundantField3") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("鍐椾綑瀛楁3"); + + b.Property<string>("Remark") + .HasMaxLength(500) + .HasColumnType("varchar(500)") + .HasComment("澶囨敞"); + + b.Property<int>("Sort") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasComment("鎺掑簭"); + + b.Property<int?>("StockNumber") + .HasColumnType("int") + .HasComment("搴撳瓨鏁伴噺"); + + b.Property<string>("SupplierCode") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("渚涘簲鍟嗙紪鍙�"); + + b.HasKey("Id"); + + b.HasIndex("CheckStatus"); + + b.HasIndex("MaterialBatch"); + + b.HasIndex("MaterialId") + .IsUnique(); + + b.HasIndex("MaterialName"); + + b.HasIndex("MaterialNo") + .IsUnique(); + + b.HasIndex("SupplierCode"); + + b.ToTable("scms_wmsmaterialinfos", (string)null); + + b.HasComment("WMS鐗╂枡淇℃伅琛�"); + }); + + modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsMaterials.WmsMaterial", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property<string>("Certification") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasComment("璇佷功缂栧彿"); + + b.Property<string>("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property<DateTime>("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property<Guid?>("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property<Guid?>("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property<DateTime?>("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property<string>("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property<string>("Factory") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("鐢熶骇宸ュ巶"); + + b.Property<bool>("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property<bool?>("IsDisabled") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasComment("鏄惁绂佺敤"); + + b.Property<int>("IsMainBranch") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(2) + .HasComment("鏄惁涓轰富鏀"); + + b.Property<DateTime?>("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property<Guid?>("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property<decimal>("Length") + .HasColumnType("decimal(18,2)") + .HasComment("闀垮害锛堝崟浣嶏細m锛�"); + + b.Property<string>("MaterialCode") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛�"); + + b.Property<string>("MaterialName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasComment("鐗╂枡鍚嶇О"); + + b.Property<string>("MaterialQuality") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("鏉愯川锛堝锛�304涓嶉攬閽級"); + + b.Property<int>("MaterialType") + .HasColumnType("int") + .HasComment("鐗╂枡绫诲瀷锛堟灇涓惧�硷級"); + + b.Property<decimal>("OuterDiameter") + .HasColumnType("decimal(18,2)") + .HasComment("澶栧緞锛堝崟浣嶏細mm锛�"); + + b.Property<string>("PrimaryUnit") + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("涓诲崟浣嶏紙濡傦細kg銆乵銆佷釜锛�"); + + b.Property<int>("PurchaseType") + .HasColumnType("int") + .HasComment("閲囪喘绫诲瀷锛堟灇涓惧�硷級"); + + b.Property<string>("RedundantField1") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasComment("鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField2") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasComment("鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField3") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasComment("鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("Remark") + .HasMaxLength(500) + .HasColumnType("varchar(500)") + .HasComment("澶囨敞"); + + b.Property<int>("Sort") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasComment("鎺掑簭"); + + b.Property<string>("Standard") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasComment("瑙勬牸/鏍囧噯锛堝锛欸B/T 8163-2018锛�"); + + b.Property<decimal>("WallThickness") + .HasColumnType("decimal(18,2)") + .HasComment("澹佸帤锛堝崟浣嶏細mm锛�"); + + b.HasKey("Id"); + + b.HasIndex("MaterialCode") + .IsUnique(); + + b.HasIndex("MaterialName"); + + b.HasIndex("MaterialType"); + + b.HasIndex("PurchaseType"); + + b.ToTable("scms_wmsmaterials", (string)null); + + b.HasComment("鐗╂枡鍩虹淇℃伅琛�"); + }); + + modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsMaterialStocks.WmsMaterialStock", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property<string>("AreaCode") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("鍖哄煙缂栧彿"); + + b.Property<string>("AreaName") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasComment("搴撳尯鍚嶇О"); + + b.Property<int?>("CheckStatus") + .HasColumnType("int") + .HasComment("妫�楠岀姸鎬�(1:鏈楠�,2:妫�楠岄�氳繃,3:妫�楠屼笉閫氳繃)"); + + b.Property<string>("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property<string>("ContainerNo") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("瀹瑰櫒缂栧彿"); + + b.Property<int>("ContainerStatus") + .HasColumnType("int") + .HasComment("瀹瑰櫒鐘舵��"); + + b.Property<int>("ContainerType") + .HasColumnType("int") + .HasComment("瀹瑰櫒绫诲瀷"); + + b.Property<DateTime>("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property<Guid?>("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property<Guid?>("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property<DateTime?>("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property<int>("EmptyContainer") + .HasColumnType("int") + .HasComment("鏄惁绌烘墭(2:鍚�,1:鏄�)"); + + b.Property<string>("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property<DateTime?>("InStockTime") + .HasColumnType("datetime(6)") + .HasComment("鍏ュ簱鏃堕棿"); + + b.Property<bool>("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property<bool?>("IsDisabled") + .HasColumnType("tinyint(1)") + .HasComment("鏄惁绂佺敤"); + + b.Property<int>("IsLock") + .HasColumnType("int") + .HasComment("鏄惁閿佸畾(2:鏈攣瀹�,1:宸查攣瀹�)"); + + b.Property<DateTime?>("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property<Guid?>("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property<string>("MaterialBatch") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("鐗╂枡鎵规"); + + b.Property<string>("MaterialId") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("鐗╂枡ID"); + + b.Property<string>("MaterialModel") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasComment("鏈哄瀷/瑙勬牸"); + + b.Property<string>("MaterialName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasComment("鐗╂枡鍚嶇О"); + + b.Property<string>("MaterialNo") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("鐗╂枡缂栧彿"); + + b.Property<string>("PlaceNo") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("搴撲綅缂栧彿"); + + b.Property<int>("PlaceStatus") + .HasColumnType("int") + .HasComment("搴撲綅鐘舵��;"); + + b.Property<string>("RedundantField1") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasComment("鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField2") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasComment("鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField3") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasComment("鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("Remark") + .HasMaxLength(500) + .HasColumnType("varchar(500)") + .HasComment("澶囨敞"); + + b.Property<int>("Sort") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasComment("鎺掑簭"); + + b.Property<int>("StockNumber") + .HasColumnType("int") + .HasComment("搴撳瓨鏁伴噺"); + + b.Property<int>("StorageTypeNo") + .HasColumnType("int") + .HasComment("搴撲綅绫诲瀷"); + + b.Property<string>("SupplierCode") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("渚涘簲鍟嗙紪鍙�"); + + b.HasKey("Id"); + + b.HasIndex("AreaCode"); + + b.HasIndex("ContainerNo"); + + b.HasIndex("MaterialName"); + + b.HasIndex("MaterialNo") + .IsUnique(); + + b.HasIndex("PlaceNo"); + + b.HasIndex("MaterialBatch", "SupplierCode"); + + b.ToTable("scms_wmsmaterialstocks", (string)null); + + b.HasComment("WMS鐗╂枡搴撳瓨琛�"); + }); + + modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsPlaces.WmsPlace", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property<int>("Aisle") + .HasColumnType("int") + .HasComment("宸烽亾"); + + b.Property<string>("AreaCode") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("鎵�鍦ㄥ簱鍖�"); + + b.Property<int>("ColumnNo") + .HasColumnType("int") + .HasComment("鍒�"); + + b.Property<string>("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property<DateTime>("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property<Guid?>("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property<Guid?>("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property<DateTime?>("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property<int>("EmptyContainer") + .HasColumnType("int") + .HasComment("鏄惁绌烘墭"); + + b.Property<string>("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property<bool>("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property<bool?>("IsDisabled") + .HasColumnType("tinyint(1)") + .HasComment("鏄惁绂佺敤"); + + b.Property<int>("Islock") + .HasColumnType("int") + .HasComment("鏄惁閿佸畾"); + + b.Property<DateTime?>("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property<Guid?>("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property<int>("LayerNo") + .HasColumnType("int") + .HasComment("灞�"); + + b.Property<string>("PlaceNo") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("缂栧彿"); + + b.Property<int>("PlaceStatus") + .HasColumnType("int") + .HasComment("璐т綅鐘舵��"); + + b.Property<string>("RedundantField1") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField2") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField3") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("Remark") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasComment("澶囨敞"); + + b.Property<int>("RowNo") + .HasColumnType("int") + .HasComment("鎺�"); + + b.Property<int>("Sort") + .HasColumnType("int") + .HasComment("鎺掑簭"); + + b.Property<int>("StorageTypeNo") + .HasColumnType("int") + .HasComment("璐т綅绫诲瀷"); + + b.HasKey("Id"); + + b.HasIndex("AreaCode"); + + b.HasIndex("PlaceNo") + .IsUnique(); + + b.HasIndex("PlaceStatus"); + + b.HasIndex("StorageTypeNo"); + + b.ToTable("scms_wmsplaces", (string)null); + + b.HasComment("搴撲綅琛�"); + }); + + modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsStores.WmsStore", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property<string>("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property<DateTime>("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property<Guid?>("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property<Guid?>("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property<DateTime?>("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property<string>("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property<bool>("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property<bool?>("IsDisabled") + .HasColumnType("tinyint(1)") + .HasComment("鏄惁绂佺敤"); + + b.Property<DateTime?>("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property<Guid?>("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property<string>("RedundantField1") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField2") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField3") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("Remark") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasComment("澶囨敞"); + + b.Property<int>("Sort") + .HasColumnType("int") + .HasComment("鎺掑簭"); + + b.Property<string>("StoreCode") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("浠撳簱浠g爜"); + + b.Property<string>("StoreName") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("浠撳簱鍚嶇О"); + + b.HasKey("Id"); + + b.HasIndex("StoreName"); + + b.ToTable("scms_wmsstores", (string)null); + + b.HasComment("浠撳簱淇℃伅琛�"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505105851_InitialCreate2.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505105851_InitialCreate2.cs new file mode 100644 index 0000000..e9f63c4 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505105851_InitialCreate2.cs @@ -0,0 +1,196 @@ +锘縰sing System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace CMS.Plugin.HIAWms.MySQL.Migrations +{ + public partial class InitialCreate2 : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "scms_wmsmaterialinfos", + columns: table => new + { + Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + MaterialNo = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡浠e彿") + .Annotation("MySql:CharSet", "utf8mb4"), + MaterialName = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: false, comment: "鐗╂枡鍚嶇О") + .Annotation("MySql:CharSet", "utf8mb4"), + MaterialModel = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true, comment: "鏈哄瀷/瑙勬牸") + .Annotation("MySql:CharSet", "utf8mb4"), + MaterialId = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: false, comment: "鐗╂枡鍞竴鐮�") + .Annotation("MySql:CharSet", "utf8mb4"), + StockNumber = table.Column<int>(type: "int", nullable: true, comment: "搴撳瓨鏁伴噺"), + MaterialBatch = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true, comment: "鐗╂枡鎵瑰彿") + .Annotation("MySql:CharSet", "utf8mb4"), + SupplierCode = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true, comment: "渚涘簲鍟嗙紪鍙�") + .Annotation("MySql:CharSet", "utf8mb4"), + CheckStatus = table.Column<int>(type: "int", nullable: true, comment: "妫�楠岀姸鎬�(0:鏈楠�,1:妫�楠岄�氳繃,2:妫�楠屼笉閫氳繃)"), + RedundantField1 = table.Column<string>(type: "varchar(255)", maxLength: 255, nullable: true, comment: "鍐椾綑瀛楁1") + .Annotation("MySql:CharSet", "utf8mb4"), + RedundantField2 = table.Column<string>(type: "varchar(255)", maxLength: 255, nullable: true, comment: "鍐椾綑瀛楁2") + .Annotation("MySql:CharSet", "utf8mb4"), + RedundantField3 = table.Column<string>(type: "varchar(255)", maxLength: 255, nullable: true, comment: "鍐椾綑瀛楁3") + .Annotation("MySql:CharSet", "utf8mb4"), + Sort = table.Column<int>(type: "int", nullable: false, defaultValue: 0, comment: "鎺掑簭"), + Remark = table.Column<string>(type: "varchar(500)", maxLength: 500, nullable: true, comment: "澶囨敞") + .Annotation("MySql:CharSet", "utf8mb4"), + IsDisabled = table.Column<bool>(type: "tinyint(1)", nullable: true, comment: "鏄惁绂佺敤"), + ExtraProperties = table.Column<string>(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ConcurrencyStamp = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CreationTime = table.Column<DateTime>(type: "datetime(6)", nullable: false), + CreatorId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + LastModificationTime = table.Column<DateTime>(type: "datetime(6)", nullable: true), + LastModifierId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + IsDeleted = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false), + DeleterId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + DeletionTime = table.Column<DateTime>(type: "datetime(6)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_scms_wmsmaterialinfos", x => x.Id); + }, + comment: "WMS鐗╂枡淇℃伅琛�") + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "scms_wmsmaterialstocks", + columns: table => new + { + Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + MaterialId = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: false, comment: "鐗╂枡ID") + .Annotation("MySql:CharSet", "utf8mb4"), + MaterialName = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: false, comment: "鐗╂枡鍚嶇О") + .Annotation("MySql:CharSet", "utf8mb4"), + ContainerNo = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true, comment: "瀹瑰櫒缂栧彿") + .Annotation("MySql:CharSet", "utf8mb4"), + ContainerStatus = table.Column<int>(type: "int", nullable: false, comment: "瀹瑰櫒鐘舵��"), + ContainerType = table.Column<int>(type: "int", nullable: false, comment: "瀹瑰櫒绫诲瀷"), + MaterialNo = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: false, comment: "鐗╂枡缂栧彿") + .Annotation("MySql:CharSet", "utf8mb4"), + StockNumber = table.Column<int>(type: "int", nullable: false, comment: "搴撳瓨鏁伴噺"), + MaterialBatch = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true, comment: "鐗╂枡鎵规") + .Annotation("MySql:CharSet", "utf8mb4"), + SupplierCode = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true, comment: "渚涘簲鍟嗙紪鍙�") + .Annotation("MySql:CharSet", "utf8mb4"), + MaterialModel = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: true, comment: "鏈哄瀷/瑙勬牸") + .Annotation("MySql:CharSet", "utf8mb4"), + PlaceNo = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true, comment: "搴撲綅缂栧彿") + .Annotation("MySql:CharSet", "utf8mb4"), + PlaceStatus = table.Column<int>(type: "int", nullable: false, comment: "搴撲綅鐘舵��;"), + StorageTypeNo = table.Column<int>(type: "int", nullable: false, comment: "搴撲綅绫诲瀷"), + AreaCode = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true, comment: "鍖哄煙缂栧彿") + .Annotation("MySql:CharSet", "utf8mb4"), + AreaName = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: true, comment: "搴撳尯鍚嶇О") + .Annotation("MySql:CharSet", "utf8mb4"), + CheckStatus = table.Column<int>(type: "int", nullable: true, comment: "妫�楠岀姸鎬�(1:鏈楠�,2:妫�楠岄�氳繃,3:妫�楠屼笉閫氳繃)"), + IsLock = table.Column<int>(type: "int", nullable: false, comment: "鏄惁閿佸畾(2:鏈攣瀹�,1:宸查攣瀹�)"), + EmptyContainer = table.Column<int>(type: "int", nullable: false, comment: "鏄惁绌烘墭(2:鍚�,1:鏄�)"), + InStockTime = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "鍏ュ簱鏃堕棿"), + Sort = table.Column<int>(type: "int", nullable: false, defaultValue: 0, comment: "鎺掑簭"), + Remark = table.Column<string>(type: "varchar(500)", maxLength: 500, nullable: true, comment: "澶囨敞") + .Annotation("MySql:CharSet", "utf8mb4"), + RedundantField1 = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��") + .Annotation("MySql:CharSet", "utf8mb4"), + RedundantField2 = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��") + .Annotation("MySql:CharSet", "utf8mb4"), + RedundantField3 = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��") + .Annotation("MySql:CharSet", "utf8mb4"), + IsDisabled = table.Column<bool>(type: "tinyint(1)", nullable: true, comment: "鏄惁绂佺敤"), + ExtraProperties = table.Column<string>(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ConcurrencyStamp = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CreationTime = table.Column<DateTime>(type: "datetime(6)", nullable: false), + CreatorId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + LastModificationTime = table.Column<DateTime>(type: "datetime(6)", nullable: true), + LastModifierId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + IsDeleted = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false), + DeleterId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + DeletionTime = table.Column<DateTime>(type: "datetime(6)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_scms_wmsmaterialstocks", x => x.Id); + }, + comment: "WMS鐗╂枡搴撳瓨琛�") + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateIndex( + name: "IX_scms_wmsmaterialinfos_CheckStatus", + table: "scms_wmsmaterialinfos", + column: "CheckStatus"); + + migrationBuilder.CreateIndex( + name: "IX_scms_wmsmaterialinfos_MaterialBatch", + table: "scms_wmsmaterialinfos", + column: "MaterialBatch"); + + migrationBuilder.CreateIndex( + name: "IX_scms_wmsmaterialinfos_MaterialId", + table: "scms_wmsmaterialinfos", + column: "MaterialId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_scms_wmsmaterialinfos_MaterialName", + table: "scms_wmsmaterialinfos", + column: "MaterialName"); + + migrationBuilder.CreateIndex( + name: "IX_scms_wmsmaterialinfos_MaterialNo", + table: "scms_wmsmaterialinfos", + column: "MaterialNo", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_scms_wmsmaterialinfos_SupplierCode", + table: "scms_wmsmaterialinfos", + column: "SupplierCode"); + + migrationBuilder.CreateIndex( + name: "IX_scms_wmsmaterialstocks_AreaCode", + table: "scms_wmsmaterialstocks", + column: "AreaCode"); + + migrationBuilder.CreateIndex( + name: "IX_scms_wmsmaterialstocks_ContainerNo", + table: "scms_wmsmaterialstocks", + column: "ContainerNo"); + + migrationBuilder.CreateIndex( + name: "IX_scms_wmsmaterialstocks_MaterialBatch_SupplierCode", + table: "scms_wmsmaterialstocks", + columns: new[] { "MaterialBatch", "SupplierCode" }); + + migrationBuilder.CreateIndex( + name: "IX_scms_wmsmaterialstocks_MaterialName", + table: "scms_wmsmaterialstocks", + column: "MaterialName"); + + migrationBuilder.CreateIndex( + name: "IX_scms_wmsmaterialstocks_MaterialNo", + table: "scms_wmsmaterialstocks", + column: "MaterialNo", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_scms_wmsmaterialstocks_PlaceNo", + table: "scms_wmsmaterialstocks", + column: "PlaceNo"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "scms_wmsmaterialinfos"); + + migrationBuilder.DropTable( + name: "scms_wmsmaterialstocks"); + } + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505121050_InitialCreate3.Designer.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505121050_InitialCreate3.Designer.cs new file mode 100644 index 0000000..a1f1d07 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505121050_InitialCreate3.Designer.cs @@ -0,0 +1,1003 @@ +锘�// <auto-generated /> +using System; +using CMS.Plugin.HIAWms.MySQL; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace CMS.Plugin.HIAWms.MySQL.Migrations +{ + [DbContext(typeof(CMSPluginDbContext))] + [Migration("20250505121050_InitialCreate3")] + partial class InitialCreate3 + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql) + .HasAnnotation("ProductVersion", "6.0.16") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsAreas.WmsArea", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property<string>("AreaDesc") + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasComment("鎻忚堪"); + + b.Property<string>("AreaName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("搴撳尯鍚嶇О"); + + b.Property<string>("AreaNo") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("搴撳尯缂栧彿"); + + b.Property<int>("AreaStatus") + .HasColumnType("int") + .HasComment("搴撳尯鐘舵��"); + + b.Property<int>("AreaType") + .HasColumnType("int") + .HasComment("搴撳尯绫诲瀷"); + + b.Property<string>("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property<DateTime>("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property<Guid?>("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property<Guid?>("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property<DateTime?>("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property<string>("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property<bool>("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property<bool?>("IsDisabled") + .HasColumnType("tinyint(1)") + .HasComment("鏄惁绂佺敤"); + + b.Property<DateTime?>("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property<Guid?>("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property<string>("RedundantField1") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField2") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField3") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("Remark") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasComment("澶囨敞"); + + b.Property<int>("Sort") + .HasColumnType("int") + .HasComment("鎺掑簭"); + + b.Property<string>("StoreCode") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("浠撳簱浠g爜"); + + b.Property<string>("StoreName") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("浠撳簱鍚嶇О"); + + b.HasKey("Id"); + + b.HasIndex("AreaName"); + + b.ToTable("scms_wmsareas", (string)null); + + b.HasComment("搴撳尯琛�"); + }); + + modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsContainers.WmsContainer", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property<string>("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property<string>("ContainerNo") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("鎵樼洏缂栧彿"); + + b.Property<int>("ContainerStatus") + .HasColumnType("int") + .HasComment("鎵樼洏鐘舵��"); + + b.Property<int>("ContainerType") + .HasColumnType("int") + .HasComment("鎵樼洏绫诲瀷"); + + b.Property<DateTime>("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property<Guid?>("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property<Guid?>("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property<DateTime?>("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property<int?>("ExceptionNumber") + .HasColumnType("int") + .HasComment("寮傚父鏁伴噺"); + + b.Property<string>("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property<bool>("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property<bool?>("IsDisabled") + .HasColumnType("tinyint(1)") + .HasComment("鏄惁绂佺敤"); + + b.Property<DateTime?>("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property<Guid?>("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property<decimal?>("LimitHeight") + .HasPrecision(18, 2) + .HasColumnType("decimal(18,2)") + .HasComment("闄愰珮"); + + b.Property<decimal?>("LimitLength") + .HasPrecision(18, 2) + .HasColumnType("decimal(18,2)") + .HasComment("闄愰暱"); + + b.Property<decimal?>("LimitWidth") + .HasPrecision(18, 2) + .HasColumnType("decimal(18,2)") + .HasComment("闄愬"); + + b.Property<int?>("MaterialNumber") + .HasColumnType("int") + .HasComment("鐗╂枡鏁伴噺"); + + b.Property<decimal?>("MaxWeight") + .HasPrecision(18, 2) + .HasColumnType("decimal(18,2)") + .HasComment("杞介噸涓婇檺"); + + b.Property<string>("RedundantField1") + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasComment("鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField2") + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasComment("鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField3") + .HasMaxLength(200) + .HasColumnType("varchar(200)") + .HasComment("鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("Remark") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasComment("澶囨敞"); + + b.Property<int>("Sort") + .HasColumnType("int") + .HasComment("鎺掑簭"); + + b.Property<decimal?>("SpecHeight") + .HasPrecision(18, 2) + .HasColumnType("decimal(18,2)") + .HasComment("楂樺害"); + + b.Property<decimal?>("SpecLength") + .HasPrecision(18, 2) + .HasColumnType("decimal(18,2)") + .HasComment("闀垮害"); + + b.Property<decimal?>("SpecWidth") + .HasPrecision(18, 2) + .HasColumnType("decimal(18,2)") + .HasComment("瀹藉害"); + + b.HasKey("Id"); + + b.HasIndex("ContainerNo") + .IsUnique(); + + b.HasIndex("ContainerStatus"); + + b.HasIndex("ContainerType"); + + b.ToTable("scms_wmscontainers", (string)null); + + b.HasComment("鎵樼洏淇℃伅琛�"); + }); + + modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsMaterialInfos.WmsMaterialInfo", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property<int?>("CheckStatus") + .HasColumnType("int") + .HasComment("妫�楠岀姸鎬�(0:鏈楠�,1:妫�楠岄�氳繃,2:妫�楠屼笉閫氳繃)"); + + b.Property<string>("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property<DateTime>("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property<Guid?>("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property<Guid?>("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property<DateTime?>("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property<string>("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property<bool>("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property<bool?>("IsDisabled") + .HasColumnType("tinyint(1)") + .HasComment("鏄惁绂佺敤"); + + b.Property<DateTime?>("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property<Guid?>("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property<string>("MaterialBatch") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("鐗╂枡鎵瑰彿"); + + b.Property<string>("MaterialId") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("鐗╂枡鍞竴鐮�"); + + b.Property<string>("MaterialModel") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("鏈哄瀷/瑙勬牸"); + + b.Property<string>("MaterialName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("鐗╂枡鍚嶇О"); + + b.Property<string>("MaterialNo") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("鐗╂枡浠e彿"); + + b.Property<string>("RedundantField1") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("鍐椾綑瀛楁1"); + + b.Property<string>("RedundantField2") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("鍐椾綑瀛楁2"); + + b.Property<string>("RedundantField3") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("鍐椾綑瀛楁3"); + + b.Property<string>("Remark") + .HasMaxLength(500) + .HasColumnType("varchar(500)") + .HasComment("澶囨敞"); + + b.Property<int>("Sort") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasComment("鎺掑簭"); + + b.Property<int?>("StockNumber") + .HasColumnType("int") + .HasComment("搴撳瓨鏁伴噺"); + + b.Property<string>("SupplierCode") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("渚涘簲鍟嗙紪鍙�"); + + b.HasKey("Id"); + + b.HasIndex("CheckStatus"); + + b.HasIndex("MaterialBatch"); + + b.HasIndex("MaterialId") + .IsUnique(); + + b.HasIndex("MaterialName"); + + b.HasIndex("MaterialNo") + .IsUnique(); + + b.HasIndex("SupplierCode"); + + b.ToTable("scms_wmsmaterialinfos", (string)null); + + b.HasComment("WMS鐗╂枡淇℃伅琛�"); + }); + + modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsMaterials.WmsMaterial", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property<string>("Certification") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasComment("璇佷功缂栧彿"); + + b.Property<string>("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property<DateTime>("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property<Guid?>("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property<Guid?>("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property<DateTime?>("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property<string>("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property<string>("Factory") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("鐢熶骇宸ュ巶"); + + b.Property<bool>("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property<bool?>("IsDisabled") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasComment("鏄惁绂佺敤"); + + b.Property<int>("IsMainBranch") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(2) + .HasComment("鏄惁涓轰富鏀"); + + b.Property<DateTime?>("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property<Guid?>("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property<decimal>("Length") + .HasColumnType("decimal(18,2)") + .HasComment("闀垮害锛堝崟浣嶏細m锛�"); + + b.Property<string>("MaterialCode") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛�"); + + b.Property<string>("MaterialModel") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasComment("鍨嬪彿"); + + b.Property<string>("MaterialName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasComment("鐗╂枡鍚嶇О"); + + b.Property<string>("MaterialQuality") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("鏉愯川锛堝锛�304涓嶉攬閽級"); + + b.Property<int>("MaterialType") + .HasColumnType("int") + .HasComment("鐗╂枡绫诲瀷锛堟灇涓惧�硷級"); + + b.Property<decimal>("OuterDiameter") + .HasColumnType("decimal(18,2)") + .HasComment("澶栧緞锛堝崟浣嶏細mm锛�"); + + b.Property<string>("PrimaryUnit") + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("涓诲崟浣嶏紙濡傦細kg銆乵銆佷釜锛�"); + + b.Property<int>("PurchaseType") + .HasColumnType("int") + .HasComment("閲囪喘绫诲瀷锛堟灇涓惧�硷級"); + + b.Property<string>("RedundantField1") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasComment("鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField2") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasComment("鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField3") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasComment("鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("Remark") + .HasMaxLength(500) + .HasColumnType("varchar(500)") + .HasComment("澶囨敞"); + + b.Property<int>("Sort") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasComment("鎺掑簭"); + + b.Property<string>("Standard") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasComment("瑙勬牸/鏍囧噯锛堝锛欸B/T 8163-2018锛�"); + + b.Property<decimal>("WallThickness") + .HasColumnType("decimal(18,2)") + .HasComment("澹佸帤锛堝崟浣嶏細mm锛�"); + + b.HasKey("Id"); + + b.HasIndex("MaterialCode") + .IsUnique(); + + b.HasIndex("MaterialName"); + + b.HasIndex("MaterialType"); + + b.HasIndex("PurchaseType"); + + b.ToTable("scms_wmsmaterials", (string)null); + + b.HasComment("鐗╂枡鍩虹淇℃伅琛�"); + }); + + modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsMaterialStocks.WmsMaterialStock", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property<string>("AreaCode") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("鍖哄煙缂栧彿"); + + b.Property<string>("AreaName") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasComment("搴撳尯鍚嶇О"); + + b.Property<int?>("CheckStatus") + .HasColumnType("int") + .HasComment("妫�楠岀姸鎬�(1:鏈楠�,2:妫�楠岄�氳繃,3:妫�楠屼笉閫氳繃)"); + + b.Property<string>("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property<string>("ContainerNo") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("瀹瑰櫒缂栧彿"); + + b.Property<int>("ContainerStatus") + .HasColumnType("int") + .HasComment("瀹瑰櫒鐘舵��"); + + b.Property<int>("ContainerType") + .HasColumnType("int") + .HasComment("瀹瑰櫒绫诲瀷"); + + b.Property<DateTime>("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property<Guid?>("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property<Guid?>("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property<DateTime?>("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property<int>("EmptyContainer") + .HasColumnType("int") + .HasComment("鏄惁绌烘墭(2:鍚�,1:鏄�)"); + + b.Property<string>("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property<DateTime?>("InStockTime") + .HasColumnType("datetime(6)") + .HasComment("鍏ュ簱鏃堕棿"); + + b.Property<bool>("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property<bool?>("IsDisabled") + .HasColumnType("tinyint(1)") + .HasComment("鏄惁绂佺敤"); + + b.Property<int>("IsLock") + .HasColumnType("int") + .HasComment("鏄惁閿佸畾(2:鏈攣瀹�,1:宸查攣瀹�)"); + + b.Property<DateTime?>("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property<Guid?>("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property<string>("MaterialBatch") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("鐗╂枡鎵规"); + + b.Property<string>("MaterialId") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("鐗╂枡ID"); + + b.Property<string>("MaterialModel") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasComment("鏈哄瀷/瑙勬牸"); + + b.Property<string>("MaterialName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasComment("鐗╂枡鍚嶇О"); + + b.Property<string>("MaterialNo") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("鐗╂枡缂栧彿"); + + b.Property<string>("PlaceNo") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("搴撲綅缂栧彿"); + + b.Property<int>("PlaceStatus") + .HasColumnType("int") + .HasComment("搴撲綅鐘舵��;"); + + b.Property<string>("RedundantField1") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasComment("鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField2") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasComment("鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField3") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasComment("鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("Remark") + .HasMaxLength(500) + .HasColumnType("varchar(500)") + .HasComment("澶囨敞"); + + b.Property<int>("Sort") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasComment("鎺掑簭"); + + b.Property<int>("StockNumber") + .HasColumnType("int") + .HasComment("搴撳瓨鏁伴噺"); + + b.Property<int>("StorageTypeNo") + .HasColumnType("int") + .HasComment("搴撲綅绫诲瀷"); + + b.Property<string>("SupplierCode") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("渚涘簲鍟嗙紪鍙�"); + + b.HasKey("Id"); + + b.HasIndex("AreaCode"); + + b.HasIndex("ContainerNo"); + + b.HasIndex("MaterialName"); + + b.HasIndex("MaterialNo") + .IsUnique(); + + b.HasIndex("PlaceNo"); + + b.HasIndex("MaterialBatch", "SupplierCode"); + + b.ToTable("scms_wmsmaterialstocks", (string)null); + + b.HasComment("WMS鐗╂枡搴撳瓨琛�"); + }); + + modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsPlaces.WmsPlace", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property<int>("Aisle") + .HasColumnType("int") + .HasComment("宸烽亾"); + + b.Property<string>("AreaCode") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("鎵�鍦ㄥ簱鍖�"); + + b.Property<int>("ColumnNo") + .HasColumnType("int") + .HasComment("鍒�"); + + b.Property<string>("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property<DateTime>("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property<Guid?>("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property<Guid?>("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property<DateTime?>("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property<int>("EmptyContainer") + .HasColumnType("int") + .HasComment("鏄惁绌烘墭"); + + b.Property<string>("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property<bool>("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property<bool?>("IsDisabled") + .HasColumnType("tinyint(1)") + .HasComment("鏄惁绂佺敤"); + + b.Property<int>("Islock") + .HasColumnType("int") + .HasComment("鏄惁閿佸畾"); + + b.Property<DateTime?>("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property<Guid?>("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property<int>("LayerNo") + .HasColumnType("int") + .HasComment("灞�"); + + b.Property<string>("PlaceNo") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("缂栧彿"); + + b.Property<int>("PlaceStatus") + .HasColumnType("int") + .HasComment("璐т綅鐘舵��"); + + b.Property<string>("RedundantField1") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField2") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField3") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("Remark") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasComment("澶囨敞"); + + b.Property<int>("RowNo") + .HasColumnType("int") + .HasComment("鎺�"); + + b.Property<int>("Sort") + .HasColumnType("int") + .HasComment("鎺掑簭"); + + b.Property<int>("StorageTypeNo") + .HasColumnType("int") + .HasComment("璐т綅绫诲瀷"); + + b.HasKey("Id"); + + b.HasIndex("AreaCode"); + + b.HasIndex("PlaceNo") + .IsUnique(); + + b.HasIndex("PlaceStatus"); + + b.HasIndex("StorageTypeNo"); + + b.ToTable("scms_wmsplaces", (string)null); + + b.HasComment("搴撲綅琛�"); + }); + + modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsStores.WmsStore", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property<string>("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property<DateTime>("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property<Guid?>("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property<Guid?>("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property<DateTime?>("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property<string>("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property<bool>("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property<bool?>("IsDisabled") + .HasColumnType("tinyint(1)") + .HasComment("鏄惁绂佺敤"); + + b.Property<DateTime?>("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property<Guid?>("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property<string>("RedundantField1") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField2") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField3") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("Remark") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasComment("澶囨敞"); + + b.Property<int>("Sort") + .HasColumnType("int") + .HasComment("鎺掑簭"); + + b.Property<string>("StoreCode") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("浠撳簱浠g爜"); + + b.Property<string>("StoreName") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("浠撳簱鍚嶇О"); + + b.HasKey("Id"); + + b.HasIndex("StoreName"); + + b.ToTable("scms_wmsstores", (string)null); + + b.HasComment("浠撳簱淇℃伅琛�"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505121050_InitialCreate3.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505121050_InitialCreate3.cs new file mode 100644 index 0000000..ea59180 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505121050_InitialCreate3.cs @@ -0,0 +1,28 @@ +锘縰sing Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace CMS.Plugin.HIAWms.MySQL.Migrations +{ + public partial class InitialCreate3 : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn<string>( + name: "MaterialModel", + table: "scms_wmsmaterials", + type: "varchar(128)", + maxLength: 128, + nullable: true, + comment: "鍨嬪彿") + .Annotation("MySql:CharSet", "utf8mb4"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "MaterialModel", + table: "scms_wmsmaterials"); + } + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs index 88d2312..6ec187c 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs @@ -284,6 +284,144 @@ b.HasComment("鎵樼洏淇℃伅琛�"); }); + modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsMaterialInfos.WmsMaterialInfo", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property<int?>("CheckStatus") + .HasColumnType("int") + .HasComment("妫�楠岀姸鎬�(0:鏈楠�,1:妫�楠岄�氳繃,2:妫�楠屼笉閫氳繃)"); + + b.Property<string>("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property<DateTime>("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property<Guid?>("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property<Guid?>("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property<DateTime?>("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property<string>("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property<bool>("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property<bool?>("IsDisabled") + .HasColumnType("tinyint(1)") + .HasComment("鏄惁绂佺敤"); + + b.Property<DateTime?>("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property<Guid?>("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property<string>("MaterialBatch") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("鐗╂枡鎵瑰彿"); + + b.Property<string>("MaterialId") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("鐗╂枡鍞竴鐮�"); + + b.Property<string>("MaterialModel") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("鏈哄瀷/瑙勬牸"); + + b.Property<string>("MaterialName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasComment("鐗╂枡鍚嶇О"); + + b.Property<string>("MaterialNo") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("鐗╂枡浠e彿"); + + b.Property<string>("RedundantField1") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("鍐椾綑瀛楁1"); + + b.Property<string>("RedundantField2") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("鍐椾綑瀛楁2"); + + b.Property<string>("RedundantField3") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("鍐椾綑瀛楁3"); + + b.Property<string>("Remark") + .HasMaxLength(500) + .HasColumnType("varchar(500)") + .HasComment("澶囨敞"); + + b.Property<int>("Sort") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasComment("鎺掑簭"); + + b.Property<int?>("StockNumber") + .HasColumnType("int") + .HasComment("搴撳瓨鏁伴噺"); + + b.Property<string>("SupplierCode") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("渚涘簲鍟嗙紪鍙�"); + + b.HasKey("Id"); + + b.HasIndex("CheckStatus"); + + b.HasIndex("MaterialBatch"); + + b.HasIndex("MaterialId") + .IsUnique(); + + b.HasIndex("MaterialName"); + + b.HasIndex("MaterialNo") + .IsUnique(); + + b.HasIndex("SupplierCode"); + + b.ToTable("scms_wmsmaterialinfos", (string)null); + + b.HasComment("WMS鐗╂枡淇℃伅琛�"); + }); + modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsMaterials.WmsMaterial", b => { b.Property<Guid>("Id") @@ -362,6 +500,11 @@ .HasColumnType("varchar(64)") .HasComment("鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛�"); + b.Property<string>("MaterialModel") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasComment("鍨嬪彿"); + b.Property<string>("MaterialName") .IsRequired() .HasMaxLength(128) @@ -441,6 +584,191 @@ b.HasComment("鐗╂枡鍩虹淇℃伅琛�"); }); + modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsMaterialStocks.WmsMaterialStock", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property<string>("AreaCode") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("鍖哄煙缂栧彿"); + + b.Property<string>("AreaName") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasComment("搴撳尯鍚嶇О"); + + b.Property<int?>("CheckStatus") + .HasColumnType("int") + .HasComment("妫�楠岀姸鎬�(1:鏈楠�,2:妫�楠岄�氳繃,3:妫�楠屼笉閫氳繃)"); + + b.Property<string>("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property<string>("ContainerNo") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("瀹瑰櫒缂栧彿"); + + b.Property<int>("ContainerStatus") + .HasColumnType("int") + .HasComment("瀹瑰櫒鐘舵��"); + + b.Property<int>("ContainerType") + .HasColumnType("int") + .HasComment("瀹瑰櫒绫诲瀷"); + + b.Property<DateTime>("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property<Guid?>("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property<Guid?>("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property<DateTime?>("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property<int>("EmptyContainer") + .HasColumnType("int") + .HasComment("鏄惁绌烘墭(2:鍚�,1:鏄�)"); + + b.Property<string>("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property<DateTime?>("InStockTime") + .HasColumnType("datetime(6)") + .HasComment("鍏ュ簱鏃堕棿"); + + b.Property<bool>("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property<bool?>("IsDisabled") + .HasColumnType("tinyint(1)") + .HasComment("鏄惁绂佺敤"); + + b.Property<int>("IsLock") + .HasColumnType("int") + .HasComment("鏄惁閿佸畾(2:鏈攣瀹�,1:宸查攣瀹�)"); + + b.Property<DateTime?>("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property<Guid?>("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property<string>("MaterialBatch") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("鐗╂枡鎵规"); + + b.Property<string>("MaterialId") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("鐗╂枡ID"); + + b.Property<string>("MaterialModel") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasComment("鏈哄瀷/瑙勬牸"); + + b.Property<string>("MaterialName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasComment("鐗╂枡鍚嶇О"); + + b.Property<string>("MaterialNo") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("鐗╂枡缂栧彿"); + + b.Property<string>("PlaceNo") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("搴撲綅缂栧彿"); + + b.Property<int>("PlaceStatus") + .HasColumnType("int") + .HasComment("搴撲綅鐘舵��;"); + + b.Property<string>("RedundantField1") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasComment("鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField2") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasComment("鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("RedundantField3") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasComment("鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��"); + + b.Property<string>("Remark") + .HasMaxLength(500) + .HasColumnType("varchar(500)") + .HasComment("澶囨敞"); + + b.Property<int>("Sort") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasComment("鎺掑簭"); + + b.Property<int>("StockNumber") + .HasColumnType("int") + .HasComment("搴撳瓨鏁伴噺"); + + b.Property<int>("StorageTypeNo") + .HasColumnType("int") + .HasComment("搴撲綅绫诲瀷"); + + b.Property<string>("SupplierCode") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasComment("渚涘簲鍟嗙紪鍙�"); + + b.HasKey("Id"); + + b.HasIndex("AreaCode"); + + b.HasIndex("ContainerNo"); + + b.HasIndex("MaterialName"); + + b.HasIndex("MaterialNo") + .IsUnique(); + + b.HasIndex("PlaceNo"); + + b.HasIndex("MaterialBatch", "SupplierCode"); + + b.ToTable("scms_wmsmaterialstocks", (string)null); + + b.HasComment("WMS鐗╂枡搴撳瓨琛�"); + }); + modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsPlaces.WmsPlace", b => { b.Property<Guid>("Id") diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Scripts/UpdateMigrations.bat b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Scripts/UpdateMigrations.bat index 101a898..5254e36 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Scripts/UpdateMigrations.bat +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Scripts/UpdateMigrations.bat @@ -1,5 +1,5 @@ cd ../ -dotnet ef migrations add InitialCreate1 -c CMSPluginDbContext -o Migrations +dotnet ef migrations add InitialCreate3 -c CMSPluginDbContext -o Migrations ::dotnet ef migrations add Update1 -c CMSPluginDbContext -o Migrations ::dotnet ef migrations add Update2 -c CMSPluginDbContext -o Migrations ::dotnet ef migrations add Update3 -c CMSPluginDbContext -o Migrations diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginDbContext.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginDbContext.cs index de77d36..dac2f4d 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginDbContext.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginDbContext.cs @@ -38,6 +38,7 @@ builder.ConfigureWmsPlace(); builder.ConfigureWmsMaterial(); builder.ConfigureWmsMaterialStock(); + builder.ConfigureWmsMaterialInfo(); /* Configure your own tables/entities inside here */ //builder.Entity<YourEntity>(b => diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginDbContext.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginDbContext.cs index 7a4e331..74d194a 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginDbContext.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginDbContext.cs @@ -38,6 +38,7 @@ builder.ConfigureWmsPlace(); builder.ConfigureWmsMaterial(); builder.ConfigureWmsMaterialStock(); + builder.ConfigureWmsMaterialInfo(); /* Configure your own tables/entities inside here */ diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsMaterialInfoController.cs b/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsMaterialInfoController.cs new file mode 100644 index 0000000..5a15adb --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsMaterialInfoController.cs @@ -0,0 +1,187 @@ +using Ao.Lang; +using CMS.Extensions.Abp.AspNetCore.Mvc.Filters; +using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialInfos; +using CMS.Plugin.HIAWms.Application.Contracts.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using MiniExcelLibs; +using System.Reflection; +using Volo.Abp; +using Volo.Abp.Application.Dtos; + +namespace CMS.Plugin.HIAWms.Controller +{ + /// <summary> + /// WmsMaterialInfo鏈嶅姟 + /// </summary> + [ApiController] + [TypeFilter(typeof(CMSLanguageFilter))] + [TypeFilter(typeof(CMSUowActionFilter))] + [TypeFilter(typeof(CMSAuditActionFilter))] + [TypeFilter(typeof(CMSExceptionFilter))] + [Route("api/v{version:apiVersion}/HIAWms/[controller]")] + public class WmsMaterialInfoController : ControllerBase + { + private readonly IWmsMaterialInfoAppService _wmsmaterialinfoAppService; + + /// <summary> + /// Initializes a new instance of the <see cref="WmsMaterialInfoController"/> class. + /// </summary> + /// <param name="wmsmaterialinfoAppService">The wmsmaterialinfo application service.</param> + public WmsMaterialInfoController(IWmsMaterialInfoAppService wmsmaterialinfoAppService) + { + _wmsmaterialinfoAppService = wmsmaterialinfoAppService; + } + + /// <summary> + /// 鑾峰彇wmsmaterialinfo. + /// </summary> + /// <param name="id">鏍囪瘑绗�.</param> + /// <returns></returns> + [HttpGet] + [Route("{id}")] + public virtual Task<WmsMaterialInfoDto> GetAsync(Guid id) + { + return _wmsmaterialinfoAppService.GetAsync(id); + } + + /// <summary> + /// 鑾峰彇wmsmaterialinfo鐨勫垪琛�. + /// </summary> + /// <param name="input">杈撳叆.</param> + /// <returns></returns> + [HttpGet] + public virtual Task<PagedResultDto<WmsMaterialInfoDto>> GetListAsync([FromQuery] GetWmsMaterialInfosInput input) + { + return _wmsmaterialinfoAppService.GetListAsync(input); + } + + /// <summary> + /// 鍒涘缓wmsmaterialinfo. + /// </summary> + /// <param name="input">杈撳叆.</param> + /// <returns></returns> + //[Authorize] + [HttpPost] + public virtual Task<WmsMaterialInfoDto> CreateAsync(WmsMaterialInfoCreateDto input) + { + return _wmsmaterialinfoAppService.CreateAsync(input); + } + + /// <summary> + /// 鏇存柊wmsmaterialinfo. + /// </summary> + /// <param name="id">鏍囪瘑绗�.</param> + /// <param name="input">杈撳叆.</param> + /// <returns></returns> + //[Authorize] + [HttpPut] + [Route("{id}")] + public virtual Task<WmsMaterialInfoDto> UpdateAsync(Guid id, WmsMaterialInfoUpdateDto input) + { + return _wmsmaterialinfoAppService.UpdateAsync(id, input); + } + + /// <summary> + /// 鍏嬮殕WmsMaterialInfo. + /// </summary> + /// <param name="ids">Id闆嗗悎.</param> + /// <returns></returns> + //[Authorize] + [HttpPost] + [Route("Clone")] + public virtual Task<List<WmsMaterialInfoDto>> CloneAsync([FromBody] IEnumerable<Guid> ids) + { + return _wmsmaterialinfoAppService.CloneAsync(ids); + } + + /// <summary> + /// 鍒犻櫎wmsmaterialinfo. + /// </summary> + /// <param name="id">鏍囪瘑绗�.</param> + /// <returns></returns> + //[Authorize] + [HttpDelete] + [Route("{id}")] + public virtual Task DeleteAsync(Guid id) + { + return _wmsmaterialinfoAppService.DeleteAsync(id); + } + + /// <summary> + /// 鎵归噺鍒犻櫎wmsmaterialinfo. + /// </summary> + /// <param name="ids">The ids.</param> + /// <returns></returns> + //[Authorize] + [HttpDelete] + public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids) + { + return _wmsmaterialinfoAppService.DeleteManyAsync(ids); + } + + /// <summary> + /// 璋冩暣鎺掑簭. + /// </summary> + /// <param name="id">鏍囪瘑绗�.</param> + /// <returns></returns> + [HttpPut] + [Route("{id}/AdjustSort/{sort}")] + public virtual Task AdjustSortAsync(Guid id, int sort) + { + return _wmsmaterialinfoAppService.AdjustSortAsync(id, sort); + } + + /// <summary> + /// 瀵煎叆wmsmaterialinfo. + /// </summary> + /// <returns></returns> + [Authorize] + [HttpPost] + [Route("Import")] + public virtual async Task<IActionResult> ImportAsync(IFormFile file) + { + using var stream = new MemoryStream(); + await file.CopyToAsync(stream); + stream.Seek(0L, SeekOrigin.Begin); + + var sheetNames = stream.GetSheetNames(); + var wmsmaterialinfoRows = sheetNames.Contains("閰嶇疆") ? MiniExcel.Query<WmsMaterialInfosImportModel.WmsMaterialInfoImportModel>(stream, sheetName: "閰嶇疆").ToList() : new(); + + if (!wmsmaterialinfoRows.Any()) + { + throw new UserFriendlyException("璇锋鏌ュ鍏ョ殑琛ㄦ牸"); + } + + await _wmsmaterialinfoAppService.ImportAsync(new WmsMaterialInfosImportModel + { + WmsMaterialInfos = wmsmaterialinfoRows, + }); + + return Ok(); + } + + /// <summary> + /// 瀵煎嚭wmsmaterialinfo. + /// </summary> + /// <returns></returns> + [HttpGet] + [Route("Export")] + public virtual async Task<IActionResult> ExportAsync([FromQuery] GetWmsMaterialInfosInput input) + { + input.MaxResultCount = int.MaxValue; + var exportData = await _wmsmaterialinfoAppService.ExportAsync(input); + var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Resources/Templates/WmsMaterialInfo瀵煎嚭妯℃澘.xlsx"); + if (!System.IO.File.Exists(templatePath)) + { + templatePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty, $"Resources/Templates/WmsMaterialInfo瀵煎嚭妯℃澘.xlsx"); + } + + var memoryStream = new MemoryStream(); + await memoryStream.SaveAsByTemplateAsync(templatePath, exportData.Sheets); + memoryStream.Seek(0L, SeekOrigin.Begin); + return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { FileDownloadName = $"{exportData.FileName}_{DateTime.Now:yyyyMMddhhmmss}.xlsx" }; + } + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsPlaceController.cs b/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsPlaceController.cs index 07c65ab..de889ce 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsPlaceController.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsPlaceController.cs @@ -52,7 +52,7 @@ /// <param name="input">杈撳叆.</param> /// <returns></returns> [HttpGet] - public virtual Task<PagedResultDto<WmsPlaceDto>> GetListAsync([FromQuery] GetWmsPlacesInput input) + public virtual Task<PagedResultDto<WmsPlaceDto>> GetListAsync([FromQuery] GetWmsMaterialInfoInput input) { return _wmsplaceAppService.GetListAsync(input); } @@ -168,7 +168,7 @@ /// <returns></returns> [HttpGet] [Route("Export")] - public virtual async Task<IActionResult> ExportAsync([FromQuery] GetWmsPlacesInput input) + public virtual async Task<IActionResult> ExportAsync([FromQuery] GetWmsMaterialInfoInput input) { input.MaxResultCount = int.MaxValue; var exportData = await _wmsplaceAppService.ExportAsync(input); diff --git "a/HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterialInfo\345\257\274\345\207\272\346\250\241\346\235\277.xlsx" "b/HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterialInfo\345\257\274\345\207\272\346\250\241\346\235\277.xlsx" new file mode 100644 index 0000000..4e15cde --- /dev/null +++ "b/HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterialInfo\345\257\274\345\207\272\346\250\241\346\235\277.xlsx" Binary files differ diff --git "a/HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterialStock\345\257\274\345\207\272\346\250\241\346\235\277.xlsx" "b/HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterialStock\345\257\274\345\207\272\346\250\241\346\235\277.xlsx" index 59dee9c..0f7d92e 100644 --- "a/HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterialStock\345\257\274\345\207\272\346\250\241\346\235\277.xlsx" +++ "b/HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterialStock\345\257\274\345\207\272\346\250\241\346\235\277.xlsx" Binary files differ diff --git a/HIAWms/web/components.d.ts b/HIAWms/web/components.d.ts index dfdfd24..135cdd6 100644 --- a/HIAWms/web/components.d.ts +++ b/HIAWms/web/components.d.ts @@ -22,6 +22,7 @@ ElButton: typeof import('element-plus/es')['ElButton'] ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider'] + ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] ElDialog: typeof import('element-plus/es')['ElDialog'] ElDivider: typeof import('element-plus/es')['ElDivider'] ElDrawer: typeof import('element-plus/es')['ElDrawer'] diff --git a/HIAWms/web/src/config/menu.ts b/HIAWms/web/src/config/menu.ts index 1a0aaf6..39897c5 100644 --- a/HIAWms/web/src/config/menu.ts +++ b/HIAWms/web/src/config/menu.ts @@ -7,6 +7,13 @@ "notPage": false }, { + "name": "搴撳瓨淇℃伅", + "path": "/information-base/WmsMaterialStock", + "patchName": "WmsMaterialStock", + "icon": "p", + "notPage": false + }, + { "name": "Wms鎵樼洏绠$悊", "path": "/information-base/WmsContainer", "patchName": "WmsContainer", @@ -36,6 +43,13 @@ "icon": "p", "notPage": false }, + "WmsMaterialStock": { + "name": "搴撳瓨淇℃伅", + "path": "/information-base/WmsMaterialStock", + "patchName": "WmsMaterialStock", + "icon": "p", + "notPage": false + }, "WmsContainer": { "name": "Wms鎵樼洏绠$悊", "path": "/information-base/WmsContainer", diff --git a/HIAWms/web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.tsx b/HIAWms/web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.tsx index 2e2946f..7e1295f 100644 --- a/HIAWms/web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.tsx +++ b/HIAWms/web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.tsx @@ -86,6 +86,12 @@ rules: [{ required: true, message: '璇烽�夋嫨鐗╂枡绫诲瀷', trigger: 'change' }], }, { + label: '鍨嬪彿', + prop: 'materialModel', + el: 'input', + placeholder: '璇疯緭鍏ュ瀷鍙�', + }, + { label: '涓诲崟浣�', prop: 'primaryUnit', el: 'input', @@ -214,6 +220,7 @@ materialType: formData.value.materialType, primaryUnit: formData.value.primaryUnit, standard: formData.value.standard, + materialModel: formData.value.materialModel, outerDiameter: formData.value.outerDiameter, wallThickness: formData.value.wallThickness, materialQuality: formData.value.materialQuality, @@ -278,6 +285,7 @@ materialType: res.materialType, primaryUnit: res.primaryUnit, standard: res.standard, + materialModel: res.materialModel, outerDiameter: res.outerDiameter, wallThickness: res.wallThickness, materialQuality: res.materialQuality, diff --git a/HIAWms/web/src/widgets/HIAWms/Views/Pages/WmsMaterial/Config.ts b/HIAWms/web/src/widgets/HIAWms/Views/Pages/WmsMaterial/Config.ts index 2b0e6f5..a6762bf 100644 --- a/HIAWms/web/src/widgets/HIAWms/Views/Pages/WmsMaterial/Config.ts +++ b/HIAWms/web/src/widgets/HIAWms/Views/Pages/WmsMaterial/Config.ts @@ -21,6 +21,10 @@ title: '鐗╂枡绫诲瀷', }, { + field: 'materialModel', + title: '鐗╂枡鍨嬪彿', + }, + { field: 'primaryUnit', title: '涓诲崟浣�', }, diff --git a/HIAWms/web/src/widgets/WmsContainer/Controllers/WmsContainer.ts b/HIAWms/web/src/widgets/WmsContainer/Controllers/WmsContainer.ts index d3a9ab0..97ecbec 100644 --- a/HIAWms/web/src/widgets/WmsContainer/Controllers/WmsContainer.ts +++ b/HIAWms/web/src/widgets/WmsContainer/Controllers/WmsContainer.ts @@ -85,40 +85,40 @@ divided: true, icon: 'o', }, - { - label: '鍚戜笂娣诲姞', - fn: (c: CurrentType, pageNum: number) => { - current.value = null - sort.value = c.index + 1 + (pageNum - 1) * 50 - dialogConfig.visible = true - dialogConfig.title = '娣诲姞' - dialogConfig.isAdd = false - }, - divided: true, - icon: 'up', - }, - { - label: '鍚戜笅娣诲姞', - fn: (c: CurrentType, pageNum: number) => { - current.value = null - sort.value = c.index + 2 + (pageNum - 1) * 50 - dialogConfig.visible = true - dialogConfig.title = '娣诲姞' - dialogConfig.isAdd = false - }, - divided: true, - icon: 'down', - }, - { - label: '鍒涘缓鍓湰', - fn: async ({ row }: CurrentType) => { - await wmsContainer.cloneData([row.id]) - ElMessage.success('鍒涘缓鍓湰鎴愬姛') - tableRef.value?.getList() - }, - divided: true, - icon: 'copy', - }, + // { + // label: '鍚戜笂娣诲姞', + // fn: (c: CurrentType, pageNum: number) => { + // current.value = null + // sort.value = c.index + 1 + (pageNum - 1) * 50 + // dialogConfig.visible = true + // dialogConfig.title = '娣诲姞' + // dialogConfig.isAdd = false + // }, + // divided: true, + // icon: 'up', + // }, + // { + // label: '鍚戜笅娣诲姞', + // fn: (c: CurrentType, pageNum: number) => { + // current.value = null + // sort.value = c.index + 2 + (pageNum - 1) * 50 + // dialogConfig.visible = true + // dialogConfig.title = '娣诲姞' + // dialogConfig.isAdd = false + // }, + // divided: true, + // icon: 'down', + // }, + // { + // label: '鍒涘缓鍓湰', + // fn: async ({ row }: CurrentType) => { + // await wmsContainer.cloneData([row.id]) + // ElMessage.success('鍒涘缓鍓湰鎴愬姛') + // tableRef.value?.getList() + // }, + // divided: true, + // icon: 'copy', + // }, { label: '鍒犻櫎', fn: async (c: CurrentType) => { diff --git a/HIAWms/web/src/widgets/WmsMaterialStock/Controllers/File.ts b/HIAWms/web/src/widgets/WmsMaterialStock/Controllers/File.ts new file mode 100644 index 0000000..75397ed --- /dev/null +++ b/HIAWms/web/src/widgets/WmsMaterialStock/Controllers/File.ts @@ -0,0 +1,31 @@ +import { importFileToService, exportFileToClient } from '@/api/file' +import { ElMessage } from 'element-plus' +import { downloadFile } from '@/utils' +import dayjs from 'dayjs' + +export const useFile = () => { + /** + * 瀵煎叆鏂囦欢 + * @param url + */ + const importFile = async (url: string, file: File) => { + const formData = new FormData() + formData.append('file', file) + await importFileToService(url, formData) + ElMessage('瀵煎叆鎴愬姛') + } + /** + * 瀵煎嚭鏂囦欢 + * @param url + */ + const exportFile = async (url: string, params: any, name: string) => { + const res = await exportFileToClient(url, params) + downloadFile(res, `${name}_${dayjs().format('YYYYMMDDHHMMss')}.xlsx`) + ElMessage.success('瀵煎嚭鎴愬姛') + } + + return { + importFile, + exportFile, + } +} diff --git a/HIAWms/web/src/widgets/WmsMaterialStock/Controllers/WmsMaterialStock.ts b/HIAWms/web/src/widgets/WmsMaterialStock/Controllers/WmsMaterialStock.ts new file mode 100644 index 0000000..670166c --- /dev/null +++ b/HIAWms/web/src/widgets/WmsMaterialStock/Controllers/WmsMaterialStock.ts @@ -0,0 +1,264 @@ +import { ref, onMounted, reactive, Ref, nextTick, computed } from 'vue' +import { injectModel } from '@/libs/Provider/Provider' +import { WmsMaterialStock } from '../Models/WmsMaterialStock' +import { ElMessage } from 'element-plus' +import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' +import { useFile } from './File' + +interface CurrentType { + row: any + index: number +} +export const useWmsMaterialStock = (props: any, ctx?: any) => { + const wmsMaterialStock = injectModel<WmsMaterialStock>('wmsMaterialStock') + const { exportFile } = useFile() + /** + * 澶撮儴閰嶇疆 + */ + const headers = ref({}) + /** + * 鍔ㄦ�佸垪閰嶇疆 + */ + const wmsMaterialStockColumns = ref<Record<string, any>>([]) + /** + * 鎼滅储鍊� + */ + const search = ref('') + + /** + * 鎺掑簭 + */ + const sort = ref(0) + /** + * 閫夋嫨椤� + */ + const selection = ref([]) + /** + * 褰撳墠閫変腑鐨勮 + */ + const current = ref<any>(null) + /** + * 鏁版嵁婧� + */ + const dataSource: Ref<any[]> = ref([]) + + /** + * 琛ㄦ牸 + */ + const tableRef = ref() + const dialogConfig = reactive({ + visible: false, + title: '', + isAdd: false, + }) + + const dialogSettingConfig = reactive({ + visible: false, + title: '', + }) + + /** + * 鍒嗛〉鏁版嵁 + */ + const paginationParams = ref({}) + + /** + * 鎵撳紑璇︽儏 + * @param row + */ + const openDetail = (row: any) => { + current.value = row + dialogConfig.visible = true + dialogConfig.title = row.name + dialogConfig.isAdd = false + sort.value = row.sort + } + + const contextMenu = [ + { + label: '灞曞紑璇︽儏', + fn: (c: CurrentType) => { + current.value = null + sort.value = c.row.sort + nextTick(() => openDetail(c.row)) + }, + divided: true, + icon: 'o', + }, + // { + // label: '鍚戜笂娣诲姞', + // fn: (c: CurrentType, pageNum: number) => { + // current.value = null + // sort.value = c.index + 1 + (pageNum - 1) * 50 + // dialogConfig.visible = true + // dialogConfig.title = '娣诲姞' + // dialogConfig.isAdd = false + // }, + // divided: true, + // icon: 'up', + // }, + // { + // label: '鍚戜笅娣诲姞', + // fn: (c: CurrentType, pageNum: number) => { + // current.value = null + // sort.value = c.index + 2 + (pageNum - 1) * 50 + // dialogConfig.visible = true + // dialogConfig.title = '娣诲姞' + // dialogConfig.isAdd = false + // }, + // divided: true, + // icon: 'down', + // }, + // { + // label: '鍒涘缓鍓湰', + // fn: async ({ row }: CurrentType) => { + // await wmsMaterialStock.cloneData([row.id]) + // ElMessage.success('鍒涘缓鍓湰鎴愬姛') + // tableRef.value?.getList() + // }, + // divided: true, + // icon: 'copy', + // }, + { + label: '鍒犻櫎', + fn: async (c: CurrentType) => { + const names = selection.value.map((item: { name: string }) => item.name) + ConfirmBox( + `鏄惁鍒犻櫎${names.length ? names.join(',') : c.row.name}` + ).then(async () => { + const ids = selection.value.map((item: { id: string }) => item.id) + await wmsMaterialStock.deleteWmsMaterialStocks( + ids.length ? ids : [c.row.id] + ) + ElMessage.success('鍒犻櫎鎴愬姛') + tableRef.value.getList() + }) + }, + icon: 'close', + }, + ] + + const onCheck = (records: any) => { + selection.value = records + } + + const onAddWmsMaterialStock = () => { + const params = tableRef.value?.getPaginationParams() + current.value = null + dialogConfig.visible = true + dialogConfig.isAdd = true + dialogConfig.title = '娣诲姞' + sort.value = params.totalCount + 1 + } + + const onConfirmWmsMaterialStock = async () => { + dialogConfig.visible = false + if (dialogConfig.isAdd) { + tableRef.value?.scrollToRow({ + skip: true, + }) + } else { + await tableRef.value?.getList() + } + } + /** + * 琛岀偣鍑绘椂鏇存柊current + */ + const onRowClick = ({ row }: any) => { + if (dialogConfig.visible && current.value) { + current.value = row + } + } + /** + * 瀵煎嚭 + */ + const onExport = () => { + const params = tableRef.value?.getParams() + exportFile( + '/api/v1/HIAWms/wmsMaterialStock/export', + params, + 'wmsMaterialStock' + ) + } + + /** + * 鍏抽敭瀛楁悳绱� + */ + const onSearch = () => { + tableRef.value?.getList({ + Filter: search.value, + }) + } + + /** + * 閲嶇疆琛ㄦ牸鏁版嵁 + */ + const reloadList = () => { + tableRef.value?.getList() + } + /** + * 涓婁紶鎴愬姛 + */ + const onSuccess = () => { + tableRef.value?.getList() + ElMessage.success('瀵煎叆鎴愬姛') + } + /** + * 澶辫触 + * @param err + */ + const onError = (err: any) => { + try { + const message = JSON.parse(err.message) + ElMessage.error(message.msg) + } catch (error) { + ElMessage.error('瀵煎叆澶辫触') + } + } + /** + * 涓婁紶閽╁瓙 + */ + const onBeforeUpload = (file: File) => { + const format = ['xlsx', 'xls', 'csv'] + if (!format.includes(file.name.split('.')[1])) { + ElMessage.error('瀵煎叆鏂囦欢鏍煎紡涓嶆纭紝璇峰鍏�.xlsx/.xls涓�.csv鏍煎紡鐨勬枃浠�') + return false + } + return true + } + + onMounted(() => { + headers.value = { + Authorization: `Bearer ${sessionStorage.getItem('Token')}`, + 'X-Project': sessionStorage.getItem('X-Project'), + } + }) + + ctx.expose({ + reloadList, + }) + + return { + dataSource, + contextMenu, + dialogConfig, + dialogSettingConfig, + tableRef, + current, + search, + sort, + wmsMaterialStockColumns, + paginationParams, + headers, + onBeforeUpload, + onError, + onSuccess, + openDetail, + onSearch, + onExport, + onRowClick, + onConfirmWmsMaterialStock, + onCheck, + onAddWmsMaterialStock, + } +} diff --git a/HIAWms/web/src/widgets/WmsMaterialStock/Controllers/WmsMaterialStockDrawer.tsx b/HIAWms/web/src/widgets/WmsMaterialStock/Controllers/WmsMaterialStockDrawer.tsx new file mode 100644 index 0000000..b3f6014 --- /dev/null +++ b/HIAWms/web/src/widgets/WmsMaterialStock/Controllers/WmsMaterialStockDrawer.tsx @@ -0,0 +1,343 @@ +import { + ref, + onMounted, + reactive, + computed, + Ref, + watch, + SetupContext, + h, +} from 'vue' +import { injectModel } from '@/libs/Provider/Provider' +import { WmsMaterialStockDrawer } from '../Models/WmsMaterialStockDrawer' +import { ElMessage } from 'element-plus' +import isEqual from 'lodash/isEqual' +import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' +import { cloneDeep } from 'lodash' +import { + getAreaAreaDataList, + getWmsEnumData, +} from '@/widgets/HIAWms/Models/Service/WmsMaterialDrawer' + +export const useWmsMaterialStockDrawer = (props: any, ctx?: any) => { + const wmsMaterialStockDrawer = injectModel<WmsMaterialStockDrawer>( + 'wmsMaterialStockDrawer' + ) + /** + * 鐢ㄦ潵瀵规瘮鐨勫垵濮嬪寲鏁版嵁 + */ + const initiateData: Ref<Record<string, any>> = ref({}) + const formData = ref<Record<string, any>>({}) + // ref + const formRef = ref() + + const inputNumber = (attrs) => { + return ( + <el-input-number + min="1" + step="1" + precision="0" + {...attrs} + ></el-input-number> + ) + } + const datePicker = (attrs) => { + return ( + <el-date-picker + type="datetime" + format="YYYY-MM-DD HH:mm:ss" + {...attrs} + ></el-date-picker> + ) + } + + const current = computed(() => { + return props.row || null + }) + const visible = computed({ + get() { + return props.modelValue + }, + set(val) { + ctx.emit('update:modelValue', val) + }, + }) + /** + * 娣诲姞鐨刦orm瀛楁 + */ + const formItems = reactive([ + // 鍩虹淇℃伅 + { + label: '鐗╂枡缂栧彿', + prop: 'materialNo', + el: 'input', + placeholder: '璇疯緭鍏ョ墿鏂欑紪鍙�', + rules: [ + { required: true, message: '鐗╂枡缂栧彿涓嶈兘涓虹┖', trigger: 'blur' }, + { max: 50, message: '闀垮害涓嶈兘瓒呰繃50涓瓧绗�', trigger: 'blur' }, + ], + }, + { + label: '鐗╂枡鍚嶇О', + prop: 'materialName', + el: 'input', + placeholder: '璇疯緭鍏ョ墿鏂欏悕绉�', + rules: [ + { required: true, message: '鐗╂枡鍚嶇О涓嶈兘涓虹┖', trigger: 'blur' }, + { max: 100, message: '闀垮害涓嶈兘瓒呰繃100涓瓧绗�', trigger: 'blur' }, + ], + }, + // 瀹瑰櫒淇℃伅 + { + label: '瀹瑰櫒缂栧彿', + prop: 'containerNo', + el: 'input', + placeholder: '璇疯緭鍏ュ鍣ㄧ紪鍙�', + rules: [ + { required: true, message: '鐗╂枡缂栧彿涓嶈兘涓虹┖', trigger: 'blur' }, + { max: 50, message: '闀垮害涓嶈兘瓒呰繃50涓瓧绗�', trigger: 'blur' }, + ], + }, + // 搴撳瓨淇℃伅 + { + label: '搴撳瓨鏁伴噺', + prop: 'stockNumber', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + placeholder: '璇疯緭鍏ュ簱瀛樻暟閲�', + rules: [{ required: true, message: '璇疯緭鍏ュ簱瀛樻暟閲�', trigger: 'blur' }], + }, + { + label: '鐗╂枡鎵规', + prop: 'materialBatch', + el: 'input', + placeholder: '璇疯緭鍏ョ墿鏂欐壒娆″彿', + rules: [ + { required: true, message: '鐗╂枡鎵规涓嶈兘涓虹┖', trigger: 'blur' }, + { max: 50, message: '闀垮害涓嶈兘瓒呰繃50涓瓧绗�', trigger: 'blur' }, + ], + }, + + { + label: '搴撲綅缂栧彿', + prop: 'placeNo', + el: 'input', + placeholder: '璇疯緭鍏ュ簱浣嶇紪鍙�', + rules: [ + { required: true, message: '搴撲綅缂栧彿涓嶈兘涓虹┖', trigger: 'blur' }, + { max: 50, message: '闀垮害涓嶈兘瓒呰繃50涓瓧绗�', trigger: 'blur' }, + ], + }, + // 鐘舵�佷俊鎭� + { + label: '妫�楠岀姸鎬�', + prop: 'checkStatus', + el: 'select', + options: [], + placeholder: '璇烽�夋嫨妫�楠岀姸鎬�', + }, + { + label: '鏄惁閿佸畾', + prop: 'isLock', + el: 'select', + options: [], + placeholder: '璇烽�夋嫨閿佸畾鐘舵��', + }, + { + label: '鏄惁绌烘墭', + prop: 'emptyContainer', + el: 'select', + options: [], + placeholder: '璇烽�夋嫨绌烘墭鐘舵��', + }, + // 鏃堕棿淇℃伅 + + { + label: '鍏ュ簱鏃堕棿', + prop: 'inStockTime', + el: (props: any, { attrs }: SetupContext) => { + return h(datePicker, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + placeholder: '璇疯緭鍏ユ搷浣滄椂闂�', + }, + { + label: '澶囨敞', + prop: 'remark', + el: 'input', + type: 'textarea', + placeholder: '璇疯緭鍏ュ娉ㄤ俊鎭�', + rules: [{ max: 500, message: '闀垮害涓嶈兘瓒呰繃500涓瓧绗�', trigger: 'blur' }], + }, + ]) + /** + * 鏍¢獙鏄惁鏈夋暟鎹彉鍖� + */ + const checkIsEqualObject = () => { + const data = { + formData: formData.value, + } + const check = isEqual(initiateData.value, data) + return check + } + + const onClose = (done: () => void) => { + if (visible.value) { + if (checkIsEqualObject()) { + visible.value = false + done && done() + } else { + ConfirmBox('鏄惁淇濆瓨璁剧疆锛�') + .then(() => { + onConfirm() + }) + .catch(() => { + visible.value = false + done && done() + }) + } + } + } + /** + * 淇濆瓨 + */ + const onConfirm = async () => { + await formRef.value?.validate() + const data = { + materialNo: formData.value.materialNo, + materialName: formData.value.materialName, + containerNo: formData.value.containerNo, + stockNumber: formData.value.stockNumber, + materialBatch: formData.value.materialBatch, + placeNo: formData.value.placeNo, + checkStatus: formData.value.checkStatus, + isLock: formData.value.isLock, + emptyContainer: formData.value.emptyContainer, + inStockTime: formData.value.inStockTime, + remark: formData.value.remark, + sort: props.sort, + } + if (!current.value) { + await wmsMaterialStockDrawer.addWmsMaterialStock(data) + } else { + const id = current.value.id + await wmsMaterialStockDrawer.updateWmsMaterialStock(id, data) + } + ElMessage.success('淇濆瓨鎴愬姛') + ctx.emit('confirm') + } + + const updateCheckData = () => { + initiateData.value = { + formData: { + ...formData.value, + }, + } + } + const updateFormItemOptions = (propName: string, enumData: any[]) => { + const item = formItems.find((item) => item.prop === propName) + if (item && enumData) { + item.options = enumData.map((item) => ({ + label: item.description, + value: item.value, + })) + } + } + const updateFormAreaOptions = (propName: string, enumData: any[]) => { + const item = formItems.find((item) => item.prop === propName) + if (item && enumData) { + item.options = enumData.map((item) => ({ + label: item.areaName, + value: item.areaNo, + })) + } + } + /** + * 寮圭獥鎵撳紑鑾峰彇璇︽儏 + */ + const onOpen = async () => { + const containerTypeEnum = await getWmsEnumData({ + EnumName: 'ContainerTypeEnum', + }) + updateFormItemOptions('containerType', containerTypeEnum) + + const containerStatusEnum = await getWmsEnumData({ + EnumName: 'ContainerStatusEnum', + }) + updateFormItemOptions('containerStatus', containerStatusEnum) + const placeStatusData = await getWmsEnumData({ + EnumName: 'PlaceStatusEnum', + }) + + updateFormItemOptions('placeStatus', placeStatusData) + const storageTypeNoData = await getWmsEnumData({ + EnumName: 'PlaceTypeEnum', + }) + updateFormItemOptions('storageTypeNo', storageTypeNoData) + + const checkStatusList = await getWmsEnumData({ + EnumName: 'MaterialCheckStatusEnum', + }) + updateFormItemOptions('checkStatus', checkStatusList) + + const yesNoData = await getWmsEnumData({ + EnumName: 'YesNoEnum', + }) + updateFormItemOptions('isLock', yesNoData) + updateFormItemOptions('emptyContainer', yesNoData) + + const areaList = await getAreaAreaDataList() + updateFormAreaOptions('areaCode', areaList) + + if (current.value) { + const res = await wmsMaterialStockDrawer.getWmsMaterialStockDetail( + current.value + ) + + formData.value = { + materialNo: res.materialNo, + materialName: res.materialName, + containerNo: res.containerNo, + stockNumber: res.stockNumber, + materialBatch: res.materialBatch, + placeNo: res.placeNo, + checkStatus: res.checkStatus, + isLock: res.isLock, + emptyContainer: res.emptyContainer, + inStockTime: res.inStockTime, + remark: res.remark, + id: res.id, + } + updateCheckData() + } else { + formData.value = { + isLock: 2, + emptyContainer: 2, + inStockTime: new Date(), + } + updateCheckData() + } + } + + watch(() => current.value, onOpen) + + return { + formItems, + formData, + visible, + formRef, + onOpen, + onClose, + onConfirm, + } +} diff --git a/HIAWms/web/src/widgets/WmsMaterialStock/Models/Service/WmsMaterialStock.ts b/HIAWms/web/src/widgets/WmsMaterialStock/Models/Service/WmsMaterialStock.ts new file mode 100644 index 0000000..213b2d5 --- /dev/null +++ b/HIAWms/web/src/widgets/WmsMaterialStock/Models/Service/WmsMaterialStock.ts @@ -0,0 +1,30 @@ +import { Base } from '@/libs/Base/Base' +const request = Base.request + +/** + * 娣诲姞 + * @returns + */ +export const addWmsMaterialStock = (data: any) => { + return request.post('/api/v1/HIAWms/wmsMaterialStock', data) +} + +/** + * 鎵归噺鍒犻櫎 + * @returns + */ +export const deleteWmsMaterialStocks = (ids: string[]) => { + return request({ + data: ids, + url: '/api/v1/HIAWms/wmsMaterialStock', + method: 'delete', + }) +} + +/** + * 鍏嬮殕 + * @returns + */ +export const cloneData = (data: any) => { + return request.post('/api/v1/HIAWms/wmsMaterialStock/clone', data) +} diff --git a/HIAWms/web/src/widgets/WmsMaterialStock/Models/Service/WmsMaterialStockDrawer.ts b/HIAWms/web/src/widgets/WmsMaterialStock/Models/Service/WmsMaterialStockDrawer.ts new file mode 100644 index 0000000..2b80508 --- /dev/null +++ b/HIAWms/web/src/widgets/WmsMaterialStock/Models/Service/WmsMaterialStockDrawer.ts @@ -0,0 +1,29 @@ +import { Base } from '@/libs/Base/Base' +const request = Base.request + +/** + * 娣诲姞 + * @returns + */ +export const addWmsMaterialStock = (data: any) => { + return request.post('/api/v1/HIAWms/wmsMaterialStock', data) +} + +/** + * 鑾峰彇璇︽儏 + * @returns + */ +export const getWmsMaterialStock = (id: string) => { + return request.get(`/api/v1/HIAWms/wmsMaterialStock/${id}`) +} + +/** + * 鏇存柊 + * @returns + */ +export const updateWmsMaterialStock = ( + id: string, + data: Record<string, any> +) => { + return request.put(`/api/v1/HIAWms/wmsMaterialStock/${id}`, data) +} diff --git a/HIAWms/web/src/widgets/WmsMaterialStock/Models/WmsMaterialStock.ts b/HIAWms/web/src/widgets/WmsMaterialStock/Models/WmsMaterialStock.ts new file mode 100644 index 0000000..75c6081 --- /dev/null +++ b/HIAWms/web/src/widgets/WmsMaterialStock/Models/WmsMaterialStock.ts @@ -0,0 +1,41 @@ +import { Base } from '@/libs/Base/Base' +import { + deleteWmsMaterialStocks, + addWmsMaterialStock, + cloneData, +} from './Service/WmsMaterialStock' + +export class WmsMaterialStock extends Base<{ [key: string]: any }> { + constructor() { + super({ + data: [], + }) + } + onMounted() {} + /** + * 鍒犻櫎 + * @param id + * @returns + */ + async deleteWmsMaterialStocks(ids: string[]) { + return deleteWmsMaterialStocks(ids) + } + + /** + * 娣诲姞鏁版嵁 + * @param data + * @returns + */ + addWmsMaterialStock(data: Record<string, any>) { + return addWmsMaterialStock(data) + } + + /** + * 鍏嬮殕 + * @param ids + * @returns + */ + cloneData(ids: string[]) { + return cloneData(ids) + } +} diff --git a/HIAWms/web/src/widgets/WmsMaterialStock/Models/WmsMaterialStockDrawer.ts b/HIAWms/web/src/widgets/WmsMaterialStock/Models/WmsMaterialStockDrawer.ts new file mode 100644 index 0000000..7954e7c --- /dev/null +++ b/HIAWms/web/src/widgets/WmsMaterialStock/Models/WmsMaterialStockDrawer.ts @@ -0,0 +1,38 @@ +import { Base } from '@/libs/Base/Base' +import { + addWmsMaterialStock, + getWmsMaterialStock, + updateWmsMaterialStock, +} from './Service/WmsMaterialStockDrawer' +import { useGlobalState } from '@/libs/Store/Store' + +export class WmsMaterialStockDrawer extends Base<{ [key: string]: any }> { + constructor() { + super({ + data: [], + wmsMaterialStock: {}, + }) + } + + /** + * 娣诲姞 + * @param data + */ + async addWmsMaterialStock(data: Record<string, any>) { + return addWmsMaterialStock(data) + } + /** + * 鏇存柊 + * @param data + */ + async updateWmsMaterialStock(id: string, data: Record<string, any>) { + return updateWmsMaterialStock(id, data) + } + + /** + * 鑾峰彇璇︽儏 + */ + async getWmsMaterialStockDetail(current: any, id?: string) { + return getWmsMaterialStock(id || current?.id) + } +} diff --git a/HIAWms/web/src/widgets/WmsMaterialStock/Views/Pages/Dialog/WmsMaterialStockDrawer/WmsMaterialStockDrawer.module.scss b/HIAWms/web/src/widgets/WmsMaterialStock/Views/Pages/Dialog/WmsMaterialStockDrawer/WmsMaterialStockDrawer.module.scss new file mode 100644 index 0000000..98607dd --- /dev/null +++ b/HIAWms/web/src/widgets/WmsMaterialStock/Views/Pages/Dialog/WmsMaterialStockDrawer/WmsMaterialStockDrawer.module.scss @@ -0,0 +1,3 @@ +.drawer { + width: 800px; +} diff --git a/HIAWms/web/src/widgets/WmsMaterialStock/Views/Pages/Dialog/WmsMaterialStockDrawer/WmsMaterialStockDrawer.tsx b/HIAWms/web/src/widgets/WmsMaterialStock/Views/Pages/Dialog/WmsMaterialStockDrawer/WmsMaterialStockDrawer.tsx new file mode 100644 index 0000000..59a5263 --- /dev/null +++ b/HIAWms/web/src/widgets/WmsMaterialStock/Views/Pages/Dialog/WmsMaterialStockDrawer/WmsMaterialStockDrawer.tsx @@ -0,0 +1,61 @@ +import { SetupContext, defineComponent } from 'vue' +import BaseDrawer from '@/components/BaseDrawer/BaseDrawer' +import styles from './WmsMaterialStockDrawer.module.scss' +import { useWmsMaterialStockDrawer } from '../../../../Controllers/WmsMaterialStockDrawer.tsx' +import DyForm from '@/components/DyForm/DyForm' + +// @ts-ignore +export default defineComponent<{ + [key: string]: any +}>({ + name: '寮圭獥', + props: { + modelValue: { + type: Boolean, + default: false, + }, + title: { + type: String, + default: '', + }, + row: { + type: Object, + }, + sort: { + type: Number, + default: 0, + }, + }, + emits: ['update:modelValue', 'close', 'submit', 'confirm'], + setup(props: Record<string, any>, ctx: SetupContext) { + const { + onClose, + onConfirm, + onOpen, + formRef, + visible, + formItems, + formData, + } = useWmsMaterialStockDrawer(props, ctx) + return () => ( + <BaseDrawer + class={styles.drawer} + size="800px" + title={props.title || '娣诲姞'} + v-model={visible.value} + close-on-click-modal={true} + onConfirm={onConfirm} + onOpen={onOpen} + before-close={onClose} + onClose={onClose} + > + <DyForm + ref={formRef} + formData={formData.value} + labelWidth="106px" + formItemProps={formItems} + ></DyForm> + </BaseDrawer> + ) + }, +}) diff --git a/HIAWms/web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/Config.ts b/HIAWms/web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/Config.ts new file mode 100644 index 0000000..03b2ab3 --- /dev/null +++ b/HIAWms/web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/Config.ts @@ -0,0 +1,55 @@ +export const columns = [ + { + type: 'seq', + width: 60, + title: '搴忓彿', + }, + { + field: 'materialNo', + title: '鐗╂枡缂栧彿', + }, + { + field: 'materialName', + title: '鐗╂枡鍚嶇О', + }, + { + field: 'placeNo', + title: '搴撲綅缂栧彿', + }, + { + field: 'placeStatusDesc', + title: '搴撲綅鐘舵��', + }, + { + field: 'containerNo', + title: '瀹瑰櫒缂栧彿', + }, + { + field: 'stockNumber', + title: '搴撳瓨鏁伴噺', + }, + { + field: 'materialBatch', + title: '鐗╂枡鎵规', + }, + { + field: 'areaName', + title: '鎵�灞炲簱鍖�', + }, + { + field: 'checkStatusDesc', + title: '妫�楠岀姸鎬�', + }, + { + field: 'inStockTime', + title: '鍏ュ簱鏃堕棿', + }, + { + field: 'isLockDesc', + title: '閿佸畾鐘舵��', + }, + { + field: 'remark', + title: '澶囨敞', + }, +] diff --git a/HIAWms/web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/WmsMaterialStock.module.scss b/HIAWms/web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/WmsMaterialStock.module.scss new file mode 100644 index 0000000..365acbf --- /dev/null +++ b/HIAWms/web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/WmsMaterialStock.module.scss @@ -0,0 +1,113 @@ +.wmsMaterialStockContent { + width: 100%; + height: 80%; + + .wmsMaterialStockList { + width: 100%; + height: calc(100% - 70px); + } + .headerContent { + display: flex; + justify-content: space-between; + align-items: center; + height: 43px; + } + .header { + margin-bottom: 12px; + display: flex; + justify-content: flex-start; + align-items: center; + } +} + +.tagBox { + width: auto; + min-width: 80px; + height: 24px; + background: #ffffff; + border-radius: 19px 19px 19px 19px; + opacity: 1; + border: 1px dashed #bcc4cc; + width: 50px; + height: 20px; + font-size: 14px; + font-family: PingFang SC, PingFang SC; + font-weight: 400; + color: #5a84ff; + display: flex; + justify-content: center; + align-items: center; + // cursor: pointer; +} + +.group { + display: flex; + justify-content: space-between; + align-items: center; +} + +.groupTable { + width: 100%; +} + +.overBox { + width: 100%; + height: calc(100% - 20px); + overflow: auto; + :global(.cs-collapse-item__header) { + background-color: #f1f1f1; + padding: 0 20px; + height: 35px; + font-size: 16px; + font-family: PingFang SC, PingFang SC; + font-weight: 500; + } + :global(.cs-collapse-item__content) { + padding-bottom: 0px; + } +} +.groupHeader { + width: 100%; + height: 30px; + background: #ccc; +} + +.hideBlock { + display: none; +} +.queryForm { + padding: 10px; + background: #f5f7fa; + margin-bottom: 0px; + border-radius: 4px; + + .el-form-item { + margin-right: 20px; + margin-bottom: 0; + + // 缁熶竴杈撳叆妗嗗拰閫夋嫨妗嗙殑瀹藉害 + .el-input, .el-select { + width: 200px; // 璁剧疆缁熶竴鐨勫搴� + } + + // 閫夋嫨妗嗗唴閮ㄨ緭鍏ユ鏍峰紡 + .el-select .el-input__wrapper { + height: 32px; // 涓庤緭鍏ユ楂樺害涓�鑷� + padding: 1px 11px; // 涓庤緭鍏ユ鍐呰竟璺濅竴鑷� + } + + // 鏃ユ湡閫夋嫨鍣ㄥ搴� + .el-date-editor { + width: 220px; + } + } +} + +// 濡傛灉闇�瑕佹洿绮剧‘鐨勬帶鍒讹紝鍙互鍗曠嫭璁剧疆 +.formItem { + width: 200px; + + &.el-input, &.el-select { + width: 100%; + } +} \ No newline at end of file diff --git a/HIAWms/web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/WmsMaterialStock.tsx b/HIAWms/web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/WmsMaterialStock.tsx new file mode 100644 index 0000000..f208e22 --- /dev/null +++ b/HIAWms/web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/WmsMaterialStock.tsx @@ -0,0 +1,468 @@ +import { computed, defineComponent, onMounted, reactive, ref } from 'vue' +import type { Ref } from 'vue' +import BaseTable from '@/components/Table/Table' +import styles from './WmsMaterialStock.module.scss' +import { useWmsMaterialStock } from '../../../Controllers/WmsMaterialStock' +import IconButton from '@/components/IconButton/IconButton' +import WmsMaterialStockDrawer from '../Dialog/WmsMaterialStockDrawer/WmsMaterialStockDrawer' +import Search from '@/components/Search/Search' +import { columns } from './Config' +import TdButton from '@/components/TdButton/TdButton' +import { vPermission } from '@/libs/Permission/Permission' +import dayjs from 'dayjs' +import { + ElDatePicker, + ElForm, + ElFormItem, + ElInput, + ElOption, + ElSelect, +} from 'element-plus' +import { getWmsEnumData } from '@/widgets/HIAWms/Models/Service/WmsMaterialDrawer' + +interface RenderTableType { + url?: string + dataSource: Ref<any[]> + isDrag?: boolean + isChecked?: boolean + isHidePagination?: boolean + params?: Record<string, any> + autoHeight?: boolean +} + +export default defineComponent({ + name: 'WmsMaterialStock', + directives: { + permission: vPermission, + }, + setup(props, ctx) { + const { + dataSource, + contextMenu, + dialogConfig, + tableRef, + current, + search, + sort, + headers, + onError, + onSearch, + onRowClick, + onConfirmWmsMaterialStock, + onCheck, + onAddWmsMaterialStock, + onExport, + openDetail, + onSuccess, + onBeforeUpload, + } = useWmsMaterialStock(props, ctx) + + // 鏂板鐨勬煡璇㈡潯浠� + const queryForm = ref({ + containerNo: '', + materialNo: '', + materialName: '', + containerType: '', + containerStatus: '', + storageTypeNo: '', + placeStatus: '', + placeNo: '', + isLock: '', + emptyContainer: '', + dateRange: [], + filter: '', + }) + + const queryParams = computed(() => ({ + ...queryForm.value, + containerType: queryForm.value.containerType || '', // 澶勭悊涓嬫媺 + containerStatus: queryForm.value.containerStatus || '', + storageTypeNo: queryForm.value.storageTypeNo || '', // 澶勭悊涓嬫媺 + placeStatus: queryForm.value.placeStatus || '', + islock: queryForm.value.isLock || '', + emptyContainer: queryForm.value.emptyContainer || '', + startTime: queryForm.value.dateRange[0] || '', + endTime: queryForm.value.dateRange[1] || '', + })) + + // 鍔ㄦ�佹灇涓鹃�夐」 + const enumOptions = reactive({ + containerType: [] as Array<{ label: string; value: any }>, + containerStatus: [] as Array<{ label: string; value: any }>, + storageTypeNo: [] as Array<{ label: string; value: any }>, + placeStatus: [] as Array<{ label: string; value: any }>, + yesOrNo: [] as Array<{ label: string; value: any }>, + }) + + // 鑾峰彇鏋氫妇鏁版嵁 + const fetchEnumData = async () => { + try { + // 鑾峰彇鐗╂枡绫诲瀷鏋氫妇 + const containerTypeData = await getWmsEnumData({ + EnumName: 'ContainerTypeEnum', + }) + enumOptions.containerType = containerTypeData.map((item) => ({ + label: item.description, + value: item.value, + })) + // 鑾峰彇鐗╂枡绫诲瀷鏋氫妇 + const storageTypeNoData = await getWmsEnumData({ + EnumName: 'PlaceTypeEnum', + }) + enumOptions.storageTypeNo = storageTypeNoData.map((item) => ({ + label: item.description, + value: item.value, + })) + + // 鑾峰彇閲囪喘绫诲瀷鏋氫妇 + const placeStatusData = await getWmsEnumData({ + EnumName: 'PlaceStatusEnum', + }) + enumOptions.placeStatus = placeStatusData.map((item) => ({ + label: item.description, + value: item.value, + })) + + // 鑾峰彇閲囪喘绫诲瀷鏋氫妇 + const containerStatusData = await getWmsEnumData({ + EnumName: 'ContainerStatusEnum', + }) + enumOptions.containerStatus = containerStatusData.map((item) => ({ + label: item.description, + value: item.value, + })) + } catch (error) { + console.error('鑾峰彇鏋氫妇鏁版嵁澶辫触:', error) + } + } + + // 缁勪欢鎸傝浇鏃惰幏鍙栨灇涓炬暟鎹� + onMounted(() => { + fetchEnumData() + }) + + // 鏂板鐨勬煡璇㈡柟娉� + const handleQuery = async () => { + console.log('鏌ヨ鏉′欢:', queryParams.value) + // tableRef.value.getTableList() + tableRef.value.getList(queryParams.value) + } + + // 閲嶇疆鏌ヨ鏉′欢 + const resetQuery = () => { + queryForm.value = { + containerNo: '', + materialNo: '', + materialName: '', + containerType: '', + containerStatus: '', + storageTypeNo: '', + placeStatus: '', + placeNo: '', + isLock: '', + emptyContainer: '', + dateRange: [], + filter: '', + } + } + /** + * @returns 琛ㄦ牸 + */ + const RenderBaseTable = (props: RenderTableType) => { + const { + url, + dataSource, + isDrag, + isChecked, + isHidePagination, + params, + autoHeight, + } = props + + return ( + <div + class={{ + [styles.wmsMaterialStockList]: true, + }} + > + <BaseTable + ref={tableRef} + url={url} + sortUrlTpl="/api/v1/HIAWms/wmsMaterialStock/{id}/adjustsort/{sort}" + v-model:dataSource={dataSource.value} + columns={columns} + contextMenu={contextMenu} + params={params} + isDrag={isDrag} + isChecked={isChecked} + autoHeight={autoHeight} + onCheck={onCheck} + onRowClick={onRowClick} + isHidePagination={isHidePagination} + pageSize={20} + v-slots={{ + inStockTime: ({ row }: any) => { + return ( + <div> + {row.inStockTime != null + ? dayjs(row.inStockTime).format('YYYY-MM-DD HH:mm:ss') + : '-'} + </div> + ) + }, + name: ({ row }: any) => { + return row?.name ? ( + <TdButton + onClick={() => openDetail(row)} + text={<span style="color:#5a84ff">璇︽儏</span>} + icon="scale" + tip={row?.name} + hover + > + {row?.name} + </TdButton> + ) : ( + '-' + ) + }, + }} + ></BaseTable> + </div> + ) + } + return () => { + return ( + <div class={styles.wmsMaterialStockContent}> + {/* 娣诲姞/缂栬緫 */} + <WmsMaterialStockDrawer + v-model={dialogConfig.visible} + title={dialogConfig.title} + row={current.value} + sort={sort.value} + onConfirm={onConfirmWmsMaterialStock} + /> + {/* 鏂板鐨勬煡璇㈣〃鍗� */} + <ElForm + inline + model={queryForm.value} + class={styles.queryForm} + label-width="80px" + > + <ElFormItem label="鍏抽敭瀛�"> + <ElInput + v-model={queryForm.value.filter} + placeholder="璇疯緭鍏ュ叧閿瓧鎼滅储" + clearable + class={styles.formItem} + /> + </ElFormItem> + <ElFormItem label="鐗╂枡缂栫爜"> + <ElInput + v-model={queryForm.value.materialNo} + placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" + clearable + class={styles.formItem} + /> + </ElFormItem> + <ElFormItem label="鐗╂枡鍚嶇О"> + <ElInput + v-model={queryForm.value.materialName} + placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" + clearable + class={styles.formItem} + /> + </ElFormItem> + <ElFormItem label="鎵樼洏缂栫爜"> + <ElInput + v-model={queryForm.value.containerNo} + placeholder="璇疯緭鍏ユ墭鐩樼紪鐮�" + clearable + class={styles.formItem} + /> + </ElFormItem> + <ElFormItem label="鎵樼洏绫诲瀷"> + <ElSelect + v-model={queryForm.value.containerType} + placeholder="璇烽�夋嫨鎵樼洏绫诲瀷" + clearable + loading={enumOptions.containerType.length === 0} + class={styles.formItem} + > + {enumOptions.containerType.map((option) => ( + <ElOption + key={option.value} + label={option.label} + value={option.value} + /> + ))} + </ElSelect> + </ElFormItem> + <ElFormItem label="鎵樼洏鐘舵��"> + <ElSelect + v-model={queryForm.value.containerStatus} + placeholder="璇烽�夋嫨鎵樼洏鐘舵��" + clearable + loading={enumOptions.containerStatus.length === 0} + class={styles.formItem} + > + {enumOptions.containerStatus.map((option) => ( + <ElOption + key={option.value} + label={option.label} + value={option.value} + /> + ))} + </ElSelect> + </ElFormItem> + <ElFormItem label="搴撲綅缂栧彿"> + <ElInput + v-model={queryForm.value.placeNo} + placeholder="璇疯緭鍏ュ簱浣嶇紪鍙�" + clearable + class={styles.formItem} + /> + </ElFormItem> + <ElFormItem label="搴撲綅绫诲瀷"> + <ElSelect + v-model={queryForm.value.storageTypeNo} + placeholder="璇烽�夋嫨鎵樼洏绫诲瀷" + clearable + loading={enumOptions.storageTypeNo.length === 0} + class={styles.formItem} + > + {enumOptions.storageTypeNo.map((option) => ( + <ElOption + key={option.value} + label={option.label} + value={option.value} + /> + ))} + </ElSelect> + </ElFormItem> + <ElFormItem label="搴撲綅鐘舵��"> + <ElSelect + v-model={queryForm.value.placeStatus} + placeholder="璇烽�夋嫨鎵樼洏鐘舵��" + clearable + loading={enumOptions.placeStatus.length === 0} + class={styles.formItem} + > + {enumOptions.placeStatus.map((option) => ( + <ElOption + key={option.value} + label={option.label} + value={option.value} + /> + ))} + </ElSelect> + </ElFormItem> + <ElFormItem label="鏄惁閿佸畾"> + <ElSelect + v-model={queryForm.value.isLock} + placeholder="璇烽�夋嫨鏄惁閿佸畾" + clearable + loading={enumOptions.yesOrNo.length === 0} + class={styles.formItem} + > + {enumOptions.yesOrNo.map((option) => ( + <ElOption + key={option.value} + label={option.label} + value={option.value} + /> + ))} + </ElSelect> + </ElFormItem> + <ElFormItem label="鏄惁绌烘墭"> + <ElSelect + v-model={queryForm.value.emptyContainer} + placeholder="璇烽�夋嫨鏄惁绌烘墭" + clearable + loading={enumOptions.yesOrNo.length === 0} + class={styles.formItem} + > + {enumOptions.yesOrNo.map((option) => ( + <ElOption + key={option.value} + label={option.label} + value={option.value} + /> + ))} + </ElSelect> + </ElFormItem> + <ElFormItem label="鏃ユ湡鑼冨洿"> + <ElDatePicker + v-model={queryForm.value.dateRange} + type="datetimerange" + range-separator="鑷�" + show-now="true" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + format="YYYY-MM-DD HH:mm:ss" + valueFormat="YYYY-MM-DD HH:mm:ss" + /> + </ElFormItem> + <ElFormItem> + <IconButton type="primary" icon="search" onClick={handleQuery}> + 鏌ヨ + </IconButton> + <IconButton + style="margin-left: 10px;" + icon="refresh" + onClick={resetQuery} + > + 閲嶇疆 + </IconButton> + </ElFormItem> + </ElForm> + <div class={styles.headerContent}> + <div class={styles.header}> + <IconButton + v-permission="wmsMaterialStock-add" + icon="add-p" + onClick={onAddWmsMaterialStock} + type="primary" + > + 娣诲姞 + </IconButton> + <el-divider direction="vertical" /> + <el-upload + v-permission="wmsMaterialStock-import" + name="file" + accept=".xlsx,.xls,.csv" + show-file-list={false} + onError={onError} + onSuccess={onSuccess} + before-upload={onBeforeUpload} + headers={headers.value} + action="/api/v1/HIAWms/wmsMaterialStock/import" + > + <IconButton icon="in">瀵煎叆</IconButton> + </el-upload> + + <IconButton + v-permission="wmsMaterialStock-output" + icon="out" + onClick={onExport} + > + 瀵煎嚭 + </IconButton> + </div> + {/* <Search + placeholder="璇疯緭鍏ュ叧閿瓧" + v-model={search.value} + onConfirm={onSearch} + style={{ marginTop: '-1px' }} + /> */} + </div> + <RenderBaseTable + url="/api/v1/HIAWms/wmsMaterialStock" + dataSource={dataSource} + isChecked={true} + isDrag={true} + /> + </div> + ) + } + }, +}) diff --git a/HIAWms/web/src/widgets/WmsMaterialStock/Views/WmsMaterialStock.module.scss b/HIAWms/web/src/widgets/WmsMaterialStock/Views/WmsMaterialStock.module.scss new file mode 100644 index 0000000..d8710c5 --- /dev/null +++ b/HIAWms/web/src/widgets/WmsMaterialStock/Views/WmsMaterialStock.module.scss @@ -0,0 +1,7 @@ +.WmsMaterialStock { + background-color: #fff; + border-radius: 5px 5px 0 0; + width: 100%; + height: 100%; + border: 1px solid #dbdbdb; +} diff --git a/HIAWms/web/src/widgets/WmsMaterialStock/Views/WmsMaterialStock.tsx b/HIAWms/web/src/widgets/WmsMaterialStock/Views/WmsMaterialStock.tsx new file mode 100644 index 0000000..9bb4efb --- /dev/null +++ b/HIAWms/web/src/widgets/WmsMaterialStock/Views/WmsMaterialStock.tsx @@ -0,0 +1,80 @@ +import { + Component, + DefineComponent, + defineComponent, + markRaw, + ref, + SetupContext, + onMounted, +} from 'vue' +import styles from './WmsMaterialStock.module.scss' +// import WmsMaterialStock from './Pages/WmsMaterialStock/WmsMaterialStock' +import Tab from '@/components/Tab/Tab' +import { useProvideModels } from '@/libs/Provider/app' +import { usePermission } from '@/libs/Permission/Permission' +import { permissionCodes } from '../enum' +import { ModuleType, TabItem } from '../type/Type' +import { getEntityNames } from '@/hooks/hook' +import TabPane from '@/components/Tab/TabPane' + +const Models: ModuleType = import.meta.glob('./config/*.json', { + eager: true, +}) + +const entityNames = getEntityNames(Models) +const nameToLabelMap = [{ name: 'WmsMaterialStock', label: '搴撳瓨' }] + +export default defineComponent({ + name: 'WmsMaterialStock', + + setup(props, ctx: SetupContext) { + useProvideModels() + usePermission(props, permissionCodes) + + const rf = ref<{ + [key: string]: any + }>({}) + + const tabData = ref<TabItem[]>([]) + + const onTabChange = (v: string) => { + rf.value?.[v]?.reloadList() + } + + const initTableData = async () => { + for (const i in entityNames) { + const name = entityNames[i] + const module = await import(`./Pages/${name}/${name}.tsx`) + const WmsPlaces = markRaw(module.default) + const foundLabel = + nameToLabelMap.find((item) => item.name === name)?.label || name + tabData.value.push({ + label: foundLabel, + name, + component: WmsPlaces, + }) + } + } + + initTableData() + + return () => { + return ( + <div class={styles.WmsMaterialStock}> + <Tab data={tabData.value} type="list" onTab={onTabChange}> + {tabData.value.map((widgetInfo) => { + const Widget: any = widgetInfo.component + return ( + <TabPane label={widgetInfo.label} name={widgetInfo.name}> + <Widget + ref={(r: any) => (rf.value['WmsMaterialStock'] = r)} + ></Widget> + </TabPane> + ) + })} + </Tab> + </div> + ) + } + }, +}) diff --git a/HIAWms/web/src/widgets/WmsMaterialStock/Views/config/WmsMaterialStock.json b/HIAWms/web/src/widgets/WmsMaterialStock/Views/config/WmsMaterialStock.json new file mode 100644 index 0000000..fdfdd72 --- /dev/null +++ b/HIAWms/web/src/widgets/WmsMaterialStock/Views/config/WmsMaterialStock.json @@ -0,0 +1,3 @@ +{ + "name": "WmsMaterialStock" +} diff --git a/HIAWms/web/src/widgets/WmsMaterialStock/enum.ts b/HIAWms/web/src/widgets/WmsMaterialStock/enum.ts new file mode 100644 index 0000000..947c2b0 --- /dev/null +++ b/HIAWms/web/src/widgets/WmsMaterialStock/enum.ts @@ -0,0 +1,15 @@ +export interface TabType { + label: string + name: string + columns?: any[] + data?: any[] + isFooter: boolean + [key: string]: any +} + +export const permissionCodes = { + 'wmsMaterialStock-list': '鍒楄〃-鍒楄〃', + 'wmsMaterialStock-add': '鍒楄〃-娣诲姞', + 'wmsMaterialStock-import': '鍒楄〃-瀵煎叆', + 'wmsMaterialStock-output': '鍒楄〃-杈撳嚭', +} diff --git a/HIAWms/web/src/widgets/WmsMaterialStock/index.ts b/HIAWms/web/src/widgets/WmsMaterialStock/index.ts new file mode 100644 index 0000000..bbe6aab --- /dev/null +++ b/HIAWms/web/src/widgets/WmsMaterialStock/index.ts @@ -0,0 +1,14 @@ +import WmsMaterialStock from './Views/WmsMaterialStock' +import Setting from '@/components/Setting/Setting' +import { provider } from '@/provider/index' +import p from '../../assets/svg/p.svg' + +export default { + is: 'WmsMaterialStock', + name: '搴撳瓨淇℃伅', + category: 'run', + icon: p, + authorizationRequired: false, + canvasView: provider(WmsMaterialStock), + settingsView: Setting, +} diff --git a/HIAWms/web/src/widgets/WmsMaterialStock/type/Type.d.ts b/HIAWms/web/src/widgets/WmsMaterialStock/type/Type.d.ts new file mode 100644 index 0000000..aff4bc5 --- /dev/null +++ b/HIAWms/web/src/widgets/WmsMaterialStock/type/Type.d.ts @@ -0,0 +1,45 @@ +import { Component } from 'vue' + +export interface DataItemType { + id?: string + name?: string + code?: string + description?: string + label?: string + value?: string | number +} + +export interface WmsMaterialStockBaseType { + id?: string + name?: string + code?: string + value?: number + description?: string + options?: Array<DataItemType> + abilityValue?: number | string + data?: DataItemType + defaultValue?: string | number + flow: string +} + +export interface FlowDefinitionType { + id?: string + name?: string + code?: string + description?: string +} + +export type ModuleType = Record< + string, + { + default: Record<string, string> + name: string + } +> + +export interface TabItem { + name: string + label: string + component: Component + hidden?: boolean +} diff --git a/HIAWms/web/src/widgets/WmsStoreInfo/Controllers/WmsAreaDrawer.ts b/HIAWms/web/src/widgets/WmsStoreInfo/Controllers/WmsAreaDrawer.ts index 326c88d..a23713e 100644 --- a/HIAWms/web/src/widgets/WmsStoreInfo/Controllers/WmsAreaDrawer.ts +++ b/HIAWms/web/src/widgets/WmsStoreInfo/Controllers/WmsAreaDrawer.ts @@ -145,8 +145,8 @@ areaDesc: formData.value.areaDesc, // 鎻忚堪 areaStatus: formData.value.areaStatus, // 搴撳尯鐘舵�� areaType: formData.value.areaType, // 搴撳尯绫诲瀷 - storeCode: formData.value.storeCode, // 浠撳簱浠g爜 - // storeName: formData.value.storeName, // 浠撳簱鍚嶇О + storeCode: formData.value.storeCode.areaCode, // 浠撳簱浠g爜 + storeName: formData.value.storeCode.storeName, // 浠撳簱鍚嶇О remark: formData.value.remark, // 澶囨敞 } if (!current.value) { -- Gitblit v1.9.3