From 7eb4eb64a854eae4f3f62f0dfc4e63427d7231b6 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周三, 07 5月 2025 14:09:59 +0800
Subject: [PATCH] 22222
---
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceCreateOrUpdateDtoBase.cs | 87
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsInOutStockRecordController.cs | 188
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/CMSPluginEntry.cs | 109
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordExportModel.cs | 109
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockRecord/WmsInOutStockRecord.cs | 95
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsPlaceAppService.cs | 46
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Localization/HIAWms/en.json | 7
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/CMS.Plugin.UtilityApi.csproj | 73
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/IHIAWmsFlowService.cs | 15
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialExportModel.cs | 138
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs | 144
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialsImportModel.cs | 33
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Flows/FlowInfo.xml | 15
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/appsettings.json | 6
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/AreaStatusEnum.cs | 28
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsPlaceAppService.cs | 322 +
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/FodyWeavers.xml | 3
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsArea导出模板.xlsx | 0
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/NullCMSPluginDbSchemaMigrator.cs | 16
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs | 760 +-
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanPublicController.cs | 44
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PlaceStatusEnum.cs | 37
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoresExportModel.cs | 54
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsPlaceEventHandler.cs | 17
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMSPluginQueryAppService.cs | 19
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsAreaAppService.cs | 46
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.Application.Tests/CMS.Plugin.HIAWms.Application.Tests.csproj | 17
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsArea.cs | 68
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMS.Plugin.HIAWms.Abstractions.csproj | 27
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMSPluginApplicationModule.cs | 31
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerUpdateDto.cs | 14
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/FodyWeavers.xml | 3
Weben_CMS专用代码生成器/UtilityApi/publish.ps1 | 38
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/FodyWeavers.xml | 3
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/CMSPluginModule.cs | 42
Weben_CMS专用代码生成器/UtilityApi/.idea/.idea.CMS.Plugin.HIAWms/.idea/vcs.xml | 6
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsEnumAppService.cs | 36
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMSPluginDomainErrorCodes.cs | 16
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsAreas/WmsAreaConsts.cs | 24
Weben_CMS专用代码生成器/UtilityApi/common.props | 18
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsStore.cs | 63
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsDataSeedContributor.cs | 35
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/IWmsPlaceRepository.cs | 54
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/WmsPlaceSpecification.cs | 41
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsAreaController.cs | 187
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/IWmsContainerRepository.cs | 54
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/ICMSPluginDbContext.cs | 14
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/WmsContainer.cs | 117
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateOrUpdateDtoBase.cs | 124
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsContainerAutoMapperProfile.cs | 26
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreasExportModel.cs | 89
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Flows/50001_1.pfd | 158
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsExtensions.cs | 30
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterial.cs | 119
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsSettings.cs | 23
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialDto.cs | 200
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreDto.cs | 87
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/GetWmsPlacesInput.cs | 19
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsPlaceRepository.cs | 104
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Jobs/HIAWmsArgs.cs | 18
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMSPluginAppService.cs | 19
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordsImportModel.cs | 33
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/新文件夹/WmsTask.cs | 126
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/HIAWmsActivity.cs | 78
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Apis/IHIAWmsExternalApi.cs | 18
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests/HIAWmsEntityFrameworkTestBase.cs | 11
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests/HIAWmsTestEntityFrameworkCoreModule.cs | 50
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/FodyWeavers.xml | 3
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/GetWmsAreasInput.cs | 50
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsOptions.cs | 16
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs | 445 +
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsMaterialAutoMapperProfile.cs | 26
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/GetWmsMaterialInput.cs | 301 +
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlacesExportModel.cs | 111
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Localization/HIAWmsResource.cs | 11
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsFeatures.cs | 23
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests.csproj | 25
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/CMSPluginDbMigrationService.cs | 211
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginDbContext.cs | 52
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsInOutStockRecord.cs | 121
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerCreateDto.cs | 17
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/WmsPlaceDataSeedContributor.cs | 67
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/IWmsStoreRepository.cs | 61
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/FodyWeavers.xml | 3
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsContainers/WmsContainerConsts.cs | 12
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceCreateDto.cs | 17
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/WmsContainerSpecification.cs | 41
Weben_CMS专用代码生成器/UtilityApi/delete-bin-obj-folders.bat | 20
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMS.Plugin.HIAWms.MySQL.csproj | 30
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerCreateOrUpdateDtoBase.cs | 99
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/CMSPluginDomainModule.cs | 24
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/ICMSPluginQueryAppService.cs | 10
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/GetWmsInOutStockRecordInput.cs | 249
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/CMS.Plugin.HIAWms.Domain.csproj | 27
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginPostgreSqlModule.cs | 42
Weben_CMS专用代码生成器/UtilityApi/doc/Domain-Drive-Design.md | 63
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaCreateOrUpdateDtoBase.cs | 89
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PlaceTypeEnum.cs | 25
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsContainer.cs | 117
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/MesAppService.cs | 32
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/WmsTaskStatus.cs | 42
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsEnumDto/WmsEnumInput.cs | 21
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsContainerAppService.cs | 46
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsAreaEventHandler.cs | 17
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/Properties/AssemblyInfo.cs | 2
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsContainerController.cs | 187
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/IWmsMaterialRepository.cs | 53
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/Properties/AssemblyInfo.cs | 2
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/FodyWeavers.xml | 3
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreUpdateDto.cs | 14
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/CMSPluginDbProperties.cs | 27
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginDbContextFactory.cs | 43
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsInOutStockRecordAppService.cs | 436 +
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsInOutStockRecordAppService.cs | 46
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsStoreAutoMapperProfile.cs | 26
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsInOutStockRecordRepository.cs | 113
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsStoreAppService.cs | 313 +
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsPlaceAutoMapperProfile.cs | 26
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Properties/AssemblyInfo.cs | 3
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsInOutStockRecordAutoMapperProfile.cs | 26
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/FodyWeavers.xml | 3
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/Scripts/UpdateMigrations.bat | 6
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/EventHandlers/HIAWmsEventHandler.cs | 80
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/WmsAreaSpecification.cs | 41
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMS.Plugin.HIAWms.Domain.Shared.csproj | 28
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Jobs/HIAWmsJob.cs | 43
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginEfCoreEntityExtensionMappings.cs | 47
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsMaterialAppService.cs | 46
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoresImportModel.cs | 34
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PurchaseTypeEnum.cs | 34
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/WmsPlace.cs | 104
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsTestData.cs | 8
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/Scripts/UpdateMigrations.bat | 6
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/Properties/AssemblyInfo.cs | 2
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsMaterialEventHandler.cs | 17
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreasImportModel.cs | 34
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsAreaAutoMapperProfile.cs | 26
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainersExportModel.cs | 113
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceUpdateDto.cs | 14
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/WmsStore.cs | 64
Weben_CMS专用代码生成器/UtilityApi/configureawait.props | 9
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsTask.cs | 153
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsStoreController.cs | 187
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/ProjectService/HIAWmsProjectService.cs | 165
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.Application.Tests/HIAWmsApplicationTestModule.cs | 19
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMS.Plugin.HIAWms.Application.csproj | 27
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginSqlServerModule.cs | 42
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordCreateDto.cs | 17
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/FodyWeavers.xml | 3
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsAreaAppService.cs | 324 +
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsStoreRepository.cs | 100
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsPlace导出模板.xlsx | 0
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/Scripts/UpdateDB.bat | 3
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsContainerAppService.cs | 336 +
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsMaterialController.cs | 188
Weben_CMS专用代码生成器/UtilityApi/stylecop.json | 31
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/TaskTypeEnum.cs | 28
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockRecord/IWmsInOutStockRecordRepository.cs | 53
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsStoreEventHandler.cs | 17
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/ContainerTypeEnum.cs | 35
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsAreas/WmsAreaEto.cs | 22
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Services/HIAWmsFlowService.cs | 43
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/SonTaskTypeEnum.cs | 51
Weben_CMS专用代码生成器/UtilityApi/Directory.Build.props | 66
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/ContainerStatusEnum.cs | 55
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaDto.cs | 108
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterial/WmsMaterialConsts.cs | 12
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/FodyWeavers.xml | 3
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.Domain.Tests/HIAWmsDomainTestModule.cs | 13
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/appsettings.json | 5
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/StockTypeEnum.cs | 28
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterialDataSeedContributor.cs | 67
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsContainers/WmsContainerEto.cs | 22
Weben_CMS专用代码生成器/UtilityApi/README.md | 2
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsPlaces/WmsPlaceConsts.cs | 18
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMS.Plugin.HIAWms.SqlServer.csproj | 30
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanInput.cs | 1
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsStores/WmsStoreConsts.cs | 18
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMS.Plugin.HIAWms.EntityFrameworkCore.csproj | 25
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginDbSchemaMigrator.cs | 37
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsPlaceController.cs | 187
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsTestBaseModule.cs | 63
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/CMS.Plugin.HIAWms.Application.Contracts.csproj | 27
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlacesImportModel.cs | 34
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/GetWmsStoresInput.cs | 29
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.Domain.Tests/HIAWmsDomainTestBase.cs | 38
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Properties/launchSettings.json | 16
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Workers/HIAWmsWorker.cs | 76
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsStore导出模板.xlsx | 0
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateDto.cs | 17
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMSPluginDbContext.cs | 54
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMS.Plugin.HIAWms.PostgreSql.csproj | 30
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Repositories/EfCoreWorkPlanRepository.cs | 2
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/FodyWeavers.xml | 3
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsAreaRepository.cs | 115
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordDto.cs | 155
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/CMSPluginApplicationContractsModule.cs | 21
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/WmsStoreDataSeedContributor.cs | 67
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginEntityFrameworkCoreModule.cs | 26
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/AreaTypeEnum.cs | 23
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/MapperProfiles/WorkPlanAutoMapperProfile.cs | 3
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/CMSPluginDtoExtensions.cs | 32
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/YesNoEnum.cs | 28
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginDbContextFactory.cs | 43
Weben_CMS专用代码生成器/UtilityApi/CMS.Plugin.UtilityApi.sln | 144
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/IWmsAreaRepository.cs | 61
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/WmsAreaDataSeedContributor.cs | 67
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/ICMSPluginDapperRepository.cs | 22
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMSPluginMySQLModule.cs | 42
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/FlowProcessors/HIAWmsFlowProcessor.cs | 91
Weben_CMS专用代码生成器/UtilityApi/common.test.props | 10
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/Scripts/UpdateDB.bat | 3
Weben_CMS专用代码生成器/UtilityApi/.idea/.idea.CMS.Plugin.HIAWms/.idea/encodings.xml | 4
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsContainerEventHandler.cs | 17
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordUpdateDto.cs | 13
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsStoreAppService.cs | 46
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreCreateDto.cs | 17
Weben_CMS专用代码生成器/UtilityApi/package.reference.props | 30
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialRepository.cs | 113
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsEnumAppService.cs | 69
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Settings/CMSPluginSettingDefinitionProvider.cs | 27
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/CMSPluginRuntimeMigrator.cs | 46
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/Scripts/UpdateDB.bat | 3
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerDto.cs | 145
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMSPluginDomainSharedModule.cs | 41
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsEnumController.cs | 69
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsStores/WmsStoreEto.cs | 22
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterial导出模板.xlsx | 0
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.Domain.Tests/CMS.Plugin.HIAWms.Domain.Tests.csproj | 16
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsAbstractionsModule.cs | 8
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMSPluginModuleExtensionConfigurator.cs | 82
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaCreateDto.cs | 17
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Properties/AssemblyInfo.cs | 2
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.Application.Tests/HIAWmsApplicationTestBase.cs | 38
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterial/WmsMaterialEto.cs | 22
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/GetWmsContainersInput.cs | 35
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/HIAWmsStatus.cs | 34
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceDto.cs | 155
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaUpdateDto.cs | 14
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/WmsArea.cs | 91
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordCreateOrUpdateDtoBase.cs | 100
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsTestBase.cs | 89
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMSPluginDbContextFactory.cs | 43
Weben_CMS专用代码生成器/UtilityApi/NuGet.config | 8
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/Properties/AssemblyInfo.cs | 2
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/Properties/AssemblyInfo.cs | 3
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainersImportModel.cs | 34
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Util/ExportHelper.cs | 59
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Util/EnumHelper.cs | 84
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Util/GetEnumDescriptionUtil.cs | 30
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsPlace.cs | 74
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/CMS.Plugin.HIAWms.TestBase.csproj | 23
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Localization/HIAWms/zh-Hans.json | 7
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/WmsContainerDataSeedContributor.cs | 67
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginDbContext.cs | 51
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreCreateOrUpdateDtoBase.cs | 46
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialUpdateDto.cs | 13
Weben_CMS专用代码生成器/UtilityApi/.idea/.idea.CMS.Plugin.HIAWms/.idea/indexLayout.xml | 8
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsContainer导出模板.xlsx | 0
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginDapperRepository.cs | 18
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterialSpecification.cs | 41
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/MaterialTypeEnum.cs | 40
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsPlaces/WmsPlaceEto.cs | 22
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/WmsStoreSpecification.cs | 41
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/ICMSPluginDbSchemaMigrator.cs | 12
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsContainerRepository.cs | 107
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/Scripts/UpdateMigrations.bat | 6
267 files changed, 14,988 insertions(+), 395 deletions(-)
diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanInput.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanInput.cs
index 72bfbe3..5428083 100644
--- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanInput.cs
+++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanInput.cs
@@ -9,6 +9,7 @@
/// <summary>
/// 浣滀笟璁″垝杈撳叆鍙傛暟妯″瀷
/// </summary>
+ [Serializable]
public class WorkPlanInput
{
/// <summary>
diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/MesAppService.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/MesAppService.cs
index edb8a13..5c02bf7 100644
--- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/MesAppService.cs
+++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/MesAppService.cs
@@ -1,36 +1,31 @@
using CMS.Plugin.FormulaManagement.Abstractions;
-using CMS.Plugin.MesSuite.Abstractions.Events;
+using CMS.Plugin.OrderManagement.Abstractions;
using CMS.Plugin.OrderManagement.Abstractions.Enums;
using CMS.Plugin.OrderManagement.Abstractions.Models;
-using CMS.Plugin.OrderManagement.Abstractions;
-using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.MyTestEntityNames;
+using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan;
using CMS.Plugin.PipeLineLems.Application.Contracts.Services;
-using CMS.Plugin.PipeLineLems.Domain.MyTestEntityNames;
-using CMS.Plugin.PipeLineLems.Domain.Shared;
-using CMS.Plugin.PipeLineLems.Domain.Shared.MyTestEntityNames;
+using CMS.Plugin.PipeLineLems.Domain.WorkPlan;
using CMS.Plugin.ProductManagement.Abstractions;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp;
-using Volo.Abp.Application.Dtos;
-using Volo.Abp.Data;
-using Volo.Abp.ObjectExtending;
-using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan;
-using Volo.Abp.EventBus;
namespace CMS.Plugin.PipeLineLems.Application.Implements;
-public class MesAppService : IMesAppService
+public class MesAppService : CMSPluginAppService, IMesAppService
{
private readonly IServiceProvider _serviceProvider;
+ private readonly IWorkPlanAppService _workPlanAppService;
//private readonly IEventBus _eventBus;
public MesAppService(IServiceProvider serviceProvider
+ , IWorkPlanAppService workPlanAppService
//, IEventBus eventBus
)
{
_serviceProvider = serviceProvider;
// _eventBus = eventBus;
+ _workPlanAppService = workPlanAppService;
}
public async Task<MesOrderResponse> CreateAsync(List<WorkPlanInput> input)
@@ -57,7 +52,7 @@
var order = await orderManager.GetByCodeAsync(taskCode);
if (order != null)
{
- throw new UserFriendlyException($"宸ュ崟[{taskCode}]宸插瓨鍦�");
+ throw new UserFriendlyException($"浠诲姟缂栧彿[{taskCode}]宸插瓨鍦�");
}
@@ -141,6 +136,17 @@
}
+
+ //淇濆瓨鍒拌〃涓�
+ foreach (var item in input)
+ {
+ var insertObj = ObjectMapper.Map<WorkPlanInput, WorkPlanCreateDto>(item);
+ insertObj.OrgMaterialCode = "1111";
+ insertObj.Sort = 1;
+ await _workPlanAppService.CreateAsync(insertObj);
+ }
+
+
// 鍙戝竷浜嬩欢
//await _eventBus.PublishAsync(new EntityChangedEto("MESCREATE", input, null, EntityChangeType.Add, true));
diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs
index 2299247..686a0d9 100644
--- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs
+++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs
@@ -1,127 +1,127 @@
-using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan;
-using CMS.Plugin.PipeLineLems.Application.Contracts.Services;
-using CMS.Plugin.PipeLineLems.Domain.Shared;
-using CmsQueryExtensions;
-using CMS.Plugin.PipeLineLems.Domain.WorkPlan;
-using CmsQueryExtensions.Extension;
-using System.Linq.Expressions;
-using Volo.Abp;
-using Volo.Abp.Application.Dtos;
-using Volo.Abp.Data;
-using Volo.Abp.ObjectExtending;
-using Volo.Abp.ObjectMapping;
-
-namespace CMS.Plugin.PipeLineLems.Application.Implements;
-
+using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan;
+using CMS.Plugin.PipeLineLems.Application.Contracts.Services;
+using CMS.Plugin.PipeLineLems.Domain.Shared;
+using CmsQueryExtensions;
+using CMS.Plugin.PipeLineLems.Domain.WorkPlan;
+using CmsQueryExtensions.Extension;
+using System.Linq.Expressions;
+using Volo.Abp;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.Data;
+using Volo.Abp.ObjectExtending;
+using Volo.Abp.ObjectMapping;
+
+namespace CMS.Plugin.PipeLineLems.Application.Implements;
+
/// <summary>
/// 浣滀笟璁″垝琛ㄥ簲鐢ㄦ湇鍔�
/// </summary>
-public class WorkPlanAppService : CMSPluginAppService, IWorkPlanAppService
-{
- private readonly IWorkPlanRepository workPlanRepository;
-
+public class WorkPlanAppService : CMSPluginAppService, IWorkPlanAppService
+{
+ private readonly IWorkPlanRepository workPlanRepository;
+
/// <summary>
/// Initializes a new instance of the <see cref="WorkPlanAppService"/> class.
/// </summary>
/// <param name="WorkPlanRepository">The task job repository.</param>
- public WorkPlanAppService(IWorkPlanRepository _WorkPlanRepository)
- {
- workPlanRepository = _WorkPlanRepository;
- }
-
+ public WorkPlanAppService(IWorkPlanRepository _WorkPlanRepository)
+ {
+ workPlanRepository = _WorkPlanRepository;
+ }
+
/// <summary>
/// 鑾峰彇鎸囧畾浣滀笟璁″垝琛�
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
- public virtual async Task<WorkPlanDto> GetAsync(Guid id)
- {
- return ObjectMapper.Map<WorkPlan, WorkPlanDto>(await workPlanRepository.GetAsync(id));
- }
-
+ public virtual async Task<WorkPlanDto> GetAsync(Guid id)
+ {
+ return ObjectMapper.Map<WorkPlan, WorkPlanDto>(await workPlanRepository.GetAsync(id));
+ }
+
/// <summary>
/// 鍒嗛〉鑾峰彇浣滀笟璁″垝琛�
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
- public virtual async Task<PagedResultDto<WorkPlanDto>> GetListAsync(GetWorkPlanInput input)
- {
- Check.NotNull(input, nameof(input));
-
- if (input.Sorting.IsNullOrWhiteSpace())
- {
- input.Sorting = nameof(WorkPlan.Sort);
- }
-
+ public virtual async Task<PagedResultDto<WorkPlanDto>> GetListAsync(GetWorkPlanInput input)
+ {
+ Check.NotNull(input, nameof(input));
+
+ if (input.Sorting.IsNullOrWhiteSpace())
+ {
+ input.Sorting = nameof(WorkPlan.Sort);
+ }
+
#region 鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�
-
+
//鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�
- var whereConditions = DynamicGetQueryParams(input);
-
- #endregion
-
- var count = await workPlanRepository.GetCountAsync(whereConditions);
- var list = await workPlanRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount);
-
- return new PagedResultDto<WorkPlanDto>(count, ObjectMapper.Map<List<WorkPlan>, List<WorkPlanDto>>(list));
- }
-
+ var whereConditions = DynamicGetQueryParams(input);
+
+ #endregion
+
+ var count = await workPlanRepository.GetCountAsync(whereConditions);
+ var list = await workPlanRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount);
+
+ return new PagedResultDto<WorkPlanDto>(count, ObjectMapper.Map<List<WorkPlan>, List<WorkPlanDto>>(list));
+ }
+
/// <summary>
/// 鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�
/// </summary>
/// <param name="input">杈撳叆鍙傛暟</param>
/// <returns></returns>
- private FunReturnResultModel<Expression<Func<WorkPlan, bool>>> DynamicGetQueryParams(GetWorkPlanInput input)
- {
+ private FunReturnResultModel<Expression<Func<WorkPlan, bool>>> DynamicGetQueryParams(GetWorkPlanInput input)
+ {
//鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�
- var whereConditions = WhereConditionsExtensions.GetWhereConditions<WorkPlan, GetWorkPlanInput>(input);
- if (!whereConditions.IsSuccess)
- {
- throw new Exception("鍔ㄦ�佹瀯閫犳煡璇㈡潯浠跺け璐�:" + whereConditions.ErrMsg);
- }
-
+ var whereConditions = WhereConditionsExtensions.GetWhereConditions<WorkPlan, GetWorkPlanInput>(input);
+ if (!whereConditions.IsSuccess)
+ {
+ throw new Exception("鍔ㄦ�佹瀯閫犳煡璇㈡潯浠跺け璐�:" + whereConditions.ErrMsg);
+ }
+
//涔熷彲鍐嶆鑷畾涔夋瀯寤烘煡璇㈡潯浠�
- Expression<Func<WorkPlan, bool>> extendExpression = a => a.IsDeleted == false;
+ Expression<Func<WorkPlan, bool>> extendExpression = a => a.IsDeleted == false;
// 浣跨敤 System.Linq.PredicateBuilder 鐨� And
- var pres = (System.Linq.Expressions.Expression<Func<WorkPlan, bool>>)(whereConditions.data);
- whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression);
-
- return whereConditions;
- }
-
+ var pres = (System.Linq.Expressions.Expression<Func<WorkPlan, bool>>)(whereConditions.data);
+ whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression);
+
+ return whereConditions;
+ }
+
/// <summary>
/// 鏂板缓浣滀笟璁″垝琛�
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
- public virtual async Task<WorkPlanDto> CreateAsync(WorkPlanCreateDto input)
- {
- await CheckCreateOrUpdateDtoAsync(input);
-
- var exist = await workPlanRepository.NameExistAsync(input.TaskCode);
- if (exist)
- {
- throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.TaskCode]);
- }
-
- var maxSort = await workPlanRepository.GetMaxSortAsync();
- var sort = input.Sort ?? maxSort;
-
- var insertObj = ObjectMapper.Map<WorkPlanCreateDto, WorkPlan>(input);
- insertObj.Sort = sort;
- input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None);
-
- await workPlanRepository.InsertAsync(insertObj);
-
- if (input.Sort.HasValue && insertObj.Sort != maxSort)
- {
- await AdjustSortAsync(insertObj.Id, insertObj.Sort);
- }
-
- return ObjectMapper.Map<WorkPlan, WorkPlanDto>(insertObj);
- }
-
+ public virtual async Task<WorkPlanDto> CreateAsync(WorkPlanCreateDto input)
+ {
+ await CheckCreateOrUpdateDtoAsync(input);
+
+ var exist = await workPlanRepository.NameExistAsync(input.TaskCode);
+ if (exist)
+ {
+ throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.TaskCode]);
+ }
+
+ var maxSort = await workPlanRepository.GetMaxSortAsync();
+ var sort = input.Sort ?? maxSort;
+
+ var insertObj = ObjectMapper.Map<WorkPlanCreateDto, WorkPlan>(input);
+ insertObj.Sort = sort;
+ input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None);
+
+ await workPlanRepository.InsertAsync(insertObj);
+
+ //if (input.Sort.HasValue && insertObj.Sort != maxSort)
+ //{
+ // await AdjustSortAsync(insertObj.Id, insertObj.Sort);
+ //}
+
+ return ObjectMapper.Map<WorkPlan, WorkPlanDto>(insertObj);
+ }
+
/// <summary>
/// 鏇存柊浣滀笟璁″垝琛�
/// </summary>
@@ -129,21 +129,21 @@
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
- public virtual async Task<WorkPlanDto> UpdateAsync(Guid id, WorkPlanUpdateDto input)
- {
- await CheckCreateOrUpdateDtoAsync(input);
-
- var updateObj = await workPlanRepository.GetAsync(id);
- var exist = await workPlanRepository.NameExistAsync(input.TaskCode, updateObj.Id);
- if (exist)
- {
- throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.TaskCode]);
- }
-
- updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
- input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None);
-
- updateObj.TaskCode = input.TaskCode;
+ public virtual async Task<WorkPlanDto> UpdateAsync(Guid id, WorkPlanUpdateDto input)
+ {
+ await CheckCreateOrUpdateDtoAsync(input);
+
+ var updateObj = await workPlanRepository.GetAsync(id);
+ var exist = await workPlanRepository.NameExistAsync(input.TaskCode, updateObj.Id);
+ if (exist)
+ {
+ throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.TaskCode]);
+ }
+
+ updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
+ input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None);
+
+ updateObj.TaskCode = input.TaskCode;
updateObj.OrgMaterialCode = input.OrgMaterialCode;
updateObj.FactoryCode = input.FactoryCode;
updateObj.ProductCode = input.ProductCode;
@@ -192,20 +192,20 @@
updateObj.RedundantField3 = input.RedundantField3;
updateObj.Remark = input.Remark;
updateObj.IsDisabled = input.IsDisabled;
-
-
- await workPlanRepository.UpdateAsync(updateObj);
-
- return ObjectMapper.Map<WorkPlan, WorkPlanDto>(updateObj);
- }
-
+
+
+ await workPlanRepository.UpdateAsync(updateObj);
+
+ return ObjectMapper.Map<WorkPlan, WorkPlanDto>(updateObj);
+ }
+
/// <summary>
/// 鍏嬮殕浣滀笟璁″垝琛�
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
- public async Task<List<WorkPlanDto>> CloneAsync(IEnumerable<Guid> ids)
- {
+ public async Task<List<WorkPlanDto>> CloneAsync(IEnumerable<Guid> ids)
+ {
//var workPlans = new List<WorkPlan>();
//if (ids != null)
//{
@@ -225,319 +225,319 @@
// name += WorkPlanConsts.CloneTag;
// continue;
// }
-
+
// notExist = true;
// }
-
+
// //WorkPlan = await workPlanRepository.InsertAsync(WorkPlan.Clone(GuidGenerator.Create(), name, sort++));
// workPlans.Add(WorkPlan);
// }
// }
//}
-
+
//return ObjectMapper.Map<List<WorkPlan>, List<WorkPlanDto>>(workPlans);
- return new List<WorkPlanDto>();
- }
-
+ return new List<WorkPlanDto>();
+ }
+
/// <summary>
/// 鍒犻櫎鍗曚釜浣滀笟璁″垝琛�
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
- public virtual Task DeleteAsync(Guid id)
- {
- return workPlanRepository.DeleteAsync(id);
- }
-
+ public virtual Task DeleteAsync(Guid id)
+ {
+ return workPlanRepository.DeleteAsync(id);
+ }
+
/// <summary>
/// 鍒犻櫎澶氫釜浣滀笟璁″垝琛�
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
- public async Task DeleteManyAsync(IEnumerable<Guid> ids)
- {
- foreach (var id in ids)
- {
- await DeleteAsync(id);
- }
- }
-
+ public async Task DeleteManyAsync(IEnumerable<Guid> ids)
+ {
+ foreach (var id in ids)
+ {
+ await DeleteAsync(id);
+ }
+ }
+
/// <summary>
/// 璋冩暣鎺掑簭浣滀笟璁″垝琛�
/// </summary>
/// <param name="id"></param>
/// <param name="sort"></param>
/// <returns></returns>
- public virtual async Task AdjustSortAsync(Guid id, int sort)
- {
- var list = await workPlanRepository.GetListAsync(null, nameof(WorkPlan.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 workPlanRepository.UpdateManyAsync(list);
- }
-
+ public virtual async Task AdjustSortAsync(Guid id, int sort)
+ {
+ var list = await workPlanRepository.GetListAsync(null, nameof(WorkPlan.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 workPlanRepository.UpdateManyAsync(list);
+ }
+
/// <summary>
/// 瀵煎叆浣滀笟璁″垝琛�
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
- public async Task ImportAsync(WorkPlansImportModel input)
- {
- Check.NotNull(input, nameof(input));
-
- var workPlanCreateDtos = new List<(int RowIndex, WorkPlanCreateDto Item)>();
- var workPlanUpdateDtos = new List<(int RowIndex, Guid Id, WorkPlanUpdateDto Item)>();
- var importItems = input.WorkPlans;
-
- if (importItems != null && importItems.Any())
- {
+ public async Task ImportAsync(WorkPlansImportModel input)
+ {
+ Check.NotNull(input, nameof(input));
+
+ var workPlanCreateDtos = new List<(int RowIndex, WorkPlanCreateDto Item)>();
+ var workPlanUpdateDtos = new List<(int RowIndex, Guid Id, WorkPlanUpdateDto Item)>();
+ var importItems = input.WorkPlans;
+
+ if (importItems != null && importItems.Any())
+ {
#region 瀵煎叆鏍¢獙
-
+
// 鍒ゆ柇鍚嶇О鏄惁閲嶅锛屽苟杈撳嚭绗嚑琛岄噸澶�
- var duplicateWorkPlans = importItems.GroupBy(x => x.TaskCode).Where(x => x.Count() > 1).ToList();
- if (duplicateWorkPlans?.Any() == true)
- {
- var duplicateWorkPlanMsgs = duplicateWorkPlans.Select(x => $"绗� {string.Join(",", x.Select(x => x.RowIndex))} 琛岋細{x.Key} 鍚嶇О閲嶅");
- var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝 {string.Join(",", duplicateWorkPlanMsgs)}锛岀粓姝㈠鍏�";
- throw new UserFriendlyException(errorMsg);
- }
-
- #endregion
-
- foreach (var impItem in importItems)
- {
- if (impItem.TaskCode.IsNullOrWhiteSpace())
- {
- continue;
- }
-
- if (impItem.TaskCode.IsNullOrWhiteSpace())
- {
- var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊impItem.RowIndex}琛岋細WorkPlan鍚嶇О涓嶈兘涓虹┖";
- throw new UserFriendlyException(errorMsg);
- }
-
- var oldWorkPlan = await workPlanRepository.FindByNameAsync(impItem.TaskCode);
- if (oldWorkPlan != null)
- {
- var workPlanUpdateDto = new WorkPlanUpdateDto
- {
+ var duplicateWorkPlans = importItems.GroupBy(x => x.TaskCode).Where(x => x.Count() > 1).ToList();
+ if (duplicateWorkPlans?.Any() == true)
+ {
+ var duplicateWorkPlanMsgs = duplicateWorkPlans.Select(x => $"绗� {string.Join(",", x.Select(x => x.RowIndex))} 琛岋細{x.Key} 鍚嶇О閲嶅");
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝 {string.Join(",", duplicateWorkPlanMsgs)}锛岀粓姝㈠鍏�";
+ throw new UserFriendlyException(errorMsg);
+ }
+
+ #endregion
+
+ foreach (var impItem in importItems)
+ {
+ if (impItem.TaskCode.IsNullOrWhiteSpace())
+ {
+ continue;
+ }
+
+ if (impItem.TaskCode.IsNullOrWhiteSpace())
+ {
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊impItem.RowIndex}琛岋細WorkPlan鍚嶇О涓嶈兘涓虹┖";
+ throw new UserFriendlyException(errorMsg);
+ }
+
+ var oldWorkPlan = await workPlanRepository.FindByNameAsync(impItem.TaskCode);
+ if (oldWorkPlan != null)
+ {
+ var workPlanUpdateDto = new WorkPlanUpdateDto
+ {
TaskCode = impItem.TaskCode,
-OrgMaterialCode = impItem.OrgMaterialCode,
-FactoryCode = impItem.FactoryCode,
-ProductCode = impItem.ProductCode,
-WorkstationCode = impItem.WorkstationCode,
-EquipmentCode = impItem.EquipmentCode,
-WorkpieceName = impItem.WorkpieceName,
-ProcessName = impItem.ProcessName,
-PipeFittingCode = impItem.PipeFittingCode,
-PreSerialNumber = impItem.PreSerialNumber,
-DataIdentifier = impItem.DataIdentifier,
-PipeSpecCode = impItem.PipeSpecCode,
-PipeSectionName = impItem.PipeSectionName,
-OuterDiameter = impItem.OuterDiameter,
-Bevel = impItem.Bevel,
-Material = impItem.Material,
-Length = impItem.Length,
-DrillingPosition = impItem.DrillingPosition,
-Intersecting = impItem.Intersecting,
-InterfaceRequirement = impItem.InterfaceRequirement,
-HasMainSignature = impItem.HasMainSignature,
-Quantity = impItem.Quantity,
-MarkingContent = impItem.MarkingContent,
-CuttingFile = impItem.CuttingFile,
-BranchOuterDiameter = impItem.BranchOuterDiameter,
-BranchWallThickness = impItem.BranchWallThickness,
-BranchMaterial = impItem.BranchMaterial,
-BranchPortRadius = impItem.BranchPortRadius,
-BranchPortAngle = impItem.BranchPortAngle,
-BranchPortRequirement = impItem.BranchPortRequirement,
-IntersectingLineType = impItem.IntersectingLineType,
-IntersectingLineCategory = impItem.IntersectingLineCategory,
-FinishedProductScale = impItem.FinishedProductScale,
-FlangeThickness = impItem.FlangeThickness,
-FlangeInnerDiameter = impItem.FlangeInnerDiameter,
-WeldingHeatInput = impItem.WeldingHeatInput,
-PipeAllowableStress = impItem.PipeAllowableStress,
-PipeDiameter = impItem.PipeDiameter,
-PipeWallThickness = impItem.PipeWallThickness,
-VRData = impItem.VRData,
-ProcessRouteNumber = impItem.ProcessRouteNumber,
-PlannedStartTime = impItem.PlannedStartTime,
-PlannedEndTime = impItem.PlannedEndTime,
-TimeInfo = impItem.TimeInfo,
-RedundantField1 = impItem.RedundantField1,
-RedundantField2 = impItem.RedundantField2,
-RedundantField3 = impItem.RedundantField3,
-Remark = impItem.Remark,
-IsDisabled = impItem.IsDisabled,
-
- };
-
- workPlanUpdateDtos.Add((impItem.RowIndex, oldWorkPlan.Id, workPlanUpdateDto));
- }
- else
- {
- var workPlanCreateDto = new WorkPlanCreateDto
- {
+ OrgMaterialCode = impItem.OrgMaterialCode,
+ FactoryCode = impItem.FactoryCode,
+ ProductCode = impItem.ProductCode,
+ WorkstationCode = impItem.WorkstationCode,
+ EquipmentCode = impItem.EquipmentCode,
+ WorkpieceName = impItem.WorkpieceName,
+ ProcessName = impItem.ProcessName,
+ PipeFittingCode = impItem.PipeFittingCode,
+ PreSerialNumber = impItem.PreSerialNumber,
+ DataIdentifier = impItem.DataIdentifier,
+ PipeSpecCode = impItem.PipeSpecCode,
+ PipeSectionName = impItem.PipeSectionName,
+ OuterDiameter = impItem.OuterDiameter,
+ Bevel = impItem.Bevel,
+ Material = impItem.Material,
+ Length = impItem.Length,
+ DrillingPosition = impItem.DrillingPosition,
+ Intersecting = impItem.Intersecting,
+ InterfaceRequirement = impItem.InterfaceRequirement,
+ HasMainSignature = impItem.HasMainSignature,
+ Quantity = impItem.Quantity,
+ MarkingContent = impItem.MarkingContent,
+ CuttingFile = impItem.CuttingFile,
+ BranchOuterDiameter = impItem.BranchOuterDiameter,
+ BranchWallThickness = impItem.BranchWallThickness,
+ BranchMaterial = impItem.BranchMaterial,
+ BranchPortRadius = impItem.BranchPortRadius,
+ BranchPortAngle = impItem.BranchPortAngle,
+ BranchPortRequirement = impItem.BranchPortRequirement,
+ IntersectingLineType = impItem.IntersectingLineType,
+ IntersectingLineCategory = impItem.IntersectingLineCategory,
+ FinishedProductScale = impItem.FinishedProductScale,
+ FlangeThickness = impItem.FlangeThickness,
+ FlangeInnerDiameter = impItem.FlangeInnerDiameter,
+ WeldingHeatInput = impItem.WeldingHeatInput,
+ PipeAllowableStress = impItem.PipeAllowableStress,
+ PipeDiameter = impItem.PipeDiameter,
+ PipeWallThickness = impItem.PipeWallThickness,
+ VRData = impItem.VRData,
+ ProcessRouteNumber = impItem.ProcessRouteNumber,
+ PlannedStartTime = impItem.PlannedStartTime,
+ PlannedEndTime = impItem.PlannedEndTime,
+ TimeInfo = impItem.TimeInfo,
+ RedundantField1 = impItem.RedundantField1,
+ RedundantField2 = impItem.RedundantField2,
+ RedundantField3 = impItem.RedundantField3,
+ Remark = impItem.Remark,
+ IsDisabled = impItem.IsDisabled,
+
+ };
+
+ workPlanUpdateDtos.Add((impItem.RowIndex, oldWorkPlan.Id, workPlanUpdateDto));
+ }
+ else
+ {
+ var workPlanCreateDto = new WorkPlanCreateDto
+ {
TaskCode = impItem.TaskCode,
-OrgMaterialCode = impItem.OrgMaterialCode,
-FactoryCode = impItem.FactoryCode,
-ProductCode = impItem.ProductCode,
-WorkstationCode = impItem.WorkstationCode,
-EquipmentCode = impItem.EquipmentCode,
-WorkpieceName = impItem.WorkpieceName,
-ProcessName = impItem.ProcessName,
-PipeFittingCode = impItem.PipeFittingCode,
-PreSerialNumber = impItem.PreSerialNumber,
-DataIdentifier = impItem.DataIdentifier,
-PipeSpecCode = impItem.PipeSpecCode,
-PipeSectionName = impItem.PipeSectionName,
-OuterDiameter = impItem.OuterDiameter,
-Bevel = impItem.Bevel,
-Material = impItem.Material,
-Length = impItem.Length,
-DrillingPosition = impItem.DrillingPosition,
-Intersecting = impItem.Intersecting,
-InterfaceRequirement = impItem.InterfaceRequirement,
-HasMainSignature = impItem.HasMainSignature,
-Quantity = impItem.Quantity,
-MarkingContent = impItem.MarkingContent,
-CuttingFile = impItem.CuttingFile,
-BranchOuterDiameter = impItem.BranchOuterDiameter,
-BranchWallThickness = impItem.BranchWallThickness,
-BranchMaterial = impItem.BranchMaterial,
-BranchPortRadius = impItem.BranchPortRadius,
-BranchPortAngle = impItem.BranchPortAngle,
-BranchPortRequirement = impItem.BranchPortRequirement,
-IntersectingLineType = impItem.IntersectingLineType,
-IntersectingLineCategory = impItem.IntersectingLineCategory,
-FinishedProductScale = impItem.FinishedProductScale,
-FlangeThickness = impItem.FlangeThickness,
-FlangeInnerDiameter = impItem.FlangeInnerDiameter,
-WeldingHeatInput = impItem.WeldingHeatInput,
-PipeAllowableStress = impItem.PipeAllowableStress,
-PipeDiameter = impItem.PipeDiameter,
-PipeWallThickness = impItem.PipeWallThickness,
-VRData = impItem.VRData,
-ProcessRouteNumber = impItem.ProcessRouteNumber,
-PlannedStartTime = impItem.PlannedStartTime,
-PlannedEndTime = impItem.PlannedEndTime,
-TimeInfo = impItem.TimeInfo,
-RedundantField1 = impItem.RedundantField1,
-RedundantField2 = impItem.RedundantField2,
-RedundantField3 = impItem.RedundantField3,
-Remark = impItem.Remark,
-IsDisabled = impItem.IsDisabled,
-
- };
-
- workPlanCreateDtos.Add((impItem.RowIndex, workPlanCreateDto));
- }
- }
- }
-
+ OrgMaterialCode = impItem.OrgMaterialCode,
+ FactoryCode = impItem.FactoryCode,
+ ProductCode = impItem.ProductCode,
+ WorkstationCode = impItem.WorkstationCode,
+ EquipmentCode = impItem.EquipmentCode,
+ WorkpieceName = impItem.WorkpieceName,
+ ProcessName = impItem.ProcessName,
+ PipeFittingCode = impItem.PipeFittingCode,
+ PreSerialNumber = impItem.PreSerialNumber,
+ DataIdentifier = impItem.DataIdentifier,
+ PipeSpecCode = impItem.PipeSpecCode,
+ PipeSectionName = impItem.PipeSectionName,
+ OuterDiameter = impItem.OuterDiameter,
+ Bevel = impItem.Bevel,
+ Material = impItem.Material,
+ Length = impItem.Length,
+ DrillingPosition = impItem.DrillingPosition,
+ Intersecting = impItem.Intersecting,
+ InterfaceRequirement = impItem.InterfaceRequirement,
+ HasMainSignature = impItem.HasMainSignature,
+ Quantity = impItem.Quantity,
+ MarkingContent = impItem.MarkingContent,
+ CuttingFile = impItem.CuttingFile,
+ BranchOuterDiameter = impItem.BranchOuterDiameter,
+ BranchWallThickness = impItem.BranchWallThickness,
+ BranchMaterial = impItem.BranchMaterial,
+ BranchPortRadius = impItem.BranchPortRadius,
+ BranchPortAngle = impItem.BranchPortAngle,
+ BranchPortRequirement = impItem.BranchPortRequirement,
+ IntersectingLineType = impItem.IntersectingLineType,
+ IntersectingLineCategory = impItem.IntersectingLineCategory,
+ FinishedProductScale = impItem.FinishedProductScale,
+ FlangeThickness = impItem.FlangeThickness,
+ FlangeInnerDiameter = impItem.FlangeInnerDiameter,
+ WeldingHeatInput = impItem.WeldingHeatInput,
+ PipeAllowableStress = impItem.PipeAllowableStress,
+ PipeDiameter = impItem.PipeDiameter,
+ PipeWallThickness = impItem.PipeWallThickness,
+ VRData = impItem.VRData,
+ ProcessRouteNumber = impItem.ProcessRouteNumber,
+ PlannedStartTime = impItem.PlannedStartTime,
+ PlannedEndTime = impItem.PlannedEndTime,
+ TimeInfo = impItem.TimeInfo,
+ RedundantField1 = impItem.RedundantField1,
+ RedundantField2 = impItem.RedundantField2,
+ RedundantField3 = impItem.RedundantField3,
+ Remark = impItem.Remark,
+ IsDisabled = impItem.IsDisabled,
+
+ };
+
+ workPlanCreateDtos.Add((impItem.RowIndex, workPlanCreateDto));
+ }
+ }
+ }
+
// 鏂板
- foreach (var workPlanDto in workPlanCreateDtos)
- {
- try
- {
- await CreateAsync(workPlanDto.Item);
- }
- catch (Exception e)
- {
- var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊workPlanDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�";
- throw new UserFriendlyException(errorMsg);
- }
- }
-
+ foreach (var workPlanDto in workPlanCreateDtos)
+ {
+ try
+ {
+ await CreateAsync(workPlanDto.Item);
+ }
+ catch (Exception e)
+ {
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊workPlanDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�";
+ throw new UserFriendlyException(errorMsg);
+ }
+ }
+
// 鏇存柊
- foreach (var workPlanDto in workPlanUpdateDtos)
- {
- try
- {
- await UpdateAsync(workPlanDto.Id, workPlanDto.Item);
- }
- catch (Exception e)
- {
- var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊workPlanDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�";
- throw new UserFriendlyException(errorMsg);
- }
- }
- }
-
+ foreach (var workPlanDto in workPlanUpdateDtos)
+ {
+ try
+ {
+ await UpdateAsync(workPlanDto.Id, workPlanDto.Item);
+ }
+ catch (Exception e)
+ {
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊workPlanDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�";
+ throw new UserFriendlyException(errorMsg);
+ }
+ }
+ }
+
/// <summary>
/// 瀵煎嚭浣滀笟璁″垝琛�
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
- public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWorkPlanInput input)
- {
- Check.NotNull(input, nameof(input));
-
- if (input.Sorting.IsNullOrWhiteSpace())
- {
- input.Sorting = nameof(WorkPlan.Sort);
- }
-
+ public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWorkPlanInput input)
+ {
+ Check.NotNull(input, nameof(input));
+
+ if (input.Sorting.IsNullOrWhiteSpace())
+ {
+ input.Sorting = nameof(WorkPlan.Sort);
+ }
+
#region 鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�
-
+
//鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�
- var whereConditions = DynamicGetQueryParams(input);
-
- #endregion
-
-
- var list = await workPlanRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true);
- var result = ObjectMapper.Map<List<WorkPlan>, List<WorkPlanDto>>(list);
-
- var sheets = new Dictionary<string, object>
- {
- ["閰嶇疆"] = ExportHelper.ConvertListToExportData(result),
- };
-
- var fileName = result.Count > 1 ? "浣滀笟璁″垝琛ㄥ垪琛�" : result.Count == 1 ? result[0]?.TaskCode : "WorkPlan妯$増";
- return (sheets, fileName);
- }
-
+ var whereConditions = DynamicGetQueryParams(input);
+
+ #endregion
+
+
+ var list = await workPlanRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true);
+ var result = ObjectMapper.Map<List<WorkPlan>, List<WorkPlanDto>>(list);
+
+ var sheets = new Dictionary<string, object>
+ {
+ ["閰嶇疆"] = ExportHelper.ConvertListToExportData(result),
+ };
+
+ var fileName = result.Count > 1 ? "浣滀笟璁″垝琛ㄥ垪琛�" : result.Count == 1 ? result[0]?.TaskCode : "WorkPlan妯$増";
+ return (sheets, fileName);
+ }
+
/// <summary>
/// 鏍¢獙浣滀笟璁″垝琛紝褰撴柊寤烘垨鏇存柊鏃�
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
- protected Task CheckCreateOrUpdateDtoAsync(WorkPlanCreateOrUpdateDtoBase input)
- {
- Check.NotNull(input, nameof(input));
- Check.NotNullOrWhiteSpace(input.TaskCode, "浠诲姟缂栫爜", 64);
+ protected Task CheckCreateOrUpdateDtoAsync(WorkPlanCreateOrUpdateDtoBase input)
+ {
+ Check.NotNull(input, nameof(input));
+ Check.NotNullOrWhiteSpace(input.TaskCode, "浠诲姟缂栫爜", 64);
Check.NotNullOrWhiteSpace(input.OrgMaterialCode, "鍘熸枡缂栧彿", 64);
Check.NotNull(input.HasMainSignature, "鏄惁鏈変富绛�");
Check.NotNull(input.Quantity, "鍖呮嫭鏁伴噺");
-
- return Task.CompletedTask;
- }
-}
+
+ return Task.CompletedTask;
+ }
+}
diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/MapperProfiles/WorkPlanAutoMapperProfile.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/MapperProfiles/WorkPlanAutoMapperProfile.cs
index 1d1cea0..44f246c 100644
--- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/MapperProfiles/WorkPlanAutoMapperProfile.cs
+++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/MapperProfiles/WorkPlanAutoMapperProfile.cs
@@ -21,6 +21,7 @@
* into multiple profile classes for a better organization. */
CreateMap<WorkPlan, WorkPlanDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
CreateMap<WorkPlanCreateDto, WorkPlan>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
- CreateMap<GetWorkPlanInput, WorkPlan>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
+ CreateMap<GetWorkPlanInput, WorkPlan>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
+ CreateMap<WorkPlanInput, WorkPlanCreateDto>(MemberList.None);
}
}
diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Repositories/EfCoreWorkPlanRepository.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Repositories/EfCoreWorkPlanRepository.cs
index c1b4b9d..a87d305 100644
--- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Repositories/EfCoreWorkPlanRepository.cs
+++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Repositories/EfCoreWorkPlanRepository.cs
@@ -84,7 +84,7 @@
.IncludeDetails(includeDetails)
.WhereIf(whereConditions != null, whereConditions.data)
.Where(x => !x.IsDeleted)
- .OrderBy(sorting.IsNullOrEmpty() ? nameof(WorkPlan.Sort) : sorting)
+ .OrderByDescending(x=>x.CreationTime)
.PageBy(skipCount, maxResultCount)
.ToListAsync(GetCancellationToken(cancellationToken));
}
diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanPublicController.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanPublicController.cs
new file mode 100644
index 0000000..354df06
--- /dev/null
+++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanPublicController.cs
@@ -0,0 +1,44 @@
+using CMS.Extensions.Abp.AspNetCore.Mvc.Filters;
+using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan;
+using CMS.Plugin.PipeLineLems.Application.Contracts.Services;
+using Microsoft.AspNetCore.Mvc;
+using System.Reflection;
+
+namespace CMS.Plugin.PipeLineLems.Controller
+{
+ /// <summary>
+ /// 浣滀笟璁″垝鏈嶅姟
+ /// </summary>
+ [ApiController]
+ [TypeFilter(typeof(CMSLanguageFilter))]
+ [TypeFilter(typeof(CMSUowActionFilter))]
+ [TypeFilter(typeof(CMSAuditActionFilter))]
+ [TypeFilter(typeof(CMSExceptionFilter))]
+ [Route("api/v{version:apiVersion}/PipeLineLems/[controller]")]
+ public class WorkPlanPublicController : ControllerBase
+ {
+
+ private readonly IMesAppService _mesAppService;
+ /// <summary>
+ /// Initializes a new instance of the <see cref="TestEntityNameController"/> class.
+ /// </summary>
+ /// <param name="testentitynameAppService">The testentityname application service.</param>
+ public WorkPlanPublicController(IMesAppService mesAppService)
+ {
+ _mesAppService = mesAppService;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐢熶骇璁″垝.
+ /// </summary>
+ /// <param name="input">鏍囪瘑绗�.</param>
+ /// <returns></returns>
+ [HttpPost]
+ public virtual async Task<MesOrderResponse> GetWorkPlanAsync([FromBody] List<WorkPlanInput> input)
+ {
+ return await _mesAppService.CreateAsync(input);
+ }
+
+
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/.idea/.idea.CMS.Plugin.HIAWms/.idea/encodings.xml" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/.idea/.idea.CMS.Plugin.HIAWms/.idea/encodings.xml"
new file mode 100644
index 0000000..df87cf9
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/.idea/.idea.CMS.Plugin.HIAWms/.idea/encodings.xml"
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
+</project>
\ No newline at end of file
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/.idea/.idea.CMS.Plugin.HIAWms/.idea/indexLayout.xml" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/.idea/.idea.CMS.Plugin.HIAWms/.idea/indexLayout.xml"
new file mode 100644
index 0000000..7b08163
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/.idea/.idea.CMS.Plugin.HIAWms/.idea/indexLayout.xml"
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="UserContentModel">
+ <attachedFolders />
+ <explicitIncludes />
+ <explicitExcludes />
+ </component>
+</project>
\ No newline at end of file
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/.idea/.idea.CMS.Plugin.HIAWms/.idea/vcs.xml" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/.idea/.idea.CMS.Plugin.HIAWms/.idea/vcs.xml"
new file mode 100644
index 0000000..bc59970
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/.idea/.idea.CMS.Plugin.HIAWms/.idea/vcs.xml"
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="VcsDirectoryMappings">
+ <mapping directory="$PROJECT_DIR$/../../../../.." vcs="Git" />
+ </component>
+</project>
\ No newline at end of file
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/CMS.Plugin.UtilityApi.sln" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/CMS.Plugin.UtilityApi.sln"
new file mode 100644
index 0000000..8dd9b35
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/CMS.Plugin.UtilityApi.sln"
@@ -0,0 +1,144 @@
+锘�
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.4.33110.190
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "瑙e喅鏂规椤�", "瑙e喅鏂规椤�", "{28C418E6-AF1D-4B74-ACDF-7B81FA4C256E}"
+ ProjectSection(SolutionItems) = preProject
+ .editorconfig = .editorconfig
+ .gitignore = .gitignore
+ common.props = common.props
+ common.test.props = common.test.props
+ configureawait.props = configureawait.props
+ delete-bin-obj-folders.bat = delete-bin-obj-folders.bat
+ Directory.Build.props = Directory.Build.props
+ NuGet.config = NuGet.config
+ package.reference.props = package.reference.props
+ publish.ps1 = publish.ps1
+ README.md = README.md
+ stylecop.json = stylecop.json
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{19F68F40-2A05-48EB-86F0-56928B3CCE9C}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{5632E2B3-5592-4C6A-9493-768E5B04804D}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.UtilityApi", "src\CMS.Plugin.HIAWms\CMS.Plugin.UtilityApi.csproj", "{9926DE4C-376D-487E-9C64-494913D94379}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.HIAWms.EntityFrameworkCore", "src\CMS.Plugin.HIAWms.EntityFrameworkCore\CMS.Plugin.HIAWms.EntityFrameworkCore.csproj", "{0022A80F-6D52-4B58-B2B3-F029DB4AEC0A}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.HIAWms.Domain", "src\CMS.Plugin.HIAWms.Domain\CMS.Plugin.HIAWms.Domain.csproj", "{8B2BED13-2B0E-49B5-8B0A-F272D27B2F37}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.HIAWms.Domain.Shared", "src\CMS.Plugin.HIAWms.Domain.Shared\CMS.Plugin.HIAWms.Domain.Shared.csproj", "{F405C633-8100-49B8-A270-D5340A165742}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.HIAWms.Application.Contracts", "src\CMS.Plugin.HIAWms.Application.Contracts\CMS.Plugin.HIAWms.Application.Contracts.csproj", "{D65BB57E-618A-468C-AA28-BD8C9EBF0AF2}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.HIAWms.Application", "src\CMS.Plugin.HIAWms.Application\CMS.Plugin.HIAWms.Application.csproj", "{02CB86F3-E614-4193-8B7F-C2FB665C8A5A}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "doc", "doc", "{A68B3B6B-DDE8-431E-90F3-A9FEE1D14A53}"
+ ProjectSection(SolutionItems) = preProject
+ doc\Domain-Drive-Design.md = doc\Domain-Drive-Design.md
+ EndProjectSection
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.HIAWms.TestBase", "test\CMS.Plugin.HIAWms.TestBase\CMS.Plugin.HIAWms.TestBase.csproj", "{33999EE8-73A1-4CF2-BDFD-CE353B05A727}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.HIAWms.EntityFrameworkCore.Tests", "test\CMS.Plugin.HIAWms.EntityFrameworkCore.Tests\CMS.Plugin.HIAWms.EntityFrameworkCore.Tests.csproj", "{C6AFC427-C51D-4BD2-BBA6-8841D3495077}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.HIAWms.Domain.Tests", "test\CMS.Plugin.HIAWms.Domain.Tests\CMS.Plugin.HIAWms.Domain.Tests.csproj", "{74E86B03-F185-47B2-A4C3-04C1CEC84F14}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.HIAWms.Application.Tests", "test\CMS.Plugin.HIAWms.Application.Tests\CMS.Plugin.HIAWms.Application.Tests.csproj", "{731DE36F-27F5-48B8-865D-DA43C8910010}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.HIAWms.Abstractions", "src\CMS.Plugin.HIAWms.Abstractions\CMS.Plugin.HIAWms.Abstractions.csproj", "{87D957E4-FE12-4432-9B7B-827A98DD41D1}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.HIAWms.MySQL", "src\CMS.Plugin.HIAWms.MySQL\CMS.Plugin.HIAWms.MySQL.csproj", "{2F71D6DF-F19A-410C-BD79-F2F871E63902}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.HIAWms.PostgreSql", "src\CMS.Plugin.HIAWms.PostgreSql\CMS.Plugin.HIAWms.PostgreSql.csproj", "{698D9FFA-080C-4F22-9FBF-B9509B28A954}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.HIAWms.SqlServer", "src\CMS.Plugin.HIAWms.SqlServer\CMS.Plugin.HIAWms.SqlServer.csproj", "{521D17FF-BD3A-43B4-9BEE-183FDE3522F4}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {9926DE4C-376D-487E-9C64-494913D94379}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9926DE4C-376D-487E-9C64-494913D94379}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9926DE4C-376D-487E-9C64-494913D94379}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9926DE4C-376D-487E-9C64-494913D94379}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0022A80F-6D52-4B58-B2B3-F029DB4AEC0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0022A80F-6D52-4B58-B2B3-F029DB4AEC0A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0022A80F-6D52-4B58-B2B3-F029DB4AEC0A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0022A80F-6D52-4B58-B2B3-F029DB4AEC0A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8B2BED13-2B0E-49B5-8B0A-F272D27B2F37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8B2BED13-2B0E-49B5-8B0A-F272D27B2F37}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8B2BED13-2B0E-49B5-8B0A-F272D27B2F37}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8B2BED13-2B0E-49B5-8B0A-F272D27B2F37}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F405C633-8100-49B8-A270-D5340A165742}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F405C633-8100-49B8-A270-D5340A165742}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F405C633-8100-49B8-A270-D5340A165742}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F405C633-8100-49B8-A270-D5340A165742}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D65BB57E-618A-468C-AA28-BD8C9EBF0AF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D65BB57E-618A-468C-AA28-BD8C9EBF0AF2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D65BB57E-618A-468C-AA28-BD8C9EBF0AF2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D65BB57E-618A-468C-AA28-BD8C9EBF0AF2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {02CB86F3-E614-4193-8B7F-C2FB665C8A5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {02CB86F3-E614-4193-8B7F-C2FB665C8A5A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {02CB86F3-E614-4193-8B7F-C2FB665C8A5A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {02CB86F3-E614-4193-8B7F-C2FB665C8A5A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {33999EE8-73A1-4CF2-BDFD-CE353B05A727}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {33999EE8-73A1-4CF2-BDFD-CE353B05A727}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {33999EE8-73A1-4CF2-BDFD-CE353B05A727}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {33999EE8-73A1-4CF2-BDFD-CE353B05A727}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C6AFC427-C51D-4BD2-BBA6-8841D3495077}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C6AFC427-C51D-4BD2-BBA6-8841D3495077}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C6AFC427-C51D-4BD2-BBA6-8841D3495077}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C6AFC427-C51D-4BD2-BBA6-8841D3495077}.Release|Any CPU.Build.0 = Release|Any CPU
+ {74E86B03-F185-47B2-A4C3-04C1CEC84F14}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {74E86B03-F185-47B2-A4C3-04C1CEC84F14}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {74E86B03-F185-47B2-A4C3-04C1CEC84F14}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {74E86B03-F185-47B2-A4C3-04C1CEC84F14}.Release|Any CPU.Build.0 = Release|Any CPU
+ {731DE36F-27F5-48B8-865D-DA43C8910010}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {731DE36F-27F5-48B8-865D-DA43C8910010}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {731DE36F-27F5-48B8-865D-DA43C8910010}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {731DE36F-27F5-48B8-865D-DA43C8910010}.Release|Any CPU.Build.0 = Release|Any CPU
+ {87D957E4-FE12-4432-9B7B-827A98DD41D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {87D957E4-FE12-4432-9B7B-827A98DD41D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {87D957E4-FE12-4432-9B7B-827A98DD41D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {87D957E4-FE12-4432-9B7B-827A98DD41D1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2F71D6DF-F19A-410C-BD79-F2F871E63902}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2F71D6DF-F19A-410C-BD79-F2F871E63902}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2F71D6DF-F19A-410C-BD79-F2F871E63902}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2F71D6DF-F19A-410C-BD79-F2F871E63902}.Release|Any CPU.Build.0 = Release|Any CPU
+ {698D9FFA-080C-4F22-9FBF-B9509B28A954}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {698D9FFA-080C-4F22-9FBF-B9509B28A954}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {698D9FFA-080C-4F22-9FBF-B9509B28A954}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {698D9FFA-080C-4F22-9FBF-B9509B28A954}.Release|Any CPU.Build.0 = Release|Any CPU
+ {521D17FF-BD3A-43B4-9BEE-183FDE3522F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {521D17FF-BD3A-43B4-9BEE-183FDE3522F4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {521D17FF-BD3A-43B4-9BEE-183FDE3522F4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {521D17FF-BD3A-43B4-9BEE-183FDE3522F4}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {9926DE4C-376D-487E-9C64-494913D94379} = {19F68F40-2A05-48EB-86F0-56928B3CCE9C}
+ {0022A80F-6D52-4B58-B2B3-F029DB4AEC0A} = {19F68F40-2A05-48EB-86F0-56928B3CCE9C}
+ {8B2BED13-2B0E-49B5-8B0A-F272D27B2F37} = {19F68F40-2A05-48EB-86F0-56928B3CCE9C}
+ {F405C633-8100-49B8-A270-D5340A165742} = {19F68F40-2A05-48EB-86F0-56928B3CCE9C}
+ {D65BB57E-618A-468C-AA28-BD8C9EBF0AF2} = {19F68F40-2A05-48EB-86F0-56928B3CCE9C}
+ {02CB86F3-E614-4193-8B7F-C2FB665C8A5A} = {19F68F40-2A05-48EB-86F0-56928B3CCE9C}
+ {33999EE8-73A1-4CF2-BDFD-CE353B05A727} = {5632E2B3-5592-4C6A-9493-768E5B04804D}
+ {C6AFC427-C51D-4BD2-BBA6-8841D3495077} = {5632E2B3-5592-4C6A-9493-768E5B04804D}
+ {74E86B03-F185-47B2-A4C3-04C1CEC84F14} = {5632E2B3-5592-4C6A-9493-768E5B04804D}
+ {731DE36F-27F5-48B8-865D-DA43C8910010} = {5632E2B3-5592-4C6A-9493-768E5B04804D}
+ {87D957E4-FE12-4432-9B7B-827A98DD41D1} = {19F68F40-2A05-48EB-86F0-56928B3CCE9C}
+ {2F71D6DF-F19A-410C-BD79-F2F871E63902} = {19F68F40-2A05-48EB-86F0-56928B3CCE9C}
+ {698D9FFA-080C-4F22-9FBF-B9509B28A954} = {19F68F40-2A05-48EB-86F0-56928B3CCE9C}
+ {521D17FF-BD3A-43B4-9BEE-183FDE3522F4} = {19F68F40-2A05-48EB-86F0-56928B3CCE9C}
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {220123E7-A888-4DE7-8F9A-8FE271543889}
+ EndGlobalSection
+EndGlobal
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/Directory.Build.props" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/Directory.Build.props"
new file mode 100644
index 0000000..452a106
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/Directory.Build.props"
@@ -0,0 +1,66 @@
+<Project>
+ <!-- C# compiler options (https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/) -->
+ <PropertyGroup>
+ <!-- Nullable (https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/language#nullable) -->
+ <Nullable>disable</Nullable>
+ <Deterministic>true</Deterministic>
+ <!-- report errors and warnings (https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/errors-warnings) -->
+ <WarningLevel>5</WarningLevel>
+ </PropertyGroup>
+
+ <!-- Generated file properties (https://docs.microsoft.com/en-us/dotnet/core/project-sdk/msbuild-props#generated-file-properties) -->
+ <PropertyGroup>
+ <ImplicitUsings>enable</ImplicitUsings>
+ </PropertyGroup>
+
+ <!-- Code analysis properties (https://docs.microsoft.com/en-us/dotnet/core/project-sdk/msbuild-props#code-analysis-properties) -->
+ <PropertyGroup>
+ <EnableNETAnalyzers>true</EnableNETAnalyzers>
+ <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
+ <AnalysisMode>All</AnalysisMode>
+ <AnalysisLevel>latest</AnalysisLevel>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <AdditionalFiles Include="$([MSBuild]::GetPathOfFileAbove('stylecop.json'))" Visible="false" />
+ </ItemGroup>
+
+ <!-- Dependencies -->
+ <ItemGroup Condition="$(MSBuildProjectExtension) == '.csproj'" >
+ <PackageReference Include="SonarAnalyzer.CSharp" Version="8.32.0.39516" PrivateAssets="all" />
+ <PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />
+ <PackageReference Include="Roslynator.Analyzers" Version="3.3.0" PrivateAssets="all" />
+ </ItemGroup>
+
+ <PropertyGroup Condition=" '$(Configuration)' == 'Debug'">
+ <DefineConstants>$(DefineConstants);DEBUG;TRACE</DefineConstants>
+ <Optimize>false</Optimize>
+ <NullableReferenceTypes>true</NullableReferenceTypes>
+ <!-- report errors and warnings (https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/errors-warnings) -->
+ <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
+ <CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(Configuration)' == 'Release'">
+ <DefineConstants>$(DefineConstants);RELEASE</DefineConstants>
+ <Optimize>true</Optimize>
+ <!-- report errors and warnings (https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/errors-warnings) -->
+ <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
+ <CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
+ </PropertyGroup>
+
+ <!-- Import reference package -->
+ <Import Project="package.reference.props" />
+
+ <!-- Test Project coverlet collector -->
+ <PropertyGroup>
+ <IsTestProject Condition="$(MSBuildProjectFullPath.Contains('test')) and ($(MSBuildProjectName.EndsWith('.Tests')) or $(MSBuildProjectName.EndsWith('.TestBase')))">true</IsTestProject>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Condition="'$(IsTestProject)' == 'true'" Include="coverlet.collector" Version="3.1.0">
+ <PrivateAssets>all</PrivateAssets>
+ <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
+ </PackageReference>
+ </ItemGroup>
+</Project>
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/NuGet.config" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/NuGet.config"
new file mode 100644
index 0000000..0132a23
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/NuGet.config"
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+ <packageSources>
+ <clear />
+ <add key="nexus" value="https://nexus.sycdev.com/repository/nuget-group/index.json" />
+ <add key="nuget" value="https://api.nuget.org/v3/index.json" />
+ </packageSources>
+</configuration>
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/README.md" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/README.md"
new file mode 100644
index 0000000..0d362f3
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/README.md"
@@ -0,0 +1,2 @@
+# HIAWms
+
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/common.props" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/common.props"
new file mode 100644
index 0000000..5553c93
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/common.props"
@@ -0,0 +1,18 @@
+<Project>
+ <PropertyGroup>
+ <Company>SYC</Company>
+ <Copyright>Copyright 漏 SYC. All rights reserved.</Copyright>
+ <NoWarn>$(NoWarn);CS1591</NoWarn>
+ <VersionMajor>1</VersionMajor>
+ <VersionMinor>0</VersionMinor>
+ <VersionPatch>0</VersionPatch>
+ <VersionPrefix>$(VersionMajor).$(VersionMinor).$(VersionPatch)</VersionPrefix>
+ <!--<VersionSuffix>-preview1</VersionSuffix>-->
+ <Version>$(VersionPrefix)$(VersionSuffix)</Version>
+ <AssemblyVersion>$(VersionMajor).0.0.0</AssemblyVersion>
+ <LangVersion>latest</LangVersion>
+ <GenerateDocumentationFile>true</GenerateDocumentationFile>
+ <!-- Include symbol files (*.pdb) in the built .nupkg -->
+ <AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
+ </PropertyGroup>
+</Project>
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/common.test.props" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/common.test.props"
new file mode 100644
index 0000000..e90103e
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/common.test.props"
@@ -0,0 +1,10 @@
+<Project>
+ <PropertyGroup>
+ <LangVersion>latest</LangVersion>
+ <NoWarn>$(NoWarn);CS1591</NoWarn>
+ <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
+ <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
+ <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
+ <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
+ </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/configureawait.props" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/configureawait.props"
new file mode 100644
index 0000000..92f22f8
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/configureawait.props"
@@ -0,0 +1,9 @@
+<Project>
+ <ItemGroup>
+ <PackageReference Include="ConfigureAwait.Fody" Version="3.3.1" PrivateAssets="All" />
+ <PackageReference Include="Fody" Version="6.6.1">
+ <PrivateAssets>All</PrivateAssets>
+ <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
+ </PackageReference>
+ </ItemGroup>
+</Project>
\ No newline at end of file
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/delete-bin-obj-folders.bat" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/delete-bin-obj-folders.bat"
new file mode 100644
index 0000000..02cfaa5
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/delete-bin-obj-folders.bat"
@@ -0,0 +1,20 @@
+@ECHO off
+cls
+
+ECHO Deleting all BIN and OBJ folders...
+ECHO.
+
+FOR /d /r . %%d in (bin,obj) DO (
+ IF EXIST "%%d" (
+ ECHO %%d | FIND /I "\node_modules\" > Nul && (
+ ECHO.Skipping: %%d
+ ) || (
+ ECHO.Deleting: %%d
+ rd /s/q "%%d"
+ )
+ )
+)
+
+ECHO.
+ECHO.BIN and OBJ folders have been successfully deleted. Press any key to exit.
+pause > nul
\ No newline at end of file
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/doc/Domain-Drive-Design.md" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/doc/Domain-Drive-Design.md"
new file mode 100644
index 0000000..27d458c
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/doc/Domain-Drive-Design.md"
@@ -0,0 +1,63 @@
+# 棰嗗煙妯″瀷璁捐
+
+## 涓�銆佹湳璇笌瀹氫箟
+
+| 鑻辨枃缂╁啓 | 鑻辨枃鍏ㄧО | 涓枃缈昏瘧 |
+| -------- | -------- | -------- |
+| | | |
+
+## 浜屻�佷笟鍔℃祦绋�
+
+涓嶆秹鍙�
+
+## 涓夈�佹暟鎹被鍨�
+
+鏁版嵁绫诲瀷閲囩敤鐨勬槸C#鐨勬暟鎹被鍨嬶紝涓昏鏈変笅闈㈢殑涓�浜涚被鍨嬶細
+
+| 鏁版嵁绫诲瀷 | 鍚箟 | 鏈�灏忓��/鏈�澶у��/绮惧害 | 鍗犵敤绌洪棿 | 璇存槑 |
+| -------------- | -------------- | ------------------------------------------------------------ | ------------- | -------------------------------- |
+| bool | 甯冨皵鍊� | false/true | 1瀛楄妭 | |
+| sbyte | 瓒呯煭鏁村瀷 | -128127 | 1瀛楄妭 | |
+| byte | 鏃犵鍙疯秴鐭暣鍨� | 0255 | 1瀛楄妭 | |
+| short | 鐭暣鍨� | -32,76832,767 | 2瀛楄妭 | |
+| ushort | 鏃犵鍙风煭鏁村瀷 | 065,535 | 2瀛楄妭 | |
+| int | 鏁村瀷 | -2,147,483,6482,147,483,647 | 4瀛楄妭 | |
+| uint | 鏃犵鍙锋暣鍨� | 04,294,967,295 | 4瀛楄妭 | |
+| long | 闀挎暣鍨� | -9,223,372,036,854,775,8089,223,372,036,854,775,807 | 8瀛楄妭 | |
+| ulong | 鏃犵鍙烽暱鏁村瀷 | 0/18,446,744,073,709,551,615 | 8瀛楄妭 | |
+| float | 鍗曠簿搴︽诞鐐规暟 | -3.40282347E+38/F3.40282347E+38F/6~7浣嶆湁鏁堟暟瀛� | 4瀛楄妭 | |
+| double | 鍙岀簿搴︽诞鐐规暟 | -1.7976931348623157E+308/1.7976931348623157E+308/15~16浣嶆湁鏁堟暟瀛� | 8瀛楄妭 | |
+| DateTime | 鏃ユ湡鏃堕棿 | 0000-01-01 00:00:00.0000000/9999-12-31 23:59:59.9999999/100ns | 8瀛楄妭 | 缁熶竴浣跨敤UTC鏃堕棿杩涜浼犺緭鍜屽瓨鍌ㄣ�� |
+| TimeSpan | 鏃堕棿璺ㄥ害 | -10,675,199.02:48:05.4775808/10,675,199.02:48:05.4775807100ns | 8瀛楄妭 | |
+| string | 瀛楃涓� | | n瀛楄妭 | 缁熶竴浣跨敤UTF8缂栫爜杩涜浼犺緭鍜屽瓨鍌ㄣ�� |
+| Complex | 澶嶆暟 | | 16瀛楄妭 | |
+| IList<T> | 鍒楄〃 | [0]~[n-1] | n * sizeof(T) | |
+| ICollection<T> | 闆嗗悎 | | n * sizeof(T) | 涓嶪List绫讳技锛屽彧鏄病鏈夐『搴忓叧绯汇�� |
+
+## 鍥涖�佸疄浣擄紙Entity锛夊強鑱氬悎鏍癸紙AggregateRoot锛�
+
+瀹炰綋鏄ā鍨嬩腑闇�瑕佸尯鍒嗕釜浣撶殑瀵硅薄锛屾嫢鏈夋爣璇嗐�佹暟鎹拰琛屼负銆傚疄浣撴湁鏍囪瘑锛屽厑璁稿彉鍖栵紝鍒ゆ柇涓や釜瀹炰綋鐩哥瓑鐨勬爣鍑嗘槸鏍囪瘑鐩哥瓑銆傝仛鍚堬紙Aggregate锛夎〃绀轰竴缁勯鍩熷璞★紙鍖呮嫭瀹炰綋鍜屽�煎璞★級锛岀敤鏉ヨ〃杩颁竴涓畬鏁寸殑棰嗗煙姒傚康銆傝�屾瘡涓仛鍚堥兘鏈変竴涓牴瀹炰綋锛岃繖涓牴瀹炰綋鍙堝彨鍋氳仛鍚堟牴銆傝仛鍚堟牴鏄仛鍚堟墍琛ㄨ堪鐨勯鍩熸蹇电殑涓讳綋锛屽閮ㄥ璞¢渶瑕佽闂仛鍚堝唴鐨勫疄浣撴椂锛屽彧鑳介�氳繃鑱氬悎鏍硅繘琛岃闂紝鑰屼笉鑳界洿鎺ヨ闂��
+
+## 浜斻�佹灇涓�
+
+
+## 鍏�佸�煎璞★紙ValueObject锛�
+
+鍊煎璞℃槸閫氳繃灞炴�ф潵璇嗗埆鐨勫璞★紝瀹冨皢澶氫釜鐩稿叧灞炴�х粍鍚堜负涓�涓蹇垫暣浣撱�傚�煎璞℃病鏈夋爣璇嗭紝涓嶅厑璁稿彉鍖栵紝鍒ゆ柇涓や釜鍊煎璞$浉绛夌殑鏍囧噯鏄�煎璞″唴閮ㄦ墍鏈夊睘鎬у�肩浉绛夈��
+
+
+## 鍏�侀鍩熸湇鍔�
+
+涓嶆秹鍙�
+
+## 涓冦�侀鍩熶簨浠�
+
+涓嶆秹鍙�
+
+## 鍏�佸叾浠�
+
+涓嶆秹鍙�
+
+## 涔濄�佸弬鑰冨紩鐢�
+
+涓嶆秹鍙�
\ No newline at end of file
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/package.reference.props" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/package.reference.props"
new file mode 100644
index 0000000..1adc7aa
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/package.reference.props"
@@ -0,0 +1,30 @@
+<Project>
+ <PropertyGroup>
+ <!-- All Microsoft packages -->
+ <MicrosoftPackageVersion>6.0.0</MicrosoftPackageVersion>
+
+ <!-- All Abp packages -->
+ <ABPPackageVersion>6.0.0</ABPPackageVersion>
+
+ <!-- All LMES packages -->
+ <LMESPackageVersion>2.3.*</LMESPackageVersion>
+
+ <!-- Microsoft.NET.Test.Sdk https://www.nuget.org/packages/Microsoft.NET.Test.Sdk -->
+ <MicrosoftNETTestSdkPackageVersion>16.11.0</MicrosoftNETTestSdkPackageVersion>
+
+ <!-- NSubstitute https://www.nuget.org/packages/NSubstitute -->
+ <NSubstitutePackageVersion>4.2.2</NSubstitutePackageVersion>
+
+ <!-- Shouldly https://www.nuget.org/packages/Shouldly -->
+ <ShouldlyPackageVersion>4.0.3</ShouldlyPackageVersion>
+
+ <!-- xunit https://www.nuget.org/packages/xUnit -->
+ <xUnitPackageVersion>2.4.1</xUnitPackageVersion>
+
+ <!-- xunit.extensibility.execution https://www.nuget.org/packages/xunit.extensibility.execution -->
+ <xUnitExtensibilityExecutionPackageVersion>2.4.1</xUnitExtensibilityExecutionPackageVersion>
+
+ <!-- xunit.runner.visualstudio https://www.nuget.org/packages/xunit.runner.visualstudio -->
+ <xUnitRunnerVisualstudioPackageVersion>2.4.3</xUnitRunnerVisualstudioPackageVersion>
+ </PropertyGroup>
+</Project>
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/publish.ps1" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/publish.ps1"
new file mode 100644
index 0000000..21763a8
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/publish.ps1"
@@ -0,0 +1,38 @@
+# publishFolder
+$publishFolder= $args[0]
+
+# Paths
+$rootFolder = (Get-Item -Path "./" -Verbose).FullName
+if ([String]::IsNullOrEmpty($publishFolder)) {
+ $publishFolder = Join-Path $rootFolder "output/publish"
+ $hasPath = Test-Path($publishFolder)
+ if (-Not $hasPath) {
+ new-item -path $rootFolder -name "output/publish" -type directory
+ }
+}
+Write-Host ("Publish Output " + $publishFolder)
+
+# List of projects
+$projects = (
+ "src/CMS.Plugin.HIAWms"
+)
+
+# Rebuild solution
+Set-Location $rootFolder
+dotnet restore -s https://nexus.sycdev.com/repository/nuget-hosted/ --runtime win-x64
+# dotnet restore --configfile NuGet.config --runtime win-x64
+Write-Host ("Restore Completed ! ")
+# Publish all projects
+foreach($project in $projects) {
+ $projectFolder = Join-Path $rootFolder $project
+ $projectName = $project.Substring($project.LastIndexOf("/") + 1)
+ Set-Location $projectFolder
+ Write-Host ("Publish " + $projectName)
+ # & dotnet publish ($projectName + ".csproj ") --configuration Release --output (Join-Path $publishFolder ("/" + $projectName.ToLower())) --nologo --verbosity quiet --no-restore
+ & dotnet publish ($projectName + ".csproj ") --configuration Release --output (Join-Path $publishFolder ("/" + $projectName.ToLower())) --nologo --verbosity quiet --no-restore --runtime win-x64
+}
+
+Write-Host ("Publish Completed ! ")
+
+# Go back to the root folder
+Set-Location $rootFolder
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMS.Plugin.HIAWms.Abstractions.csproj" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMS.Plugin.HIAWms.Abstractions.csproj"
new file mode 100644
index 0000000..c235795
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMS.Plugin.HIAWms.Abstractions.csproj"
@@ -0,0 +1,27 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <Import Project="../../common.props" />
+ <Import Project="../../configureawait.props" />
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <EnableDynamicLoading>true</EnableDynamicLoading>
+ <ProduceReferenceAssembly>false</ProduceReferenceAssembly>
+ <GenerateDocumentationFile>true</GenerateDocumentationFile>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="CMS.Plugin.FlowManagement.Abstractions" Version="$(LMESPackageVersion)" />
+ <PackageReference Include="CMS.Plugin.BarcodeManagement.Abstractions" Version="$(LMESPackageVersion)" />
+ <PackageReference Include="CMS.Plugin.FormulaManagement.Abstractions" Version="$(LMESPackageVersion)" />
+ <PackageReference Include="CMS.Plugin.MaterialManagement.Abstractions" Version="$(LMESPackageVersion)" />
+ <PackageReference Include="CMS.Plugin.ProductManagement.Abstractions" Version="$(LMESPackageVersion)" />
+ <PackageReference Include="CMS.Plugin.ProductionManagement.Abstractions" Version="$(LMESPackageVersion)" />
+ <PackageReference Include="CMS.Plugin.ProcessManagement.Abstractions" Version="$(LMESPackageVersion)" />
+ <PackageReference Include="CMS.Plugin.ProductManagement.Abstractions" Version="$(LMESPackageVersion)" />
+ <PackageReference Include="CMS.Plugin.QualityManagement.Abstractions" Version="$(LMESPackageVersion)" />
+ <PackageReference Include="CMS.Plugin.OrderManagement.Abstractions" Version="$(LMESPackageVersion)" />
+ <PackageReference Include="CMS.Plugin.TraceManagement.Abstractions" Version="$(LMESPackageVersion)" />
+ </ItemGroup>
+
+</Project>
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsAbstractionsModule.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsAbstractionsModule.cs"
new file mode 100644
index 0000000..2d0832a
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsAbstractionsModule.cs"
@@ -0,0 +1,8 @@
+namespace CMS.Plugin.HIAWms.Abstractions;
+
+/// <summary>
+/// 娴佺▼涓氬姟鎵╁睍妯″潡
+/// </summary>
+public class CMSPluginHIAWmsAbstractionsModule
+{
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsExtensions.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsExtensions.cs"
new file mode 100644
index 0000000..ec752e7
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsExtensions.cs"
@@ -0,0 +1,30 @@
+using Microsoft.Extensions.DependencyInjection;
+
+namespace CMS.Plugin.HIAWms.Abstractions
+{
+ /// <summary>
+ /// 鎵╁睍鏂规硶
+ /// </summary>
+ public static class CMSPluginHIAWmsExtensions
+ {
+ /// <summary>
+ /// Tries the add setting management.
+ /// </summary>
+ /// <param name="services">The services.</param>
+ /// <param name="configureOptions">The configure options.</param>
+ /// <returns></returns>
+ public static IServiceCollection TryAddHIAWms(this IServiceCollection services, Action<CMSPluginHIAWmsOptions>? configureOptions = null)
+ {
+ if (configureOptions == null)
+ {
+ services.AddOptions().Configure<CMSPluginHIAWmsOptions>(options => {});
+ }
+ else
+ {
+ services.AddOptions().PostConfigure(configureOptions);
+ }
+
+ return services;
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsFeatures.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsFeatures.cs"
new file mode 100644
index 0000000..050a6d2
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsFeatures.cs"
@@ -0,0 +1,23 @@
+namespace CMS.Plugin.HIAWms.Abstractions
+{
+ /// <summary>
+ /// 鍔熻兘瀹氫箟.
+ /// </summary>
+ public class CMSPluginHIAWmsFeatures
+ {
+ /// <summary>
+ /// The prefix
+ /// </summary>
+ private const string Prefix = "LMES";
+
+ /// <summary>
+ /// GroupName
+ /// </summary>
+ public const string GroupName = Prefix + ".HIAWms";
+
+ /// <summary>
+ /// 鏄惁寮�鍚�
+ /// </summary>
+ public const string Enable = GroupName + ".Enable";
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsOptions.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsOptions.cs"
new file mode 100644
index 0000000..3465a0f
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsOptions.cs"
@@ -0,0 +1,16 @@
+using CMS.Plugin.MesSuite.Abstractions.Models;
+
+namespace CMS.Plugin.HIAWms.Abstractions
+{
+ public class CMSPluginHIAWmsOptions
+ {
+ public CMSPluginHIAWmsOptions()
+ {
+ }
+
+ /// <summary>
+ /// 鎵╁睍灞炴��
+ /// </summary>
+ public List<ExtraProperty> ExtraProperties { get; set; } = new();
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsSettings.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsSettings.cs"
new file mode 100644
index 0000000..529e94d
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsSettings.cs"
@@ -0,0 +1,23 @@
+namespace CMS.Plugin.HIAWms.Abstractions
+{
+ /// <summary>
+ /// CMSSettingNames
+ /// </summary>
+ public static class CMSPluginHIAWmsSettings
+ {
+ /// <summary>
+ /// The prefix
+ /// </summary>
+ private const string Prefix = "SCMS";
+
+ /// <summary>
+ /// The application settings prefix
+ /// </summary>
+ private const string AppSettingsPrefix = Prefix + ".AppSettings";
+
+ /// <summary>
+ /// 缁勪欢鐘舵�侊細0=鍏抽棴,1=寮�鍚�
+ /// </summary>
+ public const string PluginState = AppSettingsPrefix + ".HIAWms.PluginState";
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/FodyWeavers.xml" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/FodyWeavers.xml"
new file mode 100644
index 0000000..9a2e2c4
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/FodyWeavers.xml"
@@ -0,0 +1,3 @@
+锘�<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
+ <ConfigureAwait ContinueOnCapturedContext="false" />
+</Weavers>
\ No newline at end of file
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/HIAWmsActivity.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/HIAWmsActivity.cs"
new file mode 100644
index 0000000..7f34cb0
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/HIAWmsActivity.cs"
@@ -0,0 +1,78 @@
+using System.ComponentModel;
+using System.Runtime.Serialization;
+using CMS.Plugin.FlowManagement.Abstractions.Enums;
+using CMS.Plugin.FlowManagement.Abstractions.FlowBusiness.Activitys;
+using CMS.Plugin.MesSuite.Abstractions.Models;
+using CMS.Plugin.OrderManagement.Abstractions.Models;
+using CMS.Plugin.ProcessManagement.Abstractions.Models;
+using CMS.Plugin.TraceManagement.Abstractions.Models.Traces;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using SYC.Flow.Kernel;
+
+namespace CMS.Plugin.HIAWms.Abstractions
+{
+ /// <summary>
+ /// HIAWms 涓氬姟姝ラ
+ /// </summary>
+ [Design("HIAWms", "HIAWms 涓氬姟姝ラ", Sort = 99), Category("瀹氬埗姝ラ")]
+ [Serializable]
+ public class HIAWmsActivity : BusinessActivity
+ {
+ /// <summary>
+ /// 閰嶇疆灞炴��1
+ /// </summary>
+ [Design("閰嶇疆灞炴��1", "閰嶇疆灞炴��1", Sort = 1), Category("閰嶇疆淇℃伅")]
+ [DataMember]
+ public string MyProperty1 { get; set; }
+
+ /// <summary>
+ /// 閰嶇疆灞炴��2
+ /// </summary>
+ [Design("閰嶇疆灞炴��2", "閰嶇疆灞炴��2", Sort = 2), Category("閰嶇疆淇℃伅")]
+ [DataMember]
+ public int MyProperty2 { get; set; }
+
+ /// <summary>
+ /// 娴佺▼涓婁笅鏂囨爣璇嗛泦鍚�
+ /// </summary>
+ public override List<FlowItemKey> FlowItemKeys => GetFlowItemKeys();
+
+ /// <summary>
+ /// 宸ヨ壓娴佺▼澶勭悊
+ /// </summary>
+ public override async Task ProcessAsync(ProcessflowEventArgs args)
+ {
+ // 宸ヨ壓妯″瀷
+ var processModel = Flow.DataItems.ApplicationData as ProcessModel;
+
+ // 宸ュ崟妯″瀷
+ var orderModel = Flow.DataItems[FlowItemCollection.OrderModel] as OrderModel;
+
+ // 浜у搧妯″瀷
+ var productModel = Flow.DataItems[FlowItemCollection.ProductModel] as AssociationProductModel;
+
+ // 杩芥函妯″瀷
+ var traceModel = Flow.DataItems[FlowItemCollection.TraceModel] as TraceModel;
+
+ Flow.Logger.LogInformation($"鎵ц娴佺▼锛氬疄渚�={Flow.Instance.ProcID} -> {Flow.Name} -> {Name} HIAWmsActivity");
+
+ // 涓氬姟澶勭悊
+ // 鐢变簬ServiceProvider鏉ユ簮浜嶧low缁勪欢锛屾澶勯渶鍏变韩CMS.Plugin.HIAWms.Abstractions绋嬪簭闆嗭紝鍚﹀垯鏃犳硶璋冪敤锛屼慨鏀笴MS.Plugin.HIAWms椤圭洰涓殑CMSPluginModule.cs鏂囦欢锛屽彇娑堟敞閲奊etSharedAssemblies()鏂规硶
+ var hiawmsFlowService = Flow.ServiceProvider.GetService<IHIAWmsFlowService>();
+ if (hiawmsFlowService != null)
+ {
+ await hiawmsFlowService.ProcessAsync(args);
+ }
+ }
+
+ /// <summary>
+ /// Gets the flow item keys.
+ /// </summary>
+ protected virtual List<FlowItemKey> GetFlowItemKeys()
+ {
+ var result = new List<FlowItemKey>();
+ return result;
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/IHIAWmsFlowService.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/IHIAWmsFlowService.cs"
new file mode 100644
index 0000000..665760d
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/IHIAWmsFlowService.cs"
@@ -0,0 +1,15 @@
+using SYC.Flow.Kernel;
+
+namespace CMS.Plugin.HIAWms.Abstractions
+{
+ /// <summary>
+ /// HIAWms 娴佺▼鏈嶅姟
+ /// </summary>
+ public interface IHIAWmsFlowService
+ {
+ /// <summary>
+ /// 宸ヨ壓娴佺▼澶勭悊
+ /// </summary>
+ Task ProcessAsync(ProcessflowEventArgs args);
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/Properties/AssemblyInfo.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/Properties/AssemblyInfo.cs"
new file mode 100644
index 0000000..bc9e47d
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/Properties/AssemblyInfo.cs"
@@ -0,0 +1,3 @@
+using SYC.Flow.Kernel;
+
+[assembly: ProcessflowExtention(true)]
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/CMS.Plugin.HIAWms.Application.Contracts.csproj" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/CMS.Plugin.HIAWms.Application.Contracts.csproj"
new file mode 100644
index 0000000..7fcf052
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/CMS.Plugin.HIAWms.Application.Contracts.csproj"
@@ -0,0 +1,27 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <Import Project="../../common.props" />
+ <Import Project="../../configureawait.props" />
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <GenerateDocumentationFile>True</GenerateDocumentationFile>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Volo.Abp.Ddd.Application.Contracts" Version="$(ABPPackageVersion)" />
+ <PackageReference Include="Volo.Abp.Authorization.Abstractions" Version="$(ABPPackageVersion)" />
+ <PackageReference Include="MiniExcel" Version="1.31.3" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\CMS.Plugin.HIAWms.Domain.Shared\CMS.Plugin.HIAWms.Domain.Shared.csproj" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <Reference Include="CmsQueryExtensions">
+ <HintPath>..\..\..\..\..\CommonDLL\CmsQueryExtensions.dll</HintPath>
+ </Reference>
+ </ItemGroup>
+
+</Project>
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/CMSPluginApplicationContractsModule.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/CMSPluginApplicationContractsModule.cs"
new file mode 100644
index 0000000..ab20de8
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/CMSPluginApplicationContractsModule.cs"
@@ -0,0 +1,21 @@
+using CMS.Plugin.HIAWms.Domain.Shared;
+using Volo.Abp.Application;
+using Volo.Abp.Modularity;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts;
+
+/// <summary>
+/// 鎻掍欢搴旂敤鏈嶅姟濂戠害妯″潡
+/// </summary>
+[DependsOn(
+ typeof(CMSPluginDomainSharedModule),
+ typeof(AbpDddApplicationContractsModule)
+)]
+public class CMSPluginApplicationContractsModule : AbpModule
+{
+ /// <inheritdoc />
+ public override void PreConfigureServices(ServiceConfigurationContext context)
+ {
+ CMSPluginDtoExtensions.Configure();
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/CMSPluginDtoExtensions.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/CMSPluginDtoExtensions.cs"
new file mode 100644
index 0000000..5bea721
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/CMSPluginDtoExtensions.cs"
@@ -0,0 +1,32 @@
+using Volo.Abp.Threading;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts;
+
+/// <summary>
+/// Dto鎵╁睍
+/// </summary>
+public static class CMSPluginDtoExtensions
+{
+ private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner();
+
+ /// <summary>
+ /// Configures this instance.
+ /// </summary>
+ public static void Configure()
+ {
+ OneTimeRunner.Run(() =>
+ {
+ /* You can add extension properties to DTOs
+ * defined in the depended modules.
+ *
+ * Example:
+ *
+ * ObjectExtensionManager.Instance
+ * .AddOrUpdateProperty<IdentityRoleDto, string>("Title");
+ *
+ * See the documentation for more:
+ * https://docs.abp.io/en/abp/latest/Object-Extensions
+ */
+ });
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/GetWmsAreasInput.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/GetWmsAreasInput.cs"
new file mode 100644
index 0000000..a8f4ccc
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/GetWmsAreasInput.cs"
@@ -0,0 +1,50 @@
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
+using Volo.Abp.Application.Dtos;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsAreas;
+
+/// <summary>
+/// WmsArea鏌ヨ鍙傛暟瀵硅薄
+/// </summary>
+public class GetWmsAreasInput : 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>
+ /// 搴撳尯缂栧彿
+ /// </summary>
+ public string AreaNo { get; set; }
+
+ /// <summary>
+ /// 搴撳尯鍚嶇О
+ /// </summary>
+ public string AreaName { get; set; }
+
+ /// <summary>
+ /// 鎻忚堪
+ /// </summary>
+ public string? AreaDesc { get; set; }
+
+ /// <summary>
+ /// 搴撳尯鐘舵��
+ /// </summary>
+ public AreaStatusEnum AreaStatus { get; set; }
+
+ /// <summary>
+ /// 搴撳尯绫诲瀷
+ /// </summary>
+ public AreaTypeEnum AreaType { get; set; }
+
+ /// <summary>
+ /// 浠撳簱浠g爜
+ /// </summary>
+ public string? StoreCode { get; set; }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaCreateDto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaCreateDto.cs"
new file mode 100644
index 0000000..eaa43d2
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaCreateDto.cs"
@@ -0,0 +1,17 @@
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsAreas;
+
+/// <summary>
+/// WmsArea鍒涘缓鍙傛暟瀵硅薄
+/// </summary>
+public class WmsAreaCreateDto : WmsAreaCreateOrUpdateDtoBase
+{
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public virtual int? Sort { get; set; }
+
+ /// <summary>
+ /// 鏄惁绂佺敤
+ /// </summary>
+ public bool? IsDisabled { get; set; } = false;
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaCreateOrUpdateDtoBase.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaCreateOrUpdateDtoBase.cs"
new file mode 100644
index 0000000..632c8e7
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaCreateOrUpdateDtoBase.cs"
@@ -0,0 +1,89 @@
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
+using Volo.Abp.Application.Dtos;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsAreas;
+
+/// <summary>
+/// WmsArea鍒涘缓鎴栨洿鏂板熀绫�
+/// </summary>
+public abstract class WmsAreaCreateOrUpdateDtoBase : ExtensibleEntityDto
+{
+ /// <summary>
+ /// 搴撳尯缂栧彿
+ /// </summary>
+ public string AreaNo { get; set; }
+
+ /// <summary>
+ /// 搴撳尯鍚嶇О
+ /// </summary>
+ public string AreaName { get; set; }
+
+ /// <summary>
+ /// 鎻忚堪
+ /// </summary>
+ public string? AreaDesc { get; set; }
+
+ /// <summary>
+ /// 搴撳尯鐘舵��
+ /// </summary>
+ public AreaStatusEnum AreaStatus { get; set; }
+
+ /// <summary>
+ /// 搴撳尯绫诲瀷
+ /// </summary>
+ public AreaTypeEnum AreaType { get; set; }
+
+ /// <summary>
+ /// 浠撳簱浠g爜
+ /// </summary>
+ public string? StoreCode { get; set; }
+
+ /// <summary>
+ /// 浠撳簱鍚嶇О
+ /// </summary>
+ public string? StoreName { 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="WmsAreaCreateOrUpdateDtoBase"/> class.
+ /// </summary>
+ public WmsAreaCreateOrUpdateDtoBase() : base(false)
+ {
+ }
+
+
+ /// <summary>
+ /// 搴撳尯鍒楄〃
+ /// </summary>
+ public class AreaForListOuptut
+ {
+ /// <summary>
+ /// 搴撳尯缂栧彿
+ /// </summary>
+ public string AreaNo { get; set; }
+
+ /// <summary>
+ /// 搴撳尯鍚嶇О
+ /// </summary>
+ public string AreaName { get; set; }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaDto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaDto.cs"
new file mode 100644
index 0000000..9d5615c
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaDto.cs"
@@ -0,0 +1,108 @@
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.Domain.Entities;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsAreas;
+
+/// <summary>
+/// WmsArea鏁版嵁鍙傛暟瀵硅薄
+/// </summary>
+public class WmsAreaDto : ExtensibleEntityDto<Guid>, IHasConcurrencyStamp
+{
+ /// <summary>
+ /// 搴撳尯缂栧彿
+ /// </summary>
+ public string AreaNo { get; set; }
+
+ /// <summary>
+ /// 搴撳尯鍚嶇О
+ /// </summary>
+ public string AreaName { get; set; }
+
+ /// <summary>
+ /// 鎻忚堪
+ /// </summary>
+ public string? AreaDesc { get; set; }
+
+ /// <summary>
+ /// 搴撳尯鐘舵��
+ /// </summary>
+ public AreaStatusEnum AreaStatus { get; set; }
+
+ /// <summary>
+ /// 搴撳尯鐘舵��
+ /// </summary>
+ public string AreaStatusDesc
+ {
+ get
+ {
+ return GetEnumDescriptionUtil.GetEnumDescription(AreaStatus);
+ }
+ }
+
+ /// <summary>
+ /// 搴撳尯绫诲瀷
+ /// </summary>
+ public AreaTypeEnum AreaType { get; set; }
+
+ /// <summary>
+ /// 搴撳尯鐘舵��
+ /// </summary>
+ public string AreaTypeDesc
+ {
+ get
+ {
+ return GetEnumDescriptionUtil.GetEnumDescription(AreaType);
+ }
+ }
+
+ /// <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>
+ /// 骞跺彂鎴�
+ /// </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/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaUpdateDto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaUpdateDto.cs"
new file mode 100644
index 0000000..972ed36
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaUpdateDto.cs"
@@ -0,0 +1,14 @@
+using Volo.Abp.Domain.Entities;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsAreas;
+
+/// <summary>
+/// WmsArea鏇存柊鍙傛暟瀵硅薄
+/// </summary>
+public class WmsAreaUpdateDto : WmsAreaCreateOrUpdateDtoBase, IHasConcurrencyStamp
+{
+ /// <summary>
+ /// 骞跺彂鎴�
+ /// </summary>
+ public string ConcurrencyStamp { get; set; }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreasExportModel.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreasExportModel.cs"
new file mode 100644
index 0000000..d0d841b
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreasExportModel.cs"
@@ -0,0 +1,89 @@
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
+using MiniExcelLibs.Attributes;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsAreas
+{
+ /// <summary>
+ /// WmsAreas瀵煎嚭妯″瀷
+ /// </summary>
+ public class WmsAreasExportModel
+ {
+ /// <summary>
+ /// WmsArea瀵煎嚭妯″瀷
+ /// </summary>
+ public class WorkSectionExportModel
+ {
+ /// <summary>
+ /// 鑾峰彇鎴栬缃簱鍖虹紪鍙�
+ /// </summary>
+ /// <example>WH-AREA-001</example>
+ [ExcelColumn(Name = "搴撳尯缂栧彿", Width = 20)]
+ public string AreaNo { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鎴栬缃簱鍖哄悕绉�
+ /// </summary>
+ /// <example>鍘熸潗鏂橝鍖�</example>
+ [ExcelColumn(Name = "搴撳尯鍚嶇О", Width = 25)]
+ public string AreaName { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鎴栬缃簱鍖烘弿杩颁俊鎭�
+ /// </summary>
+ /// <example>瀛樻斁鐢靛瓙鍏冨櫒浠�</example>
+ [ExcelColumn(Name = "鎻忚堪", Width = 30)]
+ public string AreaDesc { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鎴栬缃簱鍖虹姸鎬�
+ /// </summary>
+ /// <example>Normal</example>
+ [ExcelColumn(Name = "搴撳尯鐘舵��", Width = 15)]
+ public AreaStatusEnum AreaStatus { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鎴栬缃簱鍖虹被鍨�
+ /// </summary>
+ /// <example>Storage</example>
+ [ExcelColumn(Name = "搴撳尯绫诲瀷", Width = 15)]
+ public AreaTypeEnum AreaType { get; set; }
+
+ /// <summary>
+ /// 浠撳簱浠g爜
+ /// </summary
+ [ExcelColumn(Name = "浠撳簱浠g爜", Width = 15)]
+ public string? StoreCode { get; set; }
+
+ /// <summary>
+ /// 浠撳簱鍚嶇О
+ /// </summary>
+ [ExcelColumn(Name = "浠撳簱鍚嶇О", Width = 15)]
+ public string? StoreName { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鎴栬缃鐣欐墿灞曞瓧娈�1
+ /// </summary>
+ /// <example>鑷畾涔夌敤閫�</example>
+ [ExcelColumn(Name = "鎵╁睍瀛楁1", Width = 20)]
+ public string RedundantField1 { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鎴栬缃鐣欐墿灞曞瓧娈�2
+ /// </summary>
+ [ExcelColumn(Name = "鎵╁睍瀛楁2", Width = 20)]
+ public string RedundantField2 { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鎴栬缃鐣欐墿灞曞瓧娈�3
+ /// </summary>
+ [ExcelColumn(Name = "鎵╁睍瀛楁3", Width = 20)]
+ public string RedundantField3 { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [ExcelColumn(Name = "澶囨敞", Width = 25)]
+ public virtual string Remark { get; set; }
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreasImportModel.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreasImportModel.cs"
new file mode 100644
index 0000000..ef41a7b
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreasImportModel.cs"
@@ -0,0 +1,34 @@
+using static CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsAreas.WmsAreasExportModel;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsAreas
+{
+ /// <summary>
+ /// WmsAreas瀵煎叆妯″瀷
+ /// </summary>
+ public class WmsAreasImportModel
+ {
+ private List<WmsAreaImportModel> _wmsareas = new();
+
+ public List<WmsAreaImportModel> WmsAreas
+ {
+ get => _wmsareas;
+ set
+ {
+ _wmsareas = value;
+ var rowIndex = 2;
+ _wmsareas?.ForEach(x => x.RowIndex = rowIndex++);
+ }
+ }
+
+ /// <summary>
+ /// WmsArea瀵煎叆妯″瀷
+ /// </summary>
+ public class WmsAreaImportModel : WorkSectionExportModel
+ {
+ /// <summary>
+ /// 琛屽彿
+ /// </summary>
+ public int RowIndex { get; set; }
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/GetWmsContainersInput.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/GetWmsContainersInput.cs"
new file mode 100644
index 0000000..0380c5e
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/GetWmsContainersInput.cs"
@@ -0,0 +1,35 @@
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
+using Volo.Abp.Application.Dtos;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainers;
+
+/// <summary>
+/// WmsContainer鏌ヨ鍙傛暟瀵硅薄
+/// </summary>
+public class GetWmsContainersInput : 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>
+ /// 鎵樼洏缂栧彿
+ /// </summary>
+ public string ContainerNo { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏绫诲瀷
+ /// </summary>
+ public ContainerTypeEnum ContainerType { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏鐘舵��
+ /// </summary>
+ public ContainerStatusEnum ContainerStatus { get; set; }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerCreateDto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerCreateDto.cs"
new file mode 100644
index 0000000..d8e5d03
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerCreateDto.cs"
@@ -0,0 +1,17 @@
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainers;
+
+/// <summary>
+/// WmsContainer鍒涘缓鍙傛暟瀵硅薄
+/// </summary>
+public class WmsContainerCreateDto : WmsContainerCreateOrUpdateDtoBase
+{
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public virtual int? Sort { get; set; }
+
+ /// <summary>
+ /// 鏄惁绂佺敤
+ /// </summary>
+ public bool? IsDisabled { get; set; } = false;
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerCreateOrUpdateDtoBase.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerCreateOrUpdateDtoBase.cs"
new file mode 100644
index 0000000..b436229
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerCreateOrUpdateDtoBase.cs"
@@ -0,0 +1,99 @@
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
+using Volo.Abp.Application.Dtos;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainers;
+
+/// <summary>
+/// WmsContainer鍒涘缓鎴栨洿鏂板熀绫�
+/// </summary>
+public abstract class WmsContainerCreateOrUpdateDtoBase : ExtensibleEntityDto
+{
+
+ /// <summary>
+ /// 鎵樼洏缂栧彿
+ /// </summary>
+ public string ContainerNo { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏绫诲瀷
+ /// </summary>
+ public ContainerTypeEnum ContainerType { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏鐘舵��
+ /// </summary>
+ public ContainerStatusEnum ContainerStatus { get; set; }
+
+ /// <summary>
+ /// 闀垮害
+ /// </summary>
+ public decimal? SpecLength { get; set; }
+
+ /// <summary>
+ /// 瀹藉害
+ /// </summary>
+ public decimal? SpecWidth { get; set; }
+
+ /// <summary>
+ /// 楂樺害
+ /// </summary>
+ public decimal? SpecHeight { get; set; }
+
+ /// <summary>
+ /// 闄愰暱
+ /// </summary>
+ public decimal? LimitLength { get; set; }
+
+ /// <summary>
+ /// 闄愬
+ /// </summary>
+ public decimal? LimitWidth { get; set; }
+
+ /// <summary>
+ /// 闄愰珮
+ /// </summary>
+ public decimal? LimitHeight { get; set; }
+
+ /// <summary>
+ /// 杞介噸涓婇檺
+ /// </summary>
+ public decimal? MaxWeight { get; set; }
+
+ /// <summary>
+ /// 寮傚父鏁伴噺
+ /// </summary>
+ public int? ExceptionNumber { get; set; }
+
+ /// <summary>
+ ///鐗╂枡鏁伴噺
+ /// </summary>
+ public int? MaterialNumber { 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="WmsContainerCreateOrUpdateDtoBase"/> class.
+ /// </summary>
+ public WmsContainerCreateOrUpdateDtoBase() : base(false)
+ {
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerDto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerDto.cs"
new file mode 100644
index 0000000..38c5b68
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerDto.cs"
@@ -0,0 +1,145 @@
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.Domain.Entities;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainers;
+
+/// <summary>
+/// WmsContainer鏁版嵁鍙傛暟瀵硅薄
+/// </summary>
+public class WmsContainerDto : ExtensibleEntityDto<Guid>, IHasConcurrencyStamp
+{
+
+ /// <summary>
+ /// 鎵樼洏缂栧彿
+ /// </summary>
+ public string ContainerNo { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏绫诲瀷
+ /// </summary>
+ public ContainerTypeEnum ContainerType { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏绫诲瀷
+ /// </summary>
+ public string ContainerTypeDesc
+ {
+ get
+ {
+ return GetEnumDescriptionUtil.GetEnumDescription(ContainerType);
+ }
+ }
+
+ /// <summary>
+ /// 鎵樼洏鐘舵��
+ /// </summary>
+ public ContainerStatusEnum ContainerStatus { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏鐘舵��
+ /// </summary>
+ public string ContainerStatusDesc
+ {
+ get
+ {
+ return GetEnumDescriptionUtil.GetEnumDescription(ContainerStatus);
+ }
+ }
+
+ /// <summary>
+ /// 闀垮害
+ /// </summary>
+ public decimal? SpecLength { get; set; }
+
+ /// <summary>
+ /// 瀹藉害
+ /// </summary>
+ public decimal? SpecWidth { get; set; }
+
+ /// <summary>
+ /// 楂樺害
+ /// </summary>
+ public decimal? SpecHeight { get; set; }
+
+ /// <summary>
+ /// 闄愰暱
+ /// </summary>
+ public decimal? LimitLength { get; set; }
+
+ /// <summary>
+ /// 闄愬
+ /// </summary>
+ public decimal? LimitWidth { get; set; }
+
+ /// <summary>
+ /// 闄愰珮
+ /// </summary>
+ public decimal? LimitHeight { get; set; }
+
+ /// <summary>
+ /// 杞介噸涓婇檺
+ /// </summary>
+ public decimal? MaxWeight { get; set; }
+
+ /// <summary>
+ /// 寮傚父鏁伴噺
+ /// </summary>
+ public int? ExceptionNumber { get; set; }
+
+ /// <summary>
+ ///鐗╂枡鏁伴噺
+ /// </summary>
+ public int? MaterialNumber { 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>
+ /// 骞跺彂鎴�
+ /// </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/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerUpdateDto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerUpdateDto.cs"
new file mode 100644
index 0000000..804744b
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerUpdateDto.cs"
@@ -0,0 +1,14 @@
+using Volo.Abp.Domain.Entities;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainers;
+
+/// <summary>
+/// WmsContainer鏇存柊鍙傛暟瀵硅薄
+/// </summary>
+public class WmsContainerUpdateDto : WmsContainerCreateOrUpdateDtoBase, IHasConcurrencyStamp
+{
+ /// <summary>
+ /// 骞跺彂鎴�
+ /// </summary>
+ public string ConcurrencyStamp { get; set; }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainersExportModel.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainersExportModel.cs"
new file mode 100644
index 0000000..f88d958
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainersExportModel.cs"
@@ -0,0 +1,113 @@
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
+using MiniExcelLibs.Attributes;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainers
+{
+ /// <summary>
+ /// WmsContainers瀵煎嚭妯″瀷
+ /// </summary>
+ public class WmsContainersExportModel
+ {
+ /// <summary>
+ /// WmsContainer瀵煎嚭妯″瀷
+ /// </summary>
+ public class WorkSectionExportModel
+ {
+ /// <summary>
+ /// 鎵樼洏缂栧彿
+ /// </summary>
+ [ExcelColumn(Name = "鎵樼洏缂栧彿", Width = 25)]
+ public string ContainerNo { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏绫诲瀷
+ /// </summary>
+ [ExcelColumn(Name = "鎵樼洏绫诲瀷", Width = 25)]
+ public ContainerTypeEnum ContainerType { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏鐘舵��
+ /// </summary>
+ [ExcelColumn(Name = "鎵樼洏鐘舵��", Width = 25)]
+ public ContainerStatusEnum ContainerStatus { get; set; }
+
+ /// <summary>
+ /// 闀垮害
+ /// </summary>
+ [ExcelColumn(Name = "闀垮害", Width = 25)]
+ public decimal? SpecLength { get; set; }
+
+ /// <summary>
+ /// 瀹藉害
+ /// </summary>
+ [ExcelColumn(Name = "瀹藉害", Width = 25)]
+ public decimal? SpecWidth { get; set; }
+
+ /// <summary>
+ /// 楂樺害
+ /// </summary>
+ [ExcelColumn(Name = "楂樺害", Width = 25)]
+ public decimal? SpecHeight { get; set; }
+
+ /// <summary>
+ /// 闄愰暱
+ /// </summary>
+ [ExcelColumn(Name = "闄愰暱", Width = 25)]
+ public decimal? LimitLength { get; set; }
+
+ /// <summary>
+ /// 闄愬
+ /// </summary>
+ [ExcelColumn(Name = "闄愬", Width = 25)]
+ public decimal? LimitWidth { get; set; }
+
+ /// <summary>
+ /// 闄愰珮
+ /// </summary>
+ [ExcelColumn(Name = "闄愰珮", Width = 25)]
+ public decimal? LimitHeight { get; set; }
+
+ /// <summary>
+ /// 杞介噸涓婇檺
+ /// </summary>
+ [ExcelColumn(Name = "杞介噸涓婇檺", Width = 25)]
+ public decimal? MaxWeight { get; set; }
+
+ /// <summary>
+ /// 寮傚父鏁伴噺
+ /// </summary>
+ [ExcelColumn(Name = "寮傚父鏁伴噺", Width = 25)]
+ public int? ExceptionNumber { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鏁伴噺
+ /// </summary>
+ [ExcelColumn(Name = "鐗╂枡鏁伴噺", Width = 25)]
+ public int? MaterialNumber { get; set; }
+
+ /// <summary>
+ /// 鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��
+ /// </summary>
+ [ExcelColumn(Name = "鍐椾綑瀛楁1", Width = 25)]
+ public string RedundantField1 { get; set; }
+
+ /// <summary>
+ /// 鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��
+ /// </summary>
+ [ExcelColumn(Name = "鍐椾綑瀛楁2", Width = 25)]
+ public string RedundantField2 { get; set; }
+
+ /// <summary>
+ /// 鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��
+ /// </summary>
+ [ExcelColumn(Name = "鍐椾綑瀛楁3", Width = 25)]
+ public string RedundantField3 { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [ExcelColumn(Name = "澶囨敞", Width = 25)]
+ public virtual string Remark { get; set; }
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainersImportModel.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainersImportModel.cs"
new file mode 100644
index 0000000..5f1cdc0
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainersImportModel.cs"
@@ -0,0 +1,34 @@
+using static CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainers.WmsContainersExportModel;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainers
+{
+ /// <summary>
+ /// WmsContainers瀵煎叆妯″瀷
+ /// </summary>
+ public class WmsContainersImportModel
+ {
+ private List<WmsContainerImportModel> _wmscontainers = new();
+
+ public List<WmsContainerImportModel> WmsContainers
+ {
+ get => _wmscontainers;
+ set
+ {
+ _wmscontainers = value;
+ var rowIndex = 2;
+ _wmscontainers?.ForEach(x => x.RowIndex = rowIndex++);
+ }
+ }
+
+ /// <summary>
+ /// WmsContainer瀵煎叆妯″瀷
+ /// </summary>
+ public class WmsContainerImportModel : WorkSectionExportModel
+ {
+ /// <summary>
+ /// 琛屽彿
+ /// </summary>
+ public int RowIndex { get; set; }
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsEnumDto/WmsEnumInput.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsEnumDto/WmsEnumInput.cs"
new file mode 100644
index 0000000..2cc0375
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsEnumDto/WmsEnumInput.cs"
@@ -0,0 +1,21 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsEnumDto
+{
+ /// <summary>
+ /// 鏋氫妇杈撳叆鍙傛暟
+ /// </summary>
+ public class WmsEnumInput
+ {
+ /// <summary>
+ /// 鏋氫妇绫诲瀷鍚嶇О
+ /// </summary>
+ /// <example>AccountTypeEnum</example>
+ public string EnumName { get; set; }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/GetWmsInOutStockRecordInput.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/GetWmsInOutStockRecordInput.cs"
new file mode 100644
index 0000000..7a6f32f
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/GetWmsInOutStockRecordInput.cs"
@@ -0,0 +1,249 @@
+using CmsQueryExtensions.Extension;
+using Volo.Abp.Application.Dtos;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord;
+
+/// <summary>
+/// 鍑哄叆搴撹褰曡〃鏌ヨ鍙傛暟
+/// </summary>
+public class GetWmsInOutStockRecordInput : ExtensiblePagedAndSortedResultRequestDto
+{
+
+ #region 鍏抽敭瀛楁煡璇�
+
+ /// <summary>
+ /// 鍏抽敭瀛楁ā绯婃煡璇紙娉ㄦ剰鏄皬鍐欙紒锛�
+ /// </summary>
+ public string searchVal { get; set; }
+
+ /// <summary>
+ /// 閫氱敤鏌ヨ閰嶇疆 (1:妯$硦鏌ヨ , 2:绮惧噯鏌ヨ)锛堟敞鎰忔槸灏忓啓锛侊級
+ /// </summary>
+ public SearchFilterModeEnum searchVal_FilterMode { get; set; } = SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ /// 瀛愭悳绱㈢粍浠朵紶閫掔殑閫氱敤鏌ヨ閰嶇疆鐨勫睘鎬у悕锛堟敞鎰忔槸灏忓啓锛侊級
+ /// </summary>
+ [NoAutoQuery]
+ public string str_searchFormInputAttrs { get; set; }
+ /// <summary>
+ /// 瀛愭悳绱㈢粍浠朵紶閫掔殑閫氱敤鏌ヨ閰嶇疆鐨勫睘鎬у悕锛堟敞鎰忔槸灏忓啓锛侊級
+ /// </summary>
+ public List<string> searchFormInputAttrs
+ {
+ get
+ {
+ if (!string.IsNullOrEmpty(str_searchFormInputAttrs))
+ {
+ return str_searchFormInputAttrs.Split(',').ToList();
+ }
+ return new List<string>();
+ }
+ }
+
+ #endregion
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public string OrderNo { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum OrderNo_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum MaterialName_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ /// 鐗╂枡浠跺彿
+ /// </summary>
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡浠跺彿-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum MaterialNo_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ /// 鎿嶄綔绫诲瀷
+ /// </summary>
+ public int? StockType { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔绫诲瀷-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum StockType_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ;
+
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿
+ /// </summary>
+ public string ContainerNo { get; set; }
+
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum ContainerNo_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ /// 鏈哄瀷
+ /// </summary>
+ public string MaterialModel { get; set; }
+
+ /// <summary>
+ /// 鏈哄瀷-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum MaterialModel_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ /// 鎿嶄綔鏃堕棿
+ /// </summary>
+ //琛ㄧず鏄� 楂樼骇鏌ヨ鑼冨洿鏌ヨ鐗规��
+ [HighSearchRangeAttribute]
+ public List<string> OperateTime { get; set; }
+
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 澶囨敞-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum Remark_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ /// 鐗╂枡ID
+ /// </summary>
+ public string MaterialId { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡ID-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum MaterialId_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public string TaskNo { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鍙�-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum TaskNo_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ /// 璧峰搴撲綅
+ /// </summary>
+ public string SourcePlace { get; set; }
+
+ /// <summary>
+ /// 璧峰搴撲綅-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum SourcePlace_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ /// 鐩爣搴撲綅
+ /// </summary>
+ public string ToPlace { get; set; }
+
+ /// <summary>
+ /// 鐩爣搴撲綅-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum ToPlace_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ ///
+ /// </summary>
+ //琛ㄧず鏄� 楂樼骇鏌ヨ鑼冨洿鏌ヨ鐗规��
+ [HighSearchRangeAttribute]
+ public List<string> CreationTime { get; set; }
+
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string CreatorId { get; set; }
+
+ /// <summary>
+ /// -鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum CreatorId_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ ///
+ /// </summary>
+ //琛ㄧず鏄� 楂樼骇鏌ヨ鑼冨洿鏌ヨ鐗规��
+ [HighSearchRangeAttribute]
+ public List<string> LastModificationTime { get; set; }
+
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string LastModifierId { get; set; }
+
+ /// <summary>
+ /// -鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum LastModifierId_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ ///
+ /// </summary>
+ public bool? IsDeleted { get; set; }
+
+ /// <summary>
+ /// -鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum IsDeleted_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ;
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string DeleterId { get; set; }
+
+ /// <summary>
+ /// -鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum DeleterId_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ ///
+ /// </summary>
+ //琛ㄧず鏄� 楂樼骇鏌ヨ鑼冨洿鏌ヨ鐗规��
+ [HighSearchRangeAttribute]
+ public List<string> DeletionTime { get; set; }
+
+
+ /// <summary>
+ /// 鏄惁绂佺敤
+ /// </summary>
+ public bool? IsDisabled { get; set; }
+
+ /// <summary>
+ /// 鏄惁绂佺敤-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum IsDisabled_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ;
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int? Sort { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum Sort_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ;
+
+
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordCreateDto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordCreateDto.cs"
new file mode 100644
index 0000000..3df2845
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordCreateDto.cs"
@@ -0,0 +1,17 @@
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord;
+
+/// <summary>
+/// 鍑哄叆搴撹褰曡〃鍒涘缓鍙傛暟瀵硅薄
+/// </summary>
+public class WmsInOutStockRecordCreateDto : WmsInOutStockRecordCreateOrUpdateDtoBase
+{
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public virtual int? Sort { get; set; }
+
+ /// <summary>
+ /// 鏄惁绂佺敤
+ /// </summary>
+ public bool? IsDisabled { get; set; } = false;
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordCreateOrUpdateDtoBase.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordCreateOrUpdateDtoBase.cs"
new file mode 100644
index 0000000..a110416
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordCreateOrUpdateDtoBase.cs"
@@ -0,0 +1,100 @@
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
+using System;
+using Volo.Abp.Application.Dtos;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord;
+
+/// <summary>
+/// 鍑哄叆搴撹褰曡〃鍒涘缓鎴栨洿鏂板熀绫�
+/// </summary>
+public abstract class WmsInOutStockRecordCreateOrUpdateDtoBase : ExtensibleEntityDto
+{
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public string OrderNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string? MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡浠跺彿
+ /// </summary>
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔绫诲瀷
+ /// </summary>
+ public StockTypeEnum StockType { get; set; }
+
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿
+ /// </summary>
+ public string? ContainerNo { get; set; }
+
+ /// <summary>
+ /// 鏈哄瀷
+ /// </summary>
+ public string? MaterialModel { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔鏃堕棿
+ /// </summary>
+ public DateTime? OperateTime { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string? Remark { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡ID
+ /// </summary>
+ public string MaterialId { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public string TaskNo { get; set; }
+
+ /// <summary>
+ /// 璧峰搴撲綅
+ /// </summary>
+ public string? SourcePlace { get; set; }
+
+ /// <summary>
+ /// 鐩爣搴撲綅
+ /// </summary>
+ public string? ToPlace { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string? CreatorId { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string? LastModifierId { get; set; }
+
+ /// <summary>
+ /// 鏄惁绂佺敤
+ /// </summary>
+ public bool? IsDisabled { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+
+
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsInOutStockRecordCreateOrUpdateDtoBase"/> class.
+ /// </summary>
+ public WmsInOutStockRecordCreateOrUpdateDtoBase() : base(false)
+ {
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordDto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordDto.cs"
new file mode 100644
index 0000000..5612122
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordDto.cs"
@@ -0,0 +1,155 @@
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.Data;
+using Volo.Abp.Domain.Entities;
+
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord;
+
+/// <summary>
+/// 鍑哄叆搴撹褰曡〃鏁版嵁鍙傛暟瀵硅薄
+/// </summary>
+public class WmsInOutStockRecordDto: ExtensibleEntityDto<Guid>, IHasConcurrencyStamp
+{
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public string OrderNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string? MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡浠跺彿
+ /// </summary>
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔绫诲瀷
+ /// </summary>
+ public StockTypeEnum StockType { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔绫诲瀷
+ /// </summary>
+ public string StockTypeDesc
+ {
+ get
+ {
+ return GetEnumDescriptionUtil.GetEnumDescription(StockType);
+ }
+ }
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿
+ /// </summary>
+ public string? ContainerNo { get; set; }
+
+ /// <summary>
+ /// 鏈哄瀷
+ /// </summary>
+ public string? MaterialModel { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔鏃堕棿
+ /// </summary>
+ public DateTime? OperateTime { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string? Remark { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡ID
+ /// </summary>
+ public string MaterialId { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public string TaskNo { get; set; }
+
+ /// <summary>
+ /// 璧峰搴撲綅
+ /// </summary>
+ public string? SourcePlace { get; set; }
+
+ /// <summary>
+ /// 鐩爣搴撲綅
+ /// </summary>
+ public string? ToPlace { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public ExtraPropertyDictionary? ExtraProperties { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string? ConcurrencyStamp { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public DateTime CreationTime { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string? CreatorId { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public DateTime? LastModificationTime { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string? LastModifierId { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public bool IsDeleted { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string? DeleterId { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public DateTime? DeletionTime { get; set; }
+
+ /// <summary>
+ /// 鏄惁绂佺敤
+ /// </summary>
+ public bool? IsDisabled { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { 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/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordExportModel.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordExportModel.cs"
new file mode 100644
index 0000000..8f86f61
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordExportModel.cs"
@@ -0,0 +1,109 @@
+using MiniExcelLibs.Attributes;
+using System.ComponentModel.DataAnnotations;
+using System;
+using System.ComponentModel;
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord;
+
+/// <summary>
+/// 鍑哄叆搴撹褰曡〃瀵煎嚭妯″瀷
+/// </summary>
+public class WmsInOutStockRecordExportModel
+{
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ [ExcelColumn(Name = "鍗曟嵁缂栧彿", Width = 25)]
+ public string OrderNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ [ExcelColumn(Name = "鐗╂枡鍚嶇О", Width = 25)]
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡浠跺彿
+ /// </summary>
+ [ExcelColumn(Name = "鐗╂枡浠跺彿", Width = 25)]
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔绫诲瀷
+ /// </summary>
+ [ExcelColumn(Name = "鎿嶄綔绫诲瀷", Width = 25)]
+ public StockTypeEnum StockType { get; set; }
+
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿
+ /// </summary>
+ [ExcelColumn(Name = "瀹瑰櫒缂栧彿", Width = 25)]
+ public string ContainerNo { get; set; }
+
+ /// <summary>
+ /// 鏈哄瀷
+ /// </summary>
+ [ExcelColumn(Name = "鏈哄瀷", Width = 25)]
+ public string MaterialModel { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔鏃堕棿
+ /// </summary>
+ [ExcelColumn(Name = "鎿嶄綔鏃堕棿", Width = 25)]
+ public DateTime OperateTime { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [ExcelColumn(Name = "澶囨敞", Width = 25)]
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡ID
+ /// </summary>
+ [ExcelColumn(Name = "鐗╂枡ID", Width = 25)]
+ public string MaterialId { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ [ExcelColumn(Name = "浠诲姟鍙�", Width = 25)]
+ public string TaskNo { get; set; }
+
+ /// <summary>
+ /// 璧峰搴撲綅
+ /// </summary>
+ [ExcelColumn(Name = "璧峰搴撲綅", Width = 25)]
+ public string SourcePlace { get; set; }
+
+ /// <summary>
+ /// 鐩爣搴撲綅
+ /// </summary>
+ [ExcelColumn(Name = "鐩爣搴撲綅", Width = 25)]
+ public string ToPlace { get; set; }
+
+ /// <summary>
+ /// 鏄惁绂佺敤
+ /// </summary>
+ [ExcelColumn(Name = "鏄惁绂佺敤", Width = 25)]
+ public bool? IsDisabled { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ [ExcelColumn(Name = "鎺掑簭", Width = 25)]
+ public int Sort { get; set; }
+
+
+
+ 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/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordUpdateDto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordUpdateDto.cs"
new file mode 100644
index 0000000..7a04030
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordUpdateDto.cs"
@@ -0,0 +1,13 @@
+using Volo.Abp.Domain.Entities;
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord;
+
+/// <summary>
+/// 鍑哄叆搴撹褰曡〃鏇存柊鍙傛暟瀵硅薄
+/// </summary>
+public class WmsInOutStockRecordUpdateDto : WmsInOutStockRecordCreateOrUpdateDtoBase, IHasConcurrencyStamp
+{
+ /// <summary>
+ /// 骞跺彂鎴�
+ /// </summary>
+ public string ConcurrencyStamp { get; set; }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordsImportModel.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordsImportModel.cs"
new file mode 100644
index 0000000..7e3e4ce
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordsImportModel.cs"
@@ -0,0 +1,33 @@
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord
+{
+ /// <summary>
+ /// 鍑哄叆搴撹褰曡〃瀵煎叆妯″瀷
+ /// </summary>
+ public class WmsInOutStockRecordsImportModel
+ {
+ private List<WmsInOutStockRecordImportModel> _WmsInOutStockRecords = new();
+
+ public List<WmsInOutStockRecordImportModel> WmsInOutStockRecords
+ {
+ get => _WmsInOutStockRecords;
+ set
+ {
+ _WmsInOutStockRecords = value;
+ var rowIndex = 2;
+ _WmsInOutStockRecords?.ForEach(x => x.RowIndex = rowIndex++);
+ }
+ }
+
+ /// <summary>
+ /// 鍑哄叆搴撹褰曡〃瀵煎叆妯″瀷
+ /// </summary>
+ public class WmsInOutStockRecordImportModel : WmsInOutStockRecordExportModel
+ {
+ /// <summary>
+ /// 琛屽彿
+ /// </summary>
+ public int RowIndex { get; set; }
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/GetWmsMaterialInput.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/GetWmsMaterialInput.cs"
new file mode 100644
index 0000000..b097042
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/GetWmsMaterialInput.cs"
@@ -0,0 +1,301 @@
+using CmsQueryExtensions.Extension;
+using Volo.Abp.Application.Dtos;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
+
+/// <summary>
+/// 鐗╂枡鍩虹淇℃伅琛ㄦ煡璇㈠弬鏁�
+/// </summary>
+public class GetWmsMaterialInput : ExtensiblePagedAndSortedResultRequestDto
+{
+
+ #region 鍏抽敭瀛楁煡璇�
+
+ /// <summary>
+ /// 鍏抽敭瀛楁ā绯婃煡璇紙娉ㄦ剰鏄皬鍐欙紒锛�
+ /// </summary>
+ public string searchVal { get; set; }
+
+ /// <summary>
+ /// 閫氱敤鏌ヨ閰嶇疆 (1:妯$硦鏌ヨ , 2:绮惧噯鏌ヨ)锛堟敞鎰忔槸灏忓啓锛侊級
+ /// </summary>
+ public SearchFilterModeEnum searchVal_FilterMode { get; set; } = SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ /// 瀛愭悳绱㈢粍浠朵紶閫掔殑閫氱敤鏌ヨ閰嶇疆鐨勫睘鎬у悕锛堟敞鎰忔槸灏忓啓锛侊級
+ /// </summary>
+ [NoAutoQuery]
+ public string str_searchFormInputAttrs { get; set; }
+ /// <summary>
+ /// 瀛愭悳绱㈢粍浠朵紶閫掔殑閫氱敤鏌ヨ閰嶇疆鐨勫睘鎬у悕锛堟敞鎰忔槸灏忓啓锛侊級
+ /// </summary>
+ public List<string> searchFormInputAttrs
+ {
+ get
+ {
+ if (!string.IsNullOrEmpty(str_searchFormInputAttrs))
+ {
+ return str_searchFormInputAttrs.Split(',').ToList();
+ }
+ return new List<string>();
+ }
+ }
+
+ #endregion
+
+ /// <summary>
+ /// 鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛�
+ /// </summary>
+ public string MaterialCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛�-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum MaterialCode_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum MaterialName_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ /// 閲囪喘绫诲瀷锛堟灇涓惧�硷級
+ /// </summary>
+ public int? PurchaseType { get; set; }
+
+ /// <summary>
+ /// 閲囪喘绫诲瀷锛堟灇涓惧�硷級-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum PurchaseType_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ;
+
+ /// <summary>
+ /// 鐗╂枡绫诲瀷锛堟灇涓惧�硷級
+ /// </summary>
+ public int? MaterialType { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲瀷锛堟灇涓惧�硷級-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum MaterialType_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ;
+
+ /// <summary>
+ /// 涓诲崟浣嶏紙濡傦細kg銆乵銆佷釜锛�
+ /// </summary>
+ public string PrimaryUnit { get; set; }
+
+ /// <summary>
+ /// 涓诲崟浣嶏紙濡傦細kg銆乵銆佷釜锛�-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum PrimaryUnit_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ /// 瑙勬牸/鏍囧噯锛堝锛欸B/T 8163-2018锛�
+ /// </summary>
+ public string Standard { get; set; }
+
+ /// <summary>
+ /// 瑙勬牸/鏍囧噯锛堝锛欸B/T 8163-2018锛�-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum Standard_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ /// 澶栧緞锛堝崟浣嶏細mm锛�
+ /// </summary>
+ public decimal? OuterDiameter { get; set; }
+
+ /// <summary>
+ /// 澶栧緞锛堝崟浣嶏細mm锛�-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum OuterDiameter_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ;
+
+ /// <summary>
+ /// 澹佸帤锛堝崟浣嶏細mm锛�
+ /// </summary>
+ public decimal? WallThickness { get; set; }
+
+ /// <summary>
+ /// 澹佸帤锛堝崟浣嶏細mm锛�-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum WallThickness_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ;
+
+ /// <summary>
+ /// 鏉愯川锛堝锛�304涓嶉攬閽級
+ /// </summary>
+ public string MaterialQuality { get; set; }
+
+ /// <summary>
+ /// 鏉愯川锛堝锛�304涓嶉攬閽級-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum MaterialQuality_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ /// 闀垮害锛堝崟浣嶏細m锛�
+ /// </summary>
+ public decimal? Length { get; set; }
+
+ /// <summary>
+ /// 闀垮害锛堝崟浣嶏細m锛�-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum Length_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ;
+
+ /// <summary>
+ /// 鏄惁涓轰富鏀
+ /// </summary>
+ public int? IsMainBranch { get; set; }
+
+ /// <summary>
+ /// 鏄惁涓轰富鏀-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum IsMainBranch_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ;
+
+ /// <summary>
+ /// 鐢熶骇宸ュ巶
+ /// </summary>
+ public string Factory { get; set; }
+
+ /// <summary>
+ /// 鐢熶骇宸ュ巶-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum Factory_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ /// 璇佷功缂栧彿
+ /// </summary>
+ public string Certification { get; set; }
+
+ /// <summary>
+ /// 璇佷功缂栧彿-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum Certification_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ /// 鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��
+ /// </summary>
+ public string RedundantField1 { get; set; }
+
+ /// <summary>
+ /// 鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum RedundantField1_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ /// 鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��
+ /// </summary>
+ public string RedundantField2 { get; set; }
+
+ /// <summary>
+ /// 鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum RedundantField2_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ /// 鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��
+ /// </summary>
+ public string RedundantField3 { get; set; }
+
+ /// <summary>
+ /// 鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum RedundantField3_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int? Sort { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum Sort_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ;
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 澶囨敞-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum Remark_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ /// 鏄惁绂佺敤
+ /// </summary>
+ public bool? IsDisabled { get; set; }
+
+ /// <summary>
+ /// 鏄惁绂佺敤-鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum IsDisabled_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ;
+
+ /// <summary>
+ ///
+ /// </summary>
+ //琛ㄧず鏄� 楂樼骇鏌ヨ鑼冨洿鏌ヨ鐗规��
+ [HighSearchRangeAttribute]
+ public List<string> CreationTime { get; set; }
+
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string CreatorId { get; set; }
+
+ /// <summary>
+ /// -鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum CreatorId_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ ///
+ /// </summary>
+ //琛ㄧず鏄� 楂樼骇鏌ヨ鑼冨洿鏌ヨ鐗规��
+ [HighSearchRangeAttribute]
+ public List<string> LastModificationTime { get; set; }
+
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string LastModifierId { get; set; }
+
+ /// <summary>
+ /// -鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum LastModifierId_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ ///
+ /// </summary>
+ public bool? IsDeleted { get; set; }
+
+ /// <summary>
+ /// -鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum IsDeleted_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ;
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string DeleterId { get; set; }
+
+ /// <summary>
+ /// -鏌ヨ鍏崇郴杩愮畻绗�
+ /// </summary>
+ public SearchFilterModeEnum DeleterId_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+ /// <summary>
+ ///
+ /// </summary>
+ //琛ㄧず鏄� 楂樼骇鏌ヨ鑼冨洿鏌ヨ鐗规��
+ [HighSearchRangeAttribute]
+ public List<string> DeletionTime { get; set; }
+
+
+
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateDto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateDto.cs"
new file mode 100644
index 0000000..4d06a47
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateDto.cs"
@@ -0,0 +1,17 @@
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
+
+/// <summary>
+/// 鐗╂枡鍩虹淇℃伅琛ㄥ垱寤哄弬鏁板璞�
+/// </summary>
+public class WmsMaterialCreateDto : WmsMaterialCreateOrUpdateDtoBase
+{
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public virtual int? Sort { get; set; }
+
+ /// <summary>
+ /// 鏄惁绂佺敤
+ /// </summary>
+ public bool? IsDisabled { get; set; } = false;
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateOrUpdateDtoBase.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateOrUpdateDtoBase.cs"
new file mode 100644
index 0000000..136291a
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateOrUpdateDtoBase.cs"
@@ -0,0 +1,124 @@
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
+using Volo.Abp.Application.Dtos;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
+
+/// <summary>
+/// 鐗╂枡鍩虹淇℃伅琛ㄥ垱寤烘垨鏇存柊鍩虹被
+/// </summary>
+public abstract class WmsMaterialCreateOrUpdateDtoBase : ExtensibleEntityDto
+{
+ /// <summary>
+ /// 鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛�
+ /// </summary>
+ public string MaterialCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 閲囪喘绫诲瀷锛堟灇涓惧�硷級
+ /// </summary>
+ public PurchaseTypeEnum PurchaseType { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲瀷锛堟灇涓惧�硷級
+ /// </summary>
+ public MaterialTypeEnum MaterialType { get; set; }
+
+ /// <summary>
+ /// 涓诲崟浣嶏紙濡傦細kg銆乵銆佷釜锛�
+ /// </summary>
+ public string? PrimaryUnit { get; set; }
+
+ /// <summary>
+ /// 瑙勬牸/鏍囧噯锛堝锛欸B/T 8163-2018锛�
+ /// </summary>
+ public string? Standard { get; set; }
+
+ /// <summary>
+ /// 澶栧緞锛堝崟浣嶏細mm锛�
+ /// </summary>
+ public decimal OuterDiameter { get; set; }
+
+ /// <summary>
+ /// 澹佸帤锛堝崟浣嶏細mm锛�
+ /// </summary>
+ public decimal WallThickness { get; set; }
+
+ /// <summary>
+ /// 鏉愯川锛堝锛�304涓嶉攬閽級
+ /// </summary>
+ public string? MaterialQuality { get; set; }
+
+ /// <summary>
+ /// 闀垮害锛堝崟浣嶏細m锛�
+ /// </summary>
+ public decimal Length { get; set; }
+
+ /// <summary>
+ /// 鏄惁涓轰富鏀
+ /// </summary>
+ public YesNoEnum IsMainBranch { get; set; }
+
+ /// <summary>
+ /// 鐢熶骇宸ュ巶
+ /// </summary>
+ public string? Factory { get; set; }
+
+ /// <summary>
+ /// 璇佷功缂栧彿
+ /// </summary>
+ public string? Certification { 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 int Sort { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string? Remark { get; set; }
+
+ /// <summary>
+ /// 鏄惁绂佺敤
+ /// </summary>
+ public bool? IsDisabled { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string? CreatorId { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string? LastModifierId { get; set; }
+
+
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsMaterialCreateOrUpdateDtoBase"/> class.
+ /// </summary>
+ public WmsMaterialCreateOrUpdateDtoBase() : base(false)
+ {
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialDto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialDto.cs"
new file mode 100644
index 0000000..f67f983
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialDto.cs"
@@ -0,0 +1,200 @@
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.Data;
+using Volo.Abp.Domain.Entities;
+
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
+
+/// <summary>
+/// 鐗╂枡鍩虹淇℃伅琛ㄦ暟鎹弬鏁板璞�
+/// </summary>
+public class WmsMaterialDto: ExtensibleEntityDto<Guid>, IHasConcurrencyStamp
+{
+ /// <summary>
+ /// 鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛�
+ /// </summary>
+ public string MaterialCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 閲囪喘绫诲瀷锛堟灇涓惧�硷級
+ /// </summary>
+ public PurchaseTypeEnum PurchaseType { get; set; }
+
+ /// <summary>
+ /// 閲囪喘绫诲瀷锛堟灇涓惧�硷級
+ /// </summary>
+ public string PurchaseTypeDesc
+ {
+ get
+ {
+ return GetEnumDescriptionUtil.GetEnumDescription(PurchaseType);
+ }
+ }
+ /// <summary>
+ /// 鐗╂枡绫诲瀷锛堟灇涓惧�硷級
+ /// </summary>
+ public MaterialTypeEnum MaterialType { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲瀷锛堟灇涓惧�硷級
+ /// </summary>
+ public string MaterialTypeDesc
+ {
+ get
+ {
+ return GetEnumDescriptionUtil.GetEnumDescription(MaterialType);
+ }
+ }
+ /// <summary>
+ /// 涓诲崟浣嶏紙濡傦細kg銆乵銆佷釜锛�
+ /// </summary>
+ public string? PrimaryUnit { get; set; }
+
+ /// <summary>
+ /// 瑙勬牸/鏍囧噯锛堝锛欸B/T 8163-2018锛�
+ /// </summary>
+ public string? Standard { get; set; }
+
+ /// <summary>
+ /// 澶栧緞锛堝崟浣嶏細mm锛�
+ /// </summary>
+ public decimal OuterDiameter { get; set; }
+
+ /// <summary>
+ /// 澹佸帤锛堝崟浣嶏細mm锛�
+ /// </summary>
+ public decimal WallThickness { get; set; }
+
+ /// <summary>
+ /// 鏉愯川锛堝锛�304涓嶉攬閽級
+ /// </summary>
+ public string? MaterialQuality { get; set; }
+
+ /// <summary>
+ /// 闀垮害锛堝崟浣嶏細m锛�
+ /// </summary>
+ public decimal Length { get; set; }
+
+ /// <summary>
+ /// 鏄惁涓轰富鏀
+ /// </summary>
+ public YesNoEnum IsMainBranch { get; set; }
+
+ /// <summary>
+ /// 鏄惁涓轰富鏀
+ /// </summary>
+ public string IsMainBranchDesc
+ {
+ get
+ {
+ return GetEnumDescriptionUtil.GetEnumDescription(IsMainBranch);
+ }
+ }
+ /// <summary>
+ /// 鐢熶骇宸ュ巶
+ /// </summary>
+ public string? Factory { get; set; }
+
+ /// <summary>
+ /// 璇佷功缂栧彿
+ /// </summary>
+ public string? Certification { 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 int Sort { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string? Remark { get; set; }
+
+ /// <summary>
+ /// 鏄惁绂佺敤
+ /// </summary>
+ public bool? IsDisabled { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public ExtraPropertyDictionary? ExtraProperties { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string? ConcurrencyStamp { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public DateTime CreationTime { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string? CreatorId { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public DateTime? LastModificationTime { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string? LastModifierId { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public bool IsDeleted { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string? DeleterId { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public DateTime? DeletionTime { 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/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialExportModel.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialExportModel.cs"
new file mode 100644
index 0000000..c75b208
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialExportModel.cs"
@@ -0,0 +1,138 @@
+using MiniExcelLibs.Attributes;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel;
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
+
+/// <summary>
+/// 鐗╂枡鍩虹淇℃伅琛ㄥ鍑烘ā鍨�
+/// </summary>
+public class WmsMaterialExportModel
+{
+ /// <summary>
+ /// 鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛�
+ /// </summary>
+ [ExcelColumn(Name = "鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛�", Width = 25)]
+ public string MaterialCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ [ExcelColumn(Name = "鐗╂枡鍚嶇О", Width = 25)]
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 閲囪喘绫诲瀷锛堟灇涓惧�硷級
+ /// </summary>
+ [ExcelColumn(Name = "閲囪喘绫诲瀷锛堟灇涓惧�硷級", Width = 25)]
+ public PurchaseTypeEnum PurchaseType { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲瀷锛堟灇涓惧�硷級
+ /// </summary>
+ [ExcelColumn(Name = "鐗╂枡绫诲瀷锛堟灇涓惧�硷級", Width = 25)]
+ public MaterialTypeEnum MaterialType { get; set; }
+
+ /// <summary>
+ /// 涓诲崟浣嶏紙濡傦細kg銆乵銆佷釜锛�
+ /// </summary>
+ [ExcelColumn(Name = "涓诲崟浣嶏紙濡傦細kg銆乵銆佷釜锛�", Width = 25)]
+ public string PrimaryUnit { get; set; }
+
+ /// <summary>
+ /// 瑙勬牸/鏍囧噯锛堝锛欸B/T 8163-2018锛�
+ /// </summary>
+ [ExcelColumn(Name = "瑙勬牸/鏍囧噯锛堝锛欸B/T 8163-2018锛�", Width = 25)]
+ public string Standard { get; set; }
+
+ /// <summary>
+ /// 澶栧緞锛堝崟浣嶏細mm锛�
+ /// </summary>
+ [ExcelColumn(Name = "澶栧緞锛堝崟浣嶏細mm锛�", Width = 25)]
+ public decimal OuterDiameter { get; set; }
+
+ /// <summary>
+ /// 澹佸帤锛堝崟浣嶏細mm锛�
+ /// </summary>
+ [ExcelColumn(Name = "澹佸帤锛堝崟浣嶏細mm锛�", Width = 25)]
+ public decimal WallThickness { get; set; }
+
+ /// <summary>
+ /// 鏉愯川锛堝锛�304涓嶉攬閽級
+ /// </summary>
+ [ExcelColumn(Name = "鏉愯川锛堝锛�304涓嶉攬閽級", Width = 25)]
+ public string MaterialQuality { get; set; }
+
+ /// <summary>
+ /// 闀垮害锛堝崟浣嶏細m锛�
+ /// </summary>
+ [ExcelColumn(Name = "闀垮害锛堝崟浣嶏細m锛�", Width = 25)]
+ public decimal Length { get; set; }
+
+ /// <summary>
+ /// 鏄惁涓轰富鏀
+ /// </summary>
+ [ExcelColumn(Name = "鏄惁涓轰富鏀", Width = 25)]
+ public YesNoEnum IsMainBranch { get; set; }
+
+ /// <summary>
+ /// 鐢熶骇宸ュ巶
+ /// </summary>
+ [ExcelColumn(Name = "鐢熶骇宸ュ巶", Width = 25)]
+ public string Factory { get; set; }
+
+ /// <summary>
+ /// 璇佷功缂栧彿
+ /// </summary>
+ [ExcelColumn(Name = "璇佷功缂栧彿", Width = 25)]
+ public string Certification { get; set; }
+
+ /// <summary>
+ /// 鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��
+ /// </summary>
+ [ExcelColumn(Name = "鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��", Width = 25)]
+ public string RedundantField1 { get; set; }
+
+ /// <summary>
+ /// 鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��
+ /// </summary>
+ [ExcelColumn(Name = "鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��", Width = 25)]
+ public string RedundantField2 { get; set; }
+
+ /// <summary>
+ /// 鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��
+ /// </summary>
+ [ExcelColumn(Name = "鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��", Width = 25)]
+ public string RedundantField3 { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ [ExcelColumn(Name = "鎺掑簭", Width = 25)]
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [ExcelColumn(Name = "澶囨敞", Width = 25)]
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鏄惁绂佺敤
+ /// </summary>
+ [ExcelColumn(Name = "鏄惁绂佺敤", Width = 25)]
+ public bool? IsDisabled { get; set; }
+
+
+
+ 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/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialUpdateDto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialUpdateDto.cs"
new file mode 100644
index 0000000..51d9818
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialUpdateDto.cs"
@@ -0,0 +1,13 @@
+using Volo.Abp.Domain.Entities;
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
+
+/// <summary>
+/// 鐗╂枡鍩虹淇℃伅琛ㄦ洿鏂板弬鏁板璞�
+/// </summary>
+public class WmsMaterialUpdateDto : WmsMaterialCreateOrUpdateDtoBase, IHasConcurrencyStamp
+{
+ /// <summary>
+ /// 骞跺彂鎴�
+ /// </summary>
+ public string ConcurrencyStamp { get; set; }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialsImportModel.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialsImportModel.cs"
new file mode 100644
index 0000000..798a29b
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialsImportModel.cs"
@@ -0,0 +1,33 @@
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial
+{
+ /// <summary>
+ /// 鐗╂枡鍩虹淇℃伅琛ㄥ鍏ユā鍨�
+ /// </summary>
+ public class WmsMaterialsImportModel
+ {
+ private List<WmsMaterialImportModel> _WmsMaterials = new();
+
+ public List<WmsMaterialImportModel> WmsMaterials
+ {
+ get => _WmsMaterials;
+ set
+ {
+ _WmsMaterials = value;
+ var rowIndex = 2;
+ _WmsMaterials?.ForEach(x => x.RowIndex = rowIndex++);
+ }
+ }
+
+ /// <summary>
+ /// 鐗╂枡鍩虹淇℃伅琛ㄥ鍏ユā鍨�
+ /// </summary>
+ public class WmsMaterialImportModel : WmsMaterialExportModel
+ {
+ /// <summary>
+ /// 琛屽彿
+ /// </summary>
+ public int RowIndex { get; set; }
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/GetWmsPlacesInput.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/GetWmsPlacesInput.cs"
new file mode 100644
index 0000000..20ae282
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/GetWmsPlacesInput.cs"
@@ -0,0 +1,19 @@
+using Volo.Abp.Application.Dtos;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsPlaces;
+
+/// <summary>
+/// WmsPlace鏌ヨ鍙傛暟瀵硅薄
+/// </summary>
+public class GetWmsPlacesInput : 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; }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceCreateDto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceCreateDto.cs"
new file mode 100644
index 0000000..8730f57
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceCreateDto.cs"
@@ -0,0 +1,17 @@
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsPlaces;
+
+/// <summary>
+/// WmsPlace鍒涘缓鍙傛暟瀵硅薄
+/// </summary>
+public class WmsPlaceCreateDto : WmsPlaceCreateOrUpdateDtoBase
+{
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public virtual int? Sort { get; set; }
+
+ /// <summary>
+ /// 鏄惁绂佺敤
+ /// </summary>
+ public bool? IsDisabled { get; set; } = false;
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceCreateOrUpdateDtoBase.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceCreateOrUpdateDtoBase.cs"
new file mode 100644
index 0000000..e63a577
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceCreateOrUpdateDtoBase.cs"
@@ -0,0 +1,87 @@
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
+using Volo.Abp.Application.Dtos;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsPlaces;
+
+/// <summary>
+/// WmsPlace鍒涘缓鎴栨洿鏂板熀绫�
+/// </summary>
+public abstract class WmsPlaceCreateOrUpdateDtoBase : ExtensibleEntityDto
+{
+ /// <summary>
+ /// 缂栧彿
+ /// </summary>
+ public virtual string PlaceNo { get; set; }
+
+ /// <summary>
+ /// 璐т綅绫诲瀷
+ /// </summary>
+ public PlaceTypeEnum StorageTypeNo { get; set; }
+
+ /// <summary>
+ /// 璐т綅鐘舵��
+ /// </summary>
+ public PlaceStatusEnum PlaceStatus { get; set; }
+
+ /// <summary>
+ /// 鎵�鍦ㄥ簱鍖�
+ /// </summary>
+ public string AreaCode { get; set; }
+
+ /// <summary>
+ /// 宸烽亾
+ /// </summary>
+ public int Aisle { get; set; }
+
+ /// <summary>
+ /// 鎺�
+ /// </summary>
+ public int RowNo { get; set; }
+
+ /// <summary>
+ /// 鍒�
+ /// </summary>
+ public int ColumnNo { get; set; }
+
+ /// <summary>
+ /// 灞�
+ /// </summary>
+ public int LayerNo { get; set; }
+
+ /// <summary>
+ /// 鏄惁閿佸畾
+ /// </summary>
+ public YesNoEnum Islock { get; set; }
+
+ /// <summary>
+ /// 鏄惁绌烘墭
+ /// </summary>
+ public YesNoEnum EmptyContainer { 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="WmsPlaceCreateOrUpdateDtoBase"/> class.
+ /// </summary>
+ public WmsPlaceCreateOrUpdateDtoBase() : base(false)
+ {
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceDto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceDto.cs"
new file mode 100644
index 0000000..c4e2357
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceDto.cs"
@@ -0,0 +1,155 @@
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.Domain.Entities;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsPlaces;
+
+/// <summary>
+/// WmsPlace鏁版嵁鍙傛暟瀵硅薄
+/// </summary>
+public class WmsPlaceDto : ExtensibleEntityDto<Guid>, IHasConcurrencyStamp
+{
+ /// <summary>
+ /// 缂栧彿
+ /// </summary>
+ public virtual string PlaceNo { get; protected set; }
+
+ /// <summary>
+ /// 璐т綅绫诲瀷
+ /// </summary>
+ public PlaceTypeEnum StorageTypeNo { get; protected set; }
+
+ /// <summary>
+ /// 璐т綅绫诲瀷
+ /// </summary>
+ public string StorageTypeNoDesc
+ {
+ get
+ {
+ return GetEnumDescriptionUtil.GetEnumDescription(StorageTypeNo);
+ }
+ }
+
+ /// <summary>
+ /// 璐т綅鐘舵��
+ /// </summary>
+ public PlaceStatusEnum PlaceStatus { get; protected set; }
+
+ /// <summary>
+ /// 璐т綅鐘舵��
+ /// </summary>
+ public string PlaceStatusDesc
+ {
+ get
+ {
+ return GetEnumDescriptionUtil.GetEnumDescription(PlaceStatus);
+ }
+ }
+
+ /// <summary>
+ /// 鎵�鍦ㄥ簱鍖�
+ /// </summary>
+ public string AreaCode { get; protected set; }
+
+ /// <summary>
+ /// 宸烽亾
+ /// </summary>
+ public int Aisle { get; protected set; }
+
+ /// <summary>
+ /// 鎺�
+ /// </summary>
+ public int RowNo { get; protected set; }
+
+ /// <summary>
+ /// 鍒�
+ /// </summary>
+ public int ColumnNo { get; protected set; }
+
+ /// <summary>
+ /// 灞�
+ /// </summary>
+ public int LayerNo { get; protected set; }
+
+ /// <summary>
+ /// 鏄惁閿佸畾
+ /// </summary>
+ public YesNoEnum Islock { get; protected set; }
+
+ /// <summary>
+ /// 鏄惁閿佸畾
+ /// </summary>
+ public string IslockDesc
+ {
+ get
+ {
+ return GetEnumDescriptionUtil.GetEnumDescription(Islock);
+ }
+ }
+
+ /// <summary>
+ /// 鏄惁绌烘墭
+ /// </summary>
+ public YesNoEnum EmptyContainer { get; protected set; }
+
+ /// <summary>
+ /// 鏄惁绌烘墭
+ /// </summary>
+ public string EmptyContainerDesc
+ {
+ get
+ {
+ return GetEnumDescriptionUtil.GetEnumDescription(EmptyContainer);
+ }
+ }
+
+ /// <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>
+ /// 骞跺彂鎴�
+ /// </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/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceUpdateDto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceUpdateDto.cs"
new file mode 100644
index 0000000..31432f2
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceUpdateDto.cs"
@@ -0,0 +1,14 @@
+using Volo.Abp.Domain.Entities;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsPlaces;
+
+/// <summary>
+/// WmsPlace鏇存柊鍙傛暟瀵硅薄
+/// </summary>
+public class WmsPlaceUpdateDto : WmsPlaceCreateOrUpdateDtoBase, IHasConcurrencyStamp
+{
+ /// <summary>
+ /// 骞跺彂鎴�
+ /// </summary>
+ public string ConcurrencyStamp { get; set; }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlacesExportModel.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlacesExportModel.cs"
new file mode 100644
index 0000000..c4a8975
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlacesExportModel.cs"
@@ -0,0 +1,111 @@
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
+using MiniExcelLibs.Attributes;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsPlaces
+{
+ /// <summary>
+ /// WmsPlaces瀵煎嚭妯″瀷
+ /// </summary>
+ public class WmsPlacesExportModel
+ {
+ /// <summary>
+ /// WmsPlace瀵煎嚭妯″瀷
+ /// </summary>
+ public class WorkSectionExportModel
+ {
+ /// <summary>
+ /// 鑾峰彇鎴栬缃揣浣嶇紪鍙�
+ /// </summary>
+ /// <example>PL-001-01-01</example>
+ [ExcelColumn(Name = "璐т綅缂栧彿", Width = 20)]
+ public string PlaceNo { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鎴栬缃揣浣嶇被鍨�
+ /// </summary>
+ /// <example>Normal</example>
+ [ExcelColumn(Name = "璐т綅绫诲瀷", Width = 15)]
+ public PlaceTypeEnum StorageTypeNo { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鎴栬缃揣浣嶇姸鎬�
+ /// </summary>
+ /// <example>Available</example>
+ [ExcelColumn(Name = "璐т綅鐘舵��", Width = 15)]
+ public PlaceStatusEnum PlaceStatus { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鎴栬缃墍鍦ㄥ簱鍖虹紪鍙�
+ /// </summary>
+ /// <example>AREA-001</example>
+ [ExcelColumn(Name = "鎵�灞炲簱鍖�", Width = 20)]
+ public string AreaCode { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鎴栬缃贩閬撶紪鍙�
+ /// </summary>
+ /// <example>1</example>
+ [ExcelColumn(Name = "宸烽亾", Width = 10)]
+ public int Aisle { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鎴栬缃帓鍙�
+ /// </summary>
+ /// <example>2</example>
+ [ExcelColumn(Name = "鎺�", Width = 10)]
+ public int RowNo { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鎴栬缃垪鍙�
+ /// </summary>
+ /// <example>3</example>
+ [ExcelColumn(Name = "鍒�", Width = 10)]
+ public int ColumnNo { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鎴栬缃眰鍙�
+ /// </summary>
+ /// <example>1</example>
+ [ExcelColumn(Name = "灞�", Width = 10)]
+ public int LayerNo { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鎴栬缃攣瀹氱姸鎬�
+ /// </summary>
+ /// <example>No</example>
+ [ExcelColumn(Name = "鏄惁閿佸畾", Width = 12)]
+ public YesNoEnum Islock { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鎴栬缃┖鎵樼姸鎬�
+ /// </summary>
+ /// <example>Yes</example>
+ [ExcelColumn(Name = "鏄惁绌烘墭", Width = 12)]
+ public YesNoEnum EmptyContainer { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鎴栬缃鐣欐墿灞曞瓧娈�1
+ /// </summary>
+ [ExcelColumn(Name = "鎵╁睍瀛楁1", Width = 20)]
+ public string RedundantField1 { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鎴栬缃鐣欐墿灞曞瓧娈�2
+ /// </summary>
+ [ExcelColumn(Name = "鎵╁睍瀛楁2", Width = 20)]
+ public string RedundantField2 { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鎴栬缃鐣欐墿灞曞瓧娈�3
+ /// </summary>
+ [ExcelColumn(Name = "鎵╁睍瀛楁3", Width = 20)]
+ public string RedundantField3 { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [ExcelColumn(Name = "澶囨敞", Width = 25)]
+ public virtual string Remark { get; set; }
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlacesImportModel.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlacesImportModel.cs"
new file mode 100644
index 0000000..d6c86eb
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlacesImportModel.cs"
@@ -0,0 +1,34 @@
+using static CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsPlaces.WmsPlacesExportModel;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsPlaces
+{
+ /// <summary>
+ /// WmsPlaces瀵煎叆妯″瀷
+ /// </summary>
+ public class WmsPlacesImportModel
+ {
+ private List<WmsPlaceImportModel> _wmsplaces = new();
+
+ public List<WmsPlaceImportModel> WmsPlaces
+ {
+ get => _wmsplaces;
+ set
+ {
+ _wmsplaces = value;
+ var rowIndex = 2;
+ _wmsplaces?.ForEach(x => x.RowIndex = rowIndex++);
+ }
+ }
+
+ /// <summary>
+ /// WmsPlace瀵煎叆妯″瀷
+ /// </summary>
+ public class WmsPlaceImportModel : WorkSectionExportModel
+ {
+ /// <summary>
+ /// 琛屽彿
+ /// </summary>
+ public int RowIndex { get; set; }
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/GetWmsStoresInput.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/GetWmsStoresInput.cs"
new file mode 100644
index 0000000..0d3d180
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/GetWmsStoresInput.cs"
@@ -0,0 +1,29 @@
+using Volo.Abp.Application.Dtos;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsStores;
+
+/// <summary>
+/// WmsStore鏌ヨ鍙傛暟瀵硅薄
+/// </summary>
+public class GetWmsStoresInput : 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>
+ /// 浠撳簱浠g爜
+ /// </summary>
+ public string? StoreCode { get; set; }
+
+ /// <summary>
+ /// 浠撳簱鍚嶇О
+ /// </summary>
+ public string? StoreName { get; set; }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreCreateDto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreCreateDto.cs"
new file mode 100644
index 0000000..bfb8a5d
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreCreateDto.cs"
@@ -0,0 +1,17 @@
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsStores;
+
+/// <summary>
+/// WmsStore鍒涘缓鍙傛暟瀵硅薄
+/// </summary>
+public class WmsStoreCreateDto : WmsStoreCreateOrUpdateDtoBase
+{
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public virtual int? Sort { get; set; }
+
+ /// <summary>
+ /// 鏄惁绂佺敤
+ /// </summary>
+ public bool? IsDisabled { get; set; } = false;
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreCreateOrUpdateDtoBase.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreCreateOrUpdateDtoBase.cs"
new file mode 100644
index 0000000..216bb01
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreCreateOrUpdateDtoBase.cs"
@@ -0,0 +1,46 @@
+using Volo.Abp.Application.Dtos;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsStores;
+
+/// <summary>
+/// WmsStore鍒涘缓鎴栨洿鏂板熀绫�
+/// </summary>
+public abstract class WmsStoreCreateOrUpdateDtoBase : ExtensibleEntityDto
+{
+ /// <summary>
+ /// 浠撳簱浠g爜
+ /// </summary>
+ public string? StoreCode { get; set; }
+
+ /// <summary>
+ /// 浠撳簱鍚嶇О
+ /// </summary>
+ public string? StoreName { 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="WmsStoreCreateOrUpdateDtoBase"/> class.
+ /// </summary>
+ public WmsStoreCreateOrUpdateDtoBase() : base(false)
+ {
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreDto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreDto.cs"
new file mode 100644
index 0000000..314626d
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreDto.cs"
@@ -0,0 +1,87 @@
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.Domain.Entities;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsStores;
+
+/// <summary>
+/// WmsStore鏁版嵁鍙傛暟瀵硅薄
+/// </summary>
+public class WmsStoreDto : ExtensibleEntityDto<Guid>, IHasConcurrencyStamp
+{
+ /// <summary>
+ /// 浠撳簱浠g爜
+ /// </summary>
+ public string? StoreCode { get; set; }
+
+ /// <summary>
+ /// 浠撳簱鍚嶇О
+ /// </summary>
+ public string? StoreName { 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>
+ /// 骞跺彂鎴�
+ /// </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;
+ }
+}
+
+
+/// <summary>
+/// 鍋氫粨搴撻�夋嫨浣跨敤
+/// </summary>
+public class WmsStoreForAreaOutpur
+{
+ /// <summary>
+ /// 浠撳簱浠g爜
+ /// </summary>
+ public string? StoreCode { get; set; }
+
+ /// <summary>
+ /// 浠撳簱鍚嶇О
+ /// </summary>
+ public string? StoreName { get; set; }
+}
\ No newline at end of file
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreUpdateDto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreUpdateDto.cs"
new file mode 100644
index 0000000..f679a99
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreUpdateDto.cs"
@@ -0,0 +1,14 @@
+using Volo.Abp.Domain.Entities;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsStores;
+
+/// <summary>
+/// WmsStore鏇存柊鍙傛暟瀵硅薄
+/// </summary>
+public class WmsStoreUpdateDto : WmsStoreCreateOrUpdateDtoBase, IHasConcurrencyStamp
+{
+ /// <summary>
+ /// 骞跺彂鎴�
+ /// </summary>
+ public string ConcurrencyStamp { get; set; }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoresExportModel.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoresExportModel.cs"
new file mode 100644
index 0000000..fac0db6
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoresExportModel.cs"
@@ -0,0 +1,54 @@
+using MiniExcelLibs.Attributes;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsStores
+{
+ /// <summary>
+ /// WmsStores瀵煎嚭妯″瀷
+ /// </summary>
+ public class WmsStoresExportModel
+ {
+ /// <summary>
+ /// WmsStore瀵煎嚭妯″瀷
+ /// </summary>
+ public class WorkSectionExportModel
+ {
+ /// <summary>
+ /// 鑾峰彇鎴栬缃粨搴撲唬鐮�
+ /// </summary>
+ /// <example>WH-001</example>
+ [ExcelColumn(Name = "浠撳簱浠g爜", Width = 20)]
+ public string StoreCode { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鎴栬缃粨搴撳悕绉�
+ /// </summary>
+ /// <example>涓婃捣涓績浠�</example>
+ [ExcelColumn(Name = "浠撳簱鍚嶇О", Width = 25)]
+ public string StoreName { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鎴栬缃鐣欐墿灞曞瓧娈�1
+ /// </summary>
+ [ExcelColumn(Name = "鎵╁睍瀛楁1", Width = 20)]
+ public string RedundantField1 { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鎴栬缃鐣欐墿灞曞瓧娈�2
+ /// </summary>
+ [ExcelColumn(Name = "鎵╁睍瀛楁2", Width = 20)]
+ public string RedundantField2 { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鎴栬缃鐣欐墿灞曞瓧娈�3
+ /// </summary>
+ [ExcelColumn(Name = "鎵╁睍瀛楁3", Width = 20)]
+ public string RedundantField3 { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [ExcelColumn(Name = "澶囨敞", Width = 25)]
+ public virtual string Remark { get; set; }
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoresImportModel.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoresImportModel.cs"
new file mode 100644
index 0000000..42194fa
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoresImportModel.cs"
@@ -0,0 +1,34 @@
+using static CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsStores.WmsStoresExportModel;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsStores
+{
+ /// <summary>
+ /// WmsStores瀵煎叆妯″瀷
+ /// </summary>
+ public class WmsStoresImportModel
+ {
+ private List<WmsStoreImportModel> _wmsstores = new();
+
+ public List<WmsStoreImportModel> WmsStores
+ {
+ get => _wmsstores;
+ set
+ {
+ _wmsstores = value;
+ var rowIndex = 2;
+ _wmsstores?.ForEach(x => x.RowIndex = rowIndex++);
+ }
+ }
+
+ /// <summary>
+ /// WmsStore瀵煎叆妯″瀷
+ /// </summary>
+ public class WmsStoreImportModel : WorkSectionExportModel
+ {
+ /// <summary>
+ /// 琛屽彿
+ /// </summary>
+ public int RowIndex { get; set; }
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/FodyWeavers.xml" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/FodyWeavers.xml"
new file mode 100644
index 0000000..9a2e2c4
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/FodyWeavers.xml"
@@ -0,0 +1,3 @@
+锘�<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
+ <ConfigureAwait ContinueOnCapturedContext="false" />
+</Weavers>
\ No newline at end of file
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/ICMSPluginQueryAppService.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/ICMSPluginQueryAppService.cs"
new file mode 100644
index 0000000..b971dc3
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/ICMSPluginQueryAppService.cs"
@@ -0,0 +1,10 @@
+using Volo.Abp.Application.Services;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts;
+
+/// <summary>
+/// 鏌ヨ搴旂敤鏈嶅姟
+/// </summary>
+public interface ICMSPluginQueryAppService : IApplicationService
+{
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsAreaAppService.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsAreaAppService.cs"
new file mode 100644
index 0000000..08aff0f
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsAreaAppService.cs"
@@ -0,0 +1,46 @@
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsAreas;
+using Volo.Abp.Application.Services;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Services;
+
+/// <summary>
+/// WmsArea搴旂敤鏈嶅姟
+/// </summary>
+public interface IWmsAreaAppService : ICrudAppService<WmsAreaDto, Guid, GetWmsAreasInput, WmsAreaCreateDto, WmsAreaUpdateDto>
+{
+ /// <summary>
+ /// Clones the asynchronous.
+ /// </summary>
+ /// <param name="ids">The ids.</param>
+ /// <returns></returns>
+ Task<List<WmsAreaDto>> 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(WmsAreasImportModel input);
+
+ /// <summary>
+ /// Exports the asynchronous.
+ /// </summary>
+ /// <param name="input">The input.</param>
+ /// <returns></returns>
+ Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsAreasInput input);
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsContainerAppService.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsContainerAppService.cs"
new file mode 100644
index 0000000..d529fe2
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsContainerAppService.cs"
@@ -0,0 +1,46 @@
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainers;
+using Volo.Abp.Application.Services;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Services;
+
+/// <summary>
+/// WmsContainer搴旂敤鏈嶅姟
+/// </summary>
+public interface IWmsContainerAppService : ICrudAppService<WmsContainerDto, Guid, GetWmsContainersInput, WmsContainerCreateDto, WmsContainerUpdateDto>
+{
+ /// <summary>
+ /// Clones the asynchronous.
+ /// </summary>
+ /// <param name="ids">The ids.</param>
+ /// <returns></returns>
+ Task<List<WmsContainerDto>> 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(WmsContainersImportModel input);
+
+ /// <summary>
+ /// Exports the asynchronous.
+ /// </summary>
+ /// <param name="input">The input.</param>
+ /// <returns></returns>
+ Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsContainersInput input);
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsEnumAppService.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsEnumAppService.cs"
new file mode 100644
index 0000000..7e6899f
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsEnumAppService.cs"
@@ -0,0 +1,36 @@
+锘縰sing CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsEnumDto;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsStores;
+using CMS.Plugin.HIAWms.Domain.Shared.Util;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using static CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsAreas.WmsAreaCreateOrUpdateDtoBase;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Services
+{
+ /// <summary>
+ /// 鏋氫妇鎺ュ彛
+ /// </summary>
+ public interface IWmsEnumAppService
+ {
+ /// <summary>
+ /// 鑾峰彇鏋氫妇.
+ /// </summary>
+ /// <returns></returns>
+ List<EnumItem> GetEnumDataList(WmsEnumInput enumInput);
+
+ /// <summary>
+ /// 鑾峰彇浠撳簱鍒楄〃
+ /// </summary>
+ /// <returns></returns>
+ Task<List<WmsStoreForAreaOutpur>> GetStreList();
+
+ /// <summary>
+ /// 搴撳尯鍒楄〃
+ /// </summary>
+ /// <returns></returns>
+ Task<List<AreaForListOuptut>> GetAreaListAsync();
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsInOutStockRecordAppService.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsInOutStockRecordAppService.cs"
new file mode 100644
index 0000000..6bc1c06
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsInOutStockRecordAppService.cs"
@@ -0,0 +1,46 @@
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord;
+using Volo.Abp.Application.Services;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Services;
+
+/// <summary>
+/// 鍑哄叆搴撹褰曡〃搴旂敤鏈嶅姟鎺ュ彛
+/// </summary>
+public interface IWmsInOutStockRecordAppService : ICrudAppService<WmsInOutStockRecordDto, Guid, GetWmsInOutStockRecordInput, WmsInOutStockRecordCreateDto, WmsInOutStockRecordUpdateDto>
+{
+ /// <summary>
+ /// 鍏嬮殕鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="ids"></param>
+ /// <returns></returns>
+ Task<List<WmsInOutStockRecordDto>> CloneAsync(IEnumerable<Guid> ids);
+
+ /// <summary>
+ /// 鍒犻櫎鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="ids"></param>
+ /// <returns></returns>
+ Task DeleteManyAsync(IEnumerable<Guid> ids);
+
+ /// <summary>
+ /// 璋冩暣鎺掑簭鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="id"></param>
+ /// <param name="sort"></param>
+ /// <returns></returns>
+ Task AdjustSortAsync(Guid id, int sort);
+
+ /// <summary>
+ /// 瀵煎叆鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task ImportAsync(WmsInOutStockRecordsImportModel input);
+
+ /// <summary>
+ /// 瀵煎嚭鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsInOutStockRecordInput input);
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsMaterialAppService.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsMaterialAppService.cs"
new file mode 100644
index 0000000..d678bc4
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsMaterialAppService.cs"
@@ -0,0 +1,46 @@
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
+using Volo.Abp.Application.Services;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Services;
+
+/// <summary>
+/// 鐗╂枡鍩虹淇℃伅琛ㄥ簲鐢ㄦ湇鍔℃帴鍙�
+/// </summary>
+public interface IWmsMaterialAppService : ICrudAppService<WmsMaterialDto, Guid, GetWmsMaterialInput, WmsMaterialCreateDto, WmsMaterialUpdateDto>
+{
+ /// <summary>
+ /// 鍏嬮殕鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="ids"></param>
+ /// <returns></returns>
+ Task<List<WmsMaterialDto>> CloneAsync(IEnumerable<Guid> ids);
+
+ /// <summary>
+ /// 鍒犻櫎鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="ids"></param>
+ /// <returns></returns>
+ Task DeleteManyAsync(IEnumerable<Guid> ids);
+
+ /// <summary>
+ /// 璋冩暣鎺掑簭鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="id"></param>
+ /// <param name="sort"></param>
+ /// <returns></returns>
+ Task AdjustSortAsync(Guid id, int sort);
+
+ /// <summary>
+ /// 瀵煎叆鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task ImportAsync(WmsMaterialsImportModel input);
+
+ /// <summary>
+ /// 瀵煎嚭鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsMaterialInput input);
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsPlaceAppService.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsPlaceAppService.cs"
new file mode 100644
index 0000000..5aa95c9
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsPlaceAppService.cs"
@@ -0,0 +1,46 @@
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsPlaces;
+using Volo.Abp.Application.Services;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Services;
+
+/// <summary>
+/// WmsPlace搴旂敤鏈嶅姟
+/// </summary>
+public interface IWmsPlaceAppService : ICrudAppService<WmsPlaceDto, Guid, GetWmsPlacesInput, WmsPlaceCreateDto, WmsPlaceUpdateDto>
+{
+ /// <summary>
+ /// Clones the asynchronous.
+ /// </summary>
+ /// <param name="ids">The ids.</param>
+ /// <returns></returns>
+ Task<List<WmsPlaceDto>> 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(WmsPlacesImportModel input);
+
+ /// <summary>
+ /// Exports the asynchronous.
+ /// </summary>
+ /// <param name="input">The input.</param>
+ /// <returns></returns>
+ Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsPlacesInput input);
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsStoreAppService.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsStoreAppService.cs"
new file mode 100644
index 0000000..91e1035
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsStoreAppService.cs"
@@ -0,0 +1,46 @@
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsStores;
+using Volo.Abp.Application.Services;
+
+namespace CMS.Plugin.HIAWms.Application.Contracts.Services;
+
+/// <summary>
+/// WmsStore搴旂敤鏈嶅姟
+/// </summary>
+public interface IWmsStoreAppService : ICrudAppService<WmsStoreDto, Guid, GetWmsStoresInput, WmsStoreCreateDto, WmsStoreUpdateDto>
+{
+ /// <summary>
+ /// Clones the asynchronous.
+ /// </summary>
+ /// <param name="ids">The ids.</param>
+ /// <returns></returns>
+ Task<List<WmsStoreDto>> 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(WmsStoresImportModel input);
+
+ /// <summary>
+ /// Exports the asynchronous.
+ /// </summary>
+ /// <param name="input">The input.</param>
+ /// <returns></returns>
+ Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsStoresInput input);
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMS.Plugin.HIAWms.Application.csproj" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMS.Plugin.HIAWms.Application.csproj"
new file mode 100644
index 0000000..17d2238
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMS.Plugin.HIAWms.Application.csproj"
@@ -0,0 +1,27 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <Import Project="../../common.props" />
+ <Import Project="../../configureawait.props" />
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Volo.Abp.Dapper" Version="$(ABPPackageVersion)" />
+ <PackageReference Include="Volo.Abp.AutoMapper" Version="$(ABPPackageVersion)" />
+ <PackageReference Include="Volo.Abp.Ddd.Application" Version="$(ABPPackageVersion)" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\CMS.Plugin.HIAWms.Application.Contracts\CMS.Plugin.HIAWms.Application.Contracts.csproj" />
+ <ProjectReference Include="..\CMS.Plugin.HIAWms.Domain\CMS.Plugin.HIAWms.Domain.csproj" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <Reference Include="CmsQueryExtensions">
+ <HintPath>..\..\..\..\..\CommonDLL\CmsQueryExtensions.dll</HintPath>
+ </Reference>
+ </ItemGroup>
+
+</Project>
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMSPluginAppService.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMSPluginAppService.cs"
new file mode 100644
index 0000000..e3be13d
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMSPluginAppService.cs"
@@ -0,0 +1,19 @@
+using CMS.Plugin.HIAWms.Domain.Shared.Localization;
+using Volo.Abp.Application.Services;
+
+namespace CMS.Plugin.HIAWms.Application;
+
+/// <summary>
+/// Inherit your application services from this class.
+/// </summary>
+public abstract class CMSPluginAppService : ApplicationService
+{
+ /// <summary>
+ /// Initializes a new instance of the <see cref="CMSPluginAppService"/> class.
+ /// </summary>
+ protected CMSPluginAppService()
+ {
+ ObjectMapperContext = typeof(CMSPluginApplicationModule);
+ LocalizationResource = typeof(HIAWmsResource);
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMSPluginApplicationModule.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMSPluginApplicationModule.cs"
new file mode 100644
index 0000000..31f8e4d
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMSPluginApplicationModule.cs"
@@ -0,0 +1,31 @@
+using CMS.Plugin.HIAWms.Application.Contracts;
+using CMS.Plugin.HIAWms.Domain;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.Application;
+using Volo.Abp.AutoMapper;
+using Volo.Abp.EventBus;
+using Volo.Abp.Modularity;
+
+namespace CMS.Plugin.HIAWms.Application;
+
+/// <summary>
+/// 鎻掍欢搴旂敤鏈嶅姟妯″潡
+/// </summary>
+[DependsOn(
+ typeof(CMSPluginDomainModule),
+ typeof(CMSPluginApplicationContractsModule),
+ typeof(AbpAutoMapperModule),
+ typeof(AbpEventBusModule),
+ typeof(AbpDddApplicationModule)
+ )]
+public class CMSPluginApplicationModule : AbpModule
+{
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ context.Services.AddAutoMapperObjectMapper<CMSPluginApplicationModule>();
+ Configure<AbpAutoMapperOptions>(options =>
+ {
+ options.AddMaps<CMSPluginApplicationModule>(validate: true);
+ });
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMSPluginQueryAppService.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMSPluginQueryAppService.cs"
new file mode 100644
index 0000000..c3d13b7
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMSPluginQueryAppService.cs"
@@ -0,0 +1,19 @@
+using CMS.Plugin.HIAWms.Application.Contracts;
+using CMS.Plugin.HIAWms.Domain.Data;
+
+namespace CMS.Plugin.HIAWms.Application;
+
+/// <inheritdoc />
+public class CMSPluginQueryAppService : CMSPluginAppService, ICMSPluginQueryAppService
+{
+ private readonly ICMSPluginDapperRepository _dapperRepository;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="CMSPluginQueryAppService"/> class.
+ /// </summary>
+ /// <param name="dapperRepository">The dapper repository.</param>
+ public CMSPluginQueryAppService(ICMSPluginDapperRepository dapperRepository)
+ {
+ _dapperRepository = dapperRepository;
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/FodyWeavers.xml" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/FodyWeavers.xml"
new file mode 100644
index 0000000..9a2e2c4
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/FodyWeavers.xml"
@@ -0,0 +1,3 @@
+锘�<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
+ <ConfigureAwait ContinueOnCapturedContext="false" />
+</Weavers>
\ No newline at end of file
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsAreaAppService.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsAreaAppService.cs"
new file mode 100644
index 0000000..e9c095e
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsAreaAppService.cs"
@@ -0,0 +1,324 @@
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsAreas;
+using CMS.Plugin.HIAWms.Application.Contracts.Services;
+using CMS.Plugin.HIAWms.Domain.WmsAreas;
+using CMS.Plugin.HIAWms.Domain.Shared;
+using CMS.Plugin.HIAWms.Domain.Shared.WmsAreas;
+using Volo.Abp;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.Data;
+using Volo.Abp.ObjectExtending;
+using CMS.Plugin.HIAWms.Domain.Shared.Util;
+
+namespace CMS.Plugin.HIAWms.Application.Implements;
+
+/// <inheritdoc />
+public class WmsAreaAppService : CMSPluginAppService, IWmsAreaAppService
+{
+ private readonly IWmsAreaRepository _wmsareaRepository;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsAreaAppService"/> class.
+ /// </summary>
+ /// <param name="wmsareaRepository">The task job repository.</param>
+ public WmsAreaAppService(IWmsAreaRepository wmsareaRepository)
+ {
+ _wmsareaRepository = wmsareaRepository;
+ }
+
+ /// <inheritdoc />
+ public virtual async Task<WmsAreaDto> GetAsync(Guid id)
+ {
+ return ObjectMapper.Map<WmsArea, WmsAreaDto>(await _wmsareaRepository.GetAsync(id));
+ }
+
+ /// <inheritdoc />
+ public virtual async Task<PagedResultDto<WmsAreaDto>> GetListAsync(GetWmsAreasInput input)
+ {
+ Check.NotNull(input, nameof(input));
+
+ if (input.Sorting.IsNullOrWhiteSpace())
+ {
+ input.Sorting = nameof(WmsArea.Sort);
+ }
+
+ var specification = new WmsAreaSpecification(input.Name);
+ var area = ObjectMapper.Map<GetWmsAreasInput, WmsArea>(input);
+ var count = await _wmsareaRepository.GetCountAsync(area,input.Filter, specification);
+ var list = await _wmsareaRepository.GetListAsync(area,input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter, specification);
+
+ return new PagedResultDto<WmsAreaDto>(count, ObjectMapper.Map<List<WmsArea>, List<WmsAreaDto>>(list));
+ }
+
+ /// <inheritdoc />
+ public virtual async Task<WmsAreaDto> CreateAsync(WmsAreaCreateDto input)
+ {
+ await CheckCreateOrUpdateDtoAsync(input);
+
+ var exist = await _wmsareaRepository.NameExistAsync(input.AreaNo);
+ if (exist)
+ {
+ throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.AreaNo]);
+ }
+
+ var maxSort = await _wmsareaRepository.GetMaxSortAsync();
+ var sort = input.Sort ?? maxSort;
+ var wmsarea = ObjectMapper.Map<WmsAreaCreateDto, WmsArea>(input);
+ wmsarea.Sort = sort;
+ input.MapExtraPropertiesTo(wmsarea, MappingPropertyDefinitionChecks.None);
+
+ await _wmsareaRepository.InsertAsync(wmsarea);
+
+ if (input.Sort.HasValue && wmsarea.Sort != maxSort)
+ {
+ await AdjustSortAsync(wmsarea.Id, wmsarea.Sort);
+ }
+
+ return ObjectMapper.Map<WmsArea, WmsAreaDto>(wmsarea);
+ }
+
+ /// <inheritdoc />
+ public virtual async Task<WmsAreaDto> UpdateAsync(Guid id, WmsAreaUpdateDto input)
+ {
+ await CheckCreateOrUpdateDtoAsync(input);
+
+ var wmsarea = await _wmsareaRepository.GetAsync(id);
+ var exist = await _wmsareaRepository.NameExistAsync(input.AreaNo, wmsarea.Id);
+ if (exist)
+ {
+ throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.AreaNo]);
+ }
+
+ wmsarea.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
+ input.MapExtraPropertiesTo(wmsarea, MappingPropertyDefinitionChecks.None);
+
+ wmsarea.AreaName = input.AreaName;
+ wmsarea.AreaDesc = input.AreaDesc;
+ wmsarea.AreaStatus = input.AreaStatus;
+ wmsarea.AreaType = input.AreaType;
+ wmsarea.StoreCode = input.StoreCode;
+ wmsarea.StoreName = input.StoreName;
+
+ await _wmsareaRepository.UpdateAsync(wmsarea);
+
+ return ObjectMapper.Map<WmsArea, WmsAreaDto>(wmsarea);
+ }
+
+ /// <inheritdoc />
+ public async Task<List<WmsAreaDto>> CloneAsync(IEnumerable<Guid> ids)
+ {
+ var wmsareas = new List<WmsArea>();
+ if (ids != null)
+ {
+ var sort = await _wmsareaRepository.GetMaxSortAsync();
+ foreach (var id in ids)
+ {
+ var wmsarea = await _wmsareaRepository.FindAsync(id);
+ if (wmsarea != null)
+ {
+ var name = wmsarea.AreaNo + WmsAreaConsts.CloneTag;
+ var notExist = false;
+ while (!notExist)
+ {
+ var exist = await _wmsareaRepository.NameExistAsync(name);
+ if (exist || wmsareas.Any(x => x.AreaNo == name))
+ {
+ name += WmsAreaConsts.CloneTag;
+ continue;
+ }
+
+ notExist = true;
+ }
+
+ wmsareas.Add(wmsarea);
+ }
+ }
+ }
+
+ return ObjectMapper.Map<List<WmsArea>, List<WmsAreaDto>>(wmsareas);
+ }
+
+ /// <inheritdoc />
+ public virtual Task DeleteAsync(Guid id)
+ {
+ return _wmsareaRepository.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 _wmsareaRepository.GetListAsync(null,nameof(WmsArea.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 _wmsareaRepository.UpdateManyAsync(list);
+ }
+
+ /// <inheritdoc />
+ public async Task ImportAsync(WmsAreasImportModel input)
+ {
+ Check.NotNull(input, nameof(input));
+
+ var wmsareaCreateDtos = new List<(int RowIndex, WmsAreaCreateDto Item)>();
+ var wmsareaUpdateDtos = new List<(int RowIndex, Guid Id, WmsAreaUpdateDto Item)>();
+ var wmsareas = input.WmsAreas;
+
+ if (wmsareas != null && wmsareas.Any())
+ {
+ #region 瀵煎叆鏍¢獙
+
+ // 鍒ゆ柇鍚嶇О鏄惁閲嶅锛屽苟杈撳嚭绗嚑琛岄噸澶�
+ var duplicateWmsAreas = wmsareas.GroupBy(x => x.AreaNo).Where(x => x.Count() > 1).ToList();
+ if (duplicateWmsAreas?.Any() == true)
+ {
+ var duplicateWmsAreaMsgs = duplicateWmsAreas.Select(x => $"绗� {string.Join(",", x.Select(x => x.RowIndex))} 琛岋細{x.Key} 鍚嶇О閲嶅");
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝 {string.Join(",", duplicateWmsAreaMsgs)}锛岀粓姝㈠鍏�";
+ throw new UserFriendlyException(errorMsg);
+ }
+
+ #endregion
+
+ foreach (var wmsarea in wmsareas)
+ {
+ if (wmsarea.AreaNo.IsNullOrWhiteSpace() && wmsarea.AreaName.IsNullOrWhiteSpace())
+ {
+ continue;
+ }
+
+ if (wmsarea.AreaName.IsNullOrWhiteSpace())
+ {
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsarea.RowIndex}琛岋細WmsArea鍚嶇О涓嶈兘涓虹┖";
+ throw new UserFriendlyException(errorMsg);
+ }
+
+ var oldWmsArea = await _wmsareaRepository.FindByNameAsync(wmsarea.AreaName);
+ if (oldWmsArea != null)
+ {
+ var wmsareaUpdateDto = new WmsAreaUpdateDto
+ {
+ AreaName = wmsarea.AreaName,
+ AreaDesc = wmsarea.AreaDesc,
+ AreaStatus = wmsarea.AreaStatus,
+ AreaType = wmsarea.AreaType,
+ StoreCode = wmsarea.StoreCode,
+ StoreName = wmsarea.StoreName,
+ Remark = wmsarea.Remark,
+ };
+
+ wmsareaUpdateDtos.Add((wmsarea.RowIndex, oldWmsArea.Id, wmsareaUpdateDto));
+ }
+ else
+ {
+ var wmsareaCreateDto = new WmsAreaCreateDto
+ {
+ AreaName = wmsarea.AreaName,
+ AreaDesc = wmsarea.AreaDesc,
+ AreaStatus = wmsarea.AreaStatus,
+ AreaType = wmsarea.AreaType,
+ StoreCode = wmsarea.StoreCode,
+ StoreName = wmsarea.StoreName,
+ Remark = wmsarea.Remark,
+ };
+
+ wmsareaCreateDtos.Add((wmsarea.RowIndex, wmsareaCreateDto));
+ }
+ }
+ }
+
+ // 鏂板
+ foreach (var wmsareaDto in wmsareaCreateDtos)
+ {
+ try
+ {
+ await CreateAsync(wmsareaDto.Item);
+ }
+ catch (Exception e)
+ {
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsareaDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�";
+ throw new UserFriendlyException(errorMsg);
+ }
+ }
+
+ // 鏇存柊
+ foreach (var wmsareaDto in wmsareaUpdateDtos)
+ {
+ try
+ {
+ await UpdateAsync(wmsareaDto.Id, wmsareaDto.Item);
+ }
+ catch (Exception e)
+ {
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsareaDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�";
+ throw new UserFriendlyException(errorMsg);
+ }
+ }
+ }
+
+ /// <inheritdoc />
+ public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsAreasInput input)
+ {
+ Check.NotNull(input, nameof(input));
+
+ if (input.Sorting.IsNullOrWhiteSpace())
+ {
+ input.Sorting = nameof(WmsArea.Sort);
+ }
+
+ var specification = new WmsAreaSpecification(input.Name);
+ var area = ObjectMapper.Map<GetWmsAreasInput, WmsArea>(input);
+ var list = await _wmsareaRepository.GetListAsync(area,input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter, specification, includeDetails: true);
+ var result = ObjectMapper.Map<List<WmsArea>, List<WmsAreaDto>>(list);
+
+ var sheets = new Dictionary<string, object>
+ {
+ ["閰嶇疆"] = ExportHelper.ConvertListToExportData(result),
+ };
+
+ var fileName = result.Count > 1 ? "WmsArea鍒楄〃" : result.Count == 1 ? result.First()?.AreaName : "WmsArea妯$増";
+ return (sheets, fileName);
+ }
+
+ /// <summary>
+ /// Checks the create or update dto asynchronous.
+ /// </summary>
+ /// <param name="input">The input.</param>
+ protected Task CheckCreateOrUpdateDtoAsync(WmsAreaCreateOrUpdateDtoBase input)
+ {
+ Check.NotNull(input, nameof(input));
+ Check.NotNullOrWhiteSpace(input.AreaNo, "缂栧彿", WmsAreaConsts.MaxCodeLength);
+ Check.NotNullOrWhiteSpace(input.AreaName, "鍚嶇О", WmsAreaConsts.MaxNameLength);
+ Check.Length(input.Remark, "澶囨敞", WmsAreaConsts.MaxRemarkLength);
+ return Task.CompletedTask;
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsContainerAppService.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsContainerAppService.cs"
new file mode 100644
index 0000000..eba8903
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsContainerAppService.cs"
@@ -0,0 +1,336 @@
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainers;
+using CMS.Plugin.HIAWms.Application.Contracts.Services;
+using CMS.Plugin.HIAWms.Domain.WmsContainers;
+using CMS.Plugin.HIAWms.Domain.Shared;
+using CMS.Plugin.HIAWms.Domain.Shared.WmsContainers;
+using Volo.Abp;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.Data;
+using Volo.Abp.ObjectExtending;
+using CMS.Plugin.HIAWms.Domain.Shared.Util;
+
+namespace CMS.Plugin.HIAWms.Application.Implements;
+
+/// <inheritdoc />
+public class WmsContainerAppService : CMSPluginAppService, IWmsContainerAppService
+{
+ private readonly IWmsContainerRepository _wmscontainerRepository;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsContainerAppService"/> class.
+ /// </summary>
+ /// <param name="wmscontainerRepository">The task job repository.</param>
+ public WmsContainerAppService(IWmsContainerRepository wmscontainerRepository)
+ {
+ _wmscontainerRepository = wmscontainerRepository;
+ }
+
+ /// <inheritdoc />
+ public virtual async Task<WmsContainerDto> GetAsync(Guid id)
+ {
+ return ObjectMapper.Map<WmsContainer, WmsContainerDto>(await _wmscontainerRepository.GetAsync(id));
+ }
+
+ /// <inheritdoc />
+ public virtual async Task<PagedResultDto<WmsContainerDto>> GetListAsync(GetWmsContainersInput input)
+ {
+ Check.NotNull(input, nameof(input));
+
+ if (input.Sorting.IsNullOrWhiteSpace())
+ {
+ input.Sorting = nameof(WmsContainer.Sort);
+ }
+
+ var specification = new WmsContainerSpecification(input.Name);
+ var container = ObjectMapper.Map < GetWmsContainersInput, WmsContainer>(input);
+ var count = await _wmscontainerRepository.GetCountAsync(container,input.Filter, specification);
+ var list = await _wmscontainerRepository.GetListAsync(container,input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter, specification);
+
+ return new PagedResultDto<WmsContainerDto>(count, ObjectMapper.Map<List<WmsContainer>, List<WmsContainerDto>>(list));
+ }
+
+ /// <inheritdoc />
+ public virtual async Task<WmsContainerDto> CreateAsync(WmsContainerCreateDto input)
+ {
+ await CheckCreateOrUpdateDtoAsync(input);
+
+ var exist = await _wmscontainerRepository.NameExistAsync(input.ContainerNo);
+ if (exist)
+ {
+ throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.ContainerNo]);
+ }
+
+ var maxSort = await _wmscontainerRepository.GetMaxSortAsync();
+ var sort = input.Sort ?? maxSort;
+ var wmscontainer = ObjectMapper.Map<WmsContainerCreateDto,WmsContainer>(input);
+ input.MapExtraPropertiesTo(wmscontainer, MappingPropertyDefinitionChecks.None);
+ wmscontainer.Sort = sort;
+ await _wmscontainerRepository.InsertAsync(wmscontainer);
+
+ if (input.Sort.HasValue && wmscontainer.Sort != maxSort)
+ {
+ await AdjustSortAsync(wmscontainer.Id, wmscontainer.Sort);
+ }
+
+ return ObjectMapper.Map<WmsContainer, WmsContainerDto>(wmscontainer);
+ }
+
+ /// <inheritdoc />
+ public virtual async Task<WmsContainerDto> UpdateAsync(Guid id, WmsContainerUpdateDto input)
+ {
+ await CheckCreateOrUpdateDtoAsync(input);
+
+ var wmscontainer = await _wmscontainerRepository.GetAsync(id);
+ var exist = await _wmscontainerRepository.NameExistAsync(input.ContainerNo, wmscontainer.Id);
+ if (exist)
+ {
+ throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.ContainerNo]);
+ }
+
+ wmscontainer.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
+ input.MapExtraPropertiesTo(wmscontainer, MappingPropertyDefinitionChecks.None);
+
+ wmscontainer.ContainerStatus = input.ContainerStatus;
+ wmscontainer.ContainerType = input.ContainerType;
+ wmscontainer.SpecLength = input.SpecLength;
+ wmscontainer.SpecWidth = input.SpecWidth;
+ wmscontainer.SpecHeight = input.SpecHeight;
+ wmscontainer.LimitLength = input.LimitLength;
+ wmscontainer.LimitWidth = input.LimitWidth;
+ wmscontainer.LimitHeight = input.LimitHeight;
+ wmscontainer.MaxWeight = input.MaxWeight;
+ wmscontainer.MaterialNumber = input.MaterialNumber;
+ wmscontainer.ExceptionNumber = input.ExceptionNumber;
+
+ await _wmscontainerRepository.UpdateAsync(wmscontainer);
+
+ return ObjectMapper.Map<WmsContainer, WmsContainerDto>(wmscontainer);
+ }
+
+ /// <inheritdoc />
+ public async Task<List<WmsContainerDto>> CloneAsync(IEnumerable<Guid> ids)
+ {
+ var wmscontainers = new List<WmsContainer>();
+ if (ids != null)
+ {
+ var sort = await _wmscontainerRepository.GetMaxSortAsync();
+ foreach (var id in ids)
+ {
+ var wmscontainer = await _wmscontainerRepository.FindAsync(id);
+ if (wmscontainer != null)
+ {
+ var containerNo = wmscontainer.ContainerNo + WmsContainerConsts.CloneTag;
+ var notExist = false;
+ while (!notExist)
+ {
+ var exist = await _wmscontainerRepository.NameExistAsync(containerNo);
+ if (exist || wmscontainers.Any(x => x.ContainerNo == containerNo))
+ {
+ containerNo += WmsContainerConsts.CloneTag;
+ continue;
+ }
+
+ notExist = true;
+ }
+
+ //wmscontainer = await _wmscontainerRepository.InsertAsync(wmscontainer.Clone(GuidGenerator.Create(), containerNo, sort++));
+ wmscontainers.Add(wmscontainer);
+ }
+ }
+ }
+
+ return ObjectMapper.Map<List<WmsContainer>, List<WmsContainerDto>>(wmscontainers);
+ }
+
+ /// <inheritdoc />
+ public virtual Task DeleteAsync(Guid id)
+ {
+ return _wmscontainerRepository.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 _wmscontainerRepository.GetListAsync(null,nameof(WmsContainer.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 _wmscontainerRepository.UpdateManyAsync(list);
+ }
+
+ /// <inheritdoc />
+ public async Task ImportAsync(WmsContainersImportModel input)
+ {
+ Check.NotNull(input, nameof(input));
+
+ var wmscontainerCreateDtos = new List<(int RowIndex, WmsContainerCreateDto Item)>();
+ var wmscontainerUpdateDtos = new List<(int RowIndex, Guid Id, WmsContainerUpdateDto Item)>();
+ var wmscontainers = input.WmsContainers;
+
+ if (wmscontainers != null && wmscontainers.Any())
+ {
+ #region 瀵煎叆鏍¢獙
+
+ // 鍒ゆ柇鍚嶇О鏄惁閲嶅锛屽苟杈撳嚭绗嚑琛岄噸澶�
+ var duplicateWmsContainers = wmscontainers.GroupBy(x => x.ContainerNo).Where(x => x.Count() > 1).ToList();
+ if (duplicateWmsContainers?.Any() == true)
+ {
+ var duplicateWmsContainerMsgs = duplicateWmsContainers.Select(x => $"绗� {string.Join(",", x.Select(x => x.RowIndex))} 琛岋細{x.Key} 鍚嶇О閲嶅");
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝 {string.Join(",", duplicateWmsContainerMsgs)}锛岀粓姝㈠鍏�";
+ throw new UserFriendlyException(errorMsg);
+ }
+
+ #endregion
+
+ foreach (var wmscontainer in wmscontainers)
+ {
+ if (wmscontainer.ContainerNo.IsNullOrWhiteSpace() && wmscontainer.ContainerNo.IsNullOrWhiteSpace())
+ {
+ continue;
+ }
+
+ if (wmscontainer.ContainerNo.IsNullOrWhiteSpace())
+ {
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmscontainer.RowIndex}琛岋細WmsContainer鍚嶇О涓嶈兘涓虹┖";
+ throw new UserFriendlyException(errorMsg);
+ }
+
+ var oldWmsContainer = await _wmscontainerRepository.FindByNameAsync(wmscontainer.ContainerNo);
+ if (oldWmsContainer != null)
+ {
+ var wmscontainerUpdateDto = new WmsContainerUpdateDto
+ {
+ ContainerNo = wmscontainer.ContainerNo,
+ ContainerType = wmscontainer.ContainerType,
+ ContainerStatus = wmscontainer.ContainerStatus,
+ SpecLength = wmscontainer.SpecLength,
+ SpecWidth = wmscontainer.SpecWidth,
+ SpecHeight = wmscontainer.SpecHeight,
+ LimitLength = wmscontainer.LimitLength,
+ LimitWidth = wmscontainer.LimitWidth,
+ LimitHeight = wmscontainer.LimitHeight,
+ MaxWeight = wmscontainer.MaxWeight,
+ Remark = wmscontainer.Remark,
+ };
+
+ wmscontainerUpdateDtos.Add((wmscontainer.RowIndex, oldWmsContainer.Id, wmscontainerUpdateDto));
+ }
+ else
+ {
+ var wmscontainerCreateDto = new WmsContainerCreateDto
+ {
+ ContainerNo = wmscontainer.ContainerNo,
+ ContainerType = wmscontainer.ContainerType,
+ ContainerStatus = wmscontainer.ContainerStatus,
+ SpecLength = wmscontainer.SpecLength,
+ SpecWidth = wmscontainer.SpecWidth,
+ SpecHeight = wmscontainer.SpecHeight,
+ LimitLength = wmscontainer.LimitLength,
+ LimitWidth = wmscontainer.LimitWidth,
+ LimitHeight = wmscontainer.LimitHeight,
+ MaxWeight = wmscontainer.MaxWeight,
+ Remark = wmscontainer.Remark
+ };
+
+ wmscontainerCreateDtos.Add((wmscontainer.RowIndex, wmscontainerCreateDto));
+ }
+ }
+ }
+
+ // 鏂板
+ foreach (var wmscontainerDto in wmscontainerCreateDtos)
+ {
+ try
+ {
+ await CreateAsync(wmscontainerDto.Item);
+ }
+ catch (Exception e)
+ {
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmscontainerDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�";
+ throw new UserFriendlyException(errorMsg);
+ }
+ }
+
+ // 鏇存柊
+ foreach (var wmscontainerDto in wmscontainerUpdateDtos)
+ {
+ try
+ {
+ await UpdateAsync(wmscontainerDto.Id, wmscontainerDto.Item);
+ }
+ catch (Exception e)
+ {
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmscontainerDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�";
+ throw new UserFriendlyException(errorMsg);
+ }
+ }
+ }
+
+ /// <inheritdoc />
+ public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsContainersInput input)
+ {
+ Check.NotNull(input, nameof(input));
+
+ if (input.Sorting.IsNullOrWhiteSpace())
+ {
+ input.Sorting = nameof(WmsContainer.Sort);
+ }
+
+ var specification = new WmsContainerSpecification(input.Name);
+ var container = ObjectMapper.Map<GetWmsContainersInput, WmsContainer>(input);
+ var list = await _wmscontainerRepository.GetListAsync(container,input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter, specification, includeDetails: true);
+ var result = ObjectMapper.Map<List<WmsContainer>, List<WmsContainerDto>>(list);
+
+ var sheets = new Dictionary<string, object>
+ {
+ ["閰嶇疆"] = ExportHelper.ConvertListToExportData(result),
+ };
+
+ var fileName = result.Count > 1 ? "WmsContainer鍒楄〃" : result.Count == 1 ? result.First()?.ContainerNo : "WmsContainer妯$増";
+ return (sheets, fileName);
+ }
+
+ /// <summary>
+ /// Checks the create or update dto asynchronous.
+ /// </summary>
+ /// <param name="input">The input.</param>
+ protected Task CheckCreateOrUpdateDtoAsync(WmsContainerCreateOrUpdateDtoBase input)
+ {
+ Check.NotNull(input, nameof(input));
+ Check.NotNullOrWhiteSpace(input.ContainerNo, "缂栧彿", WmsContainerConsts.MaxCodeLength);
+ Check.Length(input.Remark, "澶囨敞", WmsContainerConsts.MaxRemarkLength);
+ return Task.CompletedTask;
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsEnumAppService.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsEnumAppService.cs"
new file mode 100644
index 0000000..0c133ec
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsEnumAppService.cs"
@@ -0,0 +1,69 @@
+锘縰sing CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsEnumDto;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsStores;
+using CMS.Plugin.HIAWms.Application.Contracts.Services;
+using CMS.Plugin.HIAWms.Domain.Shared.Util;
+using CMS.Plugin.HIAWms.Domain.WmsAreas;
+using CMS.Plugin.HIAWms.Domain.WmsStores;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using static CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsAreas.WmsAreaCreateOrUpdateDtoBase;
+
+namespace CMS.Plugin.HIAWms.Application.Implements
+{
+ /// <summary>
+ /// 鏋氫妇绫诲瀷鎺ュ彛瀹炵幇
+ /// </summary>
+ public class WmsEnumAppService : CMSPluginAppService, IWmsEnumAppService
+ {
+ private readonly IWmsStoreRepository _storeRepository;
+ private readonly IWmsAreaRepository _wmsAreaRepository;
+
+ public WmsEnumAppService(IWmsStoreRepository storeRepository, IWmsAreaRepository wmsAreaRepository)
+ {
+ _storeRepository = storeRepository;
+ _wmsAreaRepository = wmsAreaRepository;
+ }
+
+ public List<EnumItem> GetEnumDataList(WmsEnumInput enumInput)
+ {
+ return EnumHelper.GetEnumItems(enumInput.EnumName);
+ }
+
+ /// <summary>
+ /// 鑾峰彇浠撳簱鍒楄〃
+ /// </summary>
+ /// <returns></returns>
+ public async Task<List<WmsStoreForAreaOutpur>> GetStreList()
+ {
+ var list = await _storeRepository.GetListForSelectAsync();
+ if (list == null || list.Count <= 0) { return new List<WmsStoreForAreaOutpur>(); }
+
+ var result = list.Select(x => new WmsStoreForAreaOutpur
+ {
+ StoreCode = x.StoreCode,
+ StoreName = x.StoreName,
+ }).ToList();
+ return result;
+ }
+
+ /// <summary>
+ /// 搴撳尯鍒楄〃
+ /// </summary>
+ /// <returns></returns>
+ public async Task<List<AreaForListOuptut>> GetAreaListAsync()
+ {
+ var list = await _wmsAreaRepository.GetListForSelectAsync();
+ if (list == null || list.Count <= 0) { return new List<AreaForListOuptut>(); }
+ var result = list.Select(x=>new AreaForListOuptut
+ {
+ AreaName = x.AreaName,
+ AreaNo = x.AreaNo,
+ }).ToList();
+
+ return result;
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsInOutStockRecordAppService.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsInOutStockRecordAppService.cs"
new file mode 100644
index 0000000..34c8675
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsInOutStockRecordAppService.cs"
@@ -0,0 +1,436 @@
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord;
+using CMS.Plugin.HIAWms.Application.Contracts.Services;
+using CMS.Plugin.HIAWms.Domain.Shared;
+using CMS.Plugin.HIAWms.Domain.Shared.Util;
+using CMS.Plugin.HIAWms.Domain.WmsInOutStockRecord;
+using CmsQueryExtensions.Extension;
+using System.Linq.Expressions;
+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;
+
+/// <summary>
+/// 鍑哄叆搴撹褰曡〃搴旂敤鏈嶅姟
+/// </summary>
+public class WmsInOutStockRecordAppService : CMSPluginAppService, IWmsInOutStockRecordAppService
+{
+ private readonly IWmsInOutStockRecordRepository wmsInOutStockRecordRepository;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsInOutStockRecordAppService"/> class.
+ /// </summary>
+ /// <param name="WmsInOutStockRecordRepository">The task job repository.</param>
+ public WmsInOutStockRecordAppService(IWmsInOutStockRecordRepository _WmsInOutStockRecordRepository)
+ {
+ wmsInOutStockRecordRepository = _WmsInOutStockRecordRepository;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎸囧畾鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="id"></param>
+ /// <returns></returns>
+ public virtual async Task<WmsInOutStockRecordDto> GetAsync(Guid id)
+ {
+ return ObjectMapper.Map<WmsInOutStockRecord, WmsInOutStockRecordDto>(await wmsInOutStockRecordRepository.GetAsync(id));
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鑾峰彇鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ public virtual async Task<PagedResultDto<WmsInOutStockRecordDto>> GetListAsync(GetWmsInOutStockRecordInput input)
+ {
+ Check.NotNull(input, nameof(input));
+
+ if (input.Sorting.IsNullOrWhiteSpace())
+ {
+ input.Sorting = nameof(WmsInOutStockRecord.Sort);
+ }
+
+ #region 鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�
+
+ //鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�
+ var whereConditions = DynamicGetQueryParams(input);
+
+ #endregion
+
+ var count = await wmsInOutStockRecordRepository.GetCountAsync(whereConditions);
+ var list = await wmsInOutStockRecordRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount);
+
+ return new PagedResultDto<WmsInOutStockRecordDto>(count, ObjectMapper.Map<List<WmsInOutStockRecord>, List<WmsInOutStockRecordDto>>(list));
+ }
+
+ /// <summary>
+ /// 鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�
+ /// </summary>
+ /// <param name="input">杈撳叆鍙傛暟</param>
+ /// <returns></returns>
+ private FunReturnResultModel<Expression<Func<WmsInOutStockRecord, bool>>> DynamicGetQueryParams(GetWmsInOutStockRecordInput input)
+ {
+ //鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�
+ var whereConditions = WhereConditionsExtensions.GetWhereConditions<WmsInOutStockRecord, GetWmsInOutStockRecordInput>(input);
+ if (!whereConditions.IsSuccess)
+ {
+ throw new Exception("鍔ㄦ�佹瀯閫犳煡璇㈡潯浠跺け璐�:" + whereConditions.ErrMsg);
+ }
+
+ //涔熷彲鍐嶆鑷畾涔夋瀯寤烘煡璇㈡潯浠�
+ Expression<Func<WmsInOutStockRecord, bool>> extendExpression = a => a.IsDeleted == false;
+ // 浣跨敤 System.Linq.PredicateBuilder 鐨� And
+ var pres = (System.Linq.Expressions.Expression<Func<WmsInOutStockRecord, bool>>)(whereConditions.data);
+ whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression);
+
+ return whereConditions;
+ }
+
+ /// <summary>
+ /// 鏂板缓鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ /// <exception cref="UserFriendlyException"></exception>
+ public virtual async Task<WmsInOutStockRecordDto> CreateAsync(WmsInOutStockRecordCreateDto input)
+ {
+ await CheckCreateOrUpdateDtoAsync(input);
+
+ var exist = await wmsInOutStockRecordRepository.NameExistAsync(input.MaterialNo);
+ if (exist)
+ {
+ throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialNo]);
+ }
+
+ var maxSort = await wmsInOutStockRecordRepository.GetMaxSortAsync();
+ var sort = input.Sort ?? maxSort;
+
+ var insertObj = ObjectMapper.Map<WmsInOutStockRecordCreateDto, WmsInOutStockRecord>(input);
+ insertObj.Sort = sort;
+ input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None);
+
+ await wmsInOutStockRecordRepository.InsertAsync(insertObj);
+
+ if (input.Sort.HasValue && insertObj.Sort != maxSort)
+ {
+ await AdjustSortAsync(insertObj.Id, insertObj.Sort);
+ }
+
+ return ObjectMapper.Map<WmsInOutStockRecord, WmsInOutStockRecordDto>(insertObj);
+ }
+
+ /// <summary>
+ /// 鏇存柊鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="id"></param>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ /// <exception cref="UserFriendlyException"></exception>
+ public virtual async Task<WmsInOutStockRecordDto> UpdateAsync(Guid id, WmsInOutStockRecordUpdateDto input)
+ {
+ await CheckCreateOrUpdateDtoAsync(input);
+
+ var updateObj = await wmsInOutStockRecordRepository.GetAsync(id);
+ var exist = await wmsInOutStockRecordRepository.NameExistAsync(input.MaterialNo, updateObj.Id);
+ if (exist)
+ {
+ throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialNo]);
+ }
+
+ updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
+ input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None);
+
+ updateObj.OrderNo = input.OrderNo;
+ updateObj.MaterialName = input.MaterialName;
+ updateObj.MaterialNo = input.MaterialNo;
+ updateObj.StockType = input.StockType;
+ updateObj.ContainerNo = input.ContainerNo;
+ updateObj.MaterialModel = input.MaterialModel;
+ updateObj.OperateTime = input.OperateTime;
+ updateObj.Remark = input.Remark;
+ updateObj.MaterialId = input.MaterialId;
+ updateObj.TaskNo = input.TaskNo;
+ updateObj.SourcePlace = input.SourcePlace;
+ updateObj.ToPlace = input.ToPlace;
+ updateObj.IsDisabled = input.IsDisabled;
+
+
+ await wmsInOutStockRecordRepository.UpdateAsync(updateObj);
+
+ return ObjectMapper.Map<WmsInOutStockRecord, WmsInOutStockRecordDto>(updateObj);
+ }
+
+ /// <summary>
+ /// 鍏嬮殕鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="ids"></param>
+ /// <returns></returns>
+ public async Task<List<WmsInOutStockRecordDto>> CloneAsync(IEnumerable<Guid> ids)
+ {
+ //var wmsInOutStockRecords = new List<WmsInOutStockRecord>();
+ //if (ids != null)
+ //{
+ // var sort = await wmsInOutStockRecordRepository.GetMaxSortAsync();
+ // foreach (var id in ids)
+ // {
+ // var WmsInOutStockRecord = await wmsInOutStockRecordRepository.FindAsync(id);
+ // if (WmsInOutStockRecord != null)
+ // {
+ // var name = WmsInOutStockRecord.Name + WmsInOutStockRecordConsts.CloneTag;
+ // var notExist = false;
+ // while (!notExist)
+ // {
+ // var exist = await wmsInOutStockRecordRepository.NameExistAsync(name);
+ // if (exist || wmsInOutStockRecords.Any(x => x.Name == name))
+ // {
+ // name += WmsInOutStockRecordConsts.CloneTag;
+ // continue;
+ // }
+
+ // notExist = true;
+ // }
+
+ // //WmsInOutStockRecord = await wmsInOutStockRecordRepository.InsertAsync(WmsInOutStockRecord.Clone(GuidGenerator.Create(), name, sort++));
+ // wmsInOutStockRecords.Add(WmsInOutStockRecord);
+ // }
+ // }
+ //}
+
+ //return ObjectMapper.Map<List<WmsInOutStockRecord>, List<WmsInOutStockRecordDto>>(wmsInOutStockRecords);
+ return new List<WmsInOutStockRecordDto>();
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鍗曚釜鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="id"></param>
+ /// <returns></returns>
+ public virtual Task DeleteAsync(Guid id)
+ {
+ return wmsInOutStockRecordRepository.DeleteAsync(id);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎澶氫釜鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="ids"></param>
+ /// <returns></returns>
+ public async Task DeleteManyAsync(IEnumerable<Guid> ids)
+ {
+ foreach (var id in ids)
+ {
+ await DeleteAsync(id);
+ }
+ }
+
+ /// <summary>
+ /// 璋冩暣鎺掑簭鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="id"></param>
+ /// <param name="sort"></param>
+ /// <returns></returns>
+ public virtual async Task AdjustSortAsync(Guid id, int sort)
+ {
+ var list = await wmsInOutStockRecordRepository.GetListAsync(null, nameof(WmsInOutStockRecord.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 wmsInOutStockRecordRepository.UpdateManyAsync(list);
+ }
+
+ /// <summary>
+ /// 瀵煎叆鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ /// <exception cref="UserFriendlyException"></exception>
+ public async Task ImportAsync(WmsInOutStockRecordsImportModel input)
+ {
+ Check.NotNull(input, nameof(input));
+
+ var wmsInOutStockRecordCreateDtos = new List<(int RowIndex, WmsInOutStockRecordCreateDto Item)>();
+ var wmsInOutStockRecordUpdateDtos = new List<(int RowIndex, Guid Id, WmsInOutStockRecordUpdateDto Item)>();
+ var importItems = input.WmsInOutStockRecords;
+
+ if (importItems != null && importItems.Any())
+ {
+ #region 瀵煎叆鏍¢獙
+
+ // 鍒ゆ柇鍚嶇О鏄惁閲嶅锛屽苟杈撳嚭绗嚑琛岄噸澶�
+ var duplicateWmsInOutStockRecords = importItems.GroupBy(x => x.MaterialNo).Where(x => x.Count() > 1).ToList();
+ if (duplicateWmsInOutStockRecords?.Any() == true)
+ {
+ var duplicateWmsInOutStockRecordMsgs = duplicateWmsInOutStockRecords.Select(x => $"绗� {string.Join(",", x.Select(x => x.RowIndex))} 琛岋細{x.Key} 鍚嶇О閲嶅");
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝 {string.Join(",", duplicateWmsInOutStockRecordMsgs)}锛岀粓姝㈠鍏�";
+ throw new UserFriendlyException(errorMsg);
+ }
+
+ #endregion
+
+ foreach (var impItem in importItems)
+ {
+ if (impItem.MaterialNo.IsNullOrWhiteSpace() && impItem.MaterialName.IsNullOrWhiteSpace())
+ {
+ continue;
+ }
+
+ if (impItem.MaterialNo.IsNullOrWhiteSpace())
+ {
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊impItem.RowIndex}琛岋細WmsInOutStockRecord鍚嶇О涓嶈兘涓虹┖";
+ throw new UserFriendlyException(errorMsg);
+ }
+
+ var oldWmsInOutStockRecord = await wmsInOutStockRecordRepository.FindByNameAsync(impItem.MaterialNo);
+ if (oldWmsInOutStockRecord != null)
+ {
+ var wmsInOutStockRecordUpdateDto = new WmsInOutStockRecordUpdateDto
+ {
+ OrderNo = impItem.OrderNo,
+MaterialName = impItem.MaterialName,
+MaterialNo = impItem.MaterialNo,
+StockType = impItem.StockType,
+ContainerNo = impItem.ContainerNo,
+MaterialModel = impItem.MaterialModel,
+OperateTime = impItem.OperateTime,
+Remark = impItem.Remark,
+MaterialId = impItem.MaterialId,
+TaskNo = impItem.TaskNo,
+SourcePlace = impItem.SourcePlace,
+ToPlace = impItem.ToPlace,
+IsDisabled = impItem.IsDisabled,
+
+ };
+
+ wmsInOutStockRecordUpdateDtos.Add((impItem.RowIndex, oldWmsInOutStockRecord.Id, wmsInOutStockRecordUpdateDto));
+ }
+ else
+ {
+ var wmsInOutStockRecordCreateDto = new WmsInOutStockRecordCreateDto
+ {
+ OrderNo = impItem.OrderNo,
+MaterialName = impItem.MaterialName,
+MaterialNo = impItem.MaterialNo,
+StockType = impItem.StockType,
+ContainerNo = impItem.ContainerNo,
+MaterialModel = impItem.MaterialModel,
+OperateTime = impItem.OperateTime,
+Remark = impItem.Remark,
+MaterialId = impItem.MaterialId,
+TaskNo = impItem.TaskNo,
+SourcePlace = impItem.SourcePlace,
+ToPlace = impItem.ToPlace,
+IsDisabled = impItem.IsDisabled,
+
+ };
+
+ wmsInOutStockRecordCreateDtos.Add((impItem.RowIndex, wmsInOutStockRecordCreateDto));
+ }
+ }
+ }
+
+ // 鏂板
+ foreach (var wmsInOutStockRecordDto in wmsInOutStockRecordCreateDtos)
+ {
+ try
+ {
+ await CreateAsync(wmsInOutStockRecordDto.Item);
+ }
+ catch (Exception e)
+ {
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsInOutStockRecordDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�";
+ throw new UserFriendlyException(errorMsg);
+ }
+ }
+
+ // 鏇存柊
+ foreach (var wmsInOutStockRecordDto in wmsInOutStockRecordUpdateDtos)
+ {
+ try
+ {
+ await UpdateAsync(wmsInOutStockRecordDto.Id, wmsInOutStockRecordDto.Item);
+ }
+ catch (Exception e)
+ {
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsInOutStockRecordDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�";
+ throw new UserFriendlyException(errorMsg);
+ }
+ }
+ }
+
+ /// <summary>
+ /// 瀵煎嚭鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsInOutStockRecordInput input)
+ {
+ Check.NotNull(input, nameof(input));
+
+ if (input.Sorting.IsNullOrWhiteSpace())
+ {
+ input.Sorting = nameof(WmsInOutStockRecord.Sort);
+ }
+
+ #region 鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�
+
+ //鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�
+ var whereConditions = DynamicGetQueryParams(input);
+
+ #endregion
+
+
+ var list = await wmsInOutStockRecordRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true);
+ var result = ObjectMapper.Map<List<WmsInOutStockRecord>, List<WmsInOutStockRecordDto>>(list);
+
+ var sheets = new Dictionary<string, object>
+ {
+ ["閰嶇疆"] = ExportHelper.ConvertListToExportData(result),
+ };
+
+ var fileName = result.Count > 1 ? "鍑哄叆搴撹褰曡〃鍒楄〃" : result.Count == 1 ? result[0]?.MaterialNo : "WmsInOutStockRecord妯$増";
+ return (sheets, fileName);
+ }
+
+ /// <summary>
+ /// 鏍¢獙鍑哄叆搴撹褰曡〃锛屽綋鏂板缓鎴栨洿鏂版椂
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ protected Task CheckCreateOrUpdateDtoAsync(WmsInOutStockRecordCreateOrUpdateDtoBase input)
+ {
+ Check.NotNull(input, nameof(input));
+ Check.NotNullOrWhiteSpace(input.OrderNo, "鍗曟嵁缂栧彿", 50);
+ Check.NotNullOrWhiteSpace(input.MaterialNo, "鐗╂枡浠跺彿", 50);
+ Check.NotNull(input.StockType, "鎿嶄綔绫诲瀷");
+ Check.NotNullOrWhiteSpace(input.MaterialId, "鐗╂枡ID", 50);
+ Check.NotNullOrWhiteSpace(input.TaskNo, "浠诲姟鍙�", 50);
+
+ return Task.CompletedTask;
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs"
new file mode 100644
index 0000000..8304853
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs"
@@ -0,0 +1,445 @@
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
+using CMS.Plugin.HIAWms.Application.Contracts.Services;
+using CMS.Plugin.HIAWms.Domain.Shared;
+using CMS.Plugin.HIAWms.Domain.Shared.Util;
+using CMS.Plugin.HIAWms.Domain.Shared.WmsMaterial;
+using CMS.Plugin.HIAWms.Domain.WmsMaterial;
+using CmsQueryExtensions.Extension;
+using System.Linq.Expressions;
+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;
+
+/// <summary>
+/// 鐗╂枡鍩虹淇℃伅琛ㄥ簲鐢ㄦ湇鍔�
+/// </summary>
+public class WmsMaterialAppService : CMSPluginAppService, IWmsMaterialAppService
+{
+ private readonly IWmsMaterialRepository wmsmaterialsRepository;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsMaterialAppService"/> class.
+ /// </summary>
+ /// <param name="WmsMaterialRepository">The task job repository.</param>
+ public WmsMaterialAppService(IWmsMaterialRepository WmsMaterialRepository)
+ {
+ wmsmaterialsRepository = WmsMaterialRepository;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎸囧畾鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="id"></param>
+ /// <returns></returns>
+ public virtual async Task<WmsMaterialDto> GetAsync(Guid id)
+ {
+ return ObjectMapper.Map<WmsMaterial, WmsMaterialDto>(await wmsmaterialsRepository.GetAsync(id));
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鑾峰彇鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ public virtual async Task<PagedResultDto<WmsMaterialDto>> GetListAsync(GetWmsMaterialInput input)
+ {
+ Check.NotNull(input, nameof(input));
+
+ if (input.Sorting.IsNullOrWhiteSpace())
+ {
+ input.Sorting = nameof(WmsMaterial.Sort);
+ }
+
+ #region 鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�
+
+ //鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�
+ var whereConditions = DynamicGetQueryParams(input);
+
+ #endregion
+
+ var count = await wmsmaterialsRepository.GetCountAsync(whereConditions);
+ var list = await wmsmaterialsRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount);
+
+ return new PagedResultDto<WmsMaterialDto>(count, ObjectMapper.Map<List<WmsMaterial>, List<WmsMaterialDto>>(list));
+ }
+
+ /// <summary>
+ /// 鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�
+ /// </summary>
+ /// <param name="input">杈撳叆鍙傛暟</param>
+ /// <returns></returns>
+ private FunReturnResultModel<Expression<Func<WmsMaterial, bool>>> DynamicGetQueryParams(GetWmsMaterialInput input)
+ {
+ //鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�
+ var whereConditions = WhereConditionsExtensions.GetWhereConditions<WmsMaterial, GetWmsMaterialInput>(input);
+ if (!whereConditions.IsSuccess)
+ {
+ throw new Exception("鍔ㄦ�佹瀯閫犳煡璇㈡潯浠跺け璐�:" + whereConditions.ErrMsg);
+ }
+
+ //涔熷彲鍐嶆鑷畾涔夋瀯寤烘煡璇㈡潯浠�
+ Expression<Func<WmsMaterial, bool>> extendExpression = a => a.IsDeleted == false;
+ // 浣跨敤 System.Linq.PredicateBuilder 鐨� And
+ var pres = (System.Linq.Expressions.Expression<Func<WmsMaterial, bool>>)(whereConditions.data);
+ whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression);
+
+ return whereConditions;
+ }
+
+ /// <summary>
+ /// 鏂板缓鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ /// <exception cref="UserFriendlyException"></exception>
+ public virtual async Task<WmsMaterialDto> CreateAsync(WmsMaterialCreateDto input)
+ {
+ await CheckCreateOrUpdateDtoAsync(input);
+
+ var exist = await wmsmaterialsRepository.NameExistAsync(input.MaterialCode);
+ if (exist)
+ {
+ throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialCode]);
+ }
+
+ var maxSort = await wmsmaterialsRepository.GetMaxSortAsync();
+ var sort = input.Sort ?? maxSort;
+
+ var insertObj = ObjectMapper.Map<WmsMaterialCreateDto, WmsMaterial>(input);
+ insertObj.Sort = sort;
+ input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None);
+
+ await wmsmaterialsRepository.InsertAsync(insertObj);
+
+ if (input.Sort.HasValue && insertObj.Sort != maxSort)
+ {
+ await AdjustSortAsync(insertObj.Id, insertObj.Sort);
+ }
+
+ return ObjectMapper.Map<WmsMaterial, WmsMaterialDto>(insertObj);
+ }
+
+ /// <summary>
+ /// 鏇存柊鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="id"></param>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ /// <exception cref="UserFriendlyException"></exception>
+ public virtual async Task<WmsMaterialDto> UpdateAsync(Guid id, WmsMaterialUpdateDto input)
+ {
+ await CheckCreateOrUpdateDtoAsync(input);
+
+ var updateObj = await wmsmaterialsRepository.GetAsync(id);
+ var exist = await wmsmaterialsRepository.NameExistAsync(input.MaterialCode, updateObj.Id);
+ if (exist)
+ {
+ throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialCode]);
+ }
+
+ updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
+ input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None);
+
+ updateObj.MaterialCode = input.MaterialCode;
+ updateObj.MaterialName = input.MaterialName;
+ updateObj.PurchaseType = input.PurchaseType;
+ updateObj.MaterialType = input.MaterialType;
+ updateObj.PrimaryUnit = input.PrimaryUnit;
+ updateObj.Standard = input.Standard;
+ updateObj.OuterDiameter = input.OuterDiameter;
+ updateObj.WallThickness = input.WallThickness;
+ updateObj.MaterialQuality = input.MaterialQuality;
+ updateObj.Length = input.Length;
+ updateObj.IsMainBranch = input.IsMainBranch;
+ updateObj.Factory = input.Factory;
+ updateObj.Certification = input.Certification;
+ updateObj.RedundantField1 = input.RedundantField1;
+ updateObj.RedundantField2 = input.RedundantField2;
+ updateObj.RedundantField3 = input.RedundantField3;
+ updateObj.Remark = input.Remark;
+ updateObj.IsDisabled = input.IsDisabled;
+
+
+ await wmsmaterialsRepository.UpdateAsync(updateObj);
+
+ return ObjectMapper.Map<WmsMaterial, WmsMaterialDto>(updateObj);
+ }
+
+ /// <summary>
+ /// 鍏嬮殕鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="ids"></param>
+ /// <returns></returns>
+ public async Task<List<WmsMaterialDto>> CloneAsync(IEnumerable<Guid> ids)
+ {
+ //var wmsmaterialss = new List<WmsMaterial>();
+ //if (ids != null)
+ //{
+ // var sort = await wmsmaterialsRepository.GetMaxSortAsync();
+ // foreach (var id in ids)
+ // {
+ // var WmsMaterial = await wmsmaterialsRepository.FindAsync(id);
+ // if (WmsMaterial != null)
+ // {
+ // var name = WmsMaterial.Name + WmsMaterialConsts.CloneTag;
+ // var notExist = false;
+ // while (!notExist)
+ // {
+ // var exist = await wmsmaterialsRepository.NameExistAsync(name);
+ // if (exist || wmsmaterialss.Any(x => x.Name == name))
+ // {
+ // name += WmsMaterialConsts.CloneTag;
+ // continue;
+ // }
+
+ // notExist = true;
+ // }
+
+ // //WmsMaterial = await wmsmaterialsRepository.InsertAsync(WmsMaterial.Clone(GuidGenerator.Create(), name, sort++));
+ // wmsmaterialss.Add(WmsMaterial);
+ // }
+ // }
+ //}
+
+ //return ObjectMapper.Map<List<WmsMaterial>, List<WmsMaterialDto>>(wmsmaterialss);
+ return new List<WmsMaterialDto>();
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鍗曚釜鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="id"></param>
+ /// <returns></returns>
+ public virtual Task DeleteAsync(Guid id)
+ {
+ return wmsmaterialsRepository.DeleteAsync(id);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎澶氫釜鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="ids"></param>
+ /// <returns></returns>
+ public async Task DeleteManyAsync(IEnumerable<Guid> ids)
+ {
+ foreach (var id in ids)
+ {
+ await DeleteAsync(id);
+ }
+ }
+
+ /// <summary>
+ /// 璋冩暣鎺掑簭鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="id"></param>
+ /// <param name="sort"></param>
+ /// <returns></returns>
+ public virtual async Task AdjustSortAsync(Guid id, int sort)
+ {
+ var list = await wmsmaterialsRepository.GetListAsync(null, nameof(WmsMaterial.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 wmsmaterialsRepository.UpdateManyAsync(list);
+ }
+
+ /// <summary>
+ /// 瀵煎叆鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ /// <exception cref="UserFriendlyException"></exception>
+ public async Task ImportAsync(WmsMaterialsImportModel input)
+ {
+ Check.NotNull(input, nameof(input));
+
+ var wmsmaterialsCreateDtos = new List<(int RowIndex, WmsMaterialCreateDto Item)>();
+ var wmsmaterialsUpdateDtos = new List<(int RowIndex, Guid Id, WmsMaterialUpdateDto Item)>();
+ var importItems = input.WmsMaterials;
+
+ if (importItems != null && importItems.Any())
+ {
+ #region 瀵煎叆鏍¢獙
+
+ // 鍒ゆ柇鍚嶇О鏄惁閲嶅锛屽苟杈撳嚭绗嚑琛岄噸澶�
+ var duplicateWmsMaterials = importItems.GroupBy(x => x.MaterialCode).Where(x => x.Count() > 1).ToList();
+ if (duplicateWmsMaterials?.Any() == true)
+ {
+ var duplicateWmsMaterialMsgs = duplicateWmsMaterials.Select(x => $"绗� {string.Join(",", x.Select(x => x.RowIndex))} 琛岋細{x.Key} 鍚嶇О閲嶅");
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝 {string.Join(",", duplicateWmsMaterialMsgs)}锛岀粓姝㈠鍏�";
+ throw new UserFriendlyException(errorMsg);
+ }
+
+ #endregion
+
+ foreach (var impItem in importItems)
+ {
+ if (impItem.MaterialCode.IsNullOrWhiteSpace() && impItem.MaterialName.IsNullOrWhiteSpace())
+ {
+ continue;
+ }
+
+ if (impItem.MaterialCode.IsNullOrWhiteSpace())
+ {
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊impItem.RowIndex}琛岋細WmsMaterial鍚嶇О涓嶈兘涓虹┖";
+ throw new UserFriendlyException(errorMsg);
+ }
+
+ var oldWmsMaterial = await wmsmaterialsRepository.FindByNameAsync(impItem.MaterialCode);
+ if (oldWmsMaterial != null)
+ {
+ var wmsmaterialsUpdateDto = new WmsMaterialUpdateDto
+ {
+ MaterialCode = impItem.MaterialCode,
+ MaterialName = impItem.MaterialName,
+ PurchaseType = impItem.PurchaseType,
+ MaterialType = impItem.MaterialType,
+ PrimaryUnit = impItem.PrimaryUnit,
+ Standard = impItem.Standard,
+ OuterDiameter = impItem.OuterDiameter,
+ WallThickness = impItem.WallThickness,
+ MaterialQuality = impItem.MaterialQuality,
+ Length = impItem.Length,
+ IsMainBranch = impItem.IsMainBranch,
+ Factory = impItem.Factory,
+ Certification = impItem.Certification,
+ Remark = impItem.Remark,
+ };
+
+ wmsmaterialsUpdateDtos.Add((impItem.RowIndex, oldWmsMaterial.Id, wmsmaterialsUpdateDto));
+ }
+ else
+ {
+ var wmsmaterialsCreateDto = new WmsMaterialCreateDto
+ {
+ MaterialCode = impItem.MaterialCode,
+ MaterialName = impItem.MaterialName,
+ PurchaseType = impItem.PurchaseType,
+ MaterialType = impItem.MaterialType,
+ PrimaryUnit = impItem.PrimaryUnit,
+ Standard = impItem.Standard,
+ OuterDiameter = impItem.OuterDiameter,
+ WallThickness = impItem.WallThickness,
+ MaterialQuality = impItem.MaterialQuality,
+ Length = impItem.Length,
+ IsMainBranch = impItem.IsMainBranch,
+ Factory = impItem.Factory,
+ Certification = impItem.Certification,
+ Remark = impItem.Remark,
+ };
+
+ wmsmaterialsCreateDtos.Add((impItem.RowIndex, wmsmaterialsCreateDto));
+ }
+ }
+ }
+
+ // 鏂板
+ foreach (var wmsmaterialsDto in wmsmaterialsCreateDtos)
+ {
+ try
+ {
+ await CreateAsync(wmsmaterialsDto.Item);
+ }
+ catch (Exception e)
+ {
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsmaterialsDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�";
+ throw new UserFriendlyException(errorMsg);
+ }
+ }
+
+ // 鏇存柊
+ foreach (var wmsmaterialsDto in wmsmaterialsUpdateDtos)
+ {
+ try
+ {
+ await UpdateAsync(wmsmaterialsDto.Id, wmsmaterialsDto.Item);
+ }
+ catch (Exception e)
+ {
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsmaterialsDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�";
+ throw new UserFriendlyException(errorMsg);
+ }
+ }
+ }
+
+ /// <summary>
+ /// 瀵煎嚭鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsMaterialInput input)
+ {
+ Check.NotNull(input, nameof(input));
+
+ if (input.Sorting.IsNullOrWhiteSpace())
+ {
+ input.Sorting = nameof(WmsMaterial.Sort);
+ }
+
+ #region 鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�
+
+ //鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�
+ var whereConditions = DynamicGetQueryParams(input);
+
+ #endregion
+
+
+ var list = await wmsmaterialsRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true);
+ var result = ObjectMapper.Map<List<WmsMaterial>, List<WmsMaterialDto>>(list);
+
+ var sheets = new Dictionary<string, object>
+ {
+ ["閰嶇疆"] = ExportHelper.ConvertListToExportData(result),
+ };
+
+ var fileName = result.Count > 1 ? "WmsMaterial鍒楄〃" : result.Count == 1 ? result[0]?.MaterialCode : "WmsMaterial妯$増";
+ return (sheets, fileName);
+ }
+
+ /// <summary>
+ /// 鏍¢獙鐗╂枡鍩虹淇℃伅琛紝褰撴柊寤烘垨鏇存柊鏃�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ protected Task CheckCreateOrUpdateDtoAsync(WmsMaterialCreateOrUpdateDtoBase input)
+ {
+ Check.NotNull(input, nameof(input));
+ Check.NotNullOrWhiteSpace(input.MaterialCode, "鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛�", 64);
+ Check.NotNullOrWhiteSpace(input.MaterialName, "鐗╂枡鍚嶇О", 128);
+ Check.NotNull(input.PurchaseType, "閲囪喘绫诲瀷锛堟灇涓惧�硷級");
+ Check.NotNull(input.MaterialType, "鐗╂枡绫诲瀷锛堟灇涓惧�硷級");
+ Check.NotNull(input.OuterDiameter, "澶栧緞锛堝崟浣嶏細mm锛�");
+ Check.NotNull(input.WallThickness, "澹佸帤锛堝崟浣嶏細mm锛�");
+ Check.NotNull(input.Length, "闀垮害锛堝崟浣嶏細m锛�");
+ Check.NotNull(input.IsMainBranch, "鏄惁涓轰富鏀");
+
+ return Task.CompletedTask;
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsPlaceAppService.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsPlaceAppService.cs"
new file mode 100644
index 0000000..8d3b362
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsPlaceAppService.cs"
@@ -0,0 +1,322 @@
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsPlaces;
+using CMS.Plugin.HIAWms.Application.Contracts.Services;
+using CMS.Plugin.HIAWms.Domain.WmsPlaces;
+using CMS.Plugin.HIAWms.Domain.Shared;
+using CMS.Plugin.HIAWms.Domain.Shared.WmsPlaces;
+using Volo.Abp;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.Data;
+using Volo.Abp.ObjectExtending;
+using CMS.Plugin.HIAWms.Domain.Shared.Util;
+
+namespace CMS.Plugin.HIAWms.Application.Implements;
+
+/// <inheritdoc />
+public class WmsPlaceAppService : CMSPluginAppService, IWmsPlaceAppService
+{
+ private readonly IWmsPlaceRepository _wmsplaceRepository;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsPlaceAppService"/> class.
+ /// </summary>
+ /// <param name="wmsplaceRepository">The task job repository.</param>
+ public WmsPlaceAppService(IWmsPlaceRepository wmsplaceRepository)
+ {
+ _wmsplaceRepository = wmsplaceRepository;
+ }
+
+ /// <inheritdoc />
+ public virtual async Task<WmsPlaceDto> GetAsync(Guid id)
+ {
+ return ObjectMapper.Map<WmsPlace, WmsPlaceDto>(await _wmsplaceRepository.GetAsync(id));
+ }
+
+ /// <inheritdoc />
+ public virtual async Task<PagedResultDto<WmsPlaceDto>> GetListAsync(GetWmsPlacesInput input)
+ {
+ Check.NotNull(input, nameof(input));
+
+ if (input.Sorting.IsNullOrWhiteSpace())
+ {
+ input.Sorting = nameof(WmsPlace.Sort);
+ }
+
+ var specification = new WmsPlaceSpecification(input.Name);
+ var place = ObjectMapper.Map<GetWmsPlacesInput, 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);
+
+ return new PagedResultDto<WmsPlaceDto>(count, ObjectMapper.Map<List<WmsPlace>, List<WmsPlaceDto>>(list));
+ }
+
+ /// <inheritdoc />
+ public virtual async Task<WmsPlaceDto> CreateAsync(WmsPlaceCreateDto input)
+ {
+ await CheckCreateOrUpdateDtoAsync(input);
+
+ var exist = await _wmsplaceRepository.NameExistAsync(input.PlaceNo);
+ if (exist)
+ {
+ throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.PlaceNo]);
+ }
+
+ var maxSort = await _wmsplaceRepository.GetMaxSortAsync();
+ var sort = input.Sort ?? maxSort;
+ var wmsplace = ObjectMapper.Map<WmsPlaceCreateDto,WmsPlace>(input);
+ input.MapExtraPropertiesTo(wmsplace, MappingPropertyDefinitionChecks.None);
+ wmsplace.Sort = sort;
+ await _wmsplaceRepository.InsertAsync(wmsplace);
+
+ if (input.Sort.HasValue && wmsplace.Sort != maxSort)
+ {
+ await AdjustSortAsync(wmsplace.Id, wmsplace.Sort);
+ }
+
+ return ObjectMapper.Map<WmsPlace, WmsPlaceDto>(wmsplace);
+ }
+
+ /// <inheritdoc />
+ public virtual async Task<WmsPlaceDto> UpdateAsync(Guid id, WmsPlaceUpdateDto input)
+ {
+ await CheckCreateOrUpdateDtoAsync(input);
+
+ var wmsplace = await _wmsplaceRepository.GetAsync(id);
+ var exist = await _wmsplaceRepository.NameExistAsync(input.PlaceNo, wmsplace.Id);
+ if (exist)
+ {
+ throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.PlaceNo]);
+ }
+
+ wmsplace.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
+ input.MapExtraPropertiesTo(wmsplace, MappingPropertyDefinitionChecks.None);
+
+ wmsplace.StorageTypeNo = input.StorageTypeNo;
+ wmsplace.PlaceStatus = input.PlaceStatus;
+ wmsplace.AreaCode = input.AreaCode;
+ wmsplace.Aisle = input.Aisle;
+ wmsplace.RowNo = input.RowNo;
+ wmsplace.ColumnNo = input.ColumnNo;
+ wmsplace.LayerNo = input.LayerNo;
+ wmsplace.Islock = input.Islock;
+ wmsplace.EmptyContainer = input.EmptyContainer;
+ wmsplace.RedundantField1 = input.RedundantField1;
+ wmsplace.RedundantField2 = input.RedundantField2;
+ wmsplace.RedundantField3 = input.RedundantField3;
+ wmsplace.Remark = input.Remark;
+
+ await _wmsplaceRepository.UpdateAsync(wmsplace);
+
+ return ObjectMapper.Map<WmsPlace, WmsPlaceDto>(wmsplace);
+ }
+
+ /// <inheritdoc />
+ public async Task<List<WmsPlaceDto>> CloneAsync(IEnumerable<Guid> ids)
+ {
+ var wmsplaces = new List<WmsPlace>();
+ if (ids != null)
+ {
+ var sort = await _wmsplaceRepository.GetMaxSortAsync();
+ foreach (var id in ids)
+ {
+ var wmsplace = await _wmsplaceRepository.FindAsync(id);
+ if (wmsplace != null)
+ {
+ var name = wmsplace.PlaceNo + WmsPlaceConsts.CloneTag;
+ var notExist = false;
+ while (!notExist)
+ {
+ var exist = await _wmsplaceRepository.NameExistAsync(name);
+ if (exist || wmsplaces.Any(x => x.PlaceNo == name))
+ {
+ name += WmsPlaceConsts.CloneTag;
+ continue;
+ }
+
+ notExist = true;
+ }
+
+ //wmsplace = await _wmsplaceRepository.InsertAsync(wmsplace.Clone(GuidGenerator.Create(), name, sort++));
+ wmsplaces.Add(wmsplace);
+ }
+ }
+ }
+
+ return ObjectMapper.Map<List<WmsPlace>, List<WmsPlaceDto>>(wmsplaces);
+ }
+
+ /// <inheritdoc />
+ public virtual Task DeleteAsync(Guid id)
+ {
+ return _wmsplaceRepository.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 _wmsplaceRepository.GetListAsync(null,nameof(WmsPlace.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 _wmsplaceRepository.UpdateManyAsync(list);
+ }
+
+ /// <inheritdoc />
+ public async Task ImportAsync(WmsPlacesImportModel input)
+ {
+ Check.NotNull(input, nameof(input));
+
+ var wmsplaceCreateDtos = new List<(int RowIndex, WmsPlaceCreateDto Item)>();
+ var wmsplaceUpdateDtos = new List<(int RowIndex, Guid Id, WmsPlaceUpdateDto Item)>();
+ var wmsplaces = input.WmsPlaces;
+
+ if (wmsplaces != null && wmsplaces.Any())
+ {
+ #region 瀵煎叆鏍¢獙
+
+ // 鍒ゆ柇鍚嶇О鏄惁閲嶅锛屽苟杈撳嚭绗嚑琛岄噸澶�
+ var duplicateWmsPlaces = wmsplaces.GroupBy(x => x.PlaceNo).Where(x => x.Count() > 1).ToList();
+ if (duplicateWmsPlaces?.Any() == true)
+ {
+ var duplicateWmsPlaceMsgs = duplicateWmsPlaces.Select(x => $"绗� {string.Join(",", x.Select(x => x.RowIndex))} 琛岋細{x.Key} 鍚嶇О閲嶅");
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝 {string.Join(",", duplicateWmsPlaceMsgs)}锛岀粓姝㈠鍏�";
+ throw new UserFriendlyException(errorMsg);
+ }
+
+ #endregion
+
+ foreach (var wmsplace in wmsplaces)
+ {
+ if (wmsplace.PlaceNo.IsNullOrWhiteSpace())
+ {
+ continue;
+ }
+
+ if (wmsplace.PlaceNo.IsNullOrWhiteSpace())
+ {
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsplace.RowIndex}琛岋細WmsPlace鍚嶇О涓嶈兘涓虹┖";
+ throw new UserFriendlyException(errorMsg);
+ }
+
+ var oldWmsPlace = await _wmsplaceRepository.FindByNameAsync(wmsplace.PlaceNo);
+ if (oldWmsPlace != null)
+ {
+ var wmsplaceUpdateDto = new WmsPlaceUpdateDto
+ {
+ PlaceNo = wmsplace.PlaceNo,
+ PlaceStatus = wmsplace.PlaceStatus,
+ Remark = wmsplace.Remark,
+ };
+
+ wmsplaceUpdateDtos.Add((wmsplace.RowIndex, oldWmsPlace.Id, wmsplaceUpdateDto));
+ }
+ else
+ {
+ var wmsplaceCreateDto = new WmsPlaceCreateDto
+ {
+ PlaceNo = wmsplace.PlaceNo,
+ PlaceStatus = wmsplace.PlaceStatus,
+ Remark = wmsplace.Remark,
+ };
+
+ wmsplaceCreateDtos.Add((wmsplace.RowIndex, wmsplaceCreateDto));
+ }
+ }
+ }
+
+ // 鏂板
+ foreach (var wmsplaceDto in wmsplaceCreateDtos)
+ {
+ try
+ {
+ await CreateAsync(wmsplaceDto.Item);
+ }
+ catch (Exception e)
+ {
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsplaceDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�";
+ throw new UserFriendlyException(errorMsg);
+ }
+ }
+
+ // 鏇存柊
+ foreach (var wmsplaceDto in wmsplaceUpdateDtos)
+ {
+ try
+ {
+ await UpdateAsync(wmsplaceDto.Id, wmsplaceDto.Item);
+ }
+ catch (Exception e)
+ {
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsplaceDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�";
+ throw new UserFriendlyException(errorMsg);
+ }
+ }
+ }
+
+ /// <inheritdoc />
+ public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsPlacesInput input)
+ {
+ Check.NotNull(input, nameof(input));
+
+ if (input.Sorting.IsNullOrWhiteSpace())
+ {
+ input.Sorting = nameof(WmsPlace.Sort);
+ }
+
+ var specification = new WmsPlaceSpecification(input.Name);
+ var place = ObjectMapper.Map<GetWmsPlacesInput, 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);
+
+ var sheets = new Dictionary<string, object>
+ {
+ ["閰嶇疆"] = ExportHelper.ConvertListToExportData(result),
+ };
+
+ var fileName = result.Count > 1 ? "WmsPlace鍒楄〃" : result.Count == 1 ? result.First()?.PlaceNo : "WmsPlace妯$増";
+ return (sheets, fileName);
+ }
+
+ /// <summary>
+ /// Checks the create or update dto asynchronous.
+ /// </summary>
+ /// <param name="input">The input.</param>
+ protected Task CheckCreateOrUpdateDtoAsync(WmsPlaceCreateOrUpdateDtoBase input)
+ {
+ Check.NotNull(input, nameof(input));
+ Check.NotNullOrWhiteSpace(input.PlaceNo, "缂栧彿", WmsPlaceConsts.MaxCodeLength);
+ Check.Length(input.Remark, "澶囨敞", WmsPlaceConsts.MaxRemarkLength);
+ return Task.CompletedTask;
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsStoreAppService.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsStoreAppService.cs"
new file mode 100644
index 0000000..522c3b5
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsStoreAppService.cs"
@@ -0,0 +1,313 @@
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsStores;
+using CMS.Plugin.HIAWms.Application.Contracts.Services;
+using CMS.Plugin.HIAWms.Domain.WmsStores;
+using CMS.Plugin.HIAWms.Domain.Shared;
+using CMS.Plugin.HIAWms.Domain.Shared.WmsStores;
+using Volo.Abp;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.Data;
+using Volo.Abp.ObjectExtending;
+using CMS.Plugin.HIAWms.Domain.Shared.Util;
+
+namespace CMS.Plugin.HIAWms.Application.Implements;
+
+/// <inheritdoc />
+public class WmsStoreAppService : CMSPluginAppService, IWmsStoreAppService
+{
+ private readonly IWmsStoreRepository _wmsstoreRepository;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsStoreAppService"/> class.
+ /// </summary>
+ /// <param name="wmsstoreRepository">The task job repository.</param>
+ public WmsStoreAppService(IWmsStoreRepository wmsstoreRepository)
+ {
+ _wmsstoreRepository = wmsstoreRepository;
+ }
+
+ /// <inheritdoc />
+ public virtual async Task<WmsStoreDto> GetAsync(Guid id)
+ {
+ return ObjectMapper.Map<WmsStore, WmsStoreDto>(await _wmsstoreRepository.GetAsync(id));
+ }
+
+ /// <inheritdoc />
+ public virtual async Task<PagedResultDto<WmsStoreDto>> GetListAsync(GetWmsStoresInput input)
+ {
+ Check.NotNull(input, nameof(input));
+
+ if (input.Sorting.IsNullOrWhiteSpace())
+ {
+ input.Sorting = nameof(WmsStore.Sort);
+ }
+
+ var specification = new WmsStoreSpecification(input.Name);
+ var store = ObjectMapper.Map<GetWmsStoresInput, WmsStore>(input);
+ var count = await _wmsstoreRepository.GetCountAsync(store,input.Filter, specification);
+ var list = await _wmsstoreRepository.GetListAsync(store,input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter, specification);
+
+ return new PagedResultDto<WmsStoreDto>(count, ObjectMapper.Map<List<WmsStore>, List<WmsStoreDto>>(list));
+ }
+
+ /// <inheritdoc />
+ public virtual async Task<WmsStoreDto> CreateAsync(WmsStoreCreateDto input)
+ {
+ await CheckCreateOrUpdateDtoAsync(input);
+
+ var exist = await _wmsstoreRepository.NameExistAsync(input.StoreCode);
+ if (exist)
+ {
+ throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.StoreCode]);
+ }
+
+ var maxSort = await _wmsstoreRepository.GetMaxSortAsync();
+ var sort = input.Sort ?? maxSort;
+ var wmsstore = ObjectMapper.Map<WmsStoreCreateDto,WmsStore>(input);
+ wmsstore.Sort = sort;
+ input.MapExtraPropertiesTo(wmsstore, MappingPropertyDefinitionChecks.None);
+
+ await _wmsstoreRepository.InsertAsync(wmsstore);
+
+ if (input.Sort.HasValue && wmsstore.Sort != maxSort)
+ {
+ await AdjustSortAsync(wmsstore.Id, wmsstore.Sort);
+ }
+
+ return ObjectMapper.Map<WmsStore, WmsStoreDto>(wmsstore);
+ }
+
+ /// <inheritdoc />
+ public virtual async Task<WmsStoreDto> UpdateAsync(Guid id, WmsStoreUpdateDto input)
+ {
+ await CheckCreateOrUpdateDtoAsync(input);
+
+ var wmsstore = await _wmsstoreRepository.GetAsync(id);
+ var exist = await _wmsstoreRepository.NameExistAsync(input.StoreCode, wmsstore.Id);
+ if (exist)
+ {
+ throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.StoreCode]);
+ }
+
+ wmsstore.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
+ input.MapExtraPropertiesTo(wmsstore, MappingPropertyDefinitionChecks.None);
+
+ wmsstore.StoreName = input.StoreName;
+ wmsstore.Remark = input.Remark;
+
+ await _wmsstoreRepository.UpdateAsync(wmsstore);
+
+ return ObjectMapper.Map<WmsStore, WmsStoreDto>(wmsstore);
+ }
+
+ /// <inheritdoc />
+ public async Task<List<WmsStoreDto>> CloneAsync(IEnumerable<Guid> ids)
+ {
+ var wmsstores = new List<WmsStore>();
+ if (ids != null)
+ {
+ var sort = await _wmsstoreRepository.GetMaxSortAsync();
+ foreach (var id in ids)
+ {
+ var wmsstore = await _wmsstoreRepository.FindAsync(id);
+ if (wmsstore != null)
+ {
+ var name = wmsstore.StoreName + WmsStoreConsts.CloneTag;
+ var notExist = false;
+ while (!notExist)
+ {
+ var exist = await _wmsstoreRepository.NameExistAsync(name);
+ if (exist || wmsstores.Any(x => x.StoreCode == name))
+ {
+ name += WmsStoreConsts.CloneTag;
+ continue;
+ }
+
+ notExist = true;
+ }
+
+ //wmsstore = await _wmsstoreRepository.InsertAsync(wmsstore.Clone(GuidGenerator.Create(), name, sort++));
+ wmsstores.Add(wmsstore);
+ }
+ }
+ }
+
+ return ObjectMapper.Map<List<WmsStore>, List<WmsStoreDto>>(wmsstores);
+ }
+
+ /// <inheritdoc />
+ public virtual Task DeleteAsync(Guid id)
+ {
+ return _wmsstoreRepository.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 _wmsstoreRepository.GetListAsync(null,nameof(WmsStore.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 _wmsstoreRepository.UpdateManyAsync(list);
+ }
+
+ /// <inheritdoc />
+ public async Task ImportAsync(WmsStoresImportModel input)
+ {
+ Check.NotNull(input, nameof(input));
+
+ var wmsstoreCreateDtos = new List<(int RowIndex, WmsStoreCreateDto Item)>();
+ var wmsstoreUpdateDtos = new List<(int RowIndex, Guid Id, WmsStoreUpdateDto Item)>();
+ var wmsstores = input.WmsStores;
+
+ if (wmsstores != null && wmsstores.Any())
+ {
+ #region 瀵煎叆鏍¢獙
+
+ // 鍒ゆ柇鍚嶇О鏄惁閲嶅锛屽苟杈撳嚭绗嚑琛岄噸澶�
+ var duplicateWmsStores = wmsstores.GroupBy(x => x.StoreCode).Where(x => x.Count() > 1).ToList();
+ if (duplicateWmsStores?.Any() == true)
+ {
+ var duplicateWmsStoreMsgs = duplicateWmsStores.Select(x => $"绗� {string.Join(",", x.Select(x => x.RowIndex))} 琛岋細{x.Key} 鍚嶇О閲嶅");
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝 {string.Join(",", duplicateWmsStoreMsgs)}锛岀粓姝㈠鍏�";
+ throw new UserFriendlyException(errorMsg);
+ }
+
+ #endregion
+
+ foreach (var wmsstore in wmsstores)
+ {
+ if (wmsstore.StoreCode.IsNullOrWhiteSpace() && wmsstore.StoreName.IsNullOrWhiteSpace())
+ {
+ continue;
+ }
+
+ if (wmsstore.StoreCode.IsNullOrWhiteSpace())
+ {
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsstore.RowIndex}琛岋細WmsStore鍚嶇О涓嶈兘涓虹┖";
+ throw new UserFriendlyException(errorMsg);
+ }
+
+ var oldWmsStore = await _wmsstoreRepository.FindByNameAsync(wmsstore.StoreCode);
+ if (oldWmsStore != null)
+ {
+ var wmsstoreUpdateDto = new WmsStoreUpdateDto
+ {
+ StoreCode = wmsstore.StoreCode,
+ StoreName = wmsstore.StoreName,
+ Remark = wmsstore.Remark,
+ };
+
+ wmsstoreUpdateDtos.Add((wmsstore.RowIndex, oldWmsStore.Id, wmsstoreUpdateDto));
+ }
+ else
+ {
+ var wmsstoreCreateDto = new WmsStoreCreateDto
+ {
+ StoreCode = wmsstore.StoreCode,
+ StoreName = wmsstore.StoreName,
+ Remark = wmsstore.Remark,
+ };
+
+ wmsstoreCreateDtos.Add((wmsstore.RowIndex, wmsstoreCreateDto));
+ }
+ }
+ }
+
+ // 鏂板
+ foreach (var wmsstoreDto in wmsstoreCreateDtos)
+ {
+ try
+ {
+ await CreateAsync(wmsstoreDto.Item);
+ }
+ catch (Exception e)
+ {
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsstoreDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�";
+ throw new UserFriendlyException(errorMsg);
+ }
+ }
+
+ // 鏇存柊
+ foreach (var wmsstoreDto in wmsstoreUpdateDtos)
+ {
+ try
+ {
+ await UpdateAsync(wmsstoreDto.Id, wmsstoreDto.Item);
+ }
+ catch (Exception e)
+ {
+ var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsstoreDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�";
+ throw new UserFriendlyException(errorMsg);
+ }
+ }
+ }
+
+ /// <inheritdoc />
+ public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsStoresInput input)
+ {
+ Check.NotNull(input, nameof(input));
+
+ if (input.Sorting.IsNullOrWhiteSpace())
+ {
+ input.Sorting = nameof(WmsStore.Sort);
+ }
+
+ var specification = new WmsStoreSpecification(input.Name);
+ var store = ObjectMapper.Map<GetWmsStoresInput, WmsStore>(input);
+ var list = await _wmsstoreRepository.GetListAsync(store, input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter, specification, includeDetails: true);
+ var result = ObjectMapper.Map<List<WmsStore>, List<WmsStoreDto>>(list);
+
+ var sheets = new Dictionary<string, object>
+ {
+ ["閰嶇疆"] = ExportHelper.ConvertListToExportData(result),
+ };
+
+ var fileName = result.Count > 1 ? "WmsStore鍒楄〃" : result.Count == 1 ? result.First()?.StoreCode : "WmsStore妯$増";
+ return (sheets, fileName);
+ }
+
+ /// <summary>
+ /// Checks the create or update dto asynchronous.
+ /// </summary>
+ /// <param name="input">The input.</param>
+ protected Task CheckCreateOrUpdateDtoAsync(WmsStoreCreateOrUpdateDtoBase input)
+ {
+ Check.NotNull(input, nameof(input));
+ Check.NotNullOrWhiteSpace(input.StoreCode, "缂栧彿", WmsStoreConsts.MaxCodeLength);
+ Check.NotNullOrWhiteSpace(input.StoreName, "鍚嶇О", WmsStoreConsts.MaxNameLength);
+ Check.Length(input.Remark, "澶囨敞", WmsStoreConsts.MaxRemarkLength);
+ return Task.CompletedTask;
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsAreaAutoMapperProfile.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsAreaAutoMapperProfile.cs"
new file mode 100644
index 0000000..ccf02e3
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsAreaAutoMapperProfile.cs"
@@ -0,0 +1,26 @@
+using AutoMapper;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsAreas;
+using CMS.Plugin.HIAWms.Domain.WmsAreas;
+using Volo.Abp.ObjectExtending;
+
+namespace CMS.Plugin.HIAWms.Application.MapperProfiles;
+
+/// <summary>
+/// AutoMapper閰嶇疆
+/// </summary>
+/// <seealso cref="AutoMapper.Profile" />
+public class WmsAreaAutoMapperProfile : Profile
+{
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsAreaAutoMapperProfile"/> class.
+ /// </summary>
+ public WmsAreaAutoMapperProfile()
+ {
+ /* You can configure your AutoMapper mapping configuration here.
+ * Alternatively, you can split your mapping configurations
+ * into multiple profile classes for a better organization. */
+ CreateMap<WmsArea, WmsAreaDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
+ CreateMap<WmsAreaCreateDto, WmsArea>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
+ CreateMap<GetWmsAreasInput, WmsArea>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsContainerAutoMapperProfile.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsContainerAutoMapperProfile.cs"
new file mode 100644
index 0000000..672037e
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsContainerAutoMapperProfile.cs"
@@ -0,0 +1,26 @@
+using AutoMapper;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainers;
+using CMS.Plugin.HIAWms.Domain.WmsContainers;
+using Volo.Abp.ObjectExtending;
+
+namespace CMS.Plugin.HIAWms.Application.MapperProfiles;
+
+/// <summary>
+/// AutoMapper閰嶇疆
+/// </summary>
+/// <seealso cref="AutoMapper.Profile" />
+public class WmsContainerAutoMapperProfile : Profile
+{
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsContainerAutoMapperProfile"/> class.
+ /// </summary>
+ public WmsContainerAutoMapperProfile()
+ {
+ /* You can configure your AutoMapper mapping configuration here.
+ * Alternatively, you can split your mapping configurations
+ * into multiple profile classes for a better organization. */
+ CreateMap<WmsContainer, WmsContainerDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
+ CreateMap<WmsContainerCreateDto, WmsContainer>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
+ CreateMap<GetWmsContainersInput, WmsContainer>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsInOutStockRecordAutoMapperProfile.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsInOutStockRecordAutoMapperProfile.cs"
new file mode 100644
index 0000000..c4d9c53
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsInOutStockRecordAutoMapperProfile.cs"
@@ -0,0 +1,26 @@
+using AutoMapper;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord;
+using CMS.Plugin.HIAWms.Domain.WmsInOutStockRecord;
+using Volo.Abp.ObjectExtending;
+
+namespace CMS.Plugin.HIAWms.Application.MapperProfiles;
+
+/// <summary>
+/// 鍑哄叆搴撹褰曡〃AutoMapper閰嶇疆
+/// </summary>
+/// <seealso cref="AutoMapper.Profile" />
+public class WmsInOutStockRecordAutoMapperProfile : Profile
+{
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsInOutStockRecordAutoMapperProfile"/> class.
+ /// </summary>
+ public WmsInOutStockRecordAutoMapperProfile()
+ {
+ /* You can configure your AutoMapper mapping configuration here.
+ * Alternatively, you can split your mapping configurations
+ * into multiple profile classes for a better organization. */
+ CreateMap<WmsInOutStockRecord, WmsInOutStockRecordDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
+ CreateMap<WmsInOutStockRecordCreateDto, WmsInOutStockRecord>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
+ CreateMap<GetWmsInOutStockRecordInput, WmsInOutStockRecord>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsMaterialAutoMapperProfile.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsMaterialAutoMapperProfile.cs"
new file mode 100644
index 0000000..a74d8b0
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsMaterialAutoMapperProfile.cs"
@@ -0,0 +1,26 @@
+using AutoMapper;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
+using CMS.Plugin.HIAWms.Domain.WmsMaterial;
+using Volo.Abp.ObjectExtending;
+
+namespace CMS.Plugin.HIAWms.Application.MapperProfiles;
+
+/// <summary>
+/// AutoMapper閰嶇疆
+/// </summary>
+/// <seealso cref="AutoMapper.Profile" />
+public class WmsMaterialAutoMapperProfile : Profile
+{
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsMaterialAutoMapperProfile"/> class.
+ /// </summary>
+ public WmsMaterialAutoMapperProfile()
+ {
+ /* You can configure your AutoMapper mapping configuration here.
+ * Alternatively, you can split your mapping configurations
+ * into multiple profile classes for a better organization. */
+ CreateMap<WmsMaterial, WmsMaterialDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
+ CreateMap<WmsMaterialCreateDto, WmsMaterial>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
+ CreateMap<GetWmsMaterialInput, WmsMaterial>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsPlaceAutoMapperProfile.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsPlaceAutoMapperProfile.cs"
new file mode 100644
index 0000000..f58553d
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsPlaceAutoMapperProfile.cs"
@@ -0,0 +1,26 @@
+using AutoMapper;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsPlaces;
+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 WmsPlaceAutoMapperProfile : Profile
+{
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsPlaceAutoMapperProfile"/> class.
+ /// </summary>
+ public WmsPlaceAutoMapperProfile()
+ {
+ /* You can configure your AutoMapper mapping configuration here.
+ * Alternatively, you can split your mapping configurations
+ * 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);
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsStoreAutoMapperProfile.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsStoreAutoMapperProfile.cs"
new file mode 100644
index 0000000..6bb3cce
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsStoreAutoMapperProfile.cs"
@@ -0,0 +1,26 @@
+using AutoMapper;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsStores;
+using CMS.Plugin.HIAWms.Domain.WmsStores;
+using Volo.Abp.ObjectExtending;
+
+namespace CMS.Plugin.HIAWms.Application.MapperProfiles;
+
+/// <summary>
+/// AutoMapper閰嶇疆
+/// </summary>
+/// <seealso cref="AutoMapper.Profile" />
+public class WmsStoreAutoMapperProfile : Profile
+{
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsStoreAutoMapperProfile"/> class.
+ /// </summary>
+ public WmsStoreAutoMapperProfile()
+ {
+ /* You can configure your AutoMapper mapping configuration here.
+ * Alternatively, you can split your mapping configurations
+ * into multiple profile classes for a better organization. */
+ CreateMap<WmsStore, WmsStoreDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
+ CreateMap<WmsStoreCreateDto, WmsStore>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
+ CreateMap<GetWmsStoresInput, WmsStore>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Properties/AssemblyInfo.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Properties/AssemblyInfo.cs"
new file mode 100644
index 0000000..ece9fd2
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Application/Properties/AssemblyInfo.cs"
@@ -0,0 +1,2 @@
+锘縰sing System.Runtime.CompilerServices;
+[assembly:InternalsVisibleToAttribute("CMS.Plugin.Application.Tests")]
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMS.Plugin.HIAWms.Domain.Shared.csproj" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMS.Plugin.HIAWms.Domain.Shared.csproj"
new file mode 100644
index 0000000..c95efe0
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMS.Plugin.HIAWms.Domain.Shared.csproj"
@@ -0,0 +1,28 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <Import Project="../../common.props" />
+ <Import Project="../../configureawait.props" />
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
+ <GenerateDocumentationFile>True</GenerateDocumentationFile>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="KissUtil" Version="1.0.1" />
+ <PackageReference Include="Volo.Abp.Localization" Version="$(ABPPackageVersion)" />
+ <PackageReference Include="Volo.Abp.Validation" Version="$(ABPPackageVersion)" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <EmbeddedResource Include="Localization\HIAWms\*.json" />
+ <Content Remove="Localization\HIAWms\*.json" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
+ <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="6.0.20" />
+ </ItemGroup>
+
+</Project>
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMSPluginDomainErrorCodes.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMSPluginDomainErrorCodes.cs"
new file mode 100644
index 0000000..9b9ab2e
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMSPluginDomainErrorCodes.cs"
@@ -0,0 +1,16 @@
+namespace CMS.Plugin.HIAWms.Domain.Shared;
+
+/// <summary>
+/// 閿欒缂栫爜瀹氫箟
+/// </summary>
+public static class CMSPluginDomainErrorCodes
+{
+ /// <summary>
+ /// The prefix
+ /// </summary>
+ private const string Prefix = "CMS.Plugin.HIAWms:";
+
+ /* You can add your business exception error codes here, as constants */
+
+ public const string NameAlreadyExists = Prefix + nameof(NameAlreadyExists);
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMSPluginDomainSharedModule.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMSPluginDomainSharedModule.cs"
new file mode 100644
index 0000000..8799472
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMSPluginDomainSharedModule.cs"
@@ -0,0 +1,41 @@
+using CMS.Plugin.HIAWms.Domain.Shared.Localization;
+using Volo.Abp.Localization;
+using Volo.Abp.Modularity;
+using Volo.Abp.Validation;
+using Volo.Abp.Validation.Localization;
+using Volo.Abp.VirtualFileSystem;
+
+namespace CMS.Plugin.HIAWms.Domain.Shared;
+
+/// <summary>
+/// 棰嗗煙鍏变韩妯″潡
+/// </summary>
+[DependsOn(typeof(AbpLocalizationModule),
+ typeof(AbpValidationModule))]
+public class CMSPluginDomainSharedModule : AbpModule
+{
+ /// <inheritdoc />
+ public override void PreConfigureServices(ServiceConfigurationContext context)
+ {
+ CMSPluginModuleExtensionConfigurator.Configure();
+ }
+
+ /// <inheritdoc />
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ Configure<AbpVirtualFileSystemOptions>(options =>
+ {
+ options.FileSets.AddEmbedded<CMSPluginDomainSharedModule>();
+ });
+
+ Configure<AbpLocalizationOptions>(options =>
+ {
+ options.Resources
+ .Add<HIAWmsResource>("en")
+ .AddBaseTypes(typeof(AbpValidationResource))
+ .AddVirtualJson("/Localization/HIAWms");
+
+ options.DefaultResourceType = typeof(HIAWmsResource);
+ });
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMSPluginModuleExtensionConfigurator.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMSPluginModuleExtensionConfigurator.cs"
new file mode 100644
index 0000000..d372e79
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMSPluginModuleExtensionConfigurator.cs"
@@ -0,0 +1,82 @@
+using Volo.Abp.Threading;
+
+namespace CMS.Plugin.HIAWms.Domain.Shared;
+
+/// <summary>
+/// 妯″潡鎵╁睍閰嶇疆鍣�
+/// </summary>
+public static class CMSPluginModuleExtensionConfigurator
+{
+ private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner();
+
+ /// <summary>
+ /// Configures this instance.
+ /// </summary>
+ public static void Configure()
+ {
+ OneTimeRunner.Run(() =>
+ {
+ ConfigureExistingProperties();
+ ConfigureExtraProperties();
+ });
+ }
+
+ /// <summary>
+ /// Configures the existing properties.
+ /// </summary>
+ private static void ConfigureExistingProperties()
+ {
+ /* You can change max lengths for properties of the
+ * entities defined in the modules used by your application.
+ *
+ * Example: Change user and role name max lengths
+
+ IdentityUserConsts.MaxNameLength = 99;
+ IdentityRoleConsts.MaxNameLength = 99;
+
+ * Notice: It is not suggested to change property lengths
+ * unless you really need it. Go with the standard values wherever possible.
+ *
+ * If you are using EF Core, you will need to run the add-migration command after your changes.
+ */
+ }
+
+ /// <summary>
+ /// Configures the extra properties.
+ /// </summary>
+ private static void ConfigureExtraProperties()
+ {
+ /* You can configure extra properties for the
+ * entities defined in the modules used by your application.
+ *
+ * This class can be used to define these extra properties
+ * with a high level, easy to use API.
+ *
+ * Example: Add a new property to the user entity of the identity module
+
+ ObjectExtensionManager.Instance.Modules()
+ .ConfigureIdentity(identity =>
+ {
+ identity.ConfigureUser(user =>
+ {
+ user.AddOrUpdateProperty<string>( //property type: string
+ "SocialSecurityNumber", //property name
+ property =>
+ {
+ //validation rules
+ property.Attributes.Add(new RequiredAttribute());
+ property.Attributes.Add(new StringLengthAttribute(64) {MinimumLength = 4});
+
+ property.Configuration[IdentityModuleExtensionConsts.ConfigurationNames.AllowUserToEdit] = true;
+
+ //...other configurations for this property
+ }
+ );
+ });
+ });
+
+ * See the documentation for more:
+ * https://docs.abp.io/en/abp/latest/Module-Entity-Extensions
+ */
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/AreaStatusEnum.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/AreaStatusEnum.cs"
new file mode 100644
index 0000000..b648ea3
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/AreaStatusEnum.cs"
@@ -0,0 +1,28 @@
+锘縰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 AreaStatusEnum
+ {
+ /// <summary>
+ /// 姝e父
+ /// </summary>
+ [Description("姝e父")]
+ ZHEGNCHANGSHIYONG = 1,
+
+ /// <summary>
+ /// 鍋滅敤
+ /// </summary>
+ [Description("鍋滅敤")]
+ TINGYONG = 2
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/AreaTypeEnum.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/AreaTypeEnum.cs"
new file mode 100644
index 0000000..a82746a
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/AreaTypeEnum.cs"
@@ -0,0 +1,23 @@
+锘縰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 AreaTypeEnum
+ {
+ /// <summary>
+ /// 绔嬩綋搴�
+ /// </summary>
+ [Description("绔嬩綋搴�")]
+ LITIKU = 1,
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/ContainerStatusEnum.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/ContainerStatusEnum.cs"
new file mode 100644
index 0000000..644e4d3
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/ContainerStatusEnum.cs"
@@ -0,0 +1,55 @@
+锘縰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 ContainerStatusEnum
+ {
+
+ /// <summary>
+ /// 绌洪棽
+ /// </summary>
+ [Description("绌洪棽")]
+ KOUXIAN = 1,
+
+ /// <summary>
+ /// 缁勭洏
+ /// </summary>
+ [Description("缁勭洏")]
+ ZUPANG = 2,
+
+ /// <summary>
+ /// 搴撲綅
+ /// </summary>
+ [Description("搴撲綅")]
+ KUWEI = 3,
+
+ /// <summary>
+ /// 铏氭嫙搴撲綅
+ /// </summary>
+ [Description("铏氭嫙搴撲綅")]
+ XUNIKUWEI = 4,
+
+ /// <summary>
+ /// 缁勬墭
+ /// </summary>
+ [Description("缁勬墭")]
+ ZUTUO = 5,
+
+ /// <summary>
+ /// 寮傚父
+ /// </summary>
+ [Description("寮傚父")]
+ EXCEPTION = 9,
+ }
+
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/ContainerTypeEnum.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/ContainerTypeEnum.cs"
new file mode 100644
index 0000000..27089a7
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/ContainerTypeEnum.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 ContainerTypeEnum
+ {
+ /// <summary>
+ /// 鑷埗浠舵墭鐩�
+ /// </summary>
+ [Description("鑷埗浠舵墭鐩�")]
+ ZIZHIJIAN = 1,
+
+ /// <summary>
+ /// 澶栧崗浠舵墭鐩�
+ /// </summary>
+ [Description("澶栧崗浠舵墭鐩�")]
+ WAIXIEJIAN = 2,
+
+ /// <summary>
+ /// 铏氭嫙鎵樼洏
+ /// </summary>
+ [Description("铏氭嫙鎵樼洏")]
+ XUNI = 3,
+
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/HIAWmsStatus.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/HIAWmsStatus.cs"
new file mode 100644
index 0000000..1b789af
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/HIAWmsStatus.cs"
@@ -0,0 +1,34 @@
+using System.ComponentModel;
+
+namespace CMS.Plugin.HIAWms.Domain.Shared.Enums
+{
+ /// <summary>
+ /// HIAWms鐘舵��
+ /// </summary>
+ public enum HIAWmsStatus : byte
+ {
+ /// <summary>
+ /// 鏈墽琛�
+ /// </summary>
+ [Description("鏈墽琛�")]
+ Initial = 0,
+
+ /// <summary>
+ /// 鎵ц涓�
+ /// </summary>
+ [Description("鎵ц涓�")]
+ Excuting = 1,
+
+ /// <summary>
+ /// 宸插畬鎴�
+ /// </summary>
+ [Description("宸插畬鎴�")]
+ Completed = 4,
+
+ /// <summary>
+ /// 宸插己鍒跺畬鎴�
+ /// </summary>
+ [Description("宸插畬鎴�")]
+ Finished = 5,
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/MaterialTypeEnum.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/MaterialTypeEnum.cs"
new file mode 100644
index 0000000..1b1d81f
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/MaterialTypeEnum.cs"
@@ -0,0 +1,40 @@
+锘縰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 MaterialTypeEnum
+ {
+ /// <summary>
+ /// 鎴愬搧
+ /// </summary>
+ [Description(" 鎴愬搧")]
+ FinishedGoods =1,
+
+ /// <summary>
+ /// 鍗婃垚鍝�
+ /// </summary>
+ [Description("鍗婃垚鍝�")]
+ SemiFinishedGoods =2,
+
+ /// <summary>
+ /// 鍘熸潗鏂�
+ /// </summary>
+ [Description("鍘熸潗鏂�")]
+ RawMaterials =3,
+
+ /// <summary>
+ /// 闄勪欢
+ /// </summary>
+ [Description(" 闄勪欢")]
+ Attachments =4
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PlaceStatusEnum.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PlaceStatusEnum.cs"
new file mode 100644
index 0000000..744ffae
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PlaceStatusEnum.cs"
@@ -0,0 +1,37 @@
+锘縰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 PlaceStatusEnum
+ {
+ /// <summary>
+ /// 绌洪棽
+ /// </summary>
+ [Description("绌洪棽")]
+ KONGXIAN = 1,
+ /// <summary>
+ /// 寰呭叆
+ /// </summary>
+ [Description("寰呭叆")]
+ DAIRU = 2,
+ /// <summary>
+ /// 瀛樿揣
+ /// </summary>
+ [Description("瀛樿揣")]
+ CUNHUO = 3,
+ /// <summary>
+ /// 寰呭嚭
+ /// </summary>
+ [Description("寰呭嚭")]
+ DAICHU = 4,
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PlaceTypeEnum.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PlaceTypeEnum.cs"
new file mode 100644
index 0000000..b6832db
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PlaceTypeEnum.cs"
@@ -0,0 +1,25 @@
+锘縰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 PlaceTypeEnum
+ {
+ /// <summary>
+ /// 鍘熸枡搴撲綅
+ /// </summary>
+ [Description("鍘熸枡搴撲綅")]
+ YUANLIAOKUWEI = 1,
+
+ [Description("铏氭嫙搴撲綅")]
+ XUNIKUWEI = 2,
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PurchaseTypeEnum.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PurchaseTypeEnum.cs"
new file mode 100644
index 0000000..43fd5ec
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PurchaseTypeEnum.cs"
@@ -0,0 +1,34 @@
+锘縰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 PurchaseTypeEnum
+ {
+ /// <summary>
+ /// /鑷埗
+ /// </summary>
+ [Description("鑷埗")]
+ SelfMade = 1,
+
+ /// <summary>
+ /// 閲囪喘
+ /// </summary>
+ [Description("閲囪喘")]
+ Purchased = 2,
+
+ /// <summary>
+ /// 鍧囧彲
+ /// </summary>
+ [Description("鍧囧彲")]
+ Both = 3
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/SonTaskTypeEnum.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/SonTaskTypeEnum.cs"
new file mode 100644
index 0000000..2bebd34
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/SonTaskTypeEnum.cs"
@@ -0,0 +1,51 @@
+锘縰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 SonTaskTypeEnum
+ {
+ /// <summary>
+ /// 鑷姩鍏ュ簱
+ /// </summary>
+ [Description("鑷姩鍏ュ簱")]
+ ZDRUKU = 1,
+
+ /// <summary>
+ /// 浜哄伐鍏ュ簱
+ /// </summary>
+ [Description("浜哄伐鍏ュ簱")]
+ RGRUKU = 2,
+
+ /// <summary>
+ /// 浜哄伐鍑哄簱
+ /// </summary>
+ [Description("浜哄伐鍑哄簱")]
+ RGCHUKU = 3,
+ /// <summary>
+ /// 鑷姩鍑哄簱
+ /// </summary>
+ [Description("鑷姩鍑哄簱")]
+ ZDCHUKU = 4,
+
+ /// <summary>
+ /// 绌烘墭鍛煎彨
+ /// </summary>
+ [Description("绌烘墭鍛煎彨")]
+ KTHUJIOA = 5,
+
+ /// <summary>
+ /// 鍥炲簱
+ /// </summary>
+ [Description("鍥炲簱")]
+ HUIKU = 6,
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/StockTypeEnum.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/StockTypeEnum.cs"
new file mode 100644
index 0000000..a7d0926
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/StockTypeEnum.cs"
@@ -0,0 +1,28 @@
+锘縰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 StockTypeEnum
+ {
+ /// <summary>
+ /// 鍏ュ簱
+ /// </summary>
+ [Description("鍏ュ簱")]
+ InBound = 1,
+
+ /// <summary>
+ /// 鍑哄簱
+ /// </summary>
+ [Description("鍑哄簱")]
+ OutBound = 2,
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/TaskTypeEnum.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/TaskTypeEnum.cs"
new file mode 100644
index 0000000..b22ffaf
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/TaskTypeEnum.cs"
@@ -0,0 +1,28 @@
+锘縰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 TaskTypeEnum
+ {
+ /// <summary>
+ /// 鍑哄簱
+ /// </summary>
+ [Description("鍑哄簱")]
+ CHUKU = 1,
+
+ /// <summary>
+ /// 鍏ュ簱
+ /// </summary>
+ [Description("鍏ュ簱")]
+ RUKU = 2,
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/WmsTaskStatus.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/WmsTaskStatus.cs"
new file mode 100644
index 0000000..211dff5
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/WmsTaskStatus.cs"
@@ -0,0 +1,42 @@
+锘縰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 WmsTaskStatus
+ {
+ /// <summary>
+ /// 鏈墽琛�
+ /// </summary>
+ [Description("鏈墽琛�")]
+ WEIZHIXING = 1,
+ /// <summary>
+ /// 寰呮墽琛�
+ /// </summary>
+ [Description("寰呮墽琛�")]
+ DAIZHIXINGZHONG = 2,
+ /// <summary>
+ /// 鎵ц涓�
+ /// </summary>
+ [Description("鎵ц涓�")]
+ ZHIXINGZHONG = 3,
+ /// <summary>
+ /// 瀹屾垚
+ /// </summary>
+ [Description("瀹屾垚")]
+ WANCHENG = 4,
+ /// <summary>
+ /// 鍙栨秷
+ /// </summary>
+ [Description("鍙栨秷")]
+ QUXIAO = 5
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/YesNoEnum.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/YesNoEnum.cs"
new file mode 100644
index 0000000..74e48fe
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/YesNoEnum.cs"
@@ -0,0 +1,28 @@
+锘縰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 YesNoEnum
+ {
+ /// <summary>
+ /// 鏄�
+ /// </summary>
+ [Description("鏄�")]
+ Y = 1,
+
+ /// <summary>
+ /// 鍚�
+ /// </summary>
+ [Description("鍚�")]
+ N = 2
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/FodyWeavers.xml" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/FodyWeavers.xml"
new file mode 100644
index 0000000..9a2e2c4
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/FodyWeavers.xml"
@@ -0,0 +1,3 @@
+锘�<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
+ <ConfigureAwait ContinueOnCapturedContext="false" />
+</Weavers>
\ No newline at end of file
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Localization/HIAWms/en.json" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Localization/HIAWms/en.json"
new file mode 100644
index 0000000..bd3869e
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Localization/HIAWms/en.json"
@@ -0,0 +1,7 @@
+{
+ "culture": "en",
+ "texts": {
+ "DisplayName:SCMS.AppSettings.HIAWms.PluginState": "HIAWms plugin state",
+ "CMS.Plugin.HIAWms:NameAlreadyExists": "The '{0}' name already exists, please re-enter it !"
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Localization/HIAWms/zh-Hans.json" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Localization/HIAWms/zh-Hans.json"
new file mode 100644
index 0000000..2462f22
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Localization/HIAWms/zh-Hans.json"
@@ -0,0 +1,7 @@
+{
+ "culture": "zh-Hans",
+ "texts": {
+ "DisplayName:SCMS.AppSettings.HIAWms.PluginState": "HIAWms 鎻掍欢鐘舵��",
+ "CMS.Plugin.HIAWms:NameAlreadyExists": "璇�'{0}'鍚嶇О宸插瓨鍦紝璇烽噸鏂拌緭鍏ワ紒"
+ }
+ }
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Localization/HIAWmsResource.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Localization/HIAWmsResource.cs"
new file mode 100644
index 0000000..e0c1448
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Localization/HIAWmsResource.cs"
@@ -0,0 +1,11 @@
+using Volo.Abp.Localization;
+
+namespace CMS.Plugin.HIAWms.Domain.Shared.Localization;
+
+/// <summary>
+/// HIAWms鏈湴鍖栬祫婧�
+/// </summary>
+[LocalizationResourceName("HIAWms")]
+public class HIAWmsResource
+{
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Util/EnumHelper.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Util/EnumHelper.cs"
new file mode 100644
index 0000000..c79ae29
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Util/EnumHelper.cs"
@@ -0,0 +1,84 @@
+锘縰sing KissUtil.Helpers;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Volo.Abp;
+
+namespace CMS.Plugin.HIAWms.Domain.Shared.Util
+{
+ /// <summary>
+ /// 鏋氫妇甯姪绫�.
+ /// </summary>
+ public static class EnumHelper
+ {
+ /// <summary>
+ /// 鑾峰彇鏋氫妇.
+ /// </summary>
+ /// <param name="enumName"> </param>
+ /// <returns></returns>
+ /// <exception cref="ArgumentException"></exception>
+ public static List<EnumItem> GetEnumItems(string enumName)
+ {
+ // 鑾峰彇褰撳墠绋嬪簭闆嗕腑鐨勬墍鏈夌被鍨�
+ var enumType = AppDomain.CurrentDomain.GetAssemblies()
+ .SelectMany(a => a.GetTypes())
+ .FirstOrDefault(t => t.Name == enumName && t.IsEnum);
+
+ if (enumType == null)
+ {
+ throw new UserFriendlyException($"鏋氫妇绫诲瀷 {enumName} 涓嶅瓨鍦�");
+ }
+
+ return GetEnumItems(enumType);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏋氫妇绫诲瀷.
+ /// </summary>
+ /// <param name="enumType"></param>
+ /// <returns></returns>
+ /// <exception cref="ArgumentException"></exception>
+ public static List<EnumItem> GetEnumItems(Type enumType)
+ {
+ if (!enumType.IsEnum)
+ {
+ throw new UserFriendlyException("鎻愪緵鐨勭被鍨嬩笉鏄灇涓剧被鍨�");
+ }
+
+ var result = new List<EnumItem>();
+ var values = Enum.GetValues(enumType);
+
+ foreach (var value in values)
+ {
+ var fieldInfo = enumType.GetField(value.ToString());
+ var description = fieldInfo?
+ .GetCustomAttributes(typeof(DescriptionAttribute), false)
+ .FirstOrDefault() as DescriptionAttribute;
+
+ result.Add(new EnumItem
+ {
+ Value = (int)value,
+ Name = value.ToString(),
+ Description = description?.Description ?? value.ToString(),
+ });
+ }
+
+ return result;
+ }
+ }
+
+ /// <summary>
+ /// 鏋氫妇鎻忚堪.
+ /// </summary>
+ public class EnumItem
+ {
+ public int Value { get; set; }
+
+ public string Name { get; set; }
+
+ public string Description { get; set; }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Util/ExportHelper.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Util/ExportHelper.cs"
new file mode 100644
index 0000000..b0f8e3b
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Util/ExportHelper.cs"
@@ -0,0 +1,59 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Reflection;
+using System.Threading.Tasks;
+
+namespace CMS.Plugin.HIAWms.Domain.Shared.Util
+{
+ /// <summary>
+ /// 瀵煎嚭甯姪绫�.
+ /// </summary>
+ public static class ExportHelper
+ {
+ // 閫氱敤杞崲鏂规硶锛堝吋瀹� Func<T, Dictionary<string, object>>锛�
+ public static Dictionary<string, object> ConvertToExportData<T>(T entity)
+ {
+ var dict = new Dictionary<string, object>();
+ if (entity == null) return dict;
+
+ foreach (var prop in typeof(T).GetProperties())
+ {
+ var value = prop.GetValue(entity);
+ dict[prop.Name] = FormatValue(value);
+ }
+ return dict;
+ }
+
+ // 鎵归噺杞崲鏂规硶
+ public static List<Dictionary<string, object>> ConvertListToExportData<T>(IEnumerable<T> list)
+ {
+ return list.Select(ConvertToExportData).ToList();
+ }
+
+ private static object FormatValue(object value)
+ {
+ if (value == null) return string.Empty;
+
+ // 澶勭悊鏋氫妇
+ if (value is Enum enumValue)
+ return GetEnumDescriptionUtil.GetEnumDescription(enumValue);
+
+ // 澶勭悊甯冨皵
+ if (value is bool boolValue)
+ return boolValue ? "鏄�" : "鍚�";
+
+ return value;
+ }
+
+ private static string GetEnumDescription(Enum value)
+ {
+ var fieldInfo = value.GetType().GetField(value.ToString());
+ var description = fieldInfo?
+ .GetCustomAttributes(typeof(DescriptionAttribute), false)
+ .FirstOrDefault() as DescriptionAttribute;
+ return description?.Description ?? value.ToString();
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Util/GetEnumDescriptionUtil.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Util/GetEnumDescriptionUtil.cs"
new file mode 100644
index 0000000..d65574b
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Util/GetEnumDescriptionUtil.cs"
@@ -0,0 +1,30 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CMS.Plugin.HIAWms
+{
+ public class GetEnumDescriptionUtil
+ {
+ /// <summary>
+ /// 鑾峰彇鏋氫妇鐨勬弿杩�
+ /// </summary>
+ /// <param name="enumValue"></param>
+ /// <returns></returns>
+ public static string GetEnumDescription(Enum enumValue)
+ {
+ string value = enumValue.ToString();
+ if (string.IsNullOrWhiteSpace(value) || value == "0") return "";
+ FieldInfo field = enumValue.GetType().GetField(value);
+ object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false); //鑾峰彇鎻忚堪灞炴��
+ if (objs == null || objs.Length == 0) //褰撴弿杩板睘鎬ф病鏈夋椂锛岀洿鎺ヨ繑鍥炲悕绉�
+ return value;
+ DescriptionAttribute descriptionAttribute = (DescriptionAttribute)objs[0];
+ return descriptionAttribute.Description;
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsAreas/WmsAreaConsts.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsAreas/WmsAreaConsts.cs"
new file mode 100644
index 0000000..42fc92d
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsAreas/WmsAreaConsts.cs"
@@ -0,0 +1,24 @@
+namespace CMS.Plugin.HIAWms.Domain.Shared.WmsAreas;
+
+/// <summary>
+/// WmsArea甯搁噺瀹氫箟
+/// </summary>
+public static class WmsAreaConsts
+{
+ public const string CloneTag = "_鍓湰";
+ public static int MaxCodeLength { get; set; } = 64;
+ public static int MaxNameLength { get; set; } = 64;
+ public static int MaxRemarkLength { get; set; } = 256;
+
+ public static int MaxAreaNoLength = 50;
+
+ public static int MaxAreaNameLength = 100;
+
+ public static int MaxAreaDescLength = 200;
+
+ public static int MaxRedundantFieldLength = 100;
+
+ public static int MaxStoreCodeLength = 50;
+
+ public static int MaxStoreNameLength = 100;
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsAreas/WmsAreaEto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsAreas/WmsAreaEto.cs"
new file mode 100644
index 0000000..aa47ec0
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsAreas/WmsAreaEto.cs"
@@ -0,0 +1,22 @@
+namespace CMS.Plugin.HIAWms.Domain.Shared.WmsAreas;
+
+/// <summary>
+/// WmsArea浜嬩欢鍙傛暟瀵硅薄
+/// </summary>
+[Serializable]
+public class WmsAreaEto
+{
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsAreaEto"/> class.
+ /// </summary>
+ /// <param name="name">The name.</param>
+ public WmsAreaEto(string name)
+ {
+ Name = name;
+ }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsContainers/WmsContainerConsts.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsContainers/WmsContainerConsts.cs"
new file mode 100644
index 0000000..8d5cf01
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsContainers/WmsContainerConsts.cs"
@@ -0,0 +1,12 @@
+namespace CMS.Plugin.HIAWms.Domain.Shared.WmsContainers;
+
+/// <summary>
+/// WmsContainer甯搁噺瀹氫箟
+/// </summary>
+public static class WmsContainerConsts
+{
+ public const string CloneTag = "_鍓湰";
+ public static int MaxCodeLength { get; set; } = 64;
+ public static int MaxNameLength { get; set; } = 64;
+ public static int MaxRemarkLength { get; set; } = 256;
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsContainers/WmsContainerEto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsContainers/WmsContainerEto.cs"
new file mode 100644
index 0000000..5bdd117
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsContainers/WmsContainerEto.cs"
@@ -0,0 +1,22 @@
+namespace CMS.Plugin.HIAWms.Domain.Shared.WmsContainers;
+
+/// <summary>
+/// WmsContainer浜嬩欢鍙傛暟瀵硅薄
+/// </summary>
+[Serializable]
+public class WmsContainerEto
+{
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsContainerEto"/> class.
+ /// </summary>
+ /// <param name="name">The name.</param>
+ public WmsContainerEto(string name)
+ {
+ Name = name;
+ }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterial/WmsMaterialConsts.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterial/WmsMaterialConsts.cs"
new file mode 100644
index 0000000..091a162
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterial/WmsMaterialConsts.cs"
@@ -0,0 +1,12 @@
+namespace CMS.Plugin.HIAWms.Domain.Shared.WmsMaterial;
+
+/// <summary>
+/// WmsMaterial甯搁噺瀹氫箟
+/// </summary>
+public static class WmsMaterialConsts
+{
+ public const string CloneTag = "_鍓湰";
+ public static int MaxCodeLength { get; set; } = 64;
+ public static int MaxNameLength { get; set; } = 64;
+ public static int MaxRemarkLength { get; set; } = 256;
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterial/WmsMaterialEto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterial/WmsMaterialEto.cs"
new file mode 100644
index 0000000..d7144a0
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterial/WmsMaterialEto.cs"
@@ -0,0 +1,22 @@
+namespace CMS.Plugin.HIAWms.Domain.Shared.WmsMaterial;
+
+/// <summary>
+/// WmsMaterial浜嬩欢鍙傛暟瀵硅薄
+/// </summary>
+[Serializable]
+public class WmsMaterialEto
+{
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsMaterialEto"/> class.
+ /// </summary>
+ /// <param name="name">The name.</param>
+ public WmsMaterialEto(string name)
+ {
+ Name = name;
+ }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsPlaces/WmsPlaceConsts.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsPlaces/WmsPlaceConsts.cs"
new file mode 100644
index 0000000..5434bf3
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsPlaces/WmsPlaceConsts.cs"
@@ -0,0 +1,18 @@
+namespace CMS.Plugin.HIAWms.Domain.Shared.WmsPlaces;
+
+/// <summary>
+/// WmsPlace甯搁噺瀹氫箟
+/// </summary>
+public static class WmsPlaceConsts
+{
+ public const string CloneTag = "_鍓湰";
+ public static int MaxCodeLength { get; set; } = 64;
+ public static int MaxNameLength { get; set; } = 64;
+ public static int MaxRemarkLength { get; set; } = 256;
+
+ public const int MaxPlaceNoLength = 50;
+
+ public const int MaxAreaCodeLength = 50;
+
+ public const int MaxRedundantFieldLength = 100;
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsPlaces/WmsPlaceEto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsPlaces/WmsPlaceEto.cs"
new file mode 100644
index 0000000..3fb3b72
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsPlaces/WmsPlaceEto.cs"
@@ -0,0 +1,22 @@
+namespace CMS.Plugin.HIAWms.Domain.Shared.WmsPlaces;
+
+/// <summary>
+/// WmsPlace浜嬩欢鍙傛暟瀵硅薄
+/// </summary>
+[Serializable]
+public class WmsPlaceEto
+{
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsPlaceEto"/> class.
+ /// </summary>
+ /// <param name="name">The name.</param>
+ public WmsPlaceEto(string name)
+ {
+ Name = name;
+ }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsStores/WmsStoreConsts.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsStores/WmsStoreConsts.cs"
new file mode 100644
index 0000000..a78636c
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsStores/WmsStoreConsts.cs"
@@ -0,0 +1,18 @@
+namespace CMS.Plugin.HIAWms.Domain.Shared.WmsStores;
+
+/// <summary>
+/// WmsStore甯搁噺瀹氫箟
+/// </summary>
+public static class WmsStoreConsts
+{
+ public const string CloneTag = "_鍓湰";
+ public static int MaxCodeLength { get; set; } = 64;
+ public static int MaxNameLength { get; set; } = 64;
+ public static int MaxRemarkLength { get; set; } = 256;
+
+ public const int MaxStoreCodeLength = 50;
+
+ public const int MaxStoreNameLength = 100;
+
+ public const int MaxRedundantFieldLength = 100;
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsStores/WmsStoreEto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsStores/WmsStoreEto.cs"
new file mode 100644
index 0000000..72d1757
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsStores/WmsStoreEto.cs"
@@ -0,0 +1,22 @@
+namespace CMS.Plugin.HIAWms.Domain.Shared.WmsStores;
+
+/// <summary>
+/// WmsStore浜嬩欢鍙傛暟瀵硅薄
+/// </summary>
+[Serializable]
+public class WmsStoreEto
+{
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsStoreEto"/> class.
+ /// </summary>
+ /// <param name="name">The name.</param>
+ public WmsStoreEto(string name)
+ {
+ Name = name;
+ }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/CMS.Plugin.HIAWms.Domain.csproj" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/CMS.Plugin.HIAWms.Domain.csproj"
new file mode 100644
index 0000000..c04520e
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/CMS.Plugin.HIAWms.Domain.csproj"
@@ -0,0 +1,27 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <Import Project="../../common.props" />
+ <Import Project="../../configureawait.props" />
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Volo.Abp.Ddd.Domain" Version="$(ABPPackageVersion)" />
+ <PackageReference Include="Volo.Abp.Settings" Version="$(ABPPackageVersion)" />
+ <PackageReference Include="Volo.Abp.Caching" Version="$(ABPPackageVersion)" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\CMS.Plugin.HIAWms.Abstractions\CMS.Plugin.HIAWms.Abstractions.csproj" />
+ <ProjectReference Include="..\CMS.Plugin.HIAWms.Domain.Shared\CMS.Plugin.HIAWms.Domain.Shared.csproj" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <Reference Include="CmsQueryExtensions">
+ <HintPath>..\..\..\..\..\CommonDLL\CmsQueryExtensions.dll</HintPath>
+ </Reference>
+ </ItemGroup>
+
+</Project>
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/CMSPluginDbProperties.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/CMSPluginDbProperties.cs"
new file mode 100644
index 0000000..cf46a7e
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/CMSPluginDbProperties.cs"
@@ -0,0 +1,27 @@
+namespace CMS.Plugin.HIAWms.Domain;
+
+/// <summary>
+/// 鏁版嵁搴撳睘鎬у畾涔�
+/// </summary>
+public static class CMSPluginDbProperties
+{
+ /// <summary>
+ /// Gets or sets the database table prefix.
+ /// </summary>
+ public static string DbTablePrefix { get; set; } = "SCMS";
+
+ /// <summary>
+ /// Gets or sets the database schema.
+ /// </summary>
+ public static string DbSchema { get; set; }
+
+ /// <summary>
+ /// The connection string name
+ /// </summary>
+ public const string ConnectionStringName = "HIAWms";
+
+ /// <summary>
+ /// The migrations history table
+ /// </summary>
+ public const string MigrationsHistoryTable = "__EFMigrationsHistoryForHIAWms";
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/CMSPluginDomainModule.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/CMSPluginDomainModule.cs"
new file mode 100644
index 0000000..3a03e2e
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/CMSPluginDomainModule.cs"
@@ -0,0 +1,24 @@
+using CMS.Plugin.HIAWms.Domain.Shared;
+using Volo.Abp.Caching;
+using Volo.Abp.Domain;
+using Volo.Abp.Modularity;
+using Volo.Abp.Settings;
+
+namespace CMS.Plugin.HIAWms.Domain;
+
+/// <summary>
+/// 棰嗗煙妯″潡
+/// </summary>
+[DependsOn(
+ typeof(CMSPluginDomainSharedModule),
+ typeof(AbpSettingsModule),
+ typeof(AbpDddDomainModule),
+ typeof(AbpCachingModule)
+)]
+public class CMSPluginDomainModule : AbpModule
+{
+ /// <inheritdoc />
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/CMSPluginDbMigrationService.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/CMSPluginDbMigrationService.cs"
new file mode 100644
index 0000000..e9d224c
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/CMSPluginDbMigrationService.cs"
@@ -0,0 +1,211 @@
+using Microsoft.Extensions.Logging;
+using System.Diagnostics;
+using System.Runtime.InteropServices;
+using Volo.Abp.Data;
+using Volo.Abp.DependencyInjection;
+
+namespace CMS.Plugin.HIAWms.Domain.Data;
+
+/// <summary>
+/// 鏁版嵁搴撹縼绉绘湇鍔�
+/// </summary>
+public class CMSPluginDbMigrationService : ITransientDependency
+{
+ private readonly IDataSeeder _dataSeeder;
+ private readonly IEnumerable<ICMSPluginDbSchemaMigrator> _dbSchemaMigrators;
+ private readonly ILogger<CMSPluginDbMigrationService> _logger;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="CMSPluginDbMigrationService"/> class.
+ /// </summary>
+ /// <param name="dataSeeder">The data seeder.</param>
+ /// <param name="dbSchemaMigrators">The database schema migrators.</param>
+ /// <param name="logger">The logger.</param>
+ public CMSPluginDbMigrationService(IDataSeeder dataSeeder,
+ IEnumerable<ICMSPluginDbSchemaMigrator> dbSchemaMigrators, ILogger<CMSPluginDbMigrationService> logger)
+ {
+ _dataSeeder = dataSeeder;
+ _dbSchemaMigrators = dbSchemaMigrators;
+ _logger = logger;
+ }
+
+ /// <summary>
+ /// Migrates the asynchronous.
+ /// </summary>
+ public async Task MigrateAsync()
+ {
+ var initialMigrationAdded = AddInitialMigrationIfNotExist();
+
+ if (initialMigrationAdded)
+ {
+ return;
+ }
+
+ _logger.LogDebug("Started database migrations...");
+
+ await MigrateDatabaseSchemaAsync();
+ await SeedDataAsync();
+
+ _logger.LogDebug($"Successfully completed host database migrations.");
+ _logger.LogDebug("You can safely end this process...");
+ }
+
+ /// <summary>
+ /// Migrates the database schema asynchronous.
+ /// </summary>
+ private async Task MigrateDatabaseSchemaAsync()
+ {
+ _logger.LogDebug($"Migrating schema for database...");
+
+ foreach (var migrator in _dbSchemaMigrators)
+ {
+ await migrator.MigrateAsync();
+ }
+ }
+
+ /// <summary>
+ /// Seeds the data asynchronous.
+ /// </summary>
+ private async Task SeedDataAsync()
+ {
+ _logger.LogDebug($"Executing database seed...");
+
+ await _dataSeeder.SeedAsync(new DataSeedContext().WithProperty(CMSPluginDbProperties.ConnectionStringName, CMSPluginDbProperties.ConnectionStringName));
+ }
+
+ /// <summary>
+ /// Adds the initial migration if not exist.
+ /// </summary>
+ /// <returns></returns>
+ private bool AddInitialMigrationIfNotExist()
+ {
+ try
+ {
+ if (!DbMigrationsProjectExists())
+ {
+ return false;
+ }
+ }
+ catch (Exception)
+ {
+ return false;
+ }
+
+ try
+ {
+ if (!MigrationsFolderExists())
+ {
+ AddInitialMigration();
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ catch (Exception e)
+ {
+ _logger.LogWarning("Couldn't determinate if any migrations exist : " + e.Message);
+ return false;
+ }
+ }
+
+ /// <summary>
+ /// Databases the migrations project exists.
+ /// </summary>
+ /// <returns></returns>
+ private bool DbMigrationsProjectExists()
+ {
+ var dbMigrationsProjectFolder = GetEntityFrameworkCoreProjectFolderPath();
+
+ return dbMigrationsProjectFolder != null;
+ }
+
+ /// <summary>
+ /// Migrationses the folder exists.
+ /// </summary>
+ /// <returns></returns>
+ private bool MigrationsFolderExists()
+ {
+ var dbMigrationsProjectFolder = GetEntityFrameworkCoreProjectFolderPath();
+
+ return Directory.Exists(Path.Combine(dbMigrationsProjectFolder, "Migrations"));
+ }
+
+ /// <summary>
+ /// Adds the initial migration.
+ /// </summary>
+ /// <exception cref="System.Exception">Couldn't run ABP CLI...</exception>
+ private void AddInitialMigration()
+ {
+ _logger.LogDebug("Creating initial migration...");
+
+ string argumentPrefix;
+ string fileName;
+
+ if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) || RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
+ {
+ argumentPrefix = "-c";
+ fileName = "/bin/bash";
+ }
+ else
+ {
+ argumentPrefix = "/C";
+ fileName = "cmd.exe";
+ }
+
+ var procStartInfo = new ProcessStartInfo(fileName,
+ $"{argumentPrefix} \"abp create-migration-and-run-migrator \"{GetEntityFrameworkCoreProjectFolderPath()}\"\""
+ );
+
+ try
+ {
+ Process.Start(procStartInfo);
+ }
+ catch (Exception)
+ {
+ throw new Exception("Couldn't run ABP CLI...");
+ }
+ }
+
+ /// <summary>
+ /// Gets the entity framework core project folder path.
+ /// </summary>
+ /// <returns></returns>
+ /// <exception cref="System.Exception">Solution folder not found!</exception>
+ private string GetEntityFrameworkCoreProjectFolderPath()
+ {
+ var slnDirectoryPath = GetSolutionDirectoryPath();
+
+ if (slnDirectoryPath == null)
+ {
+ throw new Exception("Solution folder not found!");
+ }
+
+ var srcDirectoryPath = Path.Combine(slnDirectoryPath, "src");
+
+ return Directory.GetDirectories(srcDirectoryPath)
+ .FirstOrDefault(d => d.EndsWith(".EntityFrameworkCore"));
+ }
+
+ /// <summary>
+ /// Gets the solution directory path.
+ /// </summary>
+ /// <returns></returns>
+ private string GetSolutionDirectoryPath()
+ {
+ var currentDirectory = new DirectoryInfo(Directory.GetCurrentDirectory());
+
+ while (Directory.GetParent(currentDirectory.FullName) != null)
+ {
+ currentDirectory = Directory.GetParent(currentDirectory.FullName);
+
+ if (Directory.GetFiles(currentDirectory.FullName).FirstOrDefault(f => f.EndsWith(".sln")) != null)
+ {
+ return currentDirectory.FullName;
+ }
+ }
+
+ return null;
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/ICMSPluginDapperRepository.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/ICMSPluginDapperRepository.cs"
new file mode 100644
index 0000000..46138d6
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/ICMSPluginDapperRepository.cs"
@@ -0,0 +1,22 @@
+using System.Data;
+using Volo.Abp.DependencyInjection;
+
+namespace CMS.Plugin.HIAWms.Domain.Data;
+
+/// <summary>
+/// Dapper浠撳偍
+/// </summary>
+public interface ICMSPluginDapperRepository : ITransientDependency
+{
+ /// <summary>
+ /// Gets the database connection asynchronous.
+ /// </summary>
+ /// <returns></returns>
+ Task<IDbConnection> GetDbConnectionAsync();
+
+ /// <summary>
+ /// Gets the database transaction asynchronous.
+ /// </summary>
+ /// <returns></returns>
+ Task<IDbTransaction> GetDbTransactionAsync();
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/ICMSPluginDbSchemaMigrator.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/ICMSPluginDbSchemaMigrator.cs"
new file mode 100644
index 0000000..3cf932e
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/ICMSPluginDbSchemaMigrator.cs"
@@ -0,0 +1,12 @@
+namespace CMS.Plugin.HIAWms.Domain.Data;
+
+/// <summary>
+/// 鏁版嵁搴撴灦鏋勮縼绉诲櫒
+/// </summary>
+public interface ICMSPluginDbSchemaMigrator
+{
+ /// <summary>
+ /// Migrates the asynchronous.
+ /// </summary>
+ Task MigrateAsync();
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/NullCMSPluginDbSchemaMigrator.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/NullCMSPluginDbSchemaMigrator.cs"
new file mode 100644
index 0000000..40660f2
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/NullCMSPluginDbSchemaMigrator.cs"
@@ -0,0 +1,16 @@
+using Volo.Abp.DependencyInjection;
+
+namespace CMS.Plugin.HIAWms.Domain.Data;
+
+/// <summary>
+/// This is used if database provider does't define
+/// ICMSDbSchemaMigrator implementation.
+/// </summary>
+public class NullCMSPluginDbSchemaMigrator : ICMSPluginDbSchemaMigrator, ITransientDependency
+{
+ /// <inheritdoc />
+ public Task MigrateAsync()
+ {
+ return Task.CompletedTask;
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsAreaEventHandler.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsAreaEventHandler.cs"
new file mode 100644
index 0000000..9300b96
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsAreaEventHandler.cs"
@@ -0,0 +1,17 @@
+using CMS.Plugin.HIAWms.Domain.Shared.WmsAreas;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.EventBus.Distributed;
+
+namespace CMS.Plugin.HIAWms.Domain.EventHandlers;
+
+/// <summary>
+/// WmsArea浜嬩欢澶勭悊绋嬪簭
+/// </summary>
+public class WmsAreaEventHandler : IDistributedEventHandler<WmsAreaEto>, ITransientDependency
+{
+ /// <inheritdoc />
+ public Task HandleEventAsync(WmsAreaEto eventData)
+ {
+ return Task.CompletedTask;
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsContainerEventHandler.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsContainerEventHandler.cs"
new file mode 100644
index 0000000..a14c949
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsContainerEventHandler.cs"
@@ -0,0 +1,17 @@
+using CMS.Plugin.HIAWms.Domain.Shared.WmsContainers;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.EventBus.Distributed;
+
+namespace CMS.Plugin.HIAWms.Domain.EventHandlers;
+
+/// <summary>
+/// WmsContainer浜嬩欢澶勭悊绋嬪簭
+/// </summary>
+public class WmsContainerEventHandler : IDistributedEventHandler<WmsContainerEto>, ITransientDependency
+{
+ /// <inheritdoc />
+ public Task HandleEventAsync(WmsContainerEto eventData)
+ {
+ return Task.CompletedTask;
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsMaterialEventHandler.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsMaterialEventHandler.cs"
new file mode 100644
index 0000000..50ed96d
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsMaterialEventHandler.cs"
@@ -0,0 +1,17 @@
+using CMS.Plugin.HIAWms.Domain.Shared.WmsMaterial;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.EventBus.Distributed;
+
+namespace CMS.Plugin.HIAWms.Domain.EventHandlers;
+
+/// <summary>
+/// WmsMaterial浜嬩欢澶勭悊绋嬪簭
+/// </summary>
+public class WmsMaterialEventHandler : IDistributedEventHandler<WmsMaterialEto>, ITransientDependency
+{
+ /// <inheritdoc />
+ public Task HandleEventAsync(WmsMaterialEto eventData)
+ {
+ return Task.CompletedTask;
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsPlaceEventHandler.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsPlaceEventHandler.cs"
new file mode 100644
index 0000000..e325983
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsPlaceEventHandler.cs"
@@ -0,0 +1,17 @@
+using CMS.Plugin.HIAWms.Domain.Shared.WmsPlaces;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.EventBus.Distributed;
+
+namespace CMS.Plugin.HIAWms.Domain.EventHandlers;
+
+/// <summary>
+/// WmsPlace浜嬩欢澶勭悊绋嬪簭
+/// </summary>
+public class WmsPlaceEventHandler : IDistributedEventHandler<WmsPlaceEto>, ITransientDependency
+{
+ /// <inheritdoc />
+ public Task HandleEventAsync(WmsPlaceEto eventData)
+ {
+ return Task.CompletedTask;
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsStoreEventHandler.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsStoreEventHandler.cs"
new file mode 100644
index 0000000..044db16
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsStoreEventHandler.cs"
@@ -0,0 +1,17 @@
+using CMS.Plugin.HIAWms.Domain.Shared.WmsStores;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.EventBus.Distributed;
+
+namespace CMS.Plugin.HIAWms.Domain.EventHandlers;
+
+/// <summary>
+/// WmsStore浜嬩欢澶勭悊绋嬪簭
+/// </summary>
+public class WmsStoreEventHandler : IDistributedEventHandler<WmsStoreEto>, ITransientDependency
+{
+ /// <inheritdoc />
+ public Task HandleEventAsync(WmsStoreEto eventData)
+ {
+ return Task.CompletedTask;
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/FodyWeavers.xml" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/FodyWeavers.xml"
new file mode 100644
index 0000000..0b46021
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/FodyWeavers.xml"
@@ -0,0 +1,3 @@
+<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
+ <ConfigureAwait ContinueOnCapturedContext="false" />
+</Weavers>
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Properties/AssemblyInfo.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Properties/AssemblyInfo.cs"
new file mode 100644
index 0000000..2e14d34
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Properties/AssemblyInfo.cs"
@@ -0,0 +1,3 @@
+锘縰sing System.Runtime.CompilerServices;
+[assembly:InternalsVisibleToAttribute("CMS.Plugin.Domain.Tests")]
+[assembly:InternalsVisibleToAttribute("CMS.Plugin.TestBase")]
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Settings/CMSPluginSettingDefinitionProvider.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Settings/CMSPluginSettingDefinitionProvider.cs"
new file mode 100644
index 0000000..6d2f9ee
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Settings/CMSPluginSettingDefinitionProvider.cs"
@@ -0,0 +1,27 @@
+using CMS.Plugin.HIAWms.Abstractions;
+using CMS.Plugin.HIAWms.Domain.Shared.Localization;
+using Volo.Abp.Localization;
+using Volo.Abp.Settings;
+
+namespace CMS.Plugin.HIAWms.Domain.Settings;
+
+/// <summary>
+/// 璁剧疆瀹氫箟鎻愪緵绋嬪簭
+/// </summary>
+public class CMSPluginSettingDefinitionProvider : SettingDefinitionProvider
+{
+ public override void Define(ISettingDefinitionContext context)
+ {
+ context.Add(new SettingDefinition(CMSPluginHIAWmsSettings.PluginState, "1", L($"DisplayName:{CMSPluginHIAWmsSettings.PluginState}"), isInherited: true));
+ }
+
+ /// <summary>
+ /// ls the specified name.
+ /// </summary>
+ /// <param name="name">The name.</param>
+ /// <returns></returns>
+ private static LocalizableString L(string name)
+ {
+ return LocalizableString.Create<HIAWmsResource>(name);
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/IWmsAreaRepository.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/IWmsAreaRepository.cs"
new file mode 100644
index 0000000..caacf37
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/IWmsAreaRepository.cs"
@@ -0,0 +1,61 @@
+using Volo.Abp.Domain.Repositories;
+using Volo.Abp.Specifications;
+
+namespace CMS.Plugin.HIAWms.Domain.WmsAreas;
+
+/// <summary>
+/// WmsArea浠撳偍
+/// </summary>
+public interface IWmsAreaRepository : IBasicRepository<WmsArea, Guid>
+{
+ /// <summary>
+ /// Finds the by name asynchronous.
+ /// </summary>
+ /// <param name="name">The name.</param>
+ /// <param name="cancellationToken">The cancellation token.</param>
+ /// <returns></returns>
+ Task<WmsArea> 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<WmsArea>> GetListAsync(WmsArea? area, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, string filter = null, Specification<WmsArea> specification = null, bool includeDetails = false, CancellationToken cancellationToken = default);
+
+ /// <summary>
+ /// 鑾峰彇搴撳尯鍒楄〃
+ /// </summary>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ Task<List<WmsArea>> GetListForSelectAsync(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(WmsArea? area, string filter = null, Specification<WmsArea> specification = null, CancellationToken cancellationToken = default);
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/WmsArea.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/WmsArea.cs"
new file mode 100644
index 0000000..8241f87
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/WmsArea.cs"
@@ -0,0 +1,91 @@
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
+using CMS.Plugin.HIAWms.Domain.Shared.WmsAreas;
+using Microsoft.EntityFrameworkCore.Metadata.Internal;
+using System.ComponentModel.DataAnnotations;
+using Volo.Abp;
+using Volo.Abp.Domain.Entities.Auditing;
+
+namespace CMS.Plugin.HIAWms.Domain.WmsAreas
+{
+ /// <summary>
+ /// WmsArea
+ /// </summary>
+ public class WmsArea : FullAuditedAggregateRoot<Guid>
+ {
+ /// <summary>
+ /// 搴撳尯缂栧彿
+ /// </summary>
+ public string AreaNo { get; set; }
+
+ /// <summary>
+ /// 搴撳尯鍚嶇О
+ /// </summary>
+ public string AreaName { get; set; }
+
+ /// <summary>
+ /// 鎻忚堪
+ /// </summary>
+ public string? AreaDesc { get; set; }
+
+ /// <summary>
+ /// 搴撳尯鐘舵��
+ /// </summary>
+ public AreaStatusEnum AreaStatus { get; set; }
+
+ /// <summary>
+ /// 搴撳尯绫诲瀷
+ /// </summary>
+ public AreaTypeEnum AreaType { 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>
+ /// 浠撳簱浠g爜
+ /// </summary>
+ public string? StoreCode { get; set; }
+
+ /// <summary>
+ /// 浠撳簱鍚嶇О
+ /// </summary>
+ public string? StoreName { 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/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/WmsAreaDataSeedContributor.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/WmsAreaDataSeedContributor.cs"
new file mode 100644
index 0000000..ae909d8
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/WmsAreaDataSeedContributor.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.WmsAreas
+{
+ /// <summary>
+ /// WmsArea绉嶅瓙鏁版嵁鎻愪緵绋嬪簭
+ /// </summary>
+ public class WmsAreaDataSeedContributor : IDataSeedContributor, ITransientDependency
+ {
+ private readonly IUnitOfWorkManager _unitOfWorkManager;
+ private readonly IWmsAreaRepository _wmsareaRepository;
+ private readonly IGuidGenerator _guidGenerator;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsAreaDataSeedContributor"/> class.
+ /// </summary>
+ /// <param name="unitOfWorkManager">The unit of work manager.</param>
+ /// <param name="guidGenerator">The unique identifier generator.</param>
+ /// <param name="wmsareaRepository">The work section repository.</param>
+ public WmsAreaDataSeedContributor(IUnitOfWorkManager unitOfWorkManager, IGuidGenerator guidGenerator, IWmsAreaRepository wmsareaRepository)
+ {
+ _unitOfWorkManager = unitOfWorkManager;
+ _wmsareaRepository = wmsareaRepository;
+ _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 SeedWmsAreaDataAsync();
+ }
+ catch (Exception e)
+ {
+ Console.WriteLine(e.Message);
+ }
+ }
+ }
+
+ /// <summary>
+ /// Seeds the work section data asynchronous.
+ /// </summary>
+ private async Task SeedWmsAreaDataAsync()
+ {
+
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/WmsAreaSpecification.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/WmsAreaSpecification.cs"
new file mode 100644
index 0000000..625de4a
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/WmsAreaSpecification.cs"
@@ -0,0 +1,41 @@
+using System.Linq.Expressions;
+
+namespace CMS.Plugin.HIAWms.Domain.WmsAreas
+{
+ /// <summary>
+ /// WmsArea瑙勭害
+ /// </summary>
+ public class WmsAreaSpecification : Volo.Abp.Specifications.Specification<WmsArea>
+ {
+ private readonly string _areaCode;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsAreaSpecification"/> class.
+ /// </summary>
+ public WmsAreaSpecification()
+ {
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsAreaSpecification"/> class.
+ /// </summary>
+ /// <param name="areaCode">The name.</param>
+ public WmsAreaSpecification(string areaCode = null)
+ {
+ _areaCode = areaCode;
+ }
+
+ /// <inheritdoc />
+ public override Expression<Func<WmsArea, bool>> ToExpression()
+ {
+ Expression<Func<WmsArea, bool>> expression = c => 1 == 1;
+
+ if (_areaCode != null)
+ {
+ expression = expression.And(c => c.AreaNo == _areaCode);
+ }
+
+ return expression;
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/IWmsContainerRepository.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/IWmsContainerRepository.cs"
new file mode 100644
index 0000000..50b4374
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/IWmsContainerRepository.cs"
@@ -0,0 +1,54 @@
+using Volo.Abp.Domain.Repositories;
+using Volo.Abp.Specifications;
+
+namespace CMS.Plugin.HIAWms.Domain.WmsContainers;
+
+/// <summary>
+/// WmsContainer浠撳偍
+/// </summary>
+public interface IWmsContainerRepository : IBasicRepository<WmsContainer, Guid>
+{
+ /// <summary>
+ /// Finds the by name asynchronous.
+ /// </summary>
+ /// <param name="name">The name.</param>
+ /// <param name="cancellationToken">The cancellation token.</param>
+ /// <returns></returns>
+ Task<WmsContainer> 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<WmsContainer>> GetListAsync(WmsContainer? container, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, string filter = null, Specification<WmsContainer> 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(WmsContainer? container, string filter = null, Specification<WmsContainer> specification = null, CancellationToken cancellationToken = default);
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/WmsContainer.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/WmsContainer.cs"
new file mode 100644
index 0000000..d12e65a
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/WmsContainer.cs"
@@ -0,0 +1,117 @@
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
+using CMS.Plugin.HIAWms.Domain.Shared.WmsContainers;
+using Volo.Abp;
+using Volo.Abp.Domain.Entities.Auditing;
+
+namespace CMS.Plugin.HIAWms.Domain.WmsContainers
+{
+ /// <summary>
+ /// WmsContainer
+ /// </summary>
+ public class WmsContainer : FullAuditedAggregateRoot<Guid>
+ {
+ /// <summary>
+ /// ID
+ /// </summary>
+ public Guid Id { get; set; }
+ /// <summary>
+ /// 鎵樼洏缂栧彿
+ /// </summary>
+ public string ContainerNo { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏绫诲瀷
+ /// </summary>
+ public ContainerTypeEnum ContainerType { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏鐘舵��
+ /// </summary>
+ public ContainerStatusEnum ContainerStatus { get; set; }
+
+ /// <summary>
+ /// 闀垮害
+ /// </summary>
+ public decimal? SpecLength { get; set; }
+
+ /// <summary>
+ /// 瀹藉害
+ /// </summary>
+ public decimal? SpecWidth { get; set; }
+
+ /// <summary>
+ /// 楂樺害
+ /// </summary>
+ public decimal? SpecHeight { get; set; }
+
+ /// <summary>
+ /// 闄愰暱
+ /// </summary>
+ public decimal? LimitLength { get; set; }
+
+ /// <summary>
+ /// 闄愬
+ /// </summary>
+ public decimal? LimitWidth { get; set; }
+
+ /// <summary>
+ /// 闄愰珮
+ /// </summary>
+ public decimal? LimitHeight { get; set; }
+
+ /// <summary>
+ /// 杞介噸涓婇檺
+ /// </summary>
+ public decimal? MaxWeight { get; set; }
+
+ /// <summary>
+ /// 寮傚父鏁伴噺
+ /// </summary>
+ public int? ExceptionNumber { get; set; }
+
+ /// <summary>
+ ///鐗╂枡鏁伴噺
+ /// </summary>
+ public int? MaterialNumber { 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/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/WmsContainerDataSeedContributor.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/WmsContainerDataSeedContributor.cs"
new file mode 100644
index 0000000..dcfabe5
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/WmsContainerDataSeedContributor.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.WmsContainers
+{
+ /// <summary>
+ /// WmsContainer绉嶅瓙鏁版嵁鎻愪緵绋嬪簭
+ /// </summary>
+ public class WmsContainerDataSeedContributor : IDataSeedContributor, ITransientDependency
+ {
+ private readonly IUnitOfWorkManager _unitOfWorkManager;
+ private readonly IWmsContainerRepository _wmscontainerRepository;
+ private readonly IGuidGenerator _guidGenerator;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsContainerDataSeedContributor"/> class.
+ /// </summary>
+ /// <param name="unitOfWorkManager">The unit of work manager.</param>
+ /// <param name="guidGenerator">The unique identifier generator.</param>
+ /// <param name="wmscontainerRepository">The work section repository.</param>
+ public WmsContainerDataSeedContributor(IUnitOfWorkManager unitOfWorkManager, IGuidGenerator guidGenerator, IWmsContainerRepository wmscontainerRepository)
+ {
+ _unitOfWorkManager = unitOfWorkManager;
+ _wmscontainerRepository = wmscontainerRepository;
+ _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 SeedWmsContainerDataAsync();
+ }
+ catch (Exception e)
+ {
+ Console.WriteLine(e.Message);
+ }
+ }
+ }
+
+ /// <summary>
+ /// Seeds the work section data asynchronous.
+ /// </summary>
+ private async Task SeedWmsContainerDataAsync()
+ {
+
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/WmsContainerSpecification.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/WmsContainerSpecification.cs"
new file mode 100644
index 0000000..cdff594
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/WmsContainerSpecification.cs"
@@ -0,0 +1,41 @@
+using System.Linq.Expressions;
+
+namespace CMS.Plugin.HIAWms.Domain.WmsContainers
+{
+ /// <summary>
+ /// WmsContainer瑙勭害
+ /// </summary>
+ public class WmsContainerSpecification : Volo.Abp.Specifications.Specification<WmsContainer>
+ {
+ private readonly string _containerNo;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsContainerSpecification"/> class.
+ /// </summary>
+ public WmsContainerSpecification()
+ {
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsContainerSpecification"/> class.
+ /// </summary>
+ /// <param name="containerNo">The name.</param>
+ public WmsContainerSpecification(string containerNo = null)
+ {
+ _containerNo = containerNo;
+ }
+
+ /// <inheritdoc />
+ public override Expression<Func<WmsContainer, bool>> ToExpression()
+ {
+ Expression<Func<WmsContainer, bool>> expression = c => 1 == 1;
+
+ if (_containerNo != null)
+ {
+ expression = expression.And(c => c.ContainerNo == _containerNo);
+ }
+
+ return expression;
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockRecord/IWmsInOutStockRecordRepository.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockRecord/IWmsInOutStockRecordRepository.cs"
new file mode 100644
index 0000000..d1d3f69
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockRecord/IWmsInOutStockRecordRepository.cs"
@@ -0,0 +1,53 @@
+using CmsQueryExtensions.Extension;
+using System.Linq.Expressions;
+using Volo.Abp.Domain.Repositories;
+
+namespace CMS.Plugin.HIAWms.Domain.WmsInOutStockRecord;
+
+/// <summary>
+/// 鍑哄叆搴撹褰曡〃浠撳偍
+/// </summary>
+public interface IWmsInOutStockRecordRepository : IBasicRepository<WmsInOutStockRecord, Guid>
+{
+ /// <summary>
+ /// 鎸夌収鍚嶇О鏌ユ壘鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="name"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ Task<WmsInOutStockRecord> FindByNameAsync(string name, CancellationToken cancellationToken = default);
+
+ /// <summary>
+ /// 楠岃瘉鍚嶇О鏄惁瀛樺湪鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="name"></param>
+ /// <param name="id"></param>
+ /// <returns></returns>
+ Task<bool> NameExistAsync(string name, Guid? id = null);
+
+ /// <summary>
+ /// 鑾峰彇鏈�澶ф帓搴忓嚭鍏ュ簱璁板綍琛�
+ /// </summary>
+ /// <returns></returns>
+ Task<int> GetMaxSortAsync();
+
+ /// <summary>
+ /// 鑾峰彇鍒嗛〉鍒楄〃鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="whereConditions"></param>
+ /// <param name="sorting"></param>
+ /// <param name="maxResultCount"></param>
+ /// <param name="skipCount"></param>
+ /// <param name="includeDetails"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ Task<List<WmsInOutStockRecord>> GetListAsync(FunReturnResultModel<Expression<Func<WmsInOutStockRecord, bool>>> whereConditions, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, bool includeDetails = false, CancellationToken cancellationToken = default);
+
+ /// <summary>
+ /// 鑾峰彇鎬绘暟鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="whereConditions"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ Task<long> GetCountAsync(FunReturnResultModel<Expression<Func<WmsInOutStockRecord, bool>>> whereConditions, CancellationToken cancellationToken = default);
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockRecord/WmsInOutStockRecord.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockRecord/WmsInOutStockRecord.cs"
new file mode 100644
index 0000000..ac5a066
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockRecord/WmsInOutStockRecord.cs"
@@ -0,0 +1,95 @@
+锘縰sing CMS.Plugin.HIAWms.Domain.Shared.Enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Volo.Abp.Domain.Entities.Auditing;
+
+namespace CMS.Plugin.HIAWms.Domain.WmsInOutStockRecord
+{
+ /// <summary>
+ /// 鍑哄叆搴撹褰�.
+ /// </summary>
+ public class WmsInOutStockRecord : FullAuditedAggregateRoot<Guid>
+ {
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public string OrderNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string? MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡浠跺彿
+ /// </summary>
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔绫诲瀷
+ /// </summary>
+ public StockTypeEnum StockType { get; set; }
+
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿.
+ /// </summary>
+ public string? ContainerNo { get; set; }
+
+ /// <summary>
+ /// 鍨嬪彿
+ /// </summary>
+ public string? MaterialModel { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔鏃堕棿
+ /// </summary>
+ public DateTime? OperateTime { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string? Remark { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡ID
+ /// </summary>
+ public string MaterialId { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public string TaskNo { get; set; }
+
+ /// <summary>
+ /// 璧峰搴撲綅
+ /// </summary>
+ public string? SourcePlace { get; set; }
+
+ /// <summary>
+ /// 鐩爣搴撲綅
+ /// </summary>
+ public string? ToPlace { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public virtual int Sort { 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/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/IWmsMaterialRepository.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/IWmsMaterialRepository.cs"
new file mode 100644
index 0000000..b6ce9c7
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/IWmsMaterialRepository.cs"
@@ -0,0 +1,53 @@
+using CmsQueryExtensions.Extension;
+using System.Linq.Expressions;
+using Volo.Abp.Domain.Repositories;
+
+namespace CMS.Plugin.HIAWms.Domain.WmsMaterial;
+
+/// <summary>
+/// 鐗╂枡鍩虹淇℃伅琛ㄤ粨鍌�
+/// </summary>
+public interface IWmsMaterialRepository : IBasicRepository<WmsMaterial, Guid>
+{
+ /// <summary>
+ /// 鎸夌収鍚嶇О鏌ユ壘鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="name"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ Task<WmsMaterial> FindByNameAsync(string name, CancellationToken cancellationToken = default);
+
+ /// <summary>
+ /// 楠岃瘉鍚嶇О鏄惁瀛樺湪鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="name"></param>
+ /// <param name="id"></param>
+ /// <returns></returns>
+ Task<bool> NameExistAsync(string name, Guid? id = null);
+
+ /// <summary>
+ /// 鑾峰彇鏈�澶ф帓搴忕墿鏂欏熀纭�淇℃伅琛�
+ /// </summary>
+ /// <returns></returns>
+ Task<int> GetMaxSortAsync();
+
+ /// <summary>
+ /// 鑾峰彇鍒嗛〉鍒楄〃鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="whereConditions"></param>
+ /// <param name="sorting"></param>
+ /// <param name="maxResultCount"></param>
+ /// <param name="skipCount"></param>
+ /// <param name="includeDetails"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ Task<List<WmsMaterial>> GetListAsync(FunReturnResultModel<Expression<Func<WmsMaterial, bool>>> whereConditions, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, bool includeDetails = false, CancellationToken cancellationToken = default);
+
+ /// <summary>
+ /// 鑾峰彇鎬绘暟鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="whereConditions"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ Task<long> GetCountAsync(FunReturnResultModel<Expression<Func<WmsMaterial, bool>>> whereConditions, CancellationToken cancellationToken = default);
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterial.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterial.cs"
new file mode 100644
index 0000000..eee2ed5
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterial.cs"
@@ -0,0 +1,119 @@
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
+using CMS.Plugin.HIAWms.Domain.Shared.WmsMaterial;
+using MathNet.Numerics;
+using Volo.Abp;
+using Volo.Abp.Domain.Entities.Auditing;
+
+namespace CMS.Plugin.HIAWms.Domain.WmsMaterial
+{
+ /// <summary>
+ /// WmsMaterial
+ /// </summary>
+ public class WmsMaterial : FullAuditedAggregateRoot<Guid>
+ {
+ /// <summary>
+ /// 鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛�
+ /// </summary>
+ public string MaterialCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 閲囪喘绫诲瀷锛堟灇涓惧�硷級
+ /// </summary>
+ public PurchaseTypeEnum PurchaseType { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲瀷锛堟灇涓惧�硷級
+ /// </summary>
+ public MaterialTypeEnum MaterialType { get; set; }
+
+ /// <summary>
+ /// 涓诲崟浣嶏紙濡傦細kg銆乵銆佷釜锛�
+ /// </summary>
+ public string PrimaryUnit { get; set; }
+
+ /// <summary>
+ /// 瑙勬牸/鏍囧噯锛堝锛欸B/T 8163-2018锛�
+ /// </summary>
+ public string Standard { get; set; }
+
+ /// <summary>
+ /// 澶栧緞锛堝崟浣嶏細mm锛�
+ /// </summary>
+ public decimal OuterDiameter { get; set; }
+
+ /// <summary>
+ /// 澹佸帤锛堝崟浣嶏細mm锛�
+ /// </summary>
+ public decimal WallThickness { get; set; }
+
+ /// <summary>
+ /// 鏉愯川锛堝锛�304涓嶉攬閽級
+ /// </summary>
+ public string MaterialQuality { get; set; }
+
+ /// <summary>
+ /// 闀垮害锛堝崟浣嶏細m锛�
+ /// </summary>
+ public decimal Length { get; set; }
+
+ /// <summary>
+ /// 鏄惁涓轰富鏀锛坱rue: 涓绘敮绠�, false: 闈炰富鏀锛�
+ /// </summary>
+ public YesNoEnum IsMainBranch { get; set; }
+
+ /// <summary>
+ /// 鐢熶骇宸ュ巶
+ /// </summary>
+ public string Factory { get; set; }
+
+ /// <summary>
+ /// 璇佷功缂栧彿锛堝锛氬帇鍔涘鍣ㄨ璇侊級
+ /// </summary>
+ public string Certification { 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/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterialDataSeedContributor.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterialDataSeedContributor.cs"
new file mode 100644
index 0000000..c7dfba5
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterialDataSeedContributor.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.WmsMaterial
+{
+ /// <summary>
+ /// WmsMaterial绉嶅瓙鏁版嵁鎻愪緵绋嬪簭
+ /// </summary>
+ public class WmsMaterialDataSeedContributor : IDataSeedContributor, ITransientDependency
+ {
+ private readonly IUnitOfWorkManager _unitOfWorkManager;
+ private readonly IWmsMaterialRepository _wmsmaterialRepository;
+ private readonly IGuidGenerator _guidGenerator;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsMaterialDataSeedContributor"/> class.
+ /// </summary>
+ /// <param name="unitOfWorkManager">The unit of work manager.</param>
+ /// <param name="guidGenerator">The unique identifier generator.</param>
+ /// <param name="wmsmaterialRepository">The work section repository.</param>
+ public WmsMaterialDataSeedContributor(IUnitOfWorkManager unitOfWorkManager, IGuidGenerator guidGenerator, IWmsMaterialRepository wmsmaterialRepository)
+ {
+ _unitOfWorkManager = unitOfWorkManager;
+ _wmsmaterialRepository = wmsmaterialRepository;
+ _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 SeedWmsMaterialDataAsync();
+ }
+ catch (Exception e)
+ {
+ Console.WriteLine(e.Message);
+ }
+ }
+ }
+
+ /// <summary>
+ /// Seeds the work section data asynchronous.
+ /// </summary>
+ private async Task SeedWmsMaterialDataAsync()
+ {
+
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterialSpecification.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterialSpecification.cs"
new file mode 100644
index 0000000..10e3999
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterialSpecification.cs"
@@ -0,0 +1,41 @@
+//using System.Linq.Expressions;
+
+//namespace CMS.Plugin.HIAWms.Domain.WmsMaterials
+//{
+// /// <summary>
+// /// WmsMaterial瑙勭害
+// /// </summary>
+// public class WmsMaterialSpecification : Volo.Abp.Specifications.Specification<WmsMaterial>
+// {
+// private readonly string _materialCode;
+
+// /// <summary>
+// /// Initializes a new instance of the <see cref="WmsMaterialSpecification"/> class.
+// /// </summary>
+// public WmsMaterialSpecification()
+// {
+// }
+
+// /// <summary>
+// /// Initializes a new instance of the <see cref="WmsMaterialSpecification"/> class.
+// /// </summary>
+// /// <param name="materialCode">The name.</param>
+// public WmsMaterialSpecification(string materialCode = null)
+// {
+// _materialCode = materialCode;
+// }
+
+// /// <inheritdoc />
+// public override Expression<Func<WmsMaterial, bool>> ToExpression()
+// {
+// Expression<Func<WmsMaterial, bool>> expression = c => 1 == 1;
+
+// if (_materialCode != null)
+// {
+// expression = expression.And(c => c.MaterialCode == _materialCode);
+// }
+
+// return expression;
+// }
+// }
+//}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/IWmsPlaceRepository.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/IWmsPlaceRepository.cs"
new file mode 100644
index 0000000..b18102b
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/IWmsPlaceRepository.cs"
@@ -0,0 +1,54 @@
+using Volo.Abp.Domain.Repositories;
+using Volo.Abp.Specifications;
+
+namespace CMS.Plugin.HIAWms.Domain.WmsPlaces;
+
+/// <summary>
+/// WmsPlace浠撳偍
+/// </summary>
+public interface IWmsPlaceRepository : IBasicRepository<WmsPlace, Guid>
+{
+ /// <summary>
+ /// Finds the by name asynchronous.
+ /// </summary>
+ /// <param name="name">The name.</param>
+ /// <param name="cancellationToken">The cancellation token.</param>
+ /// <returns></returns>
+ Task<WmsPlace> 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<WmsPlace>> GetListAsync(WmsPlace? place, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, string filter = null, Specification<WmsPlace> 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(WmsPlace? place, string filter = null, Specification<WmsPlace> specification = null, CancellationToken cancellationToken = default);
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/WmsPlace.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/WmsPlace.cs"
new file mode 100644
index 0000000..c73bb3a
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/WmsPlace.cs"
@@ -0,0 +1,104 @@
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
+using CMS.Plugin.HIAWms.Domain.Shared.WmsPlaces;
+using Volo.Abp;
+using Volo.Abp.Domain.Entities.Auditing;
+
+namespace CMS.Plugin.HIAWms.Domain.WmsPlaces
+{
+ /// <summary>
+ /// WmsPlace
+ /// </summary>
+ public class WmsPlace : FullAuditedAggregateRoot<Guid>
+ {
+ /// <summary>
+ /// 缂栧彿
+ /// </summary>
+ public virtual string PlaceNo { get; set; }
+
+ /// <summary>
+ /// 璐т綅绫诲瀷
+ /// </summary>
+ public PlaceTypeEnum StorageTypeNo { get; set; }
+
+ /// <summary>
+ /// 璐т綅鐘舵��
+ /// </summary>
+ public PlaceStatusEnum PlaceStatus { get; set; }
+
+ /// <summary>
+ /// 鎵�鍦ㄥ簱鍖�
+ /// </summary>
+ public string AreaCode { get; set; }
+
+ /// <summary>
+ /// 宸烽亾
+ /// </summary>
+ public int Aisle { get; set; }
+
+ /// <summary>
+ /// 鎺�
+ /// </summary>
+ public int RowNo { get; set; }
+
+ /// <summary>
+ /// 鍒�
+ /// </summary>
+ public int ColumnNo { get; set; }
+
+ /// <summary>
+ /// 灞�
+ /// </summary>
+ public int LayerNo { get; set; }
+
+ /// <summary>
+ /// 鏄惁閿佸畾
+ /// </summary>
+ public YesNoEnum Islock { get; set; }
+
+ /// <summary>
+ /// 鏄惁绌烘墭
+ /// </summary>
+ public YesNoEnum EmptyContainer { 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/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/WmsPlaceDataSeedContributor.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/WmsPlaceDataSeedContributor.cs"
new file mode 100644
index 0000000..b4f1e65
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/WmsPlaceDataSeedContributor.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.WmsPlaces
+{
+ /// <summary>
+ /// WmsPlace绉嶅瓙鏁版嵁鎻愪緵绋嬪簭
+ /// </summary>
+ public class WmsPlaceDataSeedContributor : IDataSeedContributor, ITransientDependency
+ {
+ private readonly IUnitOfWorkManager _unitOfWorkManager;
+ private readonly IWmsPlaceRepository _wmsplaceRepository;
+ private readonly IGuidGenerator _guidGenerator;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsPlaceDataSeedContributor"/> class.
+ /// </summary>
+ /// <param name="unitOfWorkManager">The unit of work manager.</param>
+ /// <param name="guidGenerator">The unique identifier generator.</param>
+ /// <param name="wmsplaceRepository">The work section repository.</param>
+ public WmsPlaceDataSeedContributor(IUnitOfWorkManager unitOfWorkManager, IGuidGenerator guidGenerator, IWmsPlaceRepository wmsplaceRepository)
+ {
+ _unitOfWorkManager = unitOfWorkManager;
+ _wmsplaceRepository = wmsplaceRepository;
+ _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 SeedWmsPlaceDataAsync();
+ }
+ catch (Exception e)
+ {
+ Console.WriteLine(e.Message);
+ }
+ }
+ }
+
+ /// <summary>
+ /// Seeds the work section data asynchronous.
+ /// </summary>
+ private async Task SeedWmsPlaceDataAsync()
+ {
+
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/WmsPlaceSpecification.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/WmsPlaceSpecification.cs"
new file mode 100644
index 0000000..752970c
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/WmsPlaceSpecification.cs"
@@ -0,0 +1,41 @@
+using System.Linq.Expressions;
+
+namespace CMS.Plugin.HIAWms.Domain.WmsPlaces
+{
+ /// <summary>
+ /// WmsPlace瑙勭害
+ /// </summary>
+ public class WmsPlaceSpecification : Volo.Abp.Specifications.Specification<WmsPlace>
+ {
+ private readonly string _placeNo;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsPlaceSpecification"/> class.
+ /// </summary>
+ public WmsPlaceSpecification()
+ {
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsPlaceSpecification"/> class.
+ /// </summary>
+ /// <param name="placeNo">The name.</param>
+ public WmsPlaceSpecification(string placeNo = null)
+ {
+ _placeNo = placeNo;
+ }
+
+ /// <inheritdoc />
+ public override Expression<Func<WmsPlace, bool>> ToExpression()
+ {
+ Expression<Func<WmsPlace, bool>> expression = c => 1 == 1;
+
+ if (_placeNo != null)
+ {
+ expression = expression.And(c => c.PlaceNo == _placeNo);
+ }
+
+ return expression;
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/IWmsStoreRepository.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/IWmsStoreRepository.cs"
new file mode 100644
index 0000000..e843235
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/IWmsStoreRepository.cs"
@@ -0,0 +1,61 @@
+using Volo.Abp.Domain.Repositories;
+using Volo.Abp.Specifications;
+
+namespace CMS.Plugin.HIAWms.Domain.WmsStores;
+
+/// <summary>
+/// WmsStore浠撳偍
+/// </summary>
+public interface IWmsStoreRepository : IBasicRepository<WmsStore, Guid>
+{
+ /// <summary>
+ /// Finds the by name asynchronous.
+ /// </summary>
+ /// <param name="name">The name.</param>
+ /// <param name="cancellationToken">The cancellation token.</param>
+ /// <returns></returns>
+ Task<WmsStore> 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<WmsStore>> GetListAsync(WmsStore? store, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, string filter = null, Specification<WmsStore> specification = null, bool includeDetails = false, CancellationToken cancellationToken = default);
+
+ /// <summary>
+ /// 鏌ヨ浠撳簱鍒楄〃
+ /// </summary>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ Task<List<WmsStore>> GetListForSelectAsync(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(WmsStore? store, string filter = null, Specification<WmsStore> specification = null, CancellationToken cancellationToken = default);
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/WmsStore.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/WmsStore.cs"
new file mode 100644
index 0000000..ebed236
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/WmsStore.cs"
@@ -0,0 +1,64 @@
+using CMS.Plugin.HIAWms.Domain.Shared.WmsStores;
+using Microsoft.EntityFrameworkCore.Metadata.Internal;
+using Volo.Abp;
+using Volo.Abp.Domain.Entities.Auditing;
+
+namespace CMS.Plugin.HIAWms.Domain.WmsStores
+{
+ /// <summary>
+ /// WmsStore
+ /// </summary>
+ public class WmsStore : FullAuditedAggregateRoot<Guid>
+ {
+
+ /// <summary>
+ /// 浠撳簱浠g爜
+ /// </summary>
+ public string? StoreCode { get; set; }
+
+ /// <summary>
+ /// 浠撳簱鍚嶇О
+ /// </summary>
+ public string? StoreName { 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 string? Remark { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public virtual int Sort { 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/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/WmsStoreDataSeedContributor.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/WmsStoreDataSeedContributor.cs"
new file mode 100644
index 0000000..92b665d
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/WmsStoreDataSeedContributor.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.WmsStores
+{
+ /// <summary>
+ /// WmsStore绉嶅瓙鏁版嵁鎻愪緵绋嬪簭
+ /// </summary>
+ public class WmsStoreDataSeedContributor : IDataSeedContributor, ITransientDependency
+ {
+ private readonly IUnitOfWorkManager _unitOfWorkManager;
+ private readonly IWmsStoreRepository _wmsstoreRepository;
+ private readonly IGuidGenerator _guidGenerator;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsStoreDataSeedContributor"/> class.
+ /// </summary>
+ /// <param name="unitOfWorkManager">The unit of work manager.</param>
+ /// <param name="guidGenerator">The unique identifier generator.</param>
+ /// <param name="wmsstoreRepository">The work section repository.</param>
+ public WmsStoreDataSeedContributor(IUnitOfWorkManager unitOfWorkManager, IGuidGenerator guidGenerator, IWmsStoreRepository wmsstoreRepository)
+ {
+ _unitOfWorkManager = unitOfWorkManager;
+ _wmsstoreRepository = wmsstoreRepository;
+ _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 SeedWmsStoreDataAsync();
+ }
+ catch (Exception e)
+ {
+ Console.WriteLine(e.Message);
+ }
+ }
+ }
+
+ /// <summary>
+ /// Seeds the work section data asynchronous.
+ /// </summary>
+ private async Task SeedWmsStoreDataAsync()
+ {
+
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/WmsStoreSpecification.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/WmsStoreSpecification.cs"
new file mode 100644
index 0000000..4396267
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/WmsStoreSpecification.cs"
@@ -0,0 +1,41 @@
+using System.Linq.Expressions;
+
+namespace CMS.Plugin.HIAWms.Domain.WmsStores
+{
+ /// <summary>
+ /// WmsStore瑙勭害
+ /// </summary>
+ public class WmsStoreSpecification : Volo.Abp.Specifications.Specification<WmsStore>
+ {
+ private readonly string _storeCode;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsStoreSpecification"/> class.
+ /// </summary>
+ public WmsStoreSpecification()
+ {
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsStoreSpecification"/> class.
+ /// </summary>
+ /// <param name="storeCode">The name.</param>
+ public WmsStoreSpecification(string storeCode = null)
+ {
+ _storeCode = storeCode;
+ }
+
+ /// <inheritdoc />
+ public override Expression<Func<WmsStore, bool>> ToExpression()
+ {
+ Expression<Func<WmsStore, bool>> expression = c => 1 == 1;
+
+ if (_storeCode != null)
+ {
+ expression = expression.And(c => c.StoreCode == _storeCode);
+ }
+
+ return expression;
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/\346\226\260\346\226\207\344\273\266\345\244\271/WmsTask.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/\346\226\260\346\226\207\344\273\266\345\244\271/WmsTask.cs"
new file mode 100644
index 0000000..4330c5d
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Domain/\346\226\260\346\226\207\344\273\266\345\244\271/WmsTask.cs"
@@ -0,0 +1,126 @@
+锘縰sing CMS.Plugin.HIAWms.Domain.Shared.Enums;
+using NPOI.SS.Formula.Functions;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Volo.Abp.Domain.Entities.Auditing;
+
+namespace CMS.Plugin.HIAWms.Domain.WmsTask
+{
+ /// <summary>
+ /// 浠诲姟
+ /// </summary>W
+ public class WmsTask : FullAuditedAggregateRoot<Guid>
+ {
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public string TaskNo { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绫诲瀷
+ /// </summary>
+ public TaskTypeEnum TaskType { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绛夌骇
+ /// </summary>
+ public int TaskLevel { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鐘舵��
+ /// </summary>
+ public WmsTaskStatus TaskStatus { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栧彿
+ /// </summary>
+ public string? ContainerNo { get; set; }
+
+ /// <summary>
+ /// 璧峰搴撲綅
+ /// </summary>
+ public string? SourcePlace { get; set; }
+
+ /// <summary>
+ /// 鐩爣搴撲綅
+ /// </summary>
+ public string? ToPlace { get; set; }
+
+ /// <summary>
+ /// 宸烽亾
+ /// </summary>
+ public int? Aisle { get; set; }
+ /// <summary>
+ /// 鍫嗗灈鏈篒D
+ /// </summary>
+ public int? DodeviceId { get; set; }
+
+ /// <summary>
+ /// 璁惧绫诲瀷
+ /// </summary>
+ public int Dodevicetype { get; set; }
+
+
+ /// <summary>
+ /// 璁惧浠诲姟鐘舵��
+ /// </summary>
+ public int TaskDodeviceStatus { get; set; }
+
+ /// <summary>
+ /// WCS鏄惁鍙互璇诲彇
+ /// </summary>
+ public bool IsRead { get; set; }
+
+ /// <summary>
+ /// 瀛愪换鍔$被鍨�
+ /// </summary>
+ public SonTaskTypeEnum? SonTaskType { get; set; }
+
+ /// <summary>
+ /// 鏉ユ簮鍗曟嵁鍙�
+ /// </summary>
+ public string? SourceOrderNo { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鍏宠仈鐨勪笅涓换鍔℃槸鍚︾敓鎴愭垚鍔燂紝澶辫触涓�1锛屽叾浠栨棤鎿嶄綔
+ /// </summary>
+ public int? IsNextTask { get; set; }
+
+ /// <summary>
+ /// 鍙彉鍙橀噺1
+ /// </summary>
+ public string? MutableParam1 { get; set; }
+
+ /// <summary>
+ /// 鍙彉鍙橀噺2
+ /// </summary>
+ public string? MutableParam2 { get; set; }
+
+ /// <summary>
+ /// 鍙彉鍙橀噺3
+ /// </summary>
+ public string? MutableParam3 { get; set; }
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public virtual int Sort { 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/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMS.Plugin.HIAWms.EntityFrameworkCore.csproj" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMS.Plugin.HIAWms.EntityFrameworkCore.csproj"
new file mode 100644
index 0000000..4556780
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMS.Plugin.HIAWms.EntityFrameworkCore.csproj"
@@ -0,0 +1,25 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <Import Project="../../common.props" />
+ <Import Project="../../configureawait.props" />
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Volo.Abp.Dapper" Version="$(ABPPackageVersion)" />
+ <PackageReference Include="Volo.Abp.EntityFrameworkCore" Version="$(ABPPackageVersion)" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\CMS.Plugin.HIAWms.Domain\CMS.Plugin.HIAWms.Domain.csproj" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <Reference Include="CmsQueryExtensions">
+ <HintPath>..\..\..\..\..\CommonDLL\CmsQueryExtensions.dll</HintPath>
+ </Reference>
+ </ItemGroup>
+
+</Project>
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginDapperRepository.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginDapperRepository.cs"
new file mode 100644
index 0000000..e928a04
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginDapperRepository.cs"
@@ -0,0 +1,18 @@
+using CMS.Plugin.HIAWms.Domain.Data;
+using Volo.Abp.Domain.Repositories.Dapper;
+using Volo.Abp.EntityFrameworkCore;
+
+namespace CMS.Plugin.HIAWms.EntityFrameworkCore;
+
+/// <inheritdoc />
+public class CMSPluginDapperRepository : DapperRepository<ICMSPluginDbContext>, ICMSPluginDapperRepository
+{
+ /// <summary>
+ /// Initializes a new instance of the <see cref="CMSPluginDapperRepository"/> class.
+ /// </summary>
+ /// <param name="dbContextProvider">The database context provider.</param>
+ public CMSPluginDapperRepository(IDbContextProvider<ICMSPluginDbContext> dbContextProvider)
+ : base(dbContextProvider)
+ {
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginDbSchemaMigrator.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginDbSchemaMigrator.cs"
new file mode 100644
index 0000000..43c9d04
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginDbSchemaMigrator.cs"
@@ -0,0 +1,37 @@
+using CMS.Plugin.HIAWms.Domain.Data;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using Volo.Abp.DependencyInjection;
+
+namespace CMS.Plugin.HIAWms.EntityFrameworkCore;
+
+/// <inheritdoc />
+public class CMSPluginDbSchemaMigrator : ICMSPluginDbSchemaMigrator, ITransientDependency
+{
+ private readonly IServiceProvider _serviceProvider;
+ private readonly ILogger<CMSPluginDbSchemaMigrator> _logger;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="CMSPluginDbSchemaMigrator"/> class.
+ /// </summary>
+ /// <param name="serviceProvider">The service provider.</param>
+ public CMSPluginDbSchemaMigrator(IServiceProvider serviceProvider, ILogger<CMSPluginDbSchemaMigrator> logger)
+ {
+ _serviceProvider = serviceProvider;
+ _logger = logger;
+ }
+
+ /// <inheritdoc />
+ public async Task MigrateAsync()
+ {
+ /* We intentionally resolving the CMSDbContext
+ * from IServiceProvider (instead of directly injecting it)
+ * to properly get the connection string of the current tenant in the
+ * current scope.
+ */
+ var database = _serviceProvider.GetRequiredService<ICMSPluginDbContext>().Database;
+ _logger.LogInformation($"Start database {database.GetDbConnection().Database} migrate");
+ await database.MigrateAsync();
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginEfCoreEntityExtensionMappings.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginEfCoreEntityExtensionMappings.cs"
new file mode 100644
index 0000000..785f426
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginEfCoreEntityExtensionMappings.cs"
@@ -0,0 +1,47 @@
+using CMS.Plugin.HIAWms.Domain.Shared;
+using Volo.Abp.Threading;
+
+namespace CMS.Plugin.HIAWms.EntityFrameworkCore;
+
+/// <summary>
+/// EfCore瀹炰綋鎵╁睍
+/// </summary>
+public static class CMSPluginEfCoreEntityExtensionMappings
+{
+ private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner();
+
+ /// <summary>
+ /// Configures this instance.
+ /// </summary>
+ public static void Configure()
+ {
+ CMSPluginModuleExtensionConfigurator.Configure();
+
+ OneTimeRunner.Run(() =>
+ {
+ /* You can configure extra properties for the
+ * entities defined in the modules used by your application.
+ *
+ * This class can be used to map these extra properties to table fields in the database.
+ *
+ * USE THIS CLASS ONLY TO CONFIGURE EF CORE RELATED MAPPING.
+ * USE CMSModuleExtensionConfigurator CLASS (in the Domain.Shared project)
+ * FOR A HIGH LEVEL API TO DEFINE EXTRA PROPERTIES TO ENTITIES OF THE USED MODULES
+ *
+ * Example: Map a property to a table field:
+
+ ObjectExtensionManager.Instance
+ .MapEfCoreProperty<WmsContainer, string>(
+ "MyProperty",
+ (entityBuilder, propertyBuilder) =>
+ {
+ propertyBuilder.HasMaxLength(128);
+ }
+ );
+
+ * See the documentation for more:
+ * https://docs.abp.io/en/abp/latest/Customizing-Application-Modules-Extending-Entities
+ */
+ });
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginEntityFrameworkCoreModule.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginEntityFrameworkCoreModule.cs"
new file mode 100644
index 0000000..93017dd
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginEntityFrameworkCoreModule.cs"
@@ -0,0 +1,26 @@
+using CMS.Plugin.HIAWms.Domain;
+using Volo.Abp.EntityFrameworkCore;
+using Volo.Abp.Modularity;
+
+namespace CMS.Plugin.HIAWms.EntityFrameworkCore;
+
+/// <summary>
+/// EntityFrameworkCore妯″潡
+/// </summary>
+[DependsOn(
+ typeof(CMSPluginDomainModule),
+ typeof(AbpEntityFrameworkCoreModule)
+ )]
+public class CMSPluginEntityFrameworkCoreModule : AbpModule
+{
+ /// <inheritdoc />
+ public override void PreConfigureServices(ServiceConfigurationContext context)
+ {
+ CMSPluginEfCoreEntityExtensionMappings.Configure();
+ }
+
+ /// <inheritdoc />
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsArea.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsArea.cs"
new file mode 100644
index 0000000..c335bd9
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsArea.cs"
@@ -0,0 +1,68 @@
+using CMS.Plugin.HIAWms.Domain;
+using CMS.Plugin.HIAWms.Domain.WmsAreas;
+using CMS.Plugin.HIAWms.Domain.Shared.WmsAreas;
+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<WmsArea> IncludeDetails(this IQueryable<WmsArea> queryable, bool include = true)
+ {
+ if (!include)
+ {
+ return queryable;
+ }
+
+ return queryable;
+ }
+
+ /// <summary>
+ /// Configures the wmsarea.
+ /// </summary>
+ /// <param name="builder">The builder.</param>
+ public static void ConfigureWmsArea(this ModelBuilder builder)
+ {
+ Check.NotNull(builder, nameof(builder));
+
+ builder.Entity<WmsArea>(b =>
+ {
+ // Configure table & schema name
+ b.ToTable((CMSPluginDbProperties.DbTablePrefix + "_WmsAreas").ToLower(), CMSPluginDbProperties.DbSchema).HasComment("搴撳尯琛�");
+
+ b.ConfigureByConvention();
+
+ // Properties
+ b.Property(x => x.AreaNo).HasMaxLength(WmsAreaConsts.MaxNameLength).IsRequired().HasComment("搴撳尯缂栧彿");
+ b.Property(x => x.AreaName).HasMaxLength(WmsAreaConsts.MaxAreaNameLength).IsRequired().HasComment("搴撳尯鍚嶇О");
+ b.Property(x => x.AreaDesc).HasMaxLength(WmsAreaConsts.MaxAreaDescLength).IsRequired(false).HasComment("鎻忚堪");
+ b.Property(x => x.AreaStatus).HasComment("搴撳尯鐘舵��");
+ b.Property(x => x.AreaType).HasComment("搴撳尯绫诲瀷");
+ b.Property(x => x.RedundantField1).HasMaxLength(WmsAreaConsts.MaxRedundantFieldLength).IsRequired(false).HasComment("鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��");
+ b.Property(x => x.RedundantField2).HasMaxLength(WmsAreaConsts.MaxRedundantFieldLength).IsRequired(false).HasComment("鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��");
+ b.Property(x => x.RedundantField3).HasMaxLength(WmsAreaConsts.MaxRedundantFieldLength).IsRequired(false).HasComment("鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��");
+ b.Property(x => x.StoreCode).HasMaxLength(WmsAreaConsts.MaxStoreCodeLength).IsRequired(false).HasComment("浠撳簱浠g爜");
+ b.Property(x => x.StoreName).HasMaxLength(WmsAreaConsts.MaxStoreNameLength).IsRequired(false).HasComment("浠撳簱鍚嶇О");
+ b.Property(x => x.Sort).HasComment("鎺掑簭");
+ b.Property(x => x.Remark).HasMaxLength(WmsAreaConsts.MaxRemarkLength).IsRequired(false).HasComment("澶囨敞");
+ b.Property(x => x.IsDisabled).IsRequired(false).HasComment("鏄惁绂佺敤");
+
+ // Indexes
+ b.HasIndex(u => u.AreaName);
+
+ // Apply object extension mappings
+ b.ApplyObjectExtensionMappings();
+ });
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsContainer.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsContainer.cs"
new file mode 100644
index 0000000..289cef0
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsContainer.cs"
@@ -0,0 +1,117 @@
+using CMS.Plugin.HIAWms.Domain;
+using CMS.Plugin.HIAWms.Domain.WmsContainers;
+using CMS.Plugin.HIAWms.Domain.Shared.WmsContainers;
+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<WmsContainer> IncludeDetails(this IQueryable<WmsContainer> queryable, bool include = true)
+ {
+ if (!include)
+ {
+ return queryable;
+ }
+
+ return queryable;
+ }
+
+ /// <summary>
+ /// Configures the wmscontainer.
+ /// </summary>
+ /// <param name="builder">The builder.</param>
+ public static void ConfigureWmsContainer(this ModelBuilder builder)
+ {
+ Check.NotNull(builder, nameof(builder));
+
+ builder.Entity<WmsContainer>(b =>
+ {
+ b.ToTable((CMSPluginDbProperties.DbTablePrefix + "_WmsContainers").ToLower(), CMSPluginDbProperties.DbSchema)
+ .HasComment("鎵樼洏淇℃伅琛�");
+
+ b.ConfigureByConvention();
+
+ //Properties
+ b.Property(x => x.ContainerNo)
+ .HasMaxLength(50)
+ .IsRequired()
+ .HasComment("鎵樼洏缂栧彿");
+
+ b.Property(x => x.ContainerType)
+ .IsRequired()
+ .HasComment("鎵樼洏绫诲瀷");
+
+ b.Property(x => x.ContainerStatus)
+ .IsRequired()
+ .HasComment("鎵樼洏鐘舵��");
+
+ b.Property(x => x.SpecLength)
+ .HasPrecision(18, 2)
+ .HasComment("闀垮害");
+
+ b.Property(x => x.SpecWidth)
+ .HasPrecision(18, 2)
+ .HasComment("瀹藉害");
+
+ b.Property(x => x.SpecHeight)
+ .HasPrecision(18, 2)
+ .HasComment("楂樺害");
+
+ b.Property(x => x.LimitLength)
+ .HasPrecision(18, 2)
+ .HasComment("闄愰暱");
+
+ b.Property(x => x.LimitWidth)
+ .HasPrecision(18, 2)
+ .HasComment("闄愬");
+
+ b.Property(x => x.LimitHeight)
+ .HasPrecision(18, 2)
+ .HasComment("闄愰珮");
+
+ b.Property(x => x.MaxWeight)
+ .HasPrecision(18, 2)
+ .HasComment("杞介噸涓婇檺");
+
+ b.Property(x => x.ExceptionNumber)
+ .HasComment("寮傚父鏁伴噺");
+
+ b.Property(x => x.MaterialNumber)
+ .HasComment("鐗╂枡鏁伴噺");
+
+ b.Property(x => x.RedundantField1)
+ .HasMaxLength(200)
+ .HasComment("鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��");
+
+ b.Property(x => x.RedundantField2)
+ .HasMaxLength(200)
+ .HasComment("鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��");
+
+ b.Property(x => x.RedundantField3)
+ .HasMaxLength(200)
+ .HasComment("鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��");
+
+ b.Property(x => x.Sort).HasComment("鎺掑簭");
+ b.Property(x => x.IsDisabled).IsRequired(false).HasComment("鏄惁绂佺敤");
+ b.Property(x => x.Remark).HasMaxLength(WmsContainerConsts.MaxRemarkLength).IsRequired(false).HasComment("澶囨敞");
+
+ b.HasIndex(u => u.ContainerNo).IsUnique();
+ b.HasIndex(u => u.ContainerType);
+ b.HasIndex(u => u.ContainerStatus);
+
+ b.ApplyObjectExtensionMappings();
+ });
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsInOutStockRecord.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsInOutStockRecord.cs"
new file mode 100644
index 0000000..ebcb94d
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsInOutStockRecord.cs"
@@ -0,0 +1,121 @@
+锘縰sing CMS.Plugin.HIAWms.Domain;
+using CMS.Plugin.HIAWms.Domain.WmsInOutStockRecord;
+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<WmsInOutStockRecord> IncludeDetails(this IQueryable<WmsInOutStockRecord> queryable, bool include = true)
+ {
+ if (!include)
+ {
+ return queryable;
+ }
+
+ return queryable;
+ }
+
+ /// <summary>
+ /// Configures the wmsmaterial.
+ /// </summary>
+ /// <param name="builder"></param>
+ public static void ConfigureWmsInOutStockRecord(this ModelBuilder builder)
+ {
+ Check.NotNull(builder, nameof(builder));
+
+ builder.Entity<WmsInOutStockRecord>(b =>
+ {
+ b.ToTable((CMSPluginDbProperties.DbTablePrefix + "_WmsInOutStockRecords").ToLower(), CMSPluginDbProperties.DbSchema)
+ .HasComment("鍑哄叆搴撹褰曡〃");
+
+ b.ConfigureByConvention();
+ // 涓婚敭閰嶇疆
+ b.HasKey(x => x.Id);
+ // Properties
+ b.Property(x => x.OrderNo)
+ .HasMaxLength(50)
+ .IsRequired()
+ .HasComment("鍗曟嵁缂栧彿");
+
+ b.Property(x => x.MaterialName)
+ .HasMaxLength(100)
+ .IsRequired(false)
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property(x => x.MaterialNo)
+ .HasMaxLength(50)
+ .IsRequired()
+ .HasComment("鐗╂枡浠跺彿");
+
+ b.Property(x => x.StockType)
+ .IsRequired()
+ .HasComment("鎿嶄綔绫诲瀷");
+
+ b.Property(x => x.ContainerNo)
+ .HasMaxLength(50)
+ .IsRequired(false)
+ .HasComment("瀹瑰櫒缂栧彿");
+
+ b.Property(x => x.MaterialModel)
+ .HasMaxLength(50)
+ .IsRequired(false)
+ .HasComment("鏈哄瀷");
+
+ b.Property(x => x.OperateTime)
+ .IsRequired(false)
+ .HasComment("鎿嶄綔鏃堕棿");
+
+ b.Property(x => x.Remark)
+ .HasMaxLength(500)
+ .IsRequired(false)
+ .HasComment("澶囨敞");
+
+ b.Property(x => x.MaterialId)
+ .HasMaxLength(50)
+ .IsRequired()
+ .HasComment("鐗╂枡ID");
+
+ b.Property(x => x.TaskNo)
+ .HasMaxLength(50)
+ .IsRequired()
+ .HasComment("浠诲姟鍙�");
+
+ b.Property(x => x.SourcePlace)
+ .HasMaxLength(50)
+ .IsRequired(false)
+ .HasComment("璧峰搴撲綅");
+
+ b.Property(x => x.ToPlace)
+ .HasMaxLength(50)
+ .IsRequired(false)
+ .HasComment("鐩爣搴撲綅");
+
+ b.Property(x => x.Sort).HasComment("鎺掑簭");
+ b.Property(x => x.IsDisabled).IsRequired(false).HasComment("鏄惁绂佺敤");
+
+ // Indexes
+ b.HasIndex(x => x.OrderNo);
+ b.HasIndex(x => x.MaterialNo);
+ b.HasIndex(x => x.MaterialId);
+ b.HasIndex(x => x.TaskNo);
+ b.HasIndex(x => x.StockType);
+ b.HasIndex(x => x.ContainerNo);
+ b.HasIndex(x => x.OperateTime);
+
+ b.ApplyObjectExtensionMappings();
+ });
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs"
new file mode 100644
index 0000000..67ae4b3
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs"
@@ -0,0 +1,144 @@
+using CMS.Plugin.HIAWms.Domain;
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
+using CMS.Plugin.HIAWms.Domain.WmsMaterial;
+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<WmsMaterial> IncludeDetails(this IQueryable<WmsMaterial> queryable, bool include = true)
+ {
+ if (!include)
+ {
+ return queryable;
+ }
+
+ return queryable;
+ }
+
+ /// <summary>
+ /// Configures the wmsmaterial.
+ /// </summary>
+ /// <param name="builder">The builder.</param>
+ public static void ConfigureWmsMaterial(this ModelBuilder builder)
+ {
+ Check.NotNull(builder, nameof(builder));
+
+ builder.Entity<WmsMaterial>(b =>
+ {
+ // 閰嶇疆琛ㄥ悕鍜屾敞閲�
+ b.ToTable((CMSPluginDbProperties.DbTablePrefix + "_WmsMaterials").ToLower(),
+ CMSPluginDbProperties.DbSchema)
+ .HasComment("鐗╂枡鍩虹淇℃伅琛�");
+
+ b.ConfigureByConvention();
+
+ // 涓婚敭閰嶇疆锛團ullAuditedAggregateRoot<Guid> 宸查粯璁ゅ寘鍚� Id锛�
+ b.HasKey(x => x.Id);
+
+ // 瀛楁閰嶇疆
+ b.Property(x => x.MaterialCode)
+ .HasMaxLength(64)
+ .IsRequired()
+ .HasComment("鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛�");
+
+ b.Property(x => x.MaterialName)
+ .HasMaxLength(128)
+ .IsRequired()
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property(x => x.PurchaseType)
+ .HasComment("閲囪喘绫诲瀷锛堟灇涓惧�硷級");
+
+ b.Property(x => x.MaterialType)
+ .HasComment("鐗╂枡绫诲瀷锛堟灇涓惧�硷級");
+
+ b.Property(x => x.PrimaryUnit)
+ .HasMaxLength(20)
+ .HasComment("涓诲崟浣嶏紙濡傦細kg銆乵銆佷釜锛�");
+
+ b.Property(x => x.Standard)
+ .HasMaxLength(128)
+ .HasComment("瑙勬牸/鏍囧噯锛堝锛欸B/T 8163-2018锛�");
+
+ b.Property(x => x.OuterDiameter)
+ .HasColumnType("decimal(18,2)")
+ .HasComment("澶栧緞锛堝崟浣嶏細mm锛�");
+
+ b.Property(x => x.WallThickness)
+ .HasColumnType("decimal(18,2)")
+ .HasComment("澹佸帤锛堝崟浣嶏細mm锛�");
+
+ b.Property(x => x.MaterialQuality)
+ .HasMaxLength(64)
+ .HasComment("鏉愯川锛堝锛�304涓嶉攬閽級");
+
+ b.Property(x => x.Length)
+ .HasColumnType("decimal(18,2)")
+ .HasComment("闀垮害锛堝崟浣嶏細m锛�");
+
+ b.Property(x => x.IsMainBranch)
+ .HasDefaultValue(YesNoEnum.N)
+ .HasComment("鏄惁涓轰富鏀");
+
+ b.Property(x => x.Factory)
+ .HasMaxLength(64)
+ .HasComment("鐢熶骇宸ュ巶");
+
+ b.Property(x => x.Certification)
+ .HasMaxLength(128)
+ .HasComment("璇佷功缂栧彿");
+
+ // 鍐椾綑瀛楁閰嶇疆
+ 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.Sort)
+ .HasDefaultValue(0)
+ .HasComment("鎺掑簭");
+
+ b.Property(x => x.Remark)
+ .HasMaxLength(500)
+ .IsRequired(false)
+ .HasComment("澶囨敞");
+
+ b.Property(x => x.IsDisabled)
+ .IsRequired(false)
+ .HasDefaultValue(false)
+ .HasComment("鏄惁绂佺敤");
+
+ // 绱㈠紩閰嶇疆
+ b.HasIndex(x => x.MaterialCode).IsUnique(); // 鐗╂枡缂栫爜鍞竴绱㈠紩
+ b.HasIndex(x => x.MaterialName); // 鐗╂枡鍚嶇О鏅�氱储寮�
+ b.HasIndex(x => x.PurchaseType); // 閲囪喘绫诲瀷绱㈠紩锛堝闇�鏌ヨ杩囨护锛�
+ b.HasIndex(x => x.MaterialType); // 鐗╂枡绫诲瀷绱㈠紩锛堝闇�鏌ヨ杩囨护锛�
+
+ b.ApplyObjectExtensionMappings();
+ });
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsPlace.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsPlace.cs"
new file mode 100644
index 0000000..b557a95
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsPlace.cs"
@@ -0,0 +1,74 @@
+using CMS.Plugin.HIAWms.Domain;
+using CMS.Plugin.HIAWms.Domain.WmsPlaces;
+using CMS.Plugin.HIAWms.Domain.Shared.WmsPlaces;
+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<WmsPlace> IncludeDetails(this IQueryable<WmsPlace> queryable, bool include = true)
+ {
+ if (!include)
+ {
+ return queryable;
+ }
+
+ return queryable;
+ }
+
+ /// <summary>
+ /// Configures the wmsplace.
+ /// </summary>
+ /// <param name="builder">The builder.</param>
+ public static void ConfigureWmsPlace(this ModelBuilder builder)
+ {
+ Check.NotNull(builder, nameof(builder));
+
+ builder.Entity<WmsPlace>(b =>
+ {
+ // Configure table & schema name
+ b.ToTable((CMSPluginDbProperties.DbTablePrefix + "_WmsPlaces").ToLower(), CMSPluginDbProperties.DbSchema).HasComment("搴撲綅琛�");
+
+ b.ConfigureByConvention();
+
+ // Properties
+ b.Property(x => x.PlaceNo).HasMaxLength(WmsPlaceConsts.MaxPlaceNoLength).IsRequired().HasComment("缂栧彿");
+ b.Property(x => x.StorageTypeNo).HasComment("璐т綅绫诲瀷");
+ b.Property(x => x.PlaceStatus).HasComment("璐т綅鐘舵��");
+ b.Property(x => x.AreaCode).HasMaxLength(WmsPlaceConsts.MaxAreaCodeLength).IsRequired().HasComment("鎵�鍦ㄥ簱鍖�");
+ b.Property(x => x.Aisle).HasComment("宸烽亾");
+ b.Property(x => x.RowNo).HasComment("鎺�");
+ b.Property(x => x.ColumnNo).HasComment("鍒�");
+ b.Property(x => x.LayerNo).HasComment("灞�");
+ b.Property(x => x.Islock).HasComment("鏄惁閿佸畾");
+ b.Property(x => x.EmptyContainer).HasComment("鏄惁绌烘墭");
+ b.Property(x => x.RedundantField1).HasMaxLength(WmsPlaceConsts.MaxRedundantFieldLength).IsRequired(false).HasComment("鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��");
+ b.Property(x => x.RedundantField2).HasMaxLength(WmsPlaceConsts.MaxRedundantFieldLength).IsRequired(false).HasComment("鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��");
+ b.Property(x => x.RedundantField3).HasMaxLength(WmsPlaceConsts.MaxRedundantFieldLength).IsRequired(false).HasComment("鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��");
+ b.Property(x => x.Sort).HasComment("鎺掑簭");
+ b.Property(x => x.Remark).HasMaxLength(WmsPlaceConsts.MaxRemarkLength).IsRequired(false).HasComment("澶囨敞");
+ b.Property(x => x.IsDisabled).IsRequired(false).HasComment("鏄惁绂佺敤");
+
+ // Indexes
+ b.HasIndex(u => u.PlaceNo).IsUnique(); // 缂栧彿瀛楁娣诲姞鍞竴绱㈠紩
+ b.HasIndex(u => u.AreaCode); // 鎵�鍦ㄥ簱鍖哄瓧娈垫坊鍔犳櫘閫氱储寮�
+ b.HasIndex(u => u.StorageTypeNo); // 璐т綅绫诲瀷瀛楁娣诲姞鏅�氱储寮�
+ b.HasIndex(u => u.PlaceStatus); // 璐т綅绫诲瀷瀛楁娣诲姞鏅�氱储寮�
+
+ // Apply object extension mappings
+ b.ApplyObjectExtensionMappings();
+ });
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsStore.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsStore.cs"
new file mode 100644
index 0000000..59ed277
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsStore.cs"
@@ -0,0 +1,63 @@
+using CMS.Plugin.HIAWms.Domain;
+using CMS.Plugin.HIAWms.Domain.WmsStores;
+using CMS.Plugin.HIAWms.Domain.Shared.WmsStores;
+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<WmsStore> IncludeDetails(this IQueryable<WmsStore> queryable, bool include = true)
+ {
+ if (!include)
+ {
+ return queryable;
+ }
+
+ return queryable;
+ }
+
+ /// <summary>
+ /// Configures the wmsstore.
+ /// </summary>
+ /// <param name="builder">The builder.</param>
+ public static void ConfigureWmsStore(this ModelBuilder builder)
+ {
+ Check.NotNull(builder, nameof(builder));
+
+ builder.Entity<WmsStore>(b =>
+ {
+ // Configure table & schema name
+ b.ToTable((CMSPluginDbProperties.DbTablePrefix + "_WmsStores").ToLower(), CMSPluginDbProperties.DbSchema).HasComment("浠撳簱淇℃伅琛�");
+
+ b.ConfigureByConvention();
+
+ // Properties
+ b.Property(x => x.StoreCode).HasMaxLength(WmsStoreConsts.MaxStoreCodeLength).IsRequired(false).HasComment("浠撳簱浠g爜");
+ b.Property(x => x.StoreName).HasMaxLength(WmsStoreConsts.MaxStoreNameLength).IsRequired(false).HasComment("浠撳簱鍚嶇О");
+ b.Property(x => x.RedundantField1).HasMaxLength(WmsStoreConsts.MaxRedundantFieldLength).IsRequired(false).HasComment("鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��");
+ b.Property(x => x.RedundantField2).HasMaxLength(WmsStoreConsts.MaxRedundantFieldLength).IsRequired(false).HasComment("鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��");
+ b.Property(x => x.RedundantField3).HasMaxLength(WmsStoreConsts.MaxRedundantFieldLength).IsRequired(false).HasComment("鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��");
+ b.Property(x => x.Remark).HasMaxLength(WmsStoreConsts.MaxRemarkLength).IsRequired(false).HasComment("澶囨敞");
+ b.Property(x => x.Sort).HasComment("鎺掑簭");
+ b.Property(x => x.IsDisabled).IsRequired(false).HasComment("鏄惁绂佺敤");
+
+ // Indexes
+ b.HasIndex(u => u.StoreName);
+
+ // Apply object extension mappings
+ b.ApplyObjectExtensionMappings();
+ });
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsTask.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsTask.cs"
new file mode 100644
index 0000000..b72a67b
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsTask.cs"
@@ -0,0 +1,153 @@
+锘縰sing CMS.Plugin.HIAWms.Domain;
+using CMS.Plugin.HIAWms.Domain.WmsTask;
+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<WmsTask> IncludeDetails(this IQueryable<WmsTask> queryable, bool include = true)
+ {
+ if (!include)
+ {
+ return queryable;
+ }
+
+ return queryable;
+ }
+ /// <summary>
+ /// Configures the WMS task entity.
+ /// </summary>
+ /// <param name="builder">The builder.</param>
+ public static void ConfigureWmsTask(this ModelBuilder builder)
+ {
+ Check.NotNull(builder, nameof(builder));
+
+ builder.Entity<WmsTask>(b =>
+ {
+ b.ToTable((CMSPluginDbProperties.DbTablePrefix + "_WmsTasks").ToLower(), CMSPluginDbProperties.DbSchema)
+ .HasComment("浠诲姟琛�");
+
+ b.ConfigureByConvention();
+
+ // Primary key configuration (inherited from FullAuditedAggregateRoot<Guid>)
+ b.HasKey(x => x.Id);
+
+ // Properties configuration
+ b.Property(x => x.TaskNo)
+ .HasMaxLength(50)
+ .IsRequired()
+ .HasComment("浠诲姟鍙�");
+
+ b.Property(x => x.TaskType)
+ .IsRequired()
+ .HasComment("浠诲姟绫诲瀷");
+
+ b.Property(x => x.TaskLevel)
+ .IsRequired()
+ .HasComment("浠诲姟绛夌骇");
+
+ b.Property(x => x.TaskStatus)
+ .IsRequired()
+ .HasComment("浠诲姟鐘舵��");
+
+ b.Property(x => x.ContainerNo)
+ .HasMaxLength(50)
+ .IsRequired(false)
+ .HasComment("鎵樼洏缂栧彿");
+
+ b.Property(x => x.SourcePlace)
+ .HasMaxLength(50)
+ .IsRequired(false)
+ .HasComment("璧峰搴撲綅");
+
+ b.Property(x => x.ToPlace)
+ .HasMaxLength(50)
+ .IsRequired(false)
+ .HasComment("鐩爣搴撲綅");
+
+ b.Property(x => x.Aisle)
+ .IsRequired(false)
+ .HasComment("宸烽亾");
+
+ b.Property(x => x.DodeviceId)
+ .IsRequired(false)
+ .HasComment("鍫嗗灈鏈篒D");
+
+ b.Property(x => x.Dodevicetype)
+ .IsRequired()
+ .HasComment("璁惧绫诲瀷");
+
+ b.Property(x => x.TaskDodeviceStatus)
+ .IsRequired()
+ .HasComment("璁惧浠诲姟鐘舵��");
+
+ b.Property(x => x.IsRead)
+ .IsRequired()
+ .HasComment("WCS鏄惁鍙互璇诲彇");
+
+ b.Property(x => x.SonTaskType)
+ .IsRequired(false)
+ .HasComment("瀛愪换鍔$被鍨�");
+
+ b.Property(x => x.SourceOrderNo)
+ .HasMaxLength(50)
+ .IsRequired(false)
+ .HasComment("鏉ユ簮鍗曟嵁鍙�");
+
+ b.Property(x => x.IsNextTask)
+ .IsRequired(false)
+ .HasComment("涓嬩釜浠诲姟鏄惁鐢熸垚鎴愬姛");
+
+ b.Property(x => x.MutableParam1)
+ .HasMaxLength(200)
+ .IsRequired(false)
+ .HasComment("鍙彉鍙橀噺1");
+
+ b.Property(x => x.MutableParam2)
+ .HasMaxLength(200)
+ .IsRequired(false)
+ .HasComment("鍙彉鍙橀噺2");
+
+ b.Property(x => x.MutableParam3)
+ .HasMaxLength(200)
+ .IsRequired(false)
+ .HasComment("鍙彉鍙橀噺3");
+
+ b.Property(x => x.Sort)
+ .IsRequired()
+ .HasComment("鎺掑簭");
+
+ b.Property(x => x.IsDisabled)
+ .IsRequired(false)
+ .HasComment("鏄惁绂佺敤");
+
+ // Indexes configuration
+ b.HasIndex(x => x.TaskNo).IsUnique();
+ b.HasIndex(x => x.TaskType);
+ b.HasIndex(x => x.TaskStatus);
+ b.HasIndex(x => x.ContainerNo);
+ b.HasIndex(x => x.SourcePlace);
+ b.HasIndex(x => x.ToPlace);
+ b.HasIndex(x => x.DodeviceId);
+ b.HasIndex(x => x.IsRead);
+ b.HasIndex(x => x.SourceOrderNo);
+ b.HasIndex(x => x.Sort);
+
+ b.ApplyObjectExtensionMappings();
+ });
+ }
+ }
+
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/FodyWeavers.xml" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/FodyWeavers.xml"
new file mode 100644
index 0000000..9a2e2c4
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/FodyWeavers.xml"
@@ -0,0 +1,3 @@
+锘�<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
+ <ConfigureAwait ContinueOnCapturedContext="false" />
+</Weavers>
\ No newline at end of file
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/ICMSPluginDbContext.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/ICMSPluginDbContext.cs"
new file mode 100644
index 0000000..89c690f
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/ICMSPluginDbContext.cs"
@@ -0,0 +1,14 @@
+using CMS.Plugin.HIAWms.Domain;
+using Volo.Abp.Data;
+using Volo.Abp.EntityFrameworkCore;
+
+namespace CMS.Plugin.HIAWms.EntityFrameworkCore
+{
+ /// <summary>
+ /// 鏁版嵁搴撲笂涓嬫枃
+ /// </summary>
+ [ConnectionStringName(CMSPluginDbProperties.ConnectionStringName)]
+ public interface ICMSPluginDbContext : IEfCoreDbContext
+ {
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Properties/AssemblyInfo.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Properties/AssemblyInfo.cs"
new file mode 100644
index 0000000..2c3f1b6
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Properties/AssemblyInfo.cs"
@@ -0,0 +1,2 @@
+锘縰sing System.Runtime.CompilerServices;
+[assembly:InternalsVisibleToAttribute("CMS.Plugin.EntityFrameworkCore.Tests")]
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsAreaRepository.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsAreaRepository.cs"
new file mode 100644
index 0000000..64d4d26
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsAreaRepository.cs"
@@ -0,0 +1,115 @@
+using System;
+using System.Linq.Dynamic.Core;
+using CMS.Plugin.HIAWms.Domain.WmsAreas;
+using CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions;
+using DatabaseSchemaReader.Filters;
+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 EfCoreWmsAreaRepository : EfCoreRepository<ICMSPluginDbContext, WmsArea, Guid>, IWmsAreaRepository
+{
+ /// <summary>
+ /// Initializes a new instance of the <see cref="EfCoreWmsAreaRepository"/> class.
+ /// </summary>
+ /// <param name="dbContextProvider">The database context provider.</param>
+ public EfCoreWmsAreaRepository(IDbContextProvider<ICMSPluginDbContext> dbContextProvider)
+ : base(dbContextProvider)
+ {
+ }
+
+ /// <inheritdoc />
+ public virtual async Task<WmsArea> FindByNameAsync(string name, CancellationToken cancellationToken = default)
+ {
+ return await (await GetDbSetAsync())
+ .IncludeDetails()
+ .OrderBy(t => t.Sort)
+ .Where(x => !x.IsDeleted)
+ .FirstOrDefaultAsync(t => t.AreaName == name, GetCancellationToken(cancellationToken));
+ }
+
+
+ /// <summary>
+ /// 查看库区是否存在
+ /// </summary>
+ /// <param name="areaNo"></param>
+ /// <param name="id"></param>
+ /// <returns></returns>
+ public async Task<bool> NameExistAsync(string areaNo, Guid? id = null)
+ {
+ return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id)
+ .Where(x => !x.IsDeleted).AnyAsync(x => x.AreaNo == areaNo);
+ }
+
+ /// <inheritdoc />
+ public async Task<int> GetMaxSortAsync()
+ {
+ var hasAny = await (await GetQueryableAsync())
+ .Where(x => !x.IsDeleted).AnyAsync();
+ if (!hasAny)
+ {
+ return 1;
+ }
+
+ var sort = await (await GetQueryableAsync())
+ .Where(x => !x.IsDeleted).MaxAsync(x => x.Sort);
+ return sort + 1;
+ }
+
+ /// <inheritdoc />
+ public async Task<List<WmsArea>> GetListAsync(WmsArea? area, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, string filter = null, Specification<WmsArea> specification = null, bool includeDetails = false, CancellationToken cancellationToken = default)
+ {
+ specification ??= new WmsAreaSpecification();
+ return await (await GetDbSetAsync())
+ .IncludeDetails(includeDetails)
+ .Where(specification.ToExpression())
+ .WhereIf(!filter.IsNullOrWhiteSpace(), u => u.AreaNo.Contains(filter))
+ .WhereIf(!string.IsNullOrEmpty(area.AreaNo), u => u.AreaNo.Contains(area.AreaNo))
+ .WhereIf(!string.IsNullOrEmpty(area.AreaName), u => u.AreaNo.Contains(area.AreaName))
+ .WhereIf(!string.IsNullOrEmpty(area.StoreCode), u => u.AreaNo == area.StoreCode)
+ .WhereIf(area.AreaStatus > 0, u => u.AreaStatus == area.AreaStatus)
+ .WhereIf(area.AreaType > 0, u => u.AreaType == area.AreaType)
+ .Where(x => !x.IsDeleted)
+ .OrderBy(sorting.IsNullOrEmpty() ? nameof(WmsArea.Sort) : sorting)
+ .PageBy(skipCount, maxResultCount)
+ .ToListAsync(GetCancellationToken(cancellationToken));
+ }
+
+ /// <summary>
+ /// 获取库区列表
+ /// </summary>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public async Task<List<WmsArea>> GetListForSelectAsync(CancellationToken cancellationToken = default)
+ {
+ return await (await GetDbSetAsync())
+ .ToListAsync(GetCancellationToken(cancellationToken));
+ }
+
+ /// <inheritdoc />
+ public async Task<long> GetCountAsync(WmsArea? area, string filter = null, Specification<WmsArea> specification = null, CancellationToken cancellationToken = default)
+ {
+ specification ??= new WmsAreaSpecification();
+ return await (await GetQueryableAsync())
+ .Where(specification.ToExpression())
+ .WhereIf(!filter.IsNullOrWhiteSpace(), u => u.AreaNo.Contains(filter))
+ .WhereIf(!string.IsNullOrEmpty(area.AreaNo), u => u.AreaNo.Contains(area.AreaNo))
+ .WhereIf(!string.IsNullOrEmpty(area.AreaName), u => u.AreaNo.Contains(area.AreaName))
+ .WhereIf(!string.IsNullOrEmpty(area.StoreCode), u => u.AreaNo == area.StoreCode)
+ .WhereIf(area.AreaStatus > 0, u => u.AreaStatus == area.AreaStatus)
+ .WhereIf(area.AreaType > 0, u => u.AreaType == area.AreaType)
+ .Where(x => !x.IsDeleted)
+ .CountAsync(cancellationToken: GetCancellationToken(cancellationToken));
+ }
+
+ /// <inheritdoc />
+ public override async Task<IQueryable<WmsArea>> WithDetailsAsync()
+ {
+ return (await GetQueryableAsync()).Where(x => !x.IsDeleted).IncludeDetails();
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsContainerRepository.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsContainerRepository.cs"
new file mode 100644
index 0000000..f42bc56
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsContainerRepository.cs"
@@ -0,0 +1,107 @@
+using System.Linq.Dynamic.Core;
+using CMS.Plugin.HIAWms.Domain.WmsContainers;
+using CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions;
+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 EfCoreWmsContainerRepository : EfCoreRepository<ICMSPluginDbContext, WmsContainer, Guid>, IWmsContainerRepository
+{
+ /// <summary>
+ /// Initializes a new instance of the <see cref="EfCoreWmsContainerRepository"/> class.
+ /// </summary>
+ /// <param name="dbContextProvider">The database context provider.</param>
+ public EfCoreWmsContainerRepository(IDbContextProvider<ICMSPluginDbContext> dbContextProvider)
+ : base(dbContextProvider)
+ {
+ }
+
+ /// <inheritdoc />
+ public virtual async Task<WmsContainer> FindByNameAsync(string containerNo, CancellationToken cancellationToken = default)
+ {
+ return await (await GetDbSetAsync())
+ .IncludeDetails()
+ .Where(x => !x.IsDeleted)
+ .OrderBy(t => t.Sort)
+ .FirstOrDefaultAsync(t => t.ContainerNo == containerNo, GetCancellationToken(cancellationToken));
+ }
+
+ /// <inheritdoc />
+ public async Task<bool> NameExistAsync(string containerNo, Guid? id = null)
+ {
+ return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id).Where(x => !x.IsDeleted).AnyAsync(x => x.ContainerNo == containerNo);
+ }
+
+ /// <inheritdoc />
+ public async Task<int> GetMaxSortAsync()
+ {
+ var hasAny = await (await GetQueryableAsync()).Where(x => !x.IsDeleted).AnyAsync();
+ if (!hasAny)
+ {
+ return 1;
+ }
+
+ var sort = await (await GetQueryableAsync())
+ .Where(x => !x.IsDeleted).MaxAsync(x => x.Sort);
+ return sort + 1;
+ }
+
+ /// <summary>
+ /// 查询列表
+ /// </summary>
+ /// <param name="container"></param>
+ /// <param name="sorting"></param>
+ /// <param name="maxResultCount"></param>
+ /// <param name="skipCount"></param>
+ /// <param name="filter"></param>
+ /// <param name="specification"></param>
+ /// <param name="includeDetails"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public async Task<List<WmsContainer>> GetListAsync(WmsContainer? container,string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, string filter = null, Specification<WmsContainer> specification = null, bool includeDetails = false, CancellationToken cancellationToken = default)
+ {
+ specification ??= new WmsContainerSpecification();
+ return await (await GetDbSetAsync())
+ .IncludeDetails(includeDetails)
+ .Where(specification.ToExpression())
+ .Where(x => !x.IsDeleted)
+ .WhereIf(!filter.IsNullOrWhiteSpace(), u => u.ContainerNo.Contains(filter))
+ .WhereIf(!string.IsNullOrEmpty(container.ContainerNo),u=>u.ContainerNo.Contains(container.ContainerNo))
+ .WhereIf(container.ContainerStatus>0, u=>u.ContainerStatus == u.ContainerStatus)
+ .WhereIf(container.ContainerType>0, u=>u.ContainerType == u.ContainerType)
+ .OrderBy(sorting.IsNullOrEmpty() ? nameof(WmsContainer.Sort) : sorting)
+ .PageBy(skipCount, maxResultCount)
+ .ToListAsync(GetCancellationToken(cancellationToken));
+ }
+
+ /// <summary>
+ /// 查询数量
+ /// </summary>
+ /// <param name="container"></param>
+ /// <param name="filter"></param>
+ /// <param name="specification"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public async Task<long> GetCountAsync(WmsContainer? container, string filter = null, Specification<WmsContainer> specification = null, CancellationToken cancellationToken = default)
+ {
+ specification ??= new WmsContainerSpecification();
+ return await (await GetQueryableAsync())
+ .Where(specification.ToExpression())
+ .Where(x => !x.IsDeleted)
+ .WhereIf(!string.IsNullOrEmpty(container.ContainerNo), u => u.ContainerNo.Contains(container.ContainerNo))
+ .WhereIf(container.ContainerStatus > 0, u => u.ContainerStatus == u.ContainerStatus)
+ .WhereIf(container.ContainerType > 0, u => u.ContainerType == u.ContainerType)
+ .WhereIf(!filter.IsNullOrWhiteSpace(), u => u.ContainerNo.Contains(filter))
+ .CountAsync(cancellationToken: GetCancellationToken(cancellationToken));
+ }
+
+ /// <inheritdoc />
+ public override async Task<IQueryable<WmsContainer>> WithDetailsAsync()
+ {
+ return (await GetQueryableAsync()).Where(x => !x.IsDeleted).IncludeDetails();
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsInOutStockRecordRepository.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsInOutStockRecordRepository.cs"
new file mode 100644
index 0000000..fb76acf
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsInOutStockRecordRepository.cs"
@@ -0,0 +1,113 @@
+using CMS.Plugin.HIAWms.Domain.WmsInOutStockRecord;
+using CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions;
+using CmsQueryExtensions.Extension;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using System.Linq.Expressions;
+using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
+using Volo.Abp.EntityFrameworkCore;
+
+
+namespace CMS.Plugin.HIAWms.EntityFrameworkCore.Repositories;
+
+/// <summary>
+/// 鍑哄叆搴撹褰曡〃浠撳偍瀹炵幇
+/// </summary>
+public class EfCoreWmsInOutStockRecordRepository : EfCoreRepository<ICMSPluginDbContext, WmsInOutStockRecord, Guid>, IWmsInOutStockRecordRepository
+{
+ /// <summary>
+ /// Initializes a new instance of the <see cref="EfCoreWmsInOutStockRecordRepository"/> class.
+ /// </summary>
+ /// <param name="dbContextProvider">The database context provider.</param>
+ public EfCoreWmsInOutStockRecordRepository(IDbContextProvider<ICMSPluginDbContext> dbContextProvider)
+ : base(dbContextProvider)
+ {
+ }
+
+ /// <summary>
+ /// 鎸夌収鍚嶇О鏌ユ壘鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="name"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public virtual async Task<WmsInOutStockRecord> FindByNameAsync(string name, CancellationToken cancellationToken = default)
+ {
+ return await (await GetDbSetAsync())
+ .IncludeDetails()
+ .Where(x => !x.IsDeleted)
+ .OrderBy(t => t.Sort)
+ .FirstOrDefaultAsync(t => t.MaterialNo == name, GetCancellationToken(cancellationToken));
+ }
+
+ /// <summary>
+ /// 楠岃瘉鍚嶇О鏄惁瀛樺湪鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="name">鏍¢獙鍊�</param>
+ /// <param name="id"></param>
+ /// <returns></returns>
+ public async Task<bool> NameExistAsync(string name, Guid? id = null)
+ {
+ return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id).Where(x => !x.IsDeleted).AnyAsync(x => x.MaterialNo == name);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏈�澶ф帓搴忓嚭鍏ュ簱璁板綍琛�
+ /// </summary>
+ /// <returns></returns>
+ public async Task<int> GetMaxSortAsync()
+ {
+ var hasAny = await (await GetQueryableAsync())
+ .Where(x => !x.IsDeleted).AnyAsync();
+ if (!hasAny)
+ {
+ return 1;
+ }
+
+ var sort = await (await GetQueryableAsync())
+ .Where(x => !x.IsDeleted).MaxAsync(x => x.Sort);
+ return sort + 1;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍒嗛〉鍒楄〃鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="whereConditions"></param>
+ /// <param name="sorting"></param>
+ /// <param name="maxResultCount"></param>
+ /// <param name="skipCount"></param>
+ /// <param name="includeDetails"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public async Task<List<WmsInOutStockRecord>> GetListAsync(FunReturnResultModel<Expression<Func<WmsInOutStockRecord, bool>>> whereConditions, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, bool includeDetails = false, CancellationToken cancellationToken = default)
+ {
+ return await (await GetDbSetAsync())
+ .IncludeDetails(includeDetails)
+ .WhereIf(whereConditions != null, whereConditions.data)
+ .Where(x => !x.IsDeleted)
+ .OrderBy(sorting.IsNullOrEmpty() ? nameof(WmsInOutStockRecord.Sort) : sorting)
+ .PageBy(skipCount, maxResultCount)
+ .ToListAsync(GetCancellationToken(cancellationToken));
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎬绘暟鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="whereConditions"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public async Task<long> GetCountAsync(FunReturnResultModel<Expression<Func<WmsInOutStockRecord, bool>>> whereConditions, CancellationToken cancellationToken = default)
+ {
+ return await (await GetQueryableAsync())
+ .WhereIf(whereConditions != null, whereConditions.data)
+ .Where(x => !x.IsDeleted)
+ .CountAsync(cancellationToken: GetCancellationToken(cancellationToken));
+ }
+
+
+ /// <inheritdoc />
+ public override async Task<IQueryable<WmsInOutStockRecord>> WithDetailsAsync()
+ {
+ return (await GetQueryableAsync())
+ .Where(x => !x.IsDeleted).IncludeDetails();
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialRepository.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialRepository.cs"
new file mode 100644
index 0000000..7a7edc1
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialRepository.cs"
@@ -0,0 +1,113 @@
+using CMS.Plugin.HIAWms.Domain.WmsMaterial;
+using CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions;
+using CmsQueryExtensions.Extension;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using System.Linq.Expressions;
+using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
+using Volo.Abp.EntityFrameworkCore;
+
+
+namespace CMS.Plugin.HIAWms.EntityFrameworkCore.Repositories;
+
+/// <summary>
+/// 鐗╂枡鍩虹淇℃伅琛ㄤ粨鍌ㄥ疄鐜�
+/// </summary>
+public class EfCoreWmsMaterialRepository : EfCoreRepository<ICMSPluginDbContext, WmsMaterial, Guid>, IWmsMaterialRepository
+{
+ /// <summary>
+ /// Initializes a new instance of the <see cref="EfCoreWmsMaterialRepository"/> class.
+ /// </summary>
+ /// <param name="dbContextProvider">The database context provider.</param>
+ public EfCoreWmsMaterialRepository(IDbContextProvider<ICMSPluginDbContext> dbContextProvider)
+ : base(dbContextProvider)
+ {
+ }
+
+ /// <summary>
+ /// 鎸夌収鍚嶇О鏌ユ壘鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="name"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public virtual async Task<WmsMaterial> FindByNameAsync(string name, CancellationToken cancellationToken = default)
+ {
+ return await (await GetDbSetAsync())
+ .IncludeDetails()
+ .Where(x => !x.IsDeleted)
+ .OrderBy(t => t.Sort)
+ .FirstOrDefaultAsync(t => t.MaterialCode == name, GetCancellationToken(cancellationToken));
+ }
+
+ /// <summary>
+ /// 楠岃瘉鍚嶇О鏄惁瀛樺湪鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="materialCode"></param>
+ /// <param name="id"></param>
+ /// <returns></returns>
+ public async Task<bool> NameExistAsync(string materialCode, Guid? id = null)
+ {
+ return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id).Where(x => !x.IsDeleted).AnyAsync(x => x.MaterialCode == materialCode);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏈�澶ф帓搴忕墿鏂欏熀纭�淇℃伅琛�
+ /// </summary>
+ /// <returns></returns>
+ public async Task<int> GetMaxSortAsync()
+ {
+ var hasAny = await (await GetQueryableAsync())
+ .Where(x => !x.IsDeleted).AnyAsync();
+ if (!hasAny)
+ {
+ return 1;
+ }
+
+ var sort = await (await GetQueryableAsync())
+ .Where(x => !x.IsDeleted).MaxAsync(x => x.Sort);
+ return sort + 1;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍒嗛〉鍒楄〃鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="whereConditions"></param>
+ /// <param name="sorting"></param>
+ /// <param name="maxResultCount"></param>
+ /// <param name="skipCount"></param>
+ /// <param name="includeDetails"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public async Task<List<WmsMaterial>> GetListAsync(FunReturnResultModel<Expression<Func<WmsMaterial, bool>>> whereConditions, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, bool includeDetails = false, CancellationToken cancellationToken = default)
+ {
+ return await (await GetDbSetAsync())
+ .IncludeDetails(includeDetails)
+ .WhereIf(whereConditions != null, whereConditions.data)
+ .Where(x => !x.IsDeleted)
+ .OrderBy(sorting.IsNullOrEmpty() ? nameof(WmsMaterial.Sort) : sorting)
+ .PageBy(skipCount, maxResultCount)
+ .ToListAsync(GetCancellationToken(cancellationToken));
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎬绘暟鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="whereConditions"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public async Task<long> GetCountAsync(FunReturnResultModel<Expression<Func<WmsMaterial, bool>>> whereConditions, CancellationToken cancellationToken = default)
+ {
+ return await (await GetQueryableAsync())
+ .WhereIf(whereConditions != null, whereConditions.data)
+ .Where(x => !x.IsDeleted)
+ .CountAsync(cancellationToken: GetCancellationToken(cancellationToken));
+ }
+
+
+ /// <inheritdoc />
+ public override async Task<IQueryable<WmsMaterial>> WithDetailsAsync()
+ {
+ return (await GetQueryableAsync())
+ .Where(x => !x.IsDeleted).IncludeDetails();
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsPlaceRepository.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsPlaceRepository.cs"
new file mode 100644
index 0000000..cc36680
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsPlaceRepository.cs"
@@ -0,0 +1,104 @@
+using System.Linq.Dynamic.Core;
+using CMS.Plugin.HIAWms.Domain.WmsPlaces;
+using CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions;
+using Microsoft.AspNetCore.Components.Forms;
+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 EfCoreWmsPlaceRepository : EfCoreRepository<ICMSPluginDbContext, WmsPlace, Guid>, IWmsPlaceRepository
+{
+ /// <summary>
+ /// Initializes a new instance of the <see cref="EfCoreWmsPlaceRepository"/> class.
+ /// </summary>
+ /// <param name="dbContextProvider">The database context provider.</param>
+ public EfCoreWmsPlaceRepository(IDbContextProvider<ICMSPluginDbContext> dbContextProvider)
+ : base(dbContextProvider)
+ {
+ }
+
+ /// <inheritdoc />
+ public virtual async Task<WmsPlace> FindByNameAsync(string name, CancellationToken cancellationToken = default)
+ {
+ return await (await GetDbSetAsync())
+ .IncludeDetails()
+ .Where(x => !x.IsDeleted)
+ .OrderBy(t => t.Sort)
+ .FirstOrDefaultAsync(t => t.PlaceNo == name, GetCancellationToken(cancellationToken));
+ }
+
+ /// <inheritdoc />
+ public async Task<bool> NameExistAsync(string name, Guid? id = null)
+ {
+ return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id).Where(x => !x.IsDeleted).AnyAsync(x => x.PlaceNo == name);
+ }
+
+ /// <inheritdoc />
+ public async Task<int> GetMaxSortAsync()
+ {
+ var hasAny = await (await GetQueryableAsync())
+ .Where(x => !x.IsDeleted).AnyAsync();
+ if (!hasAny)
+ {
+ return 1;
+ }
+
+ var sort = await (await GetQueryableAsync())
+ .Where(x => !x.IsDeleted).MaxAsync(x => x.Sort);
+ return sort + 1;
+ }
+
+ /// <inheritdoc />
+ public async Task<List<WmsPlace>> GetListAsync(WmsPlace? place, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, string filter = null, Specification<WmsPlace> specification = null, bool includeDetails = false, CancellationToken cancellationToken = default)
+ {
+ specification ??= new WmsPlaceSpecification();
+ return await (await GetDbSetAsync())
+ .IncludeDetails(includeDetails)
+ .Where(specification.ToExpression())
+ .WhereIf(!filter.IsNullOrWhiteSpace(), u => u.PlaceNo.Contains(filter))
+ .WhereIf(!string.IsNullOrEmpty(place.PlaceNo), u => u.PlaceNo == place.PlaceNo)
+ .WhereIf(place.PlaceStatus > 0, u => u.PlaceStatus == place.PlaceStatus)
+ .WhereIf(place.StorageTypeNo > 0, u => u.StorageTypeNo == place.StorageTypeNo)
+ .WhereIf(place.Aisle > 0, u => u.Aisle == place.Aisle)
+ .WhereIf(place.RowNo > 0, u => u.RowNo == place.RowNo)
+ .WhereIf(place.ColumnNo > 0, u => u.ColumnNo == place.ColumnNo)
+ .WhereIf(place.LayerNo > 0, u => u.LayerNo == place.LayerNo)
+ .WhereIf(place.Islock > 0, u => u.Islock == place.Islock)
+ .WhereIf(place.EmptyContainer > 0, u => u.EmptyContainer == place.EmptyContainer)
+ .Where(x => !x.IsDeleted)
+ .OrderBy(sorting.IsNullOrEmpty() ? nameof(WmsPlace.Sort) : sorting)
+ .PageBy(skipCount, maxResultCount)
+ .ToListAsync(GetCancellationToken(cancellationToken));
+ }
+
+ /// <inheritdoc />
+ public async Task<long> GetCountAsync(WmsPlace? place, string filter = null, Specification<WmsPlace> specification = null, CancellationToken cancellationToken = default)
+ {
+ specification ??= new WmsPlaceSpecification();
+ return await (await GetQueryableAsync())
+ .Where(specification.ToExpression())
+ .WhereIf(!string.IsNullOrEmpty(place.PlaceNo), u => u.PlaceNo == place.PlaceNo)
+ .WhereIf(place.PlaceStatus > 0, u => u.PlaceStatus == place.PlaceStatus)
+ .WhereIf(place.StorageTypeNo > 0, u => u.StorageTypeNo == place.StorageTypeNo)
+ .WhereIf(place.Aisle > 0, u => u.Aisle == place.Aisle)
+ .WhereIf(place.RowNo > 0, u => u.RowNo == place.RowNo)
+ .WhereIf(place.ColumnNo > 0, u => u.ColumnNo == place.ColumnNo)
+ .WhereIf(place.LayerNo > 0, u => u.LayerNo == place.LayerNo)
+ .WhereIf(place.Islock > 0, u => u.Islock == place.Islock)
+ .WhereIf(place.EmptyContainer > 0, u => u.EmptyContainer == place.EmptyContainer)
+ .Where(x => !x.IsDeleted)
+ .WhereIf(!filter.IsNullOrWhiteSpace(), u => u.PlaceNo.Contains(filter))
+ .CountAsync(cancellationToken: GetCancellationToken(cancellationToken));
+ }
+
+ /// <inheritdoc />
+ public override async Task<IQueryable<WmsPlace>> WithDetailsAsync()
+ {
+ return (await GetQueryableAsync())
+ .Where(x => !x.IsDeleted).IncludeDetails();
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsStoreRepository.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsStoreRepository.cs"
new file mode 100644
index 0000000..5895908
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsStoreRepository.cs"
@@ -0,0 +1,100 @@
+using System.Linq.Dynamic.Core;
+using CMS.Plugin.HIAWms.Domain.WmsStores;
+using CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions;
+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 EfCoreWmsStoreRepository : EfCoreRepository<ICMSPluginDbContext, WmsStore, Guid>, IWmsStoreRepository
+{
+ /// <summary>
+ /// Initializes a new instance of the <see cref="EfCoreWmsStoreRepository"/> class.
+ /// </summary>
+ /// <param name="dbContextProvider">The database context provider.</param>
+ public EfCoreWmsStoreRepository(IDbContextProvider<ICMSPluginDbContext> dbContextProvider)
+ : base(dbContextProvider)
+ {
+ }
+
+ /// <inheritdoc />
+ public virtual async Task<WmsStore> FindByNameAsync(string name, CancellationToken cancellationToken = default)
+ {
+ return await (await GetDbSetAsync())
+ .IncludeDetails()
+ .Where(x => !x.IsDeleted)
+ .OrderBy(t => t.Sort)
+ .FirstOrDefaultAsync(t => t.StoreCode == name, GetCancellationToken(cancellationToken));
+ }
+
+ /// <inheritdoc />
+ public async Task<bool> NameExistAsync(string storeCode, Guid? id = null)
+ {
+ return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id).Where(x => !x.IsDeleted).AnyAsync(x => x.StoreCode == storeCode);
+ }
+
+ /// <inheritdoc />
+ public async Task<int> GetMaxSortAsync()
+ {
+ var hasAny = await (await GetQueryableAsync())
+ .Where(x => !x.IsDeleted).AnyAsync();
+ if (!hasAny)
+ {
+ return 1;
+ }
+
+ var sort = await (await GetQueryableAsync())
+ .Where(x => !x.IsDeleted).MaxAsync(x => x.Sort);
+ return sort + 1;
+ }
+
+ /// <inheritdoc />
+ public async Task<List<WmsStore>> GetListAsync(WmsStore? store, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, string filter = null, Specification<WmsStore> specification = null, bool includeDetails = false, CancellationToken cancellationToken = default)
+ {
+ specification ??= new WmsStoreSpecification();
+ return await (await GetDbSetAsync())
+ .IncludeDetails(includeDetails)
+ .Where(specification.ToExpression())
+ .Where(x => !x.IsDeleted)
+ .WhereIf(!filter.IsNullOrWhiteSpace(), u => u.StoreCode.Contains(filter))
+ .WhereIf(!string.IsNullOrEmpty(store.StoreCode),u=>u.StoreCode.Contains(store.StoreCode))
+ .WhereIf(!string.IsNullOrEmpty(store.StoreName),u=>u.StoreName.Contains(store.StoreName))
+ .OrderBy(sorting.IsNullOrEmpty() ? nameof(WmsStore.Sort) : sorting)
+ .PageBy(skipCount, maxResultCount)
+ .ToListAsync(GetCancellationToken(cancellationToken));
+ }
+
+ /// <summary>
+ /// 查询仓库列表
+ /// </summary>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public async Task<List<WmsStore>> GetListForSelectAsync( CancellationToken cancellationToken = default)
+ {
+ return await (await GetDbSetAsync())
+ .ToListAsync(GetCancellationToken(cancellationToken));
+ }
+
+ /// <inheritdoc />
+ public async Task<long> GetCountAsync(WmsStore? store, string filter = null, Specification<WmsStore> specification = null, CancellationToken cancellationToken = default)
+ {
+ specification ??= new WmsStoreSpecification();
+ return await (await GetQueryableAsync())
+ .Where(specification.ToExpression())
+ .Where(x => !x.IsDeleted)
+ .WhereIf(!filter.IsNullOrWhiteSpace(), u => u.StoreCode.Contains(filter))
+ .WhereIf(!string.IsNullOrEmpty(store.StoreCode), u => u.StoreCode.Contains(store.StoreCode))
+ .WhereIf(!string.IsNullOrEmpty(store.StoreName), u => u.StoreName.Contains(store.StoreName))
+ .CountAsync(cancellationToken: GetCancellationToken(cancellationToken));
+ }
+
+ /// <inheritdoc />
+ public override async Task<IQueryable<WmsStore>> WithDetailsAsync()
+ {
+ return (await GetQueryableAsync())
+ .Where(x => !x.IsDeleted).IncludeDetails();
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/appsettings.json" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/appsettings.json"
new file mode 100644
index 0000000..ebe0b8c
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/appsettings.json"
@@ -0,0 +1,5 @@
+{
+ "ConnectionStrings": {
+ "Default": "Server=localhost;Database=CMS.Plugin.HIAWms;User ID=root;Password=123abc.com"
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMS.Plugin.HIAWms.MySQL.csproj" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMS.Plugin.HIAWms.MySQL.csproj"
new file mode 100644
index 0000000..bec4d76
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMS.Plugin.HIAWms.MySQL.csproj"
@@ -0,0 +1,30 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <Import Project="../../common.props" />
+ <Import Project="../../configureawait.props" />
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Volo.Abp.EntityFrameworkCore.MySQL" Version="$(ABPPackageVersion)" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.5">
+ <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
+ <PrivateAssets>compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native</PrivateAssets>
+ </PackageReference>
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\CMS.Plugin.HIAWms.EntityFrameworkCore\CMS.Plugin.HIAWms.EntityFrameworkCore.csproj" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <Folder Include="Migrations\" />
+ </ItemGroup>
+
+</Project>
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMSPluginDbContext.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMSPluginDbContext.cs"
new file mode 100644
index 0000000..b93e817
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMSPluginDbContext.cs"
@@ -0,0 +1,54 @@
+using CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions;
+using CMS.Plugin.HIAWms.Domain;
+using CMS.Plugin.HIAWms.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore;
+using Volo.Abp.Data;
+using Volo.Abp.EntityFrameworkCore;
+using Volo.Abp.EntityFrameworkCore.Modeling;
+
+namespace CMS.Plugin.HIAWms.MySQL;
+
+/// <summary>
+/// 鏁版嵁搴撲笂涓嬫枃
+/// </summary>
+[ConnectionStringName(CMSPluginDbProperties.ConnectionStringName)]
+public class CMSPluginDbContext : AbpDbContext<CMSPluginDbContext>, ICMSPluginDbContext
+{
+ /* Add DbSet properties for your Aggregate Roots / Entities here. */
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="CMSPluginDbContext"/> class.
+ /// </summary>
+ /// <param name="options">The options.</param>
+ public CMSPluginDbContext(DbContextOptions<CMSPluginDbContext> options)
+ : base(options)
+ {
+ }
+
+ /// <inheritdoc />
+ protected override void OnModelCreating(ModelBuilder builder)
+ {
+ base.OnModelCreating(builder);
+
+ /* Include modules to your migration db context */
+
+ builder.ConfigureWmsContainer();
+ builder.ConfigureWmsStore();
+ builder.ConfigureWmsArea();
+ builder.ConfigureWmsPlace();
+ builder.ConfigureWmsMaterial();
+ builder.ConfigureWmsInOutStockRecord();
+ builder.ConfigureWmsTask();
+
+ /* Configure your own tables/entities inside here */
+
+ //builder.Entity<YourEntity>(b =>
+ //{
+ // b.ToTable(CMSPluginDbProperties.DbTablePrefix + "YourEntities", CMSPluginDbProperties.DbSchema);
+ // b.ConfigureByConvention(); //auto configure for the base class props
+ // //...
+ //});
+
+ builder.TryConfigureObjectExtensions<CMSPluginDbContext>();
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMSPluginDbContextFactory.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMSPluginDbContextFactory.cs"
new file mode 100644
index 0000000..e19d33d
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMSPluginDbContextFactory.cs"
@@ -0,0 +1,43 @@
+using CMS.Plugin.HIAWms.Domain;
+using CMS.Plugin.HIAWms.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Design;
+using Microsoft.Extensions.Configuration;
+
+namespace CMS.Plugin.HIAWms.MySQL;
+
+/// <summary>
+/// This class is needed for EF Core console commands
+/// (like Add-Migration and Update-Database commands)
+/// </summary>
+public class CMSPluginDbContextFactory : IDesignTimeDbContextFactory<CMSPluginDbContext>
+{
+ /// <summary>
+ /// Creates a new instance of a derived context.
+ /// </summary>
+ /// <param name="args">Arguments provided by the design-time service.</param>
+ public CMSPluginDbContext CreateDbContext(string[] args)
+ {
+ CMSPluginEfCoreEntityExtensionMappings.Configure();
+
+ var configuration = BuildConfiguration();
+
+ var builder = new DbContextOptionsBuilder<CMSPluginDbContext>()
+ .UseMySql(configuration.GetConnectionString("Default"), MySqlServerVersion.LatestSupportedServerVersion, x => x.MigrationsHistoryTable(CMSPluginDbProperties.MigrationsHistoryTable, CMSPluginDbProperties.DbSchema));
+
+ return new CMSPluginDbContext(builder.Options);
+ }
+
+ /// <summary>
+ /// Builds the configuration.
+ /// </summary>
+ /// <returns></returns>
+ private static IConfigurationRoot BuildConfiguration()
+ {
+ var builder = new ConfigurationBuilder()
+ .SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), "../CMS.Plugin.HIAWms.EntityFrameworkCore/"))
+ .AddJsonFile("appsettings.json", optional: false);
+
+ return builder.Build();
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMSPluginMySQLModule.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMSPluginMySQLModule.cs"
new file mode 100644
index 0000000..b68bb3f
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMSPluginMySQLModule.cs"
@@ -0,0 +1,42 @@
+using CMS.Plugin.HIAWms.Domain;
+using CMS.Plugin.HIAWms.EntityFrameworkCore;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.EntityFrameworkCore;
+using Volo.Abp.Modularity;
+
+namespace CMS.Plugin.HIAWms.MySQL;
+
+/// <summary>
+/// EntityFrameworkCore妯″潡
+/// </summary>
+[DependsOn(typeof(CMSPluginEntityFrameworkCoreModule))]
+public class CMSPluginMySQLModule : AbpModule
+{
+ /// <inheritdoc />
+ public override void PreConfigureServices(ServiceConfigurationContext context)
+ {
+ CMSPluginEfCoreEntityExtensionMappings.Configure();
+ }
+
+ /// <inheritdoc />
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ context.Services.AddAbpDbContext<CMSPluginDbContext>(options =>
+ {
+ /* Remove "includeAllEntities: true" to create
+ * default repositories only for aggregate roots */
+ //options.AddDefaultRepositories(includeAllEntities: true);
+ });
+
+ Configure<AbpDbContextOptions>(options =>
+ {
+ /* The main point to change your DBMS.
+ * See also CMSMigrationsDbContextFactory for EF Core tooling. */
+ options.UseMySQL(x =>
+ {
+ x.MigrationsHistoryTable(CMSPluginDbProperties.MigrationsHistoryTable, CMSPluginDbProperties.DbSchema);
+ //x.EnableRetryOnFailure();
+ });
+ });
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/FodyWeavers.xml" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/FodyWeavers.xml"
new file mode 100644
index 0000000..be0de3a
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/FodyWeavers.xml"
@@ -0,0 +1,3 @@
+锘�<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
+ <ConfigureAwait ContinueOnCapturedContext="false" />
+</Weavers>
\ No newline at end of file
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/Properties/AssemblyInfo.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/Properties/AssemblyInfo.cs"
new file mode 100644
index 0000000..2c3f1b6
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/Properties/AssemblyInfo.cs"
@@ -0,0 +1,2 @@
+锘縰sing System.Runtime.CompilerServices;
+[assembly:InternalsVisibleToAttribute("CMS.Plugin.EntityFrameworkCore.Tests")]
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/Scripts/UpdateDB.bat" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/Scripts/UpdateDB.bat"
new file mode 100644
index 0000000..3557041
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/Scripts/UpdateDB.bat"
@@ -0,0 +1,3 @@
+cd ../
+dotnet ef database update -c CMSPluginDbContext
+cmd
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/Scripts/UpdateMigrations.bat" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/Scripts/UpdateMigrations.bat"
new file mode 100644
index 0000000..101a898
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/Scripts/UpdateMigrations.bat"
@@ -0,0 +1,6 @@
+cd ../
+dotnet ef migrations add InitialCreate1 -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
+cmd
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMS.Plugin.HIAWms.PostgreSql.csproj" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMS.Plugin.HIAWms.PostgreSql.csproj"
new file mode 100644
index 0000000..daa1e99
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMS.Plugin.HIAWms.PostgreSql.csproj"
@@ -0,0 +1,30 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <Import Project="../../common.props" />
+ <Import Project="../../configureawait.props" />
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Volo.Abp.EntityFrameworkCore.PostgreSql" Version="$(ABPPackageVersion)" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.5">
+ <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
+ <PrivateAssets>compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native</PrivateAssets>
+ </PackageReference>
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\CMS.Plugin.HIAWms.EntityFrameworkCore\CMS.Plugin.HIAWms.EntityFrameworkCore.csproj" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <Folder Include="Migrations\" />
+ </ItemGroup>
+
+</Project>
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginDbContext.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginDbContext.cs"
new file mode 100644
index 0000000..5ba375d
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginDbContext.cs"
@@ -0,0 +1,51 @@
+using CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions;
+using CMS.Plugin.HIAWms.Domain;
+using CMS.Plugin.HIAWms.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore;
+using Volo.Abp.Data;
+using Volo.Abp.EntityFrameworkCore;
+using Volo.Abp.EntityFrameworkCore.Modeling;
+
+namespace CMS.Plugin.HIAWms.PostgreSql;
+
+/// <summary>
+/// 鏁版嵁搴撲笂涓嬫枃
+/// </summary>
+[ConnectionStringName(CMSPluginDbProperties.ConnectionStringName)]
+public class CMSPluginDbContext : AbpDbContext<CMSPluginDbContext>, ICMSPluginDbContext
+{
+ /* Add DbSet properties for your Aggregate Roots / Entities here. */
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="CMSPluginDbContext"/> class.
+ /// </summary>
+ /// <param name="options">The options.</param>
+ public CMSPluginDbContext(DbContextOptions<CMSPluginDbContext> options)
+ : base(options)
+ {
+ }
+
+ /// <inheritdoc />
+ protected override void OnModelCreating(ModelBuilder builder)
+ {
+ base.OnModelCreating(builder);
+
+ /* Include modules to your migration db context */
+
+ builder.ConfigureWmsContainer();
+ builder.ConfigureWmsStore();
+ builder.ConfigureWmsArea();
+ builder.ConfigureWmsPlace();
+ builder.ConfigureWmsMaterial();
+ /* Configure your own tables/entities inside here */
+
+ //builder.Entity<YourEntity>(b =>
+ //{
+ // b.ToTable(CMSPluginDbProperties.DbTablePrefix + "YourEntities", CMSPluginDbProperties.DbSchema);
+ // b.ConfigureByConvention(); //auto configure for the base class props
+ // //...
+ //});
+
+ builder.TryConfigureObjectExtensions<CMSPluginDbContext>();
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginDbContextFactory.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginDbContextFactory.cs"
new file mode 100644
index 0000000..5c646d0
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginDbContextFactory.cs"
@@ -0,0 +1,43 @@
+using CMS.Plugin.HIAWms.Domain;
+using CMS.Plugin.HIAWms.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Design;
+using Microsoft.Extensions.Configuration;
+
+namespace CMS.Plugin.HIAWms.PostgreSql;
+
+/// <summary>
+/// This class is needed for EF Core console commands
+/// (like Add-Migration and Update-Database commands)
+/// </summary>
+public class CMSPluginDbContextFactory : IDesignTimeDbContextFactory<CMSPluginDbContext>
+{
+ /// <summary>
+ /// Creates a new instance of a derived context.
+ /// </summary>
+ /// <param name="args">Arguments provided by the design-time service.</param>
+ public CMSPluginDbContext CreateDbContext(string[] args)
+ {
+ CMSPluginEfCoreEntityExtensionMappings.Configure();
+
+ var configuration = BuildConfiguration();
+
+ var builder = new DbContextOptionsBuilder<CMSPluginDbContext>()
+ .UseNpgsql(configuration.GetConnectionString("Default"), x => x.MigrationsHistoryTable(CMSPluginDbProperties.MigrationsHistoryTable, CMSPluginDbProperties.DbSchema));
+
+ return new CMSPluginDbContext(builder.Options);
+ }
+
+ /// <summary>
+ /// Builds the configuration.
+ /// </summary>
+ /// <returns></returns>
+ private static IConfigurationRoot BuildConfiguration()
+ {
+ var builder = new ConfigurationBuilder()
+ .SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), "../CMS.Plugin.HIAWms.EntityFrameworkCore/"))
+ .AddJsonFile("appsettings.json", optional: false);
+
+ return builder.Build();
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginPostgreSqlModule.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginPostgreSqlModule.cs"
new file mode 100644
index 0000000..f086a7e
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginPostgreSqlModule.cs"
@@ -0,0 +1,42 @@
+using CMS.Plugin.HIAWms.Domain;
+using CMS.Plugin.HIAWms.EntityFrameworkCore;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.EntityFrameworkCore;
+using Volo.Abp.Modularity;
+
+namespace CMS.Plugin.HIAWms.PostgreSql;
+
+/// <summary>
+/// EntityFrameworkCore妯″潡
+/// </summary>
+[DependsOn(typeof(CMSPluginEntityFrameworkCoreModule))]
+public class CMSPluginPostgreSqlModule : AbpModule
+{
+ /// <inheritdoc />
+ public override void PreConfigureServices(ServiceConfigurationContext context)
+ {
+ CMSPluginEfCoreEntityExtensionMappings.Configure();
+ }
+
+ /// <inheritdoc />
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ context.Services.AddAbpDbContext<CMSPluginDbContext>(options =>
+ {
+ /* Remove "includeAllEntities: true" to create
+ * default repositories only for aggregate roots */
+ //options.AddDefaultRepositories(includeAllEntities: true);
+ });
+
+ Configure<AbpDbContextOptions>(options =>
+ {
+ /* The main point to change your DBMS.
+ * See also CMSMigrationsDbContextFactory for EF Core tooling. */
+ options.UseNpgsql(x =>
+ {
+ x.MigrationsHistoryTable(CMSPluginDbProperties.MigrationsHistoryTable, CMSPluginDbProperties.DbSchema);
+ //x.EnableRetryOnFailure();
+ });
+ });
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/FodyWeavers.xml" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/FodyWeavers.xml"
new file mode 100644
index 0000000..be0de3a
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/FodyWeavers.xml"
@@ -0,0 +1,3 @@
+锘�<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
+ <ConfigureAwait ContinueOnCapturedContext="false" />
+</Weavers>
\ No newline at end of file
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/Properties/AssemblyInfo.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/Properties/AssemblyInfo.cs"
new file mode 100644
index 0000000..2c3f1b6
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/Properties/AssemblyInfo.cs"
@@ -0,0 +1,2 @@
+锘縰sing System.Runtime.CompilerServices;
+[assembly:InternalsVisibleToAttribute("CMS.Plugin.EntityFrameworkCore.Tests")]
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/Scripts/UpdateDB.bat" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/Scripts/UpdateDB.bat"
new file mode 100644
index 0000000..3557041
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/Scripts/UpdateDB.bat"
@@ -0,0 +1,3 @@
+cd ../
+dotnet ef database update -c CMSPluginDbContext
+cmd
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/Scripts/UpdateMigrations.bat" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/Scripts/UpdateMigrations.bat"
new file mode 100644
index 0000000..edbd167
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/Scripts/UpdateMigrations.bat"
@@ -0,0 +1,6 @@
+cd ../
+dotnet ef migrations add InitialCreate -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
+cmd
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMS.Plugin.HIAWms.SqlServer.csproj" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMS.Plugin.HIAWms.SqlServer.csproj"
new file mode 100644
index 0000000..ad78ae6
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMS.Plugin.HIAWms.SqlServer.csproj"
@@ -0,0 +1,30 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <Import Project="../../common.props" />
+ <Import Project="../../configureawait.props" />
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Volo.Abp.EntityFrameworkCore.SqlServer" Version="$(ABPPackageVersion)" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.5">
+ <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
+ <PrivateAssets>compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native</PrivateAssets>
+ </PackageReference>
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\CMS.Plugin.HIAWms.EntityFrameworkCore\CMS.Plugin.HIAWms.EntityFrameworkCore.csproj" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <Folder Include="Migrations\" />
+ </ItemGroup>
+
+</Project>
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginDbContext.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginDbContext.cs"
new file mode 100644
index 0000000..5c9a9e7
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginDbContext.cs"
@@ -0,0 +1,52 @@
+using CMS.Plugin.HIAWms.Domain;
+using CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions;
+using CMS.Plugin.HIAWms.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore;
+using Volo.Abp.Data;
+using Volo.Abp.EntityFrameworkCore;
+using Volo.Abp.EntityFrameworkCore.Modeling;
+
+namespace CMS.Plugin.HIAWms.SqlServer;
+
+/// <summary>
+/// 鏁版嵁搴撲笂涓嬫枃
+/// </summary>
+[ConnectionStringName(CMSPluginDbProperties.ConnectionStringName)]
+public class CMSPluginDbContext : AbpDbContext<CMSPluginDbContext>, ICMSPluginDbContext
+{
+ /* Add DbSet properties for your Aggregate Roots / Entities here. */
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="CMSPluginDbContext"/> class.
+ /// </summary>
+ /// <param name="options">The options.</param>
+ public CMSPluginDbContext(DbContextOptions<CMSPluginDbContext> options)
+ : base(options)
+ {
+ }
+
+ /// <inheritdoc />
+ protected override void OnModelCreating(ModelBuilder builder)
+ {
+ base.OnModelCreating(builder);
+
+ /* Include modules to your migration db context */
+
+ builder.ConfigureWmsContainer();
+ builder.ConfigureWmsStore();
+ builder.ConfigureWmsArea();
+ builder.ConfigureWmsPlace();
+ builder.ConfigureWmsMaterial();
+
+ /* Configure your own tables/entities inside here */
+
+ //builder.Entity<YourEntity>(b =>
+ //{
+ // b.ToTable(CMSPluginDbProperties.DbTablePrefix + "YourEntities", CMSPluginDbProperties.DbSchema);
+ // b.ConfigureByConvention(); //auto configure for the base class props
+ // //...
+ //});
+
+ builder.TryConfigureObjectExtensions<CMSPluginDbContext>();
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginDbContextFactory.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginDbContextFactory.cs"
new file mode 100644
index 0000000..7739f53
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginDbContextFactory.cs"
@@ -0,0 +1,43 @@
+using CMS.Plugin.HIAWms.Domain;
+using CMS.Plugin.HIAWms.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Design;
+using Microsoft.Extensions.Configuration;
+
+namespace CMS.Plugin.HIAWms.SqlServer;
+
+/// <summary>
+/// This class is needed for EF Core console commands
+/// (like Add-Migration and Update-Database commands)
+/// </summary>
+public class CMSPluginDbContextFactory : IDesignTimeDbContextFactory<CMSPluginDbContext>
+{
+ /// <summary>
+ /// Creates a new instance of a derived context.
+ /// </summary>
+ /// <param name="args">Arguments provided by the design-time service.</param>
+ public CMSPluginDbContext CreateDbContext(string[] args)
+ {
+ CMSPluginEfCoreEntityExtensionMappings.Configure();
+
+ var configuration = BuildConfiguration();
+
+ var builder = new DbContextOptionsBuilder<CMSPluginDbContext>()
+ .UseSqlServer(configuration.GetConnectionString("Default"), x => x.MigrationsHistoryTable(CMSPluginDbProperties.MigrationsHistoryTable, CMSPluginDbProperties.DbSchema));
+
+ return new CMSPluginDbContext(builder.Options);
+ }
+
+ /// <summary>
+ /// Builds the configuration.
+ /// </summary>
+ /// <returns></returns>
+ private static IConfigurationRoot BuildConfiguration()
+ {
+ var builder = new ConfigurationBuilder()
+ .SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), "../CMS.Plugin.HIAWms.EntityFrameworkCore/"))
+ .AddJsonFile("appsettings.json", optional: false);
+
+ return builder.Build();
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginSqlServerModule.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginSqlServerModule.cs"
new file mode 100644
index 0000000..918d20e
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginSqlServerModule.cs"
@@ -0,0 +1,42 @@
+using CMS.Plugin.HIAWms.Domain;
+using CMS.Plugin.HIAWms.EntityFrameworkCore;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.EntityFrameworkCore;
+using Volo.Abp.Modularity;
+
+namespace CMS.Plugin.HIAWms.SqlServer;
+
+/// <summary>
+/// EntityFrameworkCore妯″潡
+/// </summary>
+[DependsOn(typeof(CMSPluginEntityFrameworkCoreModule))]
+public class CMSPluginSqlServerModule : AbpModule
+{
+ /// <inheritdoc />
+ public override void PreConfigureServices(ServiceConfigurationContext context)
+ {
+ CMSPluginEfCoreEntityExtensionMappings.Configure();
+ }
+
+ /// <inheritdoc />
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ context.Services.AddAbpDbContext<CMSPluginDbContext>(options =>
+ {
+ /* Remove "includeAllEntities: true" to create
+ * default repositories only for aggregate roots */
+ //options.AddDefaultRepositories(includeAllEntities: true);
+ });
+
+ Configure<AbpDbContextOptions>(options =>
+ {
+ /* The main point to change your DBMS.
+ * See also CMSMigrationsDbContextFactory for EF Core tooling. */
+ options.UseSqlServer(x =>
+ {
+ x.MigrationsHistoryTable(CMSPluginDbProperties.MigrationsHistoryTable, CMSPluginDbProperties.DbSchema);
+ //x.EnableRetryOnFailure();
+ });
+ });
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/FodyWeavers.xml" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/FodyWeavers.xml"
new file mode 100644
index 0000000..be0de3a
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/FodyWeavers.xml"
@@ -0,0 +1,3 @@
+锘�<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
+ <ConfigureAwait ContinueOnCapturedContext="false" />
+</Weavers>
\ No newline at end of file
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/Properties/AssemblyInfo.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/Properties/AssemblyInfo.cs"
new file mode 100644
index 0000000..2c3f1b6
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/Properties/AssemblyInfo.cs"
@@ -0,0 +1,2 @@
+锘縰sing System.Runtime.CompilerServices;
+[assembly:InternalsVisibleToAttribute("CMS.Plugin.EntityFrameworkCore.Tests")]
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/Scripts/UpdateDB.bat" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/Scripts/UpdateDB.bat"
new file mode 100644
index 0000000..3557041
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/Scripts/UpdateDB.bat"
@@ -0,0 +1,3 @@
+cd ../
+dotnet ef database update -c CMSPluginDbContext
+cmd
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/Scripts/UpdateMigrations.bat" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/Scripts/UpdateMigrations.bat"
new file mode 100644
index 0000000..edbd167
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/Scripts/UpdateMigrations.bat"
@@ -0,0 +1,6 @@
+cd ../
+dotnet ef migrations add InitialCreate -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
+cmd
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Apis/IHIAWmsExternalApi.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Apis/IHIAWmsExternalApi.cs"
new file mode 100644
index 0000000..507d8c0
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Apis/IHIAWmsExternalApi.cs"
@@ -0,0 +1,18 @@
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainers;
+using WebApiClientCore.Attributes;
+
+namespace CMS.Plugin.HIAWms.Apis
+{
+ /// <summary>
+ /// 澶栭儴Http API瀵规帴 // https://webapiclient.github.io/guide/getting-started.html
+ /// </summary>
+ public interface IHIAWmsExternalApi
+ {
+ /// <summary>
+ /// CreateAsync
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("api/v1/hiawms/wmscontainer")]
+ Task<WmsContainerDto> CreateAsync([JsonContent] WmsContainerCreateDto input);
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/CMS.Plugin.UtilityApi.csproj" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/CMS.Plugin.UtilityApi.csproj"
new file mode 100644
index 0000000..6b49128
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/CMS.Plugin.UtilityApi.csproj"
@@ -0,0 +1,73 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <Import Project="../../common.props" />
+ <Import Project="../../configureawait.props" />
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <EnableDynamicLoading>true</EnableDynamicLoading>
+ <ProduceReferenceAssembly>false</ProduceReferenceAssembly>
+ <GenerateDocumentationFile>true</GenerateDocumentationFile>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))">
+ <CMSRootPath>D:\Program Files\CMS Editor</CMSRootPath>
+ <OutputPath>$(CMSRootPath)\plugins\cms.plugin.hiawms</OutputPath>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('OSX'))">
+ <CMSRootPath>/Volumes/SSD/CMS Editor</CMSRootPath>
+ <OutputPath>$(CMSRootPath)\plugins\cms.plugin.hiawms</OutputPath>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <None Remove="appsettings.json" />
+ <None Remove="Flows\50001_1.pfd" />
+ <None Remove="Flows\FlowInfo.xml" />
+ <None Remove="Resources\Templates\WmsContainer瀵煎嚭妯℃澘.xlsx" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <Content Include="appsettings.json">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ </ItemGroup>
+
+ <ItemGroup>
+ <EmbeddedResource Include="Resources\Templates\WmsContainer瀵煎嚭妯℃澘.xlsx">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </EmbeddedResource>
+ </ItemGroup>
+
+ <ItemGroup>
+ <PackageReference Include="CMS.Framework.AspNetCore" Version="2.16.1" />
+ <PackageReference Include="CMS.Extensions.Variable" Version="2.16.1" />
+ <PackageReference Include="CMS.Extensions.Data" Version="2.16.1" />
+ <PackageReference Include="CMS.Data.Stressing" Version="2.16.1" />
+ <PackageReference Include="CMS.Extensions.Abp" Version="1.4.0" />
+ <PackageReference Include="WebApiClientCore" Version="2.0.4" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\CMS.Plugin.HIAWms.Application\CMS.Plugin.HIAWms.Application.csproj" />
+ <ProjectReference Include="..\CMS.Plugin.HIAWms.MySQL\CMS.Plugin.HIAWms.MySQL.csproj" />
+ <ProjectReference Include="..\CMS.Plugin.HIAWms.PostgreSql\CMS.Plugin.HIAWms.PostgreSql.csproj" />
+ <ProjectReference Include="..\CMS.Plugin.HIAWms.SqlServer\CMS.Plugin.HIAWms.SqlServer.csproj" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <Reference Include="CmsQueryExtensions">
+ <HintPath>..\..\..\..\CommonDLL\CmsQueryExtensions.dll</HintPath>
+ </Reference>
+ </ItemGroup>
+
+ <ItemGroup>
+ <Resource Include="Flows\50001_1.pfd">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Resource>
+ <Resource Include="Flows\FlowInfo.xml">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Resource>
+ </ItemGroup>
+
+</Project>
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/CMSPluginEntry.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/CMSPluginEntry.cs"
new file mode 100644
index 0000000..e202459
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/CMSPluginEntry.cs"
@@ -0,0 +1,109 @@
+using System.Collections;
+using Autofac;
+using CMS.Data.Stressing;
+using CMS.DataPersistence;
+using CMS.DataPersistence.Data;
+using CMS.Extensions.Abp.Autofac.Extensions.DependencyInjection;
+using CMS.Plugin.MesSuite.Abstractions;
+using CMS.Plugin.MesSuite.Abstractions.Consts;
+using CMS.Plugin.HIAWms.Abstractions;
+using CMS.Plugin.HIAWms.Apis;
+using CMS.Plugin.HIAWms.Domain;
+using CMS.Plugin.HIAWms.ProjectService;
+using CMS.Plugin.HIAWms.Workers;
+using CMS.Plugin.HIAWms.Apis;
+using CMS.Project.Abstractions;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.Extensions.DependencyInjection;
+using Structing.AspNetCore;
+using Structing.Core;
+using Structing.Web;
+using SYC.Plugin;
+using Volo.Abp.BackgroundWorkers;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Modularity.PlugIns;
+
+namespace CMS.Plugin.HIAWms;
+
+/// <summary>
+/// CMS鎻掍欢鍏ュ彛锛屼娇鐢�<see cref="EnableApplicationPartAttribute"/>灏嗗鍏ontroller.
+/// </summary>
+[EnableApplicationPart]
+public class CMSPluginEntry : PluginEntry
+{
+ private readonly IServiceCollection _service = new ServiceCollection();
+
+ /// <inheritdoc />
+ public override void Register(IRegisteContext context)
+ {
+ var configuration = context.Features.GetConfiguration();
+
+ // 閰嶇疆澶栭儴HttpApi锛� https://webapiclient.github.io/
+ context.Services
+ .AddHttpApi<IHIAWmsExternalApi>()
+ .ConfigureHttpApi(configuration.GetSection(nameof(IHIAWmsExternalApi)));
+
+ context.Services.TryAddHIAWms();
+
+ context.Services.AddScoped<IProjectRuntimeMigrator, CMSPluginRuntimeMigrator>();
+ context.Services.AddSingleton<IProjectService, HIAWmsProjectService>();
+
+ context.Services.AddScoped<IEFDataProvider>(p =>
+ {
+ var cfg = p.GetRequiredService<IDataRuntimeConfig>();
+ return new DefaultEFDataProvider(CMSPluginMesSuiteOptions.DataProviderName, CMSPluginMesSuiteOptions.GetDatabaseSuffix(CMSPluginDbProperties.MigrationsHistoryTable), CMSPluginDbProperties.MigrationsHistoryTable, cfg);
+ });
+
+ _service.AddObjectAccessor<IApplicationBuilder>();
+ _service.AddApplication<CMSPluginModule>(options =>
+ {
+ var databaseType = configuration[SectionName.DatabaseType] ?? "mysql";
+ if (KnowsDbCode.IsMysql(databaseType))
+ {
+ options.PlugInSources.Add(new TypePlugInSource(
+ typeof(MySQL.CMSPluginMySQLModule)
+ ));
+ }
+ else if (KnowsDbCode.IsSqlServer(databaseType))
+ {
+ options.PlugInSources.Add(new TypePlugInSource(
+ typeof(SqlServer.CMSPluginSqlServerModule)
+ ));
+ }
+ else if (KnowsDbCode.IsPostgreSql(databaseType))
+ {
+ options.PlugInSources.Add(new TypePlugInSource(
+ typeof(PostgreSql.CMSPluginPostgreSqlModule)
+ ));
+ }
+ });
+
+ base.Register(context);
+ }
+
+ /// <inheritdoc />
+ public override void ConfigureContainer(ContainerBuilder builder)
+ {
+ builder.Populate(_service);
+
+ base.ConfigureContainer(builder);
+ }
+
+ /// <inheritdoc />
+ public override async Task ReadyAsync(IReadyContext context)
+ {
+ context.Provider.GetRequiredService<ObjectAccessor<IApplicationBuilder>>().Value = context.Features.GetApplicationBuilder();
+ var app = context.Features.GetApplicationBuilder();
+ await app.InitializeApplicationAsync();
+
+ await base.ReadyAsync(context);
+ }
+
+ /// <inheritdoc />
+ public override async Task AfterReadyAsync(IReadyContext context)
+ {
+ await context.GetRequiredService<IBackgroundWorkerManager>().AddAsync(context.GetRequiredService<HIAWmsWorker>());
+
+ await base.AfterReadyAsync(context);
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/CMSPluginModule.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/CMSPluginModule.cs"
new file mode 100644
index 0000000..22c27e2
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/CMSPluginModule.cs"
@@ -0,0 +1,42 @@
+using System.Reflection;
+using CMS.Extensions.Abp;
+using CMS.Extensions.Abp.AspNetCore;
+using CMS.Plugin.HIAWms.Abstractions;
+using CMS.Plugin.HIAWms.Application;
+using CMS.Plugin.HIAWms.EntityFrameworkCore;
+using CMS.Plugin.HIAWms.Jobs;
+using Volo.Abp.BackgroundJobs;
+using Volo.Abp.Modularity;
+
+namespace CMS.Plugin.HIAWms
+{
+ /// <summary>
+ /// CMS 鎻掍欢渚濊禆鍔犺浇鍚姩妯″潡
+ /// </summary>
+ [DependsOn(
+ typeof(CMSPluginAbpModule),
+ typeof(CMSPluginAbpAspNetCoreModule),
+ typeof(CMSPluginApplicationModule),
+ typeof(CMSPluginEntityFrameworkCoreModule)
+ )]
+ public class CMSPluginModule : AbpStartupModule
+ {
+ /// <inheritdoc />
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ Configure<AbpBackgroundJobOptions>(options =>
+ {
+ options.AddJob<HIAWmsJob>();
+ });
+ }
+
+ /// <inheritdoc />
+ public override Assembly[]? GetSharedAssemblies()
+ {
+ return base.GetSharedAssemblies().Concat(new[]
+ {
+ typeof(CMSPluginHIAWmsAbstractionsModule).Assembly,
+ }).ToArray();
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/CMSPluginRuntimeMigrator.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/CMSPluginRuntimeMigrator.cs"
new file mode 100644
index 0000000..59fade5
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/CMSPluginRuntimeMigrator.cs"
@@ -0,0 +1,46 @@
+using CMS.Plugin.HIAWms.Domain.Data;
+using CMS.Project.Abstractions;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using Volo.Abp.DependencyInjection;
+
+namespace CMS.Plugin.HIAWms
+{
+ /// <summary>
+ /// 宸ョ▼鏁版嵁搴撹縼绉诲櫒锛屽綋<see cref="IProjectRunner"/>鍔犺浇宸ョ▼鏃舵瀵硅薄浼氳鍒涘缓璋冪敤
+ /// </summary>
+ public class CMSPluginRuntimeMigrator : IProjectRuntimeMigrator
+ {
+ /// <summary>
+ /// 鎵ц杩佺Щ
+ /// </summary>
+ /// <param name="project">褰撳墠瑕佽繍琛岀殑宸ョ▼</param>
+ /// <param name="serviceProvider">瀛樺湪杩愯宸ョ▼涓婁笅鏂囩殑serviceProvider</param>
+ /// <returns></returns>
+ public async Task UpgradeAsync(Project.Project project, IServiceProvider serviceProvider)
+ {
+ var objectAccessor = serviceProvider.GetService<ObjectAccessor<Project.Project>>();
+ if (objectAccessor != null)
+ {
+ objectAccessor.Value = project;
+ }
+
+ var logger = serviceProvider.GetRequiredService<ILogger<CMSPluginRuntimeMigrator>>();
+ try
+ {
+ // 閫氳繃serviceProvider鑾峰彇鑷繁鐨凞bContext骞惰繘琛屽垱寤烘垨杩佺Щ娴佺▼
+ logger.LogInformation($"Start {project.Info.Id} HIAWms dbcontext create");
+ await serviceProvider.GetRequiredService<CMSPluginDbMigrationService>().MigrateAsync();
+ }
+ catch (Exception ex)
+ {
+ logger.LogError(ex, "Create HIAWms db failed");
+ }
+
+ if (objectAccessor != null)
+ {
+ objectAccessor.Value = null;
+ }
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsAreaController.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsAreaController.cs"
new file mode 100644
index 0000000..7efc248
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsAreaController.cs"
@@ -0,0 +1,187 @@
+using Ao.Lang;
+using CMS.Extensions.Abp.AspNetCore.Mvc.Filters;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsAreas;
+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>
+ /// WmsArea鏈嶅姟
+ /// </summary>
+ [ApiController]
+ [TypeFilter(typeof(CMSLanguageFilter))]
+ [TypeFilter(typeof(CMSUowActionFilter))]
+ [TypeFilter(typeof(CMSAuditActionFilter))]
+ [TypeFilter(typeof(CMSExceptionFilter))]
+ [Route("api/v{version:apiVersion}/HIAWms/[controller]")]
+ public class WmsAreaController : ControllerBase
+ {
+ private readonly IWmsAreaAppService _wmsareaAppService;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsAreaController"/> class.
+ /// </summary>
+ /// <param name="wmsareaAppService">The wmsarea application service.</param>
+ public WmsAreaController(IWmsAreaAppService wmsareaAppService)
+ {
+ _wmsareaAppService = wmsareaAppService;
+ }
+
+ /// <summary>
+ /// 鑾峰彇wmsarea.
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <returns></returns>
+ [HttpGet]
+ [Route("{id}")]
+ public virtual Task<WmsAreaDto> GetAsync(Guid id)
+ {
+ return _wmsareaAppService.GetAsync(id);
+ }
+
+ /// <summary>
+ /// 鑾峰彇wmsarea鐨勫垪琛�.
+ /// </summary>
+ /// <param name="input">杈撳叆.</param>
+ /// <returns></returns>
+ [HttpGet]
+ public virtual Task<PagedResultDto<WmsAreaDto>> GetListAsync([FromQuery] GetWmsAreasInput input)
+ {
+ return _wmsareaAppService.GetListAsync(input);
+ }
+
+ /// <summary>
+ /// 鍒涘缓wmsarea.
+ /// </summary>
+ /// <param name="input">杈撳叆.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpPost]
+ public virtual Task<WmsAreaDto> CreateAsync(WmsAreaCreateDto input)
+ {
+ return _wmsareaAppService.CreateAsync(input);
+ }
+
+ /// <summary>
+ /// 鏇存柊wmsarea.
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <param name="input">杈撳叆.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpPut]
+ [Route("{id}")]
+ public virtual Task<WmsAreaDto> UpdateAsync(Guid id, WmsAreaUpdateDto input)
+ {
+ return _wmsareaAppService.UpdateAsync(id, input);
+ }
+
+ /// <summary>
+ /// 鍏嬮殕WmsArea.
+ /// </summary>
+ /// <param name="ids">Id闆嗗悎.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpPost]
+ [Route("Clone")]
+ public virtual Task<List<WmsAreaDto>> CloneAsync([FromBody] IEnumerable<Guid> ids)
+ {
+ return _wmsareaAppService.CloneAsync(ids);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎wmsarea.
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpDelete]
+ [Route("{id}")]
+ public virtual Task DeleteAsync(Guid id)
+ {
+ return _wmsareaAppService.DeleteAsync(id);
+ }
+
+ /// <summary>
+ /// 鎵归噺鍒犻櫎wmsarea.
+ /// </summary>
+ /// <param name="ids">The ids.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpDelete]
+ public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids)
+ {
+ return _wmsareaAppService.DeleteManyAsync(ids);
+ }
+
+ /// <summary>
+ /// 璋冩暣鎺掑簭.
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <returns></returns>
+ [HttpPut]
+ [Route("{id}/AdjustSort/{sort}")]
+ public virtual Task AdjustSortAsync(Guid id, int sort)
+ {
+ return _wmsareaAppService.AdjustSortAsync(id, sort);
+ }
+
+ /// <summary>
+ /// 瀵煎叆wmsarea.
+ /// </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 wmsareaRows = sheetNames.Contains("閰嶇疆") ? MiniExcel.Query<WmsAreasImportModel.WmsAreaImportModel>(stream, sheetName: "閰嶇疆").ToList() : new();
+
+ if (!wmsareaRows.Any())
+ {
+ throw new UserFriendlyException("璇锋鏌ュ鍏ョ殑琛ㄦ牸");
+ }
+
+ await _wmsareaAppService.ImportAsync(new WmsAreasImportModel
+ {
+ WmsAreas = wmsareaRows,
+ });
+
+ return Ok();
+ }
+
+ /// <summary>
+ /// 瀵煎嚭wmsarea.
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet]
+ [Route("Export")]
+ public virtual async Task<IActionResult> ExportAsync([FromQuery] GetWmsAreasInput input)
+ {
+ input.MaxResultCount = int.MaxValue;
+ var exportData = await _wmsareaAppService.ExportAsync(input);
+ var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Resources/Templates/WmsArea瀵煎嚭妯℃澘.xlsx");
+ if (!System.IO.File.Exists(templatePath))
+ {
+ templatePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty, $"Resources/Templates/WmsArea瀵煎嚭妯℃澘.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/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsContainerController.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsContainerController.cs"
new file mode 100644
index 0000000..1780529
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsContainerController.cs"
@@ -0,0 +1,187 @@
+using Ao.Lang;
+using CMS.Extensions.Abp.AspNetCore.Mvc.Filters;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainers;
+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>
+ /// WmsContainer鏈嶅姟
+ /// </summary>
+ [ApiController]
+ [TypeFilter(typeof(CMSLanguageFilter))]
+ [TypeFilter(typeof(CMSUowActionFilter))]
+ [TypeFilter(typeof(CMSAuditActionFilter))]
+ [TypeFilter(typeof(CMSExceptionFilter))]
+ [Route("api/v{version:apiVersion}/HIAWms/[controller]")]
+ public class WmsContainerController : ControllerBase
+ {
+ private readonly IWmsContainerAppService _wmscontainerAppService;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsContainerController"/> class.
+ /// </summary>
+ /// <param name="wmscontainerAppService">The wmscontainer application service.</param>
+ public WmsContainerController(IWmsContainerAppService wmscontainerAppService)
+ {
+ _wmscontainerAppService = wmscontainerAppService;
+ }
+
+ /// <summary>
+ /// 鑾峰彇wmscontainer.
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <returns></returns>
+ [HttpGet]
+ [Route("{id}")]
+ public virtual Task<WmsContainerDto> GetAsync(Guid id)
+ {
+ return _wmscontainerAppService.GetAsync(id);
+ }
+
+ /// <summary>
+ /// 鑾峰彇wmscontainer鐨勫垪琛�.
+ /// </summary>
+ /// <param name="input">杈撳叆.</param>
+ /// <returns></returns>
+ [HttpGet]
+ public virtual Task<PagedResultDto<WmsContainerDto>> GetListAsync([FromQuery] GetWmsContainersInput input)
+ {
+ return _wmscontainerAppService.GetListAsync(input);
+ }
+
+ /// <summary>
+ /// 鍒涘缓wmscontainer.
+ /// </summary>
+ /// <param name="input">杈撳叆.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpPost]
+ public virtual Task<WmsContainerDto> CreateAsync(WmsContainerCreateDto input)
+ {
+ return _wmscontainerAppService.CreateAsync(input);
+ }
+
+ /// <summary>
+ /// 鏇存柊wmscontainer.
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <param name="input">杈撳叆.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpPut]
+ [Route("{id}")]
+ public virtual Task<WmsContainerDto> UpdateAsync(Guid id, WmsContainerUpdateDto input)
+ {
+ return _wmscontainerAppService.UpdateAsync(id, input);
+ }
+
+ /// <summary>
+ /// 鍏嬮殕WmsContainer.
+ /// </summary>
+ /// <param name="ids">Id闆嗗悎.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpPost]
+ [Route("Clone")]
+ public virtual Task<List<WmsContainerDto>> CloneAsync([FromBody] IEnumerable<Guid> ids)
+ {
+ return _wmscontainerAppService.CloneAsync(ids);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎wmscontainer.
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpDelete]
+ [Route("{id}")]
+ public virtual Task DeleteAsync(Guid id)
+ {
+ return _wmscontainerAppService.DeleteAsync(id);
+ }
+
+ /// <summary>
+ /// 鎵归噺鍒犻櫎wmscontainer.
+ /// </summary>
+ /// <param name="ids">The ids.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpDelete]
+ public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids)
+ {
+ return _wmscontainerAppService.DeleteManyAsync(ids);
+ }
+
+ /// <summary>
+ /// 璋冩暣鎺掑簭.
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <returns></returns>
+ [HttpPut]
+ [Route("{id}/AdjustSort/{sort}")]
+ public virtual Task AdjustSortAsync(Guid id, int sort)
+ {
+ return _wmscontainerAppService.AdjustSortAsync(id, sort);
+ }
+
+ /// <summary>
+ /// 瀵煎叆wmscontainer.
+ /// </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 wmscontainerRows = sheetNames.Contains("閰嶇疆") ? MiniExcel.Query<WmsContainersImportModel.WmsContainerImportModel>(stream, sheetName: "閰嶇疆").ToList() : new();
+
+ if (!wmscontainerRows.Any())
+ {
+ throw new UserFriendlyException("璇锋鏌ュ鍏ョ殑琛ㄦ牸");
+ }
+
+ await _wmscontainerAppService.ImportAsync(new WmsContainersImportModel
+ {
+ WmsContainers = wmscontainerRows,
+ });
+
+ return Ok();
+ }
+
+ /// <summary>
+ /// 瀵煎嚭wmscontainer.
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet]
+ [Route("Export")]
+ public virtual async Task<IActionResult> ExportAsync([FromQuery] GetWmsContainersInput input)
+ {
+ input.MaxResultCount = int.MaxValue;
+ var exportData = await _wmscontainerAppService.ExportAsync(input);
+ var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Resources/Templates/WmsContainer瀵煎嚭妯℃澘.xlsx");
+ if (!System.IO.File.Exists(templatePath))
+ {
+ templatePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty, $"Resources/Templates/WmsContainer瀵煎嚭妯℃澘.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/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsEnumController.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsEnumController.cs"
new file mode 100644
index 0000000..021aa9d
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsEnumController.cs"
@@ -0,0 +1,69 @@
+锘縰sing CMS.Extensions.Abp.AspNetCore.Mvc.Filters;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsEnumDto;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsStores;
+using CMS.Plugin.HIAWms.Application.Contracts.Services;
+using CMS.Plugin.HIAWms.Domain.Shared.Util;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Web;
+using static CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsAreas.WmsAreaCreateOrUpdateDtoBase;
+
+namespace CMS.Plugin.HIAWms.Controller
+{
+ /// <summary>
+ /// 鏋氫妇鏈嶅姟鎺ュ彛.
+ /// </summary>
+ [ApiController]
+ [TypeFilter(typeof(CMSLanguageFilter))]
+ [TypeFilter(typeof(CMSUowActionFilter))]
+ [TypeFilter(typeof(CMSAuditActionFilter))]
+ [TypeFilter(typeof(CMSExceptionFilter))]
+ [Route("api/v{version:apiVersion}/HIAWms/[controller]")]
+ public class WmsEnumController : ControllerBase
+ {
+ private readonly IWmsEnumAppService _wmsEnumAppService;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsEnumController"/> class.
+ /// 鏋勯�犲嚱鏁�.
+ /// </summary>
+ /// <param name="wmsEnumAppService"></param>
+ public WmsEnumController(IWmsEnumAppService wmsEnumAppService)
+ {
+ _wmsEnumAppService = wmsEnumAppService;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏋氫妇鏁版嵁.
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost]
+ public List<EnumItem> GetEnumDataList(WmsEnumInput input)
+ {
+ return _wmsEnumAppService.GetEnumDataList(input);
+ }
+
+ /// <summary>
+ /// 鑾峰彇浠撳簱鍒楄〃
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet]
+ [Route("StoreList")]
+ public async Task<List<WmsStoreForAreaOutpur>> GetStreList()
+ {
+ return await _wmsEnumAppService.GetStreList();
+ }
+
+ /// <summary>
+ /// 搴撳尯鍒楄〃
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet]
+ [Route("AreaList")]
+ public async Task<List<AreaForListOuptut>> GetAreaListAsync()
+ {
+ return await _wmsEnumAppService.GetAreaListAsync();
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsInOutStockRecordController.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsInOutStockRecordController.cs"
new file mode 100644
index 0000000..425b7ae
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsInOutStockRecordController.cs"
@@ -0,0 +1,188 @@
+using Ao.Lang;
+using CMS.Extensions.Abp.AspNetCore.Mvc.Filters;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord;
+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>
+ /// 鍑哄叆搴撹褰曡〃鏈嶅姟
+ /// </summary>
+ [ApiController]
+ [TypeFilter(typeof(CMSLanguageFilter))]
+ [TypeFilter(typeof(CMSUowActionFilter))]
+ [TypeFilter(typeof(CMSAuditActionFilter))]
+ [TypeFilter(typeof(CMSExceptionFilter))]
+ [Route("api/v{version:apiVersion}/HIAWms/[controller]")]
+ public class WmsInOutStockRecordController : ControllerBase
+ {
+ private readonly IWmsInOutStockRecordAppService _wmsInOutStockRecordAppService;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsInOutStockRecordController"/> class.
+ /// </summary>
+ /// <param name="wmsInOutStockRecordAppService">The wmsInOutStockRecord application service.</param>
+ public WmsInOutStockRecordController(IWmsInOutStockRecordAppService wmsInOutStockRecordAppService)
+ {
+ _wmsInOutStockRecordAppService = wmsInOutStockRecordAppService;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <returns></returns>
+ [HttpGet]
+ [Route("{id}")]
+ public virtual Task<WmsInOutStockRecordDto> GetAsync(Guid id)
+ {
+ return _wmsInOutStockRecordAppService.GetAsync(id);
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鑾峰彇鍑哄叆搴撹褰曡〃鐨勫垪琛�.
+ /// </summary>
+ /// <param name="input">杈撳叆.</param>
+ /// <returns></returns>
+ [HttpGet]
+ [Route("Page")]
+ public virtual Task<PagedResultDto<WmsInOutStockRecordDto>> GetListAsync([FromQuery] GetWmsInOutStockRecordInput input)
+ {
+ return _wmsInOutStockRecordAppService.GetListAsync(input);
+ }
+
+ /// <summary>
+ /// 鍒涘缓鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="input">杈撳叆.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpPost]
+ public virtual Task<WmsInOutStockRecordDto> CreateAsync(WmsInOutStockRecordCreateDto input)
+ {
+ return _wmsInOutStockRecordAppService.CreateAsync(input);
+ }
+
+ /// <summary>
+ /// 鏇存柊鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <param name="input">杈撳叆.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpPut]
+ [Route("{id}")]
+ public virtual Task<WmsInOutStockRecordDto> UpdateAsync(Guid id, WmsInOutStockRecordUpdateDto input)
+ {
+ return _wmsInOutStockRecordAppService.UpdateAsync(id, input);
+ }
+
+ /// <summary>
+ /// 鍏嬮殕鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="ids">Id闆嗗悎.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpPost]
+ [Route("Clone")]
+ public virtual Task<List<WmsInOutStockRecordDto>> CloneAsync([FromBody] IEnumerable<Guid> ids)
+ {
+ return _wmsInOutStockRecordAppService.CloneAsync(ids);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpDelete]
+ [Route("{id}")]
+ public virtual Task DeleteAsync(Guid id)
+ {
+ return _wmsInOutStockRecordAppService.DeleteAsync(id);
+ }
+
+ /// <summary>
+ /// 鎵归噺鍒犻櫎鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="ids">The ids.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpDelete]
+ public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids)
+ {
+ return _wmsInOutStockRecordAppService.DeleteManyAsync(ids);
+ }
+
+ /// <summary>
+ /// 璋冩暣鎺掑簭鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <returns></returns>
+ [HttpPut]
+ [Route("{id}/AdjustSort/{sort}")]
+ public virtual Task AdjustSortAsync(Guid id, int sort)
+ {
+ return _wmsInOutStockRecordAppService.AdjustSortAsync(id, sort);
+ }
+
+ /// <summary>
+ /// 瀵煎叆鍑哄叆搴撹褰曡〃
+ /// </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 wmsInOutStockRecordRows = sheetNames.Contains("閰嶇疆") ? MiniExcel.Query<WmsInOutStockRecordsImportModel.WmsInOutStockRecordImportModel>(stream, sheetName: "閰嶇疆").ToList() : new();
+
+ if (!wmsInOutStockRecordRows.Any())
+ {
+ throw new UserFriendlyException("璇锋鏌ュ鍏ョ殑琛ㄦ牸");
+ }
+
+ await _wmsInOutStockRecordAppService.ImportAsync(new WmsInOutStockRecordsImportModel
+ {
+ WmsInOutStockRecords = wmsInOutStockRecordRows,
+ });
+
+ return Ok();
+ }
+
+ /// <summary>
+ /// 瀵煎嚭鍑哄叆搴撹褰曡〃
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet]
+ [Route("Export")]
+ public virtual async Task<IActionResult> ExportAsync([FromQuery] GetWmsInOutStockRecordInput input)
+ {
+ input.MaxResultCount = int.MaxValue;
+ var exportData = await _wmsInOutStockRecordAppService.ExportAsync(input);
+ var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Resources/Templates/WmsInOutStockRecord瀵煎嚭妯℃澘.xlsx");
+ if (!System.IO.File.Exists(templatePath))
+ {
+ templatePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty, $"Resources/Templates/WmsInOutStockRecord瀵煎嚭妯℃澘.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/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsMaterialController.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsMaterialController.cs"
new file mode 100644
index 0000000..9060e10
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsMaterialController.cs"
@@ -0,0 +1,188 @@
+using Ao.Lang;
+using CMS.Extensions.Abp.AspNetCore.Mvc.Filters;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
+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>
+ /// 鐗╂枡鍩虹淇℃伅琛ㄦ湇鍔�
+ /// </summary>
+ [ApiController]
+ [TypeFilter(typeof(CMSLanguageFilter))]
+ [TypeFilter(typeof(CMSUowActionFilter))]
+ [TypeFilter(typeof(CMSAuditActionFilter))]
+ [TypeFilter(typeof(CMSExceptionFilter))]
+ [Route("api/v{version:apiVersion}/HIAWms/[controller]")]
+ public class WmsMaterialController : ControllerBase
+ {
+ private readonly IWmsMaterialAppService _wmsmaterialsAppService;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsMaterialController"/> class.
+ /// </summary>
+ /// <param name="wmsmaterialsAppService">The wmsmaterials application service.</param>
+ public WmsMaterialController(IWmsMaterialAppService wmsmaterialsAppService)
+ {
+ _wmsmaterialsAppService = wmsmaterialsAppService;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <returns></returns>
+ [HttpGet]
+ [Route("{id}")]
+ public virtual Task<WmsMaterialDto> GetAsync(Guid id)
+ {
+ return _wmsmaterialsAppService.GetAsync(id);
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鑾峰彇鐗╂枡鍩虹淇℃伅琛ㄧ殑鍒楄〃.
+ /// </summary>
+ /// <param name="input">杈撳叆.</param>
+ /// <returns></returns>
+ [HttpGet]
+ [Route("Page")]
+ public virtual Task<PagedResultDto<WmsMaterialDto>> GetListAsync([FromQuery] GetWmsMaterialInput input)
+ {
+ return _wmsmaterialsAppService.GetListAsync(input);
+ }
+
+ /// <summary>
+ /// 鍒涘缓鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="input">杈撳叆.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpPost]
+ public virtual Task<WmsMaterialDto> CreateAsync(WmsMaterialCreateDto input)
+ {
+ return _wmsmaterialsAppService.CreateAsync(input);
+ }
+
+ /// <summary>
+ /// 鏇存柊鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <param name="input">杈撳叆.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpPut]
+ [Route("{id}")]
+ public virtual Task<WmsMaterialDto> UpdateAsync(Guid id, WmsMaterialUpdateDto input)
+ {
+ return _wmsmaterialsAppService.UpdateAsync(id, input);
+ }
+
+ /// <summary>
+ /// 鍏嬮殕鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="ids">Id闆嗗悎.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpPost]
+ [Route("Clone")]
+ public virtual Task<List<WmsMaterialDto>> CloneAsync([FromBody] IEnumerable<Guid> ids)
+ {
+ return _wmsmaterialsAppService.CloneAsync(ids);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpDelete]
+ [Route("{id}")]
+ public virtual Task DeleteAsync(Guid id)
+ {
+ return _wmsmaterialsAppService.DeleteAsync(id);
+ }
+
+ /// <summary>
+ /// 鎵归噺鍒犻櫎鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="ids">The ids.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpDelete]
+ public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids)
+ {
+ return _wmsmaterialsAppService.DeleteManyAsync(ids);
+ }
+
+ /// <summary>
+ /// 璋冩暣鎺掑簭鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <returns></returns>
+ [HttpPut]
+ [Route("{id}/AdjustSort/{sort}")]
+ public virtual Task AdjustSortAsync(Guid id, int sort)
+ {
+ return _wmsmaterialsAppService.AdjustSortAsync(id, sort);
+ }
+
+ /// <summary>
+ /// 瀵煎叆鐗╂枡鍩虹淇℃伅琛�
+ /// </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 wmsmaterialsRows = sheetNames.Contains("閰嶇疆") ? MiniExcel.Query<WmsMaterialsImportModel.WmsMaterialImportModel>(stream, sheetName: "閰嶇疆").ToList() : new();
+
+ if (!wmsmaterialsRows.Any())
+ {
+ throw new UserFriendlyException("璇锋鏌ュ鍏ョ殑琛ㄦ牸");
+ }
+
+ await _wmsmaterialsAppService.ImportAsync(new WmsMaterialsImportModel
+ {
+ WmsMaterials = wmsmaterialsRows,
+ });
+
+ return Ok();
+ }
+
+ /// <summary>
+ /// 瀵煎嚭鐗╂枡鍩虹淇℃伅琛�
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet]
+ [Route("Export")]
+ public virtual async Task<IActionResult> ExportAsync([FromQuery] GetWmsMaterialInput input)
+ {
+ input.MaxResultCount = int.MaxValue;
+ var exportData = await _wmsmaterialsAppService.ExportAsync(input);
+ var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Resources/Templates/WmsMaterial瀵煎嚭妯℃澘.xlsx");
+ if (!System.IO.File.Exists(templatePath))
+ {
+ templatePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty, $"Resources/Templates/WmsMaterial瀵煎嚭妯℃澘.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/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsPlaceController.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsPlaceController.cs"
new file mode 100644
index 0000000..07c65ab
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsPlaceController.cs"
@@ -0,0 +1,187 @@
+using Ao.Lang;
+using CMS.Extensions.Abp.AspNetCore.Mvc.Filters;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsPlaces;
+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>
+ /// WmsPlace鏈嶅姟
+ /// </summary>
+ [ApiController]
+ [TypeFilter(typeof(CMSLanguageFilter))]
+ [TypeFilter(typeof(CMSUowActionFilter))]
+ [TypeFilter(typeof(CMSAuditActionFilter))]
+ [TypeFilter(typeof(CMSExceptionFilter))]
+ [Route("api/v{version:apiVersion}/HIAWms/[controller]")]
+ public class WmsPlaceController : ControllerBase
+ {
+ private readonly IWmsPlaceAppService _wmsplaceAppService;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsPlaceController"/> class.
+ /// </summary>
+ /// <param name="wmsplaceAppService">The wmsplace application service.</param>
+ public WmsPlaceController(IWmsPlaceAppService wmsplaceAppService)
+ {
+ _wmsplaceAppService = wmsplaceAppService;
+ }
+
+ /// <summary>
+ /// 鑾峰彇wmsplace.
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <returns></returns>
+ [HttpGet]
+ [Route("{id}")]
+ public virtual Task<WmsPlaceDto> GetAsync(Guid id)
+ {
+ return _wmsplaceAppService.GetAsync(id);
+ }
+
+ /// <summary>
+ /// 鑾峰彇wmsplace鐨勫垪琛�.
+ /// </summary>
+ /// <param name="input">杈撳叆.</param>
+ /// <returns></returns>
+ [HttpGet]
+ public virtual Task<PagedResultDto<WmsPlaceDto>> GetListAsync([FromQuery] GetWmsPlacesInput input)
+ {
+ return _wmsplaceAppService.GetListAsync(input);
+ }
+
+ /// <summary>
+ /// 鍒涘缓wmsplace.
+ /// </summary>
+ /// <param name="input">杈撳叆.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpPost]
+ public virtual Task<WmsPlaceDto> CreateAsync(WmsPlaceCreateDto input)
+ {
+ return _wmsplaceAppService.CreateAsync(input);
+ }
+
+ /// <summary>
+ /// 鏇存柊wmsplace.
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <param name="input">杈撳叆.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpPut]
+ [Route("{id}")]
+ public virtual Task<WmsPlaceDto> UpdateAsync(Guid id, WmsPlaceUpdateDto input)
+ {
+ return _wmsplaceAppService.UpdateAsync(id, input);
+ }
+
+ /// <summary>
+ /// 鍏嬮殕WmsPlace.
+ /// </summary>
+ /// <param name="ids">Id闆嗗悎.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpPost]
+ [Route("Clone")]
+ public virtual Task<List<WmsPlaceDto>> CloneAsync([FromBody] IEnumerable<Guid> ids)
+ {
+ return _wmsplaceAppService.CloneAsync(ids);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎wmsplace.
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpDelete]
+ [Route("{id}")]
+ public virtual Task DeleteAsync(Guid id)
+ {
+ return _wmsplaceAppService.DeleteAsync(id);
+ }
+
+ /// <summary>
+ /// 鎵归噺鍒犻櫎wmsplace.
+ /// </summary>
+ /// <param name="ids">The ids.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpDelete]
+ public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids)
+ {
+ return _wmsplaceAppService.DeleteManyAsync(ids);
+ }
+
+ /// <summary>
+ /// 璋冩暣鎺掑簭.
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <returns></returns>
+ [HttpPut]
+ [Route("{id}/AdjustSort/{sort}")]
+ public virtual Task AdjustSortAsync(Guid id, int sort)
+ {
+ return _wmsplaceAppService.AdjustSortAsync(id, sort);
+ }
+
+ /// <summary>
+ /// 瀵煎叆wmsplace.
+ /// </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 wmsplaceRows = sheetNames.Contains("閰嶇疆") ? MiniExcel.Query<WmsPlacesImportModel.WmsPlaceImportModel>(stream, sheetName: "閰嶇疆").ToList() : new();
+
+ if (!wmsplaceRows.Any())
+ {
+ throw new UserFriendlyException("璇锋鏌ュ鍏ョ殑琛ㄦ牸");
+ }
+
+ await _wmsplaceAppService.ImportAsync(new WmsPlacesImportModel
+ {
+ WmsPlaces = wmsplaceRows,
+ });
+
+ return Ok();
+ }
+
+ /// <summary>
+ /// 瀵煎嚭wmsplace.
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet]
+ [Route("Export")]
+ public virtual async Task<IActionResult> ExportAsync([FromQuery] GetWmsPlacesInput input)
+ {
+ input.MaxResultCount = int.MaxValue;
+ var exportData = await _wmsplaceAppService.ExportAsync(input);
+ var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Resources/Templates/WmsPlace瀵煎嚭妯℃澘.xlsx");
+ if (!System.IO.File.Exists(templatePath))
+ {
+ templatePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty, $"Resources/Templates/WmsPlace瀵煎嚭妯℃澘.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/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsStoreController.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsStoreController.cs"
new file mode 100644
index 0000000..e3f25e0
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsStoreController.cs"
@@ -0,0 +1,187 @@
+using Ao.Lang;
+using CMS.Extensions.Abp.AspNetCore.Mvc.Filters;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsStores;
+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>
+ /// WmsStore鏈嶅姟
+ /// </summary>
+ [ApiController]
+ [TypeFilter(typeof(CMSLanguageFilter))]
+ [TypeFilter(typeof(CMSUowActionFilter))]
+ [TypeFilter(typeof(CMSAuditActionFilter))]
+ [TypeFilter(typeof(CMSExceptionFilter))]
+ [Route("api/v{version:apiVersion}/HIAWms/[controller]")]
+ public class WmsStoreController : ControllerBase
+ {
+ private readonly IWmsStoreAppService _wmsstoreAppService;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="WmsStoreController"/> class.
+ /// </summary>
+ /// <param name="wmsstoreAppService">The wmsstore application service.</param>
+ public WmsStoreController(IWmsStoreAppService wmsstoreAppService)
+ {
+ _wmsstoreAppService = wmsstoreAppService;
+ }
+
+ /// <summary>
+ /// 鑾峰彇wmsstore.
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <returns></returns>
+ [HttpGet]
+ [Route("{id}")]
+ public virtual Task<WmsStoreDto> GetAsync(Guid id)
+ {
+ return _wmsstoreAppService.GetAsync(id);
+ }
+
+ /// <summary>
+ /// 鑾峰彇wmsstore鐨勫垪琛�.
+ /// </summary>
+ /// <param name="input">杈撳叆.</param>
+ /// <returns></returns>
+ [HttpGet]
+ public virtual Task<PagedResultDto<WmsStoreDto>> GetListAsync([FromQuery] GetWmsStoresInput input)
+ {
+ return _wmsstoreAppService.GetListAsync(input);
+ }
+
+ /// <summary>
+ /// 鍒涘缓wmsstore.
+ /// </summary>
+ /// <param name="input">杈撳叆.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpPost]
+ public virtual Task<WmsStoreDto> CreateAsync(WmsStoreCreateDto input)
+ {
+ return _wmsstoreAppService.CreateAsync(input);
+ }
+
+ /// <summary>
+ /// 鏇存柊wmsstore.
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <param name="input">杈撳叆.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpPut]
+ [Route("{id}")]
+ public virtual Task<WmsStoreDto> UpdateAsync(Guid id, WmsStoreUpdateDto input)
+ {
+ return _wmsstoreAppService.UpdateAsync(id, input);
+ }
+
+ /// <summary>
+ /// 鍏嬮殕WmsStore.
+ /// </summary>
+ /// <param name="ids">Id闆嗗悎.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpPost]
+ [Route("Clone")]
+ public virtual Task<List<WmsStoreDto>> CloneAsync([FromBody] IEnumerable<Guid> ids)
+ {
+ return _wmsstoreAppService.CloneAsync(ids);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎wmsstore.
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpDelete]
+ [Route("{id}")]
+ public virtual Task DeleteAsync(Guid id)
+ {
+ return _wmsstoreAppService.DeleteAsync(id);
+ }
+
+ /// <summary>
+ /// 鎵归噺鍒犻櫎wmsstore.
+ /// </summary>
+ /// <param name="ids">The ids.</param>
+ /// <returns></returns>
+ //[Authorize]
+ [HttpDelete]
+ public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids)
+ {
+ return _wmsstoreAppService.DeleteManyAsync(ids);
+ }
+
+ /// <summary>
+ /// 璋冩暣鎺掑簭.
+ /// </summary>
+ /// <param name="id">鏍囪瘑绗�.</param>
+ /// <returns></returns>
+ [HttpPut]
+ [Route("{id}/AdjustSort/{sort}")]
+ public virtual Task AdjustSortAsync(Guid id, int sort)
+ {
+ return _wmsstoreAppService.AdjustSortAsync(id, sort);
+ }
+
+ /// <summary>
+ /// 瀵煎叆wmsstore.
+ /// </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 wmsstoreRows = sheetNames.Contains("閰嶇疆") ? MiniExcel.Query<WmsStoresImportModel.WmsStoreImportModel>(stream, sheetName: "閰嶇疆").ToList() : new();
+
+ if (!wmsstoreRows.Any())
+ {
+ throw new UserFriendlyException("璇锋鏌ュ鍏ョ殑琛ㄦ牸");
+ }
+
+ await _wmsstoreAppService.ImportAsync(new WmsStoresImportModel
+ {
+ WmsStores = wmsstoreRows,
+ });
+
+ return Ok();
+ }
+
+ /// <summary>
+ /// 瀵煎嚭wmsstore.
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet]
+ [Route("Export")]
+ public virtual async Task<IActionResult> ExportAsync([FromQuery] GetWmsStoresInput input)
+ {
+ input.MaxResultCount = int.MaxValue;
+ var exportData = await _wmsstoreAppService.ExportAsync(input);
+ var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Resources/Templates/WmsStore瀵煎嚭妯℃澘.xlsx");
+ if (!System.IO.File.Exists(templatePath))
+ {
+ templatePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty, $"Resources/Templates/WmsStore瀵煎嚭妯℃澘.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/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/EventHandlers/HIAWmsEventHandler.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/EventHandlers/HIAWmsEventHandler.cs"
new file mode 100644
index 0000000..d5c8f45
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/EventHandlers/HIAWmsEventHandler.cs"
@@ -0,0 +1,80 @@
+using CMS.Plugin.MesSuite.Abstractions.Events;
+using CMS.Plugin.MesSuite.Abstractions.Models;
+using CMS.Plugin.HIAWms.Domain.WmsContainers;
+using CMS.Plugin.OrderManagement.Abstractions.Models;
+using CMS.Plugin.ProcessManagement.Abstractions.Models;
+using CMS.Plugin.TraceManagement.Abstractions.Models.Traces;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.EventBus.Distributed;
+using Volo.Abp.Uow;
+
+namespace CMS.Plugin.HIAWms.EventHandlers
+{
+ /// <summary>
+ /// 娴佺▼浜嬩欢澶勭悊绋嬪簭
+ /// </summary>
+ public class HIAWmsEventHandler : IDistributedEventHandler<ProcessFlowEto>, ITransientDependency
+ {
+ private readonly ILogger _logger;
+ private readonly IServiceProvider _serviceProvider;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="HIAWmsEventHandler"/> class.
+ /// </summary>
+ /// <param name="logger">The logger.</param>
+ /// <param name="serviceProvider">The service provider.</param>
+ public HIAWmsEventHandler(ILogger<HIAWmsEventHandler> logger, IServiceProvider serviceProvider)
+ {
+ this._logger = logger;
+ this._serviceProvider = serviceProvider;
+ }
+
+ /// <summary>
+ /// Handler handles the event by implementing this method.
+ /// </summary>
+ /// <param name="eventData">Event data</param>
+ public async Task HandleEventAsync(ProcessFlowEto eventData)
+ {
+ if (eventData.Activity.Equals("姝ラ鍚嶇О"))
+ {
+ _logger.LogInformation($"WmsContainerEventHandler: Activity={eventData.Activity}");
+
+ var serialNumber = eventData?.FlowItems[FlowItemCollection.SerialNumber]?.ToString();
+
+ // 宸ヨ壓妯″瀷
+ var process = eventData?.FlowItems[FlowItemCollection.ApplicationData] as ProcessModel;
+
+ // 浜у搧妯″瀷
+ var product = eventData?.FlowItems[FlowItemCollection.ProductModel] as AssociationProductModel;
+
+ // 杩芥函妯″瀷
+ var trace = eventData?.FlowItems[FlowItemCollection.TraceModel] as TraceModel;
+
+ // 宸ュ崟妯″瀷
+ var order = eventData?.FlowItems[FlowItemCollection.OrderModel] as OrderModel;
+
+ // 涓氬姟澶勭悊
+ await ProcessAsync();
+ }
+ }
+
+ /// <summary>
+ /// Processes the asynchronous.
+ /// </summary>
+ private async Task ProcessAsync()
+ {
+ using var scope = _serviceProvider.CreateScope();
+ var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
+ using var uow = unitOfWorkManager.Begin(requiresNew: true);
+ var wmscontainerRepository = scope.ServiceProvider.GetRequiredService<IWmsContainerRepository>();
+ var count = await wmscontainerRepository.GetCountAsync();
+
+ // 濡傛灉鏈夋洿鏂版暟鎹簱鎿嶄綔锛岄渶鎻愪氦淇濆瓨
+ // await uow.SaveChangesAsync();
+
+ _logger.LogInformation($"ProcessAsync锛孋ount={count}");
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/FlowProcessors/HIAWmsFlowProcessor.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/FlowProcessors/HIAWmsFlowProcessor.cs"
new file mode 100644
index 0000000..8d1b2af
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/FlowProcessors/HIAWmsFlowProcessor.cs"
@@ -0,0 +1,91 @@
+using CMS.Plugin.FlowManagement.Abstractions;
+using CMS.Plugin.FlowManagement.Abstractions.Models;
+using CMS.Plugin.MesSuite.Abstractions.Models;
+using CMS.Plugin.HIAWms.Domain.WmsContainers;
+using CMS.Plugin.OrderManagement.Abstractions.Models;
+using CMS.Plugin.ProcessManagement.Abstractions.Models;
+using CMS.Plugin.TraceManagement.Abstractions.Models.Traces;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using SYC.Flow.Kernel;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Uow;
+
+namespace CMS.Plugin.HIAWms.FlowProcessors
+{
+ /// <summary>
+ /// 娴佺▼澶勭悊鍣�
+ /// </summary>
+ public class HIAWmsFlowProcessor : IFlowProcessor, ISingletonDependency
+ {
+ private readonly ILogger<HIAWmsFlowProcessor> _logger;
+ private readonly IServiceProvider _serviceProvider;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="FlowProcessor"/> class.
+ /// </summary>
+ public HIAWmsFlowProcessor(ILogger<HIAWmsFlowProcessor> logger, IServiceProvider serviceProvider)
+ {
+ _logger = logger;
+ _serviceProvider = serviceProvider;
+ }
+
+ /// <inheritdoc />
+ public Task OnEnterAsync(FlowProcessor flowProcessor, object sender, EventArgs args)
+ {
+ return Task.CompletedTask;
+ }
+
+ /// <inheritdoc />
+ public async Task OnExecuteAsync(FlowProcessor flowProcessor, object sender, EventArgs args)
+ {
+ if (sender is Activity activity)
+ {
+ var eventArgs = args as ProcessflowEventArgs;
+ var procID = eventArgs.DataItems["Instance_ProcID"];
+ if (activity?.Name == "绗笁鏂圭郴缁熷悎鏍煎垽鏂�")
+ {
+ // 宸ヨ壓妯″瀷
+ var processModel = eventArgs.DataItems.ApplicationData as ProcessModel;
+
+ // 宸ュ崟妯″瀷
+ var orderModel = eventArgs.DataItems[FlowItemCollection.OrderModel] as OrderModel;
+
+ // 浜у搧妯″瀷
+ var productModel = eventArgs.DataItems[FlowItemCollection.ProductModel] as AssociationProductModel;
+
+ // 杩芥函妯″瀷
+ var traceModel = eventArgs.DataItems[FlowItemCollection.TraceModel] as TraceModel;
+
+ // 涓氬姟澶勭悊
+ await ProcessAsync();
+
+ _logger.LogInformation($"鎵ц娴佺▼锛氬疄渚�={procID} -> {flowProcessor.ProcName} -> {activity.Name} ProductionFlowProcessor");
+ }
+ }
+ }
+
+ /// <summary>
+ /// Processes the asynchronous.
+ /// </summary>
+ private async Task ProcessAsync()
+ {
+ using var scope = _serviceProvider.CreateScope();
+ var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
+ using var uow = unitOfWorkManager.Begin(requiresNew: true);
+ var wmscontainerRepository = scope.ServiceProvider.GetRequiredService<IWmsContainerRepository>();
+ var count = await wmscontainerRepository.GetCountAsync();
+
+ // 濡傛灉鏈夋洿鏂版暟鎹簱鎿嶄綔锛岄渶鎻愪氦淇濆瓨
+ // await uow.SaveChangesAsync();
+
+ _logger.LogInformation($"ProcessAsync锛孋ount={count}");
+ }
+
+ /// <inheritdoc />
+ public Task OnExitAsync(FlowProcessor flowProcessor, object sender, EventArgs args)
+ {
+ return Task.CompletedTask;
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Flows/50001_1.pfd" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Flows/50001_1.pfd"
new file mode 100644
index 0000000..85b41af
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Flows/50001_1.pfd"
@@ -0,0 +1,158 @@
+<ProcessflowDefine Version="1">
+ <Define>
+ <ProcessflowBuilder xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Parameters/>
+ <Name>HIAWms涓氬姟娴佺▼</Name>
+ <Description></Description>
+ <Root xsi:type="Activity">
+ <Alias>鍚姩</Alias>
+ <Name>鍚姩</Name>
+ <Description></Description>
+ <EnterMode>Automatic</EnterMode>
+ <ExitMode>Automatic</ExitMode>
+ <JoinType>JoinXOR</JoinType>
+ <SplitType>SplitXOR</SplitType>
+ <ExtendedProperty></ExtendedProperty>
+ </Root>
+ <Activities>
+ <Activity xsi:type="VariableMonitorActivity">
+ <Alias>鍙橀噺鐩戝惉</Alias>
+ <Name>瑙﹀彂淇″彿鐩戝惉</Name>
+ <EnterMode>Automatic</EnterMode>
+ <ExitMode>Automatic</ExitMode>
+ <JoinType>JoinXOR</JoinType>
+ <SplitType>SplitXOR</SplitType>
+ <NeedTagChange>true</NeedTagChange>
+ <TaskDelay>0</TaskDelay>
+ <MonitorVariableName>HIAWms_TriggerSignal</MonitorVariableName>
+ <CompareVariableValue>1</CompareVariableValue>
+ <ExtendedProperty></ExtendedProperty>
+ </Activity>
+ <Activity xsi:type="VariableReadActivity">
+ <Alias>鍙橀噺璇诲彇</Alias>
+ <Name>鍙橀噺璇诲彇</Name>
+ <EnterMode>Automatic</EnterMode>
+ <ExitMode>Automatic</ExitMode>
+ <JoinType>JoinXOR</JoinType>
+ <SplitType>SplitXOR</SplitType>
+ <TaskDelay>0</TaskDelay>
+ <ReadRetryCount>10</ReadRetryCount>
+ <ReadRetryDelay>500</ReadRetryDelay>
+ <ExtendedProperty></ExtendedProperty>
+ <ParameterVariables>
+ <ReadParameterVariable>
+ <VariableName>HIAWms_BarcodeVariable</VariableName>
+ <WriteIntoExtAttribute>true</WriteIntoExtAttribute>
+ </ReadParameterVariable>
+ </ParameterVariables>
+ </Activity>
+ <Activity xsi:type="HIAWmsActivity">
+ <Alias>鍙橀噺鐩戝惉</Alias>
+ <Name>鎵╁睍姝ラ</Name>
+ <EnterMode>Automatic</EnterMode>
+ <ExitMode>Automatic</ExitMode>
+ <JoinType>JoinXOR</JoinType>
+ <SplitType>SplitXOR</SplitType>
+ <TaskDelay>0</TaskDelay>
+ <MyProperty>MyProperty1</MyProperty>
+ <ExtendedProperty></ExtendedProperty>
+ </Activity>
+ <Activity xsi:type="VariableMonitorActivity">
+ <Alias>鍙橀噺鐩戝惉</Alias>
+ <Name>瑙﹀彂淇″彿澶嶄綅鐩戝惉</Name>
+ <EnterMode>Automatic</EnterMode>
+ <ExitMode>Automatic</ExitMode>
+ <JoinType>JoinXOR</JoinType>
+ <SplitType>SplitXOR</SplitType>
+ <NeedTagChange>true</NeedTagChange>
+ <TaskDelay>0</TaskDelay>
+ <MonitorVariableName>HIAWms_TriggerSignal</MonitorVariableName>
+ <CompareVariableValue>0</CompareVariableValue>
+ <ExtendedProperty></ExtendedProperty>
+ </Activity>
+ <Activity xsi:type="BusinessActivity">
+ <Alias>閫氱敤姝ラ</Alias>
+ <Name>閫氱敤姝ラ</Name>
+ <EnterMode>Automatic</EnterMode>
+ <ExitMode>Automatic</ExitMode>
+ <JoinType>JoinXOR</JoinType>
+ <SplitType>SplitXOR</SplitType>
+ <PublishFlowEvent>true</PublishFlowEvent>
+ <TaskDelay>0</TaskDelay>
+ <ExtendedProperty>
+ <MyExtendedProperty>MyExtendedProperty1</MyExtendedProperty>
+ </ExtendedProperty>
+ </Activity>
+ <Activity xsi:type="VariableWriteActivity">
+ <Alias>鍙橀噺涓嬪彂</Alias>
+ <Name>鍙橀噺涓嬪彂</Name>
+ <EnterMode>Automatic</EnterMode>
+ <ExitMode>Automatic</ExitMode>
+ <JoinType>JoinXOR</JoinType>
+ <SplitType>SplitXOR</SplitType>
+ <TaskDelay>0</TaskDelay>
+ <WriteRetryCount>10</WriteRetryCount>
+ <WriteRetryDelay>500</WriteRetryDelay>
+ <ParameterVariables>
+ <WriteParameterVariable>
+ <Sort>1</Sort>
+ <WriteVariableName>HIAWms_BarcodeVariable</WriteVariableName>
+ <WriteVariableValue></WriteVariableValue>
+ </WriteParameterVariable>
+ </ParameterVariables>
+ <ExtendedProperty></ExtendedProperty>
+ </Activity>
+ <Activity xsi:type="EndActivity">
+ <Alias>缁撴潫</Alias>
+ <Name>缁撴潫</Name>
+ <EnterMode>Automatic</EnterMode>
+ <ExitMode>Automatic</ExitMode>
+ <JoinType>JoinXOR</JoinType>
+ <SplitType>SplitXOR</SplitType>
+ <ExtendedProperty></ExtendedProperty>
+ </Activity>
+ </Activities>
+ <Transitions>
+ <Transition>
+ <Label>鍚姩->瑙﹀彂淇″彿鐩戝惉</Label>
+ <Source>鍚姩</Source>
+ <Sink>瑙﹀彂淇″彿鐩戝惉</Sink>
+ </Transition>
+ <Transition>
+ <Label>瑙﹀彂淇″彿鐩戝惉->鍙橀噺璇诲彇</Label>
+ <Source>瑙﹀彂淇″彿鐩戝惉</Source>
+ <Sink>鍙橀噺璇诲彇</Sink>
+ </Transition>
+ <Transition>
+ <Label>鍙橀噺璇诲彇->鎵╁睍姝ラ</Label>
+ <Source>鍙橀噺璇诲彇</Source>
+ <Sink>鎵╁睍姝ラ</Sink>
+ </Transition>
+ <Transition>
+ <Label>鎵╁睍姝ラ->瑙﹀彂淇″彿澶嶄綅鐩戝惉</Label>
+ <Source>鎵╁睍姝ラ</Source>
+ <Sink>瑙﹀彂淇″彿澶嶄綅鐩戝惉</Sink>
+ </Transition>
+ <Transition>
+ <Label>瑙﹀彂淇″彿澶嶄綅鐩戝惉->閫氱敤姝ラ</Label>
+ <Source>瑙﹀彂淇″彿澶嶄綅鐩戝惉</Source>
+ <Sink>閫氱敤姝ラ</Sink>
+ </Transition>
+ <Transition>
+ <Label>閫氱敤姝ラ->鍙橀噺涓嬪彂</Label>
+ <Source>閫氱敤姝ラ</Source>
+ <Sink>鍙橀噺涓嬪彂</Sink>
+ </Transition>
+ <Transition>
+ <Label>鍙橀噺涓嬪彂->缁撴潫</Label>
+ <Source>鍙橀噺涓嬪彂</Source>
+ <Sink>缁撴潫</Sink>
+ </Transition>
+ </Transitions>
+ </ProcessflowBuilder>
+ </Define>
+ <Appearance>
+ <ProcessflowAppearance xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ </ProcessflowAppearance>
+ </Appearance>
+</ProcessflowDefine>
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Flows/FlowInfo.xml" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Flows/FlowInfo.xml"
new file mode 100644
index 0000000..9a559ec
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Flows/FlowInfo.xml"
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Root>
+ <FlowInfo>
+ <Type>50001</Type>
+ <Name>娴嬭瘯娴佺▼</Name>
+ <Description></Description>
+ <Version>1</Version>
+ <FilePath>FlowPfd/50001_1.pfd</FilePath>
+ <BusinessType>
+ <Name>Other</Name>
+ <Value>1</Value>
+ <Description>娴嬭瘯娴佺▼</Description>
+ </BusinessType>
+ </FlowInfo>
+</Root>
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/FodyWeavers.xml" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/FodyWeavers.xml"
new file mode 100644
index 0000000..9a2e2c4
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/FodyWeavers.xml"
@@ -0,0 +1,3 @@
+锘�<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
+ <ConfigureAwait ContinueOnCapturedContext="false" />
+</Weavers>
\ No newline at end of file
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Jobs/HIAWmsArgs.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Jobs/HIAWmsArgs.cs"
new file mode 100644
index 0000000..5354955
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Jobs/HIAWmsArgs.cs"
@@ -0,0 +1,18 @@
+namespace CMS.Plugin.HIAWms.Jobs
+{
+ /// <summary>
+ /// HIAWms 浣滀笟鍙傛暟
+ /// </summary>
+ public class HIAWmsArgs
+ {
+ /// <summary>
+ /// Gets or sets the subject.
+ /// </summary>
+ public string Subject { get; set; }
+
+ /// <summary>
+ /// Gets or sets the body.
+ /// </summary>
+ public string Body { get; set; }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Jobs/HIAWmsJob.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Jobs/HIAWmsJob.cs"
new file mode 100644
index 0000000..9f33568
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Jobs/HIAWmsJob.cs"
@@ -0,0 +1,43 @@
+using CMS.Plugin.HIAWms.Domain.WmsContainers;
+using Microsoft.Extensions.Logging;
+using Volo.Abp.BackgroundJobs;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Uow;
+
+namespace CMS.Plugin.HIAWms.Jobs
+{
+ /// <summary>
+ /// HIAWms 鍚庡彴浣滀笟
+ /// </summary>
+ public class HIAWmsJob : BackgroundJob<HIAWmsArgs>, ITransientDependency
+ {
+ private readonly ILogger<HIAWmsJob> _logger;
+ private readonly IUnitOfWorkManager _unitOfWorkManager;
+ private readonly IWmsContainerRepository _wmscontainerRepository;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="HIAWmsJob"/> class.
+ /// </summary>
+ /// <param name="logger">The logger.</param>
+ /// <param name="unitOfWorkManager">The unit of work manager.</param>
+ /// <param name="wmscontainerRepository">My entity name repository.</param>
+ public HIAWmsJob(ILogger<HIAWmsJob> logger, IUnitOfWorkManager unitOfWorkManager, IWmsContainerRepository wmscontainerRepository)
+ {
+ _logger = logger;
+ _unitOfWorkManager = unitOfWorkManager;
+ _wmscontainerRepository = wmscontainerRepository;
+ }
+
+ /// <inheritdoc />
+ public override void Execute(HIAWmsArgs args)
+ {
+ using var uow = _unitOfWorkManager.Begin(requiresNew: true);
+ var count = _wmscontainerRepository.GetCountAsync().GetAwaiter().GetResult();
+
+ // 濡傛灉鏈夋洿鏂版暟鎹簱鎿嶄綔锛岄渶鎻愪氦淇濆瓨
+ // uow.SaveChangesAsync().GetAwaiter().GetResult();
+
+ _logger.LogInformation($"HIAWmsJob Execute锛孲ubject={args.Subject}锛孊ody={args.Body}锛孋ount={count}");
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/ProjectService/HIAWmsProjectService.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/ProjectService/HIAWmsProjectService.cs"
new file mode 100644
index 0000000..fcc707e
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/ProjectService/HIAWmsProjectService.cs"
@@ -0,0 +1,165 @@
+using CMS.Plugin.FlowManagement.Abstractions.FlowBusiness;
+using CMS.Plugin.HIAWms.Apis;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainers;
+using CMS.Plugin.HIAWms.Domain.WmsContainers;
+using CMS.Plugin.HIAWms.Jobs;
+using CMS.Project;
+using CMS.Project.Abstractions;
+using CMS.Unit.RuntimeValue.Abstractions;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using Volo.Abp.BackgroundJobs;
+using Volo.Abp.Uow;
+
+namespace CMS.Plugin.HIAWms.ProjectService
+{
+ /// <summary>
+ /// 宸ョ▼鏈嶅姟锛屽拰宸ョ▼鍏宠仈鐨勫悗鍙版湇鍔★紝褰�<see cref="IProjectServiceRunner"/>浠ュ綋鍓岾ey璋冪敤鏃朵細琚墽琛�
+ /// </summary>
+ public class HIAWmsProjectService : BaseProjectService
+ {
+ private IServiceProvider _serviceProvider;
+ private readonly ILogger<HIAWmsProjectService> _logger;
+ private readonly IVariableDataCache _variableDataCache;
+ private FlowVariableChannelListener _channelListener;
+ private Dictionary<string, string> _monitorVariableNames;
+
+ /// <summary>
+ /// 鏈嶅姟鐨凨ey锛屽敮涓�锛屼緵<see cref="IProjectServiceRunner"/>浣跨敤
+ /// </summary>
+ public override string Key => "HIAWms";
+
+ /// <summary>
+ /// 鏈嶅姟鎻忚堪锛屾樉绀哄湪鏈嶅姟鍒楄〃UI涓婄殑鍚嶇О
+ /// </summary>
+ public override string Description => "HIAWms鏈嶅姟";
+
+ /// <summary>
+ /// 鍚敤鎺堟潈
+ /// </summary>
+ public override bool AuthRequired => false;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="HIAWmsProjectService"/> class.
+ /// </summary>
+ /// <param name="logger">The logger.</param>
+ /// <param name="variableDataCache">The variable data cache.</param>
+ public HIAWmsProjectService(IServiceProvider serviceProvider, ILogger<HIAWmsProjectService> logger, IVariableDataCache variableDataCache)
+ {
+ _serviceProvider = serviceProvider;
+ _logger = logger;
+ _variableDataCache = variableDataCache;
+ }
+
+ /// <summary>
+ /// 寮�鍚湇鍔�
+ /// </summary>
+ /// <param name="serviceProvider">鍏锋湁宸ョ▼涓婁笅鏂囩殑瀹炰緥</param>
+ public override async Task StartAsync(IServiceProvider serviceProvider)
+ {
+ if (State == ProjectServiceState.Started)
+ {
+ return;
+ }
+
+ // 鐩戝惉鍙橀噺
+ _monitorVariableNames = new Dictionary<string, string>
+ {
+ { "HIAWms_Variable1", "鐩戝惉鍙橀噺1" },
+ { "HIAWms_Variable2", "鐩戝惉鍙橀噺2" }
+ };
+
+ // 鍒涘缓閫氶亾鐩戝惉
+ _channelListener?.Token?.Dispose();
+ _channelListener = new FlowVariableChannelListener(_logger, _variableDataCache);
+ _channelListener.CreateChannel(Key, waitListener: false, timeout: TimeSpan.FromSeconds(30), variableFilter: _monitorVariableNames.Keys.ToHashSet());
+ _channelListener.TagChanged += OnTagValueChanged;
+
+ await base.StartAsync(serviceProvider);
+ }
+
+ /// <summary>
+ /// 鍋滄鏈嶅姟
+ /// </summary>
+ /// <param name="serviceProvider">鍏锋湁宸ョ▼涓婁笅鏂囩殑瀹炰緥</param>
+ public override async Task StopAsync(IServiceProvider serviceProvider)
+ {
+ if (_channelListener != null)
+ {
+ // 閲婃斁鐩戝惉
+ _channelListener.TagChanged -= OnTagValueChanged;
+ _channelListener.Token.Dispose();
+ _channelListener = null;
+ }
+
+ // 浣跨敤鍚庡彴浣滀笟寮傛澶勭悊
+ //await _serviceProvider.GetRequiredService<IBackgroundJobManager>().EnqueueAsync(new HIAWmsArgs
+ //{
+ // Subject = "HIAWms_Subject",
+ // Body = "HIAWms_Body",
+ //});
+
+
+ await base.StopAsync(serviceProvider);
+ }
+
+ /// <summary>
+ /// Called when [tag value changed].
+ /// </summary>
+ /// <param name="sender">The sender.</param>
+ /// <param name="e">The <see cref="TagChangedEventArgs"/> instance containing the event data.</param>
+ private async void OnTagValueChanged(object sender, TagChangedEventArgs e)
+ {
+ var changeds = e.Changeds.Where(x => _monitorVariableNames != null && _monitorVariableNames.ContainsKey(x.Name));
+ if (!changeds.Any())
+ {
+ return;
+ }
+
+ foreach (var changed in changeds)
+ {
+ var oldValue = changed.Old?.Value;
+ var newValue = changed.New?.Value;
+ var traceId = e.TraceId;
+
+ _logger.LogInformation($"{changed.Name} 鍙橀噺鍊煎彂鐢熷彉鍖栵紝鏃у�納oldValue}=鏂板�納newValue}锛孴raceId={traceId}");
+
+ // TODO: 澶勭悊鍙橀噺鍊煎彉鍖�
+ // Tips锛歨ttps://cms-docs.shengyc.com/cms/api/%E5%90%8E%E7%AB%AF#3-%E5%8F%98%E9%87%8F%E6%A8%A1%E5%9D%97
+ /* 璇存槑锛氶�氳繃璁㈤槄 IVariableDataCache.TagChanged 浜嬩欢锛屾偍鍙互瀹炴椂鐩戞帶鍙橀噺鐨勫彉鍖栥�傛浜嬩欢浼氫紶閫掓墍鏈夊彉閲忚嚦浜嬩欢澶勭悊鍑芥暟锛屽洜姝わ紝涓氬姟灞傞渶鍦ㄥ嚱鏁颁腑绛涢�夊叧娉ㄧ殑鍙橀噺銆�
+ 娉ㄦ剰浜嬮」锛�
+ 锛�1锛夋�ц兘褰卞搷锛� 鍙戝竷浜嬩欢鏃讹紝浜嬩欢鐨勫彂閫佽�呭皢闃诲娴佺▼銆傚洜姝わ紝寮虹儓寤鸿閬垮厤鍦ㄤ簨浠跺鐞嗗嚱鏁颁腑鎵ц I/ O 鎿嶄綔銆丠TTP 鎺ュ彛璁块棶鎴栧叾浠栬�楁椂鎿嶄綔锛屼互闃叉瀵圭郴缁熸�ц兘浜х敓涓ラ噸褰卞搷锛屽鑷存暣涓郴缁熷搷搴斿欢杩熴��
+ 锛�2锛夐珮棰戠巼瑙﹀彂锛� 鐢变簬浜嬩欢璁㈤槄浜嗗叏閲忓彉閲忥紝瑙﹀彂棰戠巼鍙兘闈炲父楂樸��
+ 锛�3锛夊紓姝ュ鐞嗭細 閴翠簬浜嬩欢瑙﹀彂棰戠巼寰堥珮锛屽缓璁笟鍔″眰鍦ㄧ瓫閫夊叧娉ㄥ彉閲忓悗锛屼娇鐢� Task 鍚姩鏂扮嚎绋嬪鐞嗕笟鍔¢�昏緫锛屼互閬垮厤闃诲鏍稿績鐨勫彉閲忕洃鍚姛鑳斤紝瀹炵幇涓氬姟灞備笌骞冲彴鍩哄骇鐨勮В鑰︺��
+ 锛�4锛夊苟鍙戠鐞嗭細 濡傛灉涓氬姟灞傚苟鍙戦噺澶э紝蹇呴』浼樺寲浠g爜璁捐鍜屽疄鏂斤紝浠ュ噺灏戝湪楂樺苟鍙戞儏鍐典笅鐨勭郴缁熻祫婧愭秷鑰楋紝闃叉绯荤粺鎬ц兘闂銆�
+ 锛�5锛変唬鐮佸畨鍏細 瀹夎骞朵娇鐢� CMS.CodeAnalysis 鍒嗘瀽鍣ㄦ潵鍒嗘瀽 IVariableDataCache.TagChanged 鐨勪娇鐢ㄦ儏鍐点�傝宸ュ叿鑳藉湪浣跨敤涓嶅綋鏃舵彁渚涚紪璇戦敊璇紝甯姪鎮ㄦ彁楂樹唬鐮佽川閲忋��*/
+
+ _ = Task.Run(async () =>
+ {
+ // 渚�1锛氬悓姝ュ鐞�
+ //await ProcessAsync();
+
+ // 渚�2锛氳皟鐢ㄥ閮ˋPI
+ //await ExecuteExternalApiAsync();
+ });
+ }
+ }
+
+ /// <summary>
+ /// Processes the asynchronous.
+ /// </summary>
+ private async Task ProcessAsync()
+ {
+ using var scope = _serviceProvider.CreateScope();
+ var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
+ using var uow = unitOfWorkManager.Begin(requiresNew: true);
+ var wmscontainerRepository = scope.ServiceProvider.GetRequiredService<IWmsContainerRepository>();
+ var count = await wmscontainerRepository.GetCountAsync();
+
+ // 濡傛灉鏈夋洿鏂版暟鎹簱鎿嶄綔锛岄渶鎻愪氦淇濆瓨
+ // await uow.SaveChangesAsync();
+
+ _logger.LogInformation($"ProcessAsync锛孋ount={count}");
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Properties/launchSettings.json" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Properties/launchSettings.json"
new file mode 100644
index 0000000..bf274c0
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Properties/launchSettings.json"
@@ -0,0 +1,16 @@
+{
+ "profiles": {
+ "DebugFromCMS": {
+ "commandName": "Executable",
+ "executablePath": "$(CMSRootPath)\\host\\CMS.Host.exe",
+ "workingDirectory": "$(CMSRootPath)\\host",
+ "commandLineArgs":"-d",
+ "environmentVariables": {
+ "DOTNET_ENVIRONMENT": "Development",
+ "ASPNETCORE_URLS": "http://*:18000",
+ "PluginPath": "../plugins",
+ "DatabaseType": "MySQL"
+ }
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsArea\345\257\274\345\207\272\346\250\241\346\235\277.xlsx" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsArea\345\257\274\345\207\272\346\250\241\346\235\277.xlsx"
new file mode 100644
index 0000000..8096a4d
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsArea\345\257\274\345\207\272\346\250\241\346\235\277.xlsx"
Binary files differ
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsContainer\345\257\274\345\207\272\346\250\241\346\235\277.xlsx" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsContainer\345\257\274\345\207\272\346\250\241\346\235\277.xlsx"
new file mode 100644
index 0000000..57d6b44
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsContainer\345\257\274\345\207\272\346\250\241\346\235\277.xlsx"
Binary files differ
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterial\345\257\274\345\207\272\346\250\241\346\235\277.xlsx" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterial\345\257\274\345\207\272\346\250\241\346\235\277.xlsx"
new file mode 100644
index 0000000..16a561b
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterial\345\257\274\345\207\272\346\250\241\346\235\277.xlsx"
Binary files differ
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsPlace\345\257\274\345\207\272\346\250\241\346\235\277.xlsx" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsPlace\345\257\274\345\207\272\346\250\241\346\235\277.xlsx"
new file mode 100644
index 0000000..ccb12f5
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsPlace\345\257\274\345\207\272\346\250\241\346\235\277.xlsx"
Binary files differ
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsStore\345\257\274\345\207\272\346\250\241\346\235\277.xlsx" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsStore\345\257\274\345\207\272\346\250\241\346\235\277.xlsx"
new file mode 100644
index 0000000..c70c1c3
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsStore\345\257\274\345\207\272\346\250\241\346\235\277.xlsx"
Binary files differ
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Services/HIAWmsFlowService.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Services/HIAWmsFlowService.cs"
new file mode 100644
index 0000000..a85ecbd
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Services/HIAWmsFlowService.cs"
@@ -0,0 +1,43 @@
+using CMS.Plugin.HIAWms.Abstractions;
+using CMS.Plugin.HIAWms.Domain.WmsContainers;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using SYC.Flow.Kernel;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Uow;
+
+namespace CMS.Plugin.HIAWms.Services
+{
+ /// <inheritdoc />
+ public class HIAWmsFlowService : IHIAWmsFlowService, ITransientDependency
+ {
+ private readonly ILogger<HIAWmsFlowService> _logger;
+ private readonly IServiceProvider _serviceProvider;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="HIAWmsFlowService"/> class.
+ /// </summary>
+ /// <param name="logger">The logger.</param>
+ public HIAWmsFlowService(ILogger<HIAWmsFlowService> logger, IServiceProvider serviceProvider)
+ {
+ _logger = logger;
+ _serviceProvider = serviceProvider;
+ }
+
+ /// <inheritdoc />
+ public async Task ProcessAsync(ProcessflowEventArgs args)
+ {
+ using var scope = _serviceProvider.CreateScope();
+ var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
+ using var uow = unitOfWorkManager.Begin(requiresNew: true);
+ var wmscontainerRepository = scope.ServiceProvider.GetRequiredService<IWmsContainerRepository>();
+ var count = await wmscontainerRepository.GetCountAsync();
+
+ // 濡傛灉鏈夋洿鏂版暟鎹簱鎿嶄綔锛岄渶鎻愪氦淇濆瓨
+ // await uow.SaveChangesAsync();
+
+ // 杈撳嚭鏃ュ織
+ _logger.LogInformation($"HIAWmsFlowService锛歅rocessAsync()");
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Workers/HIAWmsWorker.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Workers/HIAWmsWorker.cs"
new file mode 100644
index 0000000..6948d27
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/Workers/HIAWmsWorker.cs"
@@ -0,0 +1,76 @@
+using CMS.Extensions.Variable;
+using CMS.Project.Abstractions;
+using KissUtil.Extensions;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using Volo.Abp.BackgroundWorkers;
+using Volo.Abp.Threading;
+
+namespace CMS.Plugin.HIAWms.Workers
+{
+ /// <summary>
+ /// HIAWms鍚庡彴宸ヤ綔鑰�
+ /// </summary>
+ public class HIAWmsWorker : AsyncPeriodicBackgroundWorkerBase
+ {
+ private readonly ILogger<HIAWmsWorker> _logger;
+ private readonly VariableService _variableService;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="HIAWmsWorker"/> class.
+ /// </summary>
+ /// <param name="timer">The timer.</param>
+ /// <param name="serviceScopeFactory">The service scope factory.</param>
+ public HIAWmsWorker(ILogger<HIAWmsWorker> logger, AbpAsyncTimer timer, VariableService variableService, IServiceScopeFactory serviceScopeFactory) : base(timer, serviceScopeFactory)
+ {
+ _logger = logger;
+ _variableService = variableService;
+ Timer.Period = 1 * 300 * 1000; // 姣忛殧 300 绉� 鎵ц涓�娆�
+ Timer.RunOnStart = true;
+ }
+
+ /// <inheritdoc />
+ protected override async Task DoWorkAsync(PeriodicBackgroundWorkerContext workerContext)
+ {
+ var projectAccessor = workerContext.ServiceProvider.GetRequiredService<IProjectAccessor>();
+ var project = await projectAccessor.GetProjectAsync();
+ if (project?.Info == null)
+ {
+ return;
+ }
+
+ //_logger.LogInformation($"HIAWmsWorker is working for project {project.Info.Id}");
+
+ //// 璁$畻OEE
+ //double oee = await CalculateOEEAsync();
+
+ //// 浣跨敤鐧惧垎姣旀牸寮� 鎵撳嵃缁撴灉鏃ュ織
+ //_logger.LogInformation($"OEE:{oee:P2}");
+
+ //// 鍐欏叆鍙橀噺
+ //await _variableService.WriteValueAsync(new Dictionary<string, object> {{ "OEE", oee } });
+ }
+
+ // 璁$畻OEE=鍙敤鎬楁�ц兘脳璐ㄩ噺
+ public async Task<double> CalculateOEEAsync()
+ {
+ // 璇诲彇OEE璁$畻鎵�闇�鐨勫��
+ double availability = await ReadDoubleValueAsync("Availability");
+ double performance = await ReadDoubleValueAsync("Performance");
+ double quality = await ReadDoubleValueAsync("Quality");
+
+ // 璁$畻OEE
+ double oee = availability * performance * quality;
+
+ // 杩斿洖璁$畻缁撴灉
+ return oee;
+ }
+
+ // 鎻愪緵涓�涓硾鍨嬫柟娉曪紝鏂逛究鐩存帴鑾峰彇double绫诲瀷鐨勫��
+ public async Task<double> ReadDoubleValueAsync(string variableName)
+ {
+ var variable = await _variableService.ReadValueAsync(variableName);
+ return (variable?.Content?.Value).SafeString().ToDoubleOrNull().GetValueOrDefault();
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/appsettings.json" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/appsettings.json"
new file mode 100644
index 0000000..f7a6300
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms/appsettings.json"
@@ -0,0 +1,6 @@
+{
+ // 閰嶇疆鏂囦欢灏藉彲鑳藉啓鍦�/host/appsettings.json鎴栨暟鎹簱涓紝閬垮厤鎻掍欢鍗囩骇鏃惰瑕嗙洊
+ "IHIAWmsExternalApi": {
+ "HttpHost": "http://127.0.0.1:18000/" // External API瀵规帴鍦板潃
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/stylecop.json" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/stylecop.json"
new file mode 100644
index 0000000..eee4e5c
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/stylecop.json"
@@ -0,0 +1,31 @@
+{
+ "$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json",
+ "settings": {
+ "orderingRules": {
+ "systemUsingDirectivesFirst": false,
+ "usingDirectivesPlacement": "outsideNamespace",
+ "blankLinesBetweenUsingGroups": "omit"
+ },
+ "namingRules": {
+ "allowCommonHungarianPrefixes": false,
+ "allowedNamespaceComponents": [
+ "iOS"
+ ],
+ "includeInferredTupleElementNames": true
+ },
+ "maintainabilityRules": {
+ "topLevelTypes": [
+ "class",
+ "interface",
+ "struct"
+ ]
+ },
+ "layoutRules": {
+ "newlineAtEndOfFile": "require"
+ },
+ "documentationRules": {
+ "companyName": "骞垮窞鐩涘師鎴愮鎶�鏈夐檺鍏徃",
+ "copyrightText": "Copyright (c) {companyName}. All rights reserved."
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.Application.Tests/CMS.Plugin.HIAWms.Application.Tests.csproj" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.Application.Tests/CMS.Plugin.HIAWms.Application.Tests.csproj"
new file mode 100644
index 0000000..135f97a
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.Application.Tests/CMS.Plugin.HIAWms.Application.Tests.csproj"
@@ -0,0 +1,17 @@
+<Project Sdk="Microsoft.NET.Sdk">
+ <Import Project="../../common.test.props" />
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\..\src\CMS.Plugin.HIAWms.Application\CMS.Plugin.HIAWms.Application.csproj" />
+ <ProjectReference Include="..\CMS.Plugin.HIAWms.Domain.Tests\CMS.Plugin.HIAWms.Domain.Tests.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.Application.Tests/HIAWmsApplicationTestBase.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.Application.Tests/HIAWmsApplicationTestBase.cs"
new file mode 100644
index 0000000..905c958
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.Application.Tests/HIAWmsApplicationTestBase.cs"
@@ -0,0 +1,38 @@
+using CMS.Plugin.HIAWms.EntityFrameworkCore;
+using CMS.Plugin.HIAWms.MySQL;
+using CMS.Plugin.HIAWms.TestBase;
+
+namespace CMS.Plugin.HIAWms.Application.Tests
+{
+ /// <summary>
+ /// HIAWmsApplicationTestBase
+ /// </summary>
+ public class HIAWmsApplicationTestBase : HIAWmsTestBase<HIAWmsApplicationTestModule>
+ {
+ /// <summary>
+ /// UsingDbContext
+ /// </summary>
+ /// <param name="action">IHIAWmsDbContext</param>
+ protected virtual void UsingDbContext(Action<CMSPluginDbContext> action)
+ {
+ using (var dbContext = GetRequiredService<CMSPluginDbContext>())
+ {
+ action.Invoke(dbContext);
+ }
+ }
+
+ /// <summary>
+ /// UsingDbContext
+ /// </summary>
+ /// <typeparam name="T">T</typeparam>
+ /// <param name="action">IHIAWmsDbContext</param>
+ /// <returns>T</returns>
+ protected virtual T UsingDbContext<T>(Func<CMSPluginDbContext, T> action)
+ {
+ using (var dbContext = GetRequiredService<CMSPluginDbContext>())
+ {
+ return action.Invoke(dbContext);
+ }
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.Application.Tests/HIAWmsApplicationTestModule.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.Application.Tests/HIAWmsApplicationTestModule.cs"
new file mode 100644
index 0000000..2cd5ae3
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.Application.Tests/HIAWmsApplicationTestModule.cs"
@@ -0,0 +1,19 @@
+using CMS.Plugin.HIAWms.Domain.Tests;
+using Volo.Abp.Modularity;
+
+namespace CMS.Plugin.HIAWms.Application.Tests
+{
+ /// <summary>
+ /// HIAWmsApplicationTestModule
+ /// </summary>
+ [DependsOn(
+ typeof(CMSPluginApplicationModule),
+ typeof(HIAWmsDomainTestModule))]
+ public class HIAWmsApplicationTestModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ base.ConfigureServices(context);
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.Domain.Tests/CMS.Plugin.HIAWms.Domain.Tests.csproj" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.Domain.Tests/CMS.Plugin.HIAWms.Domain.Tests.csproj"
new file mode 100644
index 0000000..818d8b4
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.Domain.Tests/CMS.Plugin.HIAWms.Domain.Tests.csproj"
@@ -0,0 +1,16 @@
+<Project Sdk="Microsoft.NET.Sdk">
+ <Import Project="../../common.test.props" />
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(MicrosoftNETTestSdkPackageVersion)" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\CMS.Plugin.HIAWms.EntityFrameworkCore.Tests\CMS.Plugin.HIAWms.EntityFrameworkCore.Tests.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.Domain.Tests/HIAWmsDomainTestBase.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.Domain.Tests/HIAWmsDomainTestBase.cs"
new file mode 100644
index 0000000..6de6ac6
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.Domain.Tests/HIAWmsDomainTestBase.cs"
@@ -0,0 +1,38 @@
+using CMS.Plugin.HIAWms.EntityFrameworkCore;
+using CMS.Plugin.HIAWms.MySQL;
+using CMS.Plugin.HIAWms.TestBase;
+
+namespace CMS.Plugin.HIAWms.Domain.Tests
+{
+ /// <summary>
+ /// HIAWms DomainTestBase
+ /// </summary>
+ public class HIAWmsDomainTestBase : HIAWmsTestBase<HIAWmsDomainTestModule>
+ {
+ /// <summary>
+ /// UsingDbContext
+ /// </summary>
+ /// <param name="action">IHIAWmsDbContext</param>
+ protected virtual void UsingDbContext(Action<CMSPluginDbContext> action)
+ {
+ using (var dbContext = GetRequiredService<CMSPluginDbContext>())
+ {
+ action.Invoke(dbContext);
+ }
+ }
+
+ /// <summary>
+ /// UsingDbContext
+ /// </summary>
+ /// <typeparam name="T">T</typeparam>
+ /// <param name="action">IHIAWmsDbContext</param>
+ /// <returns>T</returns>
+ protected virtual T UsingDbContext<T>(Func<CMSPluginDbContext, T> action)
+ {
+ using (var dbContext = GetRequiredService<CMSPluginDbContext>())
+ {
+ return action.Invoke(dbContext);
+ }
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.Domain.Tests/HIAWmsDomainTestModule.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.Domain.Tests/HIAWmsDomainTestModule.cs"
new file mode 100644
index 0000000..c30453c
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.Domain.Tests/HIAWmsDomainTestModule.cs"
@@ -0,0 +1,13 @@
+using CMS.Plugin.HIAWms.EntityFrameworkCore.Tests;
+using Volo.Abp.Modularity;
+
+namespace CMS.Plugin.HIAWms.Domain.Tests
+{
+ /// <summary>
+ /// HIAWms DomainTestModule
+ /// </summary>
+ [DependsOn(typeof(HIAWmsTestEntityFrameworkCoreModule))]
+ public class HIAWmsDomainTestModule : AbpModule
+ {
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests.csproj" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests.csproj"
new file mode 100644
index 0000000..cc0f355
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests.csproj"
@@ -0,0 +1,25 @@
+<Project Sdk="Microsoft.NET.Sdk">
+ <Import Project="../../common.test.props" />
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Volo.Abp.EntityFrameworkCore" Version="$(ABPPackageVersion)" />
+ <PackageReference Include="Volo.Abp.EntityFrameworkCore.Sqlite" Version="$(ABPPackageVersion)" />
+ <PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(MicrosoftNETTestSdkPackageVersion)" />
+ <PackageReference Include="NSubstitute" Version="$(NSubstitutePackageVersion)" />
+ <PackageReference Include="Shouldly" Version="$(ShouldlyPackageVersion)" />
+ <PackageReference Include="xunit" Version="$(xUnitPackageVersion)" />
+ <PackageReference Include="xunit.extensibility.execution" Version="$(xUnitExtensibilityExecutionPackageVersion)" />
+ <PackageReference Include="xunit.runner.visualstudio" Version="$(xUnitRunnerVisualstudioPackageVersion)" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\..\src\CMS.Plugin.HIAWms.EntityFrameworkCore\CMS.Plugin.HIAWms.EntityFrameworkCore.csproj" />
+ <ProjectReference Include="..\..\src\CMS.Plugin.HIAWms.MySQL\CMS.Plugin.HIAWms.MySQL.csproj" />
+ <ProjectReference Include="..\CMS.Plugin.HIAWms.TestBase\CMS.Plugin.HIAWms.TestBase.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests/HIAWmsEntityFrameworkTestBase.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests/HIAWmsEntityFrameworkTestBase.cs"
new file mode 100644
index 0000000..0710158
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests/HIAWmsEntityFrameworkTestBase.cs"
@@ -0,0 +1,11 @@
+using CMS.Plugin.HIAWms.TestBase;
+
+namespace CMS.Plugin.HIAWms.EntityFrameworkCore.Tests
+{
+ /// <summary>
+ /// MyProjectName TestBase
+ /// </summary>
+ public class HIAWmsEntityFrameworkTestBase : HIAWmsTestBase<HIAWmsTestEntityFrameworkCoreModule>
+ {
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests/HIAWmsTestEntityFrameworkCoreModule.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests/HIAWmsTestEntityFrameworkCoreModule.cs"
new file mode 100644
index 0000000..58110e3
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests/HIAWmsTestEntityFrameworkCoreModule.cs"
@@ -0,0 +1,50 @@
+using CMS.Plugin.HIAWms.MySQL;
+using CMS.Plugin.HIAWms.TestBase;
+using Microsoft.Data.Sqlite;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Storage;
+using Volo.Abp.EntityFrameworkCore;
+using Volo.Abp.EntityFrameworkCore.Sqlite;
+using Volo.Abp.Modularity;
+
+namespace CMS.Plugin.HIAWms.EntityFrameworkCore.Tests
+{
+ /// <summary>
+ /// MyProjectName TestEntityFrameworkCoreModule
+ /// </summary>
+ [DependsOn(
+ typeof(HIAWmsTestBaseModule),
+ typeof(CMSPluginEntityFrameworkCoreModule),
+ typeof(AbpEntityFrameworkCoreSqliteModule))]
+ public class HIAWmsTestEntityFrameworkCoreModule : AbpModule
+ {
+ /// <summary>
+ /// ConfigureServices
+ /// </summary>
+ /// <param name="context">ServiceConfigurationContext</param>
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ var sqliteConnection = CreateDatabaseAndGetConnection();
+
+ Configure<AbpDbContextOptions>(options =>
+ {
+ options.Configure(dbContextConfigurationContext =>
+ {
+ dbContextConfigurationContext.DbContextOptions.UseSqlite(sqliteConnection);
+ });
+ });
+ }
+
+ private static SqliteConnection CreateDatabaseAndGetConnection()
+ {
+ var connection = new SqliteConnection("Data Source=:memory:");
+ connection.Open();
+
+ new CMSPluginDbContext(
+ new DbContextOptionsBuilder<CMSPluginDbContext>().UseSqlite(connection).Options).GetService<IRelationalDatabaseCreator>().CreateTables();
+
+ return connection;
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/CMS.Plugin.HIAWms.TestBase.csproj" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/CMS.Plugin.HIAWms.TestBase.csproj"
new file mode 100644
index 0000000..09c6f4d
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/CMS.Plugin.HIAWms.TestBase.csproj"
@@ -0,0 +1,23 @@
+<Project Sdk="Microsoft.NET.Sdk">
+ <Import Project="../../common.test.props" />
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Volo.Abp.Autofac" Version="$(ABPPackageVersion)" />
+ <PackageReference Include="Volo.Abp.TestBase" Version="$(ABPPackageVersion)" />
+ <PackageReference Include="Volo.Abp.Authorization" Version="$(ABPPackageVersion)" />
+ <PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(MicrosoftNETTestSdkPackageVersion)" />
+ <PackageReference Include="NSubstitute" Version="$(NSubstitutePackageVersion)" />
+ <PackageReference Include="Shouldly" Version="$(ShouldlyPackageVersion)" />
+ <PackageReference Include="xunit" Version="$(xUnitPackageVersion)" />
+ <PackageReference Include="xunit.extensibility.execution" Version="$(xUnitExtensibilityExecutionPackageVersion)" />
+ <PackageReference Include="xunit.runner.visualstudio" Version="$(xUnitRunnerVisualstudioPackageVersion)" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\..\src\CMS.Plugin.HIAWms.Domain\CMS.Plugin.HIAWms.Domain.csproj" />
+ </ItemGroup>
+</Project>
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsDataSeedContributor.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsDataSeedContributor.cs"
new file mode 100644
index 0000000..ee1e764
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsDataSeedContributor.cs"
@@ -0,0 +1,35 @@
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.Data;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Guids;
+
+namespace CMS.Plugin.HIAWms.TestBase
+{
+ /// <summary>
+ /// MyProjectName DataSeedContributor
+ /// </summary>
+ public class HIAWmsDataSeedContributor : IDataSeedContributor, ITransientDependency
+ {
+ private readonly HIAWmsTestData _myProjectNameTestData;
+ private readonly IGuidGenerator _guidGenerator;
+ /// <summary>
+ /// Initializes a new instance of the <see cref="HIAWmsDataSeedContributor"/> class.
+ /// </summary>
+ /// <param name="serviceProvider">IServiceProvider</param>
+ public HIAWmsDataSeedContributor(IServiceProvider serviceProvider)
+ {
+ _myProjectNameTestData = serviceProvider.GetRequiredService<HIAWmsTestData>();
+ _guidGenerator = serviceProvider.GetRequiredService<IGuidGenerator>();
+ }
+
+ /// <summary>
+ /// SeedAsync
+ /// </summary>
+ /// <param name="context">DataSeedContext</param>
+ /// <returns>Task</returns>
+ public async Task SeedAsync(DataSeedContext context)
+ {
+ await Task.CompletedTask;
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsTestBase.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsTestBase.cs"
new file mode 100644
index 0000000..5c3b85e
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsTestBase.cs"
@@ -0,0 +1,89 @@
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp;
+using Volo.Abp.Modularity;
+using Volo.Abp.Testing;
+using Volo.Abp.Uow;
+
+namespace CMS.Plugin.HIAWms.TestBase
+{
+ /// <summary>
+ /// MyProjectName TestBase
+ /// </summary>
+ /// <typeparam name="TStartupModule">IAbpModule</typeparam>
+ public class HIAWmsTestBase<TStartupModule> : AbpIntegratedTest<TStartupModule>
+ where TStartupModule : IAbpModule
+ {
+ /// <summary>
+ /// SetAbpApplicationCreationOptions
+ /// </summary>
+ /// <param name="options">AbpApplicationCreationOptions</param>
+ protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options)
+ {
+ options.UseAutofac();
+ }
+
+ /// <summary>
+ /// WithUnitOfWorkAsync
+ /// </summary>
+ /// <param name="func">func</param>
+ /// <returns>Task</returns>
+ protected virtual Task WithUnitOfWorkAsync(Func<Task> func)
+ {
+ return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func);
+ }
+
+ /// <summary>
+ /// WithUnitOfWorkAsync
+ /// </summary>
+ /// <param name="options">AbpUnitOfWorkOptions</param>
+ /// <param name="action">action</param>
+ /// <returns>Task</returns>
+ protected virtual async Task WithUnitOfWorkAsync(AbpUnitOfWorkOptions options, Func<Task> action)
+ {
+ using (var scope = ServiceProvider.CreateScope())
+ {
+ var uowManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
+
+ using (var uow = uowManager.Begin(options))
+ {
+ await action();
+
+ await uow.CompleteAsync();
+ }
+ }
+ }
+
+ /// <summary>
+ /// WithUnitOfWorkAsync
+ /// </summary>
+ /// <typeparam name="TResult">t</typeparam>
+ /// <param name="func">TResult</param>
+ /// <returns>TResult</returns>
+ protected virtual Task<TResult> WithUnitOfWorkAsync<TResult>(Func<Task<TResult>> func)
+ {
+ return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func);
+ }
+
+ /// <summary>
+ /// WithUnitOfWorkAsync
+ /// </summary>
+ /// <typeparam name="TResult">T</typeparam>
+ /// <param name="options">AbpUnitOfWorkOptions</param>
+ /// <param name="func">Func</param>
+ /// <returns>TResult</returns>
+ protected virtual async Task<TResult> WithUnitOfWorkAsync<TResult>(AbpUnitOfWorkOptions options, Func<Task<TResult>> func)
+ {
+ using (var scope = ServiceProvider.CreateScope())
+ {
+ var uowManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
+
+ using (var uow = uowManager.Begin(options))
+ {
+ var result = await func();
+ await uow.CompleteAsync();
+ return result;
+ }
+ }
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsTestBaseModule.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsTestBaseModule.cs"
new file mode 100644
index 0000000..1668a69
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsTestBaseModule.cs"
@@ -0,0 +1,63 @@
+using CMS.Plugin.HIAWms.Domain;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp;
+using Volo.Abp.Autofac;
+using Volo.Abp.Data;
+using Volo.Abp.Modularity;
+using Volo.Abp.Threading;
+using Volo.Abp.Uow;
+
+namespace CMS.Plugin.HIAWms.TestBase
+{
+ /// <summary>
+ /// MyProjectName TestBaseModule
+ /// </summary>
+ [DependsOn(
+ typeof(AbpAutofacModule),
+ typeof(AbpTestBaseModule),
+ typeof(CMSPluginDomainModule))]
+ public class HIAWmsTestBaseModule : AbpModule
+ {
+ /// <summary>
+ /// PreConfigureServices
+ /// </summary>
+ /// <param name="context">ServiceConfigurationContext</param>
+ public override void PreConfigureServices(ServiceConfigurationContext context)
+ {
+ }
+
+ /// <summary>
+ /// ConfigureServices
+ /// </summary>
+ /// <param name="context">ServiceConfigurationContext</param>
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ context.Services.AddAlwaysAllowAuthorization();
+ Configure<AbpUnitOfWorkDefaultOptions>(options =>
+ {
+ options.TransactionBehavior = UnitOfWorkTransactionBehavior.Enabled;
+ });
+ }
+
+ /// <summary>
+ /// OnApplicationInitialization
+ /// </summary>
+ /// <param name="context">ApplicationInitializationContext</param>
+ public override void OnApplicationInitialization(ApplicationInitializationContext context)
+ {
+ SeedTestData(context);
+ }
+
+ private static void SeedTestData(ApplicationInitializationContext context)
+ {
+ AsyncHelper.RunSync(async () =>
+ {
+ using (var scope = context.ServiceProvider.CreateScope())
+ {
+ var dataSeeder = scope.ServiceProvider.GetRequiredService<IDataSeeder>();
+ await dataSeeder.SeedAsync();
+ }
+ });
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsTestData.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsTestData.cs"
new file mode 100644
index 0000000..1aaaf18
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsTestData.cs"
@@ -0,0 +1,8 @@
+using Volo.Abp.DependencyInjection;
+
+namespace CMS.Plugin.HIAWms.TestBase
+{
+ public class HIAWmsTestData : ISingletonDependency
+ {
+ }
+}
--
Gitblit v1.9.3