zs
2025-05-05 25750ab29ce4e243f4e4e17a796167f3a0f0697b
Merge branch 'master' of http://222.71.245.114:9086/r/HIA24016N_PipeLineDemo
已添加670个文件
已修改16个文件
569490 ■■■■■ 文件已修改
Weben_CMS专用代码生成器/Code/App.config 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Const/SystemConst.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/DataBaseFactory/Default/MySqlDataBaseServiceHandle.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/AppService/AppService_Generate.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/AppService/IAppService_Generate.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/Controller/Controller_Generate.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/Entity/AddModel_Generate.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/Entity/CreateDto_Generate.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/Entity/CreateOrUpdateDtoBase_Generate.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/Entity/Dto_Generate.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/Entity/ExportModel_Generate.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/Entity/ImportModel_Generate.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/Entity/InputModel_Generate.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/Entity/UpdateDto_Generate.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/GenerateCode_WeiBen_CMS.csproj 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/MainForm.Designer.cs 306 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/MainForm.cs 149 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Model/Enum/DataTypeEnum.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Model/GenerateCodeParam.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Model/SystemCommonVar.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/AppService/AppService模板.txt 393 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/AppService/IAppService模板.txt 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Controller模板.txt 364 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Entity/CreateDto模板.txt 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Entity/CreateOrUpdateDtoBase模板.txt 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Entity/Dto模板.txt 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Entity/ExportModel模板.txt 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Entity/ImportModel模板.txt 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Entity/InputQueryModel模板.txt 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Entity/UpdateDto模板.txt 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Utility/CommonHelper.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Utility/ListHelper.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Utility/StructStrHelper.cs 309 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Utility/TextHelper.cs 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/常用.txt 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/CommonDLL/CmsQueryExtensions.dll 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/build-server.ps1 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/build-web.ps1 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/CmsQueryExtensions.csproj 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/CmsQueryExtensions.sln 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Extension/DynamicSearchParameters/Attribute/HighSearchRangeAttribute.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Extension/DynamicSearchParameters/Attribute/NoAutoQueryAttribute.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Extension/DynamicSearchParameters/Entity/FunReturnResultModel.cs 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Extension/DynamicSearchParameters/Entity/GlobalVars.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Extension/DynamicSearchParameters/Entity/HighSearchModel.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Extension/DynamicSearchParameters/Entity/SearchFilterModeEnum.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Extension/DynamicSearchParameters/PredicateExtensions/ClassHelper.cs 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Extension/DynamicSearchParameters/PredicateExtensions/PredicateExtensions.cs 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Extension/DynamicSearchParameters/PredicateExtensions/WhereHelper.cs 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Extension/DynamicSearchParameters/WhereConditionsExtensions.cs 248 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/.idea/.idea.CMS.Plugin.HIAWms/.idea/encodings.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/.idea/.idea.CMS.Plugin.HIAWms/.idea/indexLayout.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/.idea/.idea.CMS.Plugin.HIAWms/.idea/vcs.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/CMS.Plugin.TemplateDemo.sln 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/Directory.Build.props 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/NuGet.config 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/README.md 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/common.props 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/common.test.props 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/configureawait.props 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/delete-bin-obj-folders.bat 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/doc/Domain-Drive-Design.md 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/package.reference.props 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/publish.ps1 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Abstractions/CMS.Plugin.HIAWms.Abstractions.csproj 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsAbstractionsModule.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsExtensions.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsFeatures.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsOptions.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsSettings.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Abstractions/FodyWeavers.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Abstractions/HIAWmsActivity.cs 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Abstractions/IHIAWmsFlowService.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Abstractions/Properties/AssemblyInfo.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/CMS.Plugin.HIAWms.Application.Contracts.csproj 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/CMSPluginApplicationContractsModule.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/CMSPluginDtoExtensions.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/GetWmsAreasInput.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaCreateDto.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaCreateOrUpdateDtoBase.cs 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaDto.cs 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaUpdateDto.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreasExportModel.cs 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreasImportModel.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/GetWmsContainersInput.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerCreateDto.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerCreateOrUpdateDtoBase.cs 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerDto.cs 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerUpdateDto.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainersExportModel.cs 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainersImportModel.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsEnumDto/WmsEnumInput.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/GetWmsMaterialInput.cs 311 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateDto.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateOrUpdateDtoBase.cs 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialDto.cs 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialExportModel.cs 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialUpdateDto.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialsImportModel.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/GetWmsPlacesInput.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceCreateDto.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceCreateOrUpdateDtoBase.cs 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceDto.cs 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceUpdateDto.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlacesExportModel.cs 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlacesImportModel.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/GetWmsStoresInput.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreCreateDto.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreCreateOrUpdateDtoBase.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreDto.cs 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreUpdateDto.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoresExportModel.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoresImportModel.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/FodyWeavers.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/ICMSPluginQueryAppService.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsAreaAppService.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsContainerAppService.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsEnumAppService.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsMaterialAppService.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsPlaceAppService.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsStoreAppService.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/CMS.Plugin.HIAWms.Application.csproj 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/CMSPluginAppService.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/CMSPluginApplicationModule.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/CMSPluginQueryAppService.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/FodyWeavers.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsAreaAppService.cs 324 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsContainerAppService.cs 336 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsEnumAppService.cs 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs 432 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsPlaceAppService.cs 322 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsStoreAppService.cs 313 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsAreaAutoMapperProfile.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsContainerAutoMapperProfile.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsMaterialAutoMapperProfile.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsPlaceAutoMapperProfile.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsStoreAutoMapperProfile.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/Properties/AssemblyInfo.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/CMS.Plugin.HIAWms.Domain.Shared.csproj 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/CMSPluginDomainErrorCodes.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/CMSPluginDomainSharedModule.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/CMSPluginModuleExtensionConfigurator.cs 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/AreaStatusEnum.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/AreaTypeEnum.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/ContainerStatusEnum.cs 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/ContainerTypeEnum.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/HIAWmsStatus.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/MaterialTypeEnum.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PlaceStatusEnum.cs 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PlaceTypeEnum.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PurchaseTypeEnum.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/YesNoEnum.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/FodyWeavers.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Localization/HIAWms/en.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Localization/HIAWms/zh-Hans.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Localization/HIAWmsResource.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Util/EnumHelper.cs 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Util/ExportHelper.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Util/GetEnumDescriptionUtil.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsAreas/WmsAreaConsts.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsAreas/WmsAreaEto.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsContainers/WmsContainerConsts.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsContainers/WmsContainerEto.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterials/WmsMaterialConsts.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterials/WmsMaterialEto.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsPlaces/WmsPlaceConsts.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsPlaces/WmsPlaceEto.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsStores/WmsStoreConsts.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsStores/WmsStoreEto.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/CMS.Plugin.HIAWms.Domain.csproj 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/CMSPluginDbProperties.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/CMSPluginDomainModule.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/Data/CMSPluginDbMigrationService.cs 211 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/Data/ICMSPluginDapperRepository.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/Data/ICMSPluginDbSchemaMigrator.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/Data/NullCMSPluginDbSchemaMigrator.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsAreaEventHandler.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsContainerEventHandler.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsMaterialEventHandler.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsPlaceEventHandler.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsStoreEventHandler.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/FodyWeavers.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/Properties/AssemblyInfo.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/Settings/CMSPluginSettingDefinitionProvider.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsAreas/IWmsAreaRepository.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsAreas/WmsArea.cs 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsAreas/WmsAreaDataSeedContributor.cs 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsAreas/WmsAreaSpecification.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsContainers/IWmsContainerRepository.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsContainers/WmsContainer.cs 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsContainers/WmsContainerDataSeedContributor.cs 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsContainers/WmsContainerSpecification.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/IWmsMaterialRepository.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterial.cs 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterialDataSeedContributor.cs 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterialSpecification.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/IWmsPlaceRepository.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/WmsPlace.cs 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/WmsPlaceDataSeedContributor.cs 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/WmsPlaceSpecification.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsStores/IWmsStoreRepository.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsStores/WmsStore.cs 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsStores/WmsStoreDataSeedContributor.cs 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsStores/WmsStoreSpecification.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMS.Plugin.HIAWms.EntityFrameworkCore.csproj 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginDapperRepository.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginDbSchemaMigrator.cs 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginEfCoreEntityExtensionMappings.cs 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginEntityFrameworkCoreModule.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsArea.cs 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsContainer.cs 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsPlace.cs 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsStore.cs 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/FodyWeavers.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/ICMSPluginDbContext.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Properties/AssemblyInfo.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsAreaRepository.cs 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsContainerRepository.cs 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialRepository.cs 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsPlaceRepository.cs 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsStoreRepository.cs 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/appsettings.json 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.MySQL/CMS.Plugin.HIAWms.MySQL.csproj 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.MySQL/CMSPluginDbContext.cs 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.MySQL/CMSPluginDbContextFactory.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.MySQL/CMSPluginMySQLModule.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.MySQL/FodyWeavers.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250429025531_InitialCreate.Designer.cs 675 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250429025531_InitialCreate.cs 333 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250430035549_InitialCreate1.Designer.cs 675 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250430035549_InitialCreate1.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs 673 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.MySQL/Properties/AssemblyInfo.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.MySQL/Scripts/UpdateDB.bat 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.MySQL/Scripts/UpdateMigrations.bat 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.PostgreSql/CMS.Plugin.HIAWms.PostgreSql.csproj 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginDbContext.cs 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginDbContextFactory.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginPostgreSqlModule.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.PostgreSql/FodyWeavers.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.PostgreSql/Properties/AssemblyInfo.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.PostgreSql/Scripts/UpdateDB.bat 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.PostgreSql/Scripts/UpdateMigrations.bat 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.SqlServer/CMS.Plugin.HIAWms.SqlServer.csproj 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginDbContext.cs 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginDbContextFactory.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginSqlServerModule.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.SqlServer/FodyWeavers.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.SqlServer/Properties/AssemblyInfo.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.SqlServer/Scripts/UpdateDB.bat 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.SqlServer/Scripts/UpdateMigrations.bat 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Apis/IHIAWmsExternalApi.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/CMS.Plugin.HIAWms.csproj 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/CMSPluginEntry.cs 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/CMSPluginModule.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/CMSPluginRuntimeMigrator.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Controller/WmsAreaController.cs 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Controller/WmsContainerController.cs 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Controller/WmsEnumController.cs 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Controller/WmsMaterialController.cs 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Controller/WmsPlaceController.cs 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Controller/WmsStoreController.cs 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/EventHandlers/HIAWmsEventHandler.cs 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/FlowProcessors/HIAWmsFlowProcessor.cs 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Flows/50001_1.pfd 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Flows/FlowInfo.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/FodyWeavers.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Jobs/HIAWmsArgs.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Jobs/HIAWmsJob.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/ProjectService/HIAWmsProjectService.cs 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Properties/launchSettings.json 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsArea导出模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsContainer导出模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterial导出模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsPlace导出模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsStore导出模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Services/HIAWmsFlowService.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Workers/HIAWmsWorker.cs 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/appsettings.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/stylecop.json 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/test/CMS.Plugin.HIAWms.Application.Tests/CMS.Plugin.HIAWms.Application.Tests.csproj 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/test/CMS.Plugin.HIAWms.Application.Tests/HIAWmsApplicationTestBase.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/test/CMS.Plugin.HIAWms.Application.Tests/HIAWmsApplicationTestModule.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/test/CMS.Plugin.HIAWms.Domain.Tests/CMS.Plugin.HIAWms.Domain.Tests.csproj 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/test/CMS.Plugin.HIAWms.Domain.Tests/HIAWmsDomainTestBase.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/test/CMS.Plugin.HIAWms.Domain.Tests/HIAWmsDomainTestModule.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/test/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests.csproj 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/test/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests/HIAWmsEntityFrameworkTestBase.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/test/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests/HIAWmsTestEntityFrameworkCoreModule.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/test/CMS.Plugin.HIAWms.TestBase/CMS.Plugin.HIAWms.TestBase.csproj 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/test/CMS.Plugin.HIAWms.TestBase/HIAWmsDataSeedContributor.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/test/CMS.Plugin.HIAWms.TestBase/HIAWmsTestBase.cs 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/test/CMS.Plugin.HIAWms.TestBase/HIAWmsTestBaseModule.cs 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/test/CMS.Plugin.HIAWms.TestBase/HIAWmsTestData.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/.build.local 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/.env 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/.env.development 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/.env.production 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/.eslintrc.cjs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/.prettierrc.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/.vscode/extensions.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/.vscode/settings.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/README.md 228 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Controllers/File.ts 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Controllers/MyEntityName.ts 262 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Controllers/MyEntityNameDrawer.ts 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Models/MyEntityName.ts 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Models/MyEntityNameDrawer.ts 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Models/Service/MyEntityName.ts 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Models/Service/MyEntityNameDrawer.ts 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Views/MyPluginName.module.scss 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Views/MyPluginName.tsx 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Views/Pages/Dialog/MyEntityNameDrawer/MyEntityNameDrawer.module.scss 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Views/Pages/Dialog/MyEntityNameDrawer/MyEntityNameDrawer.tsx 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Views/Pages/MyEntityName/Config.ts 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Views/Pages/MyEntityName/MyEntityName.module.scss 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Views/Pages/MyEntityName/MyEntityName.tsx 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Views/config/MyEntityName.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/enum.ts 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/index.ts 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/type/Type.d.ts 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/components.d.ts 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/env.d.ts 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/index.html 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/main.ts 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/package-lock.json 38285 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/package.json 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/config.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/defaulttheme.css 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/favicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/language/Common.en-US.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/language/language.en-US.json 215 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/language/language.zh-CN.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/svgpngbacktheme.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/svgpngwhitetheme.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/theme.css 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/widgets/mock.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/widgets/mock/index.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/对theme.css的说明 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/script/autoMenu.js 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/script/build.js 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/script/plugins/vite-plugin-cs-module-filter.ts 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/script/plugins/vite-plugin-widget-provider.ts 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/App.vue 290 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/api/file.ts 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/api/index.ts 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/api/project-api.ts 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/iconfont/demo.css 539 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/iconfont/demo_index.html 9598 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/iconfont/iconfont.css 1654 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/iconfont/iconfont.eot 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/iconfont/iconfont.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/iconfont/iconfont.json 2872 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/iconfont/iconfont.svg 837 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/iconfont/iconfont.ttf 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/iconfont/iconfont.woff 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/iconfont/iconfont.woff2 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/+.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/X.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/add-annex.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/add-p.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/banben.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/batch-b.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/batch-list.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/chart.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/close.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/closeDark.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/close_x.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/copy.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/d.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/del.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/delete.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/down.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/drawer_bg.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/edit.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/export.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/f.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/fb.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/fj.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/fnV.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/g.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/gongyiduan.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon-module.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon_add.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon_add2.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon_del.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon_exclamation.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon_move.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon_next.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon_nodata.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon_pre.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon_process.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon_search.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/import.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/in.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/left-arrow.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/lightsetting.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/o.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/out.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/pdf.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/pre_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/procedure-direction.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/process.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/processStep1.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/processStep2.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/processStep3.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/processStep4.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/refresh.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/right-arrow.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/s.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/s_input.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/scale-menu.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/scale.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/search.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/setting.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/settings.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/sop.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/sys.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/tag_close.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/tip.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/up.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/variable.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/view.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/white_search.png 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/styles/common.scss 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/styles/element.scss 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/styles/index.scss 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/add.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/add1.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/barcode.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/bianji.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/bom.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/del.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/del1.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/f.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/field.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/flow.svg 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/materialManagement.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/more.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/move.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/order.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/p.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/peifangguanli.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/processConfiguration.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/prod.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/q.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/system.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/t.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/tip.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/title.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/cms/index.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/cms/sdk.es.js 460215 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/cms/sdk.es.ssr.js 1763 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseConfigSelect/BaseConfigSelect.module.scss 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseConfigSelect/BaseConfigSelect.tsx 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseContent/BaseContent.module.scss 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseContent/BaseContent.tsx 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseDialog/BaseDialog.scss 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseDialog/BaseDialog.tsx 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseDialog/index.vue 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseDrawer/BaseDrawer.module.scss 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseDrawer/BaseDrawer.tsx 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseInput/BaseInput.module.scss 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseInput/BaseInput.tsx 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseQueryDrawer/BaseQueryDrawer.module.scss 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseQueryDrawer/BaseQueryDrawer.tsx 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/ConfirmBox/ConfirmBox.module.scss 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/ConfirmBox/ConfirmBox.tsx 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Container/Container.module.scss 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Container/Container.tsx 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Content/Content.module.scss 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Content/Content.tsx 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/DatePicker/PrefixIcon.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/DatePicker/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/DateTimePickRange/DateTimePickRange.module.scss 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/DateTimePickRange/DateTimePickRange.tsx 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Dialog/index.vue 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/DyForm/DyForm.d.ts 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/DyForm/DyForm.module.scss 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/DyForm/DyForm.tsx 200 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/ElSelect/ElOption.tsx 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/ElSelect/ElSelect.tsx 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/ElSelect/index.scss 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Empty/Empty.module.scss 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Empty/Empty.tsx 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Flow/Flow.module.scss 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Flow/Flow.tsx 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Icon/Icon.tsx 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/IconButton/IconButton.module.scss 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/IconButton/IconButton.tsx 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Menu/index.vue 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/MyPages/index.vue 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Pdf/index.vue 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/PreviewDialog/index.vue 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/ProjectConfig/ProjectConfig.module.scss 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/ProjectConfig/ProjectConfig.tsx 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Radio/Radio.module.scss 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Radio/Radio.tsx 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Search/Search.module.scss 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Search/Search.tsx 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/SearchInput/SearchInput.module.scss 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/SearchInput/SearchInput.tsx 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Select/Option.tsx 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Select/Select.tsx 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/SelectInput/SelectInput.module.scss 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/SelectInput/SelectInput.tsx 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Setting/Setting.tsx 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/SettingItem/SettingItem.vue 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/SettingItem/state.ts 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Tab/Tab.module.scss 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Tab/Tab.tsx 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Tab/TabPane.tsx 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Table/Readme.md 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Table/Table.tsx 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Table/api.ts 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Table/components/custom-vxe-column.vue 555 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Table/components/pagination.vue 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Table/index.d.ts 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Table/index.module.scss 241 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Table/index.scss 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Table/index.vue 680 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Table/state.ts 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/TableFilter/TableFilter.module.scss 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/TableFilter/TableFilter.tsx 337 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Tag/Tag.module.scss 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Tag/Tag.tsx 344 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/TdButton/TdButton.module.scss 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/TdButton/TdButton.tsx 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Text/Text.module.scss 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Text/Text.tsx 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Title/Title.module.scss 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Title/Title.tsx 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/TouchScale/index.vue 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Upload/index.vue 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Variable/Variable.module.scss 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Variable/Variable.tsx 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextMenu.scss 518 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextMenu.vue 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextMenuDefine.ts 401 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextMenuGroup.vue 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextMenuIconCheck.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextMenuIconRight.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextMenuInstance.ts 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextMenuItem.vue 380 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextMenuMutex.ts 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextMenuSeparator.vue 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextMenuUtils.ts 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextSubMenu.vue 555 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextSubMenuWrapper.vue 326 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/MenuBar.scss 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/MenuBar.ts 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/MenuBar.vue 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/MenuBarIconMenu.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/env.d.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/index.ts 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/shims-vue.d.ts 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/tsconfig.json 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/vite.config.ts 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/config/menu.ts 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/env.d.ts 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/home.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/hooks/hook.ts 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/index.d.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Base/Base.ts 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Create/Create.ts 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Hook/Hook.ts 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Language/Language.ts 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Language/i18n/langEN.ts 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Language/i18n/langTH.ts 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Language/i18n/langZH.ts 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Permission/Permission.d.ts 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Permission/Permission.ts 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Provider/Provider.ts 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Provider/app.ts 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Store/State.ts 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Store/Store.d.ts 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Store/Store.ts 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/enum.ts 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/main.ts 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/plugins/vxe-table.ts 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/provider/index.ts 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/provider/index.vue 252 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/router.ts 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/utils/ElMessage.ts 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/utils/enum/index.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/utils/index.ts 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/utils/permission.js 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/utils/request.ts 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/utils/storage.ts 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Controllers/File.ts 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Controllers/WmsMaterial.ts 275 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.tsx 317 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Controllers/WmsMaterialQueryDrawer.tsx 296 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Models/Service/WmsMaterial.ts 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Models/Service/WmsMaterialDrawer.ts 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Models/Service/WmsMaterialQueryDrawer.ts 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Models/WmsMaterial.ts 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Models/WmsMaterialDrawer.ts 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Models/WmsMaterialQueryDrawer.ts 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/HIAWms.module.scss 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/HIAWms.tsx 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/Pages/Dialog/WmsMaterialDrawer/WmsMaterialDrawer.module.scss 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/Pages/Dialog/WmsMaterialDrawer/WmsMaterialDrawer.tsx 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/Pages/Dialog/WmsMaterialQueryDrawer/WmsMaterialQueryDrawer.module.scss 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/Pages/Dialog/WmsMaterialQueryDrawer/WmsMaterialQueryDrawer.tsx 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/Pages/WmsMaterial/Config.ts 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/Pages/WmsMaterial/WmsMaterial.module.scss 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/Pages/WmsMaterial/WmsMaterial.tsx 321 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/config/WmsMaterial.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/enum.ts 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/index.ts 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/type/Type.d.ts 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/Http/Http.vue 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/Http/Settings/Http.settings.vue 356 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/Http/components/InputCode.vue 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/Http/components/OptionConfigDialog.vue 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/Http/index.ts 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Controllers/File.ts 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Controllers/WmsContainer.ts 258 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Controllers/WmsContainerDrawer.tsx 321 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Models/Service/WmsContainer.ts 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Models/Service/WmsContainerDrawer.ts 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Models/WmsContainer.ts 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Models/WmsContainerDrawer.ts 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Views/Pages/Dialog/WmsContainerDrawer/WmsContainerDrawer.module.scss 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Views/Pages/Dialog/WmsContainerDrawer/WmsContainerDrawer.tsx 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/Config.ts 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.module.scss 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.tsx 318 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Views/WmsContainer.module.scss 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Views/WmsContainer.tsx 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Views/config/WmsContainer.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/enum.ts 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/index.ts 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/type/Type.d.ts 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Controllers/File.ts 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Controllers/WmsArea.ts 258 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Controllers/WmsAreaDrawer.ts 243 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Controllers/WmsPlace.ts 258 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Controllers/WmsPlaceDrawer.ts 236 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Controllers/WmsStore.ts 258 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Controllers/WmsStoreDrawer.ts 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/Service/WmsArea.ts 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/Service/WmsAreaDrawer.ts 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/Service/WmsPlace.ts 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/Service/WmsPlaceDrawer.ts 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/Service/WmsStore.ts 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/Service/WmsStoreDrawer.ts 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/WmsArea.ts 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/WmsAreaDrawer.ts 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/WmsPlace.ts 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/WmsPlaceDrawer.ts 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/WmsStore.ts 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/WmsStoreDrawer.ts 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/Dialog/WmsAreaDrawer/WmsAreaDrawer.module.scss 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/Dialog/WmsAreaDrawer/WmsAreaDrawer.tsx 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/Dialog/WmsPlaceDrawer/WmsPlaceDrawer.module.scss 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/Dialog/WmsPlaceDrawer/WmsPlaceDrawer.tsx 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/Dialog/WmsStoreDrawer/WmsStoreDrawer.module.scss 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/Dialog/WmsStoreDrawer/WmsStoreDrawer.tsx 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/WmsArea/Config.ts 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/WmsArea/WmsArea.module.scss 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/WmsArea/WmsArea.tsx 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/WmsPlace/Config.ts 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/WmsPlace/WmsPlace.module.scss 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/WmsPlace/WmsPlace.tsx 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/WmsStore/Config.ts 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/WmsStore/WmsStore.module.scss 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/WmsStore/WmsStore.tsx 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/WmsStoreInfo.module.scss 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/WmsStoreInfo.tsx 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/config/WmsArea.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/config/WmsPlace.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/config/WmsStore.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/enum.ts 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/index.ts 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/type/Type.d.ts 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/hook.ts 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/index.ts 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/tsconfig.json 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/vite.config.ts 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/vite.lib.config.ts 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/yarn.lock 12361 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/版本说明.txt 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/App.config
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="本地_MySql_CMS" connectionString="Server=localhost;Database=4b25b01c1f7f49d19153de6b0906eafc_project;Uid=root;Pwd=123abc.com;" />
    <add name="本地_MySql_CMS" connectionString="Server=localhost;Database=07a6b2f4bbb04e8bb23a9f17a4a769c2_project;Uid=root;Pwd=123abc.com;" />
    <add name="LA22012_武汉牧野_生产库_伟本环境" connectionString="Data Source=10.10.40.166;Initial Catalog=WHMY_Prod_Test;Persist Security Info=True;User ID=sa;Password=123abc.com" />
    <add name="LA22012_武汉牧野_生产库_26测试环境" connectionString="Data Source=172.27.96.26;Initial Catalog=WHMY_Prod_Test;Persist Security Info=True;User ID=sa;Password=MJC!2022@wms" />
    <add name="LA22012_武汉牧野_备件库_伟本环境" connectionString="Data Source=10.10.40.166;Initial Catalog=WHMY_Admin.NET;Persist Security Info=True;User ID=sa;Password=123abc.com" />
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Const/SystemConst.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GenerateCode_WeiBen_WMS.Const
{
    public class SystemConst
    {
        /// <summary>
        /// æœåŠ¡å±‚çš„æ–‡ä»¶å¤¹åç§°
        /// </summary>
        public const string server_FolerName = @"\server\";
        /// <summary>
        /// å‰ç«¯çš„æ–‡ä»¶å¤¹åç§°
        /// </summary>
        public const string web_FolerName = @"\web\";
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/DataBaseFactory/Default/MySqlDataBaseServiceHandle.cs
@@ -15,7 +15,7 @@
            //string strSql = $"SELECT COLUMN_NAME as ColumnName, COLUMN_TYPE as DataType, IS_NULLABLE as IsNullable, CHARACTER_MAXIMUM_LENGTH as DataLength,COLUMN_COMMENT as Description " +
            //                       $"FROM INFORMATION_SCHEMA.COLUMNS " +
            //                       $"WHERE  TABLE_NAME = '{tableName}'";
            string strSql = $"SELECT c.COLUMN_NAME as ColumnName, c.COLUMN_TYPE as DataType, c.IS_NULLABLE as IsNullable, c.CHARACTER_MAXIMUM_LENGTH as DataLength, c.COLUMN_COMMENT as Description, " +
            string strSql = $"SELECT c.COLUMN_NAME as ColumnName, c.DATA_TYPE as DataType, c.IS_NULLABLE as IsNullable, c.CHARACTER_MAXIMUM_LENGTH as DataLength, c.COLUMN_COMMENT as Description, " +
                $"CASE WHEN kcu.COLUMN_NAME IS NOT NULL THEN 'true' ELSE 'false' END AS IsPrimaryKey " +
                $"FROM INFORMATION_SCHEMA.COLUMNS c " +
                $"LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu " +
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/AppService/AppService_Generate.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@

using GenerateCode_WeiBen_WMS.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GenerateCode_GEBrilliantFactory
{
    /// <summary>
    /// ç”ŸæˆæŸ¥è¯¢å®žä½“ç±»
    /// </summary>
    public class AppService_Generate : BaseGenerate
    {
        public static string CreateText(GenerateCodeParam param)
        {
            var str = TextHelper.ReadText(@"Templete\AppService\AppService模板.txt");
            CommonReplace(ref str);
            CommonHelper.CommonReplaceStr(param, ref str);
            string attrString = "";
            List<ColumnModel> newColumnNameList = ListHelper.RemoveAttrForExport(param.ColumnNameList);
            for (int i = 0; i < newColumnNameList.Count; ++i)
            {
                attrString += StructStrHelper.GenerateAttributeForUpdateModel(newColumnNameList[i], param);
            }
            str = str.Replace("$UpdateAttributes$", attrString);
            attrString = "";
            for (int i = 0; i < newColumnNameList.Count; ++i)
            {
                attrString += StructStrHelper.GenerateAttributeForUpdateModelByImport(newColumnNameList[i], param);
            }
            str = str.Replace("$UpdateAttributesForImport$", attrString);
            attrString = "";
            for (int i = 0; i < newColumnNameList.Count; ++i)
            {
                attrString += StructStrHelper.GenerateAttributeForCheckCreateOrUpdateDtoAsync(newColumnNameList[i], param);
            }
            str = str.Replace("$UpdateAttributesForCheckCreateOrUpdateDtoAsync$", attrString);
            return str;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/AppService/IAppService_Generate.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@

using GenerateCode_WeiBen_WMS.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GenerateCode_GEBrilliantFactory
{
    /// <summary>
    /// ç”ŸæˆæŸ¥è¯¢å®žä½“ç±»
    /// </summary>
    public class IAppService_Generate : BaseGenerate
    {
        public static string CreateText(GenerateCodeParam param)
        {
            var str = TextHelper.ReadText(@"Templete\AppService\IAppService模板.txt");
            CommonReplace(ref str);
            CommonHelper.CommonReplaceStr(param, ref str);
            return str;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/Controller/Controller_Generate.cs
@@ -1,5 +1,6 @@

using GenerateCode_WeiBen_WMS.Model;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -12,23 +13,15 @@
    /// </summary>
    public class Controller_Generate : BaseGenerate
    {
        public static string CreateText(string Modulelogo,
            string ChinaComment, List<ColumnModel> columnNameList, string entityName, string orderByName = "")
        public static string CreateText(GenerateCodeParam param)
        {
            var str = TextHelper.ReadText(@"Templete\Controller模板.txt");
            CommonReplace(ref str);
            str = str.Replace("$ChinaComment$", ChinaComment);//中文注释
            str = str.Replace("$EntityName$", entityName);
            str = str.Replace("$Modulelogo$", Modulelogo);//模块简写
            str = str.Replace("$OrderByName$", orderByName == "" ? "Id" : orderByName);//模块简写
            str = str.Replace("$ValidateEmptyForInsert$", StructStrHelper.GetValidateEmptyStrForController(columnNameList));
            str = str.Replace("$ValidateEmptyForUpdate$", StructStrHelper.GetValidateEmptyStrForController(columnNameList, false));
            CommonReplace(ref str);
            CommonHelper.CommonReplaceStr(param, ref str);
            var pageStr = StructStrHelper.GetPageFilterStrForController(columnNameList);
            str = str.Replace("$PageSearchFilter$", pageStr);
            return str;
        }
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/Entity/AddModel_Generate.cs
@@ -25,7 +25,7 @@
            List<ColumnModel> newColumnNameList = ListHelper.RemoveIdCreatorModifier(columnNameList);
            for (int i = 0; i < newColumnNameList.Count; ++i)
            {
                attrString += StructStrHelper.GenerateAttributeForAddModel(newColumnNameList[i]);
                // attrString += StructStrHelper.GenerateAttributeForAddModel(newColumnNameList[i]);
            }
            str = str.Replace("$AddAttributes$", attrString);
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/Entity/CreateDto_Generate.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@

using GenerateCode_WeiBen_WMS.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GenerateCode_GEBrilliantFactory
{
    /// <summary>
    /// ç”ŸæˆæŸ¥è¯¢å®žä½“ç±»
    /// </summary>
    public class CreateDto_Generate : BaseGenerate
    {
        public static string CreateText(GenerateCodeParam param)
        {
            var str = TextHelper.ReadText(@"Templete\Entity\CreateDto模板.txt");
            CommonReplace(ref str);
            CommonHelper.CommonReplaceStr(param, ref str);
            return str;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/Entity/CreateOrUpdateDtoBase_Generate.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@

using GenerateCode_WeiBen_WMS.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GenerateCode_GEBrilliantFactory
{
    /// <summary>
    /// ç”ŸæˆæŸ¥è¯¢å®žä½“ç±»
    /// </summary>
    public class CreateOrUpdateDtoBase_Generate : BaseGenerate
    {
        public static string CreateText(GenerateCodeParam param)
        {
            var str = TextHelper.ReadText(@"Templete\Entity\CreateOrUpdateDtoBase模板.txt");
            CommonReplace(ref str);
            CommonHelper.CommonReplaceStr(param, ref str);
            string attrString = "";
            List<ColumnModel> newColumnNameList = ListHelper.RemoveIdCreatorModifier(param.ColumnNameList);
            for (int i = 0; i < newColumnNameList.Count; ++i)
            {
                attrString += StructStrHelper.GenerateAttributeForAddModel(newColumnNameList[i], param);
            }
            str = str.Replace("$AddAttributes$", attrString);
            return str;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/Entity/Dto_Generate.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@

using GenerateCode_WeiBen_WMS.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GenerateCode_GEBrilliantFactory
{
    /// <summary>
    /// ç”ŸæˆæŸ¥è¯¢å®žä½“ç±»
    /// </summary>
    public class Dto_Generate : BaseGenerate
    {
        public static string CreateText(GenerateCodeParam param)
        {
            var str = TextHelper.ReadText(@"Templete\Entity\Dto模板.txt");
            CommonReplace(ref str);
            CommonHelper.CommonReplaceStr(param, ref str);
            string attrString = "";
            List<ColumnModel> newColumnNameList = ListHelper.OnlyRemoveId(param.ColumnNameList);
            for (int i = 0; i < newColumnNameList.Count; ++i)
            {
                attrString += StructStrHelper.GenerateAttributeForDto(newColumnNameList[i], param);
            }
            str = str.Replace("$AddAttributesForDto$", attrString);
            return str;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/Entity/ExportModel_Generate.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@

using GenerateCode_WeiBen_WMS.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GenerateCode_GEBrilliantFactory
{
    /// <summary>
    /// ç”ŸæˆæŸ¥è¯¢å®žä½“ç±»
    /// </summary>
    public class ExportModel_Generate : BaseGenerate
    {
        public static string CreateText(GenerateCodeParam param)
        {
            var str = TextHelper.ReadText(@"Templete\Entity\ExportModel模板.txt");
            CommonReplace(ref str);
            CommonHelper.CommonReplaceStr(param, ref str);
            string attrString = "";
            List<ColumnModel> newColumnNameList = ListHelper.RemoveAttrForExport(param.ColumnNameList);
            for (int i = 0; i < newColumnNameList.Count; ++i)
            {
                attrString += StructStrHelper.GenerateAttributeForExport(newColumnNameList[i], param);
            }
            str = str.Replace("$AddAttributes$", attrString);
            return str;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/Entity/ImportModel_Generate.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@

using GenerateCode_WeiBen_WMS.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GenerateCode_GEBrilliantFactory
{
    /// <summary>
    /// ç”ŸæˆæŸ¥è¯¢å®žä½“ç±»
    /// </summary>
    public class ImportModel_Generate : BaseGenerate
    {
        public static string CreateText(GenerateCodeParam param)
        {
            var str = TextHelper.ReadText(@"Templete\Entity\ImportModel模板.txt");
            CommonReplace(ref str);
            CommonHelper.CommonReplaceStr(param, ref str);
            return str;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/Entity/InputModel_Generate.cs
@@ -1,5 +1,6 @@

using GenerateCode_WeiBen_WMS.Model;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -12,21 +13,17 @@
    /// </summary>
    public class InputModel_Generate : BaseGenerate
    {
        public static string CreateQueryModelLText(string Modulelogo,
            string ChinaComment, List<ColumnModel> columnNameList, string entityName)
        public static string CreateQueryModelLText(GenerateCodeParam param)
        {
            var str = TextHelper.ReadText(@"Templete\Entity\InputModel模板.txt");
            var str = TextHelper.ReadText(@"Templete\Entity\InputQueryModel模板.txt");
            CommonReplace(ref str);
            str = str.Replace("$ChinaComment$", ChinaComment);//中文注释
            str = str.Replace("$EntityName$", entityName);
            str = str.Replace("$Modulelogo$", Modulelogo);//模块简写
            CommonHelper.CommonReplaceStr(param, ref str);
            //处理 åˆ†é¡µæŸ¥è¯¢éƒ¨åˆ†
            string attrString = "";
            List<ColumnModel> newColumnNameList = ListHelper.OnlyRemoveId(columnNameList);
            List<ColumnModel> newColumnNameList = ListHelper.OnlyRemoveId(param.ColumnNameList);
            for (int i = 0; i < newColumnNameList.Count; ++i)
            {
                attrString += StructStrHelper.GenerateAttributeForQueryModel(newColumnNameList[i]);
@@ -36,7 +33,7 @@
            //处理 æ–°å¢žéƒ¨åˆ†
            attrString = "";
            newColumnNameList = ListHelper.RemoveIdCreatorModifier(columnNameList);
            newColumnNameList = ListHelper.RemoveIdCreatorModifier(param.ColumnNameList);
            for (int i = 0; i < newColumnNameList.Count; ++i)
            {
                attrString += StructStrHelper.GenerateAttribute(i,newColumnNameList[i]);
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/Entity/UpdateDto_Generate.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@

using GenerateCode_WeiBen_WMS.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GenerateCode_GEBrilliantFactory
{
    /// <summary>
    /// ç”ŸæˆæŸ¥è¯¢å®žä½“ç±»
    /// </summary>
    public class UpdateDto_Generate : BaseGenerate
    {
        public static string CreateText(GenerateCodeParam param)
        {
            var str = TextHelper.ReadText(@"Templete\Entity\UpdateDto模板.txt");
            CommonReplace(ref str);
            CommonHelper.CommonReplaceStr(param, ref str);
            return str;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/GenerateCode_WeiBen_CMS.csproj
@@ -101,13 +101,22 @@
    <Reference Include="System.Xml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Const\SystemConst.cs" />
    <Compile Include="DataBaseFactory\DataBaseServiceHandle.cs" />
    <Compile Include="DataBaseFactory\DataBaseServiceFactory.cs" />
    <Compile Include="DataBaseFactory\Default\SqlServerDataBaseServiceHandle.cs" />
    <Compile Include="DataBaseFactory\Default\MySqlDataBaseServiceHandle.cs" />
    <Compile Include="Generate\AppService\AppService_Generate.cs" />
    <Compile Include="Generate\AppService\IAppService_Generate.cs" />
    <Compile Include="Generate\BaseGenerate.cs" />
    <Compile Include="Generate\Controller\Controller_Generate.cs" />
    <Compile Include="Generate\Entity\AddModel_Generate.cs" />
    <Compile Include="Generate\Entity\ImportModel_Generate.cs" />
    <Compile Include="Generate\Entity\ExportModel_Generate.cs" />
    <Compile Include="Generate\Entity\Dto_Generate.cs" />
    <Compile Include="Generate\Entity\UpdateDto_Generate.cs" />
    <Compile Include="Generate\Entity\CreateOrUpdateDtoBase_Generate.cs" />
    <Compile Include="Generate\Entity\CreateDto_Generate.cs" />
    <Compile Include="Generate\Entity\OutputModel_Generate.cs" />
    <Compile Include="Generate\InsertSQL_Generate.cs" />
    <Compile Include="Generate\VUE\VUE_Generate.cs" />
@@ -118,6 +127,7 @@
    <Compile Include="Generate\BLL_Generate.cs" />
    <Compile Include="Generate\DAL_Generate.cs" />
    <Compile Include="Generate\Procedure_Generate.cs" />
    <Compile Include="Model\GenerateCodeParam.cs" />
    <Compile Include="Model\Enum\DataBaseEnum.cs" />
    <Compile Include="Model\Enum\DataTypeEnum.cs" />
    <Compile Include="Model\ListItem.cs" />
@@ -183,10 +193,37 @@
  </ItemGroup>
  <ItemGroup>
    <Content Include="Robot.ico" />
    <Content Include="Templete\AppService\AppService模板.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="Templete\AppService\IAppService模板.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="Templete\Controller模板.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="Templete\Entity\AddModel模板.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="Templete\Entity\ImportModel模板.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="Templete\Entity\ExportModel模板.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="Templete\Entity\Dto模板.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="Templete\Entity\UpdateDto模板.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="Templete\Entity\CreateDto模板.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="Templete\Entity\CreateOrUpdateDtoBase模板.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="Templete\Entity\InputQueryModel模板.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="Templete\Entity\OutputModel模板.txt">
@@ -234,7 +271,9 @@
    <Content Include="Templete\InitSQL模板.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="常用.txt" />
  </ItemGroup>
  <ItemGroup />
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/MainForm.Designer.cs
@@ -59,6 +59,8 @@
            this.tb_RoutePrefix = new System.Windows.Forms.TextBox();
            this.label13 = new System.Windows.Forms.Label();
            this.groupBox1 = new System.Windows.Forms.GroupBox();
            this.label17 = new System.Windows.Forms.Label();
            this.cmb_DataBase = new System.Windows.Forms.ComboBox();
            this.lbl_DataSource = new System.Windows.Forms.Label();
            this.cmb_DataSource = new System.Windows.Forms.ComboBox();
            this.groupBox2 = new System.Windows.Forms.GroupBox();
@@ -72,8 +74,9 @@
            this.label12 = new System.Windows.Forms.Label();
            this.tb_templeteFileDownName = new System.Windows.Forms.TextBox();
            this.label14 = new System.Windows.Forms.Label();
            this.cmb_DataBase = new System.Windows.Forms.ComboBox();
            this.label17 = new System.Windows.Forms.Label();
            this.tb_EnumList = new System.Windows.Forms.TextBox();
            this.label18 = new System.Windows.Forms.Label();
            this.label19 = new System.Windows.Forms.Label();
            this.groupBox1.SuspendLayout();
            this.groupBox2.SuspendLayout();
            this.groupBox3.SuspendLayout();
@@ -81,9 +84,10 @@
            // 
            // btnPath
            // 
            this.btnPath.Location = new System.Drawing.Point(425, 570);
            this.btnPath.Location = new System.Drawing.Point(567, 712);
            this.btnPath.Margin = new System.Windows.Forms.Padding(4);
            this.btnPath.Name = "btnPath";
            this.btnPath.Size = new System.Drawing.Size(97, 23);
            this.btnPath.Size = new System.Drawing.Size(129, 29);
            this.btnPath.TabIndex = 1;
            this.btnPath.Text = "选择生成路径";
            this.btnPath.UseVisualStyleBackColor = true;
@@ -92,25 +96,28 @@
            // lblds
            // 
            this.lblds.AutoSize = true;
            this.lblds.Location = new System.Drawing.Point(22, 72);
            this.lblds.Location = new System.Drawing.Point(29, 90);
            this.lblds.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.lblds.Name = "lblds";
            this.lblds.Size = new System.Drawing.Size(35, 12);
            this.lblds.Size = new System.Drawing.Size(45, 15);
            this.lblds.TabIndex = 2;
            this.lblds.Text = "表名:";
            // 
            // tbPath
            // 
            this.tbPath.Location = new System.Drawing.Point(106, 566);
            this.tbPath.Location = new System.Drawing.Point(141, 708);
            this.tbPath.Margin = new System.Windows.Forms.Padding(4);
            this.tbPath.Name = "tbPath";
            this.tbPath.ReadOnly = true;
            this.tbPath.Size = new System.Drawing.Size(253, 21);
            this.tbPath.Size = new System.Drawing.Size(336, 25);
            this.tbPath.TabIndex = 7;
            // 
            // btnExit
            // 
            this.btnExit.Location = new System.Drawing.Point(649, 600);
            this.btnExit.Location = new System.Drawing.Point(865, 750);
            this.btnExit.Margin = new System.Windows.Forms.Padding(4);
            this.btnExit.Name = "btnExit";
            this.btnExit.Size = new System.Drawing.Size(171, 67);
            this.btnExit.Size = new System.Drawing.Size(228, 84);
            this.btnExit.TabIndex = 8;
            this.btnExit.Text = "退出";
            this.btnExit.UseVisualStyleBackColor = true;
@@ -118,9 +125,10 @@
            // 
            // btn_CreateFile
            // 
            this.btn_CreateFile.Location = new System.Drawing.Point(106, 600);
            this.btn_CreateFile.Location = new System.Drawing.Point(141, 750);
            this.btn_CreateFile.Margin = new System.Windows.Forms.Padding(4);
            this.btn_CreateFile.Name = "btn_CreateFile";
            this.btn_CreateFile.Size = new System.Drawing.Size(157, 67);
            this.btn_CreateFile.Size = new System.Drawing.Size(209, 84);
            this.btn_CreateFile.TabIndex = 14;
            this.btn_CreateFile.Text = "生成文件";
            this.btn_CreateFile.UseVisualStyleBackColor = true;
@@ -128,187 +136,210 @@
            // 
            // tb_TableName
            // 
            this.tb_TableName.Location = new System.Drawing.Point(92, 69);
            this.tb_TableName.Location = new System.Drawing.Point(123, 86);
            this.tb_TableName.Margin = new System.Windows.Forms.Padding(4);
            this.tb_TableName.Name = "tb_TableName";
            this.tb_TableName.Size = new System.Drawing.Size(183, 21);
            this.tb_TableName.Size = new System.Drawing.Size(243, 25);
            this.tb_TableName.TabIndex = 15;
            this.tb_TableName.TextChanged += new System.EventHandler(this.tb_TableName_TextChanged);
            // 
            // tb_FileName
            // 
            this.tb_FileName.Location = new System.Drawing.Point(221, 152);
            this.tb_FileName.Location = new System.Drawing.Point(295, 190);
            this.tb_FileName.Margin = new System.Windows.Forms.Padding(4);
            this.tb_FileName.Name = "tb_FileName";
            this.tb_FileName.Size = new System.Drawing.Size(199, 21);
            this.tb_FileName.Size = new System.Drawing.Size(264, 25);
            this.tb_FileName.TabIndex = 17;
            // 
            // label1
            // 
            this.label1.AutoSize = true;
            this.label1.Location = new System.Drawing.Point(25, 154);
            this.label1.Location = new System.Drawing.Point(33, 192);
            this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(191, 12);
            this.label1.Size = new System.Drawing.Size(241, 15);
            this.label1.TabIndex = 16;
            this.label1.Text = "文件名称(用于给各个类名的前缀):";
            // 
            // tb_WCF_NameSpacePath
            // 
            this.tb_WCF_NameSpacePath.Location = new System.Drawing.Point(563, 247);
            this.tb_WCF_NameSpacePath.Location = new System.Drawing.Point(751, 309);
            this.tb_WCF_NameSpacePath.Margin = new System.Windows.Forms.Padding(4);
            this.tb_WCF_NameSpacePath.Name = "tb_WCF_NameSpacePath";
            this.tb_WCF_NameSpacePath.Size = new System.Drawing.Size(197, 21);
            this.tb_WCF_NameSpacePath.Size = new System.Drawing.Size(261, 25);
            this.tb_WCF_NameSpacePath.TabIndex = 19;
            // 
            // label2
            // 
            this.label2.AutoSize = true;
            this.label2.Location = new System.Drawing.Point(455, 249);
            this.label2.Location = new System.Drawing.Point(607, 311);
            this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(101, 12);
            this.label2.Size = new System.Drawing.Size(105, 15);
            this.label2.TabIndex = 18;
            this.label2.Text = "WCF项目命名空间:";
            this.label2.Text = "项目命名空间:";
            // 
            // tb_ChinaComment
            // 
            this.tb_ChinaComment.Location = new System.Drawing.Point(221, 234);
            this.tb_ChinaComment.Location = new System.Drawing.Point(295, 292);
            this.tb_ChinaComment.Margin = new System.Windows.Forms.Padding(4);
            this.tb_ChinaComment.Name = "tb_ChinaComment";
            this.tb_ChinaComment.Size = new System.Drawing.Size(197, 21);
            this.tb_ChinaComment.Size = new System.Drawing.Size(261, 25);
            this.tb_ChinaComment.TabIndex = 23;
            // 
            // label4
            // 
            this.label4.AutoSize = true;
            this.label4.Location = new System.Drawing.Point(26, 234);
            this.label4.Location = new System.Drawing.Point(35, 292);
            this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label4.Name = "label4";
            this.label4.Size = new System.Drawing.Size(83, 12);
            this.label4.Size = new System.Drawing.Size(105, 15);
            this.label4.TabIndex = 22;
            this.label4.Text = "表的中文注解:";
            // 
            // tb_CreatePerson
            // 
            this.tb_CreatePerson.Location = new System.Drawing.Point(221, 279);
            this.tb_CreatePerson.Location = new System.Drawing.Point(295, 349);
            this.tb_CreatePerson.Margin = new System.Windows.Forms.Padding(4);
            this.tb_CreatePerson.Name = "tb_CreatePerson";
            this.tb_CreatePerson.Size = new System.Drawing.Size(199, 21);
            this.tb_CreatePerson.Size = new System.Drawing.Size(264, 25);
            this.tb_CreatePerson.TabIndex = 25;
            // 
            // label5
            // 
            this.label5.AutoSize = true;
            this.label5.Location = new System.Drawing.Point(26, 289);
            this.label5.Location = new System.Drawing.Point(35, 361);
            this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label5.Name = "label5";
            this.label5.Size = new System.Drawing.Size(107, 12);
            this.label5.Size = new System.Drawing.Size(135, 15);
            this.label5.TabIndex = 24;
            this.label5.Text = "你的名字拼音缩写:";
            // 
            // tb_Primary
            // 
            this.tb_Primary.Location = new System.Drawing.Point(338, 69);
            this.tb_Primary.Location = new System.Drawing.Point(451, 86);
            this.tb_Primary.Margin = new System.Windows.Forms.Padding(4);
            this.tb_Primary.Name = "tb_Primary";
            this.tb_Primary.Size = new System.Drawing.Size(145, 21);
            this.tb_Primary.Size = new System.Drawing.Size(192, 25);
            this.tb_Primary.TabIndex = 27;
            // 
            // label6
            // 
            this.label6.AutoSize = true;
            this.label6.Location = new System.Drawing.Point(298, 72);
            this.label6.Location = new System.Drawing.Point(397, 90);
            this.label6.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label6.Name = "label6";
            this.label6.Size = new System.Drawing.Size(35, 12);
            this.label6.Size = new System.Drawing.Size(45, 15);
            this.label6.TabIndex = 26;
            this.label6.Text = "主键:";
            // 
            // tb_EntityProName
            // 
            this.tb_EntityProName.Location = new System.Drawing.Point(560, 141);
            this.tb_EntityProName.Location = new System.Drawing.Point(747, 176);
            this.tb_EntityProName.Margin = new System.Windows.Forms.Padding(4);
            this.tb_EntityProName.Name = "tb_EntityProName";
            this.tb_EntityProName.Size = new System.Drawing.Size(183, 21);
            this.tb_EntityProName.Size = new System.Drawing.Size(243, 25);
            this.tb_EntityProName.TabIndex = 31;
            this.tb_EntityProName.TextChanged += new System.EventHandler(this.tb_EntityProName_TextChanged);
            // 
            // label7
            // 
            this.label7.AutoSize = true;
            this.label7.Location = new System.Drawing.Point(436, 149);
            this.label7.Location = new System.Drawing.Point(581, 186);
            this.label7.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label7.Name = "label7";
            this.label7.Size = new System.Drawing.Size(125, 12);
            this.label7.Size = new System.Drawing.Size(158, 15);
            this.label7.TabIndex = 30;
            this.label7.Text = "实体类对象名/表别名:";
            // 
            // tb_EntityName
            // 
            this.tb_EntityName.Location = new System.Drawing.Point(92, 108);
            this.tb_EntityName.Location = new System.Drawing.Point(123, 135);
            this.tb_EntityName.Margin = new System.Windows.Forms.Padding(4);
            this.tb_EntityName.Name = "tb_EntityName";
            this.tb_EntityName.Size = new System.Drawing.Size(183, 21);
            this.tb_EntityName.Size = new System.Drawing.Size(243, 25);
            this.tb_EntityName.TabIndex = 29;
            // 
            // label8
            // 
            this.label8.AutoSize = true;
            this.label8.Location = new System.Drawing.Point(22, 111);
            this.label8.Location = new System.Drawing.Point(29, 139);
            this.label8.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label8.Name = "label8";
            this.label8.Size = new System.Drawing.Size(59, 12);
            this.label8.Size = new System.Drawing.Size(75, 15);
            this.label8.TabIndex = 28;
            this.label8.Text = "实体类名:";
            // 
            // label9
            // 
            this.label9.AutoSize = true;
            this.label9.Location = new System.Drawing.Point(463, 210);
            this.label9.Location = new System.Drawing.Point(617, 262);
            this.label9.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label9.Name = "label9";
            this.label9.Size = new System.Drawing.Size(35, 12);
            this.label9.Size = new System.Drawing.Size(45, 15);
            this.label9.TabIndex = 34;
            this.label9.Text = "排序:";
            // 
            // tb_OrderBy
            // 
            this.tb_OrderBy.Location = new System.Drawing.Point(503, 207);
            this.tb_OrderBy.Location = new System.Drawing.Point(671, 259);
            this.tb_OrderBy.Margin = new System.Windows.Forms.Padding(4);
            this.tb_OrderBy.Name = "tb_OrderBy";
            this.tb_OrderBy.Size = new System.Drawing.Size(145, 21);
            this.tb_OrderBy.Size = new System.Drawing.Size(192, 25);
            this.tb_OrderBy.TabIndex = 35;
            // 
            // label10
            // 
            this.label10.AutoSize = true;
            this.label10.Location = new System.Drawing.Point(668, 210);
            this.label10.Location = new System.Drawing.Point(891, 262);
            this.label10.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label10.Name = "label10";
            this.label10.Size = new System.Drawing.Size(65, 12);
            this.label10.Size = new System.Drawing.Size(83, 15);
            this.label10.TabIndex = 36;
            this.label10.Text = "(默认降序)";
            // 
            // tb_PrimaryDesc
            // 
            this.tb_PrimaryDesc.Location = new System.Drawing.Point(569, 69);
            this.tb_PrimaryDesc.Location = new System.Drawing.Point(759, 86);
            this.tb_PrimaryDesc.Margin = new System.Windows.Forms.Padding(4);
            this.tb_PrimaryDesc.Name = "tb_PrimaryDesc";
            this.tb_PrimaryDesc.Size = new System.Drawing.Size(145, 21);
            this.tb_PrimaryDesc.Size = new System.Drawing.Size(192, 25);
            this.tb_PrimaryDesc.TabIndex = 38;
            // 
            // label11
            // 
            this.label11.AutoSize = true;
            this.label11.Location = new System.Drawing.Point(508, 72);
            this.label11.Location = new System.Drawing.Point(677, 90);
            this.label11.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label11.Name = "label11";
            this.label11.Size = new System.Drawing.Size(59, 12);
            this.label11.Size = new System.Drawing.Size(75, 15);
            this.label11.TabIndex = 37;
            this.label11.Text = "主键描述:";
            // 
            // tb_Modulelogo
            // 
            this.tb_Modulelogo.Location = new System.Drawing.Point(221, 202);
            this.tb_Modulelogo.Location = new System.Drawing.Point(295, 252);
            this.tb_Modulelogo.Margin = new System.Windows.Forms.Padding(4);
            this.tb_Modulelogo.Name = "tb_Modulelogo";
            this.tb_Modulelogo.Size = new System.Drawing.Size(199, 21);
            this.tb_Modulelogo.Size = new System.Drawing.Size(264, 25);
            this.tb_Modulelogo.TabIndex = 41;
            // 
            // label3
            // 
            this.label3.AutoSize = true;
            this.label3.Location = new System.Drawing.Point(25, 206);
            this.label3.Location = new System.Drawing.Point(33, 258);
            this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label3.Name = "label3";
            this.label3.Size = new System.Drawing.Size(167, 12);
            this.label3.Size = new System.Drawing.Size(211, 15);
            this.label3.TabIndex = 40;
            this.label3.Text = "模块简写(用于给各个方法名):";
            // 
            // btn_InsertSql
            // 
            this.btn_InsertSql.Location = new System.Drawing.Point(385, 600);
            this.btn_InsertSql.Location = new System.Drawing.Point(513, 750);
            this.btn_InsertSql.Margin = new System.Windows.Forms.Padding(4);
            this.btn_InsertSql.Name = "btn_InsertSql";
            this.btn_InsertSql.Size = new System.Drawing.Size(157, 67);
            this.btn_InsertSql.Size = new System.Drawing.Size(209, 84);
            this.btn_InsertSql.TabIndex = 42;
            this.btn_InsertSql.Text = "生成InitSQL";
            this.btn_InsertSql.UseVisualStyleBackColor = true;
@@ -317,18 +348,20 @@
            // 
            // tb_RoutePrefix
            // 
            this.tb_RoutePrefix.Location = new System.Drawing.Point(538, 276);
            this.tb_RoutePrefix.Location = new System.Drawing.Point(717, 345);
            this.tb_RoutePrefix.Margin = new System.Windows.Forms.Padding(4);
            this.tb_RoutePrefix.Name = "tb_RoutePrefix";
            this.tb_RoutePrefix.Size = new System.Drawing.Size(145, 21);
            this.tb_RoutePrefix.Size = new System.Drawing.Size(192, 25);
            this.tb_RoutePrefix.TabIndex = 44;
            this.tb_RoutePrefix.Text = "1111";
            // 
            // label13
            // 
            this.label13.AutoSize = true;
            this.label13.Location = new System.Drawing.Point(463, 282);
            this.label13.Location = new System.Drawing.Point(617, 352);
            this.label13.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label13.Name = "label13";
            this.label13.Size = new System.Drawing.Size(77, 12);
            this.label13.Size = new System.Drawing.Size(99, 15);
            this.label13.TabIndex = 43;
            this.label13.Text = "WCF路由前缀:";
            this.label13.Click += new System.EventHandler(this.label13_Click);
@@ -339,33 +372,60 @@
            this.groupBox1.Controls.Add(this.cmb_DataBase);
            this.groupBox1.Controls.Add(this.lbl_DataSource);
            this.groupBox1.Controls.Add(this.cmb_DataSource);
            this.groupBox1.Location = new System.Drawing.Point(51, 12);
            this.groupBox1.Location = new System.Drawing.Point(68, 15);
            this.groupBox1.Margin = new System.Windows.Forms.Padding(4);
            this.groupBox1.Name = "groupBox1";
            this.groupBox1.Size = new System.Drawing.Size(819, 72);
            this.groupBox1.Padding = new System.Windows.Forms.Padding(4);
            this.groupBox1.Size = new System.Drawing.Size(1092, 90);
            this.groupBox1.TabIndex = 45;
            this.groupBox1.TabStop = false;
            this.groupBox1.Text = "数据库配置";
            // 
            // label17
            //
            this.label17.AutoSize = true;
            this.label17.Location = new System.Drawing.Point(637, 29);
            this.label17.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label17.Name = "label17";
            this.label17.Size = new System.Drawing.Size(82, 15);
            this.label17.TabIndex = 3;
            this.label17.Text = "数据库类型";
            //
            // cmb_DataBase
            //
            this.cmb_DataBase.FormattingEnabled = true;
            this.cmb_DataBase.Location = new System.Drawing.Point(775, 25);
            this.cmb_DataBase.Margin = new System.Windows.Forms.Padding(4);
            this.cmb_DataBase.Name = "cmb_DataBase";
            this.cmb_DataBase.Size = new System.Drawing.Size(273, 23);
            this.cmb_DataBase.TabIndex = 2;
            this.cmb_DataBase.SelectedIndexChanged += new System.EventHandler(this.cmb_DataBase_SelectedIndexChanged);
            //
            // lbl_DataSource
            // 
            this.lbl_DataSource.AutoSize = true;
            this.lbl_DataSource.Location = new System.Drawing.Point(10, 48);
            this.lbl_DataSource.Location = new System.Drawing.Point(13, 60);
            this.lbl_DataSource.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.lbl_DataSource.Name = "lbl_DataSource";
            this.lbl_DataSource.Size = new System.Drawing.Size(89, 12);
            this.lbl_DataSource.Size = new System.Drawing.Size(112, 15);
            this.lbl_DataSource.TabIndex = 1;
            this.lbl_DataSource.Text = "我是链接字符串";
            // 
            // cmb_DataSource
            // 
            this.cmb_DataSource.FormattingEnabled = true;
            this.cmb_DataSource.Location = new System.Drawing.Point(6, 20);
            this.cmb_DataSource.Location = new System.Drawing.Point(8, 25);
            this.cmb_DataSource.Margin = new System.Windows.Forms.Padding(4);
            this.cmb_DataSource.Name = "cmb_DataSource";
            this.cmb_DataSource.Size = new System.Drawing.Size(206, 20);
            this.cmb_DataSource.Size = new System.Drawing.Size(273, 23);
            this.cmb_DataSource.TabIndex = 0;
            this.cmb_DataSource.SelectedIndexChanged += new System.EventHandler(this.cmb_DataSource_SelectedIndexChanged);
            // 
            // groupBox2
            // 
            this.groupBox2.Controls.Add(this.label19);
            this.groupBox2.Controls.Add(this.label18);
            this.groupBox2.Controls.Add(this.tb_EnumList);
            this.groupBox2.Controls.Add(this.tb_GroupName);
            this.groupBox2.Controls.Add(this.label16);
            this.groupBox2.Controls.Add(this.label15);
@@ -396,43 +456,49 @@
            this.groupBox2.Controls.Add(this.tb_EntityProName);
            this.groupBox2.Controls.Add(this.tb_EntityName);
            this.groupBox2.Controls.Add(this.label7);
            this.groupBox2.Location = new System.Drawing.Point(51, 90);
            this.groupBox2.Location = new System.Drawing.Point(68, 112);
            this.groupBox2.Margin = new System.Windows.Forms.Padding(4);
            this.groupBox2.Name = "groupBox2";
            this.groupBox2.Size = new System.Drawing.Size(819, 470);
            this.groupBox2.Padding = new System.Windows.Forms.Padding(4);
            this.groupBox2.Size = new System.Drawing.Size(1293, 588);
            this.groupBox2.TabIndex = 46;
            this.groupBox2.TabStop = false;
            this.groupBox2.Text = "自定义配置";
            // 
            // tb_GroupName
            // 
            this.tb_GroupName.Location = new System.Drawing.Point(350, 108);
            this.tb_GroupName.Location = new System.Drawing.Point(467, 135);
            this.tb_GroupName.Margin = new System.Windows.Forms.Padding(4);
            this.tb_GroupName.Name = "tb_GroupName";
            this.tb_GroupName.Size = new System.Drawing.Size(183, 21);
            this.tb_GroupName.Size = new System.Drawing.Size(243, 25);
            this.tb_GroupName.TabIndex = 50;
            // 
            // label16
            // 
            this.label16.AutoSize = true;
            this.label16.Location = new System.Drawing.Point(298, 111);
            this.label16.Location = new System.Drawing.Point(397, 139);
            this.label16.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label16.Name = "label16";
            this.label16.Size = new System.Drawing.Size(47, 12);
            this.label16.Size = new System.Drawing.Size(60, 15);
            this.label16.TabIndex = 49;
            this.label16.Text = "分组名:";
            // 
            // label15
            // 
            this.label15.AutoSize = true;
            this.label15.Location = new System.Drawing.Point(26, 24);
            this.label15.Location = new System.Drawing.Point(35, 30);
            this.label15.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label15.Name = "label15";
            this.label15.Size = new System.Drawing.Size(71, 12);
            this.label15.Size = new System.Drawing.Size(90, 15);
            this.label15.TabIndex = 47;
            this.label15.Text = "项目名前缀:";
            // 
            // tb_ProjectNamePrefix
            // 
            this.tb_ProjectNamePrefix.Location = new System.Drawing.Point(104, 21);
            this.tb_ProjectNamePrefix.Location = new System.Drawing.Point(139, 26);
            this.tb_ProjectNamePrefix.Margin = new System.Windows.Forms.Padding(4);
            this.tb_ProjectNamePrefix.Name = "tb_ProjectNamePrefix";
            this.tb_ProjectNamePrefix.Size = new System.Drawing.Size(183, 21);
            this.tb_ProjectNamePrefix.Size = new System.Drawing.Size(243, 25);
            this.tb_ProjectNamePrefix.TabIndex = 48;
            // 
            // groupBox3
@@ -442,29 +508,30 @@
            this.groupBox3.Controls.Add(this.label12);
            this.groupBox3.Controls.Add(this.tb_templeteFileDownName);
            this.groupBox3.Controls.Add(this.label14);
            this.groupBox3.Location = new System.Drawing.Point(28, 316);
            this.groupBox3.Margin = new System.Windows.Forms.Padding(2);
            this.groupBox3.Location = new System.Drawing.Point(37, 395);
            this.groupBox3.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.groupBox3.Name = "groupBox3";
            this.groupBox3.Padding = new System.Windows.Forms.Padding(2);
            this.groupBox3.Size = new System.Drawing.Size(272, 118);
            this.groupBox3.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.groupBox3.Size = new System.Drawing.Size(363, 148);
            this.groupBox3.TabIndex = 46;
            this.groupBox3.TabStop = false;
            this.groupBox3.Text = "导入功能";
            // 
            // tb_importExcelCategroy
            // 
            this.tb_importExcelCategroy.Location = new System.Drawing.Point(143, 86);
            this.tb_importExcelCategroy.Location = new System.Drawing.Point(191, 108);
            this.tb_importExcelCategroy.Margin = new System.Windows.Forms.Padding(4);
            this.tb_importExcelCategroy.Name = "tb_importExcelCategroy";
            this.tb_importExcelCategroy.Size = new System.Drawing.Size(113, 21);
            this.tb_importExcelCategroy.Size = new System.Drawing.Size(149, 25);
            this.tb_importExcelCategroy.TabIndex = 50;
            // 
            // ck_IsShowImport
            // 
            this.ck_IsShowImport.AutoSize = true;
            this.ck_IsShowImport.Location = new System.Drawing.Point(21, 30);
            this.ck_IsShowImport.Margin = new System.Windows.Forms.Padding(2);
            this.ck_IsShowImport.Location = new System.Drawing.Point(28, 38);
            this.ck_IsShowImport.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.ck_IsShowImport.Name = "ck_IsShowImport";
            this.ck_IsShowImport.Size = new System.Drawing.Size(108, 16);
            this.ck_IsShowImport.Size = new System.Drawing.Size(134, 19);
            this.ck_IsShowImport.TabIndex = 45;
            this.ck_IsShowImport.Text = "是否有导入功能";
            this.ck_IsShowImport.UseVisualStyleBackColor = true;
@@ -474,51 +541,66 @@
            // label12
            // 
            this.label12.AutoSize = true;
            this.label12.Location = new System.Drawing.Point(9, 94);
            this.label12.Location = new System.Drawing.Point(12, 118);
            this.label12.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label12.Name = "label12";
            this.label12.Size = new System.Drawing.Size(119, 12);
            this.label12.Size = new System.Drawing.Size(150, 15);
            this.label12.TabIndex = 49;
            this.label12.Text = "上传文件的请求分类:";
            // 
            // tb_templeteFileDownName
            // 
            this.tb_templeteFileDownName.Location = new System.Drawing.Point(143, 58);
            this.tb_templeteFileDownName.Location = new System.Drawing.Point(191, 72);
            this.tb_templeteFileDownName.Margin = new System.Windows.Forms.Padding(4);
            this.tb_templeteFileDownName.Name = "tb_templeteFileDownName";
            this.tb_templeteFileDownName.Size = new System.Drawing.Size(113, 21);
            this.tb_templeteFileDownName.Size = new System.Drawing.Size(149, 25);
            this.tb_templeteFileDownName.TabIndex = 48;
            // 
            // label14
            // 
            this.label14.AutoSize = true;
            this.label14.Location = new System.Drawing.Point(10, 60);
            this.label14.Location = new System.Drawing.Point(13, 75);
            this.label14.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label14.Name = "label14";
            this.label14.Size = new System.Drawing.Size(83, 12);
            this.label14.Size = new System.Drawing.Size(105, 15);
            this.label14.TabIndex = 47;
            this.label14.Text = "文件下载名字:";
            // 
            // cmb_DataBase
            // tb_EnumList
            // 
            this.cmb_DataBase.FormattingEnabled = true;
            this.cmb_DataBase.Location = new System.Drawing.Point(581, 20);
            this.cmb_DataBase.Name = "cmb_DataBase";
            this.cmb_DataBase.Size = new System.Drawing.Size(206, 20);
            this.cmb_DataBase.TabIndex = 2;
            this.cmb_DataBase.SelectedIndexChanged += new System.EventHandler(this.cmb_DataBase_SelectedIndexChanged);
            this.tb_EnumList.Location = new System.Drawing.Point(557, 451);
            this.tb_EnumList.Margin = new System.Windows.Forms.Padding(4);
            this.tb_EnumList.Multiline = true;
            this.tb_EnumList.Name = "tb_EnumList";
            this.tb_EnumList.Size = new System.Drawing.Size(491, 129);
            this.tb_EnumList.TabIndex = 51;
            // 
            // label17
            // label18
            // 
            this.label17.AutoSize = true;
            this.label17.Location = new System.Drawing.Point(478, 23);
            this.label17.Name = "label17";
            this.label17.Size = new System.Drawing.Size(65, 12);
            this.label17.TabIndex = 3;
            this.label17.Text = "数据库类型";
            this.label18.AutoSize = true;
            this.label18.Location = new System.Drawing.Point(424, 488);
            this.label18.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label18.Name = "label18";
            this.label18.Size = new System.Drawing.Size(135, 15);
            this.label18.TabIndex = 52;
            this.label18.Text = "枚举类型字段集合:";
            //
            // label19
            //
            this.label19.AutoSize = true;
            this.label19.Location = new System.Drawing.Point(424, 432);
            this.label19.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label19.Name = "label19";
            this.label19.Size = new System.Drawing.Size(751, 15);
            this.label19.TabIndex = 53;
            this.label19.Text = "PurchaseType|PurchaseTypeEnum|PurchaseTypeDesc,MaterialType|MaterialTypeEnum|Mate" +
    "rialTypeDesc";
            // 
            // MainForm
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(927, 672);
            this.ClientSize = new System.Drawing.Size(1374, 840);
            this.Controls.Add(this.groupBox2);
            this.Controls.Add(this.groupBox1);
            this.Controls.Add(this.btn_InsertSql);
@@ -526,6 +608,7 @@
            this.Controls.Add(this.btnExit);
            this.Controls.Add(this.tbPath);
            this.Controls.Add(this.btnPath);
            this.Margin = new System.Windows.Forms.Padding(4);
            this.Name = "MainForm";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "伟本-CMS-代码生成器(伟本专用)V1.0";
@@ -589,6 +672,9 @@
        private System.Windows.Forms.TextBox tb_GroupName;
        private System.Windows.Forms.ComboBox cmb_DataBase;
        private System.Windows.Forms.Label label17;
        private System.Windows.Forms.Label label18;
        private System.Windows.Forms.TextBox tb_EnumList;
        private System.Windows.Forms.Label label19;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/MainForm.cs
@@ -6,6 +6,8 @@
using Newtonsoft.Json;
using System.Windows.Forms.VisualStyles;
using GenerateCode_WeiBen_WMS.DataBaseFactory;
using GenerateCode_WeiBen_WMS.Const;
using GenerateCode_WeiBen_WMS.Model;
namespace GenerateCode_GEBrilliantFactory
{
@@ -25,13 +27,14 @@
            this.tb_OrderBy.Text = "ModifyTime";//排序字段
            this.tb_ProjectNamePrefix.Text = "Test";
            this.tb_TableName.Text = "scms_auditlogs";//表名
            this.tb_WCF_NameSpacePath.Text = "WIP_";//WCF项目命名空间
            this.tb_TableName.Text = "scms_wmsmaterials";//表名
            this.tb_WCF_NameSpacePath.Text = "HIAWms";//WCF项目命名空间
            this.tb_FileName.Text = "Xiangzi";//文件前缀名
            this.tb_ChinaComment.Text = "表的中文注解";//中文注释
            this.tb_ChinaComment.Text = "物料基础信息表";//中文注释
            this.tb_CreatePerson.Text = "shaocx";//创建人
            this.tb_EntityName.Text = "XiangziEntity";//实体类名
            this.tb_EntityProName.Text = "xiangzi";//实体类对象名
            this.tb_EntityName.Text = "WmsMaterial";//实体类名
            //this.tb_EntityProName.Text = "wmsMaterial";//实体类对象名
            this.tb_EnumList.Text = "PurchaseType|PurchaseTypeEnum|PurchaseTypeDesc,MaterialType|MaterialTypeEnum|MaterialTypeDesc,IsMainBranch|YesNoEnum|IsMainBranchDesc";
            this.cmb_DataSource.DropDownStyle = ComboBoxStyle.DropDownList;
            List<ListItem> itemList = CommonHelper.GetDataSources();
@@ -125,6 +128,12 @@
                    this.tb_RoutePrefix.Focus();
                    return;
                }
                if (wcf_NameSpacePath == "")
                {
                    MessageBox.Show("请输入命名空间!");
                    this.tb_WCF_NameSpacePath.Focus();
                    return;
                }
                //读取Mysql
                var handler = DataBaseServiceFactory.GetHandle(dataBaseEnum);
@@ -136,42 +145,124 @@
                }
                string groupName = this.tb_GroupName.Text.Trim();
                if (groupName == "")
                {
                    MessageBox.Show("请输入分组名!");
                    this.tb_GroupName.Focus();
                    return;
                }
                //if (groupName == "")
                //{
                //    MessageBox.Show("请输入分组名!");
                //    this.tb_GroupName.Focus();
                //    return;
                //}
                string addEntityParam = "Add" + modulelogo + "Param";//新增参数类名
                string str_generate = "";
                bool tf;
                GenerateCodeParam param = new GenerateCodeParam()
                {
                    Modulelogo = modulelogo,
                    ChinaComment = chinaComment,
                    NameSpacePath = wcf_NameSpacePath,
                    ColumnNameList = columnList,
                    EntityName = entityName,
                    EntityInstanceName = tableAlias
                };
                //处理枚举类型
                List<EnumModel> enumList = new List<EnumModel>();
                var str_enumList = this.tb_EnumList.Text.Trim();
                if (str_enumList.IndexOf(',') > -1)
                {
                    var arr_enumList = str_enumList.Split(',');
                    foreach (var item in arr_enumList)
                    {
                        var arr_single = item.Split('|');
                        enumList.Add(new EnumModel()
                        {
                            EnumAttrName = arr_single[0],
                            EnumType = arr_single[1],
                            EnumTypeDesc = arr_single[2]
                        });
                    }
                }
                param.EnumList = enumList;
                //生成Model
                //CreateModelFile(columnList, tableName, filePrefixName, wcf_NameSpacePath, createPerson, chinaComment, entityName, modulelogo);
                //CreateModelParamFile(columnList, tableName, filePrefixName, wcf_NameSpacePath, createPerson, chinaComment, entityName, modulelogo);
                //生成 InputModel æ–‡ä»¶
                str_generate = InputModel_Generate.CreateQueryModelLText(modulelogo, chinaComment, columnList, entityName);
                tf = TextHelper.Export2File(tbPath.Text, tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
                #region å®žä½“ç±»
                var entityFilePath = tbPath.Text + @"\server\src\CMS.Plugin." + tb_WCF_NameSpacePath.Text.Trim() + @".Application.Contracts\Dtos\" + tb_EntityName.Text.Trim();
                //1、生成 åˆ†é¡µæŸ¥è¯¢å®žä½“ æ–‡ä»¶
                str_generate = InputModel_Generate.CreateQueryModelLText(param);
                tf = TextHelper.Export2File_V2(entityFilePath, $"Get{param.EntityName}Input.cs", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
                //生成 OutputModel æ–‡ä»¶
                str_generate = OutputModel_Generate.CreateQueryModelLText(modulelogo, chinaComment, columnList, entityName);
                tf = TextHelper.Export2File(tbPath.Text, tableName, str_generate, FileType.OutputModel, filePrefixName, entityName, modulelogo);
                //2、生成 CreateDto æ–‡ä»¶
                str_generate = CreateDto_Generate.CreateText(param);
                tf = TextHelper.Export2File_V2(entityFilePath, $"{param.EntityName}CreateDto.cs", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
                //生成Controller文件
                //str_generate = Controller_Generate.CreateText(modulelogo, chinaComment, columnList, entityName, orderByName);
                //tf = TextHelper.Export2File(tbPath.Text, tableName, str_generate, FileType.Controller, filePrefixName, entityName, modulelogo);
                //3、生成 UpdateDto æ–‡ä»¶
                str_generate = UpdateDto_Generate.CreateText(param);
                tf = TextHelper.Export2File_V2(entityFilePath, $"{param.EntityName}UpdateDto.cs", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
                //生成Services接口文件
                str_generate = Services_Interface_Generate.CreateText(wcf_NameSpacePath, modulelogo, entityName, chinaComment, addEntityParam);
                tf = TextHelper.Export2File(tbPath.Text, tableName, str_generate, FileType.WCF_InterFace, filePrefixName, entityName, modulelogo);
                //4、生成 CreateOrUpdateDtoBase æ–‡ä»¶
                str_generate = CreateOrUpdateDtoBase_Generate.CreateText(param);
                tf = TextHelper.Export2File_V2(entityFilePath, $"{param.EntityName}CreateOrUpdateDtoBase.cs", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
                //5、生成 Dto æ–‡ä»¶
                str_generate = Dto_Generate.CreateText(param);
                tf = TextHelper.Export2File_V2(entityFilePath, $"{param.EntityName}Dto.cs", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
                //6、生成 Export æ–‡ä»¶
                str_generate = ExportModel_Generate.CreateText(param);
                tf = TextHelper.Export2File_V2(entityFilePath, $"{param.EntityName}ExportModel.cs", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
                //7、生成 Import æ–‡ä»¶
                str_generate = ImportModel_Generate.CreateText(param);
                tf = TextHelper.Export2File_V2(entityFilePath, $"{param.EntityName}sImportModel.cs", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
                #endregion
                #region AppSerivice
                //8、生成 IAppService æ–‡ä»¶
                var appServiceFilePath = tbPath.Text + @"\server\src\CMS.Plugin." + tb_WCF_NameSpacePath.Text.Trim() + @".Application.Contracts\Services";
                str_generate = IAppService_Generate.CreateText(param);
                tf = TextHelper.Export2File_V2(appServiceFilePath, $"I{param.EntityName}AppService.cs", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
                //9、生成 AppService æ–‡ä»¶
                appServiceFilePath = tbPath.Text + @"\server\src\CMS.Plugin." + tb_WCF_NameSpacePath.Text.Trim() + @".Application\Implements";
                str_generate = AppService_Generate.CreateText(param);
                tf = TextHelper.Export2File_V2(appServiceFilePath, $"{param.EntityName}AppService.cs", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
                //生成Services接口实现文件
                str_generate = Services_InterfaceRealize_Generate.CreateText(wcf_NameSpacePath, modulelogo,
                    entityName, chinaComment, filePrefixName, primaryKey, tableAlias, addEntityParam, columnList, groupName);
                tf = TextHelper.Export2File(tbPath.Text, tableName, str_generate, FileType.WCF_InterFaceRealize, filePrefixName, entityName, modulelogo);
                #endregion
                #region Contorller
                //10、生成 Contorller æ–‡ä»¶
                var continerlllePath = tbPath.Text + @"\server\src\CMS.Plugin." + tb_WCF_NameSpacePath.Text.Trim() + @".Controller";
                str_generate = Controller_Generate.CreateText(param);
                tf = TextHelper.Export2File_V2(continerlllePath, $"{param.EntityName}Controller.cs", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
                #endregion
                ////生成 OutputModel æ–‡ä»¶
                //str_generate = OutputModel_Generate.CreateQueryModelLText(modulelogo, chinaComment, columnList, entityName);
                //tf = TextHelper.Export2File(tbPath.Text, tableName, str_generate, FileType.OutputModel, filePrefixName, entityName, modulelogo);
                ////生成Controller文件
                ////str_generate = Controller_Generate.CreateText(modulelogo, chinaComment, columnList, entityName, orderByName);
                ////tf = TextHelper.Export2File(tbPath.Text, tableName, str_generate, FileType.Controller, filePrefixName, entityName, modulelogo);
                ////生成Services接口文件
                //str_generate = Services_Interface_Generate.CreateText(wcf_NameSpacePath, modulelogo, entityName, chinaComment, addEntityParam);
                //tf = TextHelper.Export2File(tbPath.Text, tableName, str_generate, FileType.WCF_InterFace, filePrefixName, entityName, modulelogo);
                ////生成Services接口实现文件
                //str_generate = Services_InterfaceRealize_Generate.CreateText(wcf_NameSpacePath, modulelogo,
                //    entityName, chinaComment, filePrefixName, primaryKey, tableAlias, addEntityParam, columnList, groupName);
                //tf = TextHelper.Export2File(tbPath.Text, tableName, str_generate, FileType.WCF_InterFaceRealize, filePrefixName, entityName, modulelogo);
                /*
                //生成存储过程文件
@@ -218,7 +309,7 @@
            }
            //MessageBox.Show("生成文件成功!");
            //成功之后打开文件夹
            using (System.Diagnostics.Process.Start(this.tbPath.Text + "\\" + this.tb_TableName.Text))
            using (System.Diagnostics.Process.Start(this.tbPath.Text))
            {
            }
@@ -322,7 +413,7 @@
            tb_EntityProName.Enabled = false;
            tb_FileName.Enabled = false;
            tb_Modulelogo.Enabled = false;
            tb_WCF_NameSpacePath.Enabled = false;
            tb_WCF_NameSpacePath.Enabled = true;
            tb_RoutePrefix.Enabled = false;
        }
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Model/Enum/DataTypeEnum.cs
@@ -31,6 +31,16 @@
        /// <summary>
        /// æ—¥æœŸ
        /// </summary>
        dt_datetimeoffset = 13
        dt_datetimeoffset = 13,
        /// <summary>
        /// mysql中longtext类型
        /// </summary>
        dt_longtext = 14,
        /// <summary>
        /// mysql中 TINYINT æ˜¯ä¸€ç§æ•´æ•°æ•°æ®ç±»åž‹ï¼Œç”¨äºŽå­˜å‚¨éžå¸¸å°çš„æ•´æ•°å€¼,占用 â€‹â€‹1 å­—节(8位)​​ å­˜å‚¨ç©ºé—´ã€‚可以存储 -128 åˆ° 127(有符号)或 0 åˆ° 255(无符号)的整数。
        /// æˆ‘这边认为是bool
        /// </summary>
        dt_tinyint = 15
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Model/GenerateCodeParam.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
using GenerateCode_GEBrilliantFactory;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GenerateCode_WeiBen_WMS.Model
{
    /// <summary>
    /// ç”Ÿæˆä»£ç å‚æ•°
    /// </summary>
    public class GenerateCodeParam
    {
        /// <summary>
        /// æ¨¡å—简写
        /// </summary>
        public string Modulelogo { get; set; }
        /// <summary>
        /// ä¸­æ–‡æ³¨é‡Š
        /// </summary>
        public string ChinaComment { get; set; }
        /// <summary>
        /// åˆ—名列表
        /// </summary>
        public List<ColumnModel> ColumnNameList { get; set; } = new List<ColumnModel>();
        /// <summary>
        /// å®žä½“名称
        /// </summary>
        public string EntityName { get; set; }
        /// <summary>
        /// å®žä½“的实例对象名
        /// </summary>
        public string EntityInstanceName { get; set; }
        /// <summary>
        /// å‘½åç©ºé—´
        /// </summary>
        public string NameSpacePath { get; set; }
        /// <summary>
        /// ä½¿ç”¨çš„æžšä¸¾åˆ—表
        /// </summary>
        public List<EnumModel> EnumList { get; set; } = new List<EnumModel>();
    }
    public class EnumModel
    {
        /// <summary>
        /// æžšä¸¾å±žæ€§å
        /// </summary>
        public string EnumAttrName { get; set; }
        public string EnumType { get; set; }
        public string EnumTypeDesc { get; set; }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Model/SystemCommonVar.cs
@@ -8,42 +8,31 @@
{
    public static class SystemCommonVar
    {
        //public const string c_Id = "Id";
        //public const string c_creator = "creator";
        //public const string c_createTime = "createTime";
        //public const string c_lastModifier = "lastModifier";
        //public const string c_ModifyTime = "ModifyTime";
        //public const string c_lastModifyTime = "lastModifyTime";
        //public const string c_delFlag = "delFlag";
        //public const string c_CreateId = "CreateId";
        //public const string c_ModifyId = "ModifyId";
        public const string c_Id = "Id";
        public const string c_creator = "CreatedUserName";
        public const string c_createTime = "CreatedTime";
        public const string c_createTime = "CreationTime";
        public const string c_lastModifier = "UpdatedUserName";
        public const string c_ModifyTime = "UpdatedTime";
        public const string c_ModifyTime = "LastModificationTime";
        public const string c_lastModifyTime = "UpdatedTime";
        public const string c_lastModifyTime = "DeletionTime";
        public const string c_delFlag = "IsDeleted";
        public const string c_CreateId = "CreatedUserId";
        public const string c_DeleterId = "DeleterId";
        public const string c_ModifyId = "UpdatedUserId";
        public const string c_CreateId = "CreatorId";
        public const string c_ModifyId = "LastModifierId";
        public const string c_ExtraProperties = "ExtraProperties";
        public const string c_ConcurrencyStamp = "ConcurrencyStamp";
    }
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/AppService/AppServiceÄ£°å.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,393 @@
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityInstanceName$s;
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Services;
using CMS.Plugin.$NameSpacePath$.Domain.Shared;
using CMS.Plugin.$NameSpacePath$.Domain.Shared.Util;
using CMS.Plugin.$NameSpacePath$.Domain.Shared.$EntityInstanceName$s;
using CMS.Plugin.$NameSpacePath$.Domain.$EntityInstanceName$s;
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.$NameSpacePath$.Application.Implements;
/// <summary>
/// $ChinaComment$应用服务
/// </summary>
public class $EntityName$AppService : CMSPluginAppService, I$EntityName$AppService
{
    private readonly I$EntityName$Repository $EntityInstanceName$Repository;
    /// <summary>
    /// Initializes a new instance of the <see cref="$EntityName$AppService"/> class.
    /// </summary>
    /// <param name="$EntityName$Repository">The task job repository.</param>
    public $EntityName$AppService(I$EntityName$Repository $EntityName$Repository)
    {
        $EntityInstanceName$Repository = $EntityName$Repository;
    }
    /// <summary>
    /// èŽ·å–æŒ‡å®š$ChinaComment$
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    public virtual async Task<$EntityName$Dto> GetAsync(Guid id)
    {
        return ObjectMapper.Map<$EntityName$, $EntityName$Dto>(await $EntityInstanceName$Repository.GetAsync(id));
    }
    /// <summary>
    /// åˆ†é¡µèŽ·å–$ChinaComment$
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    public virtual async Task<PagedResultDto<$EntityName$Dto>> GetListAsync(Get$EntityName$Input input)
    {
        Check.NotNull(input, nameof(input));
        if (input.Sorting.IsNullOrWhiteSpace())
        {
            input.Sorting = nameof($EntityName$.Sort);
        }
        #region åŠ¨æ€æž„é€ æŸ¥è¯¢æ¡ä»¶
        //动态构造查询条件
        var whereConditions = DynamicGetQueryParams(input);
        #endregion
        var count = await $EntityInstanceName$Repository.GetCountAsync(whereConditions);
        var list = await $EntityInstanceName$Repository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount);
        return new PagedResultDto<$EntityName$Dto>(count, ObjectMapper.Map<List<$EntityName$>, List<$EntityName$Dto>>(list));
    }
    /// <summary>
    /// åŠ¨æ€æž„é€ æŸ¥è¯¢æ¡ä»¶
    /// </summary>
    /// <param name="input">输入参数</param>
    /// <returns></returns>
    private FunReturnResultModel<Expression<Func<$EntityName$, bool>>> DynamicGetQueryParams(Get$EntityName$Input input)
    {
        //动态构造查询条件
        var whereConditions = WhereConditionsExtensions.GetWhereConditions<$EntityName$, Get$EntityName$Input>(input);
        if (!whereConditions.IsSuccess)
        {
            throw new Exception("动态构造查询条件失败:" + whereConditions.ErrMsg);
        }
        //也可再次自定义构建查询条件
        Expression<Func<$EntityName$, bool>> extendExpression = a => a.IsDeleted == false;
        // ä½¿ç”¨ System.Linq.PredicateBuilder çš„ And
        var pres = (System.Linq.Expressions.Expression<Func<$EntityName$, bool>>)(whereConditions.data);
        whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression);
        return whereConditions;
    }
    /// <summary>
    /// æ–°å»º$ChinaComment$
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    /// <exception cref="UserFriendlyException"></exception>
    public virtual async Task<$EntityName$Dto> CreateAsync($EntityName$CreateDto input)
    {
        await CheckCreateOrUpdateDtoAsync(input);
        var exist = await $EntityInstanceName$Repository.NameExistAsync(input.MaterialCode);
        if (exist)
        {
            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialCode]);
        }
        var maxSort = await $EntityInstanceName$Repository.GetMaxSortAsync();
        var sort = input.Sort ?? maxSort;
        var insertObj = ObjectMapper.Map<$EntityName$CreateDto, $EntityName$>(input);
        insertObj.Sort = sort;
        input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None);
        await $EntityInstanceName$Repository.InsertAsync(insertObj);
        if (input.Sort.HasValue && insertObj.Sort != maxSort)
        {
            await AdjustSortAsync(insertObj.Id, insertObj.Sort);
        }
        return ObjectMapper.Map<$EntityName$, $EntityName$Dto>(insertObj);
    }
    /// <summary>
    /// æ›´æ–°$ChinaComment$
    /// </summary>
    /// <param name="id"></param>
    /// <param name="input"></param>
    /// <returns></returns>
    /// <exception cref="UserFriendlyException"></exception>
    public virtual async Task<$EntityName$Dto> UpdateAsync(Guid id, $EntityName$UpdateDto input)
    {
        await CheckCreateOrUpdateDtoAsync(input);
        var updateObj = await $EntityInstanceName$Repository.GetAsync(id);
        var exist = await $EntityInstanceName$Repository.NameExistAsync(input.MaterialCode, updateObj.Id);
        if (exist)
        {
            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialCode]);
        }
        updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
        input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None);
        $UpdateAttributes$
        await $EntityInstanceName$Repository.UpdateAsync(updateObj);
        return ObjectMapper.Map<$EntityName$, $EntityName$Dto>(updateObj);
    }
    /// <summary>
    /// å…‹éš†$ChinaComment$
    /// </summary>
    /// <param name="ids"></param>
    /// <returns></returns>
    public async Task<List<$EntityName$Dto>> CloneAsync(IEnumerable<Guid> ids)
    {
        //var $EntityInstanceName$s = new List<$EntityName$>();
        //if (ids != null)
        //{
        //    var sort = await $EntityInstanceName$Repository.GetMaxSortAsync();
        //    foreach (var id in ids)
        //    {
        //        var $EntityName$ = await $EntityInstanceName$Repository.FindAsync(id);
        //        if ($EntityName$ != null)
        //        {
        //            var name = $EntityName$.Name + $EntityName$Consts.CloneTag;
        //            var notExist = false;
        //            while (!notExist)
        //            {
        //                var exist = await $EntityInstanceName$Repository.NameExistAsync(name);
        //                if (exist || $EntityInstanceName$s.Any(x => x.Name == name))
        //                {
        //                    name += $EntityName$Consts.CloneTag;
        //                    continue;
        //                }
        //                notExist = true;
        //            }
        //            //$EntityName$ = await $EntityInstanceName$Repository.InsertAsync($EntityName$.Clone(GuidGenerator.Create(), name, sort++));
        //            $EntityInstanceName$s.Add($EntityName$);
        //        }
        //    }
        //}
        //return ObjectMapper.Map<List<$EntityName$>, List<$EntityName$Dto>>($EntityInstanceName$s);
        return new List<$EntityName$Dto>();
    }
    /// <summary>
    /// åˆ é™¤å•个$ChinaComment$
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    public virtual Task DeleteAsync(Guid id)
    {
        return $EntityInstanceName$Repository.DeleteAsync(id);
    }
    /// <summary>
    /// åˆ é™¤å¤šä¸ª$ChinaComment$
    /// </summary>
    /// <param name="ids"></param>
    /// <returns></returns>
    public async Task DeleteManyAsync(IEnumerable<Guid> ids)
    {
        foreach (var id in ids)
        {
            await DeleteAsync(id);
        }
    }
    /// <summary>
    /// è°ƒæ•´æŽ’序$ChinaComment$
    /// </summary>
    /// <param name="id"></param>
    /// <param name="sort"></param>
    /// <returns></returns>
    public virtual async Task AdjustSortAsync(Guid id, int sort)
    {
        var list = await $EntityInstanceName$Repository.GetListAsync(null, nameof($EntityName$.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 $EntityInstanceName$Repository.UpdateManyAsync(list);
    }
    /// <summary>
    /// å¯¼å…¥$ChinaComment$
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    /// <exception cref="UserFriendlyException"></exception>
    public async Task ImportAsync($EntityName$sImportModel input)
    {
        Check.NotNull(input, nameof(input));
        var $EntityInstanceName$CreateDtos = new List<(int RowIndex, $EntityName$CreateDto Item)>();
        var $EntityInstanceName$UpdateDtos = new List<(int RowIndex, Guid Id, $EntityName$UpdateDto Item)>();
        var $EntityInstanceName$s = input.$EntityInstanceName$s;
        if ($EntityInstanceName$s != null && $EntityInstanceName$s.Any())
        {
            #region å¯¼å…¥æ ¡éªŒ
            // åˆ¤æ–­åç§°æ˜¯å¦é‡å¤ï¼Œå¹¶è¾“出第几行重复
            var duplicate$EntityName$s = $EntityInstanceName$s.GroupBy(x => x.MaterialCode).Where(x => x.Count() > 1).ToList();
            if (duplicate$EntityName$s?.Any() == true)
            {
                var duplicate$EntityName$Msgs = duplicate$EntityName$s.Select(x => $"第 {string.Join(",", x.Select(x => x.RowIndex))} è¡Œï¼š{x.Key}  åç§°é‡å¤");
                var errorMsg = $"导入失败!配置, {string.Join(",", duplicate$EntityName$Msgs)},终止导入";
                throw new UserFriendlyException(errorMsg);
            }
            #endregion
            foreach (var $EntityInstanceName$ in $EntityInstanceName$s)
            {
                if ($EntityInstanceName$.MaterialCode.IsNullOrWhiteSpace() && $EntityInstanceName$.MaterialName.IsNullOrWhiteSpace())
                {
                    continue;
                }
                if ($EntityInstanceName$.MaterialCode.IsNullOrWhiteSpace())
                {
                    var errorMsg = $"导入失败!配置,第{$EntityInstanceName$.RowIndex}行:$EntityInstanceName$名称不能为空";
                    throw new UserFriendlyException(errorMsg);
                }
                var old$EntityName$ = await $EntityInstanceName$Repository.FindByNameAsync($EntityName$.MaterialCode);
                if (old$EntityName$ != null)
                {
                    var $EntityInstanceName$UpdateDto = new $EntityName$UpdateDto
                    {
                        $UpdateAttributesForImport$
                    };
                    $EntityInstanceName$UpdateDtos.Add(($EntityName$.RowIndex, old$EntityName$.Id, $EntityInstanceName$UpdateDto));
                }
                else
                {
                    var $EntityName$CreateDto = new $EntityName$CreateDto
                    {
                        $UpdateAttributesForImport$
                    };
                    $EntityInstanceName$CreateDtos.Add(($EntityName$.RowIndex, $EntityName$CreateDto));
                }
            }
        }
        // æ–°å¢ž
        foreach (var $EntityName$Dto in $EntityInstanceName$CreateDtos)
        {
            try
            {
                await CreateAsync($EntityName$Dto.Item);
            }
            catch (Exception e)
            {
                var errorMsg = $"导入失败!配置,第{$EntityName$Dto.RowIndex}行:{e.Message},终止导入";
                throw new UserFriendlyException(errorMsg);
            }
        }
        // æ›´æ–°
        foreach (var $EntityName$Dto in $EntityInstanceName$UpdateDtos)
        {
            try
            {
                await UpdateAsync($EntityName$Dto.Id, $EntityName$Dto.Item);
            }
            catch (Exception e)
            {
                var errorMsg = $"导入失败!配置,第{$EntityName$Dto.RowIndex}行:{e.Message},终止导入";
                throw new UserFriendlyException(errorMsg);
            }
        }
    }
    /// <summary>
    /// å¯¼å‡º$ChinaComment$
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(Get$EntityName$Input input)
    {
        Check.NotNull(input, nameof(input));
        if (input.Sorting.IsNullOrWhiteSpace())
        {
            input.Sorting = nameof($EntityName$.Sort);
        }
        #region åŠ¨æ€æž„é€ æŸ¥è¯¢æ¡ä»¶
        //动态构造查询条件
        var whereConditions = DynamicGetQueryParams(input);
        #endregion
        var list = await $EntityInstanceName$Repository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true);
        var result = ObjectMapper.Map<List<$EntityName$>, List<$EntityName$Dto>>(list);
        var sheets = new Dictionary<string, object>
        {
            ["配置"] = ExportHelper.ConvertListToExportData(result),
        };
        var fileName = result.Count > 1 ? "$EntityName$列表" : result.Count == 1 ? result[0]?.MaterialCode : "$EntityName$模版";
        return (sheets, fileName);
    }
    /// <summary>
    /// æ ¡éªŒ$ChinaComment$,当新建或更新时
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    protected Task CheckCreateOrUpdateDtoAsync($EntityName$CreateOrUpdateDtoBase input)
    {
        Check.NotNull(input, nameof(input));
        $UpdateAttributesForCheckCreateOrUpdateDtoAsync$
        return Task.CompletedTask;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/AppService/IAppServiceÄ£°å.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityName$s;
using Volo.Abp.Application.Services;
namespace CMS.Plugin.$NameSpacePath$.Application.Contracts.Services;
/// <summary>
/// $ChinaComment$应用服务接口
/// </summary>
public interface I$EntityName$AppService : ICrudAppService<$EntityName$Dto, Guid, Get$EntityName$Input, $EntityName$CreateDto, $EntityName$UpdateDto>
{
    /// <summary>
    /// å…‹éš†$ChinaComment$
    /// </summary>
    /// <param name="ids"></param>
    /// <returns></returns>
    Task<List<$EntityName$Dto>> CloneAsync(IEnumerable<Guid> ids);
    /// <summary>
    /// åˆ é™¤$ChinaComment$
    /// </summary>
    /// <param name="ids"></param>
    /// <returns></returns>
    Task DeleteManyAsync(IEnumerable<Guid> ids);
    /// <summary>
    /// è°ƒæ•´æŽ’序$ChinaComment$
    /// </summary>
    /// <param name="id"></param>
    /// <param name="sort"></param>
    /// <returns></returns>
    Task AdjustSortAsync(Guid id, int sort);
    /// <summary>
    /// å¯¼å…¥$ChinaComment$
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task ImportAsync($EntityName$sImportModel input);
    /// <summary>
    /// å¯¼å‡º$ChinaComment$
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(Get$EntityName$Input input);
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/ControllerÄ£°å.txt
@@ -1,274 +1,188 @@
using $ProjectNamePrefix$.Core.Common.HttpContextUser;
using $ProjectNamePrefix$.Core.Extensions.Others;
using $ProjectNamePrefix$.Core.IServices;
using $ProjectNamePrefix$.Core.Model;
using $ProjectNamePrefix$.Core.Model.CommonModel;
using $ProjectNamePrefix$.Core.Model.Models;
using $ProjectNamePrefix$.Core.Model.ParamModels;
using $ProjectNamePrefix$.Core.Utility;
using Ao.Lang;
using CMS.Extensions.Abp.AspNetCore.Mvc.Filters;
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityName$;
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Services;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Threading.Tasks;
using System;
using MiniExcelLibs;
using System.Reflection;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
namespace $ProjectNamePrefix$.Core.Api.Controllers
namespace CMS.Plugin.$NameSpacePath$.Controller
{
    /// <summary>
    /// $ChinaComment$
    /// $ChinaComment$服务
    /// </summary>
    [Route("api/[controller]/[action]")]
    [ApiController]
    [Authorize(Permissions.Name)]
    [TypeFilter(typeof(CMSLanguageFilter))]
    [TypeFilter(typeof(CMSUowActionFilter))]
    [TypeFilter(typeof(CMSAuditActionFilter))]
    [TypeFilter(typeof(CMSExceptionFilter))]
    [Route("api/v{version:apiVersion}/$NameSpacePath$/[controller]")]
    public class $EntityName$Controller : ControllerBase
    {
        private readonly I$EntityName$Services _$EntityName$Services;
        private readonly IUser _user;
        private readonly ILogger<$EntityName$Controller> _logger;
        private readonly I$EntityName$AppService _$EntityInstanceName$AppService;
        public $EntityName$Controller(I$EntityName$Services $EntityName$Services, IUser user, ILogger<$EntityName$Controller> logger)
        /// <summary>
        /// Initializes a new instance of the <see cref="$EntityName$Controller"/> class.
        /// </summary>
        /// <param name="$EntityInstanceName$AppService">The $EntityInstanceName$ application service.</param>
        public $EntityName$Controller(I$EntityName$AppService $EntityInstanceName$AppService)
        {
            _$EntityName$Services = $EntityName$Services;
            _user = user;
            _logger = logger;
            _$EntityInstanceName$AppService = $EntityInstanceName$AppService;
        }
        /// <summary>
        /// åˆ†é¡µèŽ·å–$ChinaComment$列表
        /// èŽ·å–$ChinaComment$
        /// </summary>
        /// <param name="param">筛选条件</param>
        /// <returns>获取结果</returns>
        [HttpPost]
        public async Task<MessageModel<PageModel<$EntityName$>>> Get([FromBody] $EntityName$Param param)
        {
            if (string.IsNullOrEmpty(param.searchVal) || string.IsNullOrWhiteSpace(param.searchVal))
            {
                param.searchVal = string.Empty;
            }
            var whereConditions = WhereConditionsExtensions.GetWhereConditions<$EntityName$, $EntityName$Param>(param);
            if (!whereConditions.IsSuccess) {
                return new MessageModel<PageModel<$EntityName$>>()
                {
                    msg = whereConditions.ErrMsg,
                    success = false,
                    response = null
                };
            }
            var data = await _$EntityName$Services.QueryPage(whereConditions.data, param.page, param.pageSize, " $OrderByName$ desc ");
            return new MessageModel<PageModel<$EntityName$>>()
            {
                msg = "获取成功",
                success = true,
                response = data
            };
        }
        /// <summary>
        /// èŽ·å–å•ä¸ª$ChinaComment$
        /// </summary>
        /// <param name="id">主键</param>
        /// <returns>获取结果</returns>
        [HttpGet]
        public async Task<MessageModel<$EntityName$>> Get(int id = 0)
        {
            return new MessageModel<$EntityName$>()
            {
                msg = "获取成功",
                success = true,
                response = await _$EntityName$Services.QueryById(id)
            };
        }
        /// <summary>
        /// æ–°å¢ž$ChinaComment$
        /// </summary>
        /// <param name="request">要新增的$ChinaComment$对象</param>
        /// <param name="id">标识符.</param>
        /// <returns></returns>
        [HttpGet]
        [Route("{id}")]
        public virtual Task<$EntityName$Dto> GetAsync(Guid id)
        {
            return _$EntityInstanceName$AppService.GetAsync(id);
        }
        /// <summary>
        /// åˆ†é¡µèŽ·å–$ChinaComment$的列表.
        /// </summary>
        /// <param name="input">输入.</param>
        /// <returns></returns>
        [HttpGet]
        [Route("Page")]
        public virtual Task<PagedResultDto<$EntityName$Dto>> GetListAsync([FromQuery] Get$EntityName$Input input)
        {
            return _$EntityInstanceName$AppService.GetListAsync(input);
        }
        /// <summary>
        /// åˆ›å»º$ChinaComment$
        /// </summary>
        /// <param name="input">输入.</param>
        /// <returns></returns>
        //[Authorize]
        [HttpPost]
        public async Task<MessageModel<string>> Post([FromBody] $EntityName$ request)
        public virtual Task<$EntityName$Dto> CreateAsync($EntityName$CreateDto input)
        {
            try
            {
                #region éªŒè¯
                MessageModel<string> retBody = null;
                retBody = ValidateDataHelper.CommonValidateIsNULL<$EntityName$, string>(request);
                if (retBody != null)
                {
                    return retBody;
                }
                List<ValidateModel> columnsList = null;
                columnsList = new List<ValidateModel>() {
                   $ValidateEmptyForInsert$
                };
                retBody = ValidateDataHelper.CommonValidate<$EntityName$, string>(request, columnsList);
                if (retBody != null)
                {
                    return retBody;
                }
                #endregion
                request.CreateTime = request.ModifyTime = DateTime.Now;
                request.CreateBy = request.ModifyBy = _user.Name;
                request.CreateId = request.ModifyId = _user.ID;
                request.OperationRemark = "添加";
                var id = await _$EntityName$Services.Add(request);
                var success = id > 0;
                if (success)
                {
                    return MessageModel<string>.Success("添加成功", id.ObjToString());
                }
                return MessageModel<string>.Fail("添加失败");
            }
            catch (Exception ex)
            {
                _logger.LogError(ex,"新增$ChinaComment$出现异常:" + ex.Message);
                return MessageModel<string>.Fail("新增$ChinaComment$出现异常:" + ex.Message);
            }
            return _$EntityInstanceName$AppService.CreateAsync(input);
        }
        /// <summary>
        /// æ›´æ–°$ChinaComment$
        /// </summary>
        /// <param name="request">要更新的$ChinaComment$对象</param>
        /// <returns>更新结果</returns>
        /// <param name="id">标识符.</param>
        /// <param name="input">输入.</param>
        /// <returns></returns>
        //[Authorize]
        [HttpPut]
        public async Task<MessageModel<string>> Put([FromBody] $EntityName$ request)
        [Route("{id}")]
        public virtual Task<$EntityName$Dto> UpdateAsync(Guid id, $EntityName$UpdateDto input)
        {
            try
            {
                #region éªŒè¯
                MessageModel<string> retBody = null;
                retBody = ValidateDataHelper.CommonValidateIsNULL<$EntityName$, string>(request);
                if (retBody != null)
                {
                    return retBody;
            return _$EntityInstanceName$AppService.UpdateAsync(id, input);
                }
                List<ValidateModel> columnsList = null;
                columnsList = new List<ValidateModel>()
        /// <summary>
        /// å…‹éš†$ChinaComment$
        /// </summary>
        /// <param name="ids">Id集合.</param>
        /// <returns></returns>
        //[Authorize]
        [HttpPost]
        [Route("Clone")]
        public virtual Task<List<$EntityName$Dto>> CloneAsync([FromBody] IEnumerable<Guid> ids)
                {
                    $ValidateEmptyForUpdate$
                };
                retBody = ValidateDataHelper.CommonValidate<$EntityName$, string>(request, columnsList);
                if (retBody != null)
                {
                    return retBody;
                }
                #endregion
                var dbObj = await _$EntityName$Services.QueryById(request.Id);
                if (dbObj == null)
                {
                    return MessageModel<string>.Fail("数据不存在!");
                }
                request.ModifyTime = DateTime.Now;
                request.ModifyBy = _user.Name;
                request.ModifyId = _user.ID;
                request.OperationRemark = "更新";
                var success = await _$EntityName$Services.Update(request);
                if (success)
                {
                    return MessageModel<string>.Success("更新成功", request.Id.ObjToString());
                }
                return MessageModel<string>.Fail("更新失败");
            }
            catch (Exception ex)
            {
                _logger.LogError(ex,"更新$ChinaComment$出现异常:" + ex.Message);
                return MessageModel<string>.Fail("更新$ChinaComment$出现异常:" + ex.Message);
            }
            return _$EntityInstanceName$AppService.CloneAsync(ids);
        }
        /// <summary>
        /// åˆ é™¤$ChinaComment$
        /// </summary>
        /// <param name="id">主键</param>
        /// <returns>删除结果</returns>
        /// <param name="id">标识符.</param>
        /// <returns></returns>
        //[Authorize]
        [HttpDelete]
        public async Task<MessageModel<string>> Delete(int id = 0)
        [Route("{id}")]
        public virtual Task DeleteAsync(Guid id)
        {
            try
            {
                var data = new MessageModel<string>();
                if (id > 0)
                {
                    var detail = await _$EntityName$Services.QueryById(id);
                    if (detail != null)
                    {
                        data.success = await _$EntityName$Services.DeleteById(detail.Id);
                        if (data.success)
                        {
                            data.msg = "删除成功";
                            data.response = detail?.Id.ObjToString();
                        }
                    }
                    else {
                        return MessageModel<string>.Fail("数据不存在!");
                    }
                }
                else
                {
                    data.success = false;
                    data.msg = "删除失败,$ChinaComment$不存在";
                }
                return data;
            }
            catch (Exception ex)
            {
                _logger.LogError(ex,"删除$ChinaComment$出现异常:" + ex.Message);
                return MessageModel<string>.Fail("删除$ChinaComment$出现异常:" + ex.Message);
            }
            return _$EntityInstanceName$AppService.DeleteAsync(id);
        }
        /// <summary>
        /// é€»è¾‘删除$ChinaComment$
        /// æ‰¹é‡åˆ é™¤$ChinaComment$
        /// </summary>
        /// <param name="id">主键</param>
        /// <returns>删除结果</returns>
        /// <param name="ids">The ids.</param>
        /// <returns></returns>
        //[Authorize]
        [HttpDelete]
        public async Task<MessageModel<string>> LogicDelete(int id = 0)
        public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids)
        {
            try
            {
                var data = new MessageModel<string>();
                if (id > 0)
                {
                    var detail = await _$EntityName$Services.QueryById(id);
                    if (detail != null)
                    {
                        detail.ModifyTime = DateTime.Now;
                        detail.ModifyBy = _user.Name;
                        detail.ModifyId = _user.ID;
                        detail.IsDeleted = true;
                        detail.OperationRemark = "删除";
                        data.success = await _$EntityName$Services.Update(detail);
                        if (data.success)
                        {
                            data.msg = "删除成功";
                            data.response = detail?.Id.ObjToString();
            return _$EntityInstanceName$AppService.DeleteManyAsync(ids);
                        }
                    }
                }
                else
        /// <summary>
        /// è°ƒæ•´æŽ’序$ChinaComment$
        /// </summary>
        /// <param name="id">标识符.</param>
        /// <returns></returns>
        [HttpPut]
        [Route("{id}/AdjustSort/{sort}")]
        public virtual Task AdjustSortAsync(Guid id, int sort)
                {
                    data.success = false;
                    data.msg = "删除失败,数据不存在";
            return _$EntityInstanceName$AppService.AdjustSortAsync(id, sort);
                }
                return data;
            }
            catch (Exception ex)
        /// <summary>
        /// å¯¼å…¥$ChinaComment$
        /// </summary>
        /// <returns></returns>
        [Authorize]
        [HttpPost]
        [Route("Import")]
        public virtual async Task<IActionResult> ImportAsync(IFormFile file)
            {
                _logger.LogError(ex,"逻辑删除$ChinaComment$出现异常:" + ex.Message);
                return MessageModel<string>.Fail("逻辑删除$ChinaComment$出现异常:" + ex.Message);
            using var stream = new MemoryStream();
            await file.CopyToAsync(stream);
            stream.Seek(0L, SeekOrigin.Begin);
            var sheetNames = stream.GetSheetNames();
            var $EntityInstanceName$Rows = sheetNames.Contains("配置") ? MiniExcel.Query<$EntityName$sImportModel.$EntityName$ImportModel>(stream, sheetName: "配置").ToList() : new();
            if (!$EntityInstanceName$Rows.Any())
            {
                throw new UserFriendlyException("请检查导入的表格");
            }
            await _$EntityInstanceName$AppService.ImportAsync(new $EntityName$sImportModel
            {
                $EntityName$s = $EntityInstanceName$Rows,
            });
            return Ok();
        }
        /// <summary>
        /// å¯¼å‡º$ChinaComment$
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        [Route("Export")]
        public virtual async Task<IActionResult> ExportAsync([FromQuery] Get$EntityName$Input input)
        {
            input.MaxResultCount = int.MaxValue;
            var exportData = await _$EntityInstanceName$AppService.ExportAsync(input);
            var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Resources/Templates/$EntityName$导出模板.xlsx");
            if (!System.IO.File.Exists(templatePath))
            {
                templatePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty, $"Resources/Templates/$EntityName$导出模板.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" };
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Entity/CreateDtoÄ£°å.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
namespace CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityName$;
/// <summary>
/// $ChinaComment$创建参数对象
/// </summary>
public class $EntityName$CreateDto : $EntityName$CreateOrUpdateDtoBase
{
    /// <summary>
    /// æŽ’序
    /// </summary>
    public virtual int? Sort { get; set; }
    /// <summary>
    /// æ˜¯å¦ç¦ç”¨
    /// </summary>
    public bool? IsDisabled { get; set; } = false;
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Entity/CreateOrUpdateDtoBaseÄ£°å.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
using CMS.Plugin.$NameSpacePath$.Domain.Shared.Enums;
using Volo.Abp.Application.Dtos;
namespace CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityName$;
/// <summary>
/// $ChinaComment$创建或更新基类
/// </summary>
public abstract class $EntityName$CreateOrUpdateDtoBase : ExtensibleEntityDto
{
    $AddAttributes$
    /// <summary>
    /// Initializes a new instance of the <see cref="$EntityName$CreateOrUpdateDtoBase"/> class.
    /// </summary>
    public $EntityName$CreateOrUpdateDtoBase() : base(false)
    {
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Entity/DtoÄ£°å.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
using CMS.Plugin.$NameSpacePath$.Domain.Shared.Enums;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
namespace CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityName$;
/// <summary>
/// $ChinaComment$数据参数对象
/// </summary>
public  class $EntityName$Dto:  ExtensibleEntityDto<Guid>, IHasConcurrencyStamp
{
    $AddAttributesForDto$
   /// <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;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Entity/ExportModelÄ£°å.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
using MiniExcelLibs.Attributes;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel;
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
namespace CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityName$;
/// <summary>
/// $ChinaComment$导出模型
/// </summary>
public  class $EntityName$ExportModel
{
    $AddAttributes$
    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;
        }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Entity/ImportModelÄ£°å.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
namespace CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityName$
{
    /// <summary>
    /// $ChinaComment$导入模型
    /// </summary>
    public class $EntityName$sImportModel
    {
        private List<$EntityName$ImportModel> _$EntityName$s = new();
        public List<$EntityName$ImportModel> $EntityName$s
        {
            get => _$EntityName$s;
            set
            {
                _$EntityName$s = value;
                var rowIndex = 2;
                _$EntityName$s?.ForEach(x => x.RowIndex = rowIndex++);
            }
        }
        /// <summary>
        /// $ChinaComment$导入模型
        /// </summary>
        public class $EntityName$ImportModel : MaterialExportModel
        {
            /// <summary>
            /// è¡Œå·
            /// </summary>
            public int RowIndex { get; set; }
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Entity/InputQueryModelÄ£°å.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
using CmsQueryExtensions.Extension;
using Volo.Abp.Application.Dtos;
namespace CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityName$;
/// <summary>
/// $ChinaComment$查询参数
/// </summary>
public class Get$EntityName$Input : 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
    $QueryAttributes$
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Entity/UpdateDtoÄ£°å.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
using Volo.Abp.Domain.Entities;
namespace CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityName$;
/// <summary>
/// $ChinaComment$更新参数对象
/// </summary>
public class $EntityName$UpdateDto : $EntityName$CreateOrUpdateDtoBase, IHasConcurrencyStamp
{
   /// <summary>
    /// å¹¶å‘戳
    /// </summary>
    public string ConcurrencyStamp { get; set; }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Utility/CommonHelper.cs
@@ -1,4 +1,6 @@
using System;
using GenerateCode_GEBrilliantFactory.Model;
using GenerateCode_WeiBen_WMS.Model;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
@@ -14,6 +16,36 @@
    public class CommonHelper
    {
        /// <summary>
        /// æ˜¯å¦å¿½ç•¥è¯¥åˆ—
        /// </summary>
        /// <param name="columnName"></param>
        /// <returns></returns>
        public static bool IsIgnore(string columnName)
        {
            if (columnName.ToUpper() == SystemCommonVar.c_ExtraProperties.ToUpper()
                || columnName.ToUpper() == SystemCommonVar.c_ConcurrencyStamp.ToUpper()
                )
            {
                return true;
            }
            return false;
        }
        /// <summary>
        /// é€šç”¨æ›¿æ¢å­—符串
        /// </summary>
        /// <param name="param"></param>
        /// <param name="str"></param>
        public static void CommonReplaceStr(GenerateCodeParam param, ref string str)
        {
            str = str.Replace("$NameSpacePath$", param.NameSpacePath);//命名空间
            str = str.Replace("$ChinaComment$", param.ChinaComment);//中文注释
            str = str.Replace("$EntityName$", param.EntityName);//实体类名
            str = str.Replace("$Modulelogo$", param.Modulelogo);//模块简写
            str = str.Replace("$EntityInstanceName$", param.EntityInstanceName);//实例名
        }
        /// <summary>
        /// é¦–字母小写
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Utility/ListHelper.cs
@@ -240,6 +240,39 @@
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_lastModifyTime.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_ModifyTime.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_Id.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_ExtraProperties.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_ConcurrencyStamp.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_DeleterId.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_delFlag.ToUpper()
                    )
                {
                    continue;
                }
                newList.Add(columnModel);
            }
            return newList;
        }
        public static List<ColumnModel> RemoveAttrForExport(List<ColumnModel> columnNameList)
        {
            List<ColumnModel> newList = new List<ColumnModel>();
            ColumnModel columnModel = null;
            for (int i = 0; i < columnNameList.Count; i++)
            {
                columnModel = columnNameList[i];
                if (columnModel.ColumnName.ToUpper() == SystemCommonVar.c_creator.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_createTime.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_lastModifier.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_lastModifyTime.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_ModifyTime.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_Id.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_ExtraProperties.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_ConcurrencyStamp.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_DeleterId.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_delFlag.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_CreateId.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_ModifyId.ToUpper()
                    )
                {
                    continue;
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Utility/StructStrHelper.cs
@@ -1,8 +1,10 @@
using System;
using GenerateCode_WeiBen_WMS.Model;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
namespace GenerateCode_GEBrilliantFactory
@@ -216,7 +218,7 @@
        /// </summary>
        /// <param name="columnModel"></param>
        /// <returns></returns>
        public static string GenerateAttributeForAddModel(ColumnModel columnModel)
        public static string GenerateAttributeForAddModel(ColumnModel columnModel, GenerateCodeParam param)
        {
            try
            {
@@ -238,9 +240,7 @@
                    case DataTypeEnum.dt_datetime:
                    case DataTypeEnum.dt_datetime2:
                    case DataTypeEnum.dt_datetimeoffset:
                        attrStr += "        //表示是 é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§\n";
                        attrStr += "        [HighSearchRangeAttribute]\n";
                        attrStr += "        public List<string>" + str_NullFlag + attr + " { get; set; }\n";
                        attrStr += "        public datetime" + str_NullFlag + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
                    case DataTypeEnum.dt_bigint:
@@ -250,14 +250,299 @@
                        break;
                    case DataTypeEnum.dt_int:
                        if (columnModel.IsNullable) { str_NullFlag = "? "; }
                        var findEnumObj = param.EnumList.Where(x => x.EnumAttrName == attr).FirstOrDefault();
                        if (findEnumObj != null)
                        {
                            attrStr += $"        public {findEnumObj.EnumType}" + str_NullFlag + attr + " { get; set; }\n";
                            attrStr += "\n";//最后是加一个空格
                        }
                        else
                        {
                        attrStr += "        public int" + str_NullFlag + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        }
                        break;
                    default:
                        attrStr += "        public string" + str_NullFlag + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
                }
                return attrStr;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// ç”Ÿæˆå±žæ€§å­—符串ForAddModel-更新实体专用
        /// </summary>
        /// <param name="columnModel"></param>
        /// <returns></returns>
        public static string GenerateAttributeForUpdateModel(ColumnModel columnModel, GenerateCodeParam param)
        {
            try
            {
                string attr = columnModel.ColumnName;
                string attrStr = "";
                attrStr += $"        updateObj.{attr} = input.{attr};\n";
                return attrStr;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// ç”Ÿæˆå±žæ€§å­—符串ForAddModel-更新实体专用(导入时)
        /// </summary>
        /// <param name="columnModel"></param>
        /// <returns></returns>
        public static string GenerateAttributeForUpdateModelByImport(ColumnModel columnModel, GenerateCodeParam param)
        {
            try
            {
                string attr = columnModel.ColumnName;
                string attrStr = "";
                attrStr += $"        {attr} = {param.EntityInstanceName}.{attr};\n";
                return attrStr;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// ç”Ÿæˆå±žæ€§å­—符串ForAddModel-CheckCreateOrUpdateDtoAsync专用
        /// </summary>
        /// <param name="columnModel"></param>
        /// <returns></returns>
        public static string GenerateAttributeForCheckCreateOrUpdateDtoAsync(ColumnModel columnModel, GenerateCodeParam param)
        {
            try
            {
                string attr = columnModel.ColumnName;
                string attrStr = "";
                bool isHaveMaxLength = false;
                if (!string.IsNullOrEmpty(columnModel.DataLength))
                {
                    isHaveMaxLength = true;
                }
                if (columnModel.IsNullable == false)
                {//必填
                    DataTypeEnum myDataType = (DataTypeEnum)Enum.Parse(typeof(DataTypeEnum), "dt_" + columnModel.DataType);
                    switch (myDataType)
                    {
                        case DataTypeEnum.dt_datetime:
                        case DataTypeEnum.dt_datetime2:
                        case DataTypeEnum.dt_datetimeoffset:
                            if (isHaveMaxLength)
                            {
                                attrStr += $"        Check.NotNull(input.{attr}, \"{columnModel.Description}\", {columnModel.DataLength});\n";
                            }
                            else
                            {
                                attrStr += $"        Check.NotNull(input.{attr}, \"{columnModel.Description}\");\n";
                            }
                            break;
                        case DataTypeEnum.dt_bigint:
                            if (isHaveMaxLength)
                            {
                                attrStr += $"        Check.NotNull(input.{attr}, \"{columnModel.Description}\", {columnModel.DataLength});\n";
                            }
                            else
                            {
                                attrStr += $"        Check.NotNull(input.{attr}, \"{columnModel.Description}\");\n";
                            }
                            break;
                        case DataTypeEnum.dt_int:
                        case DataTypeEnum.dt_tinyint:
                            if (isHaveMaxLength)
                            {
                                attrStr += $"        Check.NotNull(input.{attr}, \"{columnModel.Description}\", {columnModel.DataLength});\n";
                            }
                            else
                            {
                                attrStr += $"        Check.NotNull(input.{attr}, \"{columnModel.Description}\");\n";
                            }
                            break;
                        default:
                            if (isHaveMaxLength)
                            {
                                attrStr += $"        Check.NotNullOrWhiteSpace(input.{attr}, \"{columnModel.Description}\", {columnModel.DataLength});\n";
                            }
                            else
                            {
                                attrStr += $"        Check.NotNullOrWhiteSpace(input.{attr}, \"{columnModel.Description}\");\n";
                            }
                            break;
                    }
                }
                return attrStr;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// ç”Ÿæˆå±žæ€§å­—符串ForAddModel-Dto实体专用
        /// </summary>
        /// <param name="columnModel"></param>
        /// <returns></returns>
        public static string GenerateAttributeForDto(ColumnModel columnModel, GenerateCodeParam param)
        {
            try
            {
                string attr = columnModel.ColumnName;
                //if (attr.ToUpper() == "DBId".ToUpper())
                //{
                //    var bb = "";
                //}
                string str_NullFlag = " ";
                string attrStr = "";
                attrStr += "        /// <summary>\n";
                attrStr += "        /// " + columnModel.Description + "\n";
                attrStr += "        /// </summary>\n";
                DataTypeEnum myDataType = (DataTypeEnum)Enum.Parse(typeof(DataTypeEnum), "dt_" + columnModel.DataType);
                switch (myDataType)
                {
                    case DataTypeEnum.dt_datetime:
                    case DataTypeEnum.dt_datetime2:
                    case DataTypeEnum.dt_datetimeoffset:
                        attrStr += "        public datetime" + str_NullFlag + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
                    case DataTypeEnum.dt_bigint:
                        if (columnModel.IsNullable) { str_NullFlag = "? "; }
                        attrStr += "        public long" + str_NullFlag + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
                    case DataTypeEnum.dt_int:
                        if (columnModel.IsNullable) { str_NullFlag = "? "; }
                        var findEnumObj = param.EnumList.Where(x => x.EnumAttrName == attr).FirstOrDefault();
                        if (findEnumObj != null)
                        {
                            attrStr += $"        public {findEnumObj.EnumType}" + str_NullFlag + attr + " { get; set; }\n";
                            attrStr += "\n";//最后是加一个空格
                        }
                        else
                        {
                            attrStr += "        public int" + str_NullFlag + attr + " { get; set; }\n";
                            attrStr += "\n";//最后是加一个空格
                        }
                        break;
                    default:
                        attrStr += "        public string" + str_NullFlag + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
                }
                //增加对枚举类型的支持
                if (param.EnumList?.Count > 0)
                {
                    var findEnumObj = param.EnumList.Where(x => x.EnumAttrName == attr).FirstOrDefault();
                    if (findEnumObj != null)
                    {
                        attrStr += "        /// <summary>\n";
                        attrStr += "        /// " + columnModel.Description + "\n";
                        attrStr += "        /// </summary>\n";
                        attrStr += "        public string" + str_NullFlag + findEnumObj.EnumTypeDesc + " { get; set; }\n";
                        attrStr += "        { \n";
                        attrStr += "            get \n";
                        attrStr += "            { \n";
                        attrStr += $"                return GetEnumDescriptionUtil.GetEnumDescription({findEnumObj.EnumAttrName}); \n";
                        attrStr += "            } \n";
                        attrStr += "        } \n";
                    }
                }
                return attrStr;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// ç”Ÿæˆå±žæ€§å­—符串ForAddModel-Export实体专用
        /// </summary>
        /// <param name="columnModel"></param>
        /// <returns></returns>
        public static string GenerateAttributeForExport(ColumnModel columnModel, GenerateCodeParam param)
        {
            try
            {
                string attr = columnModel.ColumnName;
                //if (attr.ToUpper() == "DBId".ToUpper())
                //{
                //    var bb = "";
                //}
                string str_NullFlag = " ";
                string attrStr = "";
                attrStr += "        /// <summary>\n";
                attrStr += "        /// " + columnModel.Description + "\n";
                attrStr += "        /// </summary>\n";
                attrStr += $"        [ExcelColumn(Name = \"{columnModel.Description}\", Width = 25)]\n";
                DataTypeEnum myDataType = (DataTypeEnum)Enum.Parse(typeof(DataTypeEnum), "dt_" + columnModel.DataType);
                switch (myDataType)
                {
                    case DataTypeEnum.dt_datetime:
                    case DataTypeEnum.dt_datetime2:
                    case DataTypeEnum.dt_datetimeoffset:
                        attrStr += "        public datetime" + str_NullFlag + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
                    case DataTypeEnum.dt_bigint:
                        if (columnModel.IsNullable) { str_NullFlag = "? "; }
                        attrStr += "        public long" + str_NullFlag + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
                    case DataTypeEnum.dt_int:
                        if (columnModel.IsNullable) { str_NullFlag = "? "; }
                        var findEnumObj = param.EnumList.Where(x => x.EnumAttrName == attr).FirstOrDefault();
                        if (findEnumObj != null)
                        {
                            attrStr += $"        public {findEnumObj.EnumType}" + str_NullFlag + attr + " { get; set; }\n";
                            attrStr += "\n";//最后是加一个空格
                        }
                        else
                        {
                            attrStr += "        public int" + str_NullFlag + attr + " { get; set; }\n";
                            attrStr += "\n";//最后是加一个空格
                        }
                        break;
                    default:
                        attrStr += "        public string" + str_NullFlag + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
                }
                return attrStr;
            }
@@ -278,6 +563,10 @@
            try
            {
                string attr = columnModel.ColumnName;
                if (CommonHelper.IsIgnore(attr))
                {
                    return "";
                }
                //if (attr.ToUpper() == "DBId".ToUpper())
                //{
                //    var bb = "";
@@ -311,6 +600,10 @@
                        attrStr += "        public int" + str_NullFlag + emptyStr + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
                    case DataTypeEnum.dt_tinyint:
                        attrStr += "        public bool" + str_NullFlag + emptyStr + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
                    default:
                        attrStr += "        public string" + emptyStr + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
@@ -336,6 +629,11 @@
            try
            {
                string attr = columnModel.ColumnName;
                if (CommonHelper.IsIgnore(attr))
                {
                    return "";
                }
                string attrStr = "";
                attrStr += "        /// <summary>\n";
                attrStr += "        /// " + columnModel.Description + "-查询关系运算符 \n";
@@ -352,6 +650,7 @@
                        return "\n";
                    case DataTypeEnum.dt_bigint:
                    case DataTypeEnum.dt_int:
                    case DataTypeEnum.dt_tinyint:
                        attrStr += "        public SearchFilterModeEnum " + attr + highSearchModeSuffix + " { get; set; }= SearchFilterModeEnum.精准查询;\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Utility/TextHelper.cs
@@ -167,5 +167,110 @@
            return true;
        }
        /// <summary>
        /// ç”Ÿæˆæ–‡ä»¶
        /// </summary>
        /// <param name="_strPath">路径</param>
        /// <param name="_tableName">表名</param>
        /// <param name="_code">生成的代码字符串</param>
        /// <param name="fileType">生成的文件类型</param>
        /// <param name="filePrefixName">前缀</param>
        /// <param name="entityName">实体类名</param>
        /// <param name="modulelogo">模块名字</param>
        /// <returns></returns>
        public static bool Export2File_V2(string _strPath,string fileName, string _tableName, string _code, FileType fileType,
            string filePrefixName, string entityName, string modulelogo)
        {
            string fileFolderPath = _strPath + "\\";
            //string fileTypeName = "";
            //switch (fileType)
            //{
            //    case FileType.Model:
            //        fileTypeName = ".cs";
            //        break;
            //    case FileType.AddModelParam:
            //        entityName = "Add" + modulelogo + "Param";
            //        fileTypeName = ".cs";
            //        break;
            //    case FileType.IBLL:
            //        entityName = "I" + filePrefixName + "BLL";
            //        fileTypeName = ".cs";
            //        break;
            //    case FileType.Controller:
            //        entityName = entityName + "Controller";
            //        fileTypeName = ".cs";
            //        break;
            //    case FileType.JS:
            //        entityName = filePrefixName;
            //        fileTypeName = ".js";
            //        break;
            //    case FileType.CSHTML_List:
            //        entityName = filePrefixName;
            //        fileTypeName = ".cshtml";
            //        break;
            //    case FileType.CSHTML_Detail:
            //        entityName = filePrefixName;
            //        fileTypeName = "Detail.cshtml";
            //        break;
            //    case FileType.XML:
            //        entityName = filePrefixName;
            //        fileTypeName = ".xml";
            //        break;
            //    case FileType.Proc:
            //        entityName = filePrefixName;
            //        fileTypeName = "Proc.sql";
            //        break;
            //    case FileType.DAL:
            //        entityName = filePrefixName;
            //        fileTypeName = "DAL.cs";
            //        break;
            //    case FileType.BLL:
            //        entityName = filePrefixName;
            //        fileTypeName = "BLL.cs";
            //        break;
            //    case FileType.InputModel:
            //        entityName = entityName + "Input";
            //        fileTypeName = ".cs";
            //        break;
            //    case FileType.OutputModel:
            //        entityName = entityName + "Output";
            //        fileTypeName = ".cs";
            //        break;
            //    case FileType.WCF_InterFace:
            //        entityName = "I" + entityName + "Service";
            //        fileTypeName = ".cs";
            //        break;
            //    case FileType.WCF_InterFaceRealize:
            //        entityName = entityName + "Service";
            //        fileTypeName = ".cs";
            //        break;
            //    case FileType.SQL_Insert:
            //        entityName = _tableName + "InsertSQL";
            //        fileTypeName = ".txt";
            //        break;
            //    case FileType.VUE_FunConfig:
            //        entityName = _tableName + "VUE方法配置";
            //        fileTypeName = ".txt";
            //        break;
            //    case FileType.VUEFile:
            //        entityName = modulelogo;
            //        fileTypeName = ".vue";
            //        break;
            //}
            if (!Directory.Exists(fileFolderPath))
            {
                Directory.CreateDirectory(fileFolderPath);
            }
            string filePath = fileFolderPath + "\\" + fileName;
            using (StreamWriter outfile = new StreamWriter(filePath, false, Encoding.GetEncoding("UTF-8")))
            {
                outfile.Write(_code);
            }
            return true;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/³£ÓÃ.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@

$ChinaComment$
$EntityName$
$NameSpacePath$
Weben_CMSרÓôúÂëÉú³ÉÆ÷/CommonDLL/CmsQueryExtensions.dll
Binary files differ
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/build-server.ps1
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
# Paths
$rootFolder = (Get-Item -Path "./" -Verbose).FullName
$serverFolder = Join-Path $rootFolder ("/server")
Set-Location $serverFolder
& dotnet tool install --global dotnet-ef
& dotnet restore -s https://nexus.sycdev.com/repository/nuget-group/index.json
$migrationFolder = Join-Path $serverFolder ("/src/CMS.Plugin.HIAWms.MySQL")
Set-Location $migrationFolder
dotnet ef migrations add InitialCreate -c CMSPluginDbContext -o Migrations
Set-Location $serverFolder
& dotnet build
Set-Location $rootFolder
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/build-web.ps1
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
# Paths
$rootFolder = (Get-Item -Path "./" -Verbose).FullName
$webFolder = Join-Path $rootFolder ("/web")
Set-Location $rootFolder
& npm install yarn -g
& npm install lmes-cli -g
& lmes-cli create web
Set-Location $webFolder
& yarn
& npm run build
Set-Location $rootFolder
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/CmsQueryExtensions.csproj
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
</Project>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/CmsQueryExtensions.sln
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.4.33213.308
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CmsQueryExtensions", "CmsQueryExtensions.csproj", "{D2B006DA-D473-4E98-A588-C1F52945A027}"
EndProject
Global
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
        Debug|Any CPU = Debug|Any CPU
        Release|Any CPU = Release|Any CPU
    EndGlobalSection
    GlobalSection(ProjectConfigurationPlatforms) = postSolution
        {D2B006DA-D473-4E98-A588-C1F52945A027}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {D2B006DA-D473-4E98-A588-C1F52945A027}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {D2B006DA-D473-4E98-A588-C1F52945A027}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {D2B006DA-D473-4E98-A588-C1F52945A027}.Release|Any CPU.Build.0 = Release|Any CPU
    EndGlobalSection
    GlobalSection(SolutionProperties) = preSolution
        HideSolutionNode = FALSE
    EndGlobalSection
    GlobalSection(ExtensibilityGlobals) = postSolution
        SolutionGuid = {912E75B5-EC51-46E7-B058-838F9373EC2E}
    EndGlobalSection
EndGlobal
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Extension/DynamicSearchParameters/Attribute/HighSearchRangeAttribute.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
using System;
namespace CmsQueryExtensions.Extension
{
    /// <summary>
    /// é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§
    /// </summary>
    public class HighSearchRangeAttribute : Attribute
    {
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Extension/DynamicSearchParameters/Attribute/NoAutoQueryAttribute.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
using System;
namespace CmsQueryExtensions.Extension
{
    /// <summary>
    /// ä¸è‡ªåŠ¨æŸ¥è¯¢ç‰¹æ€§
    /// ç”¨äºŽä¸éœ€è¦è‡ªåŠ¨åˆ†è§£æŸ¥è¯¢çš„å­—æ®µ
    /// </summary>
    public class NoAutoQueryAttribute : Attribute
    {
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Extension/DynamicSearchParameters/Entity/FunReturnResultModel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
namespace CmsQueryExtensions.Extension
{
    /// <summary>
    /// æ–¹æ³•返回实体类
    /// </summary>
    public class FunReturnResultModel
    {
        public FunReturnResultModel()
        {
            this.IsSuccess = false;
        }
        /// <summary>
        ///  æ‰§è¡Œæ˜¯å¦æˆåŠŸ
        /// </summary>
        public bool IsSuccess { get; set; }
        /// <summary>
        /// é”™è¯¯ä¿¡æ¯
        /// </summary>
        public string ErrMsg { get; set; }
    }
    /// <summary>
    /// æ–¹æ³•返回实体类
    /// </summary>
    public class FunReturnResultModel<T>
    {
        /// <summary>
        ///  æ‰§è¡Œæ˜¯å¦æˆåŠŸ
        /// </summary>
        public bool IsSuccess { get; set; }
        /// <summary>
        /// é”™è¯¯ä¿¡æ¯
        /// </summary>
        public string ErrMsg { get; set; }
        /// <summary>
        /// è¿”回数据
        /// </summary>
        public T data { get; set; }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Extension/DynamicSearchParameters/Entity/GlobalVars.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
namespace CmsQueryExtensions.Extension
{
    /// <summary>
    /// ç³»ç»Ÿé€šç”¨çš„常量
    /// </summary>
    public static class SystemCommonVar
    {
        /// <summary>
        /// é€šç”¨çš„æŸ¥è¯¢å­—符串
        /// </summary>
        public const string searchVal = "searchVal";
        /// <summary>
        /// é«˜çº§æŸ¥è¯¢çš„后缀名
        /// </summary>
        public const string highSearchModeSuffix = "_FilterMode";
        /// <summary>
        /// é€šç”¨çš„æŸ¥è¯¢å­—符串的配置模式
        /// </summary>
        public const string searchVal_FilterMode = searchVal + highSearchModeSuffix;
        /// <summary>
        /// å­æœç´¢ç»„件传递的属性名
        /// </summary>
        public const string searchFormInputAttrs = "searchFormInputAttrs";
        /// <summary>
        /// CMS系统专用的一些查询过滤参数
        /// </summary>
        public const string cms_no_query = "str_searchFormInputAttrs|Sorting|SkipCount|DefaultMaxResultCount|MaxMaxResultCount|MaxResultCount|";
        /// <summary>
        /// é€šç”¨çš„æŸ¥è¯¢å‚数类的父类中的字段
        /// </summary>
        public const string commnParamFatherPros = cms_no_query + "SortField|SortOrder|DescStr|PageNo|PageSize|page|pageSize|" + searchVal + "|" + searchVal_FilterMode + "|" + searchFormInputAttrs;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Extension/DynamicSearchParameters/Entity/HighSearchModel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
namespace CmsQueryExtensions.Extension
{
    /// <summary>
    /// é«˜çº§æŸ¥è¯¢å®žä½“
    /// </summary>
    public class HighSearchModel
    {
        public string fieldName { get; set; }
        public string fieldValue { get; set; }
        /// <summary>
        /// ç­›é€‰æ¨¡å¼
        /// </summary>
        public SearchFilterModeEnum filterMode { get; set; }
    }
    /// <summary>
    /// é«˜çº§æ—¥æœŸèŒƒå›´æŸ¥è¯¢å®žä½“
    /// </summary>
    public class HighSearchForDateTimeRangeModel
    {
        public string fieldName { get; set; }
        public string start_fieldValue { get; set; }
        public string end_fieldValue { get; set; }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Extension/DynamicSearchParameters/Entity/SearchFilterModeEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
namespace CmsQueryExtensions.Extension
{
    /// <summary>
    /// é€šç”¨æŸ¥è¯¢é…ç½®æ¨¡å¼
    /// </summary>
    public enum SearchFilterModeEnum
    {
        ä¸ç­›é€‰ = 0,
        æ¨¡ç³ŠæŸ¥è¯¢ = 1,
        ç²¾å‡†æŸ¥è¯¢ = 2,
        å¤§äºŽç­‰äºŽ = 3,
        å°äºŽç­‰äºŽ = 4,
        å¤§äºŽ = 5,
        å°äºŽ = 6,
        ä¸ç­‰äºŽ = 7
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Extension/DynamicSearchParameters/PredicateExtensions/ClassHelper.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,187 @@
using System.Reflection;
namespace CmsQueryExtensions.Extension
{
    /// <summary>
    /// ç±»å¸®åŠ©
    /// </summary>
    public class ClassHelper
    {
        /// <summary>
        /// å®žä½“互转
        /// </summary>
        /// <typeparam name="T">新转换的实体</typeparam>
        /// <typeparam name="S">要转换的实体</typeparam>
        /// <param name="s"></param>
        /// <returns></returns>
        public static T RotationMapping<T, S>(S s)
        {
            T target = Activator.CreateInstance<T>();
            var originalObj = s.GetType();
            var targetObj = typeof(T);
            foreach (PropertyInfo original in originalObj.GetProperties())
            {
                foreach (PropertyInfo t in targetObj.GetProperties())
                {
                    if (t.Name == original.Name)
                    {
                        t.SetValue(target, original.GetValue(s, null), null);
                    }
                }
            }
            return target;
        }
        /// <summary>
        /// èŽ·å–å±žæ€§å¯¹è±¡åˆ—è¡¨
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t"></param>
        /// <param name="proName"></param>
        /// <param name="errMsg"></param>
        /// <returns></returns>
        public static PropertyInfo[] GetPropertyInfoList<T>(T t)
        {
            var pros = typeof(T).GetProperties();
            return pros;
        }
        /// <summary>
        /// èŽ·å–å±žæ€§å¯¹è±¡
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t"></param>
        /// <param name="proName"></param>
        /// <param name="errMsg"></param>
        /// <returns></returns>
        public static PropertyInfo GetPropertyInfo<T>(T t, string proName, out string errMsg)
        {
            errMsg = "";
            var pro = typeof(T).GetProperty(proName);
            if (pro == null)
            {
                errMsg = "属性名'" + proName + "'不存在类'" + typeof(T).Name + "'中";
                return null;
            }
            return pro;
        }
        /// <summary>
        /// èŽ·å–å±žæ€§çš„å€¼
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t"></param>
        /// <param name="proName"></param>
        /// <param name="errMsg"></param>
        /// <returns></returns>
        public static string GetPropertyValue<T>(T t, string proName, out string errMsg)
        {
            var pro = GetPropertyInfo(t, proName, out errMsg);
            if (!string.IsNullOrEmpty(errMsg))
            {
                return string.Empty;
            }
            var pro_value = pro.GetValue(t, null);
            var str = pro_value == null ? string.Empty : Convert.ToString(pro_value);
            return str;
        }
        /// <summary>
        /// èŽ·å–å±žæ€§çš„å€¼
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t"></param>
        /// <param name="proName"></param>
        /// <param name="errMsg"></param>
        /// <returns></returns>
        public static object GetPropertyValueForReObject<T>(T t, string proName, out string errMsg)
        {
            var pro = GetPropertyInfo(t, proName, out errMsg);
            if (!string.IsNullOrEmpty(errMsg))
            {
                return null;
            }
            var pro_value = pro.GetValue(t, null);
            var str = pro_value == null ? null : (pro_value);
            return str;
        }
        /// <summary>
        /// é€šè¿‡å±žæ€§å¯¹è±¡èŽ·å–å±žæ€§çš„å€¼
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t"></param>
        /// <param name="pro"></param>
        /// <returns></returns>
        public static string GetPropertyValueByObject<T>(T t, PropertyInfo pro)
        {
            var pro_value = pro.GetValue(t, null);
            var str = pro_value == null ? string.Empty : Convert.ToString(pro_value);
            return str;
        }
        /// <summary>
        /// é€šè¿‡å±žæ€§å¯¹è±¡èŽ·å–å±žæ€§çš„å€¼
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t"></param>
        /// <param name="pro"></param>
        /// <returns></returns>
        public static object GetPropertyValue<T>(T t, PropertyInfo pro)
        {
            var pro_value = pro.GetValue(t, null);
            return pro_value;
        }
        /// <summary>
        /// èŽ·å–ç‰¹æ€§ã€é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§ã€‘
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t"></param>
        /// <param name="pro"></param>
        /// <returns></returns>
        public static object[] GetHighSearchRangeAttributeByPro(PropertyInfo pro)
        {
            object[] Attributes = pro.GetCustomAttributes(typeof(HighSearchRangeAttribute), false);
            return Attributes;
        }
        /// <summary>
        /// èŽ·å–ç‰¹æ€§ã€ä¸è‡ªåŠ¨æŸ¥è¯¢ç‰¹æ€§ã€‘
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t"></param>
        /// <param name="pro"></param>
        /// <returns></returns>
        public static bool IsExistNoAutoQueryAttribute(PropertyInfo pro)
        {
            object[] attributes = pro.GetCustomAttributes(typeof(NoAutoQueryAttribute), false);
            if (attributes.Length > 0)
            {
                return true;
            }
            return false;
        }
        /// <summary>
        /// èŽ·å–å±žæ€§çš„å€¼
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t"></param>
        /// <param name="proName"></param>
        /// <param name="errMsg"></param>
        /// <returns></returns>
        public static List<string> GetPropertyValueForList<T>(T t, string proName, out string errMsg)
        {
            var pro = GetPropertyInfo(t, proName, out errMsg);
            if (!string.IsNullOrEmpty(errMsg))
            {
                return null;
            }
            var pro_value = pro.GetValue(t, null);
            var list = pro_value == null ? null : (List<string>)pro_value;
            return list;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Extension/DynamicSearchParameters/PredicateExtensions/PredicateExtensions.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,223 @@
using System.Linq.Expressions;
namespace CmsQueryExtensions.Extension
{
    internal class ParameterRebinder : ExpressionVisitor
    {
        private readonly Dictionary<ParameterExpression, ParameterExpression> map;
        public ParameterRebinder(Dictionary<ParameterExpression, ParameterExpression> map)
        {
            this.map = map ?? new Dictionary<ParameterExpression, ParameterExpression>();
        }
        public static Expression ReplaceParameters(Dictionary<ParameterExpression, ParameterExpression> map, Expression exp)
        {
            return new ParameterRebinder(map).Visit(exp);
        }
        protected override Expression VisitParameter(ParameterExpression p)
        {
            ParameterExpression replacement;
            if (map.TryGetValue(p, out replacement))
            {
                p = replacement;
            }
            return base.VisitParameter(p);
        }
    }
    internal static class PredicateExtensions
    {
        public static Expression<Func<T, bool>> True<T>() { return f => true; }
        public static Expression<Func<T, bool>> False<T>() { return f => false; }
        public static Expression<T> Compose<T>(this Expression<T> first, Expression<T> second, Func<Expression, Expression, Expression> merge)
        {
            // build parameter map (from parameters of second to parameters of first)
            var map = first.Parameters.Select((f, i) => new { f, s = second.Parameters[i] }).ToDictionary(p => p.s, p => p.f);
            // replace parameters in the second lambda expression with parameters from the first
            var secondBody = ParameterRebinder.ReplaceParameters(map, second.Body);
            // apply composition of lambda expression bodies to parameters from the first expression
            return Expression.Lambda<T>(merge(first.Body, secondBody), first.Parameters);
        }
        public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> first, Expression<Func<T, bool>> second)
        {
            return first.Compose(second, Expression.And);
        }
        public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> first, Expression<Func<T, bool>> second)
        {
            return first.Compose(second, Expression.Or);
        }
        /// <summary>
        /// æ‹¼æŽ¥æˆ c.Name.contains("1111")||c.Name.Contains("2222")||c.Name.Contains("3333")) å½¢å¼
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="options"></param>
        /// <param name="fieldName"></param>
        /// <returns></returns>
        public static Expression<Func<T, bool>> GetConditionExpression<T>(string[] options, string fieldName)
        {
            ParameterExpression left = Expression.Parameter(typeof(T), "c");//c=>
            Expression expression = Expression.Constant(false);
            foreach (var optionName in options)
            {
                Expression right = Expression.Call
                       (
                          Expression.Property(left, typeof(T).GetProperty(fieldName)),  //c.DataSourceName
                          typeof(string).GetMethod("Contains", new Type[] { typeof(string) }),// åå°„使用.Contains()方法
                          Expression.Constant(optionName)           // .Contains(optionName)
                       );
                expression = Expression.Or(right, expression);//c.DataSourceName.contain("") || c.DataSourceName.contain("")
            }
            Expression<Func<T, bool>> finalExpression
                = Expression.Lambda<Func<T, bool>>(expression, new ParameterExpression[] { left });
            return finalExpression;
        }
        /// <summary>
        /// (模糊查询)拼接成 c.Name.contains("1111")||c.Code.Contains("1111")||c.Address.Contains("1111")) å½¢å¼
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="options"></param>
        /// <param name="fieldName"></param>
        /// <returns></returns>
        public static Expression<Func<T, bool>> GetConditionExpressionForFuzzyQuery<T>(string[] fieldNames, string fieldValue)
        {
            try
            {
                ParameterExpression left = Expression.Parameter(typeof(T), "c");//c=>
                Expression expression = Expression.Constant(false);
                foreach (var fieldName in fieldNames)
                {
                    try
                    {
                        Expression right = Expression.Call
                           (
                              Expression.Property(left, typeof(T).GetProperty(fieldName)),  //c.DataSourceName
                              typeof(string).GetMethod("Contains", new Type[] { typeof(string) }),// åå°„使用.Contains()方法
                              Expression.Constant(fieldValue)           // .Contains(fieldValue)
                           );
                        expression = Expression.Or(right, expression);//c.AAA.contain("") || c.BBB.contain("")
                    }
                    catch (Exception ex)
                    {
                        throw new Exception($"参数{fieldName}匹配关键字查询时失败:" + ex.Message);
                    }
                }
                Expression<Func<T, bool>> finalExpression
                    = Expression.Lambda<Func<T, bool>>(expression, new ParameterExpression[] { left });
                return finalExpression;
            }
            catch (Exception)
            {
                throw;
            }
        }
        /// <summary>
        /// ï¼ˆç²¾å‡†æŸ¥è¯¢ï¼‰æ‹¼æŽ¥æˆ c.Name.equals("1111")||c.Code.equals("1111")||c.Address.equals("1111")) å½¢å¼
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="options"></param>
        /// <param name="fieldName"></param>
        /// <returns></returns>
        public static Expression<Func<T, bool>> GetConditionExpressionForPreciseQuery<T>(string[] fieldNames, string fieldValue)
        {
            ParameterExpression left = Expression.Parameter(typeof(T), "c");//c=>
            Expression expression = Expression.Constant(false);
            foreach (var fieldName in fieldNames)
            {
                Expression right = Expression.Call
                       (
                          Expression.Property(left, typeof(T).GetProperty(fieldName)),  //c.DataSourceName
                          typeof(string).GetMethod("Equals", new Type[] { typeof(string) }),// åå°„使用.Equals()方法
                          Expression.Constant(fieldValue)           // .Equals(fieldValue)
                       );
                expression = Expression.Or(right, expression);//c.AAA.equals("") || c.BBB.equals("")
            }
            Expression<Func<T, bool>> finalExpression
                = Expression.Lambda<Func<T, bool>>(expression, new ParameterExpression[] { left });
            return finalExpression;
        }
        public static Expression<Func<T, bool>> GetConditionExpressionForHighFieldByAnd<T>(List<HighSearchModel> hsmList)
        {
            var whereHelper = new WhereHelper<T>();
            foreach (var field in hsmList)
            {
                switch (field.filterMode)
                {
                    case SearchFilterModeEnum.不等于:
                        whereHelper.NotEqual(field.fieldName, field.fieldValue);
                        break;
                    case SearchFilterModeEnum.大于:
                        whereHelper.GreaterThan(field.fieldName, field.fieldValue);
                        break;
                    case SearchFilterModeEnum.大于等于:
                        whereHelper.GreaterThanOrEqual(field.fieldName, field.fieldValue);
                        break;
                    case SearchFilterModeEnum.小于:
                        whereHelper.LessThan(field.fieldName, field.fieldValue);
                        break;
                    case SearchFilterModeEnum.小于等于:
                        whereHelper.LessThanOrEqual(field.fieldName, field.fieldValue);
                        break;
                    case SearchFilterModeEnum.模糊查询:
                        whereHelper.Contains(field.fieldName, field.fieldValue);
                        break;
                    case SearchFilterModeEnum.精准查询:
                        whereHelper.Equal(field.fieldName, field.fieldValue);
                        break;
                }
            }
            Expression<Func<T, bool>> finalExpression
                = Expression.Lambda<Func<T, bool>>(whereHelper.filter, new ParameterExpression[] { whereHelper.param });
            return finalExpression;
        }
        public static Expression<Func<T, bool>> GetConditionExpressionForHighFieldByAnd<T>(List<HighSearchForDateTimeRangeModel> hsmForDatetimeList)
        {
            var whereHelper = new WhereHelper<T>();
            foreach (var field in hsmForDatetimeList)
            {
                whereHelper.GreaterThanOrEqual(field.fieldName, field.start_fieldValue);
                whereHelper.LessThanOrEqual(field.fieldName, field.end_fieldValue);
            }
            Expression<Func<T, bool>> finalExpression
                = Expression.Lambda<Func<T, bool>>(whereHelper.filter, new ParameterExpression[] { whereHelper.param });
            return finalExpression;
        }
        /// <summary>
        /// æ—¥æœŸèŒƒå›´OR连接
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="hsmForDatetimeList"></param>
        /// <returns></returns>
        public static Expression<Func<T, bool>> GetConditionExpressionForHighDateTimeRangeFieldByOr<T>(List<HighSearchForDateTimeRangeModel> hsmForDatetimeList)
        {
            Expression<Func<T, bool>> finalExpression = null;
            var whereHelper = new WhereHelper<T>();
            foreach (var field in hsmForDatetimeList)
            {
                whereHelper.GreaterThanOrEqual(field.fieldName, field.start_fieldValue);
                whereHelper.LessThanOrEqual(field.fieldName, field.end_fieldValue);
                finalExpression
                = Expression.Lambda<Func<T, bool>>(whereHelper.filter, new ParameterExpression[] { whereHelper.param });
                finalExpression = finalExpression.Or(finalExpression);
            }
            return finalExpression;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Extension/DynamicSearchParameters/PredicateExtensions/WhereHelper.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,177 @@
using System;
using System.ComponentModel;
using System.Linq.Expressions;
using System.Reflection;
namespace CmsQueryExtensions.Extension
{
    public class WhereHelper<T>
    //where T : class
    {
        public ParameterExpression param;
        public BinaryExpression filter;
        private MemberExpression common_left;
        private UnaryExpression common_right;
        public WhereHelper()
        {
            param = Expression.Parameter(typeof(T), "c");//构建 c=> ç»“æž„
            //1==1
            Expression left = Expression.Constant(1);
            filter = Expression.Equal(left, left);//构建出 c=> 1=1
        }
        public Expression<Func<T, bool>> GetExpression()
        {
            return Expression.Lambda<Func<T, bool>>(filter, param);
        }
        private void CommonLeftRight(string propertyName, object value)
        {
            common_left = Expression.Property(param, typeof(T).GetProperty(propertyName));//构建构建c.{propertyName}的结构
            var member = Expression.Property(param, propertyName);
            var propertyType = ((PropertyInfo)member.Member).PropertyType;
            var converter = TypeDescriptor.GetConverter(propertyType); // 1
            if (!converter.CanConvertFrom(typeof(string))) // 2
                throw new NotSupportedException();
            var propertyValue = converter.ConvertFromInvariantString(value.ToString()); // 3
            var constant = Expression.Constant(propertyValue);
            common_right = Expression.Convert(constant, propertyType); // 4
            // common_right = Expression.Constant(value, value.GetType());//构建一个常量,值是  value
        }
        /// <summary>
        /// ç­‰äºŽ =
        /// </summary>
        /// <param name="propertyName"></param>
        /// <param name="value"></param>
        public void Equal(string propertyName, object value)
        {
            CommonLeftRight(propertyName, value);
            Expression result = Expression.Equal(common_left, common_right);
            filter = Expression.And(filter, result);
        }
        /// <summary>
        /// ä¸ç­‰äºŽ <>
        /// </summary>
        /// <param name="propertyName"></param>
        /// <param name="value"></param>
        public void NotEqual(string propertyName, object value)
        {
            CommonLeftRight(propertyName, value);
            Expression result = Expression.NotEqual(common_left, common_right);
            filter = Expression.And(filter, result);
        }
        /// <summary>
        /// å¤§äºŽ >
        /// </summary>
        /// <param name="propertyName"></param>
        /// <param name="value"></param>
        public void GreaterThan(string propertyName, object value)
        {
            CommonLeftRight(propertyName, value);
            Expression result = Expression.GreaterThan(common_left, common_right);
            filter = Expression.And(filter, result);
        }
        /// <summary>
        /// å¤§äºŽç­‰äºŽ >=
        /// </summary>
        /// <param name="propertyName"></param>
        /// <param name="value"></param>
        public void GreaterThanOrEqual(string propertyName, object value)
        {
            CommonLeftRight(propertyName, value);
            Expression result = Expression.GreaterThanOrEqual(common_left, common_right);
            filter = Expression.And(filter, result);
        }
        /// <summary>
        /// å°äºŽ <
        /// </summary>
        /// <param name="propertyName"></param>
        /// <param name="value"></param>
        public void LessThan(string propertyName, object value)
        {
            CommonLeftRight(propertyName, value);
            Expression result = Expression.LessThan(common_left, common_right);
            filter = Expression.And(filter, result);
        }
        /// <summary>
        /// å°äºŽç­‰äºŽ <=
        /// </summary>
        /// <param name="propertyName"></param>
        /// <param name="value"></param>
        public void LessThanOrEqual(string propertyName, object value)
        {
            CommonLeftRight(propertyName, value);
            Expression result = Expression.LessThanOrEqual(common_left, common_right);
            filter = Expression.And(filter, result);
        }
        /// <summary>
        /// åŒ…含 LIKE
        /// </summary>
        /// <param name="propertyName"></param>
        /// <param name="value"></param>
        public void Contains(string propertyName, string value)
        {
            Expression left = Expression.Property(param, typeof(T).GetProperty(propertyName));
            Expression right = Expression.Constant(value, value.GetType());
            Expression result = Expression.Call(left, typeof(string).GetMethod("Contains", new Type[] { typeof(string) }), right);
            filter = Expression.And(filter, result);
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Extension/DynamicSearchParameters/WhereConditionsExtensions.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,248 @@
using System.Linq.Expressions;
using System.Reflection;
namespace CmsQueryExtensions.Extension
{
    /// <summary>
    /// ç”ŸæˆWhere条件扩展
    /// </summary>
    public class WhereConditionsExtensions
    {
        public static FunReturnResultModel<Expression<Func<T, bool>>> GetWhereConditions<T, TParam>(TParam param)
        {
            FunReturnResultModel<Expression<Func<T, bool>>> result = new FunReturnResultModel<Expression<Func<T, bool>>>();
            try
            {
                Expression<Func<T, bool>> conditions = PredicateExtensions.True<T>();
                var errMsg = "";
                #region 1、通用查询searchVal
                //判断通用查询searchVal
                var pro_value_searchVal = ClassHelper.GetPropertyValue<TParam>(param, SystemCommonVar.searchVal, out errMsg);
                if (!string.IsNullOrEmpty(errMsg))
                {
                    result.IsSuccess = false;
                    result.ErrMsg = errMsg;
                    return result;
                }
                if (!string.IsNullOrEmpty(pro_value_searchVal))
                {//表示 é€šç”¨æŸ¥è¯¢searchVal不为空,需要查询
                    var pro_value_searchValMode = ClassHelper.GetPropertyValue<TParam>(param, SystemCommonVar.searchVal_FilterMode, out errMsg);
                    if (!string.IsNullOrEmpty(errMsg))
                    {
                        result.IsSuccess = false;
                        result.ErrMsg = errMsg;
                        return result;
                    }
                    var pro_value_searchFormInputAttrs = ClassHelper.GetPropertyValueForList<TParam>(param, SystemCommonVar.searchFormInputAttrs, out errMsg);
                    if (!string.IsNullOrEmpty(errMsg))
                    {
                        result.IsSuccess = false;
                        result.ErrMsg = errMsg;
                        return result;
                    }
                    if (pro_value_searchFormInputAttrs != null && pro_value_searchFormInputAttrs.Count > 0)
                    {
                        var i_pro_value_searchValMode = Convert.ToInt32(((SearchFilterModeEnum)Enum.Parse(typeof(SearchFilterModeEnum), pro_value_searchValMode)));
                        if (i_pro_value_searchValMode == Convert.ToInt32(SearchFilterModeEnum.模糊查询))
                        {//模糊查询
                            try
                            {
                                var new_conditions = PredicateExtensions.GetConditionExpressionForFuzzyQuery<T>(pro_value_searchFormInputAttrs.ToArray(), pro_value_searchVal);
                                conditions = conditions.And(new_conditions);
                            }
                            catch (Exception ex)
                            {
                                result.data = null;
                                result.IsSuccess = false;
                                result.ErrMsg = ex.Message;
                                return result;
                            }
                        }
                        else if (i_pro_value_searchValMode == Convert.ToInt32(SearchFilterModeEnum.精准查询))
                        {//精准查询
                            var new_conditions = PredicateExtensions.GetConditionExpressionForPreciseQuery<T>(pro_value_searchFormInputAttrs.ToArray(), pro_value_searchVal);
                            conditions = conditions.And(new_conditions);
                            /*
                          pro_value_searchFormInputAttrs.ForEach(x =>
                          {
                            if (!string.IsNullOrEmpty(x))
                            {
                                var myParam = Expression.Parameter(typeof(T));
                                var condition =
Expression.Lambda<Func<T, bool>>(
    Expression.Equal(
        Expression.Property(myParam, x),
        Expression.Constant(pro_value_searchVal, typeof(string))
    ),
    myParam
); // for LINQ to SQl/Entities skip Compile() call
                                conditions = conditions.And(condition);
                        }
                        });
                             //*/
                        }
                        else
                        {
                            result.IsSuccess = false;
                            result.ErrMsg = "通用查询配置不正确";
                            return result;
                        }
                    }
                }
                #endregion
                #region 2、高级查询
                var high_pros = FilterHigh_pros<TParam>(param);
                List<HighSearchForDateTimeRangeModel> hsmForDatetimeList = new List<HighSearchForDateTimeRangeModel>();
                List<HighSearchModel> hsmList = GetHighSearchModelList<TParam>(param, high_pros, ref hsmForDatetimeList);
                if (hsmList.Count > 0)
                {
                    var high_conditions = PredicateExtensions.GetConditionExpressionForHighFieldByAnd<T>(hsmList);
                    conditions = conditions.And(high_conditions);
                }
                if (hsmForDatetimeList.Count > 0)
                {
                    var high_conditions = PredicateExtensions.GetConditionExpressionForHighFieldByAnd<T>(hsmForDatetimeList);
                    conditions = conditions.And(high_conditions);
                }
                #endregion
                result.data = conditions;
                result.IsSuccess = true;
                return result;
            }
            catch (Exception ex)
            {
                throw;
            }
        }
        /// <summary>
        /// è¿‡æ»¤æŽ‰Mode后缀的属性 å’Œä¸€äº›ç‰¹æ®Šå±žæ€§çš„,如DateTimeRange
        /// </summary>
        /// <typeparam name="TParam"></typeparam>
        /// <param name="param"></param>
        /// <param name="high_pros"></param>
        /// <returns></returns>
        private static List<HighSearchModel> GetHighSearchModelList<TParam>(TParam param, List<PropertyInfo> high_pros, ref List<HighSearchForDateTimeRangeModel> hsmForDatetimeList)
        {
            List<HighSearchModel> hsmList = new List<HighSearchModel>();
            string errMsg = "";
            SearchFilterModeEnum _svmEnum = default(SearchFilterModeEnum);
            var hsmValue = "";
            var pro_value = "";
            foreach (var pro in high_pros)
            {
                if (!pro.Name.Contains(SystemCommonVar.highSearchModeSuffix))
                {//不是Mode后缀的字段
                 //判断是不是有特性特性的值
                    var _highSearchRangeAttribute = ClassHelper.GetHighSearchRangeAttributeByPro(pro);
                    if (_highSearchRangeAttribute.Length > 0)
                    {
                        object v = ClassHelper.GetPropertyValue<TParam>(param, pro);
                        if (v == null)
                        {
                            continue;
                        }
                        List<string> arr_value = v as List<string>;
                        if (arr_value.Count < 2)
                        {
                            continue;
                        }
                        //string[] arr_value = (string[])v;
                        //string[] arr_value = Convert.ToString(v).Split(',');
                        hsmForDatetimeList.Add(new HighSearchForDateTimeRangeModel()
                        {
                            fieldName = pro.Name,
                            start_fieldValue = arr_value[0],
                            end_fieldValue = arr_value[1]
                        });
                        continue;
                    }
                    pro_value = ClassHelper.GetPropertyValueByObject<TParam>(param, pro);
                    if (string.IsNullOrEmpty(pro_value))
                    {
                        continue;
                    }
                    if (!ClassHelper.IsExistNoAutoQueryAttribute(pro))
                    {
                        //查找是相应Mode后缀的字段的值
                        try
                        {
                            //修复查询异常bug ã€Editby shaocx,2025-05-03】
                            SearchFilterModeEnum? _svmEnum_obj = null;
                            _svmEnum_obj = (SearchFilterModeEnum?)ClassHelper.GetPropertyValueForReObject<TParam>(param, pro.Name + SystemCommonVar.highSearchModeSuffix, out errMsg);
                            if (_svmEnum_obj != null) { _svmEnum = _svmEnum_obj.Value; }
                            else
                            {
                                _svmEnum = SearchFilterModeEnum.不筛选;
                            }
                        }
                        catch (Exception ex)
                        {
                            //处理异常信息 ã€Editby shaocx,2025-05-03】
                            _svmEnum = SearchFilterModeEnum.不筛选;
                        }
                        //if (!string.IsNullOrEmpty(errMsg))
                        //{
                        //    throw new Exception(errMsg);
                        //}
                        //if (hsmValue == "0" || string.IsNullOrEmpty(hsmValue))
                        //{
                        //    continue;
                        //}
                        //_svmEnum = (SearchFilterModeEnum)Enum.Parse(typeof(SearchFilterModeEnum), hsmValue);
                        if (_svmEnum == SearchFilterModeEnum.不筛选)
                        {
                            continue;
                        }
                        hsmList.Add(new HighSearchModel()
                        {
                            fieldName = pro.Name,
                            fieldValue = pro_value,
                            filterMode = _svmEnum
                        });
                    }
                }
            }
            return hsmList;
        }
        /// <summary>
        /// è¿‡æ»¤ä¸€äº›ä¸éœ€è¦çš„字段,如Page、PageSize等
        /// </summary>
        /// <typeparam name="TParam"></typeparam>
        /// <param name="param"></param>
        /// <returns></returns>
        private static List<PropertyInfo> FilterHigh_pros<TParam>(TParam param)
        {
            var all_high_pros = ClassHelper.GetPropertyInfoList<TParam>(param);
            var high_pros = new List<PropertyInfo>();
            //排除不用的
            for (int i = 0; i < all_high_pros.Length; i++)
            {
                if (!SystemCommonVar.commnParamFatherPros.Contains(all_high_pros[i].Name))
                {
                    high_pros.Add(all_high_pros[i]);
                }
            }
            return high_pros;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/.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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/.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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/.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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/CMS.Plugin.TemplateDemo.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}") = "解决方案项", "解决方案项", "{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.HIAWms", "src\CMS.Plugin.HIAWms\CMS.Plugin.HIAWms.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
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/README.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2 @@
# HIAWms
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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) | ä¸ŽIList类似,只是没有顺序关系。  |
## å››ã€å®žä½“(Entity)及聚合根(AggregateRoot)
实体是模型中需要区分个体的对象,拥有标识、数据和行为。实体有标识,允许变化,判断两个实体相等的标准是标识相等。聚合(Aggregate)表示一组领域对象(包括实体和值对象),用来表述一个完整的领域概念。而每个聚合都有一个根实体,这个根实体又叫做聚合根。聚合根是聚合所表述的领域概念的主体,外部对象需要访问聚合内的实体时,只能通过聚合根进行访问,而不能直接访问。
## äº”、枚举
## å…­ã€å€¼å¯¹è±¡ï¼ˆValueObject)
值对象是通过属性来识别的对象,它将多个相关属性组合为一个概念整体。值对象没有标识,不允许变化,判断两个值对象相等的标准是值对象内部所有属性值相等。
## å…­ã€é¢†åŸŸæœåŠ¡
不涉及
## ä¸ƒã€é¢†åŸŸäº‹ä»¶
不涉及
## å…«ã€å…¶ä»–
不涉及
## ä¹ã€å‚考引用
不涉及
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsAbstractionsModule.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
namespace CMS.Plugin.HIAWms.Abstractions;
/// <summary>
/// æµç¨‹ä¸šåŠ¡æ‰©å±•æ¨¡å—
/// </summary>
public class CMSPluginHIAWmsAbstractionsModule
{
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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";
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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";
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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来源于Flow组件,此处需共享CMS.Plugin.HIAWms.Abstractions程序集,否则无法调用,修改CMS.Plugin.HIAWms项目中的CMSPluginModule.cs文件,取消注释GetSharedAssemblies()方法
            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;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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);
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Abstractions/Properties/AssemblyInfo.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
using SYC.Flow.Kernel;
[assembly: ProcessflowExtention(true)]
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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
                 */
        });
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
    /// ä»“库代码
    /// </summary>
    public string? StoreCode { get; set; }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
    /// ä»“库代码
    /// </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; }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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; }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>原材料A区</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>
            /// ä»“库代码
            /// </summary
            [ExcelColumn(Name = "仓库代码", 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; }
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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; }
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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; }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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)
    {
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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; }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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; }
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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; }
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsEnumDto/WmsEnumInput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
using 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; }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/GetWmsMaterialInput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,311 @@
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、m、个)
    /// </summary>
    public string PrimaryUnit { get; set; }
    /// <summary>
    /// ä¸»å•位(如:kg、m、个)-查询关系运算符
    /// </summary>
    public SearchFilterModeEnum PrimaryUnit_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
    /// <summary>
    /// è§„æ ¼/标准(如:GB/T 8163-2018)
    /// </summary>
    public string Standard { get; set; }
    /// <summary>
    /// è§„æ ¼/标准(如:GB/T 8163-2018)-查询关系运算符
    /// </summary>
    public SearchFilterModeEnum Standard_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
    /// <summary>
    /// å¤–径(单位:mm)
    /// </summary>
    public string OuterDiameter { get; set; }
    /// <summary>
    /// å¤–径(单位:mm)-查询关系运算符
    /// </summary>
    public SearchFilterModeEnum OuterDiameter_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
    /// <summary>
    /// å£åŽšï¼ˆå•ä½ï¼šmm)
    /// </summary>
    public string 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 string 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>
    public string ConcurrencyStamp { get; set; }
    /// <summary>
    /// -查询关系运算符
    /// </summary>
    public SearchFilterModeEnum ConcurrencyStamp_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; }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
/// <summary>
/// WmsMaterial创建参数对象
/// </summary>
public class WmsMaterialCreateDto : WmsMaterialCreateOrUpdateDtoBase
{
    /// <summary>
    /// æŽ’序
    /// </summary>
    public virtual int? Sort { get; set; }
    /// <summary>
    /// æ˜¯å¦ç¦ç”¨
    /// </summary>
    public bool? IsDisabled { get; set; } = false;
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateOrUpdateDtoBase.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,101 @@
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、m、个)
    /// </summary>
    public string PrimaryUnit { get; set; }
    /// <summary>
    /// è§„æ ¼/标准(如:GB/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>
    /// æ˜¯å¦ä¸ºä¸»æ”¯ç®¡ï¼ˆtrue: ä¸»æ”¯ç®¡, 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 string Remark { get; set; }
    /// <summary>
    /// Initializes a new instance of the <see cref="WmsMaterialCreateOrUpdateDtoBase"/> class.
    /// </summary>
    public WmsMaterialCreateOrUpdateDtoBase() : base(false)
    {
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,158 @@
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
/// <summary>
/// WmsMaterial数据参数对象
/// </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、m、个)
    /// </summary>
    public string PrimaryUnit { get; set; }
    /// <summary>
    /// è§„æ ¼/标准(如:GB/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>
    /// æ˜¯å¦ä¸ºä¸»æ”¯ç®¡ï¼ˆ1: ä¸»æ”¯ç®¡, 2: éžä¸»æ”¯ç®¡ï¼‰
    /// </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 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;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialExportModel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,157 @@
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>
    /// WmsMaterial导出模型
    /// </summary>
    public class MaterialExportModel
    {
        /// <summary>
        /// ç‰©æ–™ç¼–码(唯一标识)
        /// </summary>
        /// <example>MAT-2023-001</example>
        [ExcelColumn(Name = "物料编码", Width = 25)]
        public string MaterialCode { get; set; }
        /// <summary>
        /// ç‰©æ–™åç§°
        /// </summary>
        /// <example>304不锈钢管</example>
        [ExcelColumn(Name = "物料名称", Width = 25)]
        public string MaterialName { get; set; }
        /// <summary>
        /// é‡‡è´­ç±»åž‹
        /// </summary>
        /// <remarks>
        /// 0:标准采购 1:紧急采购 2:协议采购
        /// </remarks>
        /// <example>0</example>
        [ExcelColumn(Name = "采购类型", Width = 25)]
        public PurchaseTypeEnum PurchaseType { get; set; }
        /// <summary>
        /// ç‰©æ–™ç±»åž‹
        /// </summary>
        /// <remarks>
        /// 1:原材料 2:半成品 3:成品
        /// </remarks>
        /// <example>1</example>
        [ExcelColumn(Name = "物料类型", Width = 25)]
        public MaterialTypeEnum MaterialType { get; set; }
        /// <summary>
        /// ä¸»è®¡é‡å•位
        /// </summary>
        /// <example>kg</example>
        [ExcelColumn(Name = "主单位", Width = 25)]
        public string PrimaryUnit { get; set; }
        /// <summary>
        /// è§„æ ¼/技术标准
        /// </summary>
        /// <example>GB/T 8163-2018</example>
        [ExcelColumn(Name = "规格/标准", Width = 25)]
        public string Standard { get; set; }
        /// <summary>
        /// å¤–径(单位:毫米)
        /// </summary>
        /// <example>50.5</example>
        [ExcelColumn(Name = "外径(mm)", Width = 25)]
        public decimal OuterDiameter { get; set; }
        /// <summary>
        /// å£åŽšï¼ˆå•ä½ï¼šæ¯«ç±³ï¼‰
        /// </summary>
        /// <example>2.5</example>
        [ExcelColumn(Name = "壁厚(mm)", Width = 25)]
        public decimal WallThickness { get; set; }
        /// <summary>
        /// æè´¨è¯´æ˜Ž
        /// </summary>
        /// <example>304不锈钢</example>
        [ExcelColumn(Name = "材质", Width = 25)]
        public string MaterialQuality { get; set; }
        /// <summary>
        /// é•¿åº¦ï¼ˆå•位:米)
        /// </summary>
        /// <example>6.0</example>
        [ExcelColumn(Name = "长度(m)", Width = 25)]
        public decimal Length { get; set; }
        /// <summary>
        /// æ˜¯å¦ä¸»æ”¯ç®¡æ ‡è¯†
        /// </summary>
        /// <example>true</example>
        [ExcelColumn(Name = "是否主支管", Width = 25)]
        [Description("是/否")]
        public YesNoEnum IsMainBranch { get; set; }
        /// <summary>
        /// ç”Ÿäº§å·¥åŽ‚åç§°
        /// </summary>
        /// <example>上海第一工厂</example>
        [ExcelColumn(Name = "生产工厂", Width = 25)]
        public string Factory { get; set; }
        /// <summary>
        /// è®¤è¯è¯ä¹¦ç¼–号
        /// </summary>
        /// <example>CER-2023-001</example>
        [ExcelColumn(Name = "证书编号", Width = 25)]
        public string Certification { get; set; }
        /// <summary>
        /// é¢„留扩展字段1
        /// </summary>
        /// <remarks>
        /// å¯ç”¨äºŽä¸´æ—¶å­˜å‚¨ä¾›åº”商编码等扩展信息
        /// </remarks>
        [ExcelColumn(Name = "扩展字段1", Width = 25)]
        public string RedundantField1 { get; set; }
        /// <summary>
        /// é¢„留扩展字段2
        /// </summary>
        /// <remarks>
        /// å¯ç”¨äºŽä¸´æ—¶å­˜å‚¨æ‰¹æ¬¡å·ç­‰æ‰©å±•信息
        /// </remarks>
        [ExcelColumn(Name = "扩展字段2", Width = 25)]
        public string RedundantField2 { get; set; }
        /// <summary>
        /// é¢„留扩展字段3
        /// </summary>
        /// <remarks>
        /// å¯ç”¨äºŽä¸´æ—¶å­˜å‚¨è‡ªå®šä¹‰åˆ†ç±»ç­‰æ‰©å±•信息
        /// </remarks>
        [ExcelColumn(Name = "扩展字段3", Width = 25)]
        public string RedundantField3 { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        [ExcelColumn(Name = "备注",Width = 25)]
        public string Remark { 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;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialUpdateDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
using Volo.Abp.Domain.Entities;
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
/// <summary>
/// WmsMaterial更新参数对象
/// </summary>
public class WmsMaterialUpdateDto : WmsMaterialCreateOrUpdateDtoBase, IHasConcurrencyStamp
{
    /// <summary>
    /// å¹¶å‘戳
    /// </summary>
    public string ConcurrencyStamp { get; set; }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialsImportModel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial
{
    /// <summary>
    /// WmsMaterials导入模型
    /// </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>
        /// WmsMaterial导入模型
        /// </summary>
        public class WmsMaterialImportModel : MaterialExportModel
        {
            /// <summary>
            /// è¡Œå·
            /// </summary>
            public int RowIndex { get; set; }
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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; }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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)
    {
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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; }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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; }
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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; }
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
    /// ä»“库代码
    /// </summary>
    public string? StoreCode { get; set; }
    /// <summary>
    /// ä»“库名称
    /// </summary>
    public string? StoreName { get; set; }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
    /// ä»“库代码
    /// </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)
    {
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
    /// ä»“库代码
    /// </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>
    /// ä»“库代码
    /// </summary>
    public string? StoreCode { get; set; }
    /// <summary>
    /// ä»“库名称
    /// </summary>
    public string? StoreName { get; set; }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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; }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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 = "仓库代码", 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; }
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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; }
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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
{
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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);
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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);
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsEnumAppService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
using 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();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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);
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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);
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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);
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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);
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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);
        });
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsEnumAppService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
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 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;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,432 @@
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.WmsMaterials;
using CMS.Plugin.HIAWms.Domain.WmsMaterials;
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 _wmsmaterialRepository;
    /// <summary>
    /// Initializes a new instance of the <see cref="WmsMaterialAppService"/> class.
    /// </summary>
    /// <param name="wmsmaterialRepository">The task job repository.</param>
    public WmsMaterialAppService(IWmsMaterialRepository wmsmaterialRepository)
    {
        _wmsmaterialRepository = wmsmaterialRepository;
    }
    /// <summary>
    /// èŽ·å–æŒ‡å®šç‰©æ–™åŸºç¡€ä¿¡æ¯
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    public virtual async Task<WmsMaterialDto> GetAsync(Guid id)
    {
        return ObjectMapper.Map<WmsMaterial, WmsMaterialDto>(await _wmsmaterialRepository.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 _wmsmaterialRepository.GetCountAsync(whereConditions);
        var list = await _wmsmaterialRepository.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 _wmsmaterialRepository.NameExistAsync(input.MaterialCode);
        if (exist)
        {
            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialCode]);
        }
        var maxSort = await _wmsmaterialRepository.GetMaxSortAsync();
        var sort = input.Sort ?? maxSort;
        var wmsmaterial = ObjectMapper.Map<WmsMaterialCreateDto, WmsMaterial>(input);
        wmsmaterial.Sort = sort;
        input.MapExtraPropertiesTo(wmsmaterial, MappingPropertyDefinitionChecks.None);
        await _wmsmaterialRepository.InsertAsync(wmsmaterial);
        if (input.Sort.HasValue && wmsmaterial.Sort != maxSort)
        {
            await AdjustSortAsync(wmsmaterial.Id, wmsmaterial.Sort);
        }
        return ObjectMapper.Map<WmsMaterial, WmsMaterialDto>(wmsmaterial);
    }
    /// <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 wmsmaterial = await _wmsmaterialRepository.GetAsync(id);
        var exist = await _wmsmaterialRepository.NameExistAsync(input.MaterialCode, wmsmaterial.Id);
        if (exist)
        {
            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialCode]);
        }
        wmsmaterial.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
        input.MapExtraPropertiesTo(wmsmaterial, MappingPropertyDefinitionChecks.None);
        wmsmaterial.MaterialName = input.MaterialName;
        wmsmaterial.PurchaseType = input.PurchaseType;
        wmsmaterial.MaterialType = input.MaterialType;
        wmsmaterial.PrimaryUnit = input.PrimaryUnit;
        wmsmaterial.Standard = input.Standard;
        wmsmaterial.OuterDiameter = input.OuterDiameter;
        wmsmaterial.WallThickness = input.WallThickness;
        wmsmaterial.MaterialQuality = input.MaterialQuality;
        wmsmaterial.Length = input.Length;
        wmsmaterial.IsMainBranch = input.IsMainBranch;
        wmsmaterial.Factory = input.Factory;
        wmsmaterial.Certification = input.Certification;
        await _wmsmaterialRepository.UpdateAsync(wmsmaterial);
        return ObjectMapper.Map<WmsMaterial, WmsMaterialDto>(wmsmaterial);
    }
    /// <summary>
    /// å…‹éš†ç‰©æ–™åŸºç¡€ä¿¡æ¯
    /// </summary>
    /// <param name="ids"></param>
    /// <returns></returns>
    public async Task<List<WmsMaterialDto>> CloneAsync(IEnumerable<Guid> ids)
    {
        //var wmsmaterials = new List<WmsMaterial>();
        //if (ids != null)
        //{
        //    var sort = await _wmsmaterialRepository.GetMaxSortAsync();
        //    foreach (var id in ids)
        //    {
        //        var wmsmaterial = await _wmsmaterialRepository.FindAsync(id);
        //        if (wmsmaterial != null)
        //        {
        //            var name = wmsmaterial.Name + WmsMaterialConsts.CloneTag;
        //            var notExist = false;
        //            while (!notExist)
        //            {
        //                var exist = await _wmsmaterialRepository.NameExistAsync(name);
        //                if (exist || wmsmaterials.Any(x => x.Name == name))
        //                {
        //                    name += WmsMaterialConsts.CloneTag;
        //                    continue;
        //                }
        //                notExist = true;
        //            }
        //            //wmsmaterial = await _wmsmaterialRepository.InsertAsync(wmsmaterial.Clone(GuidGenerator.Create(), name, sort++));
        //            wmsmaterials.Add(wmsmaterial);
        //        }
        //    }
        //}
        //return ObjectMapper.Map<List<WmsMaterial>, List<WmsMaterialDto>>(wmsmaterials);
        return new List<WmsMaterialDto>();
    }
    /// <summary>
    /// åˆ é™¤å•个物料基础信息
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    public virtual Task DeleteAsync(Guid id)
    {
        return _wmsmaterialRepository.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 _wmsmaterialRepository.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 _wmsmaterialRepository.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 wmsmaterialCreateDtos = new List<(int RowIndex, WmsMaterialCreateDto Item)>();
        var wmsmaterialUpdateDtos = new List<(int RowIndex, Guid Id, WmsMaterialUpdateDto Item)>();
        var wmsmaterials = input.WmsMaterials;
        if (wmsmaterials != null && wmsmaterials.Any())
        {
            #region å¯¼å…¥æ ¡éªŒ
            // åˆ¤æ–­åç§°æ˜¯å¦é‡å¤ï¼Œå¹¶è¾“出第几行重复
            var duplicateWmsMaterials = wmsmaterials.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 wmsmaterial in wmsmaterials)
            {
                if (wmsmaterial.MaterialCode.IsNullOrWhiteSpace() && wmsmaterial.MaterialName.IsNullOrWhiteSpace())
                {
                    continue;
                }
                if (wmsmaterial.MaterialCode.IsNullOrWhiteSpace())
                {
                    var errorMsg = $"导入失败!配置,第{wmsmaterial.RowIndex}行:WmsMaterial名称不能为空";
                    throw new UserFriendlyException(errorMsg);
                }
                var oldWmsMaterial = await _wmsmaterialRepository.FindByNameAsync(wmsmaterial.MaterialCode);
                if (oldWmsMaterial != null)
                {
                    var wmsmaterialUpdateDto = new WmsMaterialUpdateDto
                    {
                        MaterialCode = wmsmaterial.MaterialCode,
                        MaterialName = wmsmaterial.MaterialName,
                        PurchaseType = wmsmaterial.PurchaseType,
                        MaterialType = wmsmaterial.MaterialType,
                        PrimaryUnit = wmsmaterial.PrimaryUnit,
                        Standard = wmsmaterial.Standard,
                        OuterDiameter = wmsmaterial.OuterDiameter,
                        WallThickness = wmsmaterial.WallThickness,
                        MaterialQuality = wmsmaterial.MaterialQuality,
                        Length = wmsmaterial.Length,
                        IsMainBranch = wmsmaterial.IsMainBranch,
                        Factory = wmsmaterial.Factory,
                        Certification = wmsmaterial.Certification,
                        Remark = wmsmaterial.Remark,
                    };
                    wmsmaterialUpdateDtos.Add((wmsmaterial.RowIndex, oldWmsMaterial.Id, wmsmaterialUpdateDto));
                }
                else
                {
                    var wmsmaterialCreateDto = new WmsMaterialCreateDto
                    {
                        MaterialCode = wmsmaterial.MaterialCode,
                        MaterialName = wmsmaterial.MaterialName,
                        PurchaseType = wmsmaterial.PurchaseType,
                        MaterialType = wmsmaterial.MaterialType,
                        PrimaryUnit = wmsmaterial.PrimaryUnit,
                        Standard = wmsmaterial.Standard,
                        OuterDiameter = wmsmaterial.OuterDiameter,
                        WallThickness = wmsmaterial.WallThickness,
                        MaterialQuality = wmsmaterial.MaterialQuality,
                        Length = wmsmaterial.Length,
                        IsMainBranch = wmsmaterial.IsMainBranch,
                        Factory = wmsmaterial.Factory,
                        Certification = wmsmaterial.Certification,
                        Remark = wmsmaterial.Remark,
                    };
                    wmsmaterialCreateDtos.Add((wmsmaterial.RowIndex, wmsmaterialCreateDto));
                }
            }
        }
        // æ–°å¢ž
        foreach (var wmsmaterialDto in wmsmaterialCreateDtos)
        {
            try
            {
                await CreateAsync(wmsmaterialDto.Item);
            }
            catch (Exception e)
            {
                var errorMsg = $"导入失败!配置,第{wmsmaterialDto.RowIndex}行:{e.Message},终止导入";
                throw new UserFriendlyException(errorMsg);
            }
        }
        // æ›´æ–°
        foreach (var wmsmaterialDto in wmsmaterialUpdateDtos)
        {
            try
            {
                await UpdateAsync(wmsmaterialDto.Id, wmsmaterialDto.Item);
            }
            catch (Exception e)
            {
                var errorMsg = $"导入失败!配置,第{wmsmaterialDto.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 _wmsmaterialRepository.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, "编号", WmsMaterialConsts.MaxCodeLength);
        Check.NotNullOrWhiteSpace(input.MaterialName, "名称", WmsMaterialConsts.MaxNameLength);
        Check.Length(input.Remark, "备注", WmsMaterialConsts.MaxRemarkLength);
        return Task.CompletedTask;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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);
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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);
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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.WmsMaterials;
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);
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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);
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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);
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/Properties/AssemblyInfo.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2 @@
using System.Runtime.CompilerServices;
[assembly:InternalsVisibleToAttribute("CMS.Plugin.Application.Tests")]
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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);
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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);
        });
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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
         */
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/AreaStatusEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
using 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>
        /// æ­£å¸¸
        /// </summary>
        [Description("正常")]
        ZHEGNCHANGSHIYONG = 1,
        /// <summary>
        /// åœç”¨
        /// </summary>
        [Description("停用")]
        TINGYONG = 2
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/AreaTypeEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
using 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,
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/ContainerStatusEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
using 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,
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/ContainerTypeEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
using 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,
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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,
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/MaterialTypeEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
using 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
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PlaceStatusEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
using 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,
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PlaceTypeEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
using 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,
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PurchaseTypeEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
using 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
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/YesNoEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
using 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
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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 !"
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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}'名称已存在,请重新输入!"
    }
  }
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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
{
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Util/EnumHelper.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
using 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; }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Util/ExportHelper.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
using 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();
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/Util/GetEnumDescriptionUtil.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
using 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;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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; }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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; }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterials/WmsMaterialConsts.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
namespace CMS.Plugin.HIAWms.Domain.Shared.WmsMaterials;
/// <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;
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterials/WmsMaterialEto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
namespace CMS.Plugin.HIAWms.Domain.Shared.WmsMaterials;
/// <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; }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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; }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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; }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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";
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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)
    {
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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();
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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();
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsMaterialEventHandler.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
using CMS.Plugin.HIAWms.Domain.Shared.WmsMaterials;
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;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/Properties/AssemblyInfo.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
using System.Runtime.CompilerServices;
[assembly:InternalsVisibleToAttribute("CMS.Plugin.Domain.Tests")]
[assembly:InternalsVisibleToAttribute("CMS.Plugin.TestBase")]
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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);
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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);
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
        /// ä»“库代码
        /// </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;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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()
        {
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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);
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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()
        {
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/IWmsMaterialRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
using CmsQueryExtensions.Extension;
using System.Linq.Expressions;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Specifications;
namespace CMS.Plugin.HIAWms.Domain.WmsMaterials;
/// <summary>
/// WmsMaterial仓储
/// </summary>
public interface IWmsMaterialRepository : IBasicRepository<WmsMaterial, Guid>
{
    /// <summary>
    /// Finds the by name asynchronous.
    /// </summary>
    /// <param name="name">The name.</param>
    /// <param name="cancellationToken">The cancellation token.</param>
    /// <returns></returns>
    Task<WmsMaterial> 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>
    /// èŽ·å–åˆ†é¡µåˆ—è¡¨
    /// </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);
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterial.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,119 @@
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
using CMS.Plugin.HIAWms.Domain.Shared.WmsMaterials;
using MathNet.Numerics;
using Volo.Abp;
using Volo.Abp.Domain.Entities.Auditing;
namespace CMS.Plugin.HIAWms.Domain.WmsMaterials
{
    /// <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、m、个)
        /// </summary>
        public string PrimaryUnit { get; set; }
        /// <summary>
        /// è§„æ ¼/标准(如:GB/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>
        /// æ˜¯å¦ä¸ºä¸»æ”¯ç®¡ï¼ˆtrue: ä¸»æ”¯ç®¡, 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;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/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.WmsMaterials
{
    /// <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()
        {
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/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;
//        }
//    }
//}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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);
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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()
        {
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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);
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
        /// ä»“库代码
        /// </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;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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()
        {
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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)
    {
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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
             */
        });
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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)
    {
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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("仓库代码");
            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();
        });
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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();
        });
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,145 @@
using CMS.Plugin.HIAWms.Domain;
using CMS.Plugin.HIAWms.Domain.WmsMaterials;
using CMS.Plugin.HIAWms.Domain.Shared.WmsMaterials;
using Microsoft.EntityFrameworkCore;
using Volo.Abp;
using Volo.Abp.EntityFrameworkCore.Modeling;
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
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();
            // ä¸»é”®é…ç½®ï¼ˆFullAuditedAggregateRoot<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、m、个)");
            b.Property(x => x.Standard)
                .HasMaxLength(128)
                .HasComment("规格/标准(如:GB/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();
        });
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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();
        });
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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("仓库代码");
            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();
        });
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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
    {
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Properties/AssemblyInfo.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2 @@
using System.Runtime.CompilerServices;
[assembly:InternalsVisibleToAttribute("CMS.Plugin.EntityFrameworkCore.Tests")]
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,101 @@
using System.Collections.Generic;
using System.Linq;
using System.Linq.Dynamic.Core;
using System.Linq.Expressions;
using CMS.Plugin.HIAWms.Domain.WmsMaterials;
using CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions;
using CmsQueryExtensions.Extension;
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 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)
    {
    }
    /// <inheritdoc />
    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));
    }
    /// <inheritdoc />
    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);
    }
    /// <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="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();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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"
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.MySQL/CMS.Plugin.HIAWms.MySQL.csproj
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
<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>
</Project>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.MySQL/CMSPluginDbContext.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
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();
        /* 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>();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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();
            });
        });
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250429025531_InitialCreate.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,675 @@
// <auto-generated />
using System;
using CMS.Plugin.HIAWms.MySQL;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Volo.Abp.EntityFrameworkCore;
#nullable disable
namespace CMS.Plugin.HIAWms.MySQL.Migrations
{
    [DbContext(typeof(CMSPluginDbContext))]
    [Migration("20250429025531_InitialCreate")]
    partial class InitialCreate
    {
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql)
                .HasAnnotation("ProductVersion", "6.0.16")
                .HasAnnotation("Relational:MaxIdentifierLength", 64);
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsAreas.WmsArea", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("AreaDesc")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)")
                        .HasComment("描述");
                    b.Property<string>("AreaName")
                        .IsRequired()
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("库区名称");
                    b.Property<string>("AreaNo")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("库区编号");
                    b.Property<int>("AreaStatus")
                        .HasColumnType("int")
                        .HasComment("库区状态");
                    b.Property<int>("AreaType")
                        .HasColumnType("int")
                        .HasComment("库区类型");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("StoreCode")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("仓库代码");
                    b.Property<string>("StoreName")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("仓库名称");
                    b.HasKey("Id");
                    b.HasIndex("AreaName");
                    b.ToTable("scms_wmsareas", (string)null);
                    b.HasComment("库区表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsContainers.WmsContainer", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<string>("ContainerNo")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("托盘编号");
                    b.Property<int>("ContainerStatus")
                        .HasColumnType("int")
                        .HasComment("托盘状态");
                    b.Property<int>("ContainerType")
                        .HasColumnType("int")
                        .HasComment("托盘类型");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<int?>("ExceptionNumber")
                        .HasColumnType("int")
                        .HasComment("异常数量");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<decimal?>("LimitHeight")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("限高");
                    b.Property<decimal?>("LimitLength")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("限长");
                    b.Property<decimal?>("LimitWidth")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("限宽");
                    b.Property<int?>("MaterialNumber")
                        .HasColumnType("int")
                        .HasComment("物料数量");
                    b.Property<decimal?>("MaxWeight")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("载重上限");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<decimal?>("SpecHeight")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("高度");
                    b.Property<decimal?>("SpecLength")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("长度");
                    b.Property<decimal?>("SpecWidth")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("宽度");
                    b.HasKey("Id");
                    b.HasIndex("ContainerNo")
                        .IsUnique();
                    b.HasIndex("ContainerStatus");
                    b.HasIndex("ContainerType");
                    b.ToTable("scms_wmscontainers", (string)null);
                    b.HasComment("托盘信息表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsMaterials.WmsMaterial", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("Certification")
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)")
                        .HasComment("证书编号");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<string>("Factory")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("生产工厂");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasComment("是否禁用");
                    b.Property<bool>("IsMainBranch")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasComment("是否为主支管");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<decimal>("Length")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("长度(单位:m)");
                    b.Property<string>("MaterialCode")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("物料编码(唯一标识)");
                    b.Property<string>("MaterialName")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)")
                        .HasComment("物料名称");
                    b.Property<string>("MaterialQuality")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("材质(如:304不锈钢)");
                    b.Property<int>("MaterialType")
                        .HasColumnType("int")
                        .HasComment("物料类型(枚举值)");
                    b.Property<decimal>("OuterDiameter")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("外径(单位:mm)");
                    b.Property<string>("PrimaryUnit")
                        .HasMaxLength(20)
                        .HasColumnType("varchar(20)")
                        .HasComment("主单位(如:kg、m、个)");
                    b.Property<int>("PurchaseType")
                        .HasColumnType("int")
                        .HasComment("采购类型(枚举值)");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(500)
                        .HasColumnType("varchar(500)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasDefaultValue(0)
                        .HasComment("排序");
                    b.Property<string>("Standard")
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)")
                        .HasComment("规格/标准(如:GB/T 8163-2018)");
                    b.Property<decimal>("WallThickness")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("壁厚(单位:mm)");
                    b.HasKey("Id");
                    b.HasIndex("MaterialCode")
                        .IsUnique();
                    b.HasIndex("MaterialName");
                    b.HasIndex("MaterialType");
                    b.HasIndex("PurchaseType");
                    b.ToTable("scms_wmsmaterials", (string)null);
                    b.HasComment("物料基础信息表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsPlaces.WmsPlace", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<int>("Aisle")
                        .HasColumnType("int")
                        .HasComment("巷道");
                    b.Property<string>("AreaCode")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("所在库区");
                    b.Property<int>("ColumnNo")
                        .HasColumnType("int")
                        .HasComment("列");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<int>("EmptyContainer")
                        .HasColumnType("int")
                        .HasComment("是否空托");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<int>("Islock")
                        .HasColumnType("int")
                        .HasComment("是否锁定");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<int>("LayerNo")
                        .HasColumnType("int")
                        .HasComment("层");
                    b.Property<string>("PlaceNo")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("编号");
                    b.Property<int>("PlaceStatus")
                        .HasColumnType("int")
                        .HasComment("货位状态");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("备注");
                    b.Property<int>("RowNo")
                        .HasColumnType("int")
                        .HasComment("排");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<int>("StorageTypeNo")
                        .HasColumnType("int")
                        .HasComment("货位类型");
                    b.HasKey("Id");
                    b.HasIndex("AreaCode");
                    b.HasIndex("PlaceNo")
                        .IsUnique();
                    b.HasIndex("PlaceStatus");
                    b.HasIndex("StorageTypeNo");
                    b.ToTable("scms_wmsplaces", (string)null);
                    b.HasComment("库位表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsStores.WmsStore", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("StoreCode")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("仓库代码");
                    b.Property<string>("StoreName")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("仓库名称");
                    b.HasKey("Id");
                    b.HasIndex("StoreName");
                    b.ToTable("scms_wmsstores", (string)null);
                    b.HasComment("仓库信息表");
                });
#pragma warning restore 612, 618
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250429025531_InitialCreate.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,333 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace CMS.Plugin.HIAWms.MySQL.Migrations
{
    public partial class InitialCreate : Migration
    {
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.AlterDatabase()
                .Annotation("MySql:CharSet", "utf8mb4");
            migrationBuilder.CreateTable(
                name: "scms_wmsareas",
                columns: table => new
                {
                    Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
                    AreaNo = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: false, comment: "库区编号")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    AreaName = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: false, comment: "库区名称")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    AreaDesc = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: true, comment: "描述")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    AreaStatus = table.Column<int>(type: "int", nullable: false, comment: "库区状态"),
                    AreaType = table.Column<int>(type: "int", nullable: false, comment: "库区类型"),
                    RedundantField1 = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: true, comment: "冗余字段1 - é¢„留扩展用途")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    RedundantField2 = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: true, comment: "冗余字段2 - é¢„留扩展用途")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    RedundantField3 = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: true, comment: "冗余字段3 - é¢„留扩展用途")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    StoreCode = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true, comment: "仓库代码")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    StoreName = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: true, comment: "仓库名称")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    Sort = table.Column<int>(type: "int", nullable: false, comment: "排序"),
                    Remark = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "备注")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    IsDisabled = table.Column<bool>(type: "tinyint(1)", nullable: true, comment: "是否禁用"),
                    ExtraProperties = table.Column<string>(type: "longtext", nullable: true)
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ConcurrencyStamp = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: true)
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    CreationTime = table.Column<DateTime>(type: "datetime(6)", nullable: false),
                    CreatorId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
                    LastModificationTime = table.Column<DateTime>(type: "datetime(6)", nullable: true),
                    LastModifierId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
                    IsDeleted = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false),
                    DeleterId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
                    DeletionTime = table.Column<DateTime>(type: "datetime(6)", nullable: true)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_scms_wmsareas", x => x.Id);
                },
                comment: "库区表")
                .Annotation("MySql:CharSet", "utf8mb4");
            migrationBuilder.CreateTable(
                name: "scms_wmscontainers",
                columns: table => new
                {
                    Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
                    ContainerNo = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false, comment: "托盘编号")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ContainerType = table.Column<int>(type: "int", nullable: false, comment: "托盘类型"),
                    ContainerStatus = table.Column<int>(type: "int", nullable: false, comment: "托盘状态"),
                    SpecLength = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: true, comment: "长度"),
                    SpecWidth = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: true, comment: "宽度"),
                    SpecHeight = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: true, comment: "高度"),
                    LimitLength = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: true, comment: "限长"),
                    LimitWidth = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: true, comment: "限宽"),
                    LimitHeight = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: true, comment: "限高"),
                    MaxWeight = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: true, comment: "载重上限"),
                    ExceptionNumber = table.Column<int>(type: "int", nullable: true, comment: "异常数量"),
                    MaterialNumber = table.Column<int>(type: "int", nullable: true, comment: "物料数量"),
                    RedundantField1 = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: true, comment: "冗余字段1 - é¢„留扩展用途")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    RedundantField2 = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: true, comment: "冗余字段2 - é¢„留扩展用途")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    RedundantField3 = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: true, comment: "冗余字段3 - é¢„留扩展用途")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    Sort = table.Column<int>(type: "int", nullable: false, comment: "排序"),
                    Remark = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "备注")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    IsDisabled = table.Column<bool>(type: "tinyint(1)", nullable: true, comment: "是否禁用"),
                    ExtraProperties = table.Column<string>(type: "longtext", nullable: true)
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ConcurrencyStamp = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: true)
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    CreationTime = table.Column<DateTime>(type: "datetime(6)", nullable: false),
                    CreatorId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
                    LastModificationTime = table.Column<DateTime>(type: "datetime(6)", nullable: true),
                    LastModifierId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
                    IsDeleted = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false),
                    DeleterId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
                    DeletionTime = table.Column<DateTime>(type: "datetime(6)", nullable: true)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_scms_wmscontainers", x => x.Id);
                },
                comment: "托盘信息表")
                .Annotation("MySql:CharSet", "utf8mb4");
            migrationBuilder.CreateTable(
                name: "scms_wmsmaterials",
                columns: table => new
                {
                    Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
                    MaterialCode = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: false, comment: "物料编码(唯一标识)")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    MaterialName = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: false, comment: "物料名称")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    PurchaseType = table.Column<int>(type: "int", nullable: false, comment: "采购类型(枚举值)"),
                    MaterialType = table.Column<int>(type: "int", nullable: false, comment: "物料类型(枚举值)"),
                    PrimaryUnit = table.Column<string>(type: "varchar(20)", maxLength: 20, nullable: true, comment: "主单位(如:kg、m、个)")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    Standard = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: true, comment: "规格/标准(如:GB/T 8163-2018)")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    OuterDiameter = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "外径(单位:mm)"),
                    WallThickness = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "壁厚(单位:mm)"),
                    MaterialQuality = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true, comment: "材质(如:304不锈钢)")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    Length = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "长度(单位:m)"),
                    IsMainBranch = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false, comment: "是否为主支管"),
                    Factory = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true, comment: "生产工厂")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    Certification = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: true, comment: "证书编号")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    RedundantField1 = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "冗余字段1 - é¢„留扩展用途")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    RedundantField2 = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "冗余字段2 - é¢„留扩展用途")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    RedundantField3 = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "冗余字段3 - é¢„留扩展用途")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    Sort = table.Column<int>(type: "int", nullable: false, defaultValue: 0, comment: "排序"),
                    Remark = table.Column<string>(type: "varchar(500)", maxLength: 500, nullable: true, comment: "备注")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    IsDisabled = table.Column<bool>(type: "tinyint(1)", nullable: true, defaultValue: false, comment: "是否禁用"),
                    ExtraProperties = table.Column<string>(type: "longtext", nullable: true)
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ConcurrencyStamp = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: true)
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    CreationTime = table.Column<DateTime>(type: "datetime(6)", nullable: false),
                    CreatorId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
                    LastModificationTime = table.Column<DateTime>(type: "datetime(6)", nullable: true),
                    LastModifierId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
                    IsDeleted = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false),
                    DeleterId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
                    DeletionTime = table.Column<DateTime>(type: "datetime(6)", nullable: true)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_scms_wmsmaterials", x => x.Id);
                },
                comment: "物料基础信息表")
                .Annotation("MySql:CharSet", "utf8mb4");
            migrationBuilder.CreateTable(
                name: "scms_wmsplaces",
                columns: table => new
                {
                    Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
                    PlaceNo = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false, comment: "编号")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    StorageTypeNo = table.Column<int>(type: "int", nullable: false, comment: "货位类型"),
                    PlaceStatus = table.Column<int>(type: "int", nullable: false, comment: "货位状态"),
                    AreaCode = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false, comment: "所在库区")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    Aisle = table.Column<int>(type: "int", nullable: false, comment: "巷道"),
                    RowNo = table.Column<int>(type: "int", nullable: false, comment: "排"),
                    ColumnNo = table.Column<int>(type: "int", nullable: false, comment: "列"),
                    LayerNo = table.Column<int>(type: "int", nullable: false, comment: "层"),
                    Islock = table.Column<int>(type: "int", nullable: false, comment: "是否锁定"),
                    EmptyContainer = table.Column<int>(type: "int", nullable: false, comment: "是否空托"),
                    RedundantField1 = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: true, comment: "冗余字段1 - é¢„留扩展用途")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    RedundantField2 = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: true, comment: "冗余字段2 - é¢„留扩展用途")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    RedundantField3 = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: true, comment: "冗余字段3 - é¢„留扩展用途")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    Sort = table.Column<int>(type: "int", nullable: false, comment: "排序"),
                    Remark = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "备注")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    IsDisabled = table.Column<bool>(type: "tinyint(1)", nullable: true, comment: "是否禁用"),
                    ExtraProperties = table.Column<string>(type: "longtext", nullable: true)
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ConcurrencyStamp = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: true)
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    CreationTime = table.Column<DateTime>(type: "datetime(6)", nullable: false),
                    CreatorId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
                    LastModificationTime = table.Column<DateTime>(type: "datetime(6)", nullable: true),
                    LastModifierId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
                    IsDeleted = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false),
                    DeleterId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
                    DeletionTime = table.Column<DateTime>(type: "datetime(6)", nullable: true)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_scms_wmsplaces", x => x.Id);
                },
                comment: "库位表")
                .Annotation("MySql:CharSet", "utf8mb4");
            migrationBuilder.CreateTable(
                name: "scms_wmsstores",
                columns: table => new
                {
                    Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
                    StoreCode = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true, comment: "仓库代码")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    StoreName = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: true, comment: "仓库名称")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    RedundantField1 = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: true, comment: "冗余字段1 - é¢„留扩展用途")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    RedundantField2 = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: true, comment: "冗余字段2 - é¢„留扩展用途")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    RedundantField3 = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: true, comment: "冗余字段3 - é¢„留扩展用途")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    Remark = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "备注")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    Sort = table.Column<int>(type: "int", nullable: false, comment: "排序"),
                    IsDisabled = table.Column<bool>(type: "tinyint(1)", nullable: true, comment: "是否禁用"),
                    ExtraProperties = table.Column<string>(type: "longtext", nullable: true)
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ConcurrencyStamp = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: true)
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    CreationTime = table.Column<DateTime>(type: "datetime(6)", nullable: false),
                    CreatorId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
                    LastModificationTime = table.Column<DateTime>(type: "datetime(6)", nullable: true),
                    LastModifierId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
                    IsDeleted = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false),
                    DeleterId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
                    DeletionTime = table.Column<DateTime>(type: "datetime(6)", nullable: true)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_scms_wmsstores", x => x.Id);
                },
                comment: "仓库信息表")
                .Annotation("MySql:CharSet", "utf8mb4");
            migrationBuilder.CreateIndex(
                name: "IX_scms_wmsareas_AreaName",
                table: "scms_wmsareas",
                column: "AreaName");
            migrationBuilder.CreateIndex(
                name: "IX_scms_wmscontainers_ContainerNo",
                table: "scms_wmscontainers",
                column: "ContainerNo",
                unique: true);
            migrationBuilder.CreateIndex(
                name: "IX_scms_wmscontainers_ContainerStatus",
                table: "scms_wmscontainers",
                column: "ContainerStatus");
            migrationBuilder.CreateIndex(
                name: "IX_scms_wmscontainers_ContainerType",
                table: "scms_wmscontainers",
                column: "ContainerType");
            migrationBuilder.CreateIndex(
                name: "IX_scms_wmsmaterials_MaterialCode",
                table: "scms_wmsmaterials",
                column: "MaterialCode",
                unique: true);
            migrationBuilder.CreateIndex(
                name: "IX_scms_wmsmaterials_MaterialName",
                table: "scms_wmsmaterials",
                column: "MaterialName");
            migrationBuilder.CreateIndex(
                name: "IX_scms_wmsmaterials_MaterialType",
                table: "scms_wmsmaterials",
                column: "MaterialType");
            migrationBuilder.CreateIndex(
                name: "IX_scms_wmsmaterials_PurchaseType",
                table: "scms_wmsmaterials",
                column: "PurchaseType");
            migrationBuilder.CreateIndex(
                name: "IX_scms_wmsplaces_AreaCode",
                table: "scms_wmsplaces",
                column: "AreaCode");
            migrationBuilder.CreateIndex(
                name: "IX_scms_wmsplaces_PlaceNo",
                table: "scms_wmsplaces",
                column: "PlaceNo",
                unique: true);
            migrationBuilder.CreateIndex(
                name: "IX_scms_wmsplaces_PlaceStatus",
                table: "scms_wmsplaces",
                column: "PlaceStatus");
            migrationBuilder.CreateIndex(
                name: "IX_scms_wmsplaces_StorageTypeNo",
                table: "scms_wmsplaces",
                column: "StorageTypeNo");
            migrationBuilder.CreateIndex(
                name: "IX_scms_wmsstores_StoreName",
                table: "scms_wmsstores",
                column: "StoreName");
        }
        protected override void Down(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.DropTable(
                name: "scms_wmsareas");
            migrationBuilder.DropTable(
                name: "scms_wmscontainers");
            migrationBuilder.DropTable(
                name: "scms_wmsmaterials");
            migrationBuilder.DropTable(
                name: "scms_wmsplaces");
            migrationBuilder.DropTable(
                name: "scms_wmsstores");
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250430035549_InitialCreate1.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,675 @@
// <auto-generated />
using System;
using CMS.Plugin.HIAWms.MySQL;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Volo.Abp.EntityFrameworkCore;
#nullable disable
namespace CMS.Plugin.HIAWms.MySQL.Migrations
{
    [DbContext(typeof(CMSPluginDbContext))]
    [Migration("20250430035549_InitialCreate1")]
    partial class InitialCreate1
    {
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql)
                .HasAnnotation("ProductVersion", "6.0.16")
                .HasAnnotation("Relational:MaxIdentifierLength", 64);
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsAreas.WmsArea", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("AreaDesc")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)")
                        .HasComment("描述");
                    b.Property<string>("AreaName")
                        .IsRequired()
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("库区名称");
                    b.Property<string>("AreaNo")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("库区编号");
                    b.Property<int>("AreaStatus")
                        .HasColumnType("int")
                        .HasComment("库区状态");
                    b.Property<int>("AreaType")
                        .HasColumnType("int")
                        .HasComment("库区类型");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("StoreCode")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("仓库代码");
                    b.Property<string>("StoreName")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("仓库名称");
                    b.HasKey("Id");
                    b.HasIndex("AreaName");
                    b.ToTable("scms_wmsareas", (string)null);
                    b.HasComment("库区表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsContainers.WmsContainer", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<string>("ContainerNo")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("托盘编号");
                    b.Property<int>("ContainerStatus")
                        .HasColumnType("int")
                        .HasComment("托盘状态");
                    b.Property<int>("ContainerType")
                        .HasColumnType("int")
                        .HasComment("托盘类型");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<int?>("ExceptionNumber")
                        .HasColumnType("int")
                        .HasComment("异常数量");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<decimal?>("LimitHeight")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("限高");
                    b.Property<decimal?>("LimitLength")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("限长");
                    b.Property<decimal?>("LimitWidth")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("限宽");
                    b.Property<int?>("MaterialNumber")
                        .HasColumnType("int")
                        .HasComment("物料数量");
                    b.Property<decimal?>("MaxWeight")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("载重上限");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<decimal?>("SpecHeight")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("高度");
                    b.Property<decimal?>("SpecLength")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("长度");
                    b.Property<decimal?>("SpecWidth")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("宽度");
                    b.HasKey("Id");
                    b.HasIndex("ContainerNo")
                        .IsUnique();
                    b.HasIndex("ContainerStatus");
                    b.HasIndex("ContainerType");
                    b.ToTable("scms_wmscontainers", (string)null);
                    b.HasComment("托盘信息表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsMaterials.WmsMaterial", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("Certification")
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)")
                        .HasComment("证书编号");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<string>("Factory")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("生产工厂");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasComment("是否禁用");
                    b.Property<int>("IsMainBranch")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasDefaultValue(2)
                        .HasComment("是否为主支管");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<decimal>("Length")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("长度(单位:m)");
                    b.Property<string>("MaterialCode")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("物料编码(唯一标识)");
                    b.Property<string>("MaterialName")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)")
                        .HasComment("物料名称");
                    b.Property<string>("MaterialQuality")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("材质(如:304不锈钢)");
                    b.Property<int>("MaterialType")
                        .HasColumnType("int")
                        .HasComment("物料类型(枚举值)");
                    b.Property<decimal>("OuterDiameter")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("外径(单位:mm)");
                    b.Property<string>("PrimaryUnit")
                        .HasMaxLength(20)
                        .HasColumnType("varchar(20)")
                        .HasComment("主单位(如:kg、m、个)");
                    b.Property<int>("PurchaseType")
                        .HasColumnType("int")
                        .HasComment("采购类型(枚举值)");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(500)
                        .HasColumnType("varchar(500)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasDefaultValue(0)
                        .HasComment("排序");
                    b.Property<string>("Standard")
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)")
                        .HasComment("规格/标准(如:GB/T 8163-2018)");
                    b.Property<decimal>("WallThickness")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("壁厚(单位:mm)");
                    b.HasKey("Id");
                    b.HasIndex("MaterialCode")
                        .IsUnique();
                    b.HasIndex("MaterialName");
                    b.HasIndex("MaterialType");
                    b.HasIndex("PurchaseType");
                    b.ToTable("scms_wmsmaterials", (string)null);
                    b.HasComment("物料基础信息表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsPlaces.WmsPlace", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<int>("Aisle")
                        .HasColumnType("int")
                        .HasComment("巷道");
                    b.Property<string>("AreaCode")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("所在库区");
                    b.Property<int>("ColumnNo")
                        .HasColumnType("int")
                        .HasComment("列");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<int>("EmptyContainer")
                        .HasColumnType("int")
                        .HasComment("是否空托");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<int>("Islock")
                        .HasColumnType("int")
                        .HasComment("是否锁定");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<int>("LayerNo")
                        .HasColumnType("int")
                        .HasComment("层");
                    b.Property<string>("PlaceNo")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("编号");
                    b.Property<int>("PlaceStatus")
                        .HasColumnType("int")
                        .HasComment("货位状态");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("备注");
                    b.Property<int>("RowNo")
                        .HasColumnType("int")
                        .HasComment("排");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<int>("StorageTypeNo")
                        .HasColumnType("int")
                        .HasComment("货位类型");
                    b.HasKey("Id");
                    b.HasIndex("AreaCode");
                    b.HasIndex("PlaceNo")
                        .IsUnique();
                    b.HasIndex("PlaceStatus");
                    b.HasIndex("StorageTypeNo");
                    b.ToTable("scms_wmsplaces", (string)null);
                    b.HasComment("库位表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsStores.WmsStore", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("StoreCode")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("仓库代码");
                    b.Property<string>("StoreName")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("仓库名称");
                    b.HasKey("Id");
                    b.HasIndex("StoreName");
                    b.ToTable("scms_wmsstores", (string)null);
                    b.HasComment("仓库信息表");
                });
#pragma warning restore 612, 618
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250430035549_InitialCreate1.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace CMS.Plugin.HIAWms.MySQL.Migrations
{
    public partial class InitialCreate1 : Migration
    {
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.AlterColumn<int>(
                name: "IsMainBranch",
                table: "scms_wmsmaterials",
                type: "int",
                nullable: false,
                defaultValue: 2,
                comment: "是否为主支管",
                oldClrType: typeof(bool),
                oldType: "tinyint(1)",
                oldDefaultValue: false,
                oldComment: "是否为主支管");
        }
        protected override void Down(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.AlterColumn<bool>(
                name: "IsMainBranch",
                table: "scms_wmsmaterials",
                type: "tinyint(1)",
                nullable: false,
                defaultValue: false,
                comment: "是否为主支管",
                oldClrType: typeof(int),
                oldType: "int",
                oldDefaultValue: 2,
                oldComment: "是否为主支管");
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,673 @@
// <auto-generated />
using System;
using CMS.Plugin.HIAWms.MySQL;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Volo.Abp.EntityFrameworkCore;
#nullable disable
namespace CMS.Plugin.HIAWms.MySQL.Migrations
{
    [DbContext(typeof(CMSPluginDbContext))]
    partial class CMSPluginDbContextModelSnapshot : ModelSnapshot
    {
        protected override void BuildModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql)
                .HasAnnotation("ProductVersion", "6.0.16")
                .HasAnnotation("Relational:MaxIdentifierLength", 64);
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsAreas.WmsArea", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("AreaDesc")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)")
                        .HasComment("描述");
                    b.Property<string>("AreaName")
                        .IsRequired()
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("库区名称");
                    b.Property<string>("AreaNo")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("库区编号");
                    b.Property<int>("AreaStatus")
                        .HasColumnType("int")
                        .HasComment("库区状态");
                    b.Property<int>("AreaType")
                        .HasColumnType("int")
                        .HasComment("库区类型");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("StoreCode")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("仓库代码");
                    b.Property<string>("StoreName")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("仓库名称");
                    b.HasKey("Id");
                    b.HasIndex("AreaName");
                    b.ToTable("scms_wmsareas", (string)null);
                    b.HasComment("库区表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsContainers.WmsContainer", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<string>("ContainerNo")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("托盘编号");
                    b.Property<int>("ContainerStatus")
                        .HasColumnType("int")
                        .HasComment("托盘状态");
                    b.Property<int>("ContainerType")
                        .HasColumnType("int")
                        .HasComment("托盘类型");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<int?>("ExceptionNumber")
                        .HasColumnType("int")
                        .HasComment("异常数量");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<decimal?>("LimitHeight")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("限高");
                    b.Property<decimal?>("LimitLength")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("限长");
                    b.Property<decimal?>("LimitWidth")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("限宽");
                    b.Property<int?>("MaterialNumber")
                        .HasColumnType("int")
                        .HasComment("物料数量");
                    b.Property<decimal?>("MaxWeight")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("载重上限");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<decimal?>("SpecHeight")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("高度");
                    b.Property<decimal?>("SpecLength")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("长度");
                    b.Property<decimal?>("SpecWidth")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("宽度");
                    b.HasKey("Id");
                    b.HasIndex("ContainerNo")
                        .IsUnique();
                    b.HasIndex("ContainerStatus");
                    b.HasIndex("ContainerType");
                    b.ToTable("scms_wmscontainers", (string)null);
                    b.HasComment("托盘信息表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsMaterials.WmsMaterial", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("Certification")
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)")
                        .HasComment("证书编号");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<string>("Factory")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("生产工厂");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasComment("是否禁用");
                    b.Property<int>("IsMainBranch")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasDefaultValue(2)
                        .HasComment("是否为主支管");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<decimal>("Length")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("长度(单位:m)");
                    b.Property<string>("MaterialCode")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("物料编码(唯一标识)");
                    b.Property<string>("MaterialName")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)")
                        .HasComment("物料名称");
                    b.Property<string>("MaterialQuality")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("材质(如:304不锈钢)");
                    b.Property<int>("MaterialType")
                        .HasColumnType("int")
                        .HasComment("物料类型(枚举值)");
                    b.Property<decimal>("OuterDiameter")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("外径(单位:mm)");
                    b.Property<string>("PrimaryUnit")
                        .HasMaxLength(20)
                        .HasColumnType("varchar(20)")
                        .HasComment("主单位(如:kg、m、个)");
                    b.Property<int>("PurchaseType")
                        .HasColumnType("int")
                        .HasComment("采购类型(枚举值)");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(500)
                        .HasColumnType("varchar(500)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasDefaultValue(0)
                        .HasComment("排序");
                    b.Property<string>("Standard")
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)")
                        .HasComment("规格/标准(如:GB/T 8163-2018)");
                    b.Property<decimal>("WallThickness")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("壁厚(单位:mm)");
                    b.HasKey("Id");
                    b.HasIndex("MaterialCode")
                        .IsUnique();
                    b.HasIndex("MaterialName");
                    b.HasIndex("MaterialType");
                    b.HasIndex("PurchaseType");
                    b.ToTable("scms_wmsmaterials", (string)null);
                    b.HasComment("物料基础信息表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsPlaces.WmsPlace", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<int>("Aisle")
                        .HasColumnType("int")
                        .HasComment("巷道");
                    b.Property<string>("AreaCode")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("所在库区");
                    b.Property<int>("ColumnNo")
                        .HasColumnType("int")
                        .HasComment("列");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<int>("EmptyContainer")
                        .HasColumnType("int")
                        .HasComment("是否空托");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<int>("Islock")
                        .HasColumnType("int")
                        .HasComment("是否锁定");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<int>("LayerNo")
                        .HasColumnType("int")
                        .HasComment("层");
                    b.Property<string>("PlaceNo")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("编号");
                    b.Property<int>("PlaceStatus")
                        .HasColumnType("int")
                        .HasComment("货位状态");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("备注");
                    b.Property<int>("RowNo")
                        .HasColumnType("int")
                        .HasComment("排");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<int>("StorageTypeNo")
                        .HasColumnType("int")
                        .HasComment("货位类型");
                    b.HasKey("Id");
                    b.HasIndex("AreaCode");
                    b.HasIndex("PlaceNo")
                        .IsUnique();
                    b.HasIndex("PlaceStatus");
                    b.HasIndex("StorageTypeNo");
                    b.ToTable("scms_wmsplaces", (string)null);
                    b.HasComment("库位表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsStores.WmsStore", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("StoreCode")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("仓库代码");
                    b.Property<string>("StoreName")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("仓库名称");
                    b.HasKey("Id");
                    b.HasIndex("StoreName");
                    b.ToTable("scms_wmsstores", (string)null);
                    b.HasComment("仓库信息表");
                });
#pragma warning restore 612, 618
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.MySQL/Properties/AssemblyInfo.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2 @@
using System.Runtime.CompilerServices;
[assembly:InternalsVisibleToAttribute("CMS.Plugin.EntityFrameworkCore.Tests")]
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.MySQL/Scripts/UpdateDB.bat
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
cd ../
dotnet ef database update -c CMSPluginDbContext
cmd
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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();
            });
        });
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.PostgreSql/Properties/AssemblyInfo.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2 @@
using System.Runtime.CompilerServices;
[assembly:InternalsVisibleToAttribute("CMS.Plugin.EntityFrameworkCore.Tests")]
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.PostgreSql/Scripts/UpdateDB.bat
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
cd ../
dotnet ef database update -c CMSPluginDbContext
cmd
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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();
            });
        });
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.SqlServer/Properties/AssemblyInfo.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2 @@
using System.Runtime.CompilerServices;
[assembly:InternalsVisibleToAttribute("CMS.Plugin.EntityFrameworkCore.Tests")]
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.SqlServer/Scripts/UpdateDB.bat
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
cd ../
dotnet ef database update -c CMSPluginDbContext
cmd
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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);
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/CMS.Plugin.HIAWms.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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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"/>将导入Controller.
/// </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);
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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();
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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获取自己的DbContext并进行创建或迁移流程
                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;
            }
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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" };
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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" };
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Controller/WmsEnumController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
using 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();
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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 _wmsmaterialAppService;
        /// <summary>
        /// Initializes a new instance of the <see cref="WmsMaterialController"/> class.
        /// </summary>
        /// <param name="wmsmaterialAppService">The wmsmaterial application service.</param>
        public WmsMaterialController(IWmsMaterialAppService wmsmaterialAppService)
        {
            _wmsmaterialAppService = wmsmaterialAppService;
        }
        /// <summary>
        /// èŽ·å–ç‰©æ–™åŸºç¡€ä¿¡æ¯
        /// </summary>
        /// <param name="id">标识符.</param>
        /// <returns></returns>
        [HttpGet]
        [Route("{id}")]
        public virtual Task<WmsMaterialDto> GetAsync(Guid id)
        {
            return _wmsmaterialAppService.GetAsync(id);
        }
        /// <summary>
        /// åˆ†é¡µèŽ·å–ç‰©æ–™åŸºç¡€ä¿¡æ¯çš„åˆ—è¡¨.
        /// </summary>
        /// <param name="input">输入.</param>
        /// <returns></returns>
        [HttpGet]
        [Route("Page")]
        public virtual Task<PagedResultDto<WmsMaterialDto>> GetListAsync([FromQuery] GetWmsMaterialInput input)
        {
            return _wmsmaterialAppService.GetListAsync(input);
        }
        /// <summary>
        /// åˆ›å»ºç‰©æ–™åŸºç¡€ä¿¡æ¯
        /// </summary>
        /// <param name="input">输入.</param>
        /// <returns></returns>
        //[Authorize]
        [HttpPost]
        public virtual Task<WmsMaterialDto> CreateAsync(WmsMaterialCreateDto input)
        {
            return _wmsmaterialAppService.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 _wmsmaterialAppService.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 _wmsmaterialAppService.CloneAsync(ids);
        }
        /// <summary>
        /// åˆ é™¤ç‰©æ–™åŸºç¡€ä¿¡æ¯
        /// </summary>
        /// <param name="id">标识符.</param>
        /// <returns></returns>
        //[Authorize]
        [HttpDelete]
        [Route("{id}")]
        public virtual Task DeleteAsync(Guid id)
        {
            return _wmsmaterialAppService.DeleteAsync(id);
        }
        /// <summary>
        /// æ‰¹é‡åˆ é™¤ç‰©æ–™åŸºç¡€ä¿¡æ¯
        /// </summary>
        /// <param name="ids">The ids.</param>
        /// <returns></returns>
        //[Authorize]
        [HttpDelete]
        public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids)
        {
            return _wmsmaterialAppService.DeleteManyAsync(ids);
        }
        /// <summary>
        /// è°ƒæ•´æŽ’序物料基础信息
        /// </summary>
        /// <param name="id">标识符.</param>
        /// <returns></returns>
        [HttpPut]
        [Route("{id}/AdjustSort/{sort}")]
        public virtual Task AdjustSortAsync(Guid id, int sort)
        {
            return _wmsmaterialAppService.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 wmsmaterialRows = sheetNames.Contains("配置") ? MiniExcel.Query<WmsMaterialsImportModel.WmsMaterialImportModel>(stream, sheetName: "配置").ToList() : new();
            if (!wmsmaterialRows.Any())
            {
                throw new UserFriendlyException("请检查导入的表格");
            }
            await _wmsmaterialAppService.ImportAsync(new WmsMaterialsImportModel
            {
                WmsMaterials = wmsmaterialRows,
            });
            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 _wmsmaterialAppService.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" };
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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" };
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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" };
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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,Count={count}");
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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,Count={count}");
        }
        /// <inheritdoc />
        public Task OnExitAsync(FlowProcessor flowProcessor, object sender, EventArgs args)
        {
            return Task.CompletedTask;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>启动-&gt;触发信号监听</Label>
                    <Source>启动</Source>
                    <Sink>触发信号监听</Sink>
                </Transition>
                <Transition>
                    <Label>触发信号监听-&gt;变量读取</Label>
                    <Source>触发信号监听</Source>
                    <Sink>变量读取</Sink>
                </Transition>
                <Transition>
                    <Label>变量读取-&gt;扩展步骤</Label>
                    <Source>变量读取</Source>
                    <Sink>扩展步骤</Sink>
                </Transition>
                <Transition>
                    <Label>扩展步骤-&gt;触发信号复位监听</Label>
                    <Source>扩展步骤</Source>
                    <Sink>触发信号复位监听</Sink>
                </Transition>
                <Transition>
                    <Label>触发信号复位监听-&gt;通用步骤</Label>
                    <Source>触发信号复位监听</Source>
                    <Sink>通用步骤</Sink>
                </Transition>
                <Transition>
                    <Label>通用步骤-&gt;变量下发</Label>
                    <Source>通用步骤</Source>
                    <Sink>变量下发</Sink>
                </Transition>
                <Transition>
                    <Label>变量下发-&gt;结束</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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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; }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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,Subject={args.Subject},Body={args.Body},Count={count}");
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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"/>以当前Key调用时会被执行
    /// </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>
        /// æœåŠ¡çš„Key,唯一,供<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},TraceId={traceId}");
                // TODO: å¤„理变量值变化
                // Tips:https://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 æ“ä½œã€HTTP æŽ¥å£è®¿é—®æˆ–其他耗时操作,以防止对系统性能产生严重影响,导致整个系统响应延迟。
                    ï¼ˆ2)高频率触发: ç”±äºŽäº‹ä»¶è®¢é˜…了全量变量,触发频率可能非常高。
                    ï¼ˆ3)异步处理: é‰´äºŽäº‹ä»¶è§¦å‘频率很高,建议业务层在筛选关注变量后,使用 Task å¯åŠ¨æ–°çº¿ç¨‹å¤„ç†ä¸šåŠ¡é€»è¾‘ï¼Œä»¥é¿å…é˜»å¡žæ ¸å¿ƒçš„å˜é‡ç›‘å¬åŠŸèƒ½ï¼Œå®žçŽ°ä¸šåŠ¡å±‚ä¸Žå¹³å°åŸºåº§çš„è§£è€¦ã€‚
                    ï¼ˆ4)并发管理: å¦‚果业务层并发量大,必须优化代码设计和实施,以减少在高并发情况下的系统资源消耗,防止系统性能问题。
                    ï¼ˆ5)代码安全: å®‰è£…并使用 CMS.CodeAnalysis åˆ†æžå™¨æ¥åˆ†æž IVariableDataCache.TagChanged çš„使用情况。该工具能在使用不当时提供编译错误,帮助您提高代码质量。*/
                _ = Task.Run(async () =>
                {
                    // ä¾‹1:同步处理
                    //await ProcessAsync();
                    // ä¾‹2:调用外部API
                    //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,Count={count}");
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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"
            }
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsAreaµ¼³öÄ£°å.xlsx
Binary files differ
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsContainerµ¼³öÄ£°å.xlsx
Binary files differ
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterialµ¼³öÄ£°å.xlsx
Binary files differ
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsPlaceµ¼³öÄ£°å.xlsx
Binary files differ
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsStoreµ¼³öÄ£°å.xlsx
Binary files differ
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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:ProcessAsync()");
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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();
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/appsettings.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
{
    // é…ç½®æ–‡ä»¶å°½å¯èƒ½å†™åœ¨/host/appsettings.json或数据库中,避免插件升级时被覆盖
    "IHIAWmsExternalApi": {
        "HttpHost": "http://127.0.0.1:18000/" // External API对接地址
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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."
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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);
            }
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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);
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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);
            }
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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
    {
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
    {
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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;
                }
            }
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/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();
                }
            });
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/test/CMS.Plugin.HIAWms.TestBase/HIAWmsTestData.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
using Volo.Abp.DependencyInjection;
namespace CMS.Plugin.HIAWms.TestBase
{
    public class HIAWmsTestData : ISingletonDependency
    {
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/web/.build.local
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2 @@
WmsContainer
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/web/.env
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
# port ç«¯å£å·
VITE_PORT = 8001
VITE_APP_TITLE= CMS
VITE_API_URL = 'http://localhost:18000' # å¼€å‘版-育航
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/web/.env.development
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
#
# è¯·å¤åˆ¶æ­¤æ–‡ä»¶å¹¶å‘½åä¸º `.env.development.local`
# ä¸ªäººå¼€å‘请在 `.env.development.local` æ–‡ä»¶ä¸Šæ”¹åЍ
#
# æœ¬åœ°çŽ¯å¢ƒ
ENV = 'development'
VITE_APP_TITLE= CMS
VITE_APP_NAMESPACE= 'cs'
# VITE_API_URL = 'http://192.168.2.13:18002'
VITE_API_URL = 'http://localhost:18000'
VITE_PROJECT_API_URL='http://127.0.0.1:8802'
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/web/.env.production
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
# çº¿ä¸ŠçŽ¯å¢ƒ
ENV = 'production'
# çº¿ä¸ŠçŽ¯å¢ƒæŽ¥å£åœ°å€
VITE_API_URL = 'http://127.0.0.1:18002/'
VITE_APP_NAMESPACE= 'cs'
VITE_APP_VERSION = 'beta-9'
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/web/.eslintrc.cjs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
/* eslint-env node */
require('@rushstack/eslint-patch/modern-module-resolution')
module.exports = {
  root: true,
  extends: [
    'plugin:vue/vue3-essential',
    'eslint:recommended',
    '@vue/eslint-config-typescript',
    '@vue/eslint-config-prettier',
  ],
  parserOptions: {
    ecmaVersion: 'latest',
  },
  rules: {
    'vue/multi-word-component-names': [0],
  },
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/web/.prettierrc.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
{
  "semi": false,
  "singleQuote": true,
  "endOfLine": "auto",
  "trailingComma": "es5"
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/web/.vscode/extensions.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
{
  "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/web/.vscode/settings.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
{
    "i18n-ally.localesPaths": [
        "public/language",
        "src/libs/Language/i18n"
    ]
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/web/README.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,228 @@
# information-standard-tpl
## å®‰è£…环境
安装[nodeJs](https://nodejs.cn/)环境,下载 nodejs,安装完成后,
```js
node - v
```
## å®‰è£… yarn
```js
npm install -g yarn
```
## å®‰è£…依赖
```js
yarn
```
## è¿è¡Œ
```js
npm run dev
// or
yarn dev
```
## ç¼–译
```js
npm run build
```
## ç›®å½•结构
```js
|- public
|- script
|- src
|----api //暂时废弃
|----assets //资源
|----cms //cms sdk依赖
|----components //cms sdk依赖
|------BaseDialog //封装的弹窗,样式统一
|------Table//封装的表格,样式统一
|------other...//其他
|----provider //全局注入,element命名空间
|------provider.ts // h
|------provider.vue // render组件
|----utils //工具
|------enum //枚举
|----widgets //组件
|------hook.ts //钩子
|------...
index.html
```
## åŠŸèƒ½
#### å‘½åç©ºé—´
> `element-plus`采用`sass`的`$namespace`来解决`css`样式冲突问题
```js
$namespace = 'cs'
```
element-plus ç»„件的样式从 el-xx æ›¿æ¢æˆ cs-xx,使用时,仍然使用<el-xx></el-xx>
> element-plus è‡ªåŠ¨æŒ‰éœ€å¼•å…¥ï¼Œæ— éœ€æ‰‹åŠ¨å¼•å…¥ï¼Œæ— éœ€å…¨å±€å®‰è£…
<b>!!!注意</b>
使用 ElMessage å’Œ ElMessageBox æ—¶ï¼Œéœ€è¦æ‰‹åЍ引入
```js
import { ElMessage, ElMessageBox } from 'element-plus'
```
### æƒé™
在/src/widgets/hook.ts ä¸­å¼•入权限控制 hook
```js
import { usePermission } from '@/libs/Permission/Permission'
import { permissionCodes } from '../enum'
usePermission(props, permissionCodes)
...
defineComponent({
  directives: {
    permission: vPermission,
  },
})
 <IconButton
 //权限控制
  v-permission="workSection-add"
  icon="add-p"
  onClick={onAddProcess}
  type="primary"
>
  æ·»åŠ MyEntityName
</IconButton>
```
### è·¯ç”±åœ°å€
路由地址统一由 package.json ä¸­çš„ name å’Œ/widgets/[组件名]拼接而成
如:
> https://localhost:8001/#/base/PersonnelQualification
### ç»Ÿä¸€ä½¿ç”¨`BaseDialog`和`Table`来开发
#### å¼¹çª—例子
```vue
<BaseDialog
  :title="t('编辑人员资质')"
  v-model="visible"
  class="person-dialog"
  @close="visible = false"
  @confirm="onConfirm"
>
      <el-form
        label-width="113px"
        :inline="true"
        :model="formData"
        label-position="left"
      >
        <el-form-item :label="t('人员ID')" class="person-item">
          <el-input
            v-model="formData.user"
            :placeholder="t('请输入人员ID')"
            class="person-input"
            disabled
            clearable
          />
        </el-form-item>
        ...
      </el-form>
    </BaseDialog>
```
#### Table è¡¨æ ¼ç»„ä»¶
```vue
<div class="table-content">
    <Table
    :dataSource="dataSource"
    :columns="columns"
    :total="total"
    :pageSize="MaxResultCount"
    :isChecked="true"
    @sort="onSort"
    @page="onPageChange"
    >
    <template #printTime="{ row }">
        <span>{{ dayjs(row.printTime).format('YYYY-MM-DD HH:MM:ss') }}</span>
    </template>
    <template #action="{ row }">
        <el-button @click="onEdit(row)" class="btn-edit" type="info">{{
        t('修改')
        }}</el-button>
    </template>
    </Table>
</div>
...
<script>
const columns = [
  {
    title: '序号',
    type: 'seq',
    width: '60',
  },
  {
    title: '人员ID',
    field: 'personID',
  },
  {
    title: '人员姓名',
    field: 'name',
  },
  {
    title: '资质工序码',
    field: 'qualification',
  },
  {
    title: '卡号',
    field: 'cardNumber',
  },
  {
    title: '操作',
    field: 'action',
    width: '100',
  },
]
</script>
```
### åˆ†æ”¯å‘½å
> å¼€å‘:feature/xx
> ç¨³å®šï¼šrelease/xx
### é—®é¢˜
如遇到问题,把问题抛到群里,大家一起想办法解决,不要一个人闷着。
### å¾®å‰ç«¯é…ç½®
**`single-spa`**
待补充...
### èµ„源整合平台
解决开发效率和项目资源浪费等问题
待补充...
方案待更新...
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Controllers/File.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
import { importFileToService, exportFileToClient } from '@/api/file'
import { ElMessage } from 'element-plus'
import { downloadFile } from '@/utils'
import dayjs from 'dayjs'
export const useFile = () => {
  /**
   * å¯¼å…¥æ–‡ä»¶
   * @param url
   */
  const importFile = async (url: string, file: File) => {
    const formData = new FormData()
    formData.append('file', file)
    await importFileToService(url, formData)
    ElMessage('导入成功')
  }
  /**
   * å¯¼å‡ºæ–‡ä»¶
   * @param url
   */
  const exportFile = async (url: string, params: any, name: string) => {
    const res = await exportFileToClient(url, params)
    downloadFile(res, `${name}_${dayjs().format('YYYYMMDDHHMMss')}.xlsx`)
    ElMessage.success('导出成功')
  }
  return {
    importFile,
    exportFile,
  }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Controllers/MyEntityName.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,262 @@
import { ref, onMounted, reactive, Ref, nextTick, computed } from 'vue'
import { injectModel } from '@/libs/Provider/Provider'
import { MyEntityName } from '../Models/MyEntityName'
import { ElMessage } from 'element-plus'
import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox'
import { useFile } from './File'
interface CurrentType {
  row: any
  index: number
}
export const useMyEntityName = (props: any, ctx?: any) => {
  const myEntityName = injectModel<MyEntityName>('myEntityName')
  const { exportFile } = useFile()
  /**
   * å¤´éƒ¨é…ç½®
   */
  const headers = ref({})
  /**
   * åŠ¨æ€åˆ—é…ç½®
   */
  const myEntityNameColumns = ref<Record<string, any>>([])
  /**
   * æœç´¢å€¼
   */
  const search = ref('')
  /**
   * æŽ’序
   */
  const sort = ref(0)
  /**
   * é€‰æ‹©é¡¹
   */
  const selection = ref([])
  /**
   * å½“前选中的行
   */
  const current = ref<any>(null)
  /**
   * æ•°æ®æº
   */
  const dataSource: Ref<any[]> = ref([])
  /**
   * è¡¨æ ¼
   */
  const tableRef = ref()
  const dialogConfig = reactive({
    visible: false,
    title: '',
    isAdd: false,
  })
  const dialogSettingConfig = reactive({
    visible: false,
    title: '',
  })
  /**
   * åˆ†é¡µæ•°æ®
   */
  const paginationParams = ref({})
  /**
   * æ‰“开详情
   * @param row
   */
  const openDetail = (row: any) => {
    current.value = row
    dialogConfig.visible = true
    dialogConfig.title = row.name
    dialogConfig.isAdd = false
    sort.value = row.sort
  }
  const contextMenu = [
    {
      label: '展开详情',
      fn: (c: CurrentType) => {
        current.value = null
        sort.value = c.row.sort
        nextTick(() => openDetail(c.row))
      },
      divided: true,
      icon: 'o',
    },
    {
      label: '向上添加',
      fn: (c: CurrentType, pageNum: number) => {
        current.value = null
        sort.value = c.index + 1 + (pageNum - 1) * 50
        dialogConfig.visible = true
        dialogConfig.title = '添加'
        dialogConfig.isAdd = false
      },
      divided: true,
      icon: 'up',
    },
    {
      label: '向下添加',
      fn: (c: CurrentType, pageNum: number) => {
        current.value = null
        sort.value = c.index + 2 + (pageNum - 1) * 50
        dialogConfig.visible = true
        dialogConfig.title = '添加'
        dialogConfig.isAdd = false
      },
      divided: true,
      icon: 'down',
    },
    {
      label: '创建副本',
      fn: async ({ row }: CurrentType) => {
        await myEntityName.cloneData([row.id])
        ElMessage.success('创建副本成功')
        tableRef.value?.getList()
      },
      divided: true,
      icon: 'copy',
    },
    {
      label: '删除',
      fn: async (c: CurrentType) => {
        const names = selection.value.map((item: { name: string }) => item.name)
        ConfirmBox(
          `是否删除${names.length ? names.join(',') : c.row.name}`
        ).then(async () => {
          const ids = selection.value.map((item: { id: string }) => item.id)
          await myEntityName.deleteMyEntityNames(ids.length ? ids : [c.row.id])
          ElMessage.success('删除成功')
          tableRef.value.getList()
        })
      },
      icon: 'close',
    },
  ]
  const onCheck = (records: any) => {
    selection.value = records
  }
  const onAddMyEntityName = () => {
    const params = tableRef.value?.getPaginationParams()
    current.value = null
    dialogConfig.visible = true
    dialogConfig.isAdd = true
    dialogConfig.title = '添加'
    sort.value = params.totalCount + 1
  }
  const onConfirmMyEntityName = async () => {
    dialogConfig.visible = false
    if (dialogConfig.isAdd) {
      tableRef.value?.scrollToRow({
        skip: true,
      })
    } else {
      await tableRef.value?.getList()
    }
  }
  /**
   * è¡Œç‚¹å‡»æ—¶æ›´æ–°current
   */
  const onRowClick = ({ row }: any) => {
    if (dialogConfig.visible && current.value) {
      current.value = row
    }
  }
  /**
   * å¯¼å‡º
   */
  const onExport = () => {
    const params = tableRef.value?.getParams()
    exportFile(
      '/api/v1/myPluginName/myEntityName/export',
      params,
      'myPluginName'
    )
  }
  /**
   * å…³é”®å­—搜索
   */
  const onSearch = () => {
    tableRef.value?.getList({
      Filter: search.value,
    })
  }
  /**
   * é‡ç½®è¡¨æ ¼æ•°æ®
   */
  const reloadList = () => {
    tableRef.value?.getList()
  }
  /**
   * ä¸Šä¼ æˆåŠŸ
   */
  const onSuccess = () => {
    tableRef.value?.getList()
    ElMessage.success('导入成功')
  }
  /**
   * å¤±è´¥
   * @param err
   */
  const onError = (err: any) => {
    try {
      const message = JSON.parse(err.message)
      ElMessage.error(message.msg)
    } catch (error) {
      ElMessage.error('导入失败')
    }
  }
  /**
   * ä¸Šä¼ é’©å­
   */
  const onBeforeUpload = (file: File) => {
    const format = ['xlsx', 'xls', 'csv']
    if (!format.includes(file.name.split('.')[1])) {
      ElMessage.error('导入文件格式不正确,请导入.xlsx/.xls与.csv格式的文件')
      return false
    }
    return true
  }
  onMounted(() => {
    headers.value = {
      Authorization: `Bearer ${sessionStorage.getItem('Token')}`,
      'X-Project': sessionStorage.getItem('X-Project'),
    }
  })
  ctx.expose({
    reloadList,
  })
  return {
    dataSource,
    contextMenu,
    dialogConfig,
    dialogSettingConfig,
    tableRef,
    current,
    search,
    sort,
    myEntityNameColumns,
    paginationParams,
    headers,
    onBeforeUpload,
    onError,
    onSuccess,
    openDetail,
    onSearch,
    onExport,
    onRowClick,
    onConfirmMyEntityName,
    onCheck,
    onAddMyEntityName,
  }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Controllers/MyEntityNameDrawer.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,143 @@
import { ref, onMounted, reactive, computed, Ref, watch } from 'vue'
import { injectModel } from '@/libs/Provider/Provider'
import { MyEntityNameDrawer } from '../Models/MyEntityNameDrawer'
import { ElMessage } from 'element-plus'
import isEqual from 'lodash/isEqual'
import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox'
import { cloneDeep } from 'lodash'
export const useMyEntityNameDrawer = (props: any, ctx?: any) => {
  const myEntityNameDrawer =
    injectModel<MyEntityNameDrawer>('myEntityNameDrawer')
  /**
   * ç”¨æ¥å¯¹æ¯”的初始化数据
   */
  const initiateData: Ref<Record<string, any>> = ref({})
  const formData = ref<Record<string, any>>({})
  // ref
  const formRef = ref()
  const current = computed(() => {
    return props.row || null
  })
  const visible = computed({
    get() {
      return props.modelValue
    },
    set(val) {
      ctx.emit('update:modelValue', val)
    },
  })
  /**
   * æ·»åŠ çš„form字段
   */
  const formItems = reactive([
    {
      label: '名称',
      prop: 'name',
      el: 'input',
      placeholder: '请输入名称',
      rules: [{ required: true, message: '名称', trigger: 'blur' }],
    },
    {
      label: '编号',
      prop: 'code',
      el: 'input',
      placeholder: '请输入编号',
      rules: [{ required: true, message: '编号', trigger: 'blur' }],
    },
    {
      label: '备注',
      prop: 'remark',
      el: 'input',
      placeholder: '请输入备注',
    },
  ])
  /**
   * æ ¡éªŒæ˜¯å¦æœ‰æ•°æ®å˜åŒ–
   */
  const checkIsEqualObject = () => {
    const data = {
      formData: formData.value,
    }
    const check = isEqual(initiateData.value, data)
    return check
  }
  const onClose = (done: () => void) => {
    if (visible.value) {
      if (checkIsEqualObject()) {
        visible.value = false
        done && done()
      } else {
        ConfirmBox('是否保存设置?')
          .then(() => {
            onConfirm()
          })
          .catch(() => {
            visible.value = false
            done && done()
          })
      }
    }
  }
  /**
   * ä¿å­˜
   */
  const onConfirm = async () => {
    await formRef.value?.validate()
    const data = {
      name: formData.value.name,
      code: formData.value.code,
      remark: formData.value.remark,
      sort: props.sort,
    }
    if (!current.value) {
      await myEntityNameDrawer.addMyEntityName(data)
    } else {
      const id = current.value.id
      await myEntityNameDrawer.updateMyEntityName(id, data)
    }
    ElMessage.success('保存成功')
    ctx.emit('confirm')
  }
  const updateCheckData = () => {
    initiateData.value = {
      formData: {
        ...formData.value,
      },
    }
  }
  /**
   * å¼¹çª—打开获取详情
   */
  const onOpen = async () => {
    if (current.value) {
      const res = await myEntityNameDrawer.getMyEntityNameDetail(current.value)
      formData.value = {
        name: res.name,
        code: res.code,
        remark: res.remark,
        id: res.id,
      }
      updateCheckData()
    } else {
      formData.value = {}
      updateCheckData()
    }
  }
  watch(() => current.value, onOpen)
  return {
    formItems,
    formData,
    visible,
    formRef,
    onOpen,
    onClose,
    onConfirm,
  }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Models/MyEntityName.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
import { Base } from '@/libs/Base/Base'
import {
  deleteMyEntityNames,
  addMyEntityName,
  cloneData,
} from './Service/MyEntityName'
export class MyEntityName extends Base<{ [key: string]: any }> {
  constructor() {
    super({
      data: [],
    })
  }
  onMounted() {}
  /**
   * åˆ é™¤
   * @param id
   * @returns
   */
  async deleteMyEntityNames(ids: string[]) {
    return deleteMyEntityNames(ids)
  }
  /**
   * æ·»åŠ æ•°æ®
   * @param data
   * @returns
   */
  addMyEntityName(data: Record<string, any>) {
    return addMyEntityName(data)
  }
  /**
   * å…‹éš†
   * @param ids
   * @returns
   */
  cloneData(ids: string[]) {
    return cloneData(ids)
  }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Models/MyEntityNameDrawer.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
import { Base } from '@/libs/Base/Base'
import {
  addMyEntityName,
  getMyEntityName,
  updateMyEntityName,
} from './Service/MyEntityNameDrawer'
import { useGlobalState } from '@/libs/Store/Store'
export class MyEntityNameDrawer extends Base<{ [key: string]: any }> {
  constructor() {
    super({
      data: [],
      myEntityName: {},
    })
  }
  /**
   * æ·»åŠ 
   * @param data
   */
  async addMyEntityName(data: Record<string, any>) {
    return addMyEntityName(data)
  }
  /**
   * æ›´æ–°
   * @param data
   */
  async updateMyEntityName(id: string, data: Record<string, any>) {
    return updateMyEntityName(id, data)
  }
  /**
   * èŽ·å–è¯¦æƒ…
   */
  async getMyEntityNameDetail(current: any, id?: string) {
    return getMyEntityName(id || current?.id)
  }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Models/Service/MyEntityName.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
import { Base } from '@/libs/Base/Base'
const request = Base.request
/**
 * æ·»åŠ 
 * @returns
 */
export const addMyEntityName = (data: any) => {
  return request.post('/api/v1/myPluginName/myEntityName', data)
}
/**
 * æ‰¹é‡åˆ é™¤
 * @returns
 */
export const deleteMyEntityNames = (ids: string[]) => {
  return request({
    data: ids,
    url: '/api/v1/myPluginName/myEntityName',
    method: 'delete',
  })
}
/**
 * å…‹éš†
 * @returns
 */
export const cloneData = (data: any) => {
  return request.post('/api/v1/myPluginName/myEntityName/clone', data)
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Models/Service/MyEntityNameDrawer.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
import { Base } from '@/libs/Base/Base'
const request = Base.request
/**
 * æ·»åŠ 
 * @returns
 */
export const addMyEntityName = (data: any) => {
  return request.post('/api/v1/myPluginName/myEntityName', data)
}
/**
 * èŽ·å–è¯¦æƒ…
 * @returns
 */
export const getMyEntityName = (id: string) => {
  return request.get(`/api/v1/myPluginName/myEntityName/${id}`)
}
/**
 * æ›´æ–°
 * @returns
 */
export const updateMyEntityName = (id: string, data: Record<string, any>) => {
  return request.put(`/api/v1/myPluginName/myEntityName/${id}`, data)
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Views/MyPluginName.module.scss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
.MyPluginName {
  background-color: #fff;
  border-radius: 5px 5px 0 0;
  width: 100%;
  height: 100%;
  border: 1px solid #dbdbdb;
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Views/MyPluginName.tsx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@
import {
  Component,
  DefineComponent,
  defineComponent,
  markRaw,
  ref,
  SetupContext,
  onMounted,
} from 'vue'
import styles from './MyPluginName.module.scss'
// import MyEntityName from './Pages/MyEntityName/MyEntityName'
import Tab from '@/components/Tab/Tab'
import { useProvideModels } from '@/libs/Provider/app'
import { usePermission } from '@/libs/Permission/Permission'
import { permissionCodes } from '../enum'
import { ModuleType, TabItem } from '../type/Type'
import { getEntityNames } from '@/hooks/hook'
import TabPane from '@/components/Tab/TabPane'
const Models: ModuleType = import.meta.glob('./config/*.json', {
  eager: true,
})
const entityNames = getEntityNames(Models)
export default defineComponent({
  name: 'MyPluginName',
  setup(props, ctx: SetupContext) {
    useProvideModels()
    usePermission(props, permissionCodes)
    const rf = ref<{
      [key: string]: any
    }>({})
    const tabData = ref<TabItem[]>([])
    const onTabChange = (v: string) => {
      rf.value?.[v]?.reloadList()
    }
    const initTableData = async () => {
      for (const i in entityNames) {
        const name = entityNames[i]
        const module = await import(`./Pages/${name}/${name}.tsx`)
        const MyEntityName = markRaw(module.default)
        tabData.value.push({
          label: name,
          name,
          component: MyEntityName,
        })
      }
    }
    initTableData()
    return () => {
      return (
        <div class={styles.MyPluginName}>
          <Tab data={tabData.value} type="list" onTab={onTabChange}>
            {tabData.value.map((widgetInfo) => {
              const Widget: any = widgetInfo.component
              return (
                <TabPane label={widgetInfo.label} name={widgetInfo.name}>
                  <Widget
                    ref={(r: any) => (rf.value['MyEntityName'] = r)}
                  ></Widget>
                </TabPane>
              )
            })}
          </Tab>
        </div>
      )
    }
  },
})
在上述文件截断后对比
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Views/Pages/Dialog/MyEntityNameDrawer/MyEntityNameDrawer.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Views/Pages/Dialog/MyEntityNameDrawer/MyEntityNameDrawer.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Views/Pages/MyEntityName/Config.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Views/Pages/MyEntityName/MyEntityName.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Views/Pages/MyEntityName/MyEntityName.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/Views/config/MyEntityName.json Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/enum.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/index.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/app/template/MyPluginName/type/Type.d.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/components.d.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/env.d.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/index.html Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/main.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/package-lock.json Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/package.json Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/config.json Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/defaulttheme.css Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/favicon.ico Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/language/Common.en-US.json Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/language/language.en-US.json Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/language/language.zh-CN.json Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/svgpngbacktheme.json Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/svgpngwhitetheme.json Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/theme.css Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/widgets/mock.json Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/widgets/mock/index.js Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/public/对theme.css的说明 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/script/autoMenu.js Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/script/build.js Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/script/plugins/vite-plugin-cs-module-filter.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/script/plugins/vite-plugin-widget-provider.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/App.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/api/file.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/api/index.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/api/project-api.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/iconfont/demo.css Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/iconfont/demo_index.html Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/iconfont/iconfont.css Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/iconfont/iconfont.eot Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/iconfont/iconfont.js Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/iconfont/iconfont.json Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/iconfont/iconfont.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/iconfont/iconfont.ttf Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/iconfont/iconfont.woff Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/iconfont/iconfont.woff2 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/+.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/X.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/add-annex.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/add-p.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/banben.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/batch-b.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/batch-list.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/chart.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/close.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/closeDark.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/close_x.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/copy.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/d.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/del.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/delete.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/down.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/drawer_bg.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/edit.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/export.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/f.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/fb.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/fj.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/fnV.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/g.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/gongyiduan.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon-module.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon_add.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon_add2.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon_del.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon_exclamation.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon_move.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon_next.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon_nodata.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon_pre.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon_process.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/icon_search.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/import.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/in.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/left-arrow.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/lightsetting.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/o.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/out.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/pdf.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/pre_icon.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/procedure-direction.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/process.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/processStep1.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/processStep2.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/processStep3.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/processStep4.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/refresh.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/right-arrow.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/s.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/s_input.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/scale-menu.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/scale.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/search.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/setting.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/settings.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/sop.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/sys.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/tag_close.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/tip.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/up.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/variable.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/view.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/images/white_search.png Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/styles/common.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/styles/element.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/styles/index.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/add.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/add1.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/barcode.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/bianji.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/bom.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/del.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/del1.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/f.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/field.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/flow.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/materialManagement.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/more.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/move.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/order.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/p.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/peifangguanli.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/processConfiguration.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/prod.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/q.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/system.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/t.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/tip.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/assets/svg/title.svg Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/cms/index.css Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/cms/sdk.es.js Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/cms/sdk.es.ssr.js Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseConfigSelect/BaseConfigSelect.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseConfigSelect/BaseConfigSelect.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseContent/BaseContent.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseContent/BaseContent.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseDialog/BaseDialog.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseDialog/BaseDialog.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseDialog/index.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseDrawer/BaseDrawer.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseDrawer/BaseDrawer.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseInput/BaseInput.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseInput/BaseInput.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseQueryDrawer/BaseQueryDrawer.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/BaseQueryDrawer/BaseQueryDrawer.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/ConfirmBox/ConfirmBox.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/ConfirmBox/ConfirmBox.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Container/Container.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Container/Container.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Content/Content.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Content/Content.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/DatePicker/PrefixIcon.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/DatePicker/index.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/DateTimePickRange/DateTimePickRange.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/DateTimePickRange/DateTimePickRange.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Dialog/index.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/DyForm/DyForm.d.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/DyForm/DyForm.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/DyForm/DyForm.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/ElSelect/ElOption.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/ElSelect/ElSelect.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/ElSelect/index.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Empty/Empty.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Empty/Empty.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Flow/Flow.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Flow/Flow.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Icon/Icon.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/IconButton/IconButton.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/IconButton/IconButton.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Menu/index.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/MyPages/index.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Pdf/index.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/PreviewDialog/index.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/ProjectConfig/ProjectConfig.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/ProjectConfig/ProjectConfig.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Radio/Radio.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Radio/Radio.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Search/Search.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Search/Search.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/SearchInput/SearchInput.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/SearchInput/SearchInput.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Select/Option.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Select/Select.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/SelectInput/SelectInput.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/SelectInput/SelectInput.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Setting/Setting.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/SettingItem/SettingItem.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/SettingItem/state.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Tab/Tab.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Tab/Tab.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Tab/TabPane.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Table/Readme.md Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Table/Table.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Table/api.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Table/components/custom-vxe-column.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Table/components/pagination.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Table/index.d.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Table/index.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Table/index.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Table/index.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Table/state.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/TableFilter/TableFilter.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/TableFilter/TableFilter.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Tag/Tag.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Tag/Tag.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/TdButton/TdButton.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/TdButton/TdButton.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Text/Text.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Text/Text.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Title/Title.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Title/Title.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/TouchScale/index.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Upload/index.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Variable/Variable.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/Variable/Variable.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextMenu.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextMenu.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextMenuDefine.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextMenuGroup.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextMenuIconCheck.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextMenuIconRight.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextMenuInstance.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextMenuItem.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextMenuMutex.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextMenuSeparator.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextMenuUtils.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextSubMenu.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/ContextSubMenuWrapper.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/MenuBar.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/MenuBar.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/MenuBar.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/MenuBarIconMenu.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/env.d.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/index.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/shims-vue.d.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/tsconfig.json Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/components/vue3-context-menu/vite.config.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/config/menu.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/env.d.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/home.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/hooks/hook.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/index.d.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Base/Base.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Create/Create.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Hook/Hook.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Language/Language.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Language/i18n/langEN.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Language/i18n/langTH.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Language/i18n/langZH.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Permission/Permission.d.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Permission/Permission.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Provider/Provider.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Provider/app.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Store/State.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Store/Store.d.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/Store/Store.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/libs/enum.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/main.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/plugins/vxe-table.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/provider/index.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/provider/index.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/router.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/utils/ElMessage.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/utils/enum/index.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/utils/index.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/utils/permission.js Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/utils/request.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/utils/storage.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Controllers/File.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Controllers/WmsMaterial.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Controllers/WmsMaterialQueryDrawer.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Models/Service/WmsMaterial.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Models/Service/WmsMaterialDrawer.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Models/Service/WmsMaterialQueryDrawer.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Models/WmsMaterial.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Models/WmsMaterialDrawer.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Models/WmsMaterialQueryDrawer.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/HIAWms.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/HIAWms.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/Pages/Dialog/WmsMaterialDrawer/WmsMaterialDrawer.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/Pages/Dialog/WmsMaterialDrawer/WmsMaterialDrawer.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/Pages/Dialog/WmsMaterialQueryDrawer/WmsMaterialQueryDrawer.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/Pages/Dialog/WmsMaterialQueryDrawer/WmsMaterialQueryDrawer.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/Pages/WmsMaterial/Config.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/Pages/WmsMaterial/WmsMaterial.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/Pages/WmsMaterial/WmsMaterial.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/config/WmsMaterial.json Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/enum.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/index.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/type/Type.d.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/Http/Http.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/Http/Settings/Http.settings.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/Http/components/InputCode.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/Http/components/OptionConfigDialog.vue Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/Http/index.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Controllers/File.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Controllers/WmsContainer.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Controllers/WmsContainerDrawer.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Models/Service/WmsContainer.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Models/Service/WmsContainerDrawer.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Models/WmsContainer.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Models/WmsContainerDrawer.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Views/Pages/Dialog/WmsContainerDrawer/WmsContainerDrawer.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Views/Pages/Dialog/WmsContainerDrawer/WmsContainerDrawer.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/Config.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Views/WmsContainer.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Views/WmsContainer.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/Views/config/WmsContainer.json Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/enum.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/index.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsContainer/type/Type.d.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Controllers/File.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Controllers/WmsArea.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Controllers/WmsAreaDrawer.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Controllers/WmsPlace.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Controllers/WmsPlaceDrawer.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Controllers/WmsStore.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Controllers/WmsStoreDrawer.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/Service/WmsArea.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/Service/WmsAreaDrawer.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/Service/WmsPlace.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/Service/WmsPlaceDrawer.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/Service/WmsStore.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/Service/WmsStoreDrawer.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/WmsArea.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/WmsAreaDrawer.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/WmsPlace.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/WmsPlaceDrawer.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/WmsStore.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Models/WmsStoreDrawer.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/Dialog/WmsAreaDrawer/WmsAreaDrawer.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/Dialog/WmsAreaDrawer/WmsAreaDrawer.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/Dialog/WmsPlaceDrawer/WmsPlaceDrawer.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/Dialog/WmsPlaceDrawer/WmsPlaceDrawer.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/Dialog/WmsStoreDrawer/WmsStoreDrawer.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/Dialog/WmsStoreDrawer/WmsStoreDrawer.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/WmsArea/Config.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/WmsArea/WmsArea.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/WmsArea/WmsArea.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/WmsPlace/Config.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/WmsPlace/WmsPlace.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/WmsPlace/WmsPlace.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/WmsStore/Config.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/WmsStore/WmsStore.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/Pages/WmsStore/WmsStore.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/WmsStoreInfo.module.scss Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/WmsStoreInfo.tsx Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/config/WmsArea.json Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/config/WmsPlace.json Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/Views/config/WmsStore.json Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/enum.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/index.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/WmsStoreInfo/type/Type.d.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/hook.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/index.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/tsconfig.json Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/vite.config.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/vite.lib.config.ts Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/yarn.lock Weben_CMS专用代码生成器/版本说明.txt