From ff4660980ccfe3e123df8d5fa820266784625c74 Mon Sep 17 00:00:00 2001
From: yanjinhui <3306209981@qq.com>
Date: 星期二, 14 十月 2025 20:39:27 +0800
Subject: [PATCH] 1111

---
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/AOP/SqlSugarAop.cs                                              |  158 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockViewDTO.cs                                            |  133 
 代码管理/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrder_Hty.cs                      |   61 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderServices.cs                          |   37 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICustomerServices.cs                            |   20 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ISupplierServices.cs                            |   22 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskStatusEnum.cs                                    |  115 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/WhetherEnum.cs                                     |   24 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielInfoService.cs                                |   18 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderServices.cs                       |   47 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpHelper.cs                                            |  136 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/GoodsJob.cs                                                |   22 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ExceptionHandlerMiddleware.cs                       |   59 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/App.cs                                                          |  211 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/Inbound/InboundOrderDetailAddDTO.cs                              |   11 
 代码管理/WIDESEA_WMSServer/WIDESEA_SquareCabinRepository/InventoryRepository.cs                          |    1 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderResultService.cs                            |   15 
 代码管理/WIDESEA_WMSServer/WIDESEA_I/ICabinOrderHtyRepository.cs                                         |   15 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/MaterielEnum/MaterielTypeEnum.cs                              |   34 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/System/UserPermissions.cs                                        |   17 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs                                   |  432 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/OtherEnum/SequenceEnum.cs                                     |   13 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Const/AppSecret.cs                                              |   29 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/Inbound/MaterielGroupDTO.cs                                      |   22 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_WMSServer.csproj                                   |   89 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielCodeInfoService.cs                            |   16 
 新建文件夹/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/CodeChunks.db            |    0 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDAController.cs                               |  113 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_RecordService/RecordService.cs                                       |   22 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_BasicService/WIDESEA_BasicService.csproj                             |   14 
 代码管理/WIDESEA_WMSServer/WIDESEA_WMSServer/InOrderJob.cs                                               |    2 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderDetailServices.cs                 |   16 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Attributes/AnalysisRuleAttribute.cs                             |   34 
 新建文件夹/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/HierarchyCache.v1.txt                              |    0 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/Basic/InitializationLocationDTO.cs                               |   43 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrder.cs                         |   69 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IStockService/IStockService.cs                                       |   20 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_RecordService/StockQuantityChangeRecordService.cs                    |   19 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Helper/SecurityEncDecryptHelper.cs                              |   93 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationStatusEnum.cs                            |   50 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Stock/Dt_StockInfo.cs                                   |   65 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Core/InternalApp.cs                                             |   47 
 代码管理/WIDESEA_WMSServer/WIDESEA_I/ICabinOrderDetailHtyRepository.cs                                   |   26 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/PalletTypeEnum.cs                                  |   38 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundOrderDetail_HtyController.cs  |   24 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Seed/FrameSeed.cs                                               |  582 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Extensions/MiniProfilerSetup.cs                                 |   32 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/DeliveryOrderDetailController.cs   |   17 
 新建文件夹/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json                         |  826 +
 代码管理/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderDetailHtyServices.cs                    |   39 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/UploadStatusEnum.cs                                |   12 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Authorization/AuthorizationSetup.cs                             |   67 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/Basic/CachePointGroupDTO.cs                                      |   35 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/Inbound/InboundOrderAddDTO.cs                                    |   79 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrder_Hty.cs                        |   72 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs                                                 |  147 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Enums/OperateTypeEnum.cs                                        |   19 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderDetail_HtyService.cs                  |   19 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoDetail_HtyService.cs                         |   11 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrder_HtyService.cs                            |   30 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Const/SqlDbTypeName.cs                                          |   29 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderDetail_HtyService.cs                    |   15 
 代码管理/WIDESEA_WMSServer/WIDESEA_SquareCabinRepository/DeliveryOrderHtyRepository.cs                   |   18 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/SaveModel.cs                                         |   21 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/AuditStatusEnum.cs                                 |   36 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Extensions/AllOptionRegister.cs                                 |   24 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_StockService/WIDESEA_StockService.csproj                             |   14 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/WIDESEA_ITaskInfoService.csproj                     |   13 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Check/CheckOrderController.cs                  |   23 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Const/CacheConst.cs                                             |   94 
 代码管理/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs                          |   18 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile.pubxml            |   21 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_WMSServer.xml                                      |  163 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs                                |   55 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrderDetail_Hty.cs                  |   42 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/WIDESEA_DTO.csproj                                               |   14 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/WarehouseTypeController.cs         |   17 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_TenantService.cs                                 |   19 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Filter/GlobalExceptionsFilter.cs                                |   93 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderDetail_HtyController.cs    |   23 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/SwaggerMiddleware.cs                                |   62 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/ApprovalFlow/Dt_ApprovalFlow.cs                         |   41 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Helper/MethodInfoExtensions.cs                                  |   22 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/Inbound/InboundOrderGetDTO.cs                                    |   14 
 代码管理/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/CodeChunks.db-wal         |    0 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfo_HtyController.cs               |   22 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/CodeFormatTypeEnum.cs                            |   51 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Extensions/WebSocketSetup.cs                                    |   32 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderHtyServices.cs                         |   19 
 代码管理/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderDetailHtyServices.cs                  |   30 
 代码管理/WIDESEA_WMSServer/WIDESEA_I/IDeliveryOrderDetailHtyRepository.cs                                |   15 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Filter/ExporterHeaderFilter.cs                                  |   23 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs                                |  977 +
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/System/ActionDTO.cs                                              |   16 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Check/Dt_CheckOrder.cs                                  |  120 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_LogController.cs                    |   20 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs                                     |   21 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_InboundService/InboundService.cs                                     |   22 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs                         |   23 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Check/CheckOrderResultController.cs            |   22 
 代码管理/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json                                 | 2408 ++-
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_DictionaryListController.cs         |   19 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ISystemService/WIDESEA_ISystemService.csproj                         |   13 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Filter/ActionExecuteFilter.cs                                   |   23 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderDetailController.cs        |   22 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderDetail_HtyService.cs                      |   23 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderDetailHtyServices.cs              |   16 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Caches/ICaching.cs                                              |   59 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Attributes/CodeRuleAttribute.cs                                 |   20 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderDetailServices.cs                    |   16 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_BasicService/MaterielInfoService.cs                                  |   24 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/AOP/LogAOP.cs                                                   |  337 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IBasicService/WIDESEA_IBasicService.csproj                           |   13 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Menu.cs                                      |   81 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Extensions/SqlsugarSetup.cs                                     |  150 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/PalletCodeInfoController.cs              |   19 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/ApprovalFlow/Dt_NodeTransition.cs                       |   41 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderDetailServices.cs                      |   21 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Authorization/AuthorizationResponse.cs                          |   46 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/CheckOrderEnum.cs                                   |   61 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/Permissions.cs                                       |   27 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpMesHelper.cs                                         |   83 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/SwaggerAuthMiddleware.cs                            |   86 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Attributes/ModelValidateAttribute.cs                            |  109 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IStockService/IStockViewService.cs                                   |   18 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_RoleAuthService.cs                               |   16 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/MesOutboundOrderType.cs                             |   39 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Config/Dt_AnalysisRuleConfig.cs                         |   65 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfo_HtyService.cs                               |   17 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/OutLockStockStatusEnum.cs                           |   27 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/AnalysisCodeEnum.cs                              |   29 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs                                |   76 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs                                |   25 
 代码管理/WIDESEA_WMSServer/WIDESEA_I/IDeliveryOrderHtyRepository.cs                                      |   15 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_RecordService/LocationStatusChangeRecordService.cs                   |   16 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutofacPropertityModuleReg.cs                       |   16 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/SquareCabin/OrderDto.cs                                          |  320 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Caches/MemoryCacheService.cs                                    |  113 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Enums/AuthorityScopeEnum.cs                                     |   41 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceFunFilter.cs                                |  238 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_MenuService.cs                                     |  415 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Check/Dt_CheckOrderResult.cs                            |   53 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/anime.min.js                                    |   33 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskEnumHelper.cs                                    |   38 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Const/ErrorMsgConst.cs                                          |   15 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITask_HtyService.cs                                 |   18 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/CustomerJob.cs                                             |   21 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockSelectViewDTO.cs                                      |   22 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/MiddlewareHelpers.cs                                |   42 
 代码管理/WIDESEA_WMSServer/WIDESEA_SquareCabinRepository/CabinOrderDetailHtyRepository.cs                |   34 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IInboundService/WIDESEA_IInboundService.csproj                       |   13 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_RoleService.cs                                     |  358 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/EnableStatusEnum.cs                              |   39 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpContextHelper.cs                                     |   36 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_MenuController.cs                   |   67 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_LogService.cs                                      |   19 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/MedicineGoodsController.cs         |   31 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Attributes/ValueChangeAttribute.cs                              |   18 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/WIDESEA_ISquareCabinServices.csproj             |   15 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrderDetail.cs                      |   65 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/LoginInfo.cs                                                   |   15 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Tenant.cs                                    |   57 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/PrintStatusEnum.cs                                 |   23 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/ReceiveOrderEnum.cs                                 |   51 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/PageGridData.cs                                      |   26 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/AnalysisFormatTypeEnum.cs                        |   49 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderHtyServices.cs                    |   14 
 新建文件夹/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/SemanticSymbols.db-shm   |    0 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_BasicService/WarehouseService.cs                                     |   85 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IBasicService/IPalletCodeInfoService.cs                              |   17 
 代码管理/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs                             |   39 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs                                   |   21 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs                     |   26 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs                              |   22 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs                                 |   18 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_Warehouse.cs                                   |   59 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Const/HtmlElementType.cs                                        |   32 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_Supplier.cs                              |   37 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Const/TenantStatus.cs                                           |   14 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/WIDESEA_Common.csproj                                         |   15 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/DeliveryOrderController.cs         |   37 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/RuleCodeEnum.cs                                  |   49 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_ErrorLog.cs                              |   31 
 代码管理/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderHtyServices.cs                          |   19 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderService.cs                                  |   15 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Record/Dt_LocationStatusChangeRecord.cs                 |   77 
 代码管理/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs                                  |   23 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_DictionaryService.cs                             |   19 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs                                  |  157 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_User.cs                                      |  127 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs                                      |  126 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_DictionaryListService.cs                         |   11 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrderDetail_Hty .cs                 |   66 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/IDependency.cs                                                  |   12 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs                                       |   57 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/PurchaseOrderEnum.cs                                |   64 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json                                           |   35 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IInventoryServices.cs                           |   28 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/logo/favicon-32x32.png                             |    0 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Utilities/ModelValidate.cs                                      |  239 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/BaseController/ApiBaseController.cs                             |  171 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs                                 |  163 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrder.cs                            |   86 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReceiveOrderDetail.cs                        |  101 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/AspNetUser.cs                                   |  188 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Enums/LinqExpressionType.cs                                     |   21 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/IpLimitMiddleware.cs                                |   40 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Helper/ExportHelper.cs                                          |  106 
 代码管理/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderDetailHtyServices.cs               |   16 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielInfo.cs                                |  128 
 代码管理/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_Inventory.cs                              |    2 
 代码管理/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/HierarchyCache.v1.txt                               |    0 
 新建文件夹/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/SemanticSymbols.db       |    0 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Attributes/MethodParamsValidateAttribute.cs                     |   14 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Extensions/SwaggerContextExtension.cs                           |   72 
 代码管理/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderHtyServices.cs                     |   14 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs                                     |   41 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoDetailController.cs             |   20 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/site.js                                         |    4 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Const/TenantConst.cs                                            |   13 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/Logger.cs                                             |  251 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs                                    |   38 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Helper/AppSettings.cs                                           |   89 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Helper/ObjectExtension.cs                                       |   59 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoDetail_HtyService.cs                           |   15 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Stock/Dt_StockInfo_Hty.cs                               |   42 
 代码管理/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrderDetail_Hty.cs                |   69 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/WIDESEA_SquareCabinServices.csproj               |   14 
 新建文件夹/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1091.29919/CodeChunks.db          |    0 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IMedicineGoodsServices.cs                       |   32 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/HttpRequestMiddleware.cs                            |   25 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IStockService/WIDESEA_IStockService.csproj                           |   13 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Extensions/SwaggerSetup.cs                                      |  113 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_RoleController.cs                   |   84 
 新建文件夹/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/config/applicationhost.config                          | 1021 +
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_PurchaseOrder.cs                             |   77 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_DictionaryController.cs             |   31 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Tenants/TenantUtil.cs                                           |  127 
 代码管理/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/SemanticSymbols.db-wal    |    0 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/Task/WCSTaskDTO.cs                                               |  104 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/InventoryController.cs             |   33 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/css/site.css                                       |   71 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Enums/EnumHelper.cs                                             |  111 
 代码管理/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderDetailHtyServices.cs                 |   20 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoController.cs                   |   25 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Extensions/HttpContextExtension.cs                              |   24 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Extensions/AutofacModuleRegister.cs                             |   80 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IOutboundService/WIDESEA_IOutboundService.csproj                     |   13 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/swg-login.html                                     |  140 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/System/RoleNodes.cs                                     |   15 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/SupplierServices.cs                              |  108 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Caches/Caching.cs                                               |  351 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/MaterielEnum/MaterielStateEnum.cs                             |   13 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderDetailService.cs                      |   22 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Extensions/InitializationHostServiceSetup.cs                    |   28 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/css/swaggerdoc.css                                 |  109 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/IWarehouseTypeServices.cs          |    6 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrderDetail.cs                      |   87 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs                           |   29 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Utilities/LambdaExtensions.cs                                   |  248 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/css/style.css                                      |  132 
 代码管理/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/InventoryController.cs              |    1 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/MaterielEnum/MaterielSourceTypeEnum.cs                        |   26 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/IBaseHistoryEntity.cs                                 |   37 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/Outbound/OutboundOrderAddDTO.cs                                  |   37 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/RequestLogModel.cs                                    |   13 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/favicon.ico                                        |    0 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs                               |  224 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_TaskInfoService/Task_HtyService.cs                                   |   13 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Authorization/JwtHelper.cs                                      |  121 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Seed/DBContext.cs                                               |  216 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CustomerServices.cs                              |  105 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrder_HtyService.cs                          |   17 
 代码管理/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/InventoryServices.cs                              |   35 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Core/IConfigurableOptions.cs                                    |   12 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderDetailHtyServices.cs                   |   20 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile1.pubxml           |   17 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/MedicineGoodsServices.cs                         |  295 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundService.cs                                   |   16 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Utilities/VierificationCode.cs                                  |  122 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoDetailService.cs                             |   11 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IBasicService/IWarehouseService.cs                                   |   17 
 代码管理/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs                                                  |    2 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/InboundOrderMenu.cs                                 |   93 
 新建文件夹/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1091.29919/SemanticSymbols.db     |    0 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_PalletCodeInfo.cs                              |   41 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/WIDESEA_Model.csproj                                           |   19 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task_Hty.cs                                 |   44 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderDetailHtyServices.cs                |   20 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs                         |  884 +
 代码管理/WIDESEA_WMSServer/WIDESEA_I/IDeliveryOrderRepository.cs                                         |    2 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs                                         |   27 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_Role.tsv                |   15 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs                            |  525 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Seed/DBSeed.cs                                                  |  318 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrderDetail_Hty.cs               |   62 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/InOrderJob.cs                                              |   22 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/SquareCabin/ApiResponse.cs                                       |   41 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/swaggerdoc.js                                   |  139 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/index.html                                                 |  188 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/IUser.cs                                        |   57 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/SquareCabin/TowcsDto.cs                                          |  391 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/logo.jpg.jpg                                       |    0 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/RecyclingEnum.cs                                   |   31 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReceiveOrder.cs                              |   92 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Helper/UtilConvert.cs                                           |  983 +
 代码管理/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/CodeChunks.db             |    0 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_LogService.cs                                    |   14 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/MaterielInfoController.cs                |   27 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_UserService.cs                                   |   26 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderHtyServices.cs                      |   19 
 新建文件夹/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json                                |  826 +
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Const/ConfigConst.cs                                            |   64 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/CabinOrderDetailHtyController.cs   |   15 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderService.cs                            |   20 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IRecordService/ILocationStatusChangeRecordService.cs                 |   18 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/System/VueDictionaryDTO.cs                                       |   19 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_WarehouseType.cs                         |   25 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoDetailService.cs                               |   26 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutStockLockInfoController.cs         |   23 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs                                     |  923 +
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/ApprovalFlow/Dt_ApprovalNode.cs                         |   53 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Log.cs                                       |   83 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/.config/dotnet-tools.json                                  |   12 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_StockService/StockInfo_HtyService.cs                                 |   20 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationTypeEnum.cs                              |   45 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer.sln                                                        |  399 
 代码管理/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrder.cs                          |    2 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IRecordService/IRecordService.cs                                     |   16 
 代码管理/WIDESEA_WMSServer/WIDESEA_SquareCabinRepository/DeliveryOrderDetailHtyRepository.cs             |   18 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/APIEnum/APIEnum.cs                                            |   41 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockViewController.cs                   |   38 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderService.cs                                    |   24 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_Customer.cs                              |   37 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Record/LocationStatusChangeRecordController.cs |   23 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OutboundOrderEnum.cs                                |   96 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Helper/RuntimeExtension.cs                                      |   89 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Extensions/IpPolicyRateLimitSetup.cs                            |   43 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/System/DictionaryDTO.cs                                          |   29 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/Basic/InnerCodeDTO.cs                                            |   16 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs                                     |  146 
 代码管理/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderHtyServices.cs                       |   20 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/Basic/SupplierDTO.cs                                             |   79 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundLockInfo.cs                         |  112 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_RoleAuth.tsv            |  167 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryListService.cs                           |   21 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationChangeType.cs                            |   57 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs                                     |  101 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/SupplierController.cs              |   26 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_SupplierInfo.cs                                |   83 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrder.cs                              |   80 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.Development.json                               |    8 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Filter/ApiAuthorizeFilter.cs                                    |   95 
 代码管理/WIDESEA_WMSServer/WIDESEA_SquareCabinRepository/CabinOrderHtyRepository.cs                      |   18 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielCodeInfo.cs                            |   70 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoDetail_HtyController.cs         |   22 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutoMapperConfig.cs                                 |   18 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_RoleService.cs                                   |   35 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/AnalysisRuleEnum.cs                              |   27 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile2.pubxml           |   17 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs                              |   25 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/CabinOrderController.cs            |   34 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_LocationInfo.cs                                |   95 
 代码管理/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrderDetail_Hty .cs                  |    6 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_InboundService/WIDESEA_InboundService.csproj                         |   17 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Attributes/SequenceAttirbute.cs                                 |   30 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_MesOutboundOrder.cs                         |  116 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs                  |  194 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/ApprovalFlow/Dt_ApprovalTask.cs                         |   71 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Helper/FileHelper.cs                                            |  451 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_CustomerInfo.cs                                |   47 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetail_HtyService.cs                    |   19 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrder_HtyService.cs                        |   10 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrder_HtyController.cs          |   23 
 代码管理/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderHtyServices.cs                        |   16 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderHtyServices.cs                       |   16 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrder_Hty.cs                        |   44 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrder_Hty.cs                     |   63 
 代码管理/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrderDetail.cs                       |    2 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/WIDESEA_Core.csproj                                             |   41 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Record/Dt_StockQuantityChangeRecord.cs                  |  101 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/OutOrderJob.cs                                             |   25 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Utilities/ParamsValidator.cs                                    |   48 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/Task_HtyController.cs                 |   23 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IRecordService/IStockQuantityChangeRecordService.cs                  |   18 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderDetailHtyServices.cs                 |   17 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_RoleAuth.cs                                  |   48 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/DB/BaseDBConfig.cs                                              |  121 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/LogLock.cs                                            |   92 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/WarehouseController.cs                   |   22 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Extensions/ApplicationSetup.cs                                  |   28 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderDetailService.cs                          |   25 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_TenantService.cs                                   |   82 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_RoleAuthService.cs                                 |   21 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/BaseEntity.cs                                         |   82 
 代码管理/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IInventoryServices.cs                            |    1 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/Task/WMSTaskDTO.cs                                               |   75 
 代码管理/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/SemanticSymbols.db        |    0 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Stock/Dt_StockInfoDetail_Hty.cs                         |   42 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Utilities/EntityProperties.cs                                   |  367 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/Outbound/OutboundOrderGetDTO.cs                                  |   15 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Attributes/CustomValidationAttribute.cs                         |   25 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Helper/AutoMapperHelper.cs                                      |   23 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs                                  |   65 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_PalletTypeInfo.cs                              |   89 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundOrder_HtyController.cs        |   24 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoService.cs                                   |   11 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_Inventory.cs                             |   40 
 新建文件夹/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/SemanticSymbols.db-wal   |    0 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/JwtTokenAuthMiddleware.cs                           |   94 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Caches/ICacheService.cs                                         |   60 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OrderDetailStatusEnum.cs                            |   52 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Dictionary.cs                                |   81 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/BaseWarehouseEntity.cs                                |   15 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWork.cs                        |   55 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/Outbound/OutboundOrderDetailAddDTO.cs                            |   39 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_ApiInfo.cs                                     |   43 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/Basic/MatSerNumAnalysisModel.cs                                  |   59 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IRecordService/WIDESEA_IRecordService.csproj                         |   13 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrderDetail.cs                        |   89 
 代码管理/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/MedicineGoodsServices.cs                          |    5 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/IUnitOfWorkManage.cs                 |   25 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderDetailServices.cs                   |   20 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_BasicService/PalletCodeInfoService.cs                                |   28 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/CabinOrderDetailController.cs      |   17 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IBasicService/IBasicService.cs                                       |   31 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/DB/RepositorySetting.cs                                         |   53 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Helper/CodeAnalysisHelper.cs                                    |  204 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockChangeTypeEnum.cs                              |   41 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_UserInfo.cs                                    |   61 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/System/RoleAuthor.cs                                    |   14 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrder_HtyService.cs                          |   19 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_UserController.cs                   |  157 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_User.tsv                |   29 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WIDESEA_TaskInfoService.csproj                       |   18 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_DictionaryList.cs                            |   57 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_CheckService/WIDESEA_CheckService.csproj                             |   13 
 代码管理/WIDESEA_WMSServer/WIDESEA_I/IInventoryRepository.cs                                             |    1 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Config/Dt_CodeRuleConfig.cs                             |   71 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs                                     |  269 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderDetailService.cs                        |   17 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationInfoController.cs                |   30 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Filter/IFixedTokenFilter.cs                                     |   57 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrder_Hty.cs                          |   44 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Extensions/CorsSetup.cs                                         |   56 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs                              |   20 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_TenantController.cs                 |   36 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/WebResponseContent.cs                                |   53 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/EnableEnum.cs                                      |   27 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/HostedService/PermissionDataHostService.cs                      |  200 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/HostedService/SeedDataHostedService.cs                          |   63 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_MenuService.cs                                   |   39 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Record/StockQuantityChangeRecordController.cs  |   20 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Tenants/MultiTenantAttribute.cs                                 |   56 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Extensions/HttpContextSetup.cs                                  |   30 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_DictionaryList.tsv      |  522 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetailService.cs                        |   20 
 代码管理/WIDESEA_WMSServer/WIDESEA_WMSServer/GoodsJob.cs                                                 |    2 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Filter/UseServiceDIAttribute.cs                                 |   38 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundOrderController.cs            |   28 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_MedicineGoods.cs                         |   70 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrderDetail_Hty.cs                    |   42 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrder.cs                            |   68 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Helper/ConsoleHelper.cs                                         |   57 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundOrderDetailController.cs      |   24 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Extensions/DbSetup.cs                                           |   24 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_ICheckService/WIDESEA_ICheckService.csproj                           |   13 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SystemService/WIDESEA_SystemService.csproj                           |   13 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_Dictionary.tsv          |  274 
 代码管理/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrder_Hty.cs                         |    2 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OrderCreateTypeEnum.cs                              |   24 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_RecordService/WIDESEA_RecordService.csproj                           |   13 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/MaterielCodeInfoController.cs            |   17 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/System/MenuDTO.cs                                                |   14 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/PageDataOptions.cs                                   |  153 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Extensions/MemoryCacheSetup.cs                                  |   28 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_OutboundService/WIDESEA_OutboundService.csproj                       |   16 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_BasicService/MaterielCodeInfoService.cs                              |   26 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrderDetail.cs                   |   60 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_PurchaseOrderDetail.cs                       |   71 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Role.cs                                      |   54 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutoMapperSetup.cs                                  |   16 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/AllServicesMiddleware.cs                            |   62 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/jquery-3.3.1.min.js                             |    2 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/InventoryServices.cs                             |  208 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/Stock/Dt_StockInfoDetail.cs                             |  106 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/launchSettings.json                             |   31 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderController.cs              |   24 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/IService.cs                                        |  123 
 新建文件夹/WIDESEA_WMSServer/.editorconfig                                                                |    4 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_Menu.tsv                |  716 +
 代码管理/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrder.cs                             |    8 
 /dev/null                                                                                            |    0 
 代码管理/WIDESEA_WMSServer/WIDESEA_DTO/SquareCabin/TowcsDto.cs                                           |   40 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Core/ConfigurableOptions.cs                                     |   66 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Tenants/ITenantEntity.cs                                        |   21 
 代码管理/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json                          | 2426 ++-
 新建文件夹/WIDESEA_WMSServer/WIDESEA_DTO/Basic/LocationGroupDTO.cs                                        |   35 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs                                         |   26 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/DB/MainDb.cs                                                    |   32 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_RoleDataPermission.cs                        |   27 
 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/CustomerController.cs              |   18 
 502 files changed, 38,575 insertions(+), 1,866 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/CodeChunks.db" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/CodeChunks.db"
index 332eae7..959e7c2 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/CodeChunks.db"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/CodeChunks.db"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/CodeChunks.db-wal" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/CodeChunks.db-wal"
index 4b7937b..0409ace 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/CodeChunks.db-wal"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/CodeChunks.db-wal"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/SemanticSymbols.db" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/SemanticSymbols.db"
index 4d6418f..56ca9e5 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/SemanticSymbols.db"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/SemanticSymbols.db"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/SemanticSymbols.db-wal" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/SemanticSymbols.db-wal"
index 25e123e..ff40f0a 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/SemanticSymbols.db-wal"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/SemanticSymbols.db-wal"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json"
index f903baf..13d3216 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json"
@@ -3,172 +3,56 @@
   "WorkspaceRootPath": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\",
   "Documents": [
     {
-      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\cabinorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\cabinorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\inorderjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\inorderjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\outorderjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\outorderjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\icabinorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\icabinorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\deliveryorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\deliveryorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\ideliveryorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\ideliveryorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\medicinegoodsservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\medicinegoodsservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\iwarehousetyperepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\iwarehousetyperepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\isupplierrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\isupplierrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\imedicinegoodsrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\imedicinegoodsrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\iinventoryrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\iinventoryrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\ideliveryorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\ideliveryorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\ideliveryorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\ideliveryorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\icustomerrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\icustomerrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\icabinorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\icabinorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\icabinorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\icabinorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_cabinorderdetail_hty .cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_cabinorderdetail_hty .cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_cabinorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_cabinorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_cabinorder_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_cabinorder_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_supplier.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_supplier.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_medicinegoods.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_medicinegoods.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_inventory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_inventory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_errorlog.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_errorlog.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_deliveryorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_deliveryorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_deliveryorder.cs||{8B382828-6202-11D1-8870-0000F87579D2}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_deliveryorder.cs||{8B382828-6202-11D1-8870-0000F87579D2}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_customer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_customer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\seed\\dbseed.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\seed\\dbseed.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_warehousetype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_warehousetype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_cabinorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_cabinorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
       "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\goodsjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\goodsjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\outboundorder\\dt_outorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\outboundorder\\dt_outorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\basic\\dt_areainfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\basic\\dt_areainfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\iinventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\iinventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\inventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\inventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\globalusing.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\globalusing.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\supplierservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\supplierservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\outorderjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\outorderjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\inorderjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\inorderjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\cabinordercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\cabinordercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\cabinorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\cabinorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\icabinorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\icabinorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\inventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\inventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\iinventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\iinventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_dto\\squarecabin\\towcsdto.cs||{8B382828-6202-11D1-8870-0000F87579D2}",
       "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\squarecabin\\towcsdto.cs||{8B382828-6202-11D1-8870-0000F87579D2}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\inventorycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\inventorycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\cabinorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\cabinorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\dt_roadwayinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\dt_roadwayinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\extensions\\autofacmoduleregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\extensions\\autofacmoduleregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\dt_materielinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\dt_materielinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\medicinegoodsservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\medicinegoodsservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\medicinegoodscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -179,40 +63,352 @@
       "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\deliveryordercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\suppliercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\suppliercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\inventorycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\inventorycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
       "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\deliveryorderdetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\deliveryorderdetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\cabinorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\cabinorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\inventoryrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\inventoryrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\deliveryorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\deliveryorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\deliveryorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\deliveryorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\customerrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\customerrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\customercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\customercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\cabinorderdetailhtycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\cabinorderdetailhtycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\cabinorderdetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\cabinorderdetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_dto\\squarecabin\\orderdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\squarecabin\\orderdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
       "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_dto\\squarecabin\\apiresponse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\squarecabin\\apiresponse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
+      "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_dto\\wcs\\dt_deviceinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\wcs\\dt_deviceinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\iwarehousetypeservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\iwarehousetypeservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_cabinorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_cabinorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_cabinorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_cabinorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_medicinegoods.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_medicinegoods.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
       "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\imedicinegoodsservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\imedicinegoodsservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_cabinorder_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_cabinorder_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabinwcs\\dt_edioutdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabinwcs\\dt_edioutdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabinwcs\\dt_ediout.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabinwcs\\dt_ediout.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabinwcs\\dt_ediindetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabinwcs\\dt_ediindetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabinwcs\\dt_ediin.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabinwcs\\dt_ediin.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\middlewares\\apilogmiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\middlewares\\apilogmiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\authorization\\authorizationresponse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\authorization\\authorizationresponse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\extensions\\alloptionregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\extensions\\alloptionregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\icabinorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\icabinorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\icabinorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\icabinorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_deliveryorder_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_deliveryorder_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_deliveryorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_deliveryorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_deliveryorder.cs||{8B382828-6202-11D1-8870-0000F87579D2}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_deliveryorder.cs||{8B382828-6202-11D1-8870-0000F87579D2}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_cabinorderdetail_hty .cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_cabinorderdetail_hty .cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\seed\\dbseed.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\seed\\dbseed.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\cabinorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\cabinorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\cabinorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\cabinorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\icabinorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\icabinorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\cabinorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\cabinorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\cabinorderhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\cabinorderhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\cabinorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\cabinorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\cabinorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\cabinorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\icabinorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\icabinorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\icabinorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\icabinorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\icabinorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\icabinorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\icabinorderhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\icabinorderhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\deliveryorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\deliveryorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\deliveryorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\deliveryorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\deliveryorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\deliveryorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\deliveryorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\deliveryorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\ideliveryorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\ideliveryorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\ideliveryorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\ideliveryorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\ideliveryorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\ideliveryorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\ideliveryorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\ideliveryorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\deliveryorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\deliveryorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\deliveryorderhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\deliveryorderhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\ideliveryorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\ideliveryorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_inventory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_inventory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\deliveryorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\deliveryorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\iinventoryrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\iinventoryrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\ideliveryorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\ideliveryorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\ideliveryorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\ideliveryorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\deliveryorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\deliveryorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\icustomerrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\icustomerrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\customerservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\customerservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\isupplierrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\isupplierrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_supplier.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_supplier.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_errorlog.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_errorlog.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_deliveryorderdetail_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_deliveryorderdetail_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\logininfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\logininfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\system\\sys_log.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\system\\sys_log.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\loghelper\\logger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\loghelper\\logger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\helper\\appsettings.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\helper\\appsettings.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\helper\\filehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\helper\\filehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\helper\\httphelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\helper\\httphelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\extensions\\httpcontextsetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\extensions\\httpcontextsetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\extensions\\applicationsetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\extensions\\applicationsetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|solutionrelative:widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\inventoryrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\inventoryrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_warehousetype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_warehousetype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_customer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_customer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\warehousetypeservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\warehousetypeservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\supplierservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\supplierservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\system\\roleauthor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\system\\roleauthor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\iwarehousetyperepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\iwarehousetyperepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\imedicinegoodsrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\imedicinegoodsrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\outboundorder\\dt_outorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\outboundorder\\dt_outorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\basic\\dt_areainfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\basic\\dt_areainfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\dt_roadwayinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\dt_roadwayinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\dt_materielinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\dt_materielinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\customerrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\customerrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -223,60 +419,12 @@
       "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\index.html||{40D31677-CBC0-4297-A9EF-89D907823A98}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\cabinorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\cabinorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\icabinorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\icabinorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\cabinordercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\cabinordercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\deliveryorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\deliveryorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\warehousetypeservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\warehousetypeservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
       "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\icustomerservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\icustomerservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\icabinorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\icabinorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\cabinorderdetailhtycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\cabinorderdetailhtycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\icabinorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\icabinorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\cabinorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\cabinorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\cabinorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\cabinorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
       "AbsoluteMoniker": "D:0:0:{B5C7DC02-077C-4255-A369-600D033A4C23}|WIDESEA_IRepository\\WIDESEA_IRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_irepository\\isys_dictionaryrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{B5C7DC02-077C-4255-A369-600D033A4C23}|WIDESEA_IRepository\\WIDESEA_IRepository.csproj|solutionrelative:widesea_irepository\\isys_dictionaryrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\ideliveryorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\ideliveryorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\customerservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\customerservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\isupplierservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -302,20 +450,47 @@
           "Children": [
             {
               "$type": "Document",
-              "DocumentIndex": 34,
+              "DocumentIndex": 8,
               "Title": "IInventoryServices.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IInventoryServices.cs",
               "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IInventoryServices.cs",
               "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IInventoryServices.cs",
               "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IInventoryServices.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABYAAABHAAAAAAAAAA==",
+              "ViewState": "AgIAAAwAAAAAAAAAAAAAABUAAABVAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-09-26T13:37:06.732Z",
-              "IsPinned": true
+              "IsPinned": true,
+              "EditorCaption": ""
             },
             {
               "$type": "Bookmark",
               "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 4,
+              "Title": "CabinOrderController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderController.cs",
+              "ViewState": "AgIAAAYAAAAAAAAAAAAswBIAAAAuAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T02:47:48.421Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 3,
+              "Title": "InOrderJob.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\InOrderJob.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\InOrderJob.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\InOrderJob.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\InOrderJob.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAswAgAAABBAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T08:58:12.162Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
@@ -325,142 +500,1197 @@
               "RelativeDocumentMoniker": "WIDESEA_WMSServer\\OutOrderJob.cs",
               "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\OutOrderJob.cs",
               "RelativeToolTip": "WIDESEA_WMSServer\\OutOrderJob.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAZAAAAAAAAAA==",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABUAAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-09-28T00:59:35.966Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 4,
-              "Title": "DeliveryOrderServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
-              "ViewState": "AgIAAGIAAAAAAAAAAAArwHcAAAAqAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-25T06:57:14.285Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
               "DocumentIndex": 1,
-              "Title": "InOrderJob.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\InOrderJob.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\InOrderJob.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\InOrderJob.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\InOrderJob.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAAjAAAAAAAAAA==",
+              "Title": "GlobalUsing.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\GlobalUsing.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\GlobalUsing.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\GlobalUsing.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\GlobalUsing.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAsAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T08:58:12.162Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 3,
-              "Title": "ICabinOrderServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\ICabinOrderServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderServices.cs",
-              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\ICabinOrderServices.cs",
-              "ViewState": "AgIAAAsAAAAAAAAAAIA9wCAAAAAbAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T00:57:40.312Z",
+              "WhenOpened": "2025-09-28T00:57:55.359Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 0,
+              "Title": "GoodsJob.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\GoodsJob.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\GoodsJob.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\GoodsJob.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\GoodsJob.cs",
+              "ViewState": "AgIAAAIAAAAAAAAAAAAlwBIAAAA4AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:04:50.65Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 5,
               "Title": "CabinOrderServices.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderServices.cs",
               "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\CabinOrderServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderServices.cs*",
-              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CabinOrderServices.cs*",
-              "ViewState": "AgIAALMAAAAA/P////8jwMEAAAAUAAAAAAAAAA==",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CabinOrderServices.cs",
+              "ViewState": "AgIAAFcBAAAAAAAAAAAlwGEBAABAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-09-26T03:28:24.308Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 5,
-              "Title": "IDeliveryOrderServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IDeliveryOrderServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderServices.cs",
-              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IDeliveryOrderServices.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAB4AAAAfAAAAAAAAAA==",
+              "DocumentIndex": 6,
+              "Title": "ICabinOrderServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\ICabinOrderServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\ICabinOrderServices.cs",
+              "ViewState": "AgIAAAQAAAAAAAAAAAASwBEAAAAbAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T13:37:05.265Z",
+              "WhenOpened": "2025-09-28T00:57:40.312Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 6,
+              "DocumentIndex": 7,
+              "Title": "InventoryServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\InventoryServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\InventoryServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\InventoryServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\InventoryServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAE4AAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T07:03:31.08Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 9,
+              "Title": "TowcsDto.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
+              "RelativeDocumentMoniker": "WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
+              "RelativeToolTip": "WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
+              "ViewState": "AgIAADkBAAAAAAAAAIA6wE8BAAAoAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T03:36:18.251Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 10,
+              "Title": "CabinOrderDetailHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderDetailHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\CabinOrderDetailHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderDetailHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CabinOrderDetailHtyServices.cs",
+              "ViewState": "AgIAAAMAAAAAAAAAAAAAABEAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T07:39:08.325Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 11,
+              "Title": "AutofacModuleRegister.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Extensions\\AutofacModuleRegister.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Extensions\\AutofacModuleRegister.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Extensions\\AutofacModuleRegister.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Extensions\\AutofacModuleRegister.cs",
+              "ViewState": "AgIAAEAAAAAAAAAAAAAUwE4AAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T04:40:56.934Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 12,
               "Title": "MedicineGoodsServices.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\MedicineGoodsServices.cs",
               "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\MedicineGoodsServices.cs",
               "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\MedicineGoodsServices.cs",
               "RelativeToolTip": "WIDESEA_SquareCabinServices\\MedicineGoodsServices.cs",
-              "ViewState": "AgIAAGQAAAAAAAAAAAAvwHkAAAAIAAAAAAAAAA==",
+              "ViewState": "AgIAAGgAAAAAAAAAAAApwHgAAAALAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-09-26T06:36:27.263Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 7,
-              "Title": "appsettings.json",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\appsettings.json",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json",
-              "RelativeToolTip": "WIDESEA_WMSServer\\appsettings.json",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAABGAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
-              "WhenOpened": "2025-09-28T05:48:43.064Z",
+              "DocumentIndex": 13,
+              "Title": "MedicineGoodsController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\MedicineGoodsController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\MedicineGoodsController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\MedicineGoodsController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\MedicineGoodsController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAswAgAAAA9AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:46:33.758Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 8,
+              "DocumentIndex": 14,
+              "Title": "DeliveryOrderController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
+              "ViewState": "AgIAAAYAAAAAAAAAAAAAABUAAAA9AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:42:38.3Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 15,
               "Title": "Program.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Program.cs",
               "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Program.cs",
               "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Program.cs",
               "RelativeToolTip": "WIDESEA_WMSServer\\Program.cs",
-              "ViewState": "AgIAAGAAAAAAAAAAAAAAADMAAABXAAAAAAAAAA==",
+              "ViewState": "AgIAAC0AAAAAAAAAAAAhwD4AAAAnAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-09-26T13:44:16.06Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 15,
-              "Title": "ICustomerRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICustomerRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_I\\ICustomerRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICustomerRepository.cs",
-              "RelativeToolTip": "WIDESEA_I\\ICustomerRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:37:12.436Z"
+              "DocumentIndex": 16,
+              "Title": "appsettings.json",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\appsettings.json",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json",
+              "RelativeToolTip": "WIDESEA_WMSServer\\appsettings.json",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABMAAAA9AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
+              "WhenOpened": "2025-09-28T05:48:43.064Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 12,
+              "DocumentIndex": 17,
+              "Title": "SupplierController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\SupplierController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\SupplierController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\SupplierController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\SupplierController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvw8AAAA3AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-09T02:51:57.04Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 19,
+              "Title": "DeliveryOrderDetailController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAABAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:46:12.697Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 18,
+              "Title": "InventoryController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAMAAAAjAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:46:17.643Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 20,
+              "Title": "CustomerController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T05:51:09.469Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 21,
+              "Title": "CabinOrderDetailHtyController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T02:09:19.797Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 22,
+              "Title": "CabinOrderDetailController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-09T02:51:51.935Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 23,
+              "Title": "OrderDto.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\OrderDto.cs",
+              "RelativeDocumentMoniker": "WIDESEA_DTO\\SquareCabin\\OrderDto.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\OrderDto.cs",
+              "RelativeToolTip": "WIDESEA_DTO\\SquareCabin\\OrderDto.cs",
+              "ViewState": "AgIAAEEAAAAAAAAAAAAqwFYAAAAJAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T08:31:20.094Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 25,
+              "Title": "Dt_DeviceInfo.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\WCS\\Dt_DeviceInfo.cs",
+              "RelativeDocumentMoniker": "WIDESEA_DTO\\WCS\\Dt_DeviceInfo.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\WCS\\Dt_DeviceInfo.cs",
+              "RelativeToolTip": "WIDESEA_DTO\\WCS\\Dt_DeviceInfo.cs",
+              "ViewState": "AgIAACoAAAAAAAAAAAAQwCgAAAAQAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-09T02:48:23.023Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 26,
+              "Title": "IWarehouseTypeServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IWarehouseTypeServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IWarehouseTypeServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IWarehouseTypeServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IWarehouseTypeServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvw8AAAABAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-09T02:36:26.243Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 27,
+              "Title": "Dt_CabinOrder.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
+              "ViewState": "AgIAACAAAAAAAAAAAAASwDYAAAAnAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T05:37:21.19Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 24,
+              "Title": "ApiResponse.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\ApiResponse.cs",
+              "RelativeDocumentMoniker": "WIDESEA_DTO\\SquareCabin\\ApiResponse.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\ApiResponse.cs",
+              "RelativeToolTip": "WIDESEA_DTO\\SquareCabin\\ApiResponse.cs",
+              "ViewState": "AgIAABAAAAAAAAAAAAAQwCAAAAAgAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T05:53:40.506Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 28,
+              "Title": "Dt_CabinOrderDetail.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
+              "ViewState": "AgIAAAUAAAAAAAAAAAASwBIAAAAoAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T03:47:00.754Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 29,
+              "Title": "Dt_MedicineGoods.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAFAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T06:51:32.874Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 30,
+              "Title": "IMedicineGoodsServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
+              "ViewState": "AgIAAAUAAAAAAAAAAAAEwBQAAAAiAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:03:58.501Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 31,
+              "Title": "Dt_CabinOrder_Hty.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T12:10:19.993Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 32,
+              "Title": "Dt_EdiOutDetail.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiOutDetail.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiOutDetail.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiOutDetail.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiOutDetail.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABcAAAAxAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-09T01:53:20.938Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 33,
+              "Title": "Dt_EdiOut.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiOut.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiOut.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiOut.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiOut.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-09T01:53:20.255Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 34,
+              "Title": "Dt_EdiInDetail.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiInDetail.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiInDetail.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiInDetail.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiInDetail.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-09T01:53:19.501Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 35,
+              "Title": "Dt_EdiIn.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiIn.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiIn.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiIn.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiIn.cs",
+              "ViewState": "AgIAAAwAAAAAAAAAAADwvxYAAABWAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-09T01:53:15.558Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 37,
+              "Title": "AuthorizationResponse.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Authorization\\AuthorizationResponse.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Authorization\\AuthorizationResponse.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Authorization\\AuthorizationResponse.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Authorization\\AuthorizationResponse.cs",
+              "ViewState": "AgIAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T04:41:17.468Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 38,
+              "Title": "AllOptionRegister.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Extensions\\AllOptionRegister.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Extensions\\AllOptionRegister.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Extensions\\AllOptionRegister.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Extensions\\AllOptionRegister.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvw4AAABUAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-29T11:31:03.391Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 36,
+              "Title": "ApiLogMiddleware.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "ViewState": "AgIAAC0AAAAAAAAAAADwv0AAAABOAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T04:41:54.531Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 39,
+              "Title": "ICabinOrderDetailServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderDetailServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\ICabinOrderDetailServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderDetailServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\ICabinOrderDetailServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAABAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T12:07:18.218Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 40,
+              "Title": "ICabinOrderDetailHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderDetailHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\ICabinOrderDetailHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderDetailHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\ICabinOrderDetailHtyServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T12:07:03.348Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 41,
+              "Title": "Dt_DeliveryOrder_Hty.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder_Hty.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder_Hty.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder_Hty.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder_Hty.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAADoAAAAzAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T05:32:35.284Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 42,
+              "Title": "Dt_DeliveryOrderDetail.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
+              "ViewState": "AgIAABwAAAAAAAAAAAAkwBUAAAAxAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T03:33:50.273Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 43,
+              "Title": "Dt_DeliveryOrder.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder.cs",
+              "ViewState": "AgIAABkAAAAAAAAAAAAkwBAAAABoAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T03:50:57.77Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 44,
+              "Title": "Dt_CabinOrderDetail_Hty .cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail_Hty .cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail_Hty .cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail_Hty .cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail_Hty .cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T08:56:45.972Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 45,
+              "Title": "DBSeed.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Seed\\DBSeed.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Seed\\DBSeed.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Seed\\DBSeed.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Seed\\DBSeed.cs",
+              "ViewState": "AgIAAKEAAAAAAAAAAAArwLQAAAAQAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T02:21:08.951Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 46,
+              "Title": "CabinOrderHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\CabinOrderHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CabinOrderHtyServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAAAFAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T05:43:04.881Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 47,
+              "Title": "CabinOrderDetailServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderDetailServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\CabinOrderDetailServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderDetailServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CabinOrderDetailServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:37:33.171Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 48,
+              "Title": "ICabinOrderHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\ICabinOrderHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\ICabinOrderHtyServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAFAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T05:45:15.874Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 49,
+              "Title": "CabinOrderRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\CabinOrderRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderRepository.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\CabinOrderRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAABgAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T02:26:45.473Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 50,
+              "Title": "CabinOrderHtyRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderHtyRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\CabinOrderHtyRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderHtyRepository.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\CabinOrderHtyRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvw0AAABjAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T05:41:37.245Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 51,
+              "Title": "CabinOrderDetailRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderDetailRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\CabinOrderDetailRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderDetailRepository.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\CabinOrderDetailRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwsAAABQAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T07:19:58.582Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 52,
+              "Title": "CabinOrderDetailHtyRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderDetailHtyRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\CabinOrderDetailHtyRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderDetailHtyRepository.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\CabinOrderDetailHtyRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAABXAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T02:08:21.138Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 53,
+              "Title": "ICabinOrderDetailHtyRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderDetailHtyRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_I\\ICabinOrderDetailHtyRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderDetailHtyRepository.cs",
+              "RelativeToolTip": "WIDESEA_I\\ICabinOrderDetailHtyRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAABZAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T02:07:42.938Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 54,
+              "Title": "ICabinOrderDetailRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderDetailRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_I\\ICabinOrderDetailRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderDetailRepository.cs",
+              "RelativeToolTip": "WIDESEA_I\\ICabinOrderDetailRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwoAAABSAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:37:21.754Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 55,
+              "Title": "ICabinOrderRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_I\\ICabinOrderRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderRepository.cs",
+              "RelativeToolTip": "WIDESEA_I\\ICabinOrderRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwoAAABEAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:37:09.909Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 56,
+              "Title": "ICabinOrderHtyRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderHtyRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_I\\ICabinOrderHtyRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderHtyRepository.cs",
+              "RelativeToolTip": "WIDESEA_I\\ICabinOrderHtyRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAswAoAAABOAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T05:40:23.935Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 57,
+              "Title": "DeliveryOrderDetailHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderDetailHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\DeliveryOrderDetailHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderDetailHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\DeliveryOrderDetailHtyServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvw8AAABoAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T06:33:04.409Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 58,
+              "Title": "DeliveryOrderHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\DeliveryOrderHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\DeliveryOrderHtyServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwwAAABMAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T07:17:58.135Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 59,
+              "Title": "DeliveryOrderServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
+              "ViewState": "AgIAAAYAAAAAAAAAAAAAABUAAAB4AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-25T06:57:14.285Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 60,
+              "Title": "DeliveryOrderDetailServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvw0AAACQAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:30:48.11Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 61,
+              "Title": "IDeliveryOrderServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IDeliveryOrderServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IDeliveryOrderServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABkAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T13:37:05.265Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 62,
+              "Title": "IDeliveryOrderHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IDeliveryOrderHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IDeliveryOrderHtyServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAFAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T07:16:01.44Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 63,
+              "Title": "IDeliveryOrderDetailServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:12:33.212Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 64,
+              "Title": "IDeliveryOrderDetailHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailHtyServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvw0AAAAHAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T05:53:04.079Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 65,
+              "Title": "DeliveryOrderRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\DeliveryOrderRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderRepository.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\DeliveryOrderRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwsAAABKAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T05:49:22.703Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 66,
+              "Title": "DeliveryOrderHtyRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderHtyRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\DeliveryOrderHtyRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderHtyRepository.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\DeliveryOrderHtyRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvxIAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T07:11:13.076Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 67,
+              "Title": "IDeliveryOrderRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IDeliveryOrderRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_I\\IDeliveryOrderRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IDeliveryOrderRepository.cs",
+              "RelativeToolTip": "WIDESEA_I\\IDeliveryOrderRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAABTAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:37:20.245Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 68,
+              "Title": "Dt_Inventory.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
+              "ViewState": "AgIAAAoAAAAAAAAAAAAAABQAAAAbAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T08:29:27.505Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 69,
+              "Title": "DeliveryOrderDetailRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderDetailRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\DeliveryOrderDetailRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderDetailRepository.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\DeliveryOrderDetailRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T05:49:21.116Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 70,
               "Title": "IInventoryRepository.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IInventoryRepository.cs",
               "RelativeDocumentMoniker": "WIDESEA_I\\IInventoryRepository.cs",
               "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IInventoryRepository.cs",
               "RelativeToolTip": "WIDESEA_I\\IInventoryRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAUAAAAiAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-29T06:05:55.033Z"
+              "WhenOpened": "2025-09-29T06:05:55.033Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 9,
+              "DocumentIndex": 71,
+              "Title": "IDeliveryOrderDetailRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IDeliveryOrderDetailRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_I\\IDeliveryOrderDetailRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IDeliveryOrderDetailRepository.cs",
+              "RelativeToolTip": "WIDESEA_I\\IDeliveryOrderDetailRepository.cs",
+              "ViewState": "AgIAAAYAAAAAAAAAAADwvw8AAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:37:20.761Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 72,
+              "Title": "IDeliveryOrderDetailHtyRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IDeliveryOrderDetailHtyRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_I\\IDeliveryOrderDetailHtyRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IDeliveryOrderDetailHtyRepository.cs",
+              "RelativeToolTip": "WIDESEA_I\\IDeliveryOrderDetailHtyRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwoAAABfAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T05:47:28.674Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 73,
+              "Title": "DeliveryOrderDetailHtyRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderDetailHtyRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\DeliveryOrderDetailHtyRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderDetailHtyRepository.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\DeliveryOrderDetailHtyRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T05:49:08.17Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 74,
+              "Title": "ICustomerRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICustomerRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_I\\ICustomerRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICustomerRepository.cs",
+              "RelativeToolTip": "WIDESEA_I\\ICustomerRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwoAAABCAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:37:12.436Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 75,
+              "Title": "CustomerServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CustomerServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\CustomerServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CustomerServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CustomerServices.cs",
+              "ViewState": "AgIAAAcAAAAAAAAAAAAgwBIAAABkAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T05:34:28.588Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 76,
+              "Title": "ISupplierRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ISupplierRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_I\\ISupplierRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ISupplierRepository.cs",
+              "RelativeToolTip": "WIDESEA_I\\ISupplierRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwwAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-29T06:05:58.424Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 77,
+              "Title": "Dt_Supplier.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Supplier.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Supplier.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Supplier.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Supplier.cs",
+              "ViewState": "AgIAAAYAAAAAAAAAAAAAAAoAAAAcAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T12:49:22.073Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 78,
+              "Title": "Dt_ErrorLog.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_ErrorLog.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_ErrorLog.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_ErrorLog.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_ErrorLog.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABcAAAAtAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-29T06:00:05.688Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 79,
+              "Title": "Dt_DeliveryOrderDetail_Hty.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail_Hty.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail_Hty.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail_Hty.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail_Hty.cs",
+              "ViewState": "AgIAAAMAAAAAAAAAAAAAABAAAABDAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T05:34:30.699Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 80,
+              "Title": "LoginInfo.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\LoginInfo.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\LoginInfo.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\LoginInfo.cs",
+              "RelativeToolTip": "WIDESEA_Model\\LoginInfo.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T05:31:41.968Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 81,
+              "Title": "Sys_Log.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\System\\Sys_Log.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\System\\Sys_Log.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\System\\Sys_Log.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\System\\Sys_Log.cs",
+              "ViewState": "AgIAAAsAAAAAAAAAAAAwwBoAAAAOAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T04:44:44.022Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 82,
+              "Title": "Logger.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\LogHelper\\Logger.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\LogHelper\\Logger.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\LogHelper\\Logger.cs",
+              "RelativeToolTip": "WIDESEA_Core\\LogHelper\\Logger.cs",
+              "ViewState": "AgIAAFEAAAAAAAAAAAAawGwAAAA6AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T04:40:44.391Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 83,
+              "Title": "AppSettings.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\AppSettings.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Helper\\AppSettings.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\AppSettings.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Helper\\AppSettings.cs",
+              "ViewState": "AgIAAEoAAAAAAAAAAAAuwAAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T04:41:41.988Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 84,
+              "Title": "FileHelper.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\FileHelper.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Helper\\FileHelper.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\FileHelper.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Helper\\FileHelper.cs",
+              "ViewState": "AgIAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T04:41:37.39Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 85,
+              "Title": "HttpHelper.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\HttpHelper.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Helper\\HttpHelper.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\HttpHelper.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Helper\\HttpHelper.cs",
+              "ViewState": "AgIAACQAAAAAAAAAAAAcwAAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T04:41:33.665Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 86,
+              "Title": "HttpContextSetup.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Extensions\\HttpContextSetup.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Extensions\\HttpContextSetup.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Extensions\\HttpContextSetup.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Extensions\\HttpContextSetup.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T04:41:03.355Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 88,
+              "Title": "Dt_TaskService.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
+              "RelativeToolTip": "WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
+              "ViewState": "AgIAADIAAAAAAAAAAAAswG0AAAAdAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-29T11:30:02.21Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 87,
+              "Title": "ApplicationSetup.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Extensions\\ApplicationSetup.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Extensions\\ApplicationSetup.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Extensions\\ApplicationSetup.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Extensions\\ApplicationSetup.cs",
+              "ViewState": "AgIAAAUAAAAAAAAAAAAowBYAAAAWAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-29T11:29:55.729Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 89,
+              "Title": "InventoryRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\InventoryRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\InventoryRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\InventoryRepository.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\InventoryRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAcAAAAbAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T05:49:30.08Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 90,
+              "Title": "Dt_WarehouseType.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_WarehouseType.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_WarehouseType.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_WarehouseType.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_WarehouseType.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAABAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T13:44:20.246Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 91,
+              "Title": "Dt_Customer.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAAtAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T07:01:52.501Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 92,
+              "Title": "WarehouseTypeServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\WarehouseTypeServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\WarehouseTypeServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\WarehouseTypeServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\WarehouseTypeServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAAkAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T02:34:15.171Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 93,
+              "Title": "SupplierServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\SupplierServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\SupplierServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\SupplierServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\SupplierServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAAlAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T02:34:11.471Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 94,
+              "Title": "RoleAuthor.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\System\\RoleAuthor.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\System\\RoleAuthor.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\System\\RoleAuthor.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\System\\RoleAuthor.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-29T09:09:44.44Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 95,
               "Title": "IWarehouseTypeRepository.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IWarehouseTypeRepository.cs",
               "RelativeDocumentMoniker": "WIDESEA_I\\IWarehouseTypeRepository.cs",
@@ -473,31 +1703,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 10,
-              "Title": "ISupplierRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ISupplierRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_I\\ISupplierRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ISupplierRepository.cs",
-              "RelativeToolTip": "WIDESEA_I\\ISupplierRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-29T06:05:58.424Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 13,
-              "Title": "IDeliveryOrderRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IDeliveryOrderRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_I\\IDeliveryOrderRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IDeliveryOrderRepository.cs",
-              "RelativeToolTip": "WIDESEA_I\\IDeliveryOrderRepository.cs",
-              "ViewState": "AgIAAAYAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:37:20.245Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 11,
+              "DocumentIndex": 96,
               "Title": "IMedicineGoodsRepository.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IMedicineGoodsRepository.cs",
               "RelativeDocumentMoniker": "WIDESEA_I\\IMedicineGoodsRepository.cs",
@@ -505,215 +1711,12 @@
               "RelativeToolTip": "WIDESEA_I\\IMedicineGoodsRepository.cs",
               "ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:35:58.362Z"
+              "WhenOpened": "2025-09-28T01:35:58.362Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 16,
-              "Title": "ICabinOrderRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_I\\ICabinOrderRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderRepository.cs",
-              "RelativeToolTip": "WIDESEA_I\\ICabinOrderRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:37:09.909Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 17,
-              "Title": "ICabinOrderDetailRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderDetailRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_I\\ICabinOrderDetailRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderDetailRepository.cs",
-              "RelativeToolTip": "WIDESEA_I\\ICabinOrderDetailRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvw8AAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:37:21.754Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 14,
-              "Title": "IDeliveryOrderDetailRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IDeliveryOrderDetailRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_I\\IDeliveryOrderDetailRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IDeliveryOrderDetailRepository.cs",
-              "RelativeToolTip": "WIDESEA_I\\IDeliveryOrderDetailRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvw8AAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:37:20.761Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 18,
-              "Title": "Dt_CabinOrderDetail_Hty .cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail_Hty .cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail_Hty .cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail_Hty .cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail_Hty .cs",
-              "ViewState": "AgIAACUAAAAAAAAAAAAAwDcAAAAuAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T08:56:45.972Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 19,
-              "Title": "Dt_CabinOrderDetail.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
-              "ViewState": "AgIAABwAAAAAAAAAAAAkwCwAAAA4AAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T03:47:00.754Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 20,
-              "Title": "Dt_CabinOrder_Hty.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
-              "ViewState": "AgIAACYAAAAAAAAAAAAAwDQAAAAWAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T12:10:19.993Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 21,
-              "Title": "Dt_Supplier.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Supplier.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Supplier.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Supplier.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Supplier.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAABSAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T12:49:22.073Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 22,
-              "Title": "Dt_MedicineGoods.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
-              "ViewState": "AgIAAAkAAAAAAAAAAAAAABsAAABrAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T06:51:32.874Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 23,
-              "Title": "Dt_Inventory.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
-              "ViewState": "AgIAAA4AAAAAAAAAAAAswCEAAAAOAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T08:29:27.505Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 24,
-              "Title": "Dt_ErrorLog.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_ErrorLog.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_ErrorLog.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_ErrorLog.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_ErrorLog.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAB8AAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-29T06:00:05.688Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 25,
-              "Title": "Dt_DeliveryOrderDetail.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
-              "ViewState": "AgIAAB8AAAAAAAAAAAAYwDUAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T03:33:50.273Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 26,
-              "Title": "Dt_DeliveryOrder.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder.cs",
-              "ViewState": "AgIAAAYAAAAAAAAAAAAAAB0AAAAYAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T03:50:57.77Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 27,
-              "Title": "Dt_Customer.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
-              "ViewState": "AgIAAAsAAAAAAAAAAAAwwBkAAABPAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T07:01:52.501Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 28,
-              "Title": "DBSeed.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Seed\\DBSeed.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Core\\Seed\\DBSeed.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Seed\\DBSeed.cs",
-              "RelativeToolTip": "WIDESEA_Core\\Seed\\DBSeed.cs",
-              "ViewState": "AgIAAKAAAAAAAAAAAADwv7QAAAAQAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T02:21:08.951Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 29,
-              "Title": "Dt_WarehouseType.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_WarehouseType.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_WarehouseType.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_WarehouseType.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_WarehouseType.cs",
-              "ViewState": "AgIAAAMAAAAAAAAAAAAAABMAAAAOAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T13:44:20.246Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 30,
-              "Title": "Dt_CabinOrder.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
-              "ViewState": "AgIAABcAAAAAAAAAAAAgwB4AAAAXAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T05:37:21.19Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 31,
-              "Title": "GoodsJob.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\GoodsJob.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\GoodsJob.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\GoodsJob.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\GoodsJob.cs",
-              "ViewState": "AgIAAAMAAAAAAAAAAAAAAA4AAABMAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:04:50.65Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 32,
+              "DocumentIndex": 97,
               "Title": "Dt_OutOrder.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\OutboundOrder\\Dt_OutOrder.cs",
               "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\OutboundOrder\\Dt_OutOrder.cs",
@@ -721,11 +1724,12 @@
               "RelativeToolTip": "WIDESEA_Model\\Models\\OutboundOrder\\Dt_OutOrder.cs",
               "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAABrAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T12:06:36.732Z"
+              "WhenOpened": "2025-09-26T12:06:36.732Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 33,
+              "DocumentIndex": 98,
               "Title": "Dt_AreaInfo.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Basic\\Dt_AreaInfo.cs",
               "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\Basic\\Dt_AreaInfo.cs",
@@ -733,84 +1737,12 @@
               "RelativeToolTip": "WIDESEA_Model\\Models\\Basic\\Dt_AreaInfo.cs",
               "ViewState": "AgIAAAEAAAAAAAAAAAAswBQAAAAqAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-29T05:42:41.016Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 35,
-              "Title": "InventoryServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\InventoryServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\InventoryServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\InventoryServices.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinServices\\InventoryServices.cs",
-              "ViewState": "AgIAAFQAAAAAAAAAAAAYwGYAAABrAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T07:03:31.08Z",
+              "WhenOpened": "2025-09-29T05:42:41.016Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 36,
-              "Title": "GlobalUsing.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\GlobalUsing.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\GlobalUsing.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\GlobalUsing.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\GlobalUsing.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvw0AAAAkAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T00:57:55.359Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 37,
-              "Title": "SupplierServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\SupplierServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\SupplierServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\SupplierServices.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinServices\\SupplierServices.cs",
-              "ViewState": "AgIAAAYAAAAAAAAAAAAAABIAAAA7AAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T02:34:11.471Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 38,
-              "Title": "TowcsDto.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
-              "RelativeDocumentMoniker": "WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
-              "RelativeToolTip": "WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
-              "ViewState": "AgIAADIBAAAAAAAAAAAiwD4BAAAMAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T03:36:18.251Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 39,
-              "Title": "InventoryController.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABQAAAAoAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:46:17.643Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 42,
-              "Title": "MedicineGoodsController.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\MedicineGoodsController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\MedicineGoodsController.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\MedicineGoodsController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\MedicineGoodsController.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvxQAAAABAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:46:33.758Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 40,
+              "DocumentIndex": 99,
               "Title": "Dt_RoadWayInfoController.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Dt_RoadWayInfoController.cs",
               "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Dt_RoadWayInfoController.cs",
@@ -818,11 +1750,12 @@
               "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Dt_RoadWayInfoController.cs",
               "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T06:02:05.822Z"
+              "WhenOpened": "2025-09-28T06:02:05.822Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 41,
+              "DocumentIndex": 100,
               "Title": "Dt_MaterielInfoController.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Dt_MaterielInfoController.cs",
               "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Dt_MaterielInfoController.cs",
@@ -830,83 +1763,12 @@
               "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Dt_MaterielInfoController.cs",
               "ViewState": "AgIAAAAAAAAAAAAAAADwvxoAAAAFAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T02:28:45.969Z"
+              "WhenOpened": "2025-09-28T02:28:45.969Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 43,
-              "Title": "DeliveryOrderController.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABUAAAA9AAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:42:38.3Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 44,
-              "Title": "DeliveryOrderDetailController.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAABAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:46:12.697Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 45,
-              "Title": "CabinOrderRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\CabinOrderRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderRepository.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\CabinOrderRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAJAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T02:26:45.473Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 46,
-              "Title": "InventoryRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\InventoryRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\InventoryRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\InventoryRepository.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\InventoryRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T05:49:30.08Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 47,
-              "Title": "DeliveryOrderRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\DeliveryOrderRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderRepository.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\DeliveryOrderRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvxAAAAAFAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T05:49:22.703Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 48,
-              "Title": "DeliveryOrderDetailRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderDetailRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\DeliveryOrderDetailRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderDetailRepository.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\DeliveryOrderDetailRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAFAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T05:49:21.116Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 49,
+              "DocumentIndex": 101,
               "Title": "CustomerRepository.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CustomerRepository.cs",
               "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\CustomerRepository.cs",
@@ -914,47 +1776,12 @@
               "RelativeToolTip": "WIDESEA_SquareCabinRepository\\CustomerRepository.cs",
               "ViewState": "AgIAAAkAAAAAAAAAAADwvw8AAAAJAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T05:22:13.87Z"
+              "WhenOpened": "2025-09-28T05:22:13.87Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 50,
-              "Title": "CustomerController.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T05:51:09.469Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 51,
-              "Title": "ApiResponse.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\ApiResponse.cs",
-              "RelativeDocumentMoniker": "WIDESEA_DTO\\SquareCabin\\ApiResponse.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\ApiResponse.cs",
-              "RelativeToolTip": "WIDESEA_DTO\\SquareCabin\\ApiResponse.cs",
-              "ViewState": "AgIAABAAAAAAAAAAAAAQwCAAAAAgAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T05:53:40.506Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 52,
-              "Title": "IMedicineGoodsServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
-              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAswBQAAAAiAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:03:58.501Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 53,
+              "DocumentIndex": 102,
               "Title": "TaskController.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskController.cs",
               "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskController.cs",
@@ -962,11 +1789,12 @@
               "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskController.cs",
               "ViewState": "AgIAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T04:57:54.813Z"
+              "WhenOpened": "2025-09-28T04:57:54.813Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 54,
+              "DocumentIndex": 103,
               "Title": "index.html",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\index.html",
               "RelativeDocumentMoniker": "WIDESEA_WMSServer\\index.html",
@@ -974,71 +1802,12 @@
               "RelativeToolTip": "WIDESEA_WMSServer\\index.html",
               "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001512|",
-              "WhenOpened": "2025-09-28T03:41:45.701Z"
+              "WhenOpened": "2025-09-28T03:41:45.701Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 55,
-              "Title": "CabinOrderDetailServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderDetailServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\CabinOrderDetailServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderDetailServices.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CabinOrderDetailServices.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:37:33.171Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 56,
-              "Title": "ICabinOrderDetailHtyServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderDetailHtyServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\ICabinOrderDetailHtyServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderDetailHtyServices.cs",
-              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\ICabinOrderDetailHtyServices.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T12:07:03.348Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 57,
-              "Title": "CabinOrderController.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderController.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderController.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABkAAAAoAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T02:47:48.421Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 58,
-              "Title": "DeliveryOrderDetailServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvw0AAABRAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:30:48.11Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 59,
-              "Title": "WarehouseTypeServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\WarehouseTypeServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\WarehouseTypeServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\WarehouseTypeServices.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinServices\\WarehouseTypeServices.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T02:34:15.171Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 60,
+              "DocumentIndex": 104,
               "Title": "ICustomerServices.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICustomerServices.cs",
               "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\ICustomerServices.cs",
@@ -1046,71 +1815,12 @@
               "RelativeToolTip": "WIDESEA_ISquareCabinServices\\ICustomerServices.cs",
               "ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAABHAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:24:48.534Z"
+              "WhenOpened": "2025-09-28T01:24:48.534Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 61,
-              "Title": "ICabinOrderDetailServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderDetailServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\ICabinOrderDetailServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderDetailServices.cs",
-              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\ICabinOrderDetailServices.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T12:07:18.218Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 64,
-              "Title": "CabinOrderDetailHtyServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderDetailHtyServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\CabinOrderDetailHtyServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderDetailHtyServices.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CabinOrderDetailHtyServices.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAABqAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T07:39:08.325Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 65,
-              "Title": "CabinOrderDetailHtyRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderDetailHtyRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\CabinOrderDetailHtyRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderDetailHtyRepository.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\CabinOrderDetailHtyRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAALAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T02:08:21.138Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 62,
-              "Title": "CabinOrderDetailHtyController.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T02:09:19.797Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 63,
-              "Title": "ICabinOrderDetailHtyRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderDetailHtyRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_I\\ICabinOrderDetailHtyRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderDetailHtyRepository.cs",
-              "RelativeToolTip": "WIDESEA_I\\ICabinOrderDetailHtyRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T02:07:42.938Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 66,
+              "DocumentIndex": 105,
               "Title": "ISys_DictionaryRepository.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_IRepository\\ISys_DictionaryRepository.cs",
               "RelativeDocumentMoniker": "WIDESEA_IRepository\\ISys_DictionaryRepository.cs",
@@ -1118,35 +1828,12 @@
               "RelativeToolTip": "WIDESEA_IRepository\\ISys_DictionaryRepository.cs",
               "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T02:07:33.542Z"
+              "WhenOpened": "2025-09-28T02:07:33.542Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 67,
-              "Title": "IDeliveryOrderDetailServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailServices.cs",
-              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailServices.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:12:33.212Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 68,
-              "Title": "CustomerServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CustomerServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\CustomerServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CustomerServices.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CustomerServices.cs",
-              "ViewState": "AgIAAAYAAAAAAAAAAAAAAEoAAAAHAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T05:34:28.588Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 69,
+              "DocumentIndex": 106,
               "Title": "ISupplierServices.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ISupplierServices.cs",
               "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\ISupplierServices.cs",
@@ -1154,11 +1841,12 @@
               "RelativeToolTip": "WIDESEA_ISquareCabinServices\\ISupplierServices.cs",
               "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:02:51.791Z"
+              "WhenOpened": "2025-09-28T01:02:51.791Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 70,
+              "DocumentIndex": 107,
               "Title": "Dt_OutOrder_Hty.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\OutboundOrder\\Dt_OutOrder_Hty.cs",
               "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\OutboundOrder\\Dt_OutOrder_Hty.cs",
@@ -1166,11 +1854,12 @@
               "RelativeToolTip": "WIDESEA_Model\\Models\\OutboundOrder\\Dt_OutOrder_Hty.cs",
               "ViewState": "AgIAAAAAAAAAAAAAAADwvwwAAAAUAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T12:06:45.919Z"
+              "WhenOpened": "2025-09-26T12:06:45.919Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 71,
+              "DocumentIndex": 108,
               "Title": "IDt_OutOrderAndStockService.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_IStorageOutOrderService\\OutboundOrder\\IDt_OutOrderAndStockService.cs",
               "RelativeDocumentMoniker": "WIDESEA_IStorageOutOrderService\\OutboundOrder\\IDt_OutOrderAndStockService.cs",
@@ -1178,7 +1867,8 @@
               "RelativeToolTip": "WIDESEA_IStorageOutOrderService\\OutboundOrder\\IDt_OutOrderAndStockService.cs",
               "ViewState": "AgIAAAAAAAAAAAAAAAAAAAIAAABLAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T12:06:24.556Z"
+              "WhenOpened": "2025-09-26T12:06:24.556Z",
+              "EditorCaption": ""
             }
           ]
         },
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json"
index 437dc90..b85d415 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json"
@@ -3,8 +3,20 @@
   "WorkspaceRootPath": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\",
   "Documents": [
     {
-      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\cabinorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\cabinorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\deliveryorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\deliveryorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\inventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\inventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\iinventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\iinventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_dto\\squarecabin\\towcsdto.cs||{8B382828-6202-11D1-8870-0000F87579D2}",
+      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\squarecabin\\towcsdto.cs||{8B382828-6202-11D1-8870-0000F87579D2}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\inorderjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -15,20 +27,12 @@
       "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\outorderjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\icabinorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\icabinorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\globalusing.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\globalusing.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\deliveryorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\deliveryorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\ideliveryorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\ideliveryorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\medicinegoodsservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\medicinegoodsservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\goodsjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\goodsjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
@@ -39,136 +43,28 @@
       "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\iwarehousetyperepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\iwarehousetyperepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\cabinordercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\cabinordercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\isupplierrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\isupplierrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\cabinorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\cabinorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\imedicinegoodsrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\imedicinegoodsrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\icabinorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\icabinorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\iinventoryrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\iinventoryrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\cabinorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\cabinorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\ideliveryorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\ideliveryorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\extensions\\autofacmoduleregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\extensions\\autofacmoduleregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\ideliveryorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\ideliveryorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\icustomerrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\icustomerrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\icabinorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\icabinorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\icabinorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\icabinorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_cabinorderdetail_hty .cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_cabinorderdetail_hty .cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_cabinorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_cabinorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_cabinorder_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_cabinorder_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_supplier.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_supplier.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_medicinegoods.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_medicinegoods.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_inventory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_inventory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_errorlog.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_errorlog.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_deliveryorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_deliveryorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_deliveryorder.cs||{8B382828-6202-11D1-8870-0000F87579D2}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_deliveryorder.cs||{8B382828-6202-11D1-8870-0000F87579D2}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_customer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_customer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\seed\\dbseed.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\seed\\dbseed.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_warehousetype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_warehousetype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_cabinorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_cabinorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\goodsjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\goodsjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\outboundorder\\dt_outorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\outboundorder\\dt_outorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\basic\\dt_areainfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\basic\\dt_areainfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\iinventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\iinventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\inventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\inventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\globalusing.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\globalusing.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\supplierservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\supplierservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_dto\\squarecabin\\towcsdto.cs||{8B382828-6202-11D1-8870-0000F87579D2}",
-      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\squarecabin\\towcsdto.cs||{8B382828-6202-11D1-8870-0000F87579D2}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\inventorycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\inventorycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\dt_roadwayinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\dt_roadwayinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\dt_materielinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\dt_materielinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\medicinegoodsservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\medicinegoodsservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\medicinegoodscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -179,40 +75,340 @@
       "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\deliveryordercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\suppliercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\suppliercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\inventorycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\inventorycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
       "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\deliveryorderdetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\deliveryorderdetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\cabinorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\cabinorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\inventoryrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\inventoryrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\deliveryorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\deliveryorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\deliveryorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\deliveryorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\customerrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\customerrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\customercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\customercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\cabinorderdetailhtycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\cabinorderdetailhtycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\cabinorderdetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\cabinorderdetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_dto\\squarecabin\\orderdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\squarecabin\\orderdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
       "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_dto\\squarecabin\\apiresponse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\squarecabin\\apiresponse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
+      "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_dto\\wcs\\dt_deviceinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\wcs\\dt_deviceinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\iwarehousetypeservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\iwarehousetypeservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_cabinorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_cabinorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_cabinorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_cabinorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_medicinegoods.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_medicinegoods.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
       "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\imedicinegoodsservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\imedicinegoodsservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_cabinorder_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_cabinorder_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabinwcs\\dt_edioutdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabinwcs\\dt_edioutdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabinwcs\\dt_ediout.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabinwcs\\dt_ediout.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabinwcs\\dt_ediindetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabinwcs\\dt_ediindetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabinwcs\\dt_ediin.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabinwcs\\dt_ediin.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\middlewares\\apilogmiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\middlewares\\apilogmiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\authorization\\authorizationresponse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\authorization\\authorizationresponse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\extensions\\alloptionregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\extensions\\alloptionregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\icabinorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\icabinorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\icabinorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\icabinorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_deliveryorder_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_deliveryorder_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_deliveryorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_deliveryorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_deliveryorder.cs||{8B382828-6202-11D1-8870-0000F87579D2}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_deliveryorder.cs||{8B382828-6202-11D1-8870-0000F87579D2}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_cabinorderdetail_hty .cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_cabinorderdetail_hty .cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\seed\\dbseed.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\seed\\dbseed.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\cabinorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\cabinorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\cabinorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\cabinorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\icabinorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\icabinorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\cabinorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\cabinorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\cabinorderhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\cabinorderhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\cabinorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\cabinorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\cabinorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\cabinorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\icabinorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\icabinorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\icabinorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\icabinorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\icabinorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\icabinorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\icabinorderhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\icabinorderhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\deliveryorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\deliveryorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\deliveryorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\deliveryorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\deliveryorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\deliveryorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\ideliveryorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\ideliveryorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\ideliveryorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\ideliveryorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\ideliveryorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\ideliveryorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\ideliveryorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\ideliveryorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\deliveryorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\deliveryorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\deliveryorderhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\deliveryorderhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\ideliveryorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\ideliveryorderrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_inventory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_inventory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\deliveryorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\deliveryorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\iinventoryrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\iinventoryrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\ideliveryorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\ideliveryorderdetailrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\ideliveryorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\ideliveryorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\deliveryorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\deliveryorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\icustomerrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\icustomerrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\customerservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\customerservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\isupplierrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\isupplierrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_supplier.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_supplier.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_errorlog.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_errorlog.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_deliveryorderdetail_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_deliveryorderdetail_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\logininfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\logininfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\system\\sys_log.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\system\\sys_log.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\loghelper\\logger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\loghelper\\logger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\helper\\appsettings.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\helper\\appsettings.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\helper\\filehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\helper\\filehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\helper\\httphelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\helper\\httphelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\extensions\\httpcontextsetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\extensions\\httpcontextsetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_core\\extensions\\applicationsetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\extensions\\applicationsetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|solutionrelative:widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\inventoryrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\inventoryrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_warehousetype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_warehousetype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_customer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_customer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\warehousetypeservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\warehousetypeservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\supplierservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\supplierservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\system\\roleauthor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\system\\roleauthor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\iwarehousetyperepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\iwarehousetyperepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\imedicinegoodsrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\imedicinegoodsrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\outboundorder\\dt_outorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\outboundorder\\dt_outorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_model\\models\\basic\\dt_areainfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\basic\\dt_areainfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\dt_roadwayinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\dt_roadwayinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\dt_materielinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\dt_materielinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\customerrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\customerrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -223,60 +419,12 @@
       "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\index.html||{40D31677-CBC0-4297-A9EF-89D907823A98}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\cabinorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\cabinorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\icabinorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\icabinorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\cabinordercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\cabinordercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\deliveryorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\deliveryorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\warehousetypeservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\warehousetypeservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
       "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\icustomerservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\icustomerservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\icabinorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\icabinorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\cabinorderdetailhtycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\cabinorderdetailhtycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_i\\icabinorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1F2B754E-819F-4D71-A873-C099AA9A760E}|WIDESEA_I\\WIDESEA_ISquareCabinRepository.csproj|solutionrelative:widesea_i\\icabinorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\cabinorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\cabinorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinrepository\\cabinorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8584322D-54AE-40AF-8BF5-B8C2B29820A5}|WIDESEA_SquareCabinRepository\\WIDESEA_SquareCabinRepository.csproj|solutionrelative:widesea_squarecabinrepository\\cabinorderdetailhtyrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
       "AbsoluteMoniker": "D:0:0:{B5C7DC02-077C-4255-A369-600D033A4C23}|WIDESEA_IRepository\\WIDESEA_IRepository.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_irepository\\isys_dictionaryrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{B5C7DC02-077C-4255-A369-600D033A4C23}|WIDESEA_IRepository\\WIDESEA_IRepository.csproj|solutionrelative:widesea_irepository\\isys_dictionaryrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\ideliveryorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\ideliveryorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_squarecabinservices\\customerservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{FD984F34-1876-4808-AD7C-28A41E665504}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\customerservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{1FCD1E49-069F-4C34-ACF0-C561DC9A0DA3}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\fangcangzhineng\\\u4EE3\u7801\u7BA1\u7406\\widesea_wmsserver\\widesea_isquarecabinservices\\isupplierservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -302,16 +450,17 @@
           "Children": [
             {
               "$type": "Document",
-              "DocumentIndex": 34,
+              "DocumentIndex": 2,
               "Title": "IInventoryServices.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IInventoryServices.cs",
               "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IInventoryServices.cs",
               "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IInventoryServices.cs",
               "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IInventoryServices.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABYAAABHAAAAAAAAAA==",
+              "ViewState": "AgIAAA0AAAAAAAAAAAAAABcAAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-09-26T13:37:06.732Z",
-              "IsPinned": true
+              "IsPinned": true,
+              "EditorCaption": ""
             },
             {
               "$type": "Bookmark",
@@ -319,148 +468,1229 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 2,
-              "Title": "OutOrderJob.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\OutOrderJob.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\OutOrderJob.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\OutOrderJob.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\OutOrderJob.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAZAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T00:59:35.966Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
               "DocumentIndex": 4,
-              "Title": "DeliveryOrderServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
-              "ViewState": "AgIAAGIAAAAAAAAAAAArwHcAAAAqAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-25T06:57:14.285Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 1,
               "Title": "InOrderJob.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\InOrderJob.cs",
               "RelativeDocumentMoniker": "WIDESEA_WMSServer\\InOrderJob.cs",
               "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\InOrderJob.cs",
               "RelativeToolTip": "WIDESEA_WMSServer\\InOrderJob.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAAjAAAAAAAAAA==",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAswBQAAAABAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-09-26T08:58:12.162Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 3,
-              "Title": "ICabinOrderServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\ICabinOrderServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderServices.cs",
-              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\ICabinOrderServices.cs",
-              "ViewState": "AgIAAAsAAAAAAAAAAIA9wCAAAAAbAAAAAAAAAA==",
+              "DocumentIndex": 5,
+              "Title": "OutOrderJob.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\OutOrderJob.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\OutOrderJob.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\OutOrderJob.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\OutOrderJob.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABUAAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T00:57:40.312Z",
+              "WhenOpened": "2025-09-28T00:59:35.966Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 1,
+              "Title": "InventoryServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\InventoryServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\InventoryServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\InventoryServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\InventoryServices.cs",
+              "ViewState": "AgIAABMAAAAAAAAAAAAEwMoAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T07:03:31.08Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 3,
+              "Title": "TowcsDto.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
+              "RelativeDocumentMoniker": "WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
+              "RelativeToolTip": "WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
+              "ViewState": "AgIAAB0BAAAAAAAAAIAwwHkBAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T03:36:18.251Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 0,
-              "Title": "CabinOrderServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\CabinOrderServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderServices.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CabinOrderServices.cs",
-              "ViewState": "AgIAAOQAAAAAAAAAAAAYwPYAAAA3AAAAAAAAAA==",
+              "Title": "DeliveryOrderServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
+              "ViewState": "AgIAAB8AAAAAAAAAAAAQwNwAAAAfAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T03:28:24.308Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 5,
-              "Title": "IDeliveryOrderServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IDeliveryOrderServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderServices.cs",
-              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IDeliveryOrderServices.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAB4AAAAfAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T13:37:05.265Z",
+              "WhenOpened": "2025-09-25T06:57:14.285Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 6,
-              "Title": "MedicineGoodsServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\MedicineGoodsServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\MedicineGoodsServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\MedicineGoodsServices.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinServices\\MedicineGoodsServices.cs",
-              "ViewState": "AgIAAGQAAAAAAAAAAAAvwHkAAAAIAAAAAAAAAA==",
+              "Title": "GlobalUsing.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\GlobalUsing.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\GlobalUsing.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\GlobalUsing.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\GlobalUsing.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAsAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T06:36:27.263Z",
+              "WhenOpened": "2025-09-28T00:57:55.359Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 7,
+              "Title": "GoodsJob.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\GoodsJob.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\GoodsJob.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\GoodsJob.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\GoodsJob.cs",
+              "ViewState": "AgIAAAIAAAAAAAAAAAAlwBIAAAA4AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:04:50.65Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 8,
               "Title": "appsettings.json",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json",
               "RelativeDocumentMoniker": "WIDESEA_WMSServer\\appsettings.json",
               "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json",
               "RelativeToolTip": "WIDESEA_WMSServer\\appsettings.json",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAABGAAAAAAAAAA==",
+              "ViewState": "AgIAAAMAAAAAAAAAAAAAABkAAAALAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
               "WhenOpened": "2025-09-28T05:48:43.064Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 8,
+              "DocumentIndex": 9,
               "Title": "Program.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Program.cs",
               "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Program.cs",
               "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Program.cs",
               "RelativeToolTip": "WIDESEA_WMSServer\\Program.cs",
-              "ViewState": "AgIAAGAAAAAAAAAAAAAAADMAAABXAAAAAAAAAA==",
+              "ViewState": "AgIAAFcAAAAAAAAAAAAhwD4AAAAnAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-09-26T13:44:16.06Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 15,
-              "Title": "ICustomerRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICustomerRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_I\\ICustomerRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICustomerRepository.cs",
-              "RelativeToolTip": "WIDESEA_I\\ICustomerRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "DocumentIndex": 10,
+              "Title": "CabinOrderController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderController.cs",
+              "ViewState": "AgIAAAYAAAAAAAAAAAAswBIAAAAuAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:37:12.436Z"
+              "WhenOpened": "2025-09-28T02:47:48.421Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 11,
+              "Title": "CabinOrderServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\CabinOrderServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CabinOrderServices.cs",
+              "ViewState": "AgIAAFcBAAAAAAAAAAAlwGEBAABAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T03:28:24.308Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 12,
+              "Title": "ICabinOrderServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\ICabinOrderServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\ICabinOrderServices.cs",
+              "ViewState": "AgIAAAQAAAAAAAAAAAASwBEAAAAbAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T00:57:40.312Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 13,
+              "Title": "CabinOrderDetailHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderDetailHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\CabinOrderDetailHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderDetailHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CabinOrderDetailHtyServices.cs",
+              "ViewState": "AgIAAAMAAAAAAAAAAAAAABEAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T07:39:08.325Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 14,
+              "Title": "AutofacModuleRegister.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Extensions\\AutofacModuleRegister.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Extensions\\AutofacModuleRegister.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Extensions\\AutofacModuleRegister.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Extensions\\AutofacModuleRegister.cs",
+              "ViewState": "AgIAAEAAAAAAAAAAAAAUwE4AAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T04:40:56.934Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 15,
+              "Title": "MedicineGoodsServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\MedicineGoodsServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\MedicineGoodsServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\MedicineGoodsServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\MedicineGoodsServices.cs",
+              "ViewState": "AgIAAGgAAAAAAAAAAAApwHgAAAALAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T06:36:27.263Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 16,
+              "Title": "MedicineGoodsController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\MedicineGoodsController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\MedicineGoodsController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\MedicineGoodsController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\MedicineGoodsController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAswAgAAAA9AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:46:33.758Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 17,
+              "Title": "DeliveryOrderController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
+              "ViewState": "AgIAAAYAAAAAAAAAAAAAABUAAAA9AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:42:38.3Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 18,
+              "Title": "SupplierController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\SupplierController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\SupplierController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\SupplierController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\SupplierController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvw8AAAA3AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-09T02:51:57.04Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 20,
+              "Title": "DeliveryOrderDetailController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAABAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:46:12.697Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 19,
+              "Title": "InventoryController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAMAAAAjAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:46:17.643Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 21,
+              "Title": "CustomerController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T05:51:09.469Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 22,
+              "Title": "CabinOrderDetailHtyController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T02:09:19.797Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 23,
+              "Title": "CabinOrderDetailController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-09T02:51:51.935Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 24,
+              "Title": "OrderDto.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\OrderDto.cs",
+              "RelativeDocumentMoniker": "WIDESEA_DTO\\SquareCabin\\OrderDto.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\OrderDto.cs",
+              "RelativeToolTip": "WIDESEA_DTO\\SquareCabin\\OrderDto.cs",
+              "ViewState": "AgIAAEEAAAAAAAAAAAAqwFYAAAAJAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T08:31:20.094Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 26,
+              "Title": "Dt_DeviceInfo.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\WCS\\Dt_DeviceInfo.cs",
+              "RelativeDocumentMoniker": "WIDESEA_DTO\\WCS\\Dt_DeviceInfo.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\WCS\\Dt_DeviceInfo.cs",
+              "RelativeToolTip": "WIDESEA_DTO\\WCS\\Dt_DeviceInfo.cs",
+              "ViewState": "AgIAACoAAAAAAAAAAAAQwCgAAAAQAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-09T02:48:23.023Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 27,
+              "Title": "IWarehouseTypeServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IWarehouseTypeServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IWarehouseTypeServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IWarehouseTypeServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IWarehouseTypeServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvw8AAAABAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-09T02:36:26.243Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 28,
+              "Title": "Dt_CabinOrder.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
+              "ViewState": "AgIAACAAAAAAAAAAAAASwDYAAAAnAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T05:37:21.19Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 25,
+              "Title": "ApiResponse.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\ApiResponse.cs",
+              "RelativeDocumentMoniker": "WIDESEA_DTO\\SquareCabin\\ApiResponse.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\ApiResponse.cs",
+              "RelativeToolTip": "WIDESEA_DTO\\SquareCabin\\ApiResponse.cs",
+              "ViewState": "AgIAABAAAAAAAAAAAAAQwCAAAAAgAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T05:53:40.506Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 29,
+              "Title": "Dt_CabinOrderDetail.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
+              "ViewState": "AgIAAAUAAAAAAAAAAAASwBIAAAAoAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T03:47:00.754Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 30,
+              "Title": "Dt_MedicineGoods.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAFAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T06:51:32.874Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 31,
+              "Title": "IMedicineGoodsServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
+              "ViewState": "AgIAAAUAAAAAAAAAAAAEwBQAAAAiAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:03:58.501Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 32,
+              "Title": "Dt_CabinOrder_Hty.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T12:10:19.993Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 33,
+              "Title": "Dt_EdiOutDetail.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiOutDetail.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiOutDetail.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiOutDetail.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiOutDetail.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABcAAAAxAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-09T01:53:20.938Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 34,
+              "Title": "Dt_EdiOut.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiOut.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiOut.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiOut.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiOut.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-09T01:53:20.255Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 35,
+              "Title": "Dt_EdiInDetail.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiInDetail.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiInDetail.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiInDetail.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiInDetail.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-09T01:53:19.501Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 36,
+              "Title": "Dt_EdiIn.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiIn.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiIn.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiIn.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabinWCS\\Dt_EdiIn.cs",
+              "ViewState": "AgIAAAwAAAAAAAAAAADwvxYAAABWAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-09T01:53:15.558Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 38,
+              "Title": "AuthorizationResponse.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Authorization\\AuthorizationResponse.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Authorization\\AuthorizationResponse.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Authorization\\AuthorizationResponse.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Authorization\\AuthorizationResponse.cs",
+              "ViewState": "AgIAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T04:41:17.468Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 39,
+              "Title": "AllOptionRegister.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Extensions\\AllOptionRegister.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Extensions\\AllOptionRegister.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Extensions\\AllOptionRegister.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Extensions\\AllOptionRegister.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvw4AAABUAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-29T11:31:03.391Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 37,
+              "Title": "ApiLogMiddleware.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "ViewState": "AgIAAC0AAAAAAAAAAADwv0AAAABOAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T04:41:54.531Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 40,
+              "Title": "ICabinOrderDetailServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderDetailServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\ICabinOrderDetailServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderDetailServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\ICabinOrderDetailServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAABAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T12:07:18.218Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 41,
+              "Title": "ICabinOrderDetailHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderDetailHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\ICabinOrderDetailHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderDetailHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\ICabinOrderDetailHtyServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T12:07:03.348Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 42,
+              "Title": "Dt_DeliveryOrder_Hty.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder_Hty.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder_Hty.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder_Hty.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder_Hty.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAADoAAAAzAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T05:32:35.284Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 43,
+              "Title": "Dt_DeliveryOrderDetail.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
+              "ViewState": "AgIAABwAAAAAAAAAAAAkwBUAAAAxAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T03:33:50.273Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 44,
+              "Title": "Dt_DeliveryOrder.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder.cs",
+              "ViewState": "AgIAABkAAAAAAAAAAAAkwBAAAABoAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T03:50:57.77Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 45,
+              "Title": "Dt_CabinOrderDetail_Hty .cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail_Hty .cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail_Hty .cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail_Hty .cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail_Hty .cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T08:56:45.972Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 46,
+              "Title": "DBSeed.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Seed\\DBSeed.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Seed\\DBSeed.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Seed\\DBSeed.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Seed\\DBSeed.cs",
+              "ViewState": "AgIAAKEAAAAAAAAAAAArwLQAAAAQAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T02:21:08.951Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 47,
+              "Title": "CabinOrderHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\CabinOrderHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CabinOrderHtyServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAAAFAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T05:43:04.881Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 48,
+              "Title": "CabinOrderDetailServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderDetailServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\CabinOrderDetailServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderDetailServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CabinOrderDetailServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:37:33.171Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 49,
+              "Title": "ICabinOrderHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\ICabinOrderHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\ICabinOrderHtyServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAFAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T05:45:15.874Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 50,
+              "Title": "CabinOrderRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\CabinOrderRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderRepository.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\CabinOrderRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAABgAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T02:26:45.473Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 51,
+              "Title": "CabinOrderHtyRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderHtyRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\CabinOrderHtyRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderHtyRepository.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\CabinOrderHtyRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvw0AAABjAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T05:41:37.245Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 52,
+              "Title": "CabinOrderDetailRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderDetailRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\CabinOrderDetailRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderDetailRepository.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\CabinOrderDetailRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwsAAABQAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T07:19:58.582Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 53,
+              "Title": "CabinOrderDetailHtyRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderDetailHtyRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\CabinOrderDetailHtyRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderDetailHtyRepository.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\CabinOrderDetailHtyRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAABXAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T02:08:21.138Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 54,
+              "Title": "ICabinOrderDetailHtyRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderDetailHtyRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_I\\ICabinOrderDetailHtyRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderDetailHtyRepository.cs",
+              "RelativeToolTip": "WIDESEA_I\\ICabinOrderDetailHtyRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAABZAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T02:07:42.938Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 55,
+              "Title": "ICabinOrderDetailRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderDetailRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_I\\ICabinOrderDetailRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderDetailRepository.cs",
+              "RelativeToolTip": "WIDESEA_I\\ICabinOrderDetailRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwoAAABSAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:37:21.754Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 56,
+              "Title": "ICabinOrderRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_I\\ICabinOrderRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderRepository.cs",
+              "RelativeToolTip": "WIDESEA_I\\ICabinOrderRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwoAAABEAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:37:09.909Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 57,
+              "Title": "ICabinOrderHtyRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderHtyRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_I\\ICabinOrderHtyRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderHtyRepository.cs",
+              "RelativeToolTip": "WIDESEA_I\\ICabinOrderHtyRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAswAoAAABOAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T05:40:23.935Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 58,
+              "Title": "DeliveryOrderDetailHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderDetailHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\DeliveryOrderDetailHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderDetailHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\DeliveryOrderDetailHtyServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvw8AAABoAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T06:33:04.409Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 59,
+              "Title": "DeliveryOrderHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\DeliveryOrderHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\DeliveryOrderHtyServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwwAAABMAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T07:17:58.135Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 60,
+              "Title": "DeliveryOrderDetailServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvw0AAACQAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:30:48.11Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 61,
+              "Title": "IDeliveryOrderServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IDeliveryOrderServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IDeliveryOrderServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABkAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T13:37:05.265Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 62,
+              "Title": "IDeliveryOrderHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IDeliveryOrderHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IDeliveryOrderHtyServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAFAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T07:16:01.44Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 63,
+              "Title": "IDeliveryOrderDetailServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:12:33.212Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 64,
+              "Title": "IDeliveryOrderDetailHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailHtyServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvw0AAAAHAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T05:53:04.079Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 65,
+              "Title": "DeliveryOrderRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\DeliveryOrderRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderRepository.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\DeliveryOrderRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwsAAABKAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T05:49:22.703Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 66,
+              "Title": "DeliveryOrderHtyRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderHtyRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\DeliveryOrderHtyRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderHtyRepository.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\DeliveryOrderHtyRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvxIAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T07:11:13.076Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 67,
+              "Title": "IDeliveryOrderRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IDeliveryOrderRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_I\\IDeliveryOrderRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IDeliveryOrderRepository.cs",
+              "RelativeToolTip": "WIDESEA_I\\IDeliveryOrderRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAABTAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:37:20.245Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 68,
+              "Title": "Dt_Inventory.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
+              "ViewState": "AgIAAAoAAAAAAAAAAAAAABQAAAAbAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T08:29:27.505Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 69,
+              "Title": "DeliveryOrderDetailRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderDetailRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\DeliveryOrderDetailRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderDetailRepository.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\DeliveryOrderDetailRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T05:49:21.116Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 70,
               "Title": "IInventoryRepository.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IInventoryRepository.cs",
               "RelativeDocumentMoniker": "WIDESEA_I\\IInventoryRepository.cs",
               "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IInventoryRepository.cs",
               "RelativeToolTip": "WIDESEA_I\\IInventoryRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAUAAAAiAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-29T06:05:55.033Z"
+              "WhenOpened": "2025-09-29T06:05:55.033Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 9,
+              "DocumentIndex": 71,
+              "Title": "IDeliveryOrderDetailRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IDeliveryOrderDetailRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_I\\IDeliveryOrderDetailRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IDeliveryOrderDetailRepository.cs",
+              "RelativeToolTip": "WIDESEA_I\\IDeliveryOrderDetailRepository.cs",
+              "ViewState": "AgIAAAYAAAAAAAAAAADwvw8AAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:37:20.761Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 72,
+              "Title": "IDeliveryOrderDetailHtyRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IDeliveryOrderDetailHtyRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_I\\IDeliveryOrderDetailHtyRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IDeliveryOrderDetailHtyRepository.cs",
+              "RelativeToolTip": "WIDESEA_I\\IDeliveryOrderDetailHtyRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwoAAABfAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T05:47:28.674Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 73,
+              "Title": "DeliveryOrderDetailHtyRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderDetailHtyRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\DeliveryOrderDetailHtyRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderDetailHtyRepository.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\DeliveryOrderDetailHtyRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T05:49:08.17Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 74,
+              "Title": "ICustomerRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICustomerRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_I\\ICustomerRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICustomerRepository.cs",
+              "RelativeToolTip": "WIDESEA_I\\ICustomerRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwoAAABCAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T01:37:12.436Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 75,
+              "Title": "CustomerServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CustomerServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\CustomerServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CustomerServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CustomerServices.cs",
+              "ViewState": "AgIAAAcAAAAAAAAAAAAgwBIAAABkAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T05:34:28.588Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 76,
+              "Title": "ISupplierRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ISupplierRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_I\\ISupplierRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ISupplierRepository.cs",
+              "RelativeToolTip": "WIDESEA_I\\ISupplierRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwwAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-29T06:05:58.424Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 77,
+              "Title": "Dt_Supplier.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Supplier.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Supplier.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Supplier.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Supplier.cs",
+              "ViewState": "AgIAAAYAAAAAAAAAAAAAAAoAAAAcAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T12:49:22.073Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 78,
+              "Title": "Dt_ErrorLog.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_ErrorLog.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_ErrorLog.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_ErrorLog.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_ErrorLog.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABcAAAAtAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-29T06:00:05.688Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 79,
+              "Title": "Dt_DeliveryOrderDetail_Hty.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail_Hty.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail_Hty.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail_Hty.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail_Hty.cs",
+              "ViewState": "AgIAAAMAAAAAAAAAAAAAABAAAABDAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T05:34:30.699Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 80,
+              "Title": "LoginInfo.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\LoginInfo.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\LoginInfo.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\LoginInfo.cs",
+              "RelativeToolTip": "WIDESEA_Model\\LoginInfo.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T05:31:41.968Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 81,
+              "Title": "Sys_Log.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\System\\Sys_Log.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\System\\Sys_Log.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\System\\Sys_Log.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\System\\Sys_Log.cs",
+              "ViewState": "AgIAAAsAAAAAAAAAAAAwwBoAAAAOAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T04:44:44.022Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 82,
+              "Title": "Logger.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\LogHelper\\Logger.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\LogHelper\\Logger.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\LogHelper\\Logger.cs",
+              "RelativeToolTip": "WIDESEA_Core\\LogHelper\\Logger.cs",
+              "ViewState": "AgIAAFEAAAAAAAAAAAAawGwAAAA6AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T04:40:44.391Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 83,
+              "Title": "AppSettings.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\AppSettings.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Helper\\AppSettings.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\AppSettings.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Helper\\AppSettings.cs",
+              "ViewState": "AgIAAEoAAAAAAAAAAAAuwAAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T04:41:41.988Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 84,
+              "Title": "FileHelper.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\FileHelper.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Helper\\FileHelper.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\FileHelper.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Helper\\FileHelper.cs",
+              "ViewState": "AgIAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T04:41:37.39Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 85,
+              "Title": "HttpHelper.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\HttpHelper.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Helper\\HttpHelper.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\HttpHelper.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Helper\\HttpHelper.cs",
+              "ViewState": "AgIAACQAAAAAAAAAAAAcwAAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T04:41:33.665Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 86,
+              "Title": "HttpContextSetup.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Extensions\\HttpContextSetup.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Extensions\\HttpContextSetup.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Extensions\\HttpContextSetup.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Extensions\\HttpContextSetup.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-08T04:41:03.355Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 88,
+              "Title": "Dt_TaskService.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
+              "RelativeToolTip": "WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
+              "ViewState": "AgIAADIAAAAAAAAAAAAswG0AAAAdAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-29T11:30:02.21Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 87,
+              "Title": "ApplicationSetup.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Extensions\\ApplicationSetup.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Extensions\\ApplicationSetup.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Extensions\\ApplicationSetup.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Extensions\\ApplicationSetup.cs",
+              "ViewState": "AgIAAAUAAAAAAAAAAAAowBYAAAAWAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-29T11:29:55.729Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 89,
+              "Title": "InventoryRepository.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\InventoryRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\InventoryRepository.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\InventoryRepository.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\InventoryRepository.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAcAAAAbAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T05:49:30.08Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 90,
+              "Title": "Dt_WarehouseType.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_WarehouseType.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_WarehouseType.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_WarehouseType.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_WarehouseType.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAABAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T13:44:20.246Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 91,
+              "Title": "Dt_Customer.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAAtAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-26T07:01:52.501Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 92,
+              "Title": "WarehouseTypeServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\WarehouseTypeServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\WarehouseTypeServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\WarehouseTypeServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\WarehouseTypeServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAAkAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T02:34:15.171Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 93,
+              "Title": "SupplierServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\SupplierServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\SupplierServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\SupplierServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\SupplierServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAAlAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-28T02:34:11.471Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 94,
+              "Title": "RoleAuthor.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\System\\RoleAuthor.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\System\\RoleAuthor.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\System\\RoleAuthor.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\System\\RoleAuthor.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-09-29T09:09:44.44Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 95,
               "Title": "IWarehouseTypeRepository.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IWarehouseTypeRepository.cs",
               "RelativeDocumentMoniker": "WIDESEA_I\\IWarehouseTypeRepository.cs",
@@ -473,31 +1703,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 10,
-              "Title": "ISupplierRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ISupplierRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_I\\ISupplierRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ISupplierRepository.cs",
-              "RelativeToolTip": "WIDESEA_I\\ISupplierRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-29T06:05:58.424Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 13,
-              "Title": "IDeliveryOrderRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IDeliveryOrderRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_I\\IDeliveryOrderRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IDeliveryOrderRepository.cs",
-              "RelativeToolTip": "WIDESEA_I\\IDeliveryOrderRepository.cs",
-              "ViewState": "AgIAAAYAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:37:20.245Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 11,
+              "DocumentIndex": 96,
               "Title": "IMedicineGoodsRepository.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IMedicineGoodsRepository.cs",
               "RelativeDocumentMoniker": "WIDESEA_I\\IMedicineGoodsRepository.cs",
@@ -505,215 +1711,12 @@
               "RelativeToolTip": "WIDESEA_I\\IMedicineGoodsRepository.cs",
               "ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:35:58.362Z"
+              "WhenOpened": "2025-09-28T01:35:58.362Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 16,
-              "Title": "ICabinOrderRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_I\\ICabinOrderRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderRepository.cs",
-              "RelativeToolTip": "WIDESEA_I\\ICabinOrderRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:37:09.909Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 17,
-              "Title": "ICabinOrderDetailRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderDetailRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_I\\ICabinOrderDetailRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderDetailRepository.cs",
-              "RelativeToolTip": "WIDESEA_I\\ICabinOrderDetailRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvw8AAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:37:21.754Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 14,
-              "Title": "IDeliveryOrderDetailRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IDeliveryOrderDetailRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_I\\IDeliveryOrderDetailRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\IDeliveryOrderDetailRepository.cs",
-              "RelativeToolTip": "WIDESEA_I\\IDeliveryOrderDetailRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvw8AAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:37:20.761Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 18,
-              "Title": "Dt_CabinOrderDetail_Hty .cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail_Hty .cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail_Hty .cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail_Hty .cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail_Hty .cs",
-              "ViewState": "AgIAACUAAAAAAAAAAAAAwDcAAAAuAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T08:56:45.972Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 19,
-              "Title": "Dt_CabinOrderDetail.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
-              "ViewState": "AgIAABwAAAAAAAAAAAAkwCwAAAA4AAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T03:47:00.754Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 20,
-              "Title": "Dt_CabinOrder_Hty.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
-              "ViewState": "AgIAACYAAAAAAAAAAAAAwDQAAAAWAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T12:10:19.993Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 21,
-              "Title": "Dt_Supplier.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Supplier.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Supplier.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Supplier.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Supplier.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAABSAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T12:49:22.073Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 22,
-              "Title": "Dt_MedicineGoods.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
-              "ViewState": "AgIAAAkAAAAAAAAAAAAAABsAAABrAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T06:51:32.874Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 23,
-              "Title": "Dt_Inventory.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
-              "ViewState": "AgIAAA4AAAAAAAAAAAAswCEAAAAOAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T08:29:27.505Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 24,
-              "Title": "Dt_ErrorLog.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_ErrorLog.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_ErrorLog.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_ErrorLog.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_ErrorLog.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAB8AAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-29T06:00:05.688Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 25,
-              "Title": "Dt_DeliveryOrderDetail.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
-              "ViewState": "AgIAAB8AAAAAAAAAAAAYwDUAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T03:33:50.273Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 26,
-              "Title": "Dt_DeliveryOrder.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrder.cs",
-              "ViewState": "AgIAAAYAAAAAAAAAAAAAAB0AAAAYAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T03:50:57.77Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 27,
-              "Title": "Dt_Customer.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
-              "ViewState": "AgIAAAsAAAAAAAAAAAAwwBkAAABPAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T07:01:52.501Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 28,
-              "Title": "DBSeed.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Seed\\DBSeed.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Core\\Seed\\DBSeed.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Core\\Seed\\DBSeed.cs",
-              "RelativeToolTip": "WIDESEA_Core\\Seed\\DBSeed.cs",
-              "ViewState": "AgIAAKAAAAAAAAAAAADwv7QAAAAQAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T02:21:08.951Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 29,
-              "Title": "Dt_WarehouseType.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_WarehouseType.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_WarehouseType.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_WarehouseType.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_WarehouseType.cs",
-              "ViewState": "AgIAAAMAAAAAAAAAAAAAABMAAAAOAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T13:44:20.246Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 30,
-              "Title": "Dt_CabinOrder.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
-              "ViewState": "AgIAABcAAAAAAAAAAAAgwB4AAAAXAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T05:37:21.19Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 31,
-              "Title": "GoodsJob.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\GoodsJob.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\GoodsJob.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\GoodsJob.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\GoodsJob.cs",
-              "ViewState": "AgIAAAMAAAAAAAAAAAAAAA4AAABMAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:04:50.65Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 32,
+              "DocumentIndex": 97,
               "Title": "Dt_OutOrder.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\OutboundOrder\\Dt_OutOrder.cs",
               "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\OutboundOrder\\Dt_OutOrder.cs",
@@ -721,11 +1724,12 @@
               "RelativeToolTip": "WIDESEA_Model\\Models\\OutboundOrder\\Dt_OutOrder.cs",
               "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAABrAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T12:06:36.732Z"
+              "WhenOpened": "2025-09-26T12:06:36.732Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 33,
+              "DocumentIndex": 98,
               "Title": "Dt_AreaInfo.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Basic\\Dt_AreaInfo.cs",
               "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\Basic\\Dt_AreaInfo.cs",
@@ -733,84 +1737,12 @@
               "RelativeToolTip": "WIDESEA_Model\\Models\\Basic\\Dt_AreaInfo.cs",
               "ViewState": "AgIAAAEAAAAAAAAAAAAswBQAAAAqAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-29T05:42:41.016Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 35,
-              "Title": "InventoryServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\InventoryServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\InventoryServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\InventoryServices.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinServices\\InventoryServices.cs",
-              "ViewState": "AgIAAFQAAAAAAAAAAAAYwGYAAABrAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T07:03:31.08Z",
+              "WhenOpened": "2025-09-29T05:42:41.016Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 36,
-              "Title": "GlobalUsing.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\GlobalUsing.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\GlobalUsing.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\GlobalUsing.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\GlobalUsing.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvw0AAAAkAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T00:57:55.359Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 37,
-              "Title": "SupplierServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\SupplierServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\SupplierServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\SupplierServices.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinServices\\SupplierServices.cs",
-              "ViewState": "AgIAAAYAAAAAAAAAAAAAABIAAAA7AAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T02:34:11.471Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 38,
-              "Title": "TowcsDto.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
-              "RelativeDocumentMoniker": "WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
-              "RelativeToolTip": "WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
-              "ViewState": "AgIAADIBAAAAAAAAAAAiwD4BAAAMAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T03:36:18.251Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 39,
-              "Title": "InventoryController.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABQAAAAoAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:46:17.643Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 42,
-              "Title": "MedicineGoodsController.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\MedicineGoodsController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\MedicineGoodsController.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\MedicineGoodsController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\MedicineGoodsController.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvxQAAAABAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:46:33.758Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 40,
+              "DocumentIndex": 99,
               "Title": "Dt_RoadWayInfoController.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Dt_RoadWayInfoController.cs",
               "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Dt_RoadWayInfoController.cs",
@@ -818,11 +1750,12 @@
               "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Dt_RoadWayInfoController.cs",
               "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T06:02:05.822Z"
+              "WhenOpened": "2025-09-28T06:02:05.822Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 41,
+              "DocumentIndex": 100,
               "Title": "Dt_MaterielInfoController.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Dt_MaterielInfoController.cs",
               "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Dt_MaterielInfoController.cs",
@@ -830,83 +1763,12 @@
               "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Dt_MaterielInfoController.cs",
               "ViewState": "AgIAAAAAAAAAAAAAAADwvxoAAAAFAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T02:28:45.969Z"
+              "WhenOpened": "2025-09-28T02:28:45.969Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 43,
-              "Title": "DeliveryOrderController.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABUAAAA9AAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:42:38.3Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 44,
-              "Title": "DeliveryOrderDetailController.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAABAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:46:12.697Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 45,
-              "Title": "CabinOrderRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\CabinOrderRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderRepository.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\CabinOrderRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAJAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T02:26:45.473Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 46,
-              "Title": "InventoryRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\InventoryRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\InventoryRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\InventoryRepository.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\InventoryRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T05:49:30.08Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 47,
-              "Title": "DeliveryOrderRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\DeliveryOrderRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderRepository.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\DeliveryOrderRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvxAAAAAFAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T05:49:22.703Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 48,
-              "Title": "DeliveryOrderDetailRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderDetailRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\DeliveryOrderDetailRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\DeliveryOrderDetailRepository.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\DeliveryOrderDetailRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAFAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T05:49:21.116Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 49,
+              "DocumentIndex": 101,
               "Title": "CustomerRepository.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CustomerRepository.cs",
               "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\CustomerRepository.cs",
@@ -914,47 +1776,12 @@
               "RelativeToolTip": "WIDESEA_SquareCabinRepository\\CustomerRepository.cs",
               "ViewState": "AgIAAAkAAAAAAAAAAADwvw8AAAAJAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T05:22:13.87Z"
+              "WhenOpened": "2025-09-28T05:22:13.87Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 50,
-              "Title": "CustomerController.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T05:51:09.469Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 51,
-              "Title": "ApiResponse.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\ApiResponse.cs",
-              "RelativeDocumentMoniker": "WIDESEA_DTO\\SquareCabin\\ApiResponse.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\ApiResponse.cs",
-              "RelativeToolTip": "WIDESEA_DTO\\SquareCabin\\ApiResponse.cs",
-              "ViewState": "AgIAABAAAAAAAAAAAAAQwCAAAAAgAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T05:53:40.506Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 52,
-              "Title": "IMedicineGoodsServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
-              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAswBQAAAAiAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:03:58.501Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 53,
+              "DocumentIndex": 102,
               "Title": "TaskController.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskController.cs",
               "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskController.cs",
@@ -962,11 +1789,12 @@
               "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskController.cs",
               "ViewState": "AgIAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T04:57:54.813Z"
+              "WhenOpened": "2025-09-28T04:57:54.813Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 54,
+              "DocumentIndex": 103,
               "Title": "index.html",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\index.html",
               "RelativeDocumentMoniker": "WIDESEA_WMSServer\\index.html",
@@ -974,71 +1802,12 @@
               "RelativeToolTip": "WIDESEA_WMSServer\\index.html",
               "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001512|",
-              "WhenOpened": "2025-09-28T03:41:45.701Z"
+              "WhenOpened": "2025-09-28T03:41:45.701Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 55,
-              "Title": "CabinOrderDetailServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderDetailServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\CabinOrderDetailServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderDetailServices.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CabinOrderDetailServices.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:37:33.171Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 56,
-              "Title": "ICabinOrderDetailHtyServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderDetailHtyServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\ICabinOrderDetailHtyServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderDetailHtyServices.cs",
-              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\ICabinOrderDetailHtyServices.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T12:07:03.348Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 57,
-              "Title": "CabinOrderController.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderController.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderController.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABkAAAAoAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T02:47:48.421Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 58,
-              "Title": "DeliveryOrderDetailServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvw0AAABRAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:30:48.11Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 59,
-              "Title": "WarehouseTypeServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\WarehouseTypeServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\WarehouseTypeServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\WarehouseTypeServices.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinServices\\WarehouseTypeServices.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T02:34:15.171Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 60,
+              "DocumentIndex": 104,
               "Title": "ICustomerServices.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICustomerServices.cs",
               "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\ICustomerServices.cs",
@@ -1046,71 +1815,12 @@
               "RelativeToolTip": "WIDESEA_ISquareCabinServices\\ICustomerServices.cs",
               "ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAABHAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:24:48.534Z"
+              "WhenOpened": "2025-09-28T01:24:48.534Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 61,
-              "Title": "ICabinOrderDetailServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderDetailServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\ICabinOrderDetailServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderDetailServices.cs",
-              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\ICabinOrderDetailServices.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T12:07:18.218Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 64,
-              "Title": "CabinOrderDetailHtyServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderDetailHtyServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\CabinOrderDetailHtyServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderDetailHtyServices.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CabinOrderDetailHtyServices.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAABqAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T07:39:08.325Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 65,
-              "Title": "CabinOrderDetailHtyRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderDetailHtyRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinRepository\\CabinOrderDetailHtyRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinRepository\\CabinOrderDetailHtyRepository.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinRepository\\CabinOrderDetailHtyRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAALAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T02:08:21.138Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 62,
-              "Title": "CabinOrderDetailHtyController.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T02:09:19.797Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 63,
-              "Title": "ICabinOrderDetailHtyRepository.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderDetailHtyRepository.cs",
-              "RelativeDocumentMoniker": "WIDESEA_I\\ICabinOrderDetailHtyRepository.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_I\\ICabinOrderDetailHtyRepository.cs",
-              "RelativeToolTip": "WIDESEA_I\\ICabinOrderDetailHtyRepository.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T02:07:42.938Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 66,
+              "DocumentIndex": 105,
               "Title": "ISys_DictionaryRepository.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_IRepository\\ISys_DictionaryRepository.cs",
               "RelativeDocumentMoniker": "WIDESEA_IRepository\\ISys_DictionaryRepository.cs",
@@ -1118,35 +1828,12 @@
               "RelativeToolTip": "WIDESEA_IRepository\\ISys_DictionaryRepository.cs",
               "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T02:07:33.542Z"
+              "WhenOpened": "2025-09-28T02:07:33.542Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 67,
-              "Title": "IDeliveryOrderDetailServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailServices.cs",
-              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IDeliveryOrderDetailServices.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:12:33.212Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 68,
-              "Title": "CustomerServices.cs",
-              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CustomerServices.cs",
-              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\CustomerServices.cs",
-              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CustomerServices.cs",
-              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CustomerServices.cs",
-              "ViewState": "AgIAAAYAAAAAAAAAAAAAAEoAAAAHAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T05:34:28.588Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 69,
+              "DocumentIndex": 106,
               "Title": "ISupplierServices.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ISupplierServices.cs",
               "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\ISupplierServices.cs",
@@ -1154,11 +1841,12 @@
               "RelativeToolTip": "WIDESEA_ISquareCabinServices\\ISupplierServices.cs",
               "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-28T01:02:51.791Z"
+              "WhenOpened": "2025-09-28T01:02:51.791Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 70,
+              "DocumentIndex": 107,
               "Title": "Dt_OutOrder_Hty.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\OutboundOrder\\Dt_OutOrder_Hty.cs",
               "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\OutboundOrder\\Dt_OutOrder_Hty.cs",
@@ -1166,11 +1854,12 @@
               "RelativeToolTip": "WIDESEA_Model\\Models\\OutboundOrder\\Dt_OutOrder_Hty.cs",
               "ViewState": "AgIAAAAAAAAAAAAAAADwvwwAAAAUAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T12:06:45.919Z"
+              "WhenOpened": "2025-09-26T12:06:45.919Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 71,
+              "DocumentIndex": 108,
               "Title": "IDt_OutOrderAndStockService.cs",
               "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\FangCangZhiNeng\\\u4EE3\u7801\u7BA1\u7406\\WIDESEA_WMSServer\\WIDESEA_IStorageOutOrderService\\OutboundOrder\\IDt_OutOrderAndStockService.cs",
               "RelativeDocumentMoniker": "WIDESEA_IStorageOutOrderService\\OutboundOrder\\IDt_OutOrderAndStockService.cs",
@@ -1178,7 +1867,8 @@
               "RelativeToolTip": "WIDESEA_IStorageOutOrderService\\OutboundOrder\\IDt_OutOrderAndStockService.cs",
               "ViewState": "AgIAAAAAAAAAAAAAAAAAAAIAAABLAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-26T12:06:24.556Z"
+              "WhenOpened": "2025-09-26T12:06:24.556Z",
+              "EditorCaption": ""
             }
           ]
         },
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/HierarchyCache.v1.txt" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/HierarchyCache.v1.txt"
index 6f42b9f..4faebb2 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/HierarchyCache.v1.txt"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/HierarchyCache.v1.txt"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs"
index ee5aea4..46e8dbd 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs"
@@ -37,27 +37,27 @@
                 if (context.Request.Path.Value.Contains("api"))
                 {
                     context.Request.EnableBuffering();
-                    //Stream originalBody = context.Response.Body;
+                    Stream originalBody = context.Response.Body;
 
                     try
                     {
                         // 瀛樺偍璇锋眰鏁版嵁
-                        //string requestParam = GetRequestData(context);
-                        //DateTime beginDate = DateTime.Now;
+                        string requestParam = GetRequestData(context);
+                        DateTime beginDate = DateTime.Now;
 
-                        //using var ms = new MemoryStream();
-                        //context.Response.Body = ms;
+                        using var ms = new MemoryStream();
+                        context.Response.Body = ms;
 
                         await _next(context);
 
                         // 瀛樺偍鍝嶅簲鏁版嵁
-                        //DateTime endDate = DateTime.Now;
-                        //string responseParam = GetResponsetData(context);
+                        DateTime endDate = DateTime.Now;
+                        string responseParam = GetResponsetData(context);
 
-                        //context.Response.Body.Position = 0;
-                        //await context.Response.Body.CopyToAsync(originalBody);
+                        context.Response.Body.Position = 0;
+                        await context.Response.Body.CopyToAsync(originalBody);
 
-                        //Logger.WriteApiLog2DB(context,requestParam, beginDate, responseParam, endDate, context.Response.StatusCode == 200 ? LoggerStatus.Success : LoggerStatus.Error);
+                        Logger.WriteApiLog2DB(context, requestParam, beginDate, responseParam, endDate, context.Response.StatusCode == 200 ? LoggerStatus.Success : LoggerStatus.Error);
                     }
                     catch (Exception ex)
                     {
@@ -80,6 +80,9 @@
             //}
         }
 
+
+
+
         private string GetRequestData(HttpContext context)
         {
             try
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_DTO/SquareCabin/TowcsDto.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_DTO/SquareCabin/TowcsDto.cs"
index e1c0753..d183db1 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_DTO/SquareCabin/TowcsDto.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_DTO/SquareCabin/TowcsDto.cs"
@@ -312,26 +312,64 @@
         public class EdiOrderDetailDto
         {
             public string batchNo { get; set; }
+            /// <summary>
+            /// 浜у搧code
+            /// </summary>
             public string productCode { get; set; }
             public string productName { get; set; }
+
+            /// <summary>
+            /// sku瑙勬牸
+            /// </summary>
             public string productSpecifications { get; set; }
             public DateTime finishDate { get; set; } //瀹屾垚鏃堕棿
-            
+
+
+            /// <summary>
+            /// 鐩樼偣鍗曚笓灞烇紙鐩樼偣鍗曞樊寮傛槑缁嗭級
+            /// </summary>
             public List<EdiStocktakingDetailDto> stocktakingDetails { get; set; }
 
+            /// <summary>
+            /// 鍑哄叆搴撳崟涓撳睘锛堝嚭鍏ュ簱搴撹揣鍝佹枡绠辨槑缁嗭級
+            /// </summary>
             public List<EdiOrderBoxDto> orderDetails { get; set; }
         }
 
+
+        /// <summary>
+        /// 鐩樼偣
+        /// </summary>
         public class EdiStocktakingDetailDto
         {
+            /// <summary>
+            /// 宸紓鏂欑鍙�
+            /// </summary>
             public string palletCode { get; set; }
+
+            /// <summary>
+            /// 濡傛灉鏄洏鐐瑰洖杩斿洖宸紓鏁�
+            /// </summary>
             public string differenceQuantity { get; set; }
+            /// <summary>
+            /// 濡傛灉鏄洏鐐癸紝鐩樼泩1 鐩樹簭0
+            /// </summary>
             public string IsProfit { get; set; }
         }
 
+
+        /// <summary>
+        /// 姝e父鍑哄叆搴�
+        /// </summary>
         public class EdiOrderBoxDto
         {
+            /// <summary>
+            /// 鍑哄叆搴撴暟閲�
+            /// </summary>
             public string quantity { get; set; }
+            /// <summary>
+            /// 鏂欑鍙�
+            /// </summary>
             public string palletCode { get; set; }
         }
 
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_I/ICabinOrderDetailHtyRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_I/ICabinOrderDetailHtyRepository.cs"
index 5cf2ce3..5ac7809 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_I/ICabinOrderDetailHtyRepository.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_I/ICabinOrderDetailHtyRepository.cs"
@@ -1,15 +1,15 @@
-锘�//using System;
-//using System.Collections.Generic;
-//using System.Linq;
-//using System.Text;
-//using System.Threading.Tasks;
-//using WIDESEA_Core.BaseRepository;
-//using WIDESEA_Model.Models;
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
 
-//namespace WIDESEA_ISquareCabinRepository
-//{
-//    public interface ICabinOrderDetailHtyRepository : IRepository<Dt_CabinOrderDetail_Hty>
-//    {
+namespace WIDESEA_ISquareCabinRepository
+{
+    public interface ICabinOrderDetailHtyRepository : IRepository<Dt_CabinOrderDetail_Hty>
+    {
 
-//    }
-//}
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_I/ICabinOrderHtyRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_I/ICabinOrderHtyRepository.cs"
new file mode 100644
index 0000000..c2439f2
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_I/ICabinOrderHtyRepository.cs"
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ISquareCabinRepository
+{
+    public interface ICabinOrderHtyRepository : IRepository<Dt_CabinOrder_Hty>
+    {
+
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_I/IDeliveryOrderDetailHtyRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_I/IDeliveryOrderDetailHtyRepository.cs"
new file mode 100644
index 0000000..ce4c5c4
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_I/IDeliveryOrderDetailHtyRepository.cs"
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ISquareCabinRepository
+{
+    public interface IDeliveryOrderDetailHtyRepository : IRepository<Dt_DeliveryOrderDetail_Hty>
+    {
+
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_I/IDeliveryOrderHtyRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_I/IDeliveryOrderHtyRepository.cs"
new file mode 100644
index 0000000..0cabd69
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_I/IDeliveryOrderHtyRepository.cs"
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ISquareCabinRepository
+{
+    public interface IDeliveryOrderRepository : IRepository<Dt_DeliveryOrder>
+    {
+
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_I/IDeliveryOrderRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_I/IDeliveryOrderRepository.cs"
index 0cabd69..f73511b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_I/IDeliveryOrderRepository.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_I/IDeliveryOrderRepository.cs"
@@ -8,7 +8,7 @@
 
 namespace WIDESEA_ISquareCabinRepository
 {
-    public interface IDeliveryOrderRepository : IRepository<Dt_DeliveryOrder>
+    public interface IDeliveryOrderHtyRepository : IRepository<Dt_DeliveryOrder_Hty>
     {
 
     }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_I/IInventoryRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_I/IInventoryRepository.cs"
index c60476f..f156302 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_I/IInventoryRepository.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_I/IInventoryRepository.cs"
@@ -5,7 +5,6 @@
 using System.Threading.Tasks;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Model.Models;
-using WIDESEA_Model.Models.SquareCabin;
 
 namespace WIDESEA_ISquareCabinRepository
 {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderDetailHtyServices.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderDetailHtyServices.cs"
index dba9d34..413852f 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderDetailHtyServices.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderDetailHtyServices.cs"
@@ -1,16 +1,16 @@
-锘�//using System;
-//using System.Collections.Generic;
-//using System.Linq;
-//using System.Text;
-//using System.Threading.Tasks;
-//using WIDESEA_Core;
-//using WIDESEA_Core.BaseServices;
-//using WIDESEA_Model.Models;
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
 
-//namespace WIDESEA_ISquareCabinServices
-//{
-//    public interface ICabinOrderDetailHtyServices : IService<Dt_CabinOrderDetail_Hty>
-//    {
-       
-//    }
-//}
+namespace WIDESEA_ISquareCabinServices
+{
+    public interface ICabinOrderDetailHtyServices : IService<Dt_CabinOrderDetail_Hty>
+    {
+
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderHtyServices.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderHtyServices.cs"
new file mode 100644
index 0000000..ad6e099
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderHtyServices.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ISquareCabinServices
+{
+    public interface ICabinOrderHtyServices : IService<Dt_CabinOrder_Hty>
+    {
+        
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderDetailHtyServices.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderDetailHtyServices.cs"
new file mode 100644
index 0000000..eac1b82
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderDetailHtyServices.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ISquareCabinServices
+{
+    public interface IDeliveryOrderDetailHtyServices : IService<Dt_DeliveryOrderDetail_Hty>
+    {
+       
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderHtyServices.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderHtyServices.cs"
new file mode 100644
index 0000000..5f96da4
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderHtyServices.cs"
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ISquareCabinServices
+{
+    public interface IDeliveryOrderHtyServices : IService<Dt_DeliveryOrder_Hty>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IInventoryServices.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IInventoryServices.cs"
index 633193a..72ac102 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IInventoryServices.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IInventoryServices.cs"
@@ -7,7 +7,6 @@
 using WIDESEA_Core.BaseServices;
 using WIDESEA_DTO.SquareCabin;
 using WIDESEA_Model.Models;
-using WIDESEA_Model.Models.SquareCabin;
 using static WIDESEA_DTO.SquareCabin.TowcsDto;
 
 namespace WIDESEA_ISquareCabinServices
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrder.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrder.cs"
index 6c9091f..df8dc93 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrder.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrder.cs"
@@ -12,7 +12,8 @@
     [SugarTable("Dt_CabinOrder", "鍏ュ簱鍗曡〃")]
     public class Dt_CabinOrder:BaseEntity
     {
-        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        [SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+
         public int Id { get; set; }
 
         [SugarColumn(IsNullable =true,Length =50,ColumnDescription ="鍏ュ簱鍗曞彿")]
@@ -38,11 +39,6 @@
         /// </summary>
         [SugarColumn(ColumnName = "OdrderStatus",IsNullable = true,Length =50, ColumnDescription = "琛ㄥご鐘舵��")]
         public string OdrderStatus { get; set; }
-
-        //涓婃父瀹屾垚鐘舵�侊細鏈畬鎴愶紝閮ㄥ垎瀹屾垚锛屽凡瀹屾垚   
-        //[SugarColumn(ColumnName = "UpOrderStatus", IsNullable = true, Length = 50, ColumnDescription = "缁欎笂娓哥姸鎬�")]
-        //public string UpOrderStatus { get; set; }
-
 
         //涓嬮潰鏄惁闇�瑕佽繖浜涘瓧娈碉紵
         //浼樺厛绾� priority
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrderDetail.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrderDetail.cs"
index f74025f..bad9123 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrderDetail.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrderDetail.cs"
@@ -31,6 +31,8 @@
         [SugarColumn(ColumnName = "Order_Inqty", IsNullable = true, ColumnDescription = "鍏ュ簱瀹屾垚鏁伴噺")]
         public decimal Order_Inqty { get; set; }
 
+
+
         [SugarColumn(ColumnName = "Batch_num", IsNullable = true, Length = 50, ColumnDescription = "鎵瑰彿")]
         public string  Batch_num { get; set; }
 
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrderDetail_Hty .cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrderDetail_Hty .cs"
index 5a8268e..d41eee4 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrderDetail_Hty .cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrderDetail_Hty .cs"
@@ -11,6 +11,9 @@
     [SugarTable("Dt_CabinOrderDetail_Hty ", "鍏ュ簱鏄庣粏鍘嗗彶琛�")]
     public class Dt_CabinOrderDetail_Hty : BaseEntity
     {
+
+        [SugarColumn(ColumnName = "HistoryId", IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "鍘嗗彶璁板綍涓婚敭")]
+        public long HistoryId { get; set; }
         // 淇濈暀鍘熻〃鎵�鏈夊瓧娈�
         [SugarColumn(ColumnName = "Id", ColumnDescription = "鍘熶富閿�")]
         public int Id { get; set; }
@@ -49,8 +52,7 @@
         public int Status { get; set; }
 
         // 鏂板鍘嗗彶琛ㄤ笓鐢ㄥ瓧娈�
-        [SugarColumn(ColumnName = "HistoryId", IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "鍘嗗彶璁板綍涓婚敭")]
-        public long HistoryId { get; set; }
+      
 
         [SugarColumn(ColumnName = "OperationType", ColumnDescription = "鎿嶄綔绫诲瀷锛�1鏂板 2淇敼 3鍒犻櫎")]
         public int OperationType { get; set; }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrder_Hty.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrder_Hty.cs"
index 12295b7..437bd29 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrder_Hty.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrder_Hty.cs"
@@ -9,7 +9,7 @@
 namespace WIDESEA_Model.Models
 {
 
-    [SugarTable("Dt_CabinOrder", "鍏ュ簱鍗曡〃鍘嗗彶琛�")]
+    [SugarTable("Dt_CabinOrder_Hty", "鍏ュ簱鍗曡〃鍘嗗彶琛�")]
     public class Dt_CabinOrder_Hty : BaseEntity
     {
 
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrder.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrder.cs"
index 713b6b9..c25b390 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrder.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrder.cs"
@@ -32,7 +32,7 @@
         /// <summary>
         /// 琛ㄥご鐘舵�侊細鏂板缓锛屽紑濮嬶紝宸插畬鎴� //璇︽儏琛ㄥ叏閮ㄧ姸鎬佷负鍏ㄩ儴锛屽湪灏嗙姸鎬佹敼鎴愬畬鎴愬悗鎵嶄細涓婁紶缁欎笂娓哥郴缁�
         /// </summary>
-        [SugarColumn(ColumnName = "OutStatus", IsNullable = true, ColumnDescription = "鐘舵�侊紝" )]
+        [SugarColumn(ColumnName = "OutStatus", IsNullable = true, ColumnDescription = "鐘舵��" )]
         public string OutStatus { get; set; }
 
         ///// <summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrderDetail_Hty.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrderDetail_Hty.cs"
new file mode 100644
index 0000000..7b816f9
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrderDetail_Hty.cs"
@@ -0,0 +1,69 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable("Dt_DeliveryOrderDetail_Hty", "鍑哄簱鏄庣粏鍘嗗彶琛�")]
+    public class Dt_DeliveryOrderDetail_Hty : BaseEntity
+    {
+        [SugarColumn(ColumnName = "HistoryId", IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "鍘嗗彶璁板綍涓婚敭")]
+        public int HistoryId { get; set; }
+
+        [SugarColumn(ColumnName = "Id", ColumnDescription = "鍘熶富閿�")]
+        public int Id { get; set; }
+
+        [SugarColumn(ColumnName = "DeliveryOrderId", IsNullable = true, ColumnDescription = "鍏宠仈鍏ュ簱鍗旾D")]
+        public int DeliveryOrderId { get; set; }
+
+        //鍖哄煙锛堣嚜宸卞缓绔嬫垨鑰呬粬浠洿鎺ョ粰鍑烘潵锛�
+        [SugarColumn(ColumnName = "Reservoirarea", IsNullable = true, Length = 50, ColumnDescription = "搴撳尯")]
+        public string Reservoirarea { get; set; }
+
+        [SugarColumn(ColumnName = "Goods_no", IsNullable = true, Length = 50, ColumnDescription = "鑽搧缂栫爜")]
+        public string  Goods_no { get; set; }
+
+
+        [SugarColumn(ColumnName = "Order_qty", IsNullable = true, ColumnDescription = "鍑哄簱閫�璐ф椂涓鸿礋鏁�")]
+        public decimal Order_qty { get; set; }
+
+        [SugarColumn(ColumnName = "Batch_num", IsNullable = true, Length = 50, ColumnDescription = "鎵瑰彿")]
+        public string  Batch_num { get; set; }
+
+        [SugarColumn(ColumnName = "Exp_date", IsNullable = true, Length = 8, ColumnDescription = "鏍℃湡(yyyymmmdd)")]
+        public  string  Exp_date { get; set; }
+
+        //搴撴埧鍙�
+        [SugarColumn(ColumnName = "Warehouse_no", IsNullable = true, ColumnDescription = "搴撴埧鍙�")]
+        public string Warehouse_no { get; set; }
+
+
+        /// <summary>
+        /// 璁㈠崟璇︽儏鐘舵�� 鏂板缓锛屽紑濮嬶紝宸插畬鎴�
+        /// 搴撴埧鍙�+鐘舵��+锛堟柊寤猴級锛氬垽鏂槸鍚︿笅鍙戠粰wcs
+        /// 璇︽儏寮�濮嬶紙寮�濮嬶級
+        /// 璇︽儏瀹屾垚锛堝凡瀹屾垚锛岀Щ鍏ュ巻鍙茶〃鍒犻櫎淇℃伅锛�
+        /// </summary>
+        [SugarColumn(ColumnName = "OotDetailStatus", IsNullable = true, Length = 50, ColumnDescription = "鐘舵��")]
+        public string OotDetailStatus { get; set; }
+
+
+        [SugarColumn(ColumnName = "Status",IsNullable =true, ColumnDescription = "涓嬫父鐘舵�侊紝鍚屾鐘舵�侊細0鏈悓姝ワ紝1宸插悓姝ワ紙鍚屾鍙戠粰wcs锛�")]
+        public int Status { get; set; }
+
+        // 瀵艰埅灞炴�э細涓�涓槑缁嗗搴斾竴涓嵂鍝佷俊鎭�
+        [Navigate(NavigateType.OneToOne, nameof(Goods_no), nameof(Dt_MedicineGoods.Goods_no))]
+        public Dt_MedicineGoods MedicineGoods { get; set; }
+
+        //鏄惁闇�瑕佷笅闈㈢殑瀛楁
+        //sku鍚嶇О productName
+        //sku瑙勬牸 ProductSpecifications
+        //鏁伴噺 quantity 
+        //鐩樹簭鏄庣粏 StocktakingDetails 
+
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrder_Hty.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrder_Hty.cs"
new file mode 100644
index 0000000..779df71
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrder_Hty.cs"
@@ -0,0 +1,61 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable("Dt_DeliveryOrder_Hty", "鍑哄簱鍗曞巻鍙茶〃")]
+    public  class Dt_DeliveryOrder_Hty : BaseEntity
+    {
+        [SugarColumn(ColumnName = "HistoryId", IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "鍘嗗彶璁板綍涓婚敭")]
+        public int HistoryId { get; set; }
+
+        [SugarColumn(ColumnName = "Id", ColumnDescription = "鍘熶富閿�")]
+        public  int  Id { get; set; }
+
+        [SugarColumn(ColumnName = "Out_no", IsNullable = true, Length = 50, ColumnDescription = "鍑哄簱鍗曞彿")]
+        public string   Out_no{ get; set; }
+
+        [SugarColumn(ColumnName = "Out_type", IsNullable = true, Length = 3, ColumnDescription = "鍑哄簱鍗曠被鍨�")]
+        public string  Out_type { get; set; }
+
+        [SugarColumn(ColumnName = "Client_no", IsNullable = true, Length = 50, ColumnDescription = "瀹㈡埛浠g爜")]
+        public string Client_no { get; set; }
+
+
+        [SugarColumn(ColumnName = "Account_time", IsNullable = true, ColumnDescription = "鍑哄簱璁拌处鏃堕棿")]
+        public DateTime?Account_time { get; set; }
+
+        /// <summary>
+        /// 琛ㄥご鐘舵�侊細鏂板缓锛屽紑濮嬶紝宸插畬鎴� //璇︽儏琛ㄥ叏閮ㄧ姸鎬佷负鍏ㄩ儴锛屽湪灏嗙姸鎬佹敼鎴愬畬鎴愬悗鎵嶄細涓婁紶缁欎笂娓哥郴缁�
+        /// </summary>
+        [SugarColumn(ColumnName = "OutStatus", IsNullable = true, ColumnDescription = "鐘舵�侊紝" )]
+        public string OutStatus { get; set; }
+
+        ///// <summary>
+        ///// 涓婃父琛ㄥご鐘舵�侊細鏈畬鎴愶紝閮ㄥ垎瀹屾垚锛屽凡瀹屾垚
+        ///// </summary>
+        //[SugarColumn(ColumnName = "UpOutStatus", IsNullable = true, ColumnDescription = "缁欎笂娓稿叆搴撶姸鎬侊紝")]
+        //public string UpOutStatus { get; set; }
+
+
+
+        //鏄惁闇�瑕佷笅闈㈢殑瀛楁
+        //浼樺厛绾� priority
+        //鏄惁鍙栨秷 Is_cancel
+
+        //浼樺厛绾� priority
+        //[SugarColumn(ColumnName = "Priority", IsNullable = true, ColumnDescription = "浼樺厛绾�")]
+        //public int Priority { get; set; }
+
+        ////鏄惁鍙栨秷 Iscancel
+        //[SugarColumn(ColumnName = "Iscancel", IsNullable = true, ColumnDescription = "鏄惁鍙栨秷")]
+        //public int Iscancel { get; set; }
+        [Navigate(NavigateType.OneToMany, nameof(Dt_DeliveryOrderDetail.DeliveryOrderId))]
+        public List<Dt_DeliveryOrderDetail> Details { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_Inventory.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_Inventory.cs"
index b7260aa..df68935 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_Inventory.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_Inventory.cs"
@@ -6,7 +6,7 @@
 using System.Threading.Tasks;
 using WIDESEA_Core.DB.Models;
 
-namespace WIDESEA_Model.Models.SquareCabin
+namespace WIDESEA_Model.Models
 {
 
     [SugarTable("Dt_Inventory", "搴撳瓨琛�")]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinRepository/CabinOrderDetailHtyRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinRepository/CabinOrderDetailHtyRepository.cs"
index af07017..ee6bec0 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinRepository/CabinOrderDetailHtyRepository.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinRepository/CabinOrderDetailHtyRepository.cs"
@@ -1,18 +1,18 @@
-锘�//using System;
-//using System.Collections.Generic;
-//using System.Linq;
-//using System.Text;
-//using System.Threading.Tasks;
-//using WIDESEA_Core.BaseRepository;
-//using WIDESEA_ISquareCabinRepository;
-//using WIDESEA_Model.Models;
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_ISquareCabinRepository;
+using WIDESEA_Model.Models;
 
-//namespace WIDESEA_SquareCabinRepository
-//{
-//    public class CabinOrderDetailHtyRepository : RepositoryBase<Dt_CabinOrderDetail_Hty>, ICabinOrderDetailHtyRepository
-//    {
-//        public CabinOrderDetailHtyRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
-//        {
-//        }
-//    }
-//}
+namespace WIDESEA_SquareCabinRepository
+{
+    public class CabinOrderDetailHtyRepository : RepositoryBase<Dt_CabinOrderDetail_Hty>, ICabinOrderDetailHtyRepository
+    {
+        public CabinOrderDetailHtyRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinRepository/CabinOrderHtyRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinRepository/CabinOrderHtyRepository.cs"
new file mode 100644
index 0000000..c160d32
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinRepository/CabinOrderHtyRepository.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_ISquareCabinRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_SquareCabinRepository
+{
+    public class CabinOrderHtyRepository : RepositoryBase<Dt_CabinOrder_Hty>, ICabinOrderHtyRepository
+    {
+        public CabinOrderHtyRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinRepository/DeliveryOrderDetailHtyRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinRepository/DeliveryOrderDetailHtyRepository.cs"
new file mode 100644
index 0000000..8f732a2
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinRepository/DeliveryOrderDetailHtyRepository.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_ISquareCabinRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_SquareCabinRepository
+{
+    public class DeliveryOrderDetailHtyRepository : RepositoryBase<Dt_DeliveryOrderDetail_Hty>, IDeliveryOrderDetailHtyRepository
+    {
+        public DeliveryOrderDetailHtyRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinRepository/DeliveryOrderHtyRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinRepository/DeliveryOrderHtyRepository.cs"
new file mode 100644
index 0000000..eb30119
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinRepository/DeliveryOrderHtyRepository.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_ISquareCabinRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_SquareCabinRepository
+{
+    public class DeliveryOrderHtyRepository : RepositoryBase<Dt_DeliveryOrder_Hty>, IDeliveryOrderHtyRepository
+    {
+        public DeliveryOrderHtyRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinRepository/InventoryRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinRepository/InventoryRepository.cs"
index 8914a62..eaed08e 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinRepository/InventoryRepository.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinRepository/InventoryRepository.cs"
@@ -6,7 +6,6 @@
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_ISquareCabinRepository;
 using WIDESEA_Model.Models;
-using WIDESEA_Model.Models.SquareCabin;
 
 namespace WIDESEA_SquareCabinRepository
 {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderDetailHtyServices.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderDetailHtyServices.cs"
index 1f5550f..2e9592d 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderDetailHtyServices.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderDetailHtyServices.cs"
@@ -1,20 +1,21 @@
-锘�//using System;
-//using System.Collections.Generic;
-//using System.Linq;
-//using System.Text;
-//using System.Threading.Tasks;
-//using WIDESEA_Core.BaseServices;
-//using WIDESEA_ISquareCabinRepository;
-//using WIDESEA_ISquareCabinServices;
-//using WIDESEA_Model.Models;
-//using WIDESEA_SquareCabinRepository;
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_ISquareCabinRepository;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+using WIDESEA_SquareCabinRepository;
 
-//namespace WIDESEA_SquareCabinServices
-//{
-//    public class CabinOrderDetailHtyServices : ServiceBase<Dt_CabinOrderDetail_Hty, ICabinOrderDetailHtyRepository>, ICabinOrderDetailHtyServices
-//    {
-//        public CabinOrderDetailHtyServices(ICabinOrderDetailHtyRepository BaseDal) : base(BaseDal)
-//        {
-//        }
-//    }
-//}
+namespace WIDESEA_SquareCabinServices
+{
+    public class CabinOrderDetailHtyServices : ServiceBase<Dt_CabinOrderDetail_Hty, ICabinOrderDetailHtyRepository>, ICabinOrderDetailHtyServices
+    {
+        public CabinOrderDetailHtyServices(ICabinOrderDetailHtyRepository BaseDal) : base(BaseDal)
+        {
+
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderHtyServices.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderHtyServices.cs"
new file mode 100644
index 0000000..f642120
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderHtyServices.cs"
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_ISquareCabinRepository;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_SquareCabinServices
+{
+    public class CabinOrderHtyServices : ServiceBase<Dt_CabinOrder_Hty, ICabinOrderHtyRepository>, ICabinOrderHtyServices
+    {
+        public CabinOrderHtyServices(ICabinOrderHtyRepository BaseDal) : base(BaseDal)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs"
index 74bb6a5..bb83711 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs"
@@ -1,4 +1,5 @@
-锘縰sing Masuit.Tools;
+锘縰sing MailKit.Search;
+using Masuit.Tools;
 using Newtonsoft.Json;
 using SqlSugar;
 using System;
@@ -131,7 +132,6 @@
         public WebResponseContent GetUpstreamOrder()
         {
             var responseContent = new WebResponseContent();
-
             try
             {
                 // 璇锋眰鍦板潃
@@ -179,6 +179,7 @@
                             OdrderStatus = "鏂板缓",
                             Details = order.details.Select(d => new Dt_CabinOrderDetail
                             {
+                                //OrderId 瑕佹嬁鍒板叆搴撳崟琛ㄤ腑鐨刬d锛屽浣曟嬁涓嶅埌灏卞皢杩欎釜瀛楁鏀逛簡锛屾敼鎴愬叆搴撳崟鍙�
                                 Goods_no = d.goods_no,
                                 Order_qty = d.order_qty,
                                 Batch_num = d.batch_num,
@@ -234,18 +235,17 @@
         {
             try
             {
-                // 1. 鍏堟壘鍑鸿嚦灏戞湁涓�鏉$鍚堟潯浠剁殑鏄庣粏瀵瑰簲鐨勮鍗旾D
-                //var validOrderIds = Db.Queryable<Dt_CabinOrderDetail>()
-                //    .Where(d => d.Status == 0 || d.Status == 2)
-                //    .Select(d => d.OrderId)
-                //    .Distinct()
+                //2.鏌ヨ绗﹀悎鏉′欢鐨勮鍗曪紙琛ㄥご = 鏂板缓 && 鍖呭惈鏈夋晥鏄庣粏锛�
+                //var orders = BaseDal.Db.Queryable<Dt_CabinOrder>()
+                //    .Where(o => o.OdrderStatus == "鏂板缓")
+                //    .Includes(o => o.Details, d => d.MedicineGoods)
                 //    .ToList();
-
-                // 2. 鏌ヨ绗﹀悎鏉′欢鐨勮鍗曪紙琛ㄥご=鏂板缓 && 鍖呭惈鏈夋晥鏄庣粏锛�
-                var orders = BaseDal.Db.Queryable<Dt_CabinOrder>()
-                    .Where(o => o.OdrderStatus == "鏂板缓")
-                    .Includes(o => o.Details, d => d.MedicineGoods)
-                    .ToList();
+                //鏌ュ嚭鍖呭惈鍏ㄩ儴鐨勫叆搴撳崟锛屽寘鍚叏閮ㄦ槑缁�+涓�涓槑缁嗗搴斾竴涓晢鍝�
+                var orders = BaseDal.Db.CopyNew()
+                .Queryable<Dt_CabinOrder>()
+                .Where(o => o.OdrderStatus == "鏂板缓")
+                .Includes(o => o.Details, d => d.MedicineGoods)
+                .ToList();
                 // 3. 鍐嶈繃婊ゆ帀涓嶇鍚堟潯浠剁殑鏄庣粏锛堝彧淇濈暀 Status=0锛�
                 foreach (var order in orders)
                 {
@@ -315,13 +315,13 @@
                     if (resp != null && resp.code == "0")
                     {
                         // 鏇存柊琛ㄥご鐘舵��
-                        Db.Updateable<Dt_CabinOrder>()
+                       BaseDal.Db.Updateable<Dt_CabinOrder>()
                           .SetColumns(o => new Dt_CabinOrder { OdrderStatus = "寮�濮�" })
                           .Where(o => o.Id == order.Id)
                           .ExecuteCommand();
 
                         // 鏇存柊鏄庣粏鐘舵�佷负宸插悓姝�
-                        Db.Updateable<Dt_CabinOrderDetail>()
+                        BaseDal.Db.Updateable<Dt_CabinOrderDetail>()
                           .SetColumns(d => new Dt_CabinOrderDetail { Status = 1, OrderDetailStatus = "宸插畬鎴�" })
                           .Where(d => d.OrderId == order.Id && d.Status == 0)
                           .ExecuteCommand();
@@ -347,7 +347,7 @@
 
 
         /// <summary>
-        /// 鍏ュ簱鎶ュ畬鎴愭帴鍙�
+        /// 鍏ュ簱鎶ュ畬鎴愭帴鍙� //妫�鏌ヤ竴涓缁嗚〃涓叏閮ㄧ姸鎬佷负瀹屾垚鐨勬椂鍊欏氨灏嗗叆搴撳崟鐨勫紑濮嬫敼鍐欐垚瀹屾垚骞舵帹閫佺粰涓婃父
         /// </summary>
         /// <param name="order_no">鍏ュ簱鍗曞彿</param>
         /// <returns></returns>
@@ -372,7 +372,7 @@
                 }
 
                 // 鍏堟煡琛ㄥご
-                var order = Db.Queryable<Dt_CabinOrder>()
+                var order = BaseDal.Db.Queryable<Dt_CabinOrder>()
                               .First(o => o.Order_no == order_no);
 
                 if (order == null)
@@ -381,14 +381,14 @@
                 }
 
                 // 鏌ヨ鎵�鏈夋槑缁嗘槸鍚﹂兘宸插畬鎴�
-                var allDetailsCompleted = Db.Queryable<Dt_CabinOrderDetail>()
+                var allDetailsCompleted = BaseDal.Db.Queryable<Dt_CabinOrderDetail>()
                     .Where(d => d.OrderId == order.Id&&d.OrderDetailStatus=="宸插畬鎴�")  // 鏄庣粏琛ㄧ敤 OrderId 鍏宠仈涓昏〃
                      .Count();
 
                 if (allDetailsCompleted>0)
                 {
                     // 鏇存柊琛ㄥご鐘舵�佷负宸插畬鎴�
-                    Db.Updateable<Dt_CabinOrder>()
+                    BaseDal.Db.Updateable<Dt_CabinOrder>()
                       .SetColumns(o => o.OdrderStatus == "宸插畬鎴�")
                       .Where(o => o.Order_no == order_no)
                       .ExecuteCommand();
@@ -408,6 +408,7 @@
             }
         }
 
+        
 
         /// <summary>
         /// 鎺ㄩ�佸紓甯镐俊鎭粰涓婃父绯荤粺1.鍏ュ簱鍗曟帴鍙o紱2.鍏ュ簱鍗曟姤瀹屾垚鎺ュ彛锛�3.鍑哄簱鍗曟帴鍙o紱4.鍑哄簱鎶ュ畬鎴愭帴鍙o紱5.鑽搧鍩虹淇℃伅鍚屾鎺ュ彛锛�6.渚涘簲鍟嗕俊鎭帴鍙o紱7.瀹㈡埛淇℃伅鎺ュ彛锛�8.搴撳瓨
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderDetailHtyServices.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderDetailHtyServices.cs"
new file mode 100644
index 0000000..c5224ea
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderDetailHtyServices.cs"
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_ISquareCabinRepository;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+using WIDESEA_SquareCabinRepository;
+
+namespace WIDESEA_SquareCabinServices
+{
+    public class DeliveryOrderDetailHtyServices : ServiceBase<Dt_DeliveryOrderDetail_Hty, IDeliveryOrderDetailHtyRepository>, IDeliveryOrderDetailHtyServices
+    {
+        public DeliveryOrderDetailHtyServices(IDeliveryOrderDetailHtyRepository BaseDal) : base(BaseDal)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderHtyServices.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderHtyServices.cs"
new file mode 100644
index 0000000..1c34995
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderHtyServices.cs"
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_ISquareCabinRepository;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_SquareCabinServices
+{
+    public class DeliveryOrderHtyServices : ServiceBase<Dt_DeliveryOrder_Hty, IDeliveryOrderHtyRepository>, IDeliveryOrderHtyServices
+    {
+        public DeliveryOrderHtyServices(IDeliveryOrderHtyRepository BaseDal) : base(BaseDal)
+        {
+
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs"
index a22e852..0d5d893 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs"
@@ -81,7 +81,7 @@
                             Account_time = outorder.account_time,
                             OutStatus= "鏈畬鎴�",
                         };
-                        var outorderId = Db.Insertable(entityOrder).ExecuteReturnIdentity();
+                        var outorderId = BaseDal.Db.Insertable(entityOrder).ExecuteReturnIdentity();
 
                         // 鎻掑叆鍑哄簱鍗曟槑缁�
                         var detailEntities = outorder.details.Select(d => new Dt_DeliveryOrderDetail
@@ -93,7 +93,7 @@
                             Exp_date = d.exp_date,
                             OotDetailStatus="鏂板缓"
                         }).ToList();
-                        Db.Insertable(detailEntities).ExecuteCommand();
+                        BaseDal.Db.Insertable(detailEntities).ExecuteCommand();
                     }
                     catch (Exception ex)
                     {
@@ -123,7 +123,7 @@
             try
             {
                 // 1. 鏌ヨ绗﹀悎鏉′欢鐨勮鍗曪紙琛ㄥご=鏂板缓 && 鍖呭惈鏈夋晥鏄庣粏锛�
-                var outOrders = Db.Queryable<Dt_DeliveryOrder>()
+                var outOrders = BaseDal.Db.CopyNew().Queryable<Dt_DeliveryOrder>()
                     .Where(o => o.OutStatus == "鏂板缓")
                     .Includes(o => o.Details, d => d.MedicineGoods)
                     .ToList();
@@ -177,13 +177,13 @@
                         if (resp != null && resp.code == "0")
                         {
                             // 鏇存柊琛ㄥご鐘舵��
-                            Db.Updateable<Dt_DeliveryOrder>()
+                            BaseDal.Db.Updateable<Dt_DeliveryOrder>()
                               .SetColumns(o => new Dt_DeliveryOrder { OutStatus = "寮�濮�" })
                               .Where(o => o.Id == order.Id)
                               .ExecuteCommand();
 
                             // 鏇存柊鏄庣粏鐘舵��
-                            Db.Updateable<Dt_DeliveryOrderDetail>()
+                            BaseDal.Db.Updateable<Dt_DeliveryOrderDetail>()
                               .SetColumns(d => new Dt_DeliveryOrderDetail { Status = 1,OotDetailStatus="宸插畬鎴�" })
                               .Where(d => d.DeliveryOrderId == order.Id && d.Status == 0)
                               .ExecuteCommand();
@@ -237,7 +237,7 @@
                     return responseContent.Error(response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触");
                 }
                 //鍏堟煡澶磋〃
-                var outOerd=Db.Queryable<Dt_DeliveryOrder>()
+                var outOerd= BaseDal.Db.Queryable<Dt_DeliveryOrder>()
                     .Where(o => o.Out_no == out_no)
                     .First();
                 if (outOerd == null)
@@ -245,11 +245,11 @@
                     return responseContent.Error($"娌℃湁鎵惧埌璇ュ嚭搴撳崟鍙穥out_no}");
                 }
                 //鏌ユ壘鎵�鏈夋槑缁嗚〃鏄惁閮藉凡瀹屾垚
-                var incompleteDetails = Db.Queryable<Dt_DeliveryOrderDetail>()
+                var incompleteDetails = BaseDal.Db.Queryable<Dt_DeliveryOrderDetail>()
                     .Where(d => d.DeliveryOrderId == outOerd.Id && d.OotDetailStatus == "宸插畬鎴�")
-                    .ToList();  
+                    .ToList();
                 // 鏇存柊鍑哄簱鍗曠姸鎬�
-                Db.Updateable<Dt_DeliveryOrder>()
+                BaseDal.Db.Updateable<Dt_DeliveryOrder>()
                   .SetColumns(o => new Dt_DeliveryOrder { OutStatus = "宸插畬鎴�" })
                   .Where(o => o.Out_no == out_no)
                   .ExecuteCommand();
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/InventoryServices.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/InventoryServices.cs"
index 0e4cb00..abf0fb4 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/InventoryServices.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/InventoryServices.cs"
@@ -13,7 +13,6 @@
 using WIDESEA_ISquareCabinRepository;
 using WIDESEA_ISquareCabinServices;
 using WIDESEA_Model.Models;
-using WIDESEA_Model.Models.SquareCabin;
 using WIDESEA_SquareCabinRepository;
 using static WIDESEA_DTO.SquareCabin.OrderDto;
 using static WIDESEA_DTO.SquareCabin.TowcsDto;
@@ -91,18 +90,19 @@
                 {
                     return new ApiResponse<Dt_Inventory> { code ="500",msg = "璇锋眰鍙傛暟鏃犳晥" };
                 }
-
+                BaseDal.Db.Ado.BeginTran();//寮�鍚簨鍔�
                 foreach (var detail in request.details)
                 {
-                    // 鍏堟煡搴撳瓨鏄惁瀛樺湪
-                    var entity = Db.Queryable<Dt_Inventory>()
-                                   .First(x => x.Goods_no == detail.productCode);
+                    // 鍏堟煡搴撳瓨鏄惁瀛樺湪锛堟寜鐓т骇鍝佺紪鍙峰拰鎵规鏉ュ鎵撅級
+                    var entity = BaseDal.Db.Queryable<Dt_Inventory>()
+                                   .First(x => x.Goods_no == detail.productCode && x.Batch_num == detail.batchNo);
                     //灏嗛泦鍚堜腑鐨勬暟閲忚繘琛岀疮鍔�
-                    decimal orderQty = detail.orderDetails?.Sum(x => Convert.ToDecimal(x.quantity)) ?? 0;
-                    decimal diffQty = detail.stocktakingDetails?.Sum(x => Convert.ToDecimal(x.differenceQuantity)) ?? 0;
-                    //decimal orderQty = detail.orderDetails?.Sum(x => Convert.ToDecimal(x.quantity)) ?? 0;
-                    //decimal diffQty = detail.stocktakingDetails?.Sum(x => Convert.ToDecimal(x.differenceQuantity)) ?? 0;
+                    // 瀹夊叏杞崲
 
+                    //姝e父鍑哄叆搴�
+                    decimal orderQty = detail.orderDetails?.Sum(x => decimal.TryParse(x.quantity, out var q) ? q : 0) ?? 0;
+                    //鐩樼偣鐩樹簭
+                    decimal diffQty = detail.stocktakingDetails?.Sum(x => Convert.ToDecimal(x.differenceQuantity)) ?? 0;
                     if (entity == null)
                     {
                         // 濡傛灉涓嶅瓨鍦紝鏂板缓涓�鏉�
@@ -111,7 +111,9 @@
                             Goods_no = detail.productCode ?? detail.productName,
                             Reservoirarea = "榛樿搴撳尯",
                             Batch_num = detail.batchNo,
+                            //涓氬姟搴撳瓨
                             Business_qty = 0,
+                            //瀹為檯搴撳瓨
                             Actual_qty = 0
                         };
                     }
@@ -135,15 +137,16 @@
                             {
                                 foreach (var stock in detail.stocktakingDetails)
                                 {
+                                    //姣忔閮藉彧鎷夸竴鏉℃槑缁嗕腑鐨勬暟閲�
                                     decimal diff = Convert.ToDecimal(stock.differenceQuantity);
                                     if (stock.IsProfit == "1") // 鐩樼泩
                                     {
-                                        entity.Actual_qty += diff;
+                                        entity.Business_qty += diff;//濡傛灉鐩樼泩浜嗗浜嗭紝灏卞皢涓氬姟鏁伴噺+锛岀洏浜忓垯鐩稿弽
                                     }
                                     else // 鐩樹簭
                                     {
-                                        entity.Actual_qty -= diff;
-                                        if (entity.Actual_qty < 0) entity.Actual_qty = 0;
+                                        entity.Business_qty -= diff;
+                                        //if (entity.Business_qty < 0) entity.Business_qty = 0;
                                     }
                                 }
                             }
@@ -152,19 +155,21 @@
 
                     // 淇濆瓨鏁版嵁
                     if (entity.Id == 0) // 鏂板缓
-                        Db.Insertable(entity).ExecuteCommand();
+                        BaseDal.Db.Insertable(entity).ExecuteCommand();
                     else // 鏇存柊
-                        Db.Updateable(entity).ExecuteCommand();
+                        BaseDal.Db.Updateable(entity).ExecuteCommand();
                 }
-
+                BaseDal.Db.Ado.CommitTran(); // 鎻愪氦浜嬪姟
                 return new ApiResponse<Dt_Inventory> {code = "0", msg = "鎴愬姛" };
             }
             catch (Exception ex)
             {
+                BaseDal.Db.Ado.RollbackTran();//鍥炴粴浜嬪姟
                 return new ApiResponse<Dt_Inventory> { code = "500", msg = ex.Message };
             }
         }
 
+      
 
 
 
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/MedicineGoodsServices.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/MedicineGoodsServices.cs"
index 0519bb0..deeb0e9 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/MedicineGoodsServices.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/MedicineGoodsServices.cs"
@@ -100,7 +100,7 @@
                     ModifyDate = Medicat.modify_date
                 }).ToList();
                 // 涓�娆℃�ф壒閲忔彃鍏ユ暟鎹簱
-                Db.Insertable(entityList).ExecuteCommand();
+                BaseDal.Db.Insertable(entityList).ExecuteCommand();
 
                 ProductSynchronous();
                 return responseContent.OK("鍚屾鎴愬姛");
@@ -168,7 +168,7 @@
                     if (resp!=null&&resp.code=="0")
                     {
                         //鏇存柊鑽搧鐘舵��-宸插畬鎴�
-                      Db.Updateable<Dt_MedicineGoods>()
+                        BaseDal.Db.Updateable<Dt_MedicineGoods>()
                             .SetColumns(x => x.GoodStatus == "涓嬪彂瀹屾垚")
                             .Where(x => x.Goods_no == item.Goods_no)
                             .ExecuteCommand();  
@@ -185,6 +185,7 @@
             }
             catch (Exception ex)
             {
+                Console.WriteLine("ProductSynchronous 寮傚父锛�" + ex.Message);
                 return new WebResponseContent { Status = false, Message = ex.Message };
             }
 
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/InventoryController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/InventoryController.cs"
index c6d061a..dff5953 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/InventoryController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/InventoryController.cs"
@@ -2,7 +2,6 @@
 using Microsoft.AspNetCore.Mvc;
 using WIDESEA_DTO.SquareCabin;
 using WIDESEA_ISquareCabinServices;
-using WIDESEA_Model.Models.SquareCabin;
 using static WIDESEA_DTO.SquareCabin.TowcsDto;
 
 namespace WIDESEA_WMSServer.Controllers
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_WMSServer/GoodsJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_WMSServer/GoodsJob.cs"
index 187e37b..1256d82 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_WMSServer/GoodsJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_WMSServer/GoodsJob.cs"
@@ -12,7 +12,7 @@
             _medicineGoodsServices = medicineGoodsServices;
         }
         //姣忛殧1绉掓墽琛屼竴娆�
-        [Invoke(Begin = "2025-09-01", Interval = 1000 * 5, IsEnabled = true, SkipWhileExecuting = true)]
+        [Invoke(Begin = "2025-09-01", Interval = 1000 * 5, IsEnabled = false, SkipWhileExecuting = true)]
         public void Run()
         {
             //_cabinOrderServices.GetUpstreamOrder();
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_WMSServer/InOrderJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_WMSServer/InOrderJob.cs"
index cdb1e6e..dce46e1 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_WMSServer/InOrderJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_WMSServer/InOrderJob.cs"
@@ -11,7 +11,7 @@
             _cabinOrderServices = cabinOrderServices;
         }
         //姣忛殧1绉掓墽琛屼竴娆�
-        [Invoke(Begin = "2025-09-01", Interval = 1000 * 5, IsEnabled = true,SkipWhileExecuting = true)]
+        [Invoke(Begin = "2025-09-01", Interval = 1000 * 5, IsEnabled = false,SkipWhileExecuting = true)]
         public void Run()
         {
             //_cabinOrderServices.GetUpstreamOrder();
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
index 7ceb7d8..5de0522 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
@@ -44,7 +44,7 @@
 builder.Services.AddAllOptionRegister();//读取配置文件
 builder.Services.AddMemoryCacheSetup();//缓存
 builder.Services.AddSqlsugarSetup();//SqlSugar 启动服务
-//builder.Services.AddInitializationHostServiceSetup();//应用初始化服务注入 
+builder.Services.AddInitializationHostServiceSetup();//应用初始化服务注入 创建数据库
 builder.Services.AddDbSetup();//Db 启动服务
 
 //todo 初始化模型验证配置
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.editorconfig" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.editorconfig"
new file mode 100644
index 0000000..45e8d88
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.editorconfig"
@@ -0,0 +1,4 @@
+锘縖*.cs]
+
+# CS8618: 鍦ㄩ��鍑烘瀯閫犲嚱鏁版椂锛屼笉鍙负 null 鐨勫瓧娈靛繀椤诲寘鍚潪 null 鍊笺�傝鑰冭檻澹版槑涓哄彲浠ヤ负 null銆�
+dotnet_diagnostic.CS8618.severity = silent
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/CodeChunks.db" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/CodeChunks.db"
new file mode 100644
index 0000000..c1c129d
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/CodeChunks.db"
Binary files differ
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/SemanticSymbols.db" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/SemanticSymbols.db"
new file mode 100644
index 0000000..7c58dca
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/SemanticSymbols.db"
Binary files differ
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/SemanticSymbols.db-shm" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/SemanticSymbols.db-shm"
new file mode 100644
index 0000000..9b64a84
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/SemanticSymbols.db-shm"
Binary files differ
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/SemanticSymbols.db-wal" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/SemanticSymbols.db-wal"
new file mode 100644
index 0000000..abc1d8b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.12.38.29086/SemanticSymbols.db-wal"
Binary files differ
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1091.29919/CodeChunks.db" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1091.29919/CodeChunks.db"
new file mode 100644
index 0000000..c6161d3
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1091.29919/CodeChunks.db"
Binary files differ
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1091.29919/SemanticSymbols.db" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1091.29919/SemanticSymbols.db"
new file mode 100644
index 0000000..a4f209c
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1091.29919/SemanticSymbols.db"
Binary files differ
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/config/applicationhost.config" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/config/applicationhost.config"
new file mode 100644
index 0000000..269dc55
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/config/applicationhost.config"
@@ -0,0 +1,1021 @@
+锘�<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    IIS configuration sections.
+
+    For schema documentation, see
+    %IIS_BIN%\config\schema\IIS_schema.xml.
+    
+    Please make a backup of this file before making any changes to it.
+
+    NOTE: The following environment variables are available to be used
+          within this file and are understood by the IIS Express.
+
+          %IIS_USER_HOME% - The IIS Express home directory for the user
+          %IIS_SITES_HOME% - The default home directory for sites
+          %IIS_BIN% - The location of the IIS Express binaries
+          %SYSTEMDRIVE% - The drive letter of %IIS_BIN%
+
+-->
+
+<configuration>
+
+    <!--
+
+        The <configSections> section controls the registration of sections.
+        Section is the basic unit of deployment, locking, searching and
+        containment for configuration settings.
+        
+        Every section belongs to one section group.
+        A section group is a container of logically-related sections.
+        
+        Sections cannot be nested.
+        Section groups may be nested.
+        
+        <section
+            name=""  [Required, Collection Key] [XML name of the section]
+            allowDefinition="Everywhere" [MachineOnly|MachineToApplication|AppHostOnly|Everywhere] [Level where it can be set]
+            overrideModeDefault="Allow"  [Allow|Deny] [Default delegation mode]
+            allowLocation="true"  [true|false] [Allowed in location tags]
+        />
+        
+        The recommended way to unlock sections is by using a location tag:
+        <location path="Default Web Site" overrideMode="Allow">
+            <system.webServer>
+                <asp />
+            </system.webServer>
+        </location>
+
+    -->
+    <configSections>
+        <sectionGroup name="system.applicationHost">
+            <section name="applicationPools" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="configHistory" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="customMetadata" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="listenerAdapters" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="log" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="serviceAutoStartProviders" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="sites" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="webLimits" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+        </sectionGroup>
+
+        <sectionGroup name="system.webServer">
+            <section name="asp" overrideModeDefault="Deny" />
+            <section name="caching" overrideModeDefault="Allow" />
+            <section name="cgi" overrideModeDefault="Deny" />
+            <section name="defaultDocument" overrideModeDefault="Allow" />
+            <section name="directoryBrowse" overrideModeDefault="Allow" />
+            <section name="fastCgi" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="globalModules" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="handlers" overrideModeDefault="Deny" />
+            <section name="httpCompression" overrideModeDefault="Allow" allowDefinition="Everywhere" />
+            <section name="httpErrors" overrideModeDefault="Allow" />
+            <section name="httpLogging" overrideModeDefault="Deny" />
+            <section name="httpProtocol" overrideModeDefault="Allow" />
+            <section name="httpRedirect" overrideModeDefault="Allow" />
+            <section name="httpTracing" overrideModeDefault="Deny" />
+            <section name="isapiFilters" allowDefinition="MachineToApplication" overrideModeDefault="Deny" />
+            <section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" />
+            <section name="applicationInitialization" allowDefinition="MachineToApplication" overrideModeDefault="Allow" />
+            <section name="odbcLogging" overrideModeDefault="Deny" />
+            <sectionGroup name="security">
+                <section name="access" overrideModeDefault="Deny" />
+                <section name="applicationDependencies" overrideModeDefault="Deny" />
+                <sectionGroup name="authentication">
+                    <section name="anonymousAuthentication" overrideModeDefault="Deny" />
+                    <section name="basicAuthentication" overrideModeDefault="Deny" />
+                    <section name="clientCertificateMappingAuthentication" overrideModeDefault="Deny" />
+                    <section name="digestAuthentication" overrideModeDefault="Deny" />
+                    <section name="iisClientCertificateMappingAuthentication" overrideModeDefault="Deny" />
+                    <section name="windowsAuthentication" overrideModeDefault="Deny" />
+                </sectionGroup>
+                <section name="authorization" overrideModeDefault="Allow" />
+                <section name="ipSecurity" overrideModeDefault="Deny" />
+                <section name="dynamicIpSecurity" overrideModeDefault="Deny" />
+                <section name="isapiCgiRestriction" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+                <section name="requestFiltering" overrideModeDefault="Allow" />
+            </sectionGroup>
+            <section name="serverRuntime" overrideModeDefault="Deny" />
+            <section name="serverSideInclude" overrideModeDefault="Deny" />
+            <section name="staticContent" overrideModeDefault="Allow" />
+            <sectionGroup name="tracing">
+                <section name="traceFailedRequests" overrideModeDefault="Allow" />
+                <section name="traceProviderDefinitions" overrideModeDefault="Deny" />
+            </sectionGroup>
+            <section name="urlCompression" overrideModeDefault="Allow" />
+            <section name="validation" overrideModeDefault="Allow" />
+            <sectionGroup name="webdav">
+                <section name="globalSettings" overrideModeDefault="Deny" />
+                <section name="authoring" overrideModeDefault="Deny" />
+                <section name="authoringRules" overrideModeDefault="Deny" />
+            </sectionGroup>
+            <sectionGroup name="rewrite">
+                <section name="allowedServerVariables" overrideModeDefault="Deny" />
+                <section name="rules" overrideModeDefault="Allow" />
+                <section name="outboundRules" overrideModeDefault="Allow" />
+                <section name="globalRules" overrideModeDefault="Deny" allowDefinition="AppHostOnly" />
+                <section name="providers" overrideModeDefault="Allow" />
+                <section name="rewriteMaps" overrideModeDefault="Allow" />
+            </sectionGroup>
+            <section name="webSocket" overrideModeDefault="Deny" />
+        </sectionGroup>
+    </configSections>
+
+    <configProtectedData>
+        <providers>
+            <add name="IISWASOnlyRsaProvider" type="" description="Uses RsaCryptoServiceProvider to encrypt and decrypt" keyContainerName="iisWasKey" cspProviderName="" useMachineContainer="true" useOAEP="false" />
+            <add name="AesProvider" type="Microsoft.ApplicationHost.AesProtectedConfigurationProvider" description="Uses an AES session key to encrypt and decrypt" keyContainerName="iisConfigurationKey" cspProviderName="" useOAEP="false" useMachineContainer="true" sessionKey="AQIAAA5mAAAApAAA/HKxkz6alrlAPez0IUgujj/6k3WxCDriHp6jvpv3yEZmo7h6SMzGLxo4mTrIQVHSkB7tmElHKfUFTzE2BWF7nFWHY6Z6qmGBauFzwJMwESjril7Gjz69RBFH259HQ6aRDq9Xfx7U7H4HtdmnKNqGjgl/hwPQBGeIlWiDh+sYv3vKB0QU971tjX6H2B+9armlnC8UOuA6JYMDMI/VLLL16sng0fWAy5JYe0YVABVjiAWDW264RZW9Tr1Oax4qHZKg+SdjULxeOc2YmpX+d0yeITo1HkPF1hN1gHpIPIUDo05ilHUNfR3OkjVCIQK4cFKCq1s8NH+y+13MxUC4Fn1AlQ==" />
+            <add name="IISWASOnlyAesProvider" type="Microsoft.ApplicationHost.AesProtectedConfigurationProvider" description="Uses an AES session key to encrypt and decrypt" keyContainerName="iisWasKey" cspProviderName="" useOAEP="false" useMachineContainer="true" sessionKey="AQIAAA5mAAAApAAALmU8lTC+v2qtfQiiiquvvLpUQqKLEXs+jSKoWCM/uPhyB++k4dwug19mGidNK5FYiWK2KYE1yhjVJcbp12E98Q0R2nT7eBiCMY2JairxQ591rqABK7keGaIjwH7PwGzSpILl3RJ4YFvJ/7ZXEJxeDZIjW8ZxWVXx+/VyHs9U3WguLEkgMUX3jrxJi8LouxaIVPJAv/YQ1ZCWs8zImitxX/C/7o7yaIxznfsN5nGQzQfpUDPeby99aw2zPVTtZI2LaWIBON8guABvZ6JtJVDWmfdK6sodbnwdZkr6/Z2rfvamT1dC1SpQrGG7ulR/f9/GXvCaW10ZVKxekBF/CYlNMg==" />
+        </providers>
+    </configProtectedData>
+
+    <system.applicationHost>
+
+        <applicationPools>
+            <add name="Clr4IntegratedAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
+            <add name="Clr4ClassicAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
+            <add name="Clr2IntegratedAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
+            <add name="Clr2ClassicAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
+            <add name="UnmanagedClassicAppPool" managedRuntimeVersion="" managedPipelineMode="Classic" autoStart="true" />
+            <applicationPoolDefaults managedRuntimeVersion="v4.0">
+                <processModel loadUserProfile="true" setProfileEnvironment="false" />
+            </applicationPoolDefaults>
+        </applicationPools>
+
+        <!--
+
+          The <listenerAdapters> section defines the protocols with which the
+          Windows Process Activation Service (WAS) binds.
+
+        -->
+        <listenerAdapters>
+            <add name="http" />
+        </listenerAdapters>
+
+        <sites>
+            <site name="WebSite1" id="1" serverAutoStart="true">
+                <application path="/">
+                    <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
+                </application>
+                <bindings>
+                    <binding protocol="http" bindingInformation=":8080:localhost" />
+                </bindings>
+            </site>
+            <siteDefaults>
+                <!-- To enable logging, please change the below attribute "enabled" to "true" -->
+                <logFile logFormat="W3C" directory="%AppData%\Microsoft\IISExpressLogs" enabled="false"/>
+                <traceFailedRequestsLogging directory="%AppData%\Microsoft" enabled="false" maxLogFileSizeKB="1024" />
+            </siteDefaults>
+            <applicationDefaults applicationPool="Clr4IntegratedAppPool" />
+            <virtualDirectoryDefaults allowSubDirConfig="true" />
+        </sites>
+
+        <webLimits />
+
+    </system.applicationHost>
+
+    <system.webServer>
+
+        <serverRuntime />
+
+        <asp scriptErrorSentToBrowser="true">
+            <cache diskTemplateCacheDirectory="%TEMP%\iisexpress\ASP Compiled Templates" />
+            <limits />
+        </asp>
+
+        <caching enabled="true" enableKernelCache="true">
+        </caching>
+
+        <cgi />
+
+        <defaultDocument enabled="true">
+            <files>
+                <add value="Default.htm" />
+                <add value="Default.asp" />
+                <add value="index.htm" />
+                <add value="index.html" />
+                <add value="iisstart.htm" />
+                <add value="default.aspx" />
+            </files>
+        </defaultDocument>
+
+        <directoryBrowse enabled="false" />
+
+        <fastCgi />
+
+        <!--
+
+          The <globalModules> section defines all native-code modules.
+          To enable a module, specify it in the <modules> section.
+
+        -->
+        <globalModules>
+            <add name="HttpLoggingModule" image="%IIS_BIN%\loghttp.dll" />
+            <add name="UriCacheModule" image="%IIS_BIN%\cachuri.dll" />
+            <add name="TokenCacheModule" image="%IIS_BIN%\cachtokn.dll" />
+            <add name="DynamicCompressionModule" image="%IIS_BIN%\compdyn.dll" />
+            <add name="StaticCompressionModule" image="%IIS_BIN%\compstat.dll" />
+            <add name="DefaultDocumentModule" image="%IIS_BIN%\defdoc.dll" />
+            <add name="DirectoryListingModule" image="%IIS_BIN%\dirlist.dll" />
+            <add name="ProtocolSupportModule" image="%IIS_BIN%\protsup.dll" />
+            <add name="HttpRedirectionModule" image="%IIS_BIN%\redirect.dll" />
+            <add name="ServerSideIncludeModule" image="%IIS_BIN%\iis_ssi.dll" />
+            <add name="StaticFileModule" image="%IIS_BIN%\static.dll" />
+            <add name="AnonymousAuthenticationModule" image="%IIS_BIN%\authanon.dll" />
+            <add name="CertificateMappingAuthenticationModule" image="%IIS_BIN%\authcert.dll" />
+            <add name="UrlAuthorizationModule" image="%IIS_BIN%\urlauthz.dll" />
+            <add name="BasicAuthenticationModule" image="%IIS_BIN%\authbas.dll" />
+            <add name="WindowsAuthenticationModule" image="%IIS_BIN%\authsspi.dll" />
+            <add name="IISCertificateMappingAuthenticationModule" image="%IIS_BIN%\authmap.dll" />
+            <add name="IpRestrictionModule" image="%IIS_BIN%\iprestr.dll" />
+            <add name="DynamicIpRestrictionModule" image="%IIS_BIN%\diprestr.dll" />
+            <add name="RequestFilteringModule" image="%IIS_BIN%\modrqflt.dll" />
+            <add name="CustomLoggingModule" image="%IIS_BIN%\logcust.dll" />
+            <add name="CustomErrorModule" image="%IIS_BIN%\custerr.dll" />
+            <add name="FailedRequestsTracingModule" image="%IIS_BIN%\iisfreb.dll" />
+            <add name="RequestMonitorModule" image="%IIS_BIN%\iisreqs.dll" />
+            <add name="IsapiModule" image="%IIS_BIN%\isapi.dll" />
+            <add name="IsapiFilterModule" image="%IIS_BIN%\filter.dll" />
+            <add name="CgiModule" image="%IIS_BIN%\cgi.dll" />
+            <add name="FastCgiModule" image="%IIS_BIN%\iisfcgi.dll" />
+<!--            <add name="WebDAVModule" image="%IIS_BIN%\webdav.dll" /> -->
+            <add name="RewriteModule" image="%IIS_BIN%\rewrite.dll" />
+            <add name="ConfigurationValidationModule" image="%IIS_BIN%\validcfg.dll" />
+            <add name="WebSocketModule" image="%IIS_BIN%\iiswsock.dll" />
+            <add name="WebMatrixSupportModule" image="%IIS_BIN%\webmatrixsup.dll" />
+            <add name="ManagedEngine" image="%windir%\Microsoft.NET\Framework\v2.0.50727\webengine.dll" preCondition="integratedMode,runtimeVersionv2.0,bitness32" />
+            <add name="ManagedEngine64" image="%windir%\Microsoft.NET\Framework64\v2.0.50727\webengine.dll" preCondition="integratedMode,runtimeVersionv2.0,bitness64" />
+            <add name="ManagedEngineV4.0_32bit" image="%windir%\Microsoft.NET\Framework\v4.0.30319\webengine4.dll" preCondition="integratedMode,runtimeVersionv4.0,bitness32" />
+            <add name="ManagedEngineV4.0_64bit" image="%windir%\Microsoft.NET\Framework64\v4.0.30319\webengine4.dll" preCondition="integratedMode,runtimeVersionv4.0,bitness64" />
+            <add name="ApplicationInitializationModule" image="%IIS_BIN%\warmup.dll" />
+        </globalModules>
+
+        <httpCompression directory="%TEMP%">
+            <scheme name="gzip" dll="%IIS_BIN%\gzip.dll" />
+            <dynamicTypes>
+                <add mimeType="text/*" enabled="true" />
+                <add mimeType="message/*" enabled="true" />
+                <add mimeType="application/x-javascript" enabled="true" />
+                <add mimeType="application/javascript" enabled="true" />
+                <add mimeType="*/*" enabled="false" />
+            </dynamicTypes>
+            <staticTypes>
+                <add mimeType="text/*" enabled="true" />
+                <add mimeType="message/*" enabled="true" />
+                <add mimeType="application/javascript" enabled="true" />
+                <add mimeType="application/atom+xml" enabled="true" />
+                <add mimeType="application/xaml+xml" enabled="true" />
+                <add mimeType="image/svg+xml" enabled="true" />
+                <add mimeType="*/*" enabled="false" />
+            </staticTypes>
+        </httpCompression>
+
+        <httpErrors lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath">
+            <error statusCode="401" prefixLanguageFilePath="%IIS_BIN%\custerr" path="401.htm" />
+            <error statusCode="403" prefixLanguageFilePath="%IIS_BIN%\custerr" path="403.htm" />
+            <error statusCode="404" prefixLanguageFilePath="%IIS_BIN%\custerr" path="404.htm" />
+            <error statusCode="405" prefixLanguageFilePath="%IIS_BIN%\custerr" path="405.htm" />
+            <error statusCode="406" prefixLanguageFilePath="%IIS_BIN%\custerr" path="406.htm" />
+            <error statusCode="412" prefixLanguageFilePath="%IIS_BIN%\custerr" path="412.htm" />
+            <error statusCode="500" prefixLanguageFilePath="%IIS_BIN%\custerr" path="500.htm" />
+            <error statusCode="501" prefixLanguageFilePath="%IIS_BIN%\custerr" path="501.htm" />
+            <error statusCode="502" prefixLanguageFilePath="%IIS_BIN%\custerr" path="502.htm" />
+        </httpErrors>
+
+        <httpLogging dontLog="false" />
+
+        <httpProtocol>
+            <customHeaders>
+                <clear />
+                <add name="X-Powered-By" value="ASP.NET" />
+            </customHeaders>
+            <redirectHeaders>
+                <clear />
+            </redirectHeaders>
+        </httpProtocol>
+
+        <httpRedirect enabled="false" />
+
+        <httpTracing />
+
+        <isapiFilters>
+            <filter name="ASP.Net_2.0.50727-64" path="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="bitness64,runtimeVersionv2.0" />
+            <filter name="ASP.Net_2.0.50727.0" path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="bitness32,runtimeVersionv2.0" />
+            <filter name="ASP.Net_2.0_for_v1.1" path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="runtimeVersionv1.1" />
+            <filter name="ASP.Net_4.0_32bit" path="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_filter.dll" enableCache="true" preCondition="bitness32,runtimeVersionv4.0" />
+            <filter name="ASP.Net_4.0_64bit" path="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_filter.dll" enableCache="true" preCondition="bitness64,runtimeVersionv4.0" />
+        </isapiFilters>
+
+        <odbcLogging />
+
+        <security>
+
+            <access sslFlags="None" />
+
+            <applicationDependencies>
+                <application name="Active Server Pages" groupId="ASP" />
+            </applicationDependencies>
+
+            <authentication>
+
+                <anonymousAuthentication enabled="true" userName="" />
+
+                <basicAuthentication enabled="false" />
+
+                <clientCertificateMappingAuthentication enabled="false" />
+
+                <digestAuthentication enabled="false" />
+
+                <iisClientCertificateMappingAuthentication enabled="false">
+                </iisClientCertificateMappingAuthentication>
+
+                <windowsAuthentication enabled="false">
+                    <providers>
+                        <add value="Negotiate" />
+                        <add value="NTLM" />
+                    </providers>
+                </windowsAuthentication>
+
+            </authentication>
+
+            <authorization>
+                <add accessType="Allow" users="*" />
+            </authorization>
+
+            <ipSecurity allowUnlisted="true" />
+
+            <isapiCgiRestriction notListedIsapisAllowed="true" notListedCgisAllowed="true">
+                <add path="%windir%\Microsoft.NET\Framework64\v4.0.30319\webengine4.dll" allowed="true" groupId="ASP.NET_v4.0" description="ASP.NET_v4.0" />
+                <add path="%windir%\Microsoft.NET\Framework\v4.0.30319\webengine4.dll" allowed="true" groupId="ASP.NET_v4.0" description="ASP.NET_v4.0" />
+                <add path="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" allowed="true" groupId="ASP.NET v2.0.50727" description="ASP.NET v2.0.50727" />
+                <add path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" allowed="true" groupId="ASP.NET v2.0.50727" description="ASP.NET v2.0.50727" />
+            </isapiCgiRestriction>
+
+            <requestFiltering>
+                <fileExtensions allowUnlisted="true" applyToWebDAV="true">
+                    <add fileExtension=".asa" allowed="false" />
+                    <add fileExtension=".asax" allowed="false" />
+                    <add fileExtension=".ascx" allowed="false" />
+                    <add fileExtension=".master" allowed="false" />
+                    <add fileExtension=".skin" allowed="false" />
+                    <add fileExtension=".browser" allowed="false" />
+                    <add fileExtension=".sitemap" allowed="false" />
+                    <add fileExtension=".config" allowed="false" />
+                    <add fileExtension=".cs" allowed="false" />
+                    <add fileExtension=".csproj" allowed="false" />
+                    <add fileExtension=".vb" allowed="false" />
+                    <add fileExtension=".vbproj" allowed="false" />
+                    <add fileExtension=".webinfo" allowed="false" />
+                    <add fileExtension=".licx" allowed="false" />
+                    <add fileExtension=".resx" allowed="false" />
+                    <add fileExtension=".resources" allowed="false" />
+                    <add fileExtension=".mdb" allowed="false" />
+                    <add fileExtension=".vjsproj" allowed="false" />
+                    <add fileExtension=".java" allowed="false" />
+                    <add fileExtension=".jsl" allowed="false" />
+                    <add fileExtension=".ldb" allowed="false" />
+                    <add fileExtension=".dsdgm" allowed="false" />
+                    <add fileExtension=".ssdgm" allowed="false" />
+                    <add fileExtension=".lsad" allowed="false" />
+                    <add fileExtension=".ssmap" allowed="false" />
+                    <add fileExtension=".cd" allowed="false" />
+                    <add fileExtension=".dsprototype" allowed="false" />
+                    <add fileExtension=".lsaprototype" allowed="false" />
+                    <add fileExtension=".sdm" allowed="false" />
+                    <add fileExtension=".sdmDocument" allowed="false" />
+                    <add fileExtension=".mdf" allowed="false" />
+                    <add fileExtension=".ldf" allowed="false" />
+                    <add fileExtension=".ad" allowed="false" />
+                    <add fileExtension=".dd" allowed="false" />
+                    <add fileExtension=".ldd" allowed="false" />
+                    <add fileExtension=".sd" allowed="false" />
+                    <add fileExtension=".adprototype" allowed="false" />
+                    <add fileExtension=".lddprototype" allowed="false" />
+                    <add fileExtension=".exclude" allowed="false" />
+                    <add fileExtension=".refresh" allowed="false" />
+                    <add fileExtension=".compiled" allowed="false" />
+                    <add fileExtension=".msgx" allowed="false" />
+                    <add fileExtension=".vsdisco" allowed="false" />
+                    <add fileExtension=".rules" allowed="false" />
+                </fileExtensions>
+                <verbs allowUnlisted="true" applyToWebDAV="true" />
+                <hiddenSegments applyToWebDAV="true">
+                    <add segment="web.config" />
+                    <add segment="bin" />
+                    <add segment="App_code" />
+                    <add segment="App_GlobalResources" />
+                    <add segment="App_LocalResources" />
+                    <add segment="App_WebReferences" />
+                    <add segment="App_Data" />
+                    <add segment="App_Browsers" />
+                </hiddenSegments>
+            </requestFiltering>
+
+        </security>
+
+        <serverSideInclude ssiExecDisable="false" />
+
+        <staticContent lockAttributes="isDocFooterFileName">
+            <mimeMap fileExtension=".323" mimeType="text/h323" />
+            <mimeMap fileExtension=".3g2" mimeType="video/3gpp2" />
+            <mimeMap fileExtension=".3gp2" mimeType="video/3gpp2" />
+            <mimeMap fileExtension=".3gp" mimeType="video/3gpp" />
+            <mimeMap fileExtension=".3gpp" mimeType="video/3gpp" />
+            <mimeMap fileExtension=".aac" mimeType="audio/aac" />
+            <mimeMap fileExtension=".aaf" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".aca" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".accdb" mimeType="application/msaccess" />
+            <mimeMap fileExtension=".accde" mimeType="application/msaccess" />
+            <mimeMap fileExtension=".accdt" mimeType="application/msaccess" />
+            <mimeMap fileExtension=".acx" mimeType="application/internet-property-stream" />
+            <mimeMap fileExtension=".adt" mimeType="audio/vnd.dlna.adts" />
+            <mimeMap fileExtension=".adts" mimeType="audio/vnd.dlna.adts" />
+            <mimeMap fileExtension=".afm" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".ai" mimeType="application/postscript" />
+            <mimeMap fileExtension=".aif" mimeType="audio/x-aiff" />
+            <mimeMap fileExtension=".aifc" mimeType="audio/aiff" />
+            <mimeMap fileExtension=".aiff" mimeType="audio/aiff" />
+            <mimeMap fileExtension=".appcache" mimeType="text/cache-manifest" />
+            <mimeMap fileExtension=".application" mimeType="application/x-ms-application" />
+            <mimeMap fileExtension=".art" mimeType="image/x-jg" />
+            <mimeMap fileExtension=".asd" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".asf" mimeType="video/x-ms-asf" />
+            <mimeMap fileExtension=".asi" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".asm" mimeType="text/plain" />
+            <mimeMap fileExtension=".asr" mimeType="video/x-ms-asf" />
+            <mimeMap fileExtension=".asx" mimeType="video/x-ms-asf" />
+            <mimeMap fileExtension=".atom" mimeType="application/atom+xml" />
+            <mimeMap fileExtension=".au" mimeType="audio/basic" />
+            <mimeMap fileExtension=".avi" mimeType="video/avi" />
+            <mimeMap fileExtension=".axs" mimeType="application/olescript" />
+            <mimeMap fileExtension=".bas" mimeType="text/plain" />
+            <mimeMap fileExtension=".bcpio" mimeType="application/x-bcpio" />
+            <mimeMap fileExtension=".bin" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".bmp" mimeType="image/bmp" />
+            <mimeMap fileExtension=".c" mimeType="text/plain" />
+            <mimeMap fileExtension=".cab" mimeType="application/vnd.ms-cab-compressed" />
+            <mimeMap fileExtension=".calx" mimeType="application/vnd.ms-office.calx" />
+            <mimeMap fileExtension=".cat" mimeType="application/vnd.ms-pki.seccat" />
+            <mimeMap fileExtension=".cdf" mimeType="application/x-cdf" />
+            <mimeMap fileExtension=".chm" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".class" mimeType="application/x-java-applet" />
+            <mimeMap fileExtension=".clp" mimeType="application/x-msclip" />
+            <mimeMap fileExtension=".cmx" mimeType="image/x-cmx" />
+            <mimeMap fileExtension=".cnf" mimeType="text/plain" />
+            <mimeMap fileExtension=".cod" mimeType="image/cis-cod" />
+            <mimeMap fileExtension=".cpio" mimeType="application/x-cpio" />
+            <mimeMap fileExtension=".cpp" mimeType="text/plain" />
+            <mimeMap fileExtension=".crd" mimeType="application/x-mscardfile" />
+            <mimeMap fileExtension=".crl" mimeType="application/pkix-crl" />
+            <mimeMap fileExtension=".crt" mimeType="application/x-x509-ca-cert" />
+            <mimeMap fileExtension=".csh" mimeType="application/x-csh" />
+            <mimeMap fileExtension=".css" mimeType="text/css" />
+            <mimeMap fileExtension=".csv" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".cur" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".dcr" mimeType="application/x-director" />
+            <mimeMap fileExtension=".deploy" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".der" mimeType="application/x-x509-ca-cert" />
+            <mimeMap fileExtension=".dib" mimeType="image/bmp" />
+            <mimeMap fileExtension=".dir" mimeType="application/x-director" />
+            <mimeMap fileExtension=".disco" mimeType="text/xml" />
+            <mimeMap fileExtension=".dll" mimeType="application/x-msdownload" />
+            <mimeMap fileExtension=".dll.config" mimeType="text/xml" />
+            <mimeMap fileExtension=".dlm" mimeType="text/dlm" />
+            <mimeMap fileExtension=".doc" mimeType="application/msword" />
+            <mimeMap fileExtension=".docm" mimeType="application/vnd.ms-word.document.macroEnabled.12" />
+            <mimeMap fileExtension=".docx" mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document" />
+            <mimeMap fileExtension=".dot" mimeType="application/msword" />
+            <mimeMap fileExtension=".dotm" mimeType="application/vnd.ms-word.template.macroEnabled.12" />
+            <mimeMap fileExtension=".dotx" mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.template" />
+            <mimeMap fileExtension=".dsp" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".dtd" mimeType="text/xml" />
+            <mimeMap fileExtension=".dvi" mimeType="application/x-dvi" />
+            <mimeMap fileExtension=".dvr-ms" mimeType="video/x-ms-dvr" />
+            <mimeMap fileExtension=".dwf" mimeType="drawing/x-dwf" />
+            <mimeMap fileExtension=".dwp" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".dxr" mimeType="application/x-director" />
+            <mimeMap fileExtension=".eml" mimeType="message/rfc822" />
+            <mimeMap fileExtension=".emz" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
+            <mimeMap fileExtension=".eps" mimeType="application/postscript" />
+            <mimeMap fileExtension=".esd" mimeType="application/vnd.ms-cab-compressed" />
+            <mimeMap fileExtension=".etx" mimeType="text/x-setext" />
+            <mimeMap fileExtension=".evy" mimeType="application/envoy" />
+            <mimeMap fileExtension=".exe" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".exe.config" mimeType="text/xml" />
+            <mimeMap fileExtension=".fdf" mimeType="application/vnd.fdf" />
+            <mimeMap fileExtension=".fif" mimeType="application/fractals" />
+            <mimeMap fileExtension=".fla" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".flr" mimeType="x-world/x-vrml" />
+            <mimeMap fileExtension=".flv" mimeType="video/x-flv" />
+            <mimeMap fileExtension=".gif" mimeType="image/gif" />
+            <mimeMap fileExtension=".glb" mimeType="model/gltf-binary" />
+            <mimeMap fileExtension=".gtar" mimeType="application/x-gtar" />
+            <mimeMap fileExtension=".gz" mimeType="application/x-gzip" />
+            <mimeMap fileExtension=".h" mimeType="text/plain" />
+            <mimeMap fileExtension=".hdf" mimeType="application/x-hdf" />
+            <mimeMap fileExtension=".hdml" mimeType="text/x-hdml" />
+            <mimeMap fileExtension=".hhc" mimeType="application/x-oleobject" />
+            <mimeMap fileExtension=".hhk" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".hhp" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".hlp" mimeType="application/winhlp" />
+            <mimeMap fileExtension=".hqx" mimeType="application/mac-binhex40" />
+            <mimeMap fileExtension=".hta" mimeType="application/hta" />
+            <mimeMap fileExtension=".htc" mimeType="text/x-component" />
+            <mimeMap fileExtension=".htm" mimeType="text/html" />
+            <mimeMap fileExtension=".html" mimeType="text/html" />
+            <mimeMap fileExtension=".htt" mimeType="text/webviewhtml" />
+            <mimeMap fileExtension=".hxt" mimeType="text/html" />
+            <mimeMap fileExtension=".ico" mimeType="image/x-icon" />
+            <mimeMap fileExtension=".ics" mimeType="text/calendar" />
+            <mimeMap fileExtension=".ief" mimeType="image/ief" />
+            <mimeMap fileExtension=".iii" mimeType="application/x-iphone" />
+            <mimeMap fileExtension=".inf" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".ins" mimeType="application/x-internet-signup" />
+            <mimeMap fileExtension=".isp" mimeType="application/x-internet-signup" />
+            <mimeMap fileExtension=".IVF" mimeType="video/x-ivf" />
+            <mimeMap fileExtension=".jar" mimeType="application/java-archive" />
+            <mimeMap fileExtension=".java" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".jck" mimeType="application/liquidmotion" />
+            <mimeMap fileExtension=".jcz" mimeType="application/liquidmotion" />
+            <mimeMap fileExtension=".jfif" mimeType="image/pjpeg" />
+            <mimeMap fileExtension=".jpb" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".jpe" mimeType="image/jpeg" />
+            <mimeMap fileExtension=".jpeg" mimeType="image/jpeg" />
+            <mimeMap fileExtension=".jpg" mimeType="image/jpeg" />
+            <mimeMap fileExtension=".js" mimeType="application/javascript" />
+            <mimeMap fileExtension=".json" mimeType="application/json" />
+            <mimeMap fileExtension=".jsonld" mimeType="application/ld+json" />
+            <mimeMap fileExtension=".jsx" mimeType="text/jscript" />
+            <mimeMap fileExtension=".latex" mimeType="application/x-latex" />
+            <mimeMap fileExtension=".less" mimeType="text/css" />
+            <mimeMap fileExtension=".lit" mimeType="application/x-ms-reader" />
+            <mimeMap fileExtension=".lpk" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".lsf" mimeType="video/x-la-asf" />
+            <mimeMap fileExtension=".lsx" mimeType="video/x-la-asf" />
+            <mimeMap fileExtension=".lzh" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".m13" mimeType="application/x-msmediaview" />
+            <mimeMap fileExtension=".m14" mimeType="application/x-msmediaview" />
+            <mimeMap fileExtension=".m1v" mimeType="video/mpeg" />
+            <mimeMap fileExtension=".m2ts" mimeType="video/vnd.dlna.mpeg-tts" />
+            <mimeMap fileExtension=".m3u" mimeType="audio/x-mpegurl" />
+            <mimeMap fileExtension=".m4a" mimeType="audio/mp4" />
+            <mimeMap fileExtension=".m4v" mimeType="video/mp4" />
+            <mimeMap fileExtension=".man" mimeType="application/x-troff-man" />
+            <mimeMap fileExtension=".manifest" mimeType="application/x-ms-manifest" />
+            <mimeMap fileExtension=".map" mimeType="text/plain" />
+            <mimeMap fileExtension=".mdb" mimeType="application/x-msaccess" />
+            <mimeMap fileExtension=".mdp" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".me" mimeType="application/x-troff-me" />
+            <mimeMap fileExtension=".mht" mimeType="message/rfc822" />
+            <mimeMap fileExtension=".mhtml" mimeType="message/rfc822" />
+            <mimeMap fileExtension=".mid" mimeType="audio/mid" />
+            <mimeMap fileExtension=".midi" mimeType="audio/mid" />
+            <mimeMap fileExtension=".mix" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".mmf" mimeType="application/x-smaf" />
+            <mimeMap fileExtension=".mno" mimeType="text/xml" />
+            <mimeMap fileExtension=".mny" mimeType="application/x-msmoney" />
+            <mimeMap fileExtension=".mov" mimeType="video/quicktime" />
+            <mimeMap fileExtension=".movie" mimeType="video/x-sgi-movie" />
+            <mimeMap fileExtension=".mp2" mimeType="video/mpeg" />
+            <mimeMap fileExtension=".mp3" mimeType="audio/mpeg" />
+            <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
+            <mimeMap fileExtension=".mp4v" mimeType="video/mp4" />
+            <mimeMap fileExtension=".mpa" mimeType="video/mpeg" />
+            <mimeMap fileExtension=".mpe" mimeType="video/mpeg" />
+            <mimeMap fileExtension=".mpeg" mimeType="video/mpeg" />
+            <mimeMap fileExtension=".mpg" mimeType="video/mpeg" />
+            <mimeMap fileExtension=".mpp" mimeType="application/vnd.ms-project" />
+            <mimeMap fileExtension=".mpv2" mimeType="video/mpeg" />
+            <mimeMap fileExtension=".ms" mimeType="application/x-troff-ms" />
+            <mimeMap fileExtension=".msi" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".mso" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".mvb" mimeType="application/x-msmediaview" />
+            <mimeMap fileExtension=".mvc" mimeType="application/x-miva-compiled" />
+            <mimeMap fileExtension=".nc" mimeType="application/x-netcdf" />
+            <mimeMap fileExtension=".nsc" mimeType="video/x-ms-asf" />
+            <mimeMap fileExtension=".nws" mimeType="message/rfc822" />
+            <mimeMap fileExtension=".ocx" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".oda" mimeType="application/oda" />
+            <mimeMap fileExtension=".odc" mimeType="text/x-ms-odc" />
+            <mimeMap fileExtension=".ods" mimeType="application/oleobject" />
+            <mimeMap fileExtension=".oga" mimeType="audio/ogg" />
+            <mimeMap fileExtension=".ogg" mimeType="video/ogg" />
+            <mimeMap fileExtension=".ogv" mimeType="video/ogg" />
+            <mimeMap fileExtension=".one" mimeType="application/onenote" />
+            <mimeMap fileExtension=".onea" mimeType="application/onenote" />
+            <mimeMap fileExtension=".onetoc" mimeType="application/onenote" />
+            <mimeMap fileExtension=".onetoc2" mimeType="application/onenote" />
+            <mimeMap fileExtension=".onetmp" mimeType="application/onenote" />
+            <mimeMap fileExtension=".onepkg" mimeType="application/onenote" />
+            <mimeMap fileExtension=".osdx" mimeType="application/opensearchdescription+xml" />
+            <mimeMap fileExtension=".otf" mimeType="font/otf" />
+            <mimeMap fileExtension=".p10" mimeType="application/pkcs10" />
+            <mimeMap fileExtension=".p12" mimeType="application/x-pkcs12" />
+            <mimeMap fileExtension=".p7b" mimeType="application/x-pkcs7-certificates" />
+            <mimeMap fileExtension=".p7c" mimeType="application/pkcs7-mime" />
+            <mimeMap fileExtension=".p7m" mimeType="application/pkcs7-mime" />
+            <mimeMap fileExtension=".p7r" mimeType="application/x-pkcs7-certreqresp" />
+            <mimeMap fileExtension=".p7s" mimeType="application/pkcs7-signature" />
+            <mimeMap fileExtension=".pbm" mimeType="image/x-portable-bitmap" />
+            <mimeMap fileExtension=".pcx" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".pcz" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".pdf" mimeType="application/pdf" />
+            <mimeMap fileExtension=".pfb" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".pfm" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".pfx" mimeType="application/x-pkcs12" />
+            <mimeMap fileExtension=".pgm" mimeType="image/x-portable-graymap" />
+            <mimeMap fileExtension=".pko" mimeType="application/vnd.ms-pki.pko" />
+            <mimeMap fileExtension=".pma" mimeType="application/x-perfmon" />
+            <mimeMap fileExtension=".pmc" mimeType="application/x-perfmon" />
+            <mimeMap fileExtension=".pml" mimeType="application/x-perfmon" />
+            <mimeMap fileExtension=".pmr" mimeType="application/x-perfmon" />
+            <mimeMap fileExtension=".pmw" mimeType="application/x-perfmon" />
+            <mimeMap fileExtension=".png" mimeType="image/png" />
+            <mimeMap fileExtension=".pnm" mimeType="image/x-portable-anymap" />
+            <mimeMap fileExtension=".pnz" mimeType="image/png" />
+            <mimeMap fileExtension=".pot" mimeType="application/vnd.ms-powerpoint" />
+            <mimeMap fileExtension=".potm" mimeType="application/vnd.ms-powerpoint.template.macroEnabled.12" />
+            <mimeMap fileExtension=".potx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.template" />
+            <mimeMap fileExtension=".ppam" mimeType="application/vnd.ms-powerpoint.addin.macroEnabled.12" />
+            <mimeMap fileExtension=".ppm" mimeType="image/x-portable-pixmap" />
+            <mimeMap fileExtension=".pps" mimeType="application/vnd.ms-powerpoint" />
+            <mimeMap fileExtension=".ppsm" mimeType="application/vnd.ms-powerpoint.slideshow.macroEnabled.12" />
+            <mimeMap fileExtension=".ppsx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.slideshow" />
+            <mimeMap fileExtension=".ppt" mimeType="application/vnd.ms-powerpoint" />
+            <mimeMap fileExtension=".pptm" mimeType="application/vnd.ms-powerpoint.presentation.macroEnabled.12" />
+            <mimeMap fileExtension=".pptx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.presentation" />
+            <mimeMap fileExtension=".prf" mimeType="application/pics-rules" />
+            <mimeMap fileExtension=".prm" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".prx" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".ps" mimeType="application/postscript" />
+            <mimeMap fileExtension=".psd" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".psm" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".psp" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".pub" mimeType="application/x-mspublisher" />
+            <mimeMap fileExtension=".qt" mimeType="video/quicktime" />
+            <mimeMap fileExtension=".qtl" mimeType="application/x-quicktimeplayer" />
+            <mimeMap fileExtension=".qxd" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".ra" mimeType="audio/x-pn-realaudio" />
+            <mimeMap fileExtension=".ram" mimeType="audio/x-pn-realaudio" />
+            <mimeMap fileExtension=".rar" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".ras" mimeType="image/x-cmu-raster" />
+            <mimeMap fileExtension=".rf" mimeType="image/vnd.rn-realflash" />
+            <mimeMap fileExtension=".rgb" mimeType="image/x-rgb" />
+            <mimeMap fileExtension=".rm" mimeType="application/vnd.rn-realmedia" />
+            <mimeMap fileExtension=".rmi" mimeType="audio/mid" />
+            <mimeMap fileExtension=".roff" mimeType="application/x-troff" />
+            <mimeMap fileExtension=".rpm" mimeType="audio/x-pn-realaudio-plugin" />
+            <mimeMap fileExtension=".rtf" mimeType="application/rtf" />
+            <mimeMap fileExtension=".rtx" mimeType="text/richtext" />
+            <mimeMap fileExtension=".scd" mimeType="application/x-msschedule" />
+            <mimeMap fileExtension=".sct" mimeType="text/scriptlet" />
+            <mimeMap fileExtension=".sea" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".setpay" mimeType="application/set-payment-initiation" />
+            <mimeMap fileExtension=".setreg" mimeType="application/set-registration-initiation" />
+            <mimeMap fileExtension=".sgml" mimeType="text/sgml" />
+            <mimeMap fileExtension=".sh" mimeType="application/x-sh" />
+            <mimeMap fileExtension=".shar" mimeType="application/x-shar" />
+            <mimeMap fileExtension=".sit" mimeType="application/x-stuffit" />
+            <mimeMap fileExtension=".sldm" mimeType="application/vnd.ms-powerpoint.slide.macroEnabled.12" />
+            <mimeMap fileExtension=".sldx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.slide" />
+            <mimeMap fileExtension=".smd" mimeType="audio/x-smd" />
+            <mimeMap fileExtension=".smi" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".smx" mimeType="audio/x-smd" />
+            <mimeMap fileExtension=".smz" mimeType="audio/x-smd" />
+            <mimeMap fileExtension=".snd" mimeType="audio/basic" />
+            <mimeMap fileExtension=".snp" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".spc" mimeType="application/x-pkcs7-certificates" />
+            <mimeMap fileExtension=".spl" mimeType="application/futuresplash" />
+            <mimeMap fileExtension=".spx" mimeType="audio/ogg" />
+            <mimeMap fileExtension=".src" mimeType="application/x-wais-source" />
+            <mimeMap fileExtension=".ssm" mimeType="application/streamingmedia" />
+            <mimeMap fileExtension=".sst" mimeType="application/vnd.ms-pki.certstore" />
+            <mimeMap fileExtension=".stl" mimeType="application/vnd.ms-pki.stl" />
+            <mimeMap fileExtension=".sv4cpio" mimeType="application/x-sv4cpio" />
+            <mimeMap fileExtension=".sv4crc" mimeType="application/x-sv4crc" />
+            <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
+            <mimeMap fileExtension=".svgz" mimeType="image/svg+xml" />
+            <mimeMap fileExtension=".swf" mimeType="application/x-shockwave-flash" />
+            <mimeMap fileExtension=".t" mimeType="application/x-troff" />
+            <mimeMap fileExtension=".tar" mimeType="application/x-tar" />
+            <mimeMap fileExtension=".tcl" mimeType="application/x-tcl" />
+            <mimeMap fileExtension=".tex" mimeType="application/x-tex" />
+            <mimeMap fileExtension=".texi" mimeType="application/x-texinfo" />
+            <mimeMap fileExtension=".texinfo" mimeType="application/x-texinfo" />
+            <mimeMap fileExtension=".tgz" mimeType="application/x-compressed" />
+            <mimeMap fileExtension=".thmx" mimeType="application/vnd.ms-officetheme" />
+            <mimeMap fileExtension=".thn" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".tif" mimeType="image/tiff" />
+            <mimeMap fileExtension=".tiff" mimeType="image/tiff" />
+            <mimeMap fileExtension=".toc" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".tr" mimeType="application/x-troff" />
+            <mimeMap fileExtension=".trm" mimeType="application/x-msterminal" />
+            <mimeMap fileExtension=".ts" mimeType="video/vnd.dlna.mpeg-tts" />
+            <mimeMap fileExtension=".tsv" mimeType="text/tab-separated-values" />
+            <mimeMap fileExtension=".ttf" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".tts" mimeType="video/vnd.dlna.mpeg-tts" />
+            <mimeMap fileExtension=".txt" mimeType="text/plain" />
+            <mimeMap fileExtension=".u32" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".uls" mimeType="text/iuls" />
+            <mimeMap fileExtension=".ustar" mimeType="application/x-ustar" />
+            <mimeMap fileExtension=".vbs" mimeType="text/vbscript" />
+            <mimeMap fileExtension=".vcf" mimeType="text/x-vcard" />
+            <mimeMap fileExtension=".vcs" mimeType="text/plain" />
+            <mimeMap fileExtension=".vdx" mimeType="application/vnd.ms-visio.viewer" />
+            <mimeMap fileExtension=".vml" mimeType="text/xml" />
+            <mimeMap fileExtension=".vsd" mimeType="application/vnd.visio" />
+            <mimeMap fileExtension=".vss" mimeType="application/vnd.visio" />
+            <mimeMap fileExtension=".vst" mimeType="application/vnd.visio" />
+            <mimeMap fileExtension=".vsto" mimeType="application/x-ms-vsto" />
+            <mimeMap fileExtension=".vsw" mimeType="application/vnd.visio" />
+            <mimeMap fileExtension=".vsx" mimeType="application/vnd.visio" />
+            <mimeMap fileExtension=".vtx" mimeType="application/vnd.visio" />
+            <mimeMap fileExtension=".wasm" mimeType="application/wasm" />
+            <mimeMap fileExtension=".wav" mimeType="audio/wav" />
+            <mimeMap fileExtension=".wax" mimeType="audio/x-ms-wax" />
+            <mimeMap fileExtension=".wbmp" mimeType="image/vnd.wap.wbmp" />
+            <mimeMap fileExtension=".wcm" mimeType="application/vnd.ms-works" />
+            <mimeMap fileExtension=".wdb" mimeType="application/vnd.ms-works" />
+            <mimeMap fileExtension=".webm" mimeType="video/webm" />
+            <mimeMap fileExtension=".wks" mimeType="application/vnd.ms-works" />
+            <mimeMap fileExtension=".wm" mimeType="video/x-ms-wm" />
+            <mimeMap fileExtension=".wma" mimeType="audio/x-ms-wma" />
+            <mimeMap fileExtension=".wmd" mimeType="application/x-ms-wmd" />
+            <mimeMap fileExtension=".wmf" mimeType="application/x-msmetafile" />
+            <mimeMap fileExtension=".wml" mimeType="text/vnd.wap.wml" />
+            <mimeMap fileExtension=".wmlc" mimeType="application/vnd.wap.wmlc" />
+            <mimeMap fileExtension=".wmls" mimeType="text/vnd.wap.wmlscript" />
+            <mimeMap fileExtension=".wmlsc" mimeType="application/vnd.wap.wmlscriptc" />
+            <mimeMap fileExtension=".wmp" mimeType="video/x-ms-wmp" />
+            <mimeMap fileExtension=".wmv" mimeType="video/x-ms-wmv" />
+            <mimeMap fileExtension=".wmx" mimeType="video/x-ms-wmx" />
+            <mimeMap fileExtension=".wmz" mimeType="application/x-ms-wmz" />
+            <mimeMap fileExtension=".woff" mimeType="font/x-woff" />
+            <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
+            <mimeMap fileExtension=".wps" mimeType="application/vnd.ms-works" />
+            <mimeMap fileExtension=".wri" mimeType="application/x-mswrite" />
+            <mimeMap fileExtension=".wrl" mimeType="x-world/x-vrml" />
+            <mimeMap fileExtension=".wrz" mimeType="x-world/x-vrml" />
+            <mimeMap fileExtension=".wsdl" mimeType="text/xml" />
+            <mimeMap fileExtension=".wtv" mimeType="video/x-ms-wtv" />
+            <mimeMap fileExtension=".wvx" mimeType="video/x-ms-wvx" />
+            <mimeMap fileExtension=".x" mimeType="application/directx" />
+            <mimeMap fileExtension=".xaf" mimeType="x-world/x-vrml" />
+            <mimeMap fileExtension=".xaml" mimeType="application/xaml+xml" />
+            <mimeMap fileExtension=".xap" mimeType="application/x-silverlight-app" />
+            <mimeMap fileExtension=".xbap" mimeType="application/x-ms-xbap" />
+            <mimeMap fileExtension=".xbm" mimeType="image/x-xbitmap" />
+            <mimeMap fileExtension=".xdr" mimeType="text/plain" />
+            <mimeMap fileExtension=".xht" mimeType="application/xhtml+xml" />
+            <mimeMap fileExtension=".xhtml" mimeType="application/xhtml+xml" />
+            <mimeMap fileExtension=".xla" mimeType="application/vnd.ms-excel" />
+            <mimeMap fileExtension=".xlam" mimeType="application/vnd.ms-excel.addin.macroEnabled.12" />
+            <mimeMap fileExtension=".xlc" mimeType="application/vnd.ms-excel" />
+            <mimeMap fileExtension=".xlm" mimeType="application/vnd.ms-excel" />
+            <mimeMap fileExtension=".xls" mimeType="application/vnd.ms-excel" />
+            <mimeMap fileExtension=".xlsb" mimeType="application/vnd.ms-excel.sheet.binary.macroEnabled.12" />
+            <mimeMap fileExtension=".xlsm" mimeType="application/vnd.ms-excel.sheet.macroEnabled.12" />
+            <mimeMap fileExtension=".xlsx" mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
+            <mimeMap fileExtension=".xlt" mimeType="application/vnd.ms-excel" />
+            <mimeMap fileExtension=".xltm" mimeType="application/vnd.ms-excel.template.macroEnabled.12" />
+            <mimeMap fileExtension=".xltx" mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.template" />
+            <mimeMap fileExtension=".xlw" mimeType="application/vnd.ms-excel" />
+            <mimeMap fileExtension=".xml" mimeType="text/xml" />
+            <mimeMap fileExtension=".xof" mimeType="x-world/x-vrml" />
+            <mimeMap fileExtension=".xpm" mimeType="image/x-xpixmap" />
+            <mimeMap fileExtension=".xps" mimeType="application/vnd.ms-xpsdocument" />
+            <mimeMap fileExtension=".xsd" mimeType="text/xml" />
+            <mimeMap fileExtension=".xsf" mimeType="text/xml" />
+            <mimeMap fileExtension=".xsl" mimeType="text/xml" />
+            <mimeMap fileExtension=".xslt" mimeType="text/xml" />
+            <mimeMap fileExtension=".xsn" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".xtp" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".xwd" mimeType="image/x-xwindowdump" />
+            <mimeMap fileExtension=".z" mimeType="application/x-compress" />
+            <mimeMap fileExtension=".zip" mimeType="application/x-zip-compressed" />
+        </staticContent>
+
+        <tracing>
+
+            <traceFailedRequests>
+                <add path="*">
+                    <traceAreas>
+                        <add provider="ASP" verbosity="Verbose" />
+                        <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
+                        <add provider="ISAPI Extension" verbosity="Verbose" />
+                        <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module,Rewrite,WebSocket" verbosity="Verbose" />
+                    </traceAreas>
+                    <failureDefinitions statusCodes="200-999" />
+                </add>
+            </traceFailedRequests>
+
+            <traceProviderDefinitions>
+                <add name="WWW Server" guid="{3a2a4e84-4c21-4981-ae10-3fda0d9b0f83}">
+                    <areas>
+                        <clear />
+                        <add name="Authentication" value="2" />
+                        <add name="Security" value="4" />
+                        <add name="Filter" value="8" />
+                        <add name="StaticFile" value="16" />
+                        <add name="CGI" value="32" />
+                        <add name="Compression" value="64" />
+                        <add name="Cache" value="128" />
+                        <add name="RequestNotifications" value="256" />
+                        <add name="Module" value="512" />
+                        <add name="Rewrite" value="1024" />
+                        <add name="FastCGI" value="4096" />
+                        <add name="WebSocket" value="16384" />
+                    </areas>
+                </add>
+                <add name="ASP" guid="{06b94d9a-b15e-456e-a4ef-37c984a2cb4b}">
+                    <areas>
+                        <clear />
+                    </areas>
+                </add>
+                <add name="ISAPI Extension" guid="{a1c2040e-8840-4c31-ba11-9871031a19ea}">
+                    <areas>
+                        <clear />
+                    </areas>
+                </add>
+                <add name="ASPNET" guid="{AFF081FE-0247-4275-9C4E-021F3DC1DA35}">
+                    <areas>
+                        <add name="Infrastructure" value="1" />
+                        <add name="Module" value="2" />
+                        <add name="Page" value="4" />
+                        <add name="AppServices" value="8" />
+                    </areas>
+                </add>
+            </traceProviderDefinitions>
+
+        </tracing>
+
+        <urlCompression />
+
+        <validation />
+        <webdav>
+            <globalSettings>
+                <propertyStores>
+                    <add name="webdav_simple_prop" image="%IIS_BIN%\webdav_simple_prop.dll" image32="%IIS_BIN%\webdav_simple_prop.dll" />
+                </propertyStores>
+                <lockStores>
+                    <add name="webdav_simple_lock" image="%IIS_BIN%\webdav_simple_lock.dll" image32="%IIS_BIN%\webdav_simple_lock.dll" />
+                </lockStores>
+
+            </globalSettings>
+            <authoring>
+                <locks enabled="true" lockStore="webdav_simple_lock" />
+            </authoring>
+            <authoringRules />
+        </webdav>
+        <webSocket />
+        <applicationInitialization />
+
+    </system.webServer>
+    <location path="" overrideMode="Allow">
+        <system.webServer>
+            <modules>
+                <add name="IsapiFilterModule" lockItem="true" />
+                <add name="BasicAuthenticationModule" lockItem="true" />
+                <add name="IsapiModule" lockItem="true" />
+                <add name="HttpLoggingModule" lockItem="true" />
+                <add name="DynamicCompressionModule" lockItem="true" />
+                <add name="StaticCompressionModule" lockItem="true" />
+                <add name="DefaultDocumentModule" lockItem="true" />
+                <add name="DirectoryListingModule" lockItem="true" />
+                <add name="ProtocolSupportModule" lockItem="true" />
+                <add name="HttpRedirectionModule" lockItem="true" />
+                <add name="ServerSideIncludeModule" lockItem="true" />
+                <add name="StaticFileModule" lockItem="true" />
+                <add name="AnonymousAuthenticationModule" lockItem="true" />
+                <add name="CertificateMappingAuthenticationModule" lockItem="true" />
+                <add name="UrlAuthorizationModule" lockItem="true" />
+                <add name="WindowsAuthenticationModule" lockItem="true" />
+                <add name="IISCertificateMappingAuthenticationModule" lockItem="true" />
+                <add name="WebMatrixSupportModule" lockItem="true" />
+                <add name="IpRestrictionModule" lockItem="true" />
+                <add name="DynamicIpRestrictionModule" lockItem="true" />
+                <add name="RequestFilteringModule" lockItem="true" />
+                <add name="CustomLoggingModule" lockItem="true" />
+                <add name="CustomErrorModule" lockItem="true" />
+                <add name="FailedRequestsTracingModule" lockItem="true" />
+                <add name="CgiModule" lockItem="true" />
+                <add name="FastCgiModule" lockItem="true" />
+<!--                <add name="WebDAVModule" /> -->
+                <add name="RewriteModule" />
+                <add name="OutputCache" type="System.Web.Caching.OutputCacheModule" preCondition="managedHandler" />
+                <add name="Session" type="System.Web.SessionState.SessionStateModule" preCondition="managedHandler" />
+                <add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule" preCondition="managedHandler" />
+                <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" preCondition="managedHandler" />
+                <add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" preCondition="managedHandler" />
+                <add name="RoleManager" type="System.Web.Security.RoleManagerModule" preCondition="managedHandler" />
+                <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" preCondition="managedHandler" />
+                <add name="FileAuthorization" type="System.Web.Security.FileAuthorizationModule" preCondition="managedHandler" />
+                <add name="AnonymousIdentification" type="System.Web.Security.AnonymousIdentificationModule" preCondition="managedHandler" />
+                <add name="Profile" type="System.Web.Profile.ProfileModule" preCondition="managedHandler" />
+                <add name="UrlMappingsModule" type="System.Web.UrlMappingsModule" preCondition="managedHandler" />
+                <add name="ApplicationInitializationModule" lockItem="true" />
+                <add name="WebSocketModule" lockItem="true" />
+                <add name="ServiceModel-4.0" type="System.ServiceModel.Activation.ServiceHttpModule,System.ServiceModel.Activation,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler,runtimeVersionv4.0" />
+                <add name="ConfigurationValidationModule" lockItem="true" />
+                <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="managedHandler,runtimeVersionv4.0" />
+                <add name="ScriptModule-4.0" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler,runtimeVersionv4.0" />
+                <add name="ServiceModel" type="System.ServiceModel.Activation.HttpModule, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler,runtimeVersionv2.0" />
+            </modules>
+            <handlers accessPolicy="Read, Script">
+<!--                <add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" /> -->
+                <add name="AXD-ISAPI-4.0_64bit" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="PageHandlerFactory-ISAPI-4.0_64bit" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="SimpleHandlerFactory-ISAPI-4.0_64bit" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="WebServiceHandlerFactory-ISAPI-4.0_64bit" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-rem-ISAPI-4.0_64bit" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-soap-ISAPI-4.0_64bit" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="svc-ISAPI-4.0_64bit" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
+                <add name="rules-ISAPI-4.0_64bit" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
+                <add name="xoml-ISAPI-4.0_64bit" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
+                <add name="xamlx-ISAPI-4.0_64bit" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
+                <add name="aspq-ISAPI-4.0_64bit" path="*.aspq" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="cshtm-ISAPI-4.0_64bit" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="cshtml-ISAPI-4.0_64bit" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="vbhtm-ISAPI-4.0_64bit" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="vbhtml-ISAPI-4.0_64bit" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="svc-Integrated" path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="svc-ISAPI-2.0" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
+                <add name="xoml-Integrated" path="*.xoml" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="xoml-ISAPI-2.0" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
+                <add name="rules-Integrated" path="*.rules" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="rules-ISAPI-2.0" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
+                <add name="AXD-ISAPI-4.0_32bit" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="PageHandlerFactory-ISAPI-4.0_32bit" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="SimpleHandlerFactory-ISAPI-4.0_32bit" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="WebServiceHandlerFactory-ISAPI-4.0_32bit" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-rem-ISAPI-4.0_32bit" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-soap-ISAPI-4.0_32bit" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="svc-ISAPI-4.0_32bit" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
+                <add name="rules-ISAPI-4.0_32bit" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
+                <add name="xoml-ISAPI-4.0_32bit" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
+                <add name="xamlx-ISAPI-4.0_32bit" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
+                <add name="aspq-ISAPI-4.0_32bit" path="*.aspq" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="cshtm-ISAPI-4.0_32bit" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="cshtml-ISAPI-4.0_32bit" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="vbhtm-ISAPI-4.0_32bit" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="vbhtml-ISAPI-4.0_32bit" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="TraceHandler-Integrated-4.0" path="trace.axd" verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TraceHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="WebAdminHandler-Integrated-4.0" path="WebAdmin.axd" verb="GET,DEBUG" type="System.Web.Handlers.WebAdminHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="AssemblyResourceLoader-Integrated-4.0" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="PageHandlerFactory-Integrated-4.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="SimpleHandlerFactory-Integrated-4.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.SimpleHandlerFactory" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="WebServiceHandlerFactory-Integrated-4.0" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="HttpRemotingHandlerFactory-rem-Integrated-4.0" path="*.rem" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="HttpRemotingHandlerFactory-soap-Integrated-4.0" path="*.soap" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="svc-Integrated-4.0" path="*.svc" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="rules-Integrated-4.0" path="*.rules" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="xoml-Integrated-4.0" path="*.xoml" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="xamlx-Integrated-4.0" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" type="System.Xaml.Hosting.XamlHttpHandlerFactory, System.Xaml.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="aspq-Integrated-4.0" path="*.aspq" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="cshtm-Integrated-4.0" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="cshtml-Integrated-4.0" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="vbhtm-Integrated-4.0" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="vbhtml-Integrated-4.0" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="ScriptHandlerFactoryAppServices-Integrated-4.0" path="*_AppService.axd" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="ScriptResourceIntegrated-4.0" path="*ScriptResource.axd" verb="GET,HEAD" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="ASPClassic" path="*.asp" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%IIS_BIN%\asp.dll" resourceType="File" />
+                <add name="SecurityCertificate" path="*.cer" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%IIS_BIN%\asp.dll" resourceType="File" />
+                <add name="ISAPI-dll" path="*.dll" verb="*" modules="IsapiModule" resourceType="File" requireAccess="Execute" allowPathInfo="true" />
+                <add name="TraceHandler-Integrated" path="trace.axd" verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TraceHandler" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="WebAdminHandler-Integrated" path="WebAdmin.axd" verb="GET,DEBUG" type="System.Web.Handlers.WebAdminHandler" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="AssemblyResourceLoader-Integrated" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="PageHandlerFactory-Integrated" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="SimpleHandlerFactory-Integrated" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.SimpleHandlerFactory" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="WebServiceHandlerFactory-Integrated" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="System.Web.Services.Protocols.WebServiceHandlerFactory,System.Web.Services,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="HttpRemotingHandlerFactory-rem-Integrated" path="*.rem" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,System.Runtime.Remoting,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="HttpRemotingHandlerFactory-soap-Integrated" path="*.soap" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,System.Runtime.Remoting,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="AXD-ISAPI-2.0" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
+                <add name="PageHandlerFactory-ISAPI-2.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
+                <add name="SimpleHandlerFactory-ISAPI-2.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
+                <add name="WebServiceHandlerFactory-ISAPI-2.0" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-rem-ISAPI-2.0" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-soap-ISAPI-2.0" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
+                <add name="svc-ISAPI-2.0-64" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" />
+                <add name="AXD-ISAPI-2.0-64" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
+                <add name="PageHandlerFactory-ISAPI-2.0-64" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
+                <add name="SimpleHandlerFactory-ISAPI-2.0-64" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
+                <add name="WebServiceHandlerFactory-ISAPI-2.0-64" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-rem-ISAPI-2.0-64" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-soap-ISAPI-2.0-64" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
+                <add name="rules-64-ISAPI-2.0" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" />
+                <add name="xoml-64-ISAPI-2.0" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" />
+                <add name="CGI-exe" path="*.exe" verb="*" modules="CgiModule" resourceType="File" requireAccess="Execute" allowPathInfo="true" />
+                <add name="SSINC-stm" path="*.stm" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" />
+                <add name="SSINC-shtm" path="*.shtm" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" />
+                <add name="SSINC-shtml" path="*.shtml" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" />
+                <add name="TRACEVerbHandler" path="*" verb="TRACE" modules="ProtocolSupportModule" requireAccess="None" />
+                <add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="ProtocolSupportModule" requireAccess="None" />
+                <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />
+                <add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
+            </handlers>
+        </system.webServer>
+    </location>
+</configuration>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json"
new file mode 100644
index 0000000..2729e1d
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json"
@@ -0,0 +1,826 @@
+{
+  "Version": 1,
+  "WorkspaceRootPath": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\",
+  "Documents": [
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_inventory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_inventory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_squarecabinservices\\inventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\inventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FC3D3619-FE28-4CF5-8471-CBBC55649B10}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_isquarecabinservices\\iinventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FC3D3619-FE28-4CF5-8471-CBBC55649B10}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\iinventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_squarecabinservices\\deliveryorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\deliveryorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\outorderjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\outorderjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\customerjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\customerjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\goodsjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\goodsjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_dto\\squarecabin\\towcsdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\squarecabin\\towcsdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_squarecabinservices\\customerservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\customerservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FC3D3619-FE28-4CF5-8471-CBBC55649B10}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_isquarecabinservices\\icustomerservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FC3D3619-FE28-4CF5-8471-CBBC55649B10}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\icustomerservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\inorderjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\inorderjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FC3D3619-FE28-4CF5-8471-CBBC55649B10}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_isquarecabinservices\\icabinorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FC3D3619-FE28-4CF5-8471-CBBC55649B10}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\icabinorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\customercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\customercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\iwarehousetypeservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\iwarehousetypeservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\inventorycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\inventorycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_cabinorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_cabinorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_cabinorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_cabinorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_cabinorder_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_cabinorder_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D8C9593B-B31C-4650-8F44-962E9096A0CF}|WIDESEA_SystemService\\WIDESEA_SystemService.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_systemservice\\sys_menuservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D8C9593B-B31C-4650-8F44-962E9096A0CF}|WIDESEA_SystemService\\WIDESEA_SystemService.csproj|solutionrelative:widesea_systemservice\\sys_menuservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_squarecabinservices\\cabinorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\cabinorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_medicinegoods.cs||{8B382828-6202-11D1-8870-0000F87579D2}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_medicinegoods.cs||{8B382828-6202-11D1-8870-0000F87579D2}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00A5A08A-8A36-4972-8863-7DCF8DBC7978}|WIDESEA_ISystemService\\WIDESEA_ISystemService.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_isystemservice\\isys_menuservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00A5A08A-8A36-4972-8863-7DCF8DBC7978}|WIDESEA_ISystemService\\WIDESEA_ISystemService.csproj|solutionrelative:widesea_isystemservice\\isys_menuservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_deliveryorderdetail_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_deliveryorderdetail_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\index.html||{40D31677-CBC0-4297-A9EF-89D907823A98}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\index.html||{40D31677-CBC0-4297-A9EF-89D907823A98}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_model\\models\\stock\\dt_stockinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\stock\\dt_stockinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_squarecabinservices\\medicinegoodsservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\medicinegoodsservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_squarecabinservices\\deliveryorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\deliveryorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FC3D3619-FE28-4CF5-8471-CBBC55649B10}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_isquarecabinservices\\imedicinegoodsservices.cs||{8B382828-6202-11D1-8870-0000F87579D2}",
+      "RelativeMoniker": "D:0:0:{FC3D3619-FE28-4CF5-8471-CBBC55649B10}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\imedicinegoodsservices.cs||{8B382828-6202-11D1-8870-0000F87579D2}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\deliveryordercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\deliveryordercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\controllers\\system\\sys_menucontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\system\\sys_menucontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_ibasicservice\\ilocationinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|solutionrelative:widesea_ibasicservice\\ilocationinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_ibasicservice\\ibasicservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|solutionrelative:widesea_ibasicservice\\ibasicservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_ibasicservice\\ipalletcodeinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|solutionrelative:widesea_ibasicservice\\ipalletcodeinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_ibasicservice\\imaterielinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|solutionrelative:widesea_ibasicservice\\imaterielinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_ibasicservice\\iwarehouseservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|solutionrelative:widesea_ibasicservice\\iwarehouseservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_ibasicservice\\imaterielcodeinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|solutionrelative:widesea_ibasicservice\\imaterielcodeinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_basicservice\\materielcodeinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|solutionrelative:widesea_basicservice\\materielcodeinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\cabinorderdetailhtycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\cabinorderdetailhtycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\deliveryorderdetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\deliveryorderdetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_squarecabinservices\\deliveryorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\deliveryorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_squarecabinservices\\deliveryorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\deliveryorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_squarecabinservices\\cabinorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\cabinorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_squarecabinservices\\supplierservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\supplierservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_customer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_customer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_dto\\squarecabin\\orderdto.cs||{8B382828-6202-11D1-8870-0000F87579D2}",
+      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\squarecabin\\orderdto.cs||{8B382828-6202-11D1-8870-0000F87579D2}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_deliveryorderdetail.cs||{8B382828-6202-11D1-8870-0000F87579D2}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_deliveryorderdetail.cs||{8B382828-6202-11D1-8870-0000F87579D2}"
+    }
+  ],
+  "DocumentGroupContainers": [
+    {
+      "Orientation": 0,
+      "VerticalTabListWidth": 256,
+      "DocumentGroups": [
+        {
+          "DockedWidth": 200,
+          "SelectedChildIndex": 7,
+          "Children": [
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 2,
+              "Title": "IInventoryServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IInventoryServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IInventoryServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IInventoryServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IInventoryServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvxIAAAAUAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-14T12:31:25.485Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 1,
+              "Title": "InventoryServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\InventoryServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\InventoryServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\InventoryServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\InventoryServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABQAAABXAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-14T01:55:33.624Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 5,
+              "Title": "CustomerJob.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\CustomerJob.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\CustomerJob.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\CustomerJob.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\CustomerJob.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAAJAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-14T10:59:13.53Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 4,
+              "Title": "OutOrderJob.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\OutOrderJob.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\OutOrderJob.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\OutOrderJob.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\OutOrderJob.cs",
+              "ViewState": "AgIAAAMAAAAAAAAAAAAqwBQAAAA3AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T05:47:26.602Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 8,
+              "Title": "CustomerServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CustomerServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\CustomerServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CustomerServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CustomerServices.cs",
+              "ViewState": "AgIAABIAAAAAAAAAAAD4v0YAAAAMAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T06:08:39.732Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 6,
+              "Title": "GoodsJob.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\GoodsJob.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\GoodsJob.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\GoodsJob.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\GoodsJob.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAABpAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:52:38.83Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 0,
+              "Title": "Dt_Inventory.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
+              "ViewState": "AgIAAA4AAAAAAAAAAAAwwBYAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T06:10:22.131Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 7,
+              "Title": "TowcsDto.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
+              "RelativeDocumentMoniker": "WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
+              "RelativeToolTip": "WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
+              "ViewState": "AgIAACoBAAAAAAAAAAAqwDkBAAARAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-14T11:48:42.358Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 3,
+              "Title": "DeliveryOrderServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
+              "ViewState": "AgIAADMCAAAAAAAAAAAswEwCAABGAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T04:35:49.374Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 10,
+              "Title": "InOrderJob.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\InOrderJob.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\InOrderJob.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\InOrderJob.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\InOrderJob.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAxAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T05:47:26.063Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 9,
+              "Title": "ICustomerServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICustomerServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\ICustomerServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICustomerServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\ICustomerServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwsAAAAmAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-14T10:54:17.409Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 14,
+              "Title": "InventoryController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
+              "ViewState": "AgIAAAMAAAAAAAAAAAAAABQAAAA4AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T06:10:42.582Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 11,
+              "Title": "ICabinOrderHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\ICabinOrderHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\ICabinOrderHtyServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-14T10:53:50.179Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 13,
+              "Title": "IWarehouseTypeServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\IWarehouseTypeServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\IWarehouseTypeServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\IWarehouseTypeServices.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\IWarehouseTypeServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAUAAAABAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T06:11:04.804Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 12,
+              "Title": "CustomerController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T06:11:08.628Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 17,
+              "Title": "Dt_CabinOrder_Hty.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-14T07:32:30.704Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 15,
+              "Title": "Dt_CabinOrderDetail.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
+              "ViewState": "AgIAACsAAAAAAAAAAAAAAEAAAAABAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T05:08:59.341Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 16,
+              "Title": "Dt_CabinOrder.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
+              "ViewState": "AgIAACUAAAAAAAAAAAAswEQAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-14T01:44:43.285Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 19,
+              "Title": "CabinOrderServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\CabinOrderServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CabinOrderServices.cs",
+              "ViewState": "AgIAAL8AAAAAAAAAAADwv9EAAAAnAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-09T02:40:46.874Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 20,
+              "Title": "Dt_MedicineGoods.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
+              "ViewState": "AgIAAAYAAAAAAAAAAADwvxEAAABRAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T12:57:13.671Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 18,
+              "Title": "Sys_MenuService.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SystemService\\Sys_MenuService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SystemService\\Sys_MenuService.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SystemService\\Sys_MenuService.cs",
+              "RelativeToolTip": "WIDESEA_SystemService\\Sys_MenuService.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:57:27.511Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 21,
+              "Title": "ISys_MenuService.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_ISystemService\\ISys_MenuService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISystemService\\ISys_MenuService.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_ISystemService\\ISys_MenuService.cs",
+              "RelativeToolTip": "WIDESEA_ISystemService\\ISys_MenuService.cs",
+              "ViewState": "AgIAABEAAAAAAAAAAAAUwCAAAAAvAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:57:03.073Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 25,
+              "Title": "MedicineGoodsServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\MedicineGoodsServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\MedicineGoodsServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\MedicineGoodsServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\MedicineGoodsServices.cs",
+              "ViewState": "AgIAABAAAAAAAAAAAAD4vyYAAAAQAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T05:58:19.203Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 23,
+              "Title": "index.html",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\index.html",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\index.html",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\index.html",
+              "RelativeToolTip": "WIDESEA_WMSServer\\index.html",
+              "ViewState": "AgIAAAkAAAAAAAAAAADwvxwAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001512|",
+              "WhenOpened": "2025-10-13T12:37:31.773Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 22,
+              "Title": "Dt_DeliveryOrderDetail_Hty.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail_Hty.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail_Hty.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail_Hty.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail_Hty.cs",
+              "ViewState": "AgIAABQAAAAAAAAAAAA3wCEAAAAtAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-14T01:14:23.529Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 24,
+              "Title": "Dt_StockInfo.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
+              "ViewState": "AgIAAC0AAAAAAAAAAAAqwD4AAAAmAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T15:39:12.988Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 26,
+              "Title": "Program.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Program.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Program.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Program.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Program.cs",
+              "ViewState": "AgIAAGAAAAAAAAAAAAAAAHcAAAAiAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:52:45.999Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 46,
+              "Title": "Dt_DeliveryOrderDetail.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T13:44:19.951Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 27,
+              "Title": "DeliveryOrderHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\DeliveryOrderHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\DeliveryOrderHtyServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T13:14:20.402Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 29,
+              "Title": "DeliveryOrderController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
+              "ViewState": "AgIAABQAAAAAAAAAAAAswCEAAAAoAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T06:11:31.645Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 28,
+              "Title": "IMedicineGoodsServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAA3AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T12:08:51.679Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 33,
+              "Title": "IPalletCodeInfoService.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\IPalletCodeInfoService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_IBasicService\\IPalletCodeInfoService.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\IPalletCodeInfoService.cs",
+              "RelativeToolTip": "WIDESEA_IBasicService\\IPalletCodeInfoService.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:55:36.72Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 31,
+              "Title": "ILocationInfoService.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\ILocationInfoService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_IBasicService\\ILocationInfoService.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\ILocationInfoService.cs",
+              "RelativeToolTip": "WIDESEA_IBasicService\\ILocationInfoService.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvw8AAABFAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:55:37.844Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 32,
+              "Title": "IBasicService.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\IBasicService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_IBasicService\\IBasicService.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\IBasicService.cs",
+              "RelativeToolTip": "WIDESEA_IBasicService\\IBasicService.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:55:38.417Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 30,
+              "Title": "Sys_MenuController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_MenuController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\System\\Sys_MenuController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_MenuController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\System\\Sys_MenuController.cs",
+              "ViewState": "AgIAAA4AAAAAAAAAAAAswCMAAAArAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:57:04.936Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 34,
+              "Title": "IMaterielInfoService.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\IMaterielInfoService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_IBasicService\\IMaterielInfoService.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\IMaterielInfoService.cs",
+              "RelativeToolTip": "WIDESEA_IBasicService\\IMaterielInfoService.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvw4AAAAFAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:55:35.084Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 35,
+              "Title": "IWarehouseService.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\IWarehouseService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_IBasicService\\IWarehouseService.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\IWarehouseService.cs",
+              "RelativeToolTip": "WIDESEA_IBasicService\\IWarehouseService.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:55:34.426Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 36,
+              "Title": "IMaterielCodeInfoService.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\IMaterielCodeInfoService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_IBasicService\\IMaterielCodeInfoService.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\IMaterielCodeInfoService.cs",
+              "RelativeToolTip": "WIDESEA_IBasicService\\IMaterielCodeInfoService.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAFAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:55:14.531Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 37,
+              "Title": "MaterielCodeInfoService.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_BasicService\\MaterielCodeInfoService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_BasicService\\MaterielCodeInfoService.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_BasicService\\MaterielCodeInfoService.cs",
+              "RelativeToolTip": "WIDESEA_BasicService\\MaterielCodeInfoService.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:55:11.67Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 39,
+              "Title": "DeliveryOrderDetailController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T06:11:06.618Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 38,
+              "Title": "CabinOrderDetailHtyController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T06:11:12.363Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 41,
+              "Title": "DeliveryOrderDetailHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderDetailHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\DeliveryOrderDetailHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderDetailHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\DeliveryOrderDetailHtyServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T06:09:05.858Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 40,
+              "Title": "DeliveryOrderDetailServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvxQAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T06:09:03.909Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 42,
+              "Title": "CabinOrderHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\CabinOrderHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CabinOrderHtyServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvw4AAABcAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T06:08:15.727Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 43,
+              "Title": "SupplierServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\SupplierServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\SupplierServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\SupplierServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\SupplierServices.cs",
+              "ViewState": "AgIAAAwAAAAAAAAAAAAAAGMAAAANAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T05:58:46.664Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 45,
+              "Title": "OrderDto.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\OrderDto.cs",
+              "RelativeDocumentMoniker": "WIDESEA_DTO\\SquareCabin\\OrderDto.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\OrderDto.cs",
+              "RelativeToolTip": "WIDESEA_DTO\\SquareCabin\\OrderDto.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T05:48:11.319Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 44,
+              "Title": "Dt_Customer.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T05:44:08.605Z"
+            }
+          ]
+        },
+        {
+          "DockedWidth": 115,
+          "SelectedChildIndex": -1,
+          "Children": [
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{3ae79031-e1bc-11d0-8f78-00a0c9110057}"
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json"
new file mode 100644
index 0000000..462e9f1
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json"
@@ -0,0 +1,826 @@
+{
+  "Version": 1,
+  "WorkspaceRootPath": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\",
+  "Documents": [
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_inventory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_inventory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_squarecabinservices\\inventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\inventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FC3D3619-FE28-4CF5-8471-CBBC55649B10}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_isquarecabinservices\\iinventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FC3D3619-FE28-4CF5-8471-CBBC55649B10}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\iinventoryservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_squarecabinservices\\deliveryorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\deliveryorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\outorderjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\outorderjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\customerjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\customerjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\goodsjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\goodsjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_dto\\squarecabin\\towcsdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\squarecabin\\towcsdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_squarecabinservices\\customerservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\customerservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FC3D3619-FE28-4CF5-8471-CBBC55649B10}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_isquarecabinservices\\icustomerservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FC3D3619-FE28-4CF5-8471-CBBC55649B10}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\icustomerservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\inorderjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\inorderjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FC3D3619-FE28-4CF5-8471-CBBC55649B10}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_isquarecabinservices\\icabinorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{FC3D3619-FE28-4CF5-8471-CBBC55649B10}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\icabinorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\customercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\customercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\iwarehousetypeservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\iwarehousetypeservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\inventorycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\inventorycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_cabinorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_cabinorderdetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_cabinorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_cabinorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_cabinorder_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_cabinorder_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D8C9593B-B31C-4650-8F44-962E9096A0CF}|WIDESEA_SystemService\\WIDESEA_SystemService.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_systemservice\\sys_menuservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D8C9593B-B31C-4650-8F44-962E9096A0CF}|WIDESEA_SystemService\\WIDESEA_SystemService.csproj|solutionrelative:widesea_systemservice\\sys_menuservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_squarecabinservices\\cabinorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\cabinorderservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_medicinegoods.cs||{8B382828-6202-11D1-8870-0000F87579D2}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_medicinegoods.cs||{8B382828-6202-11D1-8870-0000F87579D2}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00A5A08A-8A36-4972-8863-7DCF8DBC7978}|WIDESEA_ISystemService\\WIDESEA_ISystemService.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_isystemservice\\isys_menuservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00A5A08A-8A36-4972-8863-7DCF8DBC7978}|WIDESEA_ISystemService\\WIDESEA_ISystemService.csproj|solutionrelative:widesea_isystemservice\\isys_menuservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_deliveryorderdetail_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_deliveryorderdetail_hty.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\index.html||{40D31677-CBC0-4297-A9EF-89D907823A98}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\index.html||{40D31677-CBC0-4297-A9EF-89D907823A98}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_model\\models\\stock\\dt_stockinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\stock\\dt_stockinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_squarecabinservices\\medicinegoodsservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\medicinegoodsservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_squarecabinservices\\deliveryorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\deliveryorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{FC3D3619-FE28-4CF5-8471-CBBC55649B10}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_isquarecabinservices\\imedicinegoodsservices.cs||{8B382828-6202-11D1-8870-0000F87579D2}",
+      "RelativeMoniker": "D:0:0:{FC3D3619-FE28-4CF5-8471-CBBC55649B10}|WIDESEA_ISquareCabinServices\\WIDESEA_ISquareCabinServices.csproj|solutionrelative:widesea_isquarecabinservices\\imedicinegoodsservices.cs||{8B382828-6202-11D1-8870-0000F87579D2}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\deliveryordercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\deliveryordercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\controllers\\system\\sys_menucontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\system\\sys_menucontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_ibasicservice\\ilocationinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|solutionrelative:widesea_ibasicservice\\ilocationinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_ibasicservice\\ibasicservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|solutionrelative:widesea_ibasicservice\\ibasicservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_ibasicservice\\ipalletcodeinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|solutionrelative:widesea_ibasicservice\\ipalletcodeinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_ibasicservice\\imaterielinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|solutionrelative:widesea_ibasicservice\\imaterielinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_ibasicservice\\iwarehouseservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|solutionrelative:widesea_ibasicservice\\iwarehouseservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_ibasicservice\\imaterielcodeinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|solutionrelative:widesea_ibasicservice\\imaterielcodeinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_basicservice\\materielcodeinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|solutionrelative:widesea_basicservice\\materielcodeinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\cabinorderdetailhtycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\cabinorderdetailhtycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_wmsserver\\controllers\\squarecabin\\deliveryorderdetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\squarecabin\\deliveryorderdetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_squarecabinservices\\deliveryorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\deliveryorderdetailservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_squarecabinservices\\deliveryorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\deliveryorderdetailhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_squarecabinservices\\cabinorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\cabinorderhtyservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_squarecabinservices\\supplierservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9D0451BD-FBB9-428A-9745-67334785D57A}|WIDESEA_SquareCabinServices\\WIDESEA_SquareCabinServices.csproj|solutionrelative:widesea_squarecabinservices\\supplierservices.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_customer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_customer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_dto\\squarecabin\\orderdto.cs||{8B382828-6202-11D1-8870-0000F87579D2}",
+      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\squarecabin\\orderdto.cs||{8B382828-6202-11D1-8870-0000F87579D2}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\widesea_wmsserver\\widesea_wmsserver\\widesea_model\\models\\squarecabin\\dt_deliveryorderdetail.cs||{8B382828-6202-11D1-8870-0000F87579D2}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\squarecabin\\dt_deliveryorderdetail.cs||{8B382828-6202-11D1-8870-0000F87579D2}"
+    }
+  ],
+  "DocumentGroupContainers": [
+    {
+      "Orientation": 0,
+      "VerticalTabListWidth": 256,
+      "DocumentGroups": [
+        {
+          "DockedWidth": 200,
+          "SelectedChildIndex": 7,
+          "Children": [
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 2,
+              "Title": "IInventoryServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IInventoryServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IInventoryServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IInventoryServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IInventoryServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvxIAAAAUAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-14T12:31:25.485Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 1,
+              "Title": "InventoryServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\InventoryServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\InventoryServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\InventoryServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\InventoryServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABQAAABXAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-14T01:55:33.624Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 5,
+              "Title": "CustomerJob.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\CustomerJob.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\CustomerJob.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\CustomerJob.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\CustomerJob.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAAJAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-14T10:59:13.53Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 4,
+              "Title": "OutOrderJob.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\OutOrderJob.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\OutOrderJob.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\OutOrderJob.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\OutOrderJob.cs",
+              "ViewState": "AgIAAAMAAAAAAAAAAAAqwBQAAAA3AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T05:47:26.602Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 8,
+              "Title": "CustomerServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CustomerServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\CustomerServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CustomerServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CustomerServices.cs",
+              "ViewState": "AgIAABIAAAAAAAAAAAD4v0YAAAAMAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T06:08:39.732Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 6,
+              "Title": "GoodsJob.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\GoodsJob.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\GoodsJob.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\GoodsJob.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\GoodsJob.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAABpAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:52:38.83Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 0,
+              "Title": "Dt_Inventory.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Inventory.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABYAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T06:10:22.131Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 7,
+              "Title": "TowcsDto.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
+              "RelativeDocumentMoniker": "WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
+              "RelativeToolTip": "WIDESEA_DTO\\SquareCabin\\TowcsDto.cs",
+              "ViewState": "AgIAACoBAAAAAAAAAAAqwDkBAAARAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-14T11:48:42.358Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 3,
+              "Title": "DeliveryOrderServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\DeliveryOrderServices.cs",
+              "ViewState": "AgIAADMCAAAAAAAAAAAswEwCAABGAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T04:35:49.374Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 10,
+              "Title": "InOrderJob.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\InOrderJob.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\InOrderJob.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\InOrderJob.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\InOrderJob.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAxAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T05:47:26.063Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 9,
+              "Title": "ICustomerServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICustomerServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\ICustomerServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICustomerServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\ICustomerServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwsAAAAmAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-14T10:54:17.409Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 14,
+              "Title": "InventoryController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\InventoryController.cs",
+              "ViewState": "AgIAAAMAAAAAAAAAAAAAABQAAAA4AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T06:10:42.582Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 11,
+              "Title": "ICabinOrderHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\ICabinOrderHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\ICabinOrderHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\ICabinOrderHtyServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-14T10:53:50.179Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 13,
+              "Title": "IWarehouseTypeServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\IWarehouseTypeServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\IWarehouseTypeServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\IWarehouseTypeServices.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\IWarehouseTypeServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAUAAAABAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T06:11:04.804Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 12,
+              "Title": "CustomerController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CustomerController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T06:11:08.628Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 17,
+              "Title": "Dt_CabinOrder_Hty.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder_Hty.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-14T07:32:30.704Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 15,
+              "Title": "Dt_CabinOrderDetail.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrderDetail.cs",
+              "ViewState": "AgIAACsAAAAAAAAAAAAAAEAAAAABAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T05:08:59.341Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 16,
+              "Title": "Dt_CabinOrder.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_CabinOrder.cs",
+              "ViewState": "AgIAACUAAAAAAAAAAAAswEQAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-14T01:44:43.285Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 19,
+              "Title": "CabinOrderServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\CabinOrderServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CabinOrderServices.cs",
+              "ViewState": "AgIAAL8AAAAAAAAAAADwv9EAAAAnAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-09T02:40:46.874Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 20,
+              "Title": "Dt_MedicineGoods.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_MedicineGoods.cs",
+              "ViewState": "AgIAAAYAAAAAAAAAAADwvxEAAABRAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T12:57:13.671Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 18,
+              "Title": "Sys_MenuService.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SystemService\\Sys_MenuService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SystemService\\Sys_MenuService.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SystemService\\Sys_MenuService.cs",
+              "RelativeToolTip": "WIDESEA_SystemService\\Sys_MenuService.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:57:27.511Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 21,
+              "Title": "ISys_MenuService.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_ISystemService\\ISys_MenuService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISystemService\\ISys_MenuService.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_ISystemService\\ISys_MenuService.cs",
+              "RelativeToolTip": "WIDESEA_ISystemService\\ISys_MenuService.cs",
+              "ViewState": "AgIAABEAAAAAAAAAAAAUwCAAAAAvAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:57:03.073Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 25,
+              "Title": "MedicineGoodsServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\MedicineGoodsServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\MedicineGoodsServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\MedicineGoodsServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\MedicineGoodsServices.cs",
+              "ViewState": "AgIAABAAAAAAAAAAAAD4vyYAAAAQAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T05:58:19.203Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 23,
+              "Title": "index.html",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\index.html",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\index.html",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\index.html",
+              "RelativeToolTip": "WIDESEA_WMSServer\\index.html",
+              "ViewState": "AgIAAAkAAAAAAAAAAADwvxwAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001512|",
+              "WhenOpened": "2025-10-13T12:37:31.773Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 22,
+              "Title": "Dt_DeliveryOrderDetail_Hty.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail_Hty.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail_Hty.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail_Hty.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail_Hty.cs",
+              "ViewState": "AgIAABQAAAAAAAAAAAA3wCEAAAAtAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-14T01:14:23.529Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 24,
+              "Title": "Dt_StockInfo.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
+              "ViewState": "AgIAAC0AAAAAAAAAAAAqwD4AAAAmAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T15:39:12.988Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 26,
+              "Title": "Program.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Program.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Program.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Program.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Program.cs",
+              "ViewState": "AgIAAGAAAAAAAAAAAAAAAHcAAAAiAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:52:45.999Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 46,
+              "Title": "Dt_DeliveryOrderDetail.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_DeliveryOrderDetail.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T13:44:19.951Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 27,
+              "Title": "DeliveryOrderHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\DeliveryOrderHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\DeliveryOrderHtyServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T13:14:20.402Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 29,
+              "Title": "DeliveryOrderController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderController.cs",
+              "ViewState": "AgIAABQAAAAAAAAAAAAswCEAAAAoAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T06:11:31.645Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 28,
+              "Title": "IMedicineGoodsServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
+              "RelativeToolTip": "WIDESEA_ISquareCabinServices\\IMedicineGoodsServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAA3AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T12:08:51.679Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 33,
+              "Title": "IPalletCodeInfoService.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\IPalletCodeInfoService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_IBasicService\\IPalletCodeInfoService.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\IPalletCodeInfoService.cs",
+              "RelativeToolTip": "WIDESEA_IBasicService\\IPalletCodeInfoService.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:55:36.72Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 31,
+              "Title": "ILocationInfoService.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\ILocationInfoService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_IBasicService\\ILocationInfoService.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\ILocationInfoService.cs",
+              "RelativeToolTip": "WIDESEA_IBasicService\\ILocationInfoService.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvw8AAABFAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:55:37.844Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 32,
+              "Title": "IBasicService.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\IBasicService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_IBasicService\\IBasicService.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\IBasicService.cs",
+              "RelativeToolTip": "WIDESEA_IBasicService\\IBasicService.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:55:38.417Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 30,
+              "Title": "Sys_MenuController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_MenuController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\System\\Sys_MenuController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_MenuController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\System\\Sys_MenuController.cs",
+              "ViewState": "AgIAAA4AAAAAAAAAAAAswCMAAAArAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:57:04.936Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 34,
+              "Title": "IMaterielInfoService.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\IMaterielInfoService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_IBasicService\\IMaterielInfoService.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\IMaterielInfoService.cs",
+              "RelativeToolTip": "WIDESEA_IBasicService\\IMaterielInfoService.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvw4AAAAFAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:55:35.084Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 35,
+              "Title": "IWarehouseService.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\IWarehouseService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_IBasicService\\IWarehouseService.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\IWarehouseService.cs",
+              "RelativeToolTip": "WIDESEA_IBasicService\\IWarehouseService.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:55:34.426Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 36,
+              "Title": "IMaterielCodeInfoService.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\IMaterielCodeInfoService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_IBasicService\\IMaterielCodeInfoService.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\IMaterielCodeInfoService.cs",
+              "RelativeToolTip": "WIDESEA_IBasicService\\IMaterielCodeInfoService.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAFAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:55:14.531Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 37,
+              "Title": "MaterielCodeInfoService.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_BasicService\\MaterielCodeInfoService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_BasicService\\MaterielCodeInfoService.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_BasicService\\MaterielCodeInfoService.cs",
+              "RelativeToolTip": "WIDESEA_BasicService\\MaterielCodeInfoService.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T08:55:11.67Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 39,
+              "Title": "DeliveryOrderDetailController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\DeliveryOrderDetailController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T06:11:06.618Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 38,
+              "Title": "CabinOrderDetailHtyController.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\SquareCabin\\CabinOrderDetailHtyController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T06:11:12.363Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 41,
+              "Title": "DeliveryOrderDetailHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderDetailHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\DeliveryOrderDetailHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderDetailHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\DeliveryOrderDetailHtyServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T06:09:05.858Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 40,
+              "Title": "DeliveryOrderDetailServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\DeliveryOrderDetailServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvxQAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T06:09:03.909Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 42,
+              "Title": "CabinOrderHtyServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderHtyServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\CabinOrderHtyServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\CabinOrderHtyServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\CabinOrderHtyServices.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvw4AAABcAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T06:08:15.727Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 43,
+              "Title": "SupplierServices.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\SupplierServices.cs",
+              "RelativeDocumentMoniker": "WIDESEA_SquareCabinServices\\SupplierServices.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_SquareCabinServices\\SupplierServices.cs",
+              "RelativeToolTip": "WIDESEA_SquareCabinServices\\SupplierServices.cs",
+              "ViewState": "AgIAAAwAAAAAAAAAAAAAAGMAAAANAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T05:58:46.664Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 45,
+              "Title": "OrderDto.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\OrderDto.cs",
+              "RelativeDocumentMoniker": "WIDESEA_DTO\\SquareCabin\\OrderDto.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_DTO\\SquareCabin\\OrderDto.cs",
+              "RelativeToolTip": "WIDESEA_DTO\\SquareCabin\\OrderDto.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T05:48:11.319Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 44,
+              "Title": "Dt_Customer.cs",
+              "DocumentMoniker": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
+              "ToolTip": "D:\\\u516C\u53F8\u9879\u76EE\\\u65B9\u821F\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\SquareCabin\\Dt_Customer.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-13T05:44:08.605Z"
+            }
+          ]
+        },
+        {
+          "DockedWidth": 115,
+          "SelectedChildIndex": -1,
+          "Children": [
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{3ae79031-e1bc-11d0-8f78-00a0c9110057}"
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/HierarchyCache.v1.txt" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/HierarchyCache.v1.txt"
new file mode 100644
index 0000000..47c387e
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/HierarchyCache.v1.txt"
Binary files differ
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs"
new file mode 100644
index 0000000..ac56868
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs"
@@ -0,0 +1,26 @@
+锘縰sing WIDESEA_IBasicService;
+
+namespace WIDESEA_BasicService
+{
+    public class BasicService : IBasicService
+    {
+        public IPalletCodeInfoService PalletCodeInfoService { get; }
+
+        public ILocationInfoService LocationInfoService { get; }
+
+        public IMaterielInfoService MaterielInfoService { get; }
+
+        public IWarehouseService WarehouseService { get; }
+
+        public IMaterielCodeInfoService MaterielCodeInfoService { get; }
+
+        public BasicService(ILocationInfoService locationInfoService, IMaterielInfoService materielInfoService, IWarehouseService warehouseService, IPalletCodeInfoService palletCodeInfoService, IMaterielCodeInfoService materielCodeInfoService)
+        {
+            LocationInfoService = locationInfoService;
+            MaterielInfoService = materielInfoService;
+            WarehouseService = warehouseService;
+            PalletCodeInfoService = palletCodeInfoService;
+            MaterielCodeInfoService = materielCodeInfoService;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs"
new file mode 100644
index 0000000..16c743a
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs"
@@ -0,0 +1,157 @@
+锘縰sing HslCommunication.WebSocket;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common.CommonEnum;
+using WIDESEA_Common.LocationEnum;
+using WIDESEA_Common.StockEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.DB;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Seed;
+using WIDESEA_Core.Utilities;
+using WIDESEA_DTO.Basic;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_BasicService
+{
+    public partial class LocationInfoService : ServiceBase<Dt_LocationInfo, IRepository<Dt_LocationInfo>>, ILocationInfoService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly IRepository<Dt_StockInfo> _stockInfoRepository;
+        public IRepository<Dt_LocationInfo> Repository => BaseDal;
+
+        public LocationInfoService(IRepository<Dt_LocationInfo> BaseDal, IUnitOfWorkManage unitOfWorkManage, IRepository<Dt_StockInfo> stockInfoRepository) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+            _stockInfoRepository = stockInfoRepository;
+        }
+
+        /// <summary>
+        /// 鎵归噺鍚敤璐т綅
+        /// </summary>
+        /// <param name="keys">璐т綅涓婚敭鏁扮粍</param>
+        /// <returns></returns>
+        public WebResponseContent LocationEnableStatus(int[] keys)
+        {
+            List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => keys.Contains(x.Id));
+            locationInfos.ForEach(x =>
+            {
+                x.EnableStatus = EnableStatusEnum.Normal.ObjToInt();
+            });
+            Repository.UpdateData(locationInfos);
+
+            return WebResponseContent.Instance.OK();
+        }
+
+        /// <summary>
+        /// 鎵归噺绂佺敤璐т綅
+        /// </summary>
+        /// <param name="keys">璐т綅涓婚敭鏁扮粍</param>
+        /// <returns></returns>
+        public WebResponseContent LocationDisableStatus(int[] keys)
+        {
+            List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => keys.Contains(x.Id));
+            locationInfos.ForEach(x =>
+            {
+                x.EnableStatus = EnableStatusEnum.Disable.ObjToInt();
+            });
+            Repository.UpdateData(locationInfos);
+
+            return WebResponseContent.Instance.OK();
+        }
+
+        /// <summary>
+        /// 鍗曚釜鍚敤璐т綅
+        /// </summary>
+        /// <param name="key">璐т綅涓婚敭</param>
+        /// <returns></returns>
+        public WebResponseContent LocationEnableStatus(int key)
+        {
+            return LocationEnableStatus(new int[] { key });
+        }
+
+        /// <summary>
+        /// 鍗曚釜绂佺敤璐т綅
+        /// </summary>
+        /// <param name="key">璐т綅涓婚敭</param>
+        /// <returns></returns>
+        public WebResponseContent LocationDisableStatus(int key)
+        {
+            return LocationDisableStatus(new int[] { key });
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栬揣浣�
+        /// </summary>
+        /// <param name="initializationLocationDTO"></param>
+        /// <returns></returns>
+        public WebResponseContent InitializationLocation(InitializationLocationDTO initializationLocationDTO)
+        {
+            try
+            {
+                (bool, string, object?) result = ModelValidate.ValidateModelData(initializationLocationDTO);
+                if (!result.Item1) return WebResponseContent.Instance.Error(result.Item2);
+
+                int depth = initializationLocationDTO.Depth;
+                List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
+                for (int i = 0; i < initializationLocationDTO.MaxRow; i++)
+                {
+                    if ((i + 1) % initializationLocationDTO.MaxRow == 1)
+                    {
+                        depth = initializationLocationDTO.Depth;
+                    }
+                    else if ((i + 1) % initializationLocationDTO.MaxRow == initializationLocationDTO.Depth + 1)
+                    {
+                        depth = 1;
+                    }
+                    else if ((i + 1) % initializationLocationDTO.MaxRow > 1 && (i + 1) % initializationLocationDTO.MaxRow <= initializationLocationDTO.Depth)
+                    {
+                        depth -= 1;
+                    }
+                    else
+                    {
+                        depth += 1;
+                    }
+                    for (int j = 0; j < initializationLocationDTO.MaxColumn; j++)
+                    {
+                        for (int k = 0; k < initializationLocationDTO.MaxLayer; k++)
+                        {
+                            Dt_LocationInfo locationInfo = new Dt_LocationInfo()
+                            {
+                                WarehouseId = 0,
+                                Column = j + 1,
+                                EnableStatus = EnableStatusEnum.Normal.ObjToInt(),
+                                Layer = k + 1,
+                                LocationStatus = LocationStatusEnum.Free.ObjToInt(),
+                                LocationType = LocationTypeEnum.Undefined.ObjToInt(),
+                                RoadwayNo = $"{initializationLocationDTO.Roadway.ToString()}",
+                                Row = i + 1,
+                                Depth = depth,
+                            };
+                            locationInfo.LocationCode = $"{locationInfo.RoadwayNo}-{locationInfo.Row.ToString().PadLeft(3, '0')}-{locationInfo.Column.ToString().PadLeft(3, '0')}-{locationInfo.Layer.ToString().PadLeft(3, '0')}-{locationInfo.Depth.ToString().PadLeft(2, '0')}";
+                            locationInfo.LocationName = $"{locationInfo.RoadwayNo}宸烽亾{locationInfo.Row.ToString().PadLeft(3, '0')}琛寋locationInfo.Column.ToString().PadLeft(3, '0')}鍒梴locationInfo.Layer.ToString().PadLeft(3, '0')}灞倇locationInfo.Depth.ToString().PadLeft(2, '0')}娣�";
+                            locationInfos.Add(locationInfo);
+                        }
+                    }
+                }
+                BaseDal.AddData(locationInfos);
+                return WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_BasicService/MaterielCodeInfoService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_BasicService/MaterielCodeInfoService.cs"
new file mode 100644
index 0000000..e9e64b3
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_BasicService/MaterielCodeInfoService.cs"
@@ -0,0 +1,26 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common.WareHouseEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_BasicService
+{
+    public class MaterielCodeInfoService : ServiceBase<Dt_MaterielCodeInfo, IRepository<Dt_MaterielCodeInfo>>, IMaterielCodeInfoService
+    {
+
+        public MaterielCodeInfoService(IRepository<Dt_MaterielCodeInfo> BaseDal) : base(BaseDal)
+        {
+        }
+
+        public IRepository<Dt_MaterielCodeInfo> Repository => BaseDal;
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_BasicService/MaterielInfoService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_BasicService/MaterielInfoService.cs"
new file mode 100644
index 0000000..6e0fd69
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_BasicService/MaterielInfoService.cs"
@@ -0,0 +1,24 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_BasicService
+{
+    public partial class MaterielInfoService : ServiceBase<Dt_MaterielInfo, IRepository<Dt_MaterielInfo>>, IMaterielInfoService
+    {
+
+        public MaterielInfoService(IRepository<Dt_MaterielInfo> BaseDal) : base(BaseDal)
+        {
+        }
+
+        public IRepository<Dt_MaterielInfo> Repository => BaseDal;
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_BasicService/PalletCodeInfoService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_BasicService/PalletCodeInfoService.cs"
new file mode 100644
index 0000000..3786220
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_BasicService/PalletCodeInfoService.cs"
@@ -0,0 +1,28 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common.CommonEnum;
+using WIDESEA_Common.WareHouseEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_BasicService
+{
+    public class PalletCodeInfoService : ServiceBase<Dt_PalletCodeInfo, IRepository<Dt_PalletCodeInfo>>, IPalletCodeInfoService
+    {
+
+        public PalletCodeInfoService(IRepository<Dt_PalletCodeInfo> BaseDal) : base(BaseDal)
+        {
+
+        }
+
+        public IRepository<Dt_PalletCodeInfo> Repository => BaseDal;
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_BasicService/WIDESEA_BasicService.csproj" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_BasicService/WIDESEA_BasicService.csproj"
new file mode 100644
index 0000000..555f689
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_BasicService/WIDESEA_BasicService.csproj"
@@ -0,0 +1,14 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_IBasicService\WIDESEA_IBasicService.csproj" />
+    <ProjectReference Include="..\WIDESEA_IRecordService\WIDESEA_IRecordService.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_BasicService/WarehouseService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_BasicService/WarehouseService.cs"
new file mode 100644
index 0000000..d2ad594
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_BasicService/WarehouseService.cs"
@@ -0,0 +1,85 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+using WIDESEA_Core.Helper;
+using WIDESEA_Common.CommonEnum;
+using WIDESEA_Core.Caches;
+using WIDESEA_Core.BaseRepository;
+
+namespace WIDESEA_BasicService
+{
+    public partial class WarehouseService : ServiceBase<Dt_Warehouse, IRepository<Dt_Warehouse>>, IWarehouseService
+    {
+        private readonly ICacheService _cacheService;
+
+        public WarehouseService(IRepository<Dt_Warehouse> BaseDal,ICacheService cacheService) : base(BaseDal)
+        {
+            _cacheService = cacheService;
+        }
+
+        public IRepository<Dt_Warehouse> Repository => BaseDal;
+
+        /// <summary>
+        /// 鎵归噺鍚敤浠撳簱
+        /// </summary>
+        /// <param name="keys">浠撳簱涓婚敭鏁扮粍</param>
+        /// <returns></returns>
+        public WebResponseContent WarehouseEnableStatus(int[] keys)
+        {
+            List<Dt_Warehouse> warehouses = Repository.QueryData(x => keys.Contains(x.WarehouseId));
+            warehouses.ForEach(x =>
+            {
+                x.WarehouseStatus = EnableEnum.Enable.ObjToInt();
+            });
+            Repository.UpdateData(warehouses);
+
+            return WebResponseContent.Instance.OK();
+        }
+
+        /// <summary>
+        /// 鎵归噺绂佺敤浠撳簱
+        /// </summary>
+        /// <param name="keys">浠撳簱涓婚敭鏁扮粍</param>
+        /// <returns></returns>
+        public WebResponseContent WarehouseDisableStatus(int[] keys)
+        {
+            List<Dt_Warehouse> warehouses = Repository.QueryData(x => keys.Contains(x.WarehouseId));
+            warehouses.ForEach(x =>
+            {
+                x.WarehouseStatus = EnableEnum.Disable.ObjToInt();
+            });
+            Repository.UpdateData(warehouses);
+
+            return WebResponseContent.Instance.OK();
+        }
+
+        /// <summary>
+        /// 鍗曚釜鍚敤浠撳簱
+        /// </summary>
+        /// <param name="key">浠撳簱涓婚敭</param>
+        /// <returns></returns>
+        public WebResponseContent WarehouseEnableStatus(int key)
+        {
+            return WarehouseEnableStatus(new int[] { key });
+        }
+
+        /// <summary>
+        /// 鍗曚釜绂佺敤浠撳簱
+        /// </summary>
+        /// <param name="key">浠撳簱涓婚敭</param>
+        /// <returns></returns>
+        public WebResponseContent WarehouseDisableStatus(int key)
+        {
+            return WarehouseDisableStatus(new int[] { key });
+        }
+
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs"
new file mode 100644
index 0000000..c33e285
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs"
@@ -0,0 +1,25 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common.OrderEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEA_ICheckService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_CheckService
+{
+    public class CheckOrderResultService : ServiceBase<Dt_CheckOrderResult, IRepository<Dt_CheckOrderResult>>, ICheckOrderResultService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        public CheckOrderResultService(IRepository<Dt_CheckOrderResult> BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+        }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderService.cs"
new file mode 100644
index 0000000..6e0006b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderService.cs"
@@ -0,0 +1,24 @@
+锘縰sing HslCommunication.WebSocket;
+using WIDESEA_Common.CommonEnum;
+using WIDESEA_Common.OrderEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEA_ICheckService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_CheckService
+{
+    public class CheckOrderService : ServiceBase<Dt_CheckOrder, IRepository<Dt_CheckOrder>>, ICheckOrderService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly WebSocketServer _webSocketServer;
+
+        public CheckOrderService(IRepository<Dt_CheckOrder> BaseDal, IUnitOfWorkManage unitOfWorkManage, WebSocketServer webSocketServer) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+            _webSocketServer = webSocketServer;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_CheckService/WIDESEA_CheckService.csproj" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_CheckService/WIDESEA_CheckService.csproj"
new file mode 100644
index 0000000..2adeca1
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_CheckService/WIDESEA_CheckService.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_ICheckService\WIDESEA_ICheckService.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/APIEnum/APIEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/APIEnum/APIEnum.cs"
new file mode 100644
index 0000000..63dc0e1
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/APIEnum/APIEnum.cs"
@@ -0,0 +1,41 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.APIEnum
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public enum APIEnum
+    {
+        /// <summary>
+        /// AGV鍙戦�佷换鍔℃帴鍙�
+        /// </summary>
+        [Description("AGV鍙戦�佷换鍔℃帴鍙�")]
+        AgvSendTask,
+        /// <summary>
+        /// AGV瀹夊叏淇″彿鍥炲
+        /// </summary>
+        [Description("AGV瀹夊叏淇″彿鍥炲")]
+        AgvSecureReply,
+        /// <summary>
+        /// ERP鎺ュ彛璋冪敤
+        /// </summary>
+        [Description("ERP鎺ュ彛璋冪敤")]
+        InvokeErpApi,
+        /// <summary>
+        /// MES鍚屾娴嬭瘯鏋跺彴璐︿俊鎭�
+        /// </summary>
+        [Description("MES鍚屾娴嬭瘯鏋跺彴璐︿俊鎭�")]
+        WMS_MES_TestToolSync,
+        /// <summary>
+        /// MES鍚屾鏉挎枡鍑哄簱
+        /// </summary>
+        [Description("MES鍚屾鏉挎枡鍑哄簱")]
+        WMS_MES_MaterialLotaAcept
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/AuditStatusEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/AuditStatusEnum.cs"
new file mode 100644
index 0000000..ff76e24
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/AuditStatusEnum.cs"
@@ -0,0 +1,36 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.CommonEnum
+{
+    public enum AuditStatusEnum
+    {
+        /// <summary>
+        /// 寰呮彁浜�
+        /// </summary>
+        [Description("寰呮彁浜�")]
+        NotCommited = 0,
+
+        /// <summary>
+        /// 瀹℃壒涓�
+        /// </summary>
+        [Description("瀹℃壒涓�")]
+        Auditing = 1,
+
+        /// <summary>
+        /// 鍚屾剰
+        /// </summary>
+        [Description("鍚屾剰")]
+        Agree = 100,
+
+        /// <summary>
+        /// 椹冲洖
+        /// </summary>
+        [Description("椹冲洖")]
+        Reject = 101
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/EnableEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/EnableEnum.cs"
new file mode 100644
index 0000000..e4d3718
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/EnableEnum.cs"
@@ -0,0 +1,27 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.CommonEnum
+{
+    /// <summary>
+    /// 鍚鐘舵��
+    /// </summary>
+    public enum EnableEnum
+    {
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        [Description("绂佺敤")]
+        Disable = 0,
+
+        /// <summary>
+        /// 鍚敤
+        /// </summary>
+        [Description("鍚敤")]
+        Enable = 1,
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/PalletTypeEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/PalletTypeEnum.cs"
new file mode 100644
index 0000000..f9a2413
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/PalletTypeEnum.cs"
@@ -0,0 +1,38 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.CommonEnum
+{
+    public enum PalletTypeEnum
+    {
+        /// <summary>
+        /// 绌虹
+        /// </summary>
+        Empty = -1,
+
+        None = 0,
+
+        /// <summary>
+        /// 灏忔墭鐩�
+        /// </summary>
+        SmallPallet = 1,
+
+        /// <summary>
+        /// 涓墭鐩�
+        /// </summary>
+        MediumPallet = 2,
+
+        /// <summary>
+        /// 澶ф墭鐩�
+        /// </summary>
+        LargePallet = 3,
+
+        /// <summary>
+        /// 鏈�澶ф墭鐩�
+        /// </summary>
+        LargestPallet = 4
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/PrintStatusEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/PrintStatusEnum.cs"
new file mode 100644
index 0000000..87ab8c8
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/PrintStatusEnum.cs"
@@ -0,0 +1,23 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.CommonEnum
+{
+    public enum PrintStatusEnum
+    {
+        /// <summary>
+        /// 鏈墦鍗�
+        /// </summary>
+        [Description("鏈墦鍗�")]
+        UnPrinted = 0,
+        /// <summary>
+        /// 宸叉墦鍗�
+        /// </summary>
+        [Description("宸叉墦鍗�")]
+        Printed = 1
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/RecyclingEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/RecyclingEnum.cs"
new file mode 100644
index 0000000..a2344cd
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/RecyclingEnum.cs"
@@ -0,0 +1,31 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.CommonEnum
+{
+    /// <summary>
+    /// 鍥炴敹绫诲瀷
+    /// </summary>
+    public enum RecyclingEnum
+    {
+        /// <summary>
+        /// 瀹緵
+        /// </summary>
+        Return,
+        /// <summary>
+        /// 鍥炴敹
+        /// </summary>
+        RepairStock,
+        /// <summary>
+        /// 鍥為��
+        /// </summary>
+        CMStock,
+        /// <summary>
+        /// 缁翠慨鐗╂枡鍥炴敹
+        /// </summary>
+        RMStock
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/UploadStatusEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/UploadStatusEnum.cs"
new file mode 100644
index 0000000..931f6f9
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/UploadStatusEnum.cs"
@@ -0,0 +1,12 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.CommonEnum
+{
+    internal class UploadStatusEnum
+    {
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/WhetherEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/WhetherEnum.cs"
new file mode 100644
index 0000000..8439809
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/WhetherEnum.cs"
@@ -0,0 +1,24 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.CommonEnum
+{
+    /// <summary>
+    /// 鏄惁鍊�
+    /// </summary>
+    public enum WhetherEnum
+    {
+        /// <summary>
+        /// 鏄�
+        /// </summary>
+        True = 1,
+
+        /// <summary>
+        /// 鍚�
+        /// </summary>
+        False = 0
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/EnableStatusEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/EnableStatusEnum.cs"
new file mode 100644
index 0000000..c6ea2a7
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/EnableStatusEnum.cs"
@@ -0,0 +1,39 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.LocationEnum
+{
+    /// <summary>
+    /// 璐т綅绂佺敤鐘舵��
+    /// </summary>
+    public enum EnableStatusEnum
+    {
+        /// <summary>
+        /// 姝e父
+        /// </summary>
+        [Description("姝e父")]
+        Normal = 0,
+
+        /// <summary>
+        /// 鍙叆
+        /// </summary>
+        [Description("鍙叆")]
+        OnlyIn = 1,
+
+        /// <summary>
+        /// 鍙嚭
+        /// </summary>
+        [Description("鍙嚭")]
+        OnlyOut = 2,
+
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        [Description("绂佺敤")]
+        Disable = 3
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationChangeType.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationChangeType.cs"
new file mode 100644
index 0000000..1ecb000
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationChangeType.cs"
@@ -0,0 +1,57 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.LocationEnum
+{
+    /// <summary>
+    /// 璐т綅鐘舵�佸彉鏇寸被鍨�
+    /// </summary>
+    public enum LocationChangeType
+    {
+        /// <summary>
+        /// 鍏ュ簱鍒嗛厤
+        /// </summary>
+        [Description("鍏ュ簱鍒嗛厤")]
+        InboundAssignLocation,
+
+        /// <summary>
+        /// 鍑哄簱鍒嗛厤
+        /// </summary>
+        [Description("鍑哄簱鍒嗛厤")]
+        OutboundAssignLocation,
+
+        /// <summary>
+        /// 绉诲簱鍒嗛厤
+        /// </summary>
+        [Description("绉诲簱鍒嗛厤")]
+        RelocationAssignLocation,
+
+        /// <summary>
+        /// 鍏ュ簱浠诲姟瀹屾垚
+        /// </summary>
+        [Description("鍏ュ簱浠诲姟瀹屾垚")]
+        InboundCompleted,
+
+        /// <summary>
+        /// 鍑哄簱浠诲姟瀹屾垚
+        /// </summary>
+        [Description("鍑哄簱浠诲姟瀹屾垚")]
+        OutboundCompleted,
+
+        /// <summary>
+        /// 绉诲簱浠诲姟瀹屾垚
+        /// </summary>
+        [Description("绉诲簱浠诲姟瀹屾垚")]
+        RelocationCompleted,
+
+        /// <summary>
+        /// 鎵嬪姩淇敼
+        /// </summary>
+        [Description("鎵嬪姩淇敼")]
+        HandUpdate
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationStatusEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationStatusEnum.cs"
new file mode 100644
index 0000000..dd54520
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationStatusEnum.cs"
@@ -0,0 +1,50 @@
+锘縰sing System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.LocationEnum
+{
+    /// <summary>
+    /// 璐т綅鐘舵��
+    /// </summary>
+    public enum LocationStatusEnum
+    {
+        /// <summary>
+        /// 绌洪棽
+        /// </summary>
+        [Description("绌洪棽")]
+        Free = 0,
+
+        /// <summary>
+        /// 閿佸畾
+        /// </summary>
+        [Description("閿佸畾")]
+        Lock = 1,
+
+        /// <summary>
+        /// 鏈夎揣閿佸畾
+        /// </summary>
+        [Description("鏈夎揣閿佸畾")]
+        InStockLock = 10,
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [Description("绌洪棽閿佸畾")]
+        FreeLock = 20,
+
+        /// <summary>
+        /// 鏈夎揣
+        /// </summary>
+        [Description("鏈夎揣")]
+        InStock = 100,
+
+        /// <summary>
+        /// 澶ф墭鐩橀攣瀹�
+        /// </summary>
+        [Description("澶ф墭鐩橀攣瀹�")]
+        PalletLock = 99
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationTypeEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationTypeEnum.cs"
new file mode 100644
index 0000000..67446d8
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/LocationEnum/LocationTypeEnum.cs"
@@ -0,0 +1,45 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.LocationEnum
+{
+    /// <summary>
+    /// 璐т綅绫诲瀷
+    /// </summary>
+    public enum LocationTypeEnum
+    {
+        /// <summary>
+        /// 鏈畾涔�
+        /// </summary>
+        [Description("鏈畾涔�")]
+        Undefined = 0,
+
+        /// <summary>
+        /// 灏忔墭鐩�
+        /// </summary>
+        [Description("灏忔墭鐩�")]
+        SmallPallet = 1,
+
+        /// <summary>
+        /// 涓墭鐩�
+        /// </summary>
+        [Description("涓墭鐩�")]
+        MediumPallet = 2,
+
+        /// <summary>
+        /// 澶ф墭鐩�
+        /// </summary>
+        [Description("澶ф墭鐩�")]
+        LargePallet = 3,
+
+        /// <summary>
+        /// 鐗瑰ぇ鎵樼洏
+        /// </summary>
+        [Description("鐗瑰ぇ鎵樼洏")]
+        ExtraPallet = 4,
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/MaterielEnum/MaterielSourceTypeEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/MaterielEnum/MaterielSourceTypeEnum.cs"
new file mode 100644
index 0000000..7cfbe87
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/MaterielEnum/MaterielSourceTypeEnum.cs"
@@ -0,0 +1,26 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.MaterielEnum
+{
+    public enum MaterielSourceTypeEnum
+    {
+        /// <summary>
+        /// 閲囪喘浠�
+        /// </summary>
+        PurchasePart = 1,
+
+        /// <summary>
+        /// 鑷埗浠�
+        /// </summary>
+        SelfMadePart = 2,
+
+        /// <summary>
+        /// 閲囪喘&鑷埗浠�
+        /// </summary>
+        PurchaseAndSelf = 3
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/MaterielEnum/MaterielStateEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/MaterielEnum/MaterielStateEnum.cs"
new file mode 100644
index 0000000..cf6b370
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/MaterielEnum/MaterielStateEnum.cs"
@@ -0,0 +1,13 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.MaterielEnum
+{
+    public enum MaterielStateEnum
+    {
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/MaterielEnum/MaterielTypeEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/MaterielEnum/MaterielTypeEnum.cs"
new file mode 100644
index 0000000..6878539
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/MaterielEnum/MaterielTypeEnum.cs"
@@ -0,0 +1,34 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.MaterielEnum
+{
+    /// <summary>
+    /// 鐗╂枡鍩烘湰鍒嗙被
+    /// </summary>
+    public enum MaterielTypeEnum
+    {
+        /// <summary>
+        /// 鎴愬搧
+        /// </summary>
+        FinishProduct = 1,
+
+        /// <summary>
+        /// 鍗婃垚鍝�
+        /// </summary>
+        HalfProduct = 2,
+
+        /// <summary>
+        /// 鍘熸潗鏂�
+        /// </summary>
+        RawMateriel = 3,
+
+        /// <summary>
+        /// 澶囦欢
+        /// </summary>
+        SpareParts = 4
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/CheckOrderEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/CheckOrderEnum.cs"
new file mode 100644
index 0000000..ee801e7
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/CheckOrderEnum.cs"
@@ -0,0 +1,61 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.OrderEnum
+{
+    public enum CheckOrderStatusEnum
+    {
+        /// <summary>
+        /// 寰呮
+        /// </summary>
+        [Description("寰呮")]
+        NotCheck = 0,
+
+        /// <summary>
+        /// 宸叉
+        /// </summary>
+        [Description("宸叉")]
+        Checked = 1
+    }
+
+    public enum CheckResultEnum
+    {
+        /// <summary>
+        /// 閫�璐�
+        /// </summary>
+        [Description("閫�璐�")]
+        Return,
+
+        /// <summary>
+        /// 鐗归噰
+        /// </summary>
+        [Description("鐗归噰")]
+        Defect,
+
+        /// <summary>
+        /// 鎶ュ簾
+        /// </summary>
+        [Description("鎶ュ簾")]
+        Scrapped
+    }
+    /// <summary>
+    /// 妫�楠屼笂浼犵姸鎬�
+    /// </summary>
+    public enum CheckUploadEnum
+    {
+        /// <summary>
+        /// 鏈笂浼�
+        /// </summary>
+        [Description("鏈笂浼�")]
+        UploadNo,
+        /// <summary>
+        /// 宸蹭笂浼�
+        /// </summary>
+        [Description("宸蹭笂浼�")]
+        UploadOk
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/InboundOrderMenu.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/InboundOrderMenu.cs"
new file mode 100644
index 0000000..904222d
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/InboundOrderMenu.cs"
@@ -0,0 +1,93 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.OrderEnum
+{
+    /// <summary>
+    /// 鍏ュ簱鍗曟嵁鐘舵�� 0锛屾湭寮�濮�  1锛屽叆搴撲腑  2锛屽叆搴撳畬鎴�
+    /// </summary>
+    public enum InOrderStatusEnum
+    {
+        /// <summary>
+        /// 鏈紑濮�
+        /// </summary>
+        [Description("鏈紑濮�")]
+        鏈紑濮� = 0,
+
+        /// <summary>
+        /// 鍏ュ簱涓�
+        /// </summary>
+        [Description("鍏ュ簱涓�")]
+        鍏ュ簱涓� = 1,
+
+        /// <summary>
+        /// 鍏ュ簱瀹屾垚
+        /// </summary>
+        [Description("鍏ュ簱瀹屾垚")]
+        鍏ュ簱瀹屾垚 = 2,
+
+        /// <summary>
+        /// 鍏抽棴
+        /// </summary>
+        [Description("鍏抽棴")]
+        鍏抽棴 = 99,
+
+        /// <summary>
+        /// 鍙栨秷
+        /// </summary>
+        [Description("鍙栨秷")]
+        鍙栨秷 = 98
+    }
+
+    /// <summary>
+    /// 鍏ュ簱鍗曠被鍨� 100 鐢熶骇鍏ュ簱鍗�;200 鐢熶骇閫�鏂欏崟;300 閲囪喘鍏ュ簱鍗�;400 璋冩嫧鍏ュ簱鍗�;500 閿�鍞��璐у崟;600 绌虹洏鍏ュ簱鍗�;700 鍏朵粬鍏ュ簱鍗�
+    /// </summary>
+    public enum InOrderTypeEnum
+    {
+        /// <summary>
+        /// 鐢熶骇鍏ュ簱鍗�
+        /// </summary>
+        [Description("鐢熶骇鍏ュ簱鍗�")]
+        Product = 100,
+
+        /// <summary>
+        /// 鐢熶骇閫�鏂欏崟
+        /// </summary>
+        [Description("鐢熶骇閫�鏂欏崟")]
+        Return = 105,
+
+        /// <summary>
+        /// 閲囪喘鍏ュ簱鍗�
+        /// </summary>
+        [Description("閲囪喘鍏ュ簱鍗�")]
+        Purchase = 110,
+
+        /// <summary>
+        /// 璋冩嫧鍏ュ簱鍗�
+        /// </summary>
+        [Description("璋冩嫧鍏ュ簱鍗�")]
+        Allocat = 115,
+
+        /// <summary>
+        /// 閿�鍞��璐у崟
+        /// </summary>
+        [Description("閿�鍞��璐у崟")]
+        SaleReturn = 120,
+
+        /// <summary>
+        /// 绌虹洏鍏ュ簱鍗�
+        /// </summary>
+        [Description("绌虹洏鍏ュ簱鍗�")]
+        EmptyDisk = 125,
+
+        /// <summary>
+        /// 鍏朵粬鍏ュ簱鍗�
+        /// </summary>
+        [Description("鍏朵粬鍏ュ簱鍗�")]
+        Other = 130
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/MesOutboundOrderType.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/MesOutboundOrderType.cs"
new file mode 100644
index 0000000..31f61eb
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/MesOutboundOrderType.cs"
@@ -0,0 +1,39 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.OrderEnum
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public enum MesOutboundOrderTypeEnum
+    {
+        /// <summary>
+        /// 鍩烘澘鍑哄簱
+        /// </summary>
+        [Description("鍩烘澘鍑哄簱")]
+        SubstrateOut = 100,
+
+        /// <summary>
+        /// 鍩烘澘浣欐枡閫�搴�
+        /// </summary>
+        [Description("鍩烘澘浣欐枡閫�搴�")]
+        SubstrateBack = 200,
+
+        /// <summary>
+        /// 鎵嬪姩鍩烘澘鍑哄簱
+        /// </summary>
+        [Description("鎵嬪姩鍩烘澘鍑哄簱")]
+        HandSubstrateOut = 300,
+
+        /// <summary>
+        /// 鎵嬪姩鍩烘澘鍑哄簱鎷i��
+        /// </summary>
+        [Description("鎵嬪姩鍩烘澘鍑哄簱鎷i��")]
+        HandSubstrateOutPick = 400,
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OrderCreateTypeEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OrderCreateTypeEnum.cs"
new file mode 100644
index 0000000..79c5516
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OrderCreateTypeEnum.cs"
@@ -0,0 +1,24 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.OrderEnum
+{
+    public enum OrderCreateTypeEnum
+    {
+        /// <summary>
+        /// 绯荤粺鍐呭垱寤�
+        /// </summary>
+        [Description("绯荤粺鍐呭垱寤�")]
+        CreateInSystem,
+
+        /// <summary>
+        /// 涓婃父绯荤粺鎺ㄩ��
+        /// </summary>
+        [Description("涓婃父绯荤粺鎺ㄩ��")]
+        UpperSystemPush
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OrderDetailStatusEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OrderDetailStatusEnum.cs"
new file mode 100644
index 0000000..8e849dc
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OrderDetailStatusEnum.cs"
@@ -0,0 +1,52 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.OrderEnum
+{
+    public enum OrderDetailStatusEnum
+    {
+        /// <summary>
+        /// 鏂板缓
+        /// </summary>
+        [Description("鏂板缓")]
+        New = 0,
+
+        /// <summary>
+        /// 缁勭洏鍏ュ簱
+        /// </summary>
+        [Description("缁勭洏鍏ュ簱")]
+        GroupAndInbound = 10,
+        /// <summary>
+        /// 鍏ュ簱涓�
+        /// </summary>
+        [Description("鍏ュ簱涓�")]
+        Inbounding = 20,
+        /// <summary>
+        /// 鍑哄簱閮ㄥ垎鍒嗛厤瀹屾垚
+        /// </summary>
+        [Description("鍑哄簱閮ㄥ垎鍒嗛厤瀹屾垚")]
+        AssignOverPartial = 60,
+
+        /// <summary>
+        /// 鍑哄簱鍒嗛厤瀹屾垚
+        /// </summary>
+        [Description("鍑哄簱鍒嗛厤瀹屾垚")]
+        AssignOver = 70,
+
+        /// <summary>
+        /// 鍑哄簱涓�
+        /// </summary>
+        [Description("鍑哄簱涓�")]
+        Outbound = 80,
+
+        /// <summary>
+        /// 瀹屾垚
+        /// </summary>
+        [Description("瀹屾垚")]
+        Over = 100
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OutboundOrderEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OutboundOrderEnum.cs"
new file mode 100644
index 0000000..3b43f33
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OutboundOrderEnum.cs"
@@ -0,0 +1,96 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.OrderEnum
+{
+    public enum OutOrderStatusEnum
+    {
+        /// <summary>
+        /// 鏈紑濮�
+        /// </summary>
+        [Description("鏈紑濮�")]
+        鏈紑濮� = 0,
+
+        /// <summary>
+        /// 鍑哄簱涓�
+        /// </summary>
+        [Description("鍑哄簱涓�")]
+        鍑哄簱涓� = 1,
+
+        /// <summary>
+        /// 鍑哄簱瀹屾垚
+        /// </summary>
+        [Description("鍑哄簱瀹屾垚")]
+        鍑哄簱瀹屾垚 = 2,
+
+        /// <summary>
+        /// 鍏抽棴
+        /// </summary>
+        [Description("鍏抽棴")]
+        鍏抽棴 = 99,
+
+        /// <summary>
+        /// 鍙栨秷
+        /// </summary>
+        [Description("鍙栨秷")]
+        鍙栨秷 = 98
+    }
+
+    /// <summary>
+    /// 鍑哄簱鍗曠被鍨�
+    /// </summary>
+    public enum OutOrderTypeEnum
+    {
+        /// <summary>
+        /// 鐢熶骇杩斿伐鍗�
+        /// </summary>
+        [Description("鐢熶骇杩斿伐鍗�")]
+        Rework = 200,
+
+        /// <summary>
+        /// 鐢熶骇鍙戞枡鍗�
+        /// </summary>
+        [Description("鐢熶骇鍙戞枡鍗�")]
+        Issue = 205,
+
+        /// <summary>
+        /// 閲囪喘閫�璐у崟
+        /// </summary>
+        [Description("閲囪喘閫�璐у崟")]
+        ProcureReturn = 210,
+
+        /// <summary>
+        /// 璋冩嫧鍑哄簱鍗�
+        /// </summary>
+        [Description("璋冩嫧鍑哄簱鍗�")]
+        Allocate = 215,
+
+        /// <summary>
+        /// 閿�鍞嚭搴撳崟
+        /// </summary>
+        [Description("閿�鍞嚭搴撳崟")]
+        SaleOut = 220,
+
+        /// <summary>
+        /// 绌虹洏鍑哄簱鍗�
+        /// </summary>
+        [Description("绌虹洏鍑哄簱鍗�")]
+        EmptyDisk = 225,
+
+        /// <summary>
+        /// 璐ㄦ鍑哄簱鍗�
+        /// </summary>
+        [Description("璐ㄦ鍑哄簱鍗�")]
+        Quality = 230,
+
+        /// <summary>
+        /// 鍏朵粬鍑哄簱鍗�
+        /// </summary>
+        [Description("鍏朵粬鍑哄簱鍗�")]
+        Other = 235
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/PurchaseOrderEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/PurchaseOrderEnum.cs"
new file mode 100644
index 0000000..22e5586
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/PurchaseOrderEnum.cs"
@@ -0,0 +1,64 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.OrderEnum
+{
+    public enum PurchaseOrderStatusEnum
+    {
+        /// <summary>
+        /// 鏈敹璐�
+        /// </summary>
+        [Description("鏈敹璐�")]
+        NotReceived = 0,
+
+        /// <summary>
+        /// 鏀惰揣涓�
+        /// </summary>
+        [Description("鏀惰揣涓�")]
+        Receiving = 1,
+
+        /// <summary>
+        /// 鏀惰揣瀹屾垚
+        /// </summary>
+        [Description("鏀惰揣瀹屾垚")]
+        Received = 2
+    }
+
+    public enum PurchaseOrderDetailStatusEnum
+    {
+        /// <summary>
+        /// 鏈敹璐�
+        /// </summary>
+        [Description("鏀惰揣")]
+        NotReceived = 0,
+        /// <summary>
+        /// 鏀惰揣涓�
+        /// </summary>
+        [Description("鏀惰揣涓�")]
+        Receiving = 1,
+        /// <summary>
+        /// 鏀惰揣瀹屾垚
+        /// </summary>
+        [Description("鏀惰揣瀹屾垚")]
+        Received = 2
+    }
+
+    public enum PurchaseOrderTypeEnum
+    {
+        /// <summary>
+        /// 鏍囧噯鍏ュ簱
+        /// </summary>
+        [Description("鏍囧噯鍏ュ簱")]
+        S = 1,
+
+        /// <summary>
+        /// 瀵勫敭琛ョ粰鍏ュ簱
+        /// </summary>
+        [Description("瀵勫敭琛ョ粰鍏ュ簱")]
+        V = 2
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/ReceiveOrderEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/ReceiveOrderEnum.cs"
new file mode 100644
index 0000000..3ac452b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/ReceiveOrderEnum.cs"
@@ -0,0 +1,51 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.OrderEnum
+{
+    public enum ReceiveOrderTypeEnum
+    {
+        /// <summary>
+        /// 閲囪喘鎺ユ敹
+        /// </summary>
+        [Description("閲囪喘鎺ユ敹")]
+        PO = 1,
+
+        /// <summary>
+        /// 鏃犻噰璐帴鏀�
+        /// </summary>
+        [Description("鏃犻噰璐帴鏀�")]
+        NPO = 2,
+
+        /// <summary>
+        /// 瀹緵鏂欐帴鏀�
+        /// </summary>
+        [Description("瀹緵鏂欐帴鏀�")]
+        CustomerSupply = 3
+    }
+
+    public enum ReceiveOrderStatusEnum
+    {
+        /// <summary>
+        /// 鏈紑濮�
+        /// </summary>
+        [Description("鏈紑濮�")]
+        NotStarted,
+
+        /// <summary>
+        /// 鏀惰揣涓�
+        /// </summary>
+        [Description("鏀惰揣涓�")]
+        Receiving,
+
+        /// <summary>
+        /// 鏀惰揣瀹屾垚
+        /// </summary>
+        [Description("鏀惰揣瀹屾垚")]
+        Completed
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OtherEnum/SequenceEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OtherEnum/SequenceEnum.cs"
new file mode 100644
index 0000000..27f4a53
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/OtherEnum/SequenceEnum.cs"
@@ -0,0 +1,13 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.OtherEnum
+{
+    public enum SequenceEnum
+    {
+        SeqTaskNum
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/OutLockStockStatusEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/OutLockStockStatusEnum.cs"
new file mode 100644
index 0000000..01dbf7c
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/OutLockStockStatusEnum.cs"
@@ -0,0 +1,27 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.StockEnum
+{
+    public enum OutLockStockStatusEnum
+    {
+        [Description("宸插垎閰�")]
+        宸插垎閰� = 0,
+
+        [Description("鍑哄簱涓�")]
+        鍑哄簱涓� = 1,
+
+        [Description("鍑哄簱瀹屾垚")]
+        鍑哄簱瀹屾垚 = 2,
+
+        [Description("鎷i�夊畬鎴�")]
+        鎷i�夊畬鎴� = 3,
+
+        [Description("鎾ら攢")]
+        鎾ら攢 = 99
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockChangeTypeEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockChangeTypeEnum.cs"
new file mode 100644
index 0000000..63631fe
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockChangeTypeEnum.cs"
@@ -0,0 +1,41 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.StockEnum
+{
+    public enum StockChangeTypeEnum
+    {
+        /// <summary>
+        /// 缁勭洏
+        /// </summary>
+        [Description("缁勭洏")]
+        MaterielGroup,
+
+        /// <summary>
+        /// 鍏ュ簱
+        /// </summary>
+        [Description("鍏ュ簱")]
+        Inbound,
+
+        /// <summary>
+        /// 鍑哄簱
+        /// </summary>
+        [Description("鍑哄簱")]
+        Outbound,
+        /// <summary>
+        /// 绉诲簱
+        /// </summary>
+        [Description("绉诲簱")]
+        Relocation,
+
+        /// <summary>
+        /// 鍑哄簱閿佸畾
+        /// </summary>
+        [Description("鍑哄簱閿佸畾")]
+        StockLock
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs"
new file mode 100644
index 0000000..65ea267
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs"
@@ -0,0 +1,65 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.StockEnum
+{
+    /// <summary>
+    /// 搴撳瓨鐘舵�侊細 <br/>
+    /// 1锛岀粍鐩樻殏瀛�<br/>
+    /// 2锛岀粍鐩樻挙閿�<br/>  
+    /// 3锛屽叆搴撶‘璁�<br/> 
+    /// 4锛屽叆搴撴挙閿�<br/>
+    /// 6锛屽叆搴撳畬鎴�<br/>
+    /// 7锛屽嚭搴撻攣瀹�<br/>
+    /// 8锛屽嚭搴撳畬鎴�<br/>
+    /// 9锛岀Щ搴撻攣瀹�<br/>
+    /// </summary>
+    public enum StockStatusEmun
+    {
+        [Description("缁勭洏鏆傚瓨")]
+        缁勭洏鏆傚瓨 = 1,
+
+        [Description("鍏ュ簱纭")]
+        鍏ュ簱纭 = 3,
+
+        [Description("鍏ュ簱瀹屾垚")]
+        鍏ュ簱瀹屾垚 = 6,
+
+        [Description("鍑哄簱閿佸畾")]
+        鍑哄簱閿佸畾 = 7,
+
+        [Description("鍑哄簱瀹屾垚")]
+        鍑哄簱瀹屾垚 = 8,
+
+        [Description("绉诲簱閿佸畾")]
+        绉诲簱閿佸畾 = 9,
+
+        [Description("鍏ュ簱瀹屾垚鏈缓鍑哄簱鍗�")]
+        鍏ュ簱瀹屾垚鏈缓鍑哄簱鍗� = 10,
+
+        [Description("閫�搴�")]
+        閫�搴� = 11,
+
+        [Description("鎵嬪姩缁勭洏鏆傚瓨")]
+        鎵嬪姩缁勭洏鏆傚瓨 = 12,
+
+        [Description("鎵嬪姩缁勭洏鍏ュ簱纭")]
+        鎵嬪姩缁勭洏鍏ュ簱纭 = 13,
+
+        [Description("鎷i�夊畬鎴�")]
+        鎷i�夊畬鎴� =14,
+
+        [Description("閫�搴�")]
+        MES閫�搴� = 21,
+
+        [Description("缁勭洏鎾ら攢")]
+        缁勭洏鎾ら攢 = 99,
+
+        [Description("鍏ュ簱鎾ら攢")]
+        鍏ュ簱鎾ら攢 = 199,
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskEnumHelper.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskEnumHelper.cs"
new file mode 100644
index 0000000..711654b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskEnumHelper.cs"
@@ -0,0 +1,38 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.TaskEnum
+{
+    public static class TaskEnumHelper
+    {
+        public static List<int> GetEnumIndexList(this Type type)
+        {
+            if (type is null) throw new ArgumentNullException("type");
+            if (!type.IsEnum) return new List<int>();
+            return Enum.GetValues(type).Cast<int>().ToList();
+        }
+
+        public static TaskTypeGroup GetTaskTypeGroup(this int taskType)
+        {
+            if (taskType >= 500 && taskType < 900)
+            {
+                return TaskTypeGroup.InboundGroup;
+            }
+            else if (taskType >= 100 && taskType < 500)
+            {
+                return TaskTypeGroup.OutbondGroup;
+            }
+            else if (taskType >= 900 && taskType < 1000)
+            {
+                return TaskTypeGroup.RelocationGroup;
+            }
+            else
+            {
+                return TaskTypeGroup.OtherGroup;
+            }
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskStatusEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskStatusEnum.cs"
new file mode 100644
index 0000000..fdea881
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskStatusEnum.cs"
@@ -0,0 +1,115 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.TaskEnum
+{
+    /// <summary>
+    /// 浠诲姟鐘舵��
+    /// </summary>
+    public enum TaskStatusEnum
+    {
+        /// <summary>
+        /// 鏂板缓浠诲姟
+        /// </summary>
+        [Description("鏂板缓")]
+        New = 100,
+
+        /// <summary>
+        /// 鍫嗗灈鏈哄緟鎵ц
+        /// </summary>
+        [Description("鍫嗗灈鏈哄緟鎵ц")]
+        SC_Execute = 200,
+
+        /// <summary>
+        /// 鍫嗗灈鏈烘墽琛屼腑
+        /// </summary>
+        [Description("鍫嗗灈鏈烘墽琛屼腑")]
+        SC_Executing = 210,
+
+        /// <summary>
+        /// 鍫嗗灈鏈哄畬鎴�
+        /// </summary>
+        [Description("鍫嗗灈鏈哄畬鎴�")]
+        SC_Finish = 220,
+
+        /// <summary>
+        /// 杈撻�佺嚎寰呮墽琛�
+        /// </summary>
+        [Description("杈撻�佺嚎寰呮墽琛�")]
+        Line_Execute = 400,
+
+        /// <summary>
+        /// 杈撻�佺嚎鎵ц涓�
+        /// </summary>
+        [Description("杈撻�佺嚎鎵ц涓�")]
+        Line_Executing = 410,
+
+        /// <summary>
+        /// 杈撻�佺嚎瀹屾垚
+        /// </summary>
+        [Description("杈撻�佺嚎瀹屾垚")]
+        Line_Finish = 420,
+
+        /// <summary>
+        /// AGV寰呮墽琛�
+        /// </summary>
+        [Description("AGV寰呮墽琛�")]
+        AGV_Execute = 300,
+
+        /// <summary>
+        /// AGV鎵ц涓�
+        /// </summary>
+        [Description("AGV鎵ц涓�")]
+        AGV_Executing = 310,
+
+        /// <summary>
+        /// AGV寰呯户缁墽琛�
+        /// </summary>
+        [Description("AGV寰呯户缁墽琛�")]
+        AGV_WaitToExecute = 320,
+        /// <summary>
+        /// AGV鏀捐揣涓�
+        /// </summary>
+        [Description("AGV鏀捐揣涓�")]
+        AGV_Puting = 325,
+
+        /// <summary>
+        /// AGV瀹屾垚
+        /// </summary>
+        [Description("AGV瀹屾垚")]
+        AGV_Finish = 330,
+
+        /// <summary>
+        /// 浠诲姟瀹屾垚
+        /// </summary>
+        [Description("浠诲姟瀹屾垚")]
+        Finish = 900,
+
+        /// <summary>
+        /// 浠诲姟鎸傝捣
+        /// </summary>
+        [Description("浠诲姟鎸傝捣")]
+        Pending = 970,
+
+        /// <summary>
+        /// 浠诲姟鍙栨秷
+        /// </summary>
+        [Description("浠诲姟鍙栨秷")]
+        Cancel = 980,
+
+        /// <summary>
+        /// 浠诲姟寮傚父
+        /// </summary>
+        [Description("浠诲姟寮傚父")]
+        Exception = 990,
+        /// <summary>
+        /// 鎻愬崌鏈烘墽琛屼腑
+        /// </summary>
+        [Description("鎻愬崌鏈烘墽琛屼腑")]
+        HT_Executing = 110,
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs"
new file mode 100644
index 0000000..1013730
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs"
@@ -0,0 +1,126 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.TaskEnum
+{
+    public enum TaskTypeEnum
+    {
+        /// <summary>
+        /// 棰嗘枡鍑哄簱
+        /// </summary>
+        [Description("棰嗘枡鍑哄簱")]
+        Outbound = 100,
+        /// <summary>
+        /// 鐩樼偣鍑哄簱
+        /// </summary>
+        [Description("鐩樼偣鍑哄簱")]
+        OutInventory = 110,
+        /// <summary>
+        /// 鍒嗘嫞鍑哄簱
+        /// </summary>
+        [Description("鍒嗘嫞鍑哄簱")]
+        OutPick = 120,
+        /// <summary>
+        /// 璐ㄦ鍑哄簱
+        /// </summary>
+        [Description("璐ㄦ鍑哄簱")]
+        OutQuality = 130,
+
+        /// <summary>
+        /// 绌虹鍑哄簱
+        /// </summary>
+        [Description("绌虹鍑哄簱")]
+        OutEmpty = 140,
+
+        /// <summary>
+        /// MES鍑哄簱
+        /// </summary>
+        [Description("MES鍑哄簱")]
+        MesOutbound = 200,
+
+        /// <summary>
+        /// MES鎵嬪姩鍑哄簱
+        /// </summary>
+        [Description("MES鎵嬪姩鍑哄簱")]
+        MesHandOutbound = 210,
+
+        /// <summary>
+        /// MES鎵嬪姩鎷i�夊嚭搴�
+        /// </summary>
+        [Description("MES鎵嬪姩鎷i�夊嚭搴�")]
+        MesHandPickOutbound = 220,
+
+        /// <summary>
+        /// 閲囪喘鍏ュ簱
+        /// </summary>
+        [Description("閲囪喘鍏ュ簱")]
+        Inbound = 510,
+        /// <summary>
+        /// 鐩樼偣鍏ュ簱
+        /// </summary>
+        [Description("鐩樼偣鍏ュ簱")]
+        InInventory = 520,
+        /// <summary>
+        /// 鍒嗘嫞鍏ュ簱
+        /// </summary>
+        [Description("鍒嗘嫞鍏ュ簱")]
+        InPick = 530,
+        /// <summary>
+        /// 璐ㄦ鍏ュ簱
+        /// </summary>
+        [Description("璐ㄦ鍏ュ簱")]
+        InQuality = 540,
+
+        /// <summary>
+        /// 鐢熶骇閫�鏂�
+        /// </summary>
+        [Description("鐢熶骇閫�鏂�")]
+        ProductionReturn = 550,
+
+        /// <summary>
+        /// MES閫�鏂�
+        /// </summary>
+        [Description("MES閫�鏂�")]
+        MesMatReturn = 560,
+
+        /// <summary>
+        /// 绌虹鍏ュ簱
+        /// </summary>
+        [Description("绌虹鍏ュ簱")]
+        InEmpty = 600,
+
+        /// <summary>
+        /// 宸烽亾鍐呯Щ搴�
+        /// </summary>
+        [Description("宸烽亾鍐呯Щ搴�")]
+        Relocation = 900
+        
+    }
+
+    public enum TaskTypeGroup
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        InboundGroup,
+
+        /// <summary>
+        /// 
+        /// </summary>
+        OutbondGroup,
+
+        /// <summary>
+        /// 
+        /// </summary>
+        RelocationGroup,
+
+        /// <summary>
+        /// 
+        /// </summary>
+        OtherGroup
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/WIDESEA_Common.csproj" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/WIDESEA_Common.csproj"
new file mode 100644
index 0000000..f14a168
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/WIDESEA_Common.csproj"
@@ -0,0 +1,15 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <Compile Remove="Location\**" />
+    <EmbeddedResource Remove="Location\**" />
+    <None Remove="Location\**" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs"
new file mode 100644
index 0000000..7685dce
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs"
@@ -0,0 +1,76 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.WareHouseEnum
+{
+    /// <summary>
+    /// 浠撳簱
+    /// HA57 = 娣畨浜屽巶 - 鏉挎枡浠�<br/>
+    /// HA58 = 娣畨浜屽巶 - PP浠�<br/>
+    /// HA60 = 娣畨浜屽巶 - 杈呮枡浠�<br/>
+    /// HA64 = 娣畨浜屽巶 - 娴嬭瘯鏋朵粨<br/>
+    /// HA71 = 娣畨浜屽巶 - 鎴愬搧浠�<br/>
+    /// HA72 = 娣畨浜屽巶 - 灏炬暟浠�<br/>
+    /// HA73 = 娣畨浜屽巶 - 鐮斿彂浠�<br/>
+    /// HA101 = 娣畨浜屽巶 - 鎴愬搧浠撳钩搴�<br/>
+    /// HA152 = 娣畨浜屽巶 - 骞茶啘浠�<br/>
+    /// HA153 = 娣畨浜屽巶 - 娌瑰ⅷ浠�<br/>
+    /// </summary>
+    public enum WarehouseEnum
+    {
+        /// <summary>
+        /// 鏉挎枡浠�
+        /// </summary>
+        [Description("鏉挎枡浠�")]
+        HA57,
+        /// <summary>
+        /// PP浠�
+        /// </summary>
+        [Description("PP浠�")]
+        HA58,
+        /// <summary>
+        /// 杈呮枡浠�
+        /// </summary>
+        [Description("杈呮枡浠�")]
+        HA60,
+        /// <summary>
+        /// 娴嬭瘯鏋朵粨
+        /// </summary>
+        [Description("娴嬭瘯鏋朵粨")]
+        HA64,
+        /// <summary>
+        /// 鎴愬搧浠�
+        /// </summary>
+        [Description("鎴愬搧浠�")]
+        HA71,
+        /// <summary>
+        /// 灏炬暟浠�
+        /// </summary>
+        [Description("灏炬暟浠�")]
+        HA72,
+        /// <summary>
+        /// 鐮斿彂浠�
+        /// </summary>
+        [Description("鐮斿彂浠�")]
+        HA73,
+        /// <summary>
+        /// 鎴愬搧浠撳钩搴�
+        /// </summary>
+        [Description("鎴愬搧浠撳钩搴�")]
+        HA101,
+        /// <summary>
+        /// 骞茶啘浠�
+        /// </summary>
+        [Description("骞茶啘浠�")]
+        HA152,
+        /// <summary>
+        /// 娌瑰ⅷ浠�
+        /// </summary>
+        [Description("娌瑰ⅷ浠�")]
+        HA153
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/AOP/LogAOP.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/AOP/LogAOP.cs"
new file mode 100644
index 0000000..f86165d
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/AOP/LogAOP.cs"
@@ -0,0 +1,337 @@
+锘縰sing Castle.DynamicProxy;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.SignalR;
+using Newtonsoft.Json;
+using StackExchange.Profiling;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.LogHelper;
+
+namespace WIDESEA_Core.AOP
+{
+    /// <summary>
+	/// 鎷︽埅鍣↙ogAOP 缁ф壙IInterceptor鎺ュ彛
+	/// </summary>
+	public class LogAOP : IInterceptor
+    {
+        private readonly IHttpContextAccessor _accessor;
+
+        public LogAOP(IHttpContextAccessor accessor)
+        {
+            _accessor = accessor;
+        }
+
+        /// <summary>
+        /// 瀹炰緥鍖朓Interceptor鍞竴鏂规硶
+        /// </summary>
+        /// <param name="invocation">鍖呭惈琚嫤鎴柟娉曠殑淇℃伅</param>
+        public void Intercept(IInvocation invocation)
+        {
+            string UserName = _accessor.HttpContext?.User?.Identity?.Name;
+            string json;
+            try
+            {
+                if (invocation.Arguments.Any())
+                {
+                    json = JsonConvert.SerializeObject(invocation.Arguments);
+                }
+                else
+                {
+                    json = "鏃犲弬鏁�";
+                }
+            }
+            catch (Exception ex)
+            {
+                json = "鏃犳硶搴忓垪鍖栵紝鍙兘鏄叞濮嗚揪琛ㄨ揪寮忕瓑鍘熷洜閫犳垚锛屾寜鐓ф鏋朵紭鍖栦唬鐮�" + ex.ToString();
+            }
+
+            DateTime startTime = DateTime.Now;
+            AOPLogInfo apiLogAopInfo = new AOPLogInfo
+            {
+                RequestTime = startTime.ToString("yyyy-MM-dd hh:mm:ss fff"),
+                OpUserName = "銆愬綋鍓嶆搷浣滅敤鎴枫�戯細" + UserName,
+                RequestMethodName = "銆愬綋鍓嶆墽琛屾柟娉曘�戯細" + invocation.Method.Name,
+                RequestParamsName = "銆愭惡甯︾殑鍙傛暟鏈夈�戯細" + string.Join(", ", invocation.Arguments.Select(a => (a ?? "").ToString()).ToArray()),
+                RequestParamsData = json
+            };
+
+            var dataIntercept = $"";
+
+            try
+            {
+                MiniProfiler.Current.Step($"鎵ц{invocation.InvocationTarget}.{invocation.Method.Name}()鏂规硶 -> ");
+
+                //MethodParamsValidateAttribute? paramsValidateAttribute = invocation.Method.GetCustomAttribute<MethodParamsValidateAttribute>();
+                //if (paramsValidateAttribute != null) 
+                //{
+                //    foreach (var item in invocation.Arguments)
+                //    {
+
+                //    }
+                //}
+                //鍦ㄨ鎷︽埅鐨勬柟娉曟墽琛屽畬姣曞悗 缁х画鎵ц褰撳墠鏂规硶锛屾敞鎰忔槸琚嫤鎴殑鏄紓姝ョ殑
+                invocation.Proceed();
+                // 寮傛鑾峰彇寮傚父锛屽厛鎵ц
+                if (IsAsyncMethod(invocation.Method))
+                {
+                    #region 鏂规涓�
+
+                    //Wait task execution and modify return value
+                    if (invocation.Method.ReturnType == typeof(Task))
+                    {
+                        invocation.ReturnValue = InternalAsyncHelper.AwaitTaskWithPostActionAndFinally(
+                            (Task)invocation.ReturnValue,
+                            async () => await SuccessAction(invocation, apiLogAopInfo, startTime), /*鎴愬姛鏃舵墽琛�*/
+                            ex =>
+                            {
+                                LogEx(ex, apiLogAopInfo);
+                            });
+                    }
+                    //Task<TResult>
+                    else
+                    {
+                        invocation.ReturnValue = InternalAsyncHelper.CallAwaitTaskWithPostActionAndFinallyAndGetResult(
+                            invocation.Method.ReturnType.GenericTypeArguments[0],
+                            invocation.ReturnValue,
+                            //async () => await SuccessAction(invocation, dataIntercept),/*鎴愬姛鏃舵墽琛�*/
+                            async (o) => await SuccessAction(invocation, apiLogAopInfo, startTime, o), /*鎴愬姛鏃舵墽琛�*/
+                            ex =>
+                            {
+                                LogEx(ex, apiLogAopInfo);
+                            });
+                    }
+
+                    #endregion 鏂规涓�
+
+                    // 濡傛灉鏂规涓�涓嶈锛岃瘯璇曡繖涓柟妗�
+                    //#region 鏂规浜�
+
+                    //var type = invocation.Method.ReturnType;
+                    //var resultProperty = type.GetProperty("Result");
+                    //DateTime endTime = DateTime.Now;
+                    //string ResponseTime = (endTime - startTime).Milliseconds.ToString();
+                    //apiLogAopInfo.ResponseTime = endTime.ToString("yyyy-MM-dd hh:mm:ss fff");
+                    //apiLogAopInfo.ResponseIntervalTime = ResponseTime + "ms";
+                    //apiLogAopInfo.ResponseJsonData = JsonConvert.SerializeObject(resultProperty.GetValue(invocation.ReturnValue));
+
+                    ////dataIntercept += ($"銆愬搷搴旀椂闂淬�戯細{ResponseTime}ms\r\n");
+                    ////dataIntercept += ($"銆愭墽琛屽畬鎴愭椂闂淬�戯細{endTime.ToString("yyyy-MM-dd hh:mm:ss fff")}\r\n");
+                    ////dataIntercept += ($"銆愭墽琛屽畬鎴愮粨鏋溿�戯細{JsonConvert.SerializeObject(resultProperty.GetValue(invocation.ReturnValue))}\r\n");
+
+                    //Parallel.For(0, 1, e =>
+                    //{
+                    //    //LogLock.OutLogAOP("AOPLog", new string[] { dataIntercept });
+                    //    LogLock.OutLogAOP("AOPLog", new string[] { apiLogAopInfo.GetType().ToString() + " - ResponseJsonDataType:" + type, JsonConvert.SerializeObject(apiLogAopInfo) });
+                    //});
+
+                    //#endregion
+                }
+                else
+                {
+                    // 鍚屾1
+                    string jsonResult;
+                    try
+                    {
+                        jsonResult = JsonConvert.SerializeObject(invocation.ReturnValue);
+                    }
+                    catch (Exception ex)
+                    {
+                        jsonResult = "鏃犳硶搴忓垪鍖栵紝鍙兘鏄叞濮嗚揪琛ㄨ揪寮忕瓑鍘熷洜閫犳垚锛屾寜鐓ф鏋朵紭鍖栦唬鐮�" + ex.ToString();
+                    }
+
+                    var type = invocation.Method.ReturnType;
+                    var resultProperty = type.GetProperty("Result");
+                    DateTime endTime = DateTime.Now;
+                    string ResponseTime = (endTime - startTime).Milliseconds.ToString();
+                    apiLogAopInfo.ResponseTime = endTime.ToString("yyyy-MM-dd hh:mm:ss fff");
+                    apiLogAopInfo.ResponseIntervalTime = ResponseTime + "ms";
+                    apiLogAopInfo.ResponseJsonData = jsonResult;
+                    Parallel.For(0, 1, e =>
+                    {
+                        LogLock.OutLogAOP("鍏ㄥ眬鏃ュ織AOP", new string[] { apiLogAopInfo.GetType().ToString(), JsonConvert.SerializeObject(apiLogAopInfo) });
+                    });
+                }
+            }
+            catch (Exception ex) // 鍚屾2
+            {
+                LogEx(ex, apiLogAopInfo);
+                throw;
+            }
+        }
+
+        private async Task SuccessAction(IInvocation invocation, AOPLogInfo apiLogAopInfo, DateTime startTime, object o = null)
+        {
+            DateTime endTime = DateTime.Now;
+            string ResponseTime = (endTime - startTime).Milliseconds.ToString();
+            apiLogAopInfo.ResponseTime = endTime.ToString("yyyy-MM-dd hh:mm:ss fff");
+            apiLogAopInfo.ResponseIntervalTime = ResponseTime + "ms";
+            apiLogAopInfo.ResponseJsonData = JsonConvert.SerializeObject(o);
+
+            await Task.Run(() =>
+            {
+                Parallel.For(0, 1, e =>
+                {
+                    //LogLock.OutSql2Log("AOPLog", new string[] { JsonConvert.SerializeObject(apiLogAopInfo) });
+                    LogLock.OutLogAOP("鍏ㄥ眬鏃ュ織AOP", new string[] { apiLogAopInfo.GetType().ToString(), JsonConvert.SerializeObject(apiLogAopInfo) });
+                });
+            });
+        }
+
+        private void LogEx(Exception ex, AOPLogInfo dataIntercept)
+        {
+            if (ex != null)
+            {
+                //鎵ц鐨� service 涓紝鏀跺綍寮傚父
+                MiniProfiler.Current.CustomTiming("Errors锛�", ex.Message);
+                //鎵ц鐨� service 涓紝鎹曡幏寮傚父
+                AOPLogExInfo apiLogAopExInfo = new AOPLogExInfo
+                {
+                    ExMessage = ex.Message,
+                    InnerException = "InnerException-鍐呴儴寮傚父:\r\n" + (ex.InnerException == null ? "" : ex.InnerException.InnerException?.ToString()) +
+                                     "\r\nStackTrace-鍫嗘爤璺熻釜:\r\n" + (ex.StackTrace == null ? "" : ex.StackTrace.ToString()),
+                    ApiLogAopInfo = dataIntercept
+                };
+                // 寮傚父鏃ュ織閲屾湁璇︾粏鐨勫爢鏍堜俊鎭�
+                Parallel.For(0, 1, e =>
+                {
+                    LogLock.OutLogAOP("鍏ㄥ眬寮傚父閿欒鏃ュ織AOP", new string[] { apiLogAopExInfo.GetType().ToString(), JsonConvert.SerializeObject(apiLogAopExInfo) });
+                });
+            }
+        }
+
+        public static bool IsAsyncMethod(MethodInfo method)
+        {
+            return
+                method.ReturnType == typeof(Task) ||
+                method.ReturnType.IsGenericType && method.ReturnType.GetGenericTypeDefinition() == typeof(Task<>)
+            ;
+        }
+    }
+
+    internal static class InternalAsyncHelper
+    {
+        public static async Task AwaitTaskWithPostActionAndFinally(Task actualReturnValue, Func<Task> postAction, Action<Exception> finalAction)
+        {
+            Exception exception = null;
+
+            try
+            {
+                await actualReturnValue;
+                await postAction();
+            }
+            catch (Exception ex)
+            {
+                exception = ex;
+            }
+            finally
+            {
+                finalAction(exception);
+            }
+        }
+
+        public static async Task<T> AwaitTaskWithPostActionAndFinallyAndGetResult<T>(Task<T> actualReturnValue, Func<object, Task> postAction,
+            Action<Exception> finalAction)
+        {
+            Exception exception = null;
+            try
+            {
+                var result = await actualReturnValue;
+                await postAction(result);
+                return result;
+            }
+            catch (Exception ex)
+            {
+                exception = ex;
+                throw;
+            }
+            finally
+            {
+                finalAction(exception);
+            }
+        }
+
+        public static object CallAwaitTaskWithPostActionAndFinallyAndGetResult(Type taskReturnType, object actualReturnValue,
+            Func<object, Task> action, Action<Exception> finalAction)
+        {
+            return typeof(InternalAsyncHelper)
+                .GetMethod("AwaitTaskWithPostActionAndFinallyAndGetResult", BindingFlags.Public | BindingFlags.Static)
+                .MakeGenericMethod(taskReturnType)
+                .Invoke(null, new object[] { actualReturnValue, action, finalAction });
+        }
+    }
+
+    public class AOPLogInfo
+    {
+        /// <summary>
+        /// 璇锋眰鏃堕棿
+        /// </summary>
+        [Description("璇锋眰鏃堕棿")]
+        public string RequestTime { get; set; } = string.Empty;
+
+        /// <summary>
+        /// 鎿嶄綔浜哄憳
+        /// </summary>
+        [Description("鎿嶄綔浜哄憳")]
+        public string OpUserName { get; set; } = string.Empty;
+
+        /// <summary>
+        /// 璇锋眰鏂规硶鍚�
+        /// </summary>
+        [Description("璇锋眰鏂规硶鍚�")]
+        public string RequestMethodName { get; set; } = string.Empty;
+
+        /// <summary>
+        /// 璇锋眰鍙傛暟鍚�
+        /// </summary>
+        [Description("璇锋眰鍙傛暟鍚�")]
+        public string RequestParamsName { get; set; } = string.Empty;
+
+        /// <summary>
+        /// 璇锋眰鍙傛暟鏁版嵁JSON
+        /// </summary>
+        [Description("璇锋眰鍙傛暟鏁版嵁JSON")]
+        public string RequestParamsData { get; set; } = string.Empty;
+
+        /// <summary>
+        /// 璇锋眰鍝嶅簲闂撮殧鏃堕棿
+        /// </summary>
+        [Description("璇锋眰鍝嶅簲闂撮殧鏃堕棿")]
+        public string ResponseIntervalTime { get; set; } = string.Empty;
+
+        /// <summary>
+        /// 鍝嶅簲鏃堕棿
+        /// </summary>
+        [Description("鍝嶅簲鏃堕棿")]
+        public string ResponseTime { get; set; } = string.Empty;
+
+        /// <summary>
+        /// 鍝嶅簲缁撴灉
+        /// </summary>
+        [Description("鍝嶅簲缁撴灉")]
+        public string ResponseJsonData { get; set; } = string.Empty;
+    }
+
+    public class AOPLogExInfo
+    {
+        public AOPLogInfo ApiLogAopInfo { get; set; }
+
+        /// <summary>
+        /// 寮傚父
+        /// </summary>
+        [Description("寮傚父")]
+        public string InnerException { get; set; } = string.Empty;
+
+        /// <summary>
+        /// 寮傚父淇℃伅
+        /// </summary>
+        [Description("寮傚父淇℃伅")]
+        public string ExMessage { get; set; } = string.Empty;
+    }
+}
\ No newline at end of file
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/AOP/SqlSugarAop.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/AOP/SqlSugarAop.cs"
new file mode 100644
index 0000000..14b05f2
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/AOP/SqlSugarAop.cs"
@@ -0,0 +1,158 @@
+锘縰sing OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
+using SqlSugar;
+using StackExchange.Profiling;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+using WIDESEA_Core.CodeConfigEnum;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.DB;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Seed;
+using WIDESEA_Core.Tenants;
+using static Org.BouncyCastle.Math.EC.ECCurve;
+
+namespace WIDESEA_Core.AOP
+{
+    public static class SqlSugarAop
+    {
+        public static void DataExecuting(object oldValue, DataFilterModel entityInfo)
+        {
+            if (entityInfo.OperationType == DataFilterType.InsertByObject)
+            {
+                PropertyInfo propertyInfo = entityInfo.EntityColumnInfo.PropertyInfo;
+                CodeRuleAttribute? codeRuleAttribute = propertyInfo.GetCustomAttribute<CodeRuleAttribute>();
+                if (codeRuleAttribute != null)
+                {
+                    if (propertyInfo.GetValue(entityInfo.EntityValue) == null)
+                    {
+                        SqlSugarClient sugarClient = new SqlSugarClient(new ConnectionConfig
+                        {
+                            ConfigId = MainDb.CurrentDbConnId,
+                            ConnectionString = DBContext.GetMainConnectionDb().Connection,
+                            IsAutoCloseConnection = true,
+                            DbType = MainDb.DbType,
+                        });
+                        dynamic ruleConfig = sugarClient.Queryable(MainDb.CodeRuleConfig, "x").Where(nameof(CodeRuleAttribute.RuleCode), "=", codeRuleAttribute.RuleCode.ToString()).First();
+                        if (ruleConfig != null)
+                        {
+                            string code = CreateCodeByRule(ruleConfig, sugarClient);
+                            propertyInfo.SetValue(entityInfo.EntityValue, code, null);
+                        }
+                    }
+                }
+
+                SequenceAttribute? sequenceAttirbute = propertyInfo.GetCustomAttribute<SequenceAttribute>();
+                if (sequenceAttirbute != null)
+                {
+                    if (propertyInfo.GetValue(entityInfo.EntityValue)?.ObjToInt() <= 0)
+                    {
+                        SqlSugarClient sugarClient = new SqlSugarClient(new ConnectionConfig
+                        {
+                            ConfigId = MainDb.CurrentDbConnId,
+                            ConnectionString = DBContext.GetMainConnectionDb().Connection,
+                            IsAutoCloseConnection = true,
+                            DbType = MainDb.DbType,
+                        });
+                        int count = sugarClient.Ado.GetScalar($"SELECT COUNT(*) FROM sys.sequences WHERE name = '{sequenceAttirbute.SequenceName}'").ObjToInt();
+                        if (count == 0)
+                        {
+                            string sql = $"CREATE SEQUENCE {sequenceAttirbute.SequenceName} AS [int] START WITH {sequenceAttirbute.StartWith} INCREMENT BY {sequenceAttirbute.Increment} MINVALUE {sequenceAttirbute.SeqMinValue} MAXVALUE {sequenceAttirbute.SeqMaxValue} {(sequenceAttirbute.IsCycle ? "CYCLE" : "")} CACHE";
+                            sugarClient.Ado.ExecuteCommand(sql);
+                        }
+                        int seq = sugarClient.Ado.GetScalar($"SELECT NEXT VALUE FOR {sequenceAttirbute.SequenceName}").ObjToInt();
+                        propertyInfo.SetValue(entityInfo.EntityValue, seq, null);
+                    }
+                }
+            }
+
+            if (entityInfo.EntityValue is BaseEntity baseEntity)
+            {
+                // 鏂板鎿嶄綔
+                if (entityInfo.OperationType == DataFilterType.InsertByObject && entityInfo.PropertyName == nameof(BaseEntity.CreateDate))
+                {
+                    baseEntity.CreateDate = DateTime.Now;
+                }
+
+                if (entityInfo.OperationType == DataFilterType.UpdateByObject && entityInfo.PropertyName == nameof(BaseEntity.ModifyDate))
+                {
+                    baseEntity.ModifyDate = DateTime.Now;
+                }
+
+                //if (App.User?.UserId > 0)
+                {
+                    switch (entityInfo.OperationType)
+                    {
+                        case DataFilterType.UpdateByObject:
+                            baseEntity.Modifier = App.User.UserName;
+                            break;
+                        case DataFilterType.InsertByObject:
+                            baseEntity.Creater = App.User.UserName;
+                            break;
+                    }
+                }
+            }
+
+            if (entityInfo.EntityValue is IBaseHistoryEntity baseHistoryEntity)
+            {
+                if (entityInfo.OperationType == DataFilterType.InsertByObject && entityInfo.PropertyName == nameof(IBaseHistoryEntity.InsertTime))
+                {
+                    baseHistoryEntity.InsertTime = DateTime.Now;
+                }
+            }
+        }
+
+        private static string CreateCodeByRule(dynamic ruleConfig, SqlSugarClient sugarClient)
+        {
+            string code = string.Empty;
+            DateTime dataTime = DateTime.Now;
+            DateTime now = DateTime.Now;
+            try
+            {
+                if (ruleConfig.ModifyDate != null)
+                {
+                    dataTime = Convert.ToDateTime(ruleConfig.ModifyDate);
+                }
+                else
+                {
+                    dataTime = Convert.ToDateTime(ruleConfig.CreateDate);
+                }
+
+                if (now.Year == dataTime.Year && now.Month == dataTime.Month && now.Day == dataTime.Day)
+                {
+                    now = dataTime;
+                    ruleConfig.CurrentVal = Convert.ToInt32(ruleConfig.CurrentVal) + 1;
+                }
+                else
+                {
+                    ruleConfig.CurrentVal = 1;
+                }
+
+                ruleConfig.ModifyDate = DateTime.Now;
+
+                code = ruleConfig.Format;
+                code = code.Replace($"[{CodeFormatTypeEnum.YYYY}]", now.Year.ToString().PadLeft(4, '0'));
+                code = code.Replace($"[{CodeFormatTypeEnum.MM}]", now.Month.ToString().PadLeft(2, '0'));
+                code = code.Replace($"[{CodeFormatTypeEnum.DD}]", now.Day.ToString().PadLeft(2, '0'));
+                code = code.Replace($"[{CodeFormatTypeEnum.ST}]", ruleConfig.StartStr.ToString());
+                code = code.Replace($"[{CodeFormatTypeEnum.NUM}]", ruleConfig.CurrentVal.ToString().PadLeft(ruleConfig.Length ?? 0, '0'));
+            }
+            catch (Exception ex)
+            {
+
+            }
+            finally
+            {
+                Dictionary<string, object> keyValuePairs = new Dictionary<string, object>() { { nameof(ruleConfig.CurrentVal), ruleConfig.CurrentVal }, { nameof(ruleConfig.Id), ruleConfig.Id }, { nameof(ruleConfig.ModifyDate), DateTime.Now } };
+                sugarClient.Updateable(keyValuePairs).AS(MainDb.CodeRuleConfig).WhereColumns(nameof(ruleConfig.Id)).ExecuteCommand();
+            }
+            return code;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/App.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/App.cs"
new file mode 100644
index 0000000..f15e9c1
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/App.cs"
@@ -0,0 +1,211 @@
+锘縰sing HslCommunication.WebSocket;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Options;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Core;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.HttpContextUser;
+
+namespace WIDESEA_Core
+{
+    public class App
+    {
+        static App()
+        {
+            EffectiveTypes = Assemblies.SelectMany(GetTypes);
+            //SocketServer = new WebSocketServer();
+            //SocketServer.ServerStart(9295);
+        }
+
+        private static bool _isRun;
+
+        /// <summary>鏄惁姝e湪杩愯</summary>
+        public static bool IsBuild { get; set; }
+
+        public static bool IsRun
+        {
+            get => _isRun;
+            set => _isRun = IsBuild = value;
+        }
+
+        /// <summary>
+        /// 鏈夋晥鏈�
+        /// </summary>
+        public static DateTime? ExpDateTime = null;
+
+        /// <summary>搴旂敤鏈夋晥绋嬪簭闆�</summary>
+        public static readonly IEnumerable<Assembly> Assemblies = RuntimeExtension.GetAllAssemblies();
+
+        /// <summary>鏈夋晥绋嬪簭闆嗙被鍨�</summary>
+        public static readonly IEnumerable<Type> EffectiveTypes;
+
+        /// <summary>浼樺厛浣跨敤App.GetService()鎵嬪姩鑾峰彇鏈嶅姟</summary>
+        public static IServiceProvider RootServices => IsRun || IsBuild ? InternalApp.RootServices : null;
+
+        /// <summary>鑾峰彇Web涓绘満鐜锛屽锛屾槸鍚︽槸寮�鍙戠幆澧冿紝鐢熶骇鐜绛�</summary>
+        public static IWebHostEnvironment WebHostEnvironment => InternalApp.WebHostEnvironment;
+
+        /// <summary>鑾峰彇娉涘瀷涓绘満鐜锛屽锛屾槸鍚︽槸寮�鍙戠幆澧冿紝鐢熶骇鐜绛�</summary>
+        public static IHostEnvironment HostEnvironment => InternalApp.HostEnvironment;
+
+        /// <summary>鍏ㄥ眬閰嶇疆閫夐」</summary>
+        public static IConfiguration Configuration => InternalApp.Configuration;
+
+        /// <summary>
+        /// 鑾峰彇璇锋眰涓婁笅鏂�
+        /// </summary>
+        public static HttpContext HttpContext => RootServices?.GetService<IHttpContextAccessor>()?.HttpContext;
+
+        public static IUser User => GetService<IUser>();
+
+        #region Service
+
+        /// <summary>瑙f瀽鏈嶅姟鎻愪緵鍣�</summary>
+        /// <param name="serviceType"></param>
+        /// <param name="mustBuild"></param>
+        /// <param name="throwException"></param>
+        /// <returns></returns>
+        public static IServiceProvider GetServiceProvider(Type serviceType, bool mustBuild = false, bool throwException = true)
+        {
+            if (App.HostEnvironment == null || App.RootServices != null &&
+                InternalApp.InternalServices
+                    .Where((u =>
+                        u.ServiceType ==
+                        (serviceType.IsGenericType ? serviceType.GetGenericTypeDefinition() : serviceType)))
+                    .Any((u => u.Lifetime == ServiceLifetime.Singleton)))
+                return App.RootServices;
+
+            //鑾峰彇璇锋眰鐢熷瓨鍛ㄦ湡鐨勬湇鍔�
+            if (HttpContext?.RequestServices != null)
+                return HttpContext.RequestServices;
+
+            if (App.RootServices != null)
+            {
+                IServiceScope scope = RootServices.CreateScope();
+                return scope.ServiceProvider;
+            }
+
+            if (mustBuild)
+            {
+                if (throwException)
+                {
+                    throw new ApplicationException("褰撳墠涓嶅彲鐢紝蹇呴』瑕佺瓑鍒� WebApplication Build鍚�");
+                }
+
+                return default;
+            }
+
+            ServiceProvider serviceProvider = InternalApp.InternalServices.BuildServiceProvider();
+            return serviceProvider;
+        }
+
+        public static TService GetService<TService>(bool mustBuild = true) where TService : class
+        {
+            TService test = App.GetService(typeof(TService), null, mustBuild) as TService;
+            return test;
+        }
+
+        /// <summary>鑾峰彇璇锋眰鐢熷瓨鍛ㄦ湡鐨勬湇鍔�</summary>
+        /// <typeparam name="TService"></typeparam>
+        /// <param name="serviceProvider"></param>
+        /// <param name="mustBuild"></param>
+        /// <returns></returns>
+        public static TService GetService<TService>(IServiceProvider serviceProvider, bool mustBuild = true)
+            where TService : class => (serviceProvider ?? App.GetServiceProvider(typeof(TService), mustBuild, false))?.GetService<TService>();
+
+        /// <summary>鑾峰彇璇锋眰鐢熷瓨鍛ㄦ湡鐨勬湇鍔�</summary>
+        /// <param name="type"></param>
+        /// <param name="serviceProvider"></param>
+        /// <param name="mustBuild"></param>
+        /// <returns></returns>
+        public static object GetService(Type type, IServiceProvider serviceProvider = null, bool mustBuild = true)
+        {
+            IServiceProvider? obj2 = (serviceProvider ?? App.GetServiceProvider(type, mustBuild, false));
+            object obj = obj2?.GetService(type);
+            return obj;
+        }
+
+
+        #endregion
+
+        #region private
+
+        /// <summary>鍔犺浇绋嬪簭闆嗕腑鐨勬墍鏈夌被鍨�</summary>
+        /// <param name="ass"></param>
+        /// <returns></returns>
+        private static IEnumerable<Type> GetTypes(Assembly ass)
+        {
+            Type[] source = Array.Empty<Type>();
+            try
+            {
+                source = ass.GetTypes();
+            }
+            catch
+            {
+                //$@"Error load `{ass.FullName}` assembly.".WriteErrorLine();
+            }
+
+            return source.Where(u => u.IsPublic);
+        }
+
+        #endregion
+
+        #region Options
+
+        /// <summary>鑾峰彇閰嶇疆</summary>
+        /// <typeparam name="TOptions">寮虹被鍨嬮�夐」绫�</typeparam>
+        /// <returns>TOptions</returns>
+        public static TOptions GetConfig<TOptions>()
+            where TOptions : class, IConfigurableOptions
+        {
+            TOptions instance = App.Configuration
+                .GetSection(ConfigurableOptions.GetConfigurationPath(typeof(TOptions)))
+                .Get<TOptions>();
+            return instance;
+        }
+
+        /// <summary>鑾峰彇閫夐」</summary>
+        /// <typeparam name="TOptions">寮虹被鍨嬮�夐」绫�</typeparam>
+        /// <param name="serviceProvider"></param>
+        /// <returns>TOptions</returns>
+        public static TOptions GetOptions<TOptions>(IServiceProvider serviceProvider = null) where TOptions : class, new()
+        {
+            IOptions<TOptions> service = App.GetService<IOptions<TOptions>>(serviceProvider ?? App.RootServices, false);
+            return service?.Value;
+        }
+
+        /// <summary>鑾峰彇閫夐」</summary>
+        /// <typeparam name="TOptions">寮虹被鍨嬮�夐」绫�</typeparam>
+        /// <param name="serviceProvider"></param>
+        /// <returns>TOptions</returns>
+        public static TOptions GetOptionsMonitor<TOptions>(IServiceProvider serviceProvider = null)
+            where TOptions : class, new()
+        {
+            IOptionsMonitor<TOptions> service =
+                App.GetService<IOptionsMonitor<TOptions>>(serviceProvider ?? App.RootServices, false);
+            return service?.CurrentValue;
+        }
+
+        /// <summary>鑾峰彇閫夐」</summary>
+        /// <typeparam name="TOptions">寮虹被鍨嬮�夐」绫�</typeparam>
+        /// <param name="serviceProvider"></param>
+        /// <returns>TOptions</returns>
+        public static TOptions GetOptionsSnapshot<TOptions>(IServiceProvider serviceProvider = null)
+            where TOptions : class, new()
+        {
+            IOptionsSnapshot<TOptions> service = App.GetService<IOptionsSnapshot<TOptions>>(serviceProvider, false);
+            return service?.Value;
+        }
+
+        #endregion
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Attributes/AnalysisRuleAttribute.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Attributes/AnalysisRuleAttribute.cs"
new file mode 100644
index 0000000..94cdf32
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Attributes/AnalysisRuleAttribute.cs"
@@ -0,0 +1,34 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.CodeConfigEnum;
+using WIDESEA_Core.Enums;
+
+namespace WIDESEA_Core.Attributes
+{
+    [AttributeUsage(AttributeTargets.Property)]
+    public class AnalysisItemRuleAttribute : Attribute
+    {
+        public AnalysisFormatTypeEnum AnalysisFormaType { get; set; }
+
+        public int Length { get; set; }
+
+        public AnalysisItemRuleAttribute(AnalysisFormatTypeEnum analysisFormaType)
+        {
+            AnalysisFormaType = analysisFormaType;
+        }
+    }
+
+    [AttributeUsage(AttributeTargets.Class)]
+    public class AnalysisRuleAttribute : Attribute
+    {
+        public AnalysisRuleEnum AnalysisRule { get; set; } = AnalysisRuleEnum.Split;
+
+        public AnalysisRuleAttribute()
+        {
+
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Attributes/CodeRuleAttribute.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Attributes/CodeRuleAttribute.cs"
new file mode 100644
index 0000000..a64eb98
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Attributes/CodeRuleAttribute.cs"
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.CodeConfigEnum;
+using WIDESEA_Core.Enums;
+
+namespace WIDESEA_Core.Attributes
+{
+    [AttributeUsage(AttributeTargets.Property)]
+    public class CodeRuleAttribute : Attribute
+    {
+        public RuleCodeEnum RuleCode { get; set; }
+        public CodeRuleAttribute(RuleCodeEnum ruleCode)
+        {
+            RuleCode = ruleCode;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Attributes/CustomValidationAttribute.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Attributes/CustomValidationAttribute.cs"
new file mode 100644
index 0000000..bbb7f62
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Attributes/CustomValidationAttribute.cs"
@@ -0,0 +1,25 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Attributes
+{
+    public class CustomValidationAttribute : ValidationAttribute
+    {
+        protected override ValidationResult? IsValid(object? value, ValidationContext validationContext)
+        {
+            if(value is string valueString)
+            {
+                if (string.IsNullOrEmpty(valueString)) 
+                {
+                    return new ValidationResult("閿欒");
+                }
+            }
+
+            return ValidationResult.Success;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Attributes/MethodParamsValidateAttribute.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Attributes/MethodParamsValidateAttribute.cs"
new file mode 100644
index 0000000..e36ddf8
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Attributes/MethodParamsValidateAttribute.cs"
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Attributes
+{
+    [AttributeUsage(AttributeTargets.Method)]
+    public class MethodParamsValidateAttribute : Attribute
+    {
+        
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Attributes/ModelValidateAttribute.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Attributes/ModelValidateAttribute.cs"
new file mode 100644
index 0000000..0f8b12b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Attributes/ModelValidateAttribute.cs"
@@ -0,0 +1,109 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Attributes
+{
+    [AttributeUsage(AttributeTargets.Property)]
+    public class PropertyValidateAttribute : Attribute
+    {
+        /// <summary>
+        /// 鏈�澶у��
+        /// </summary>
+        public int MaxValue { get; set; } = int.MaxValue;
+
+        /// <summary>
+        /// 鏈�灏忓��
+        /// </summary>
+        public int MinValue { get; set; } = int.MinValue;
+
+        /// <summary>
+        /// 闈炵┖
+        /// </summary>
+        public bool NotNullAndEmpty { get; set; } = true;
+
+        /// <summary>
+        /// 鏄惁鍖呭惈鏈�澶у��
+        /// </summary>
+        public bool IsContainMaxValue { get; set; } = false;
+
+        /// <summary>
+        /// 鏄惁鍖呭惈鏈�灏忓��
+        /// </summary>
+        public bool IsContainMinValue { get; set; } = false;
+
+        /// <summary>
+        /// 鏍规嵁鍏朵粬灞炴�ч潪绌哄垽鏂綋鍓嶆槸鍚︿负闈炵┖
+        /// </summary>
+        public string NotNullAndEmptyWithProperty { get; set; }
+
+        /// <summary>
+        /// 鏍规嵁鍏朵粬灞炴�у�煎垽鏂綋鍓嶆槸鍚︿负闈炵┖(鏍煎紡銆恘ew string[]{ "灞炴�у悕绉�", "灞炴�у��" }銆�)
+        /// </summary>
+        public string[] NotNullAndEmptyWithPropertyAndValue { get; set; }
+
+        /// <summary>
+        /// 璇存槑
+        /// </summary>
+        public string Description { get; set; }
+
+        /// <summary>
+        /// 妫�鏌ョ害鏉燂紝灞炴�у�煎彧鍏佽鏄暟缁勪腑鐨勫��
+        /// </summary>
+        public object[] Check { get; set; }
+
+        /// <summary>
+        /// 浠�...寮�澶�
+        /// </summary>
+        public string StartWith { get; set; }
+
+        /// <summary>
+        /// 浠�...缁撳熬
+        /// </summary>
+        public string EndWith { get; set; }
+
+        /// <summary>
+        /// 鏈�灏忛暱搴�
+        /// </summary>
+        public int MinLength { get; set; } = 0;
+
+        /// <summary>
+        /// 鏈�澶ч暱搴�
+        /// </summary>
+        public int MaxLength { get; set; } = int.MaxValue;
+
+        public PropertyValidateAttribute(string description)
+        {
+            if (!string.IsNullOrEmpty(description))
+                Description = description;
+        }
+    }
+
+    [AttributeUsage(AttributeTargets.Class)]
+    public class ModelValidateAttribute : Attribute
+    {
+        public ModelValidateType ModelValidateType { get; } = ModelValidateType.SimpleValidate;
+
+        public Func<object, (bool, string, object?)> CustomValidateMethod { get; set; }
+
+        public object ErrorResponse { get; set; }
+
+        public ModelValidateAttribute()
+        {
+        }
+
+        public ModelValidateAttribute(Func<object, (bool, string, object?)> customValidateMethod)
+        {
+            CustomValidateMethod = customValidateMethod;
+        }
+    }
+
+    public enum ModelValidateType
+    {
+        SimpleValidate,
+        CustomValidate,
+        SimpleAndCustom
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Attributes/SequenceAttirbute.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Attributes/SequenceAttirbute.cs"
new file mode 100644
index 0000000..bee2047
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Attributes/SequenceAttirbute.cs"
@@ -0,0 +1,30 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Attributes
+{
+    [AttributeUsage(AttributeTargets.Property)]
+    public class SequenceAttribute : Attribute
+    {
+        public string SequenceName { get; set; }
+
+        public int SeqMaxValue { get; set; } = int.MaxValue;
+
+        public int SeqMinValue { get; set; } = 1;
+
+        public int StartWith { get; set; } = 1;
+
+        public int Increment { get; set; } = 1;
+
+        public bool IsCycle { get; set; } = true;
+
+        public SequenceAttribute(string sequenceName, int seqMaxValue)
+        {
+            SequenceName = sequenceName;
+            SeqMaxValue = seqMaxValue;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Attributes/ValueChangeAttribute.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Attributes/ValueChangeAttribute.cs"
new file mode 100644
index 0000000..0e73a58
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Attributes/ValueChangeAttribute.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Attributes
+{
+    [AttributeUsage(AttributeTargets.Property)]
+    public class ValueChangeAttribute : Attribute
+    {
+        public bool IsMinitor { get; set; } = true;
+        public ValueChangeAttribute() 
+        {
+
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Authorization/AuthorizationResponse.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Authorization/AuthorizationResponse.cs"
new file mode 100644
index 0000000..3db0e6a
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Authorization/AuthorizationResponse.cs"
@@ -0,0 +1,46 @@
+锘縰sing Microsoft.AspNetCore.Mvc.Filters;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.IdentityModel.Tokens.Jwt;
+using System.Linq;
+using System.Net;
+using System.Security.Claims;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Const;
+
+namespace WIDESEA_Core.Authorization
+{
+    public static class AuthorizationResponse
+    {
+        public static AuthorizationFilterContext FilterResult(
+          this AuthorizationFilterContext context,
+            HttpStatusCode statusCode,
+            string message = null)
+        {
+            context.Result = new ContentResult()
+            {
+                Content = new { message, status = false, code = (int)statusCode }.Serialize(),
+                ContentType = "application/json",
+                StatusCode = (int)statusCode
+            };
+            //Logger.Info(LoggerType.ApiAuthorize, message);
+            return context;
+        }
+        public static AuthorizationFilterContext Unauthorized(this AuthorizationFilterContext context, string message = null)
+        {
+            return context.FilterResult(HttpStatusCode.Unauthorized, message);
+        }
+        //涓嶉�氳繃JWT楠岃瘉鐨勶紝鐩存帴灏嗙敤鎴蜂俊鎭紦瀛樿捣鏉�
+        public static void AddIdentity(this AuthorizationFilterContext context, int? userId = null)
+        {
+            int _userId = userId ?? JwtHelper.GetUserId(context.HttpContext.Request.Headers[AppSecret.TokenHeaderName]);
+            if (_userId <= 0) return;
+            //灏嗙敤鎴稩d缂撳瓨鍒颁笂涓嬫枃(鎴栬�呰嚜瀹氫竴涓璞★紝閫氳繃DI浠ddScoped鏂瑰紡娉ㄥ叆涓婁笅鏂囨潵绠$悊鐢ㄦ埛淇℃伅)
+            var claims = new Claim[] { new Claim(JwtRegisteredClaimNames.Jti, _userId.ToString()) };
+            context.HttpContext.User.AddIdentity(new ClaimsIdentity(claims));
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Authorization/AuthorizationSetup.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Authorization/AuthorizationSetup.cs"
new file mode 100644
index 0000000..31cff24
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Authorization/AuthorizationSetup.cs"
@@ -0,0 +1,67 @@
+锘縰sing Microsoft.AspNetCore.Authentication.JwtBearer;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.IdentityModel.Tokens;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Security.Claims;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.Authorization
+{
+    /// <summary>
+    /// 绯荤粺 鎺堟潈鏈嶅姟 閰嶇疆
+    /// </summary>
+    public static class AuthorizationSetup
+    {
+        /// <summary>
+        /// 绯荤粺 鎺堟潈鏈嶅姟 閰嶇疆
+        /// </summary>
+        /// <param name="services"></param>
+        /// <exception cref="ArgumentNullException"></exception>
+        public static void AddAuthorizationSetup(this IServiceCollection services)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+            
+            services.AddAuthentication(options =>
+            {
+                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
+                options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
+                options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
+            })
+             .AddJwtBearer(options =>
+             {
+                 options.TokenValidationParameters = new TokenValidationParameters
+                 {
+                     SaveSigninToken = true,//淇濆瓨token,鍚庡彴楠岃瘉token鏄惁鐢熸晥(閲嶈)
+                     ValidateIssuer = true,//鏄惁楠岃瘉Issuer
+                     ValidateAudience = true,//鏄惁楠岃瘉Audience
+                     ValidateLifetime = true,//鏄惁楠岃瘉澶辨晥鏃堕棿
+                     ValidateIssuerSigningKey = true,//鏄惁楠岃瘉SecurityKey
+                     ValidAudience = AppSecret.Audience,//Audience
+                     ValidIssuer = AppSecret.Issuer,//Issuer锛岃繖涓ら」鍜屽墠闈㈢鍙慾wt鐨勮缃竴鑷�
+                     IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(AppSecret.JWT))
+                 };
+                 options.Events = new JwtBearerEvents()
+                 {
+                     OnChallenge = context =>
+                     {
+                         context.HandleResponse();
+                         context.Response.Clear();
+                         context.Response.ContentType = "application/json";
+                         context.Response.StatusCode = 401;
+                         context.Response.WriteAsync(new { message = "鎺堟潈鏈�氳繃", status = false, code = 401 }.Serialize());
+                         return Task.CompletedTask;
+                     }
+                 };
+             });
+
+            services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Authorization/JwtHelper.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Authorization/JwtHelper.cs"
new file mode 100644
index 0000000..80b1ddc
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Authorization/JwtHelper.cs"
@@ -0,0 +1,121 @@
+锘縰sing Microsoft.IdentityModel.Tokens;
+using System;
+using System.Collections.Generic;
+using System.IdentityModel.Tokens.Jwt;
+using System.Linq;
+using System.Security.Claims;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.HttpContextUser;
+
+namespace WIDESEA_Core.Authorization
+{
+    public class JwtHelper
+    {
+
+        /// <summary>
+        /// 鐢熸垚JWT
+        /// </summary>
+        /// <param name="serInfo"></param>
+        /// <returns></returns>
+        public static string IssueJwt(TokenModelJwt tokenModel)
+        {
+            string exp = $"{new DateTimeOffset(DateTime.Now.AddMinutes(/*tokenModel.UserId == 1 ? 43200 : */AppSettings.Get("ExpMinutes").ObjToInt())).ToUnixTimeSeconds()}";
+            List<Claim> claims = new List<Claim>
+                {
+                    new Claim(JwtRegisteredClaimNames.Jti, tokenModel.UserId.ToString()),
+                    new Claim(JwtRegisteredClaimNames.Iat,  $"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}"),
+                    new Claim(JwtRegisteredClaimNames.Nbf, $"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}") ,
+                    //JWT杩囨湡鏃堕棿
+                    //榛樿璁剧疆jwt杩囨湡鏃堕棿120鍒嗛挓
+                    new Claim (JwtRegisteredClaimNames.Exp, exp),
+                    new Claim(JwtRegisteredClaimNames.Iss, AppSecret.Issuer),
+                    new Claim(JwtRegisteredClaimNames.Aud, AppSecret.Audience),
+                    new Claim(ClaimTypes.Role, tokenModel.RoleId.ToString()),
+                    new Claim(ClaimTypes.Name, tokenModel.UserName),
+                    new Claim(nameof(TokenModelJwt.TenantId), tokenModel.TenantId.ToString())
+               };
+
+            // 鍙互灏嗕竴涓敤鎴风殑澶氫釜瑙掕壊鍏ㄩ儴璧嬩簣锛�
+            // 浣滆�咃細DX 鎻愪緵鎶�鏈敮鎸侊紱
+            //绉橀挜16浣�
+            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(AppSecret.JWT));
+            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
+            JwtSecurityToken securityToken = new JwtSecurityToken(issuer: AppSecret.Issuer, claims: claims, signingCredentials: creds);
+            string jwt = new JwtSecurityTokenHandler().WriteToken(securityToken);
+            return jwt;
+        }
+
+        /// <summary>
+        /// 瑙f瀽
+        /// </summary>
+        /// <param name="jwtStr"></param>
+        /// <returns></returns>
+        public static UserInfo SerializeJwt(string jwtStr)
+        {
+            var jwtHandler = new JwtSecurityTokenHandler();
+            JwtSecurityToken jwtToken = jwtHandler.ReadJwtToken(jwtStr);
+            UserInfo userInfo = new UserInfo
+            {
+                UserId = Convert.ToInt32(jwtToken.Id),
+                RoleId = (jwtToken.Payload[ClaimTypes.Role] ?? 0).ObjToInt(),
+            };
+            return userInfo;
+        }
+        /// <summary>
+        /// 鑾峰彇杩囨湡鏃堕棿
+        /// </summary>
+        /// <param name="jwtStr"></param>
+        /// <returns></returns>
+        public static DateTime GetExp(string jwtStr)
+        {
+            var jwtHandler = new JwtSecurityTokenHandler();
+            JwtSecurityToken jwtToken = jwtHandler.ReadJwtToken(jwtStr);
+
+            DateTime expDate = (jwtToken.Payload[JwtRegisteredClaimNames.Exp] ?? 0).ObjToInt().GetTimeSpmpToDate();
+            return expDate;
+        }
+        public static bool IsExp(string jwtStr)
+        {
+            return GetExp(jwtStr) < DateTime.Now;
+        }
+
+        public static int GetUserId(string jwtStr)
+        {
+            try
+            {
+                if (jwtStr.IsNullOrEmpty()) return 0;
+                jwtStr = jwtStr.Replace("Bearer ", "");
+                return new JwtSecurityTokenHandler().ReadJwtToken(jwtStr).Id.ObjToInt();
+            }
+            catch
+            {
+                return 0;
+            }
+        }
+    }
+
+    /// <summary>
+    /// 浠ょ墝
+    /// </summary>
+    public class TokenModelJwt
+    {
+        /// <summary>
+        /// UserId
+        /// </summary>
+        public long UserId { get; set; }
+        /// <summary>
+        /// 瑙掕壊
+        /// </summary>
+        public int RoleId { get; set; }
+        /// <summary>
+        /// 鑱岃兘
+        /// </summary>
+        public string UserName { get; set; }
+
+        public long TenantId { get; set; }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseController/ApiBaseController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseController/ApiBaseController.cs"
new file mode 100644
index 0000000..426a86e
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseController/ApiBaseController.cs"
@@ -0,0 +1,171 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Options;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+using WIDESEA_Core.BaseServices;
+
+namespace WIDESEA_Core.BaseController
+{
+    [Authorize, ApiController]
+    public class ApiBaseController<IService, TEntity> : Controller
+    {
+        protected IService Service;
+
+        public ApiBaseController(IService service)
+        {
+            Service = service;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鑾峰彇鏁版嵁
+        /// </summary>
+        /// <param name="options"></param>
+        /// <returns></returns>
+        [HttpPost, Route("GetPageData")]
+        public virtual ActionResult GetPageData([FromBody] PageDataOptions options)
+        {
+            return Json(InvokeService("GetPageData", new object[] { options }));
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鑾峰彇鏄庣粏鏁版嵁
+        /// </summary>
+        /// <param name="pageData"></param>
+        /// <returns></returns>
+        [HttpPost, Route("GetDetailPage")]
+        public virtual ActionResult GetDetailPage([FromBody] PageDataOptions pageData)
+        {
+            return Json(InvokeService("GetDetailPage", new object[] { pageData }));
+        }
+
+        /// <summary>
+        /// 娣诲姞鏁版嵁
+        /// </summary>
+        /// <param name="options"></param>
+        /// <returns></returns>
+        [HttpPost, Route("AddData")]
+        public virtual ActionResult AddData([FromBody] TEntity options)
+        {
+            return Json(InvokeService("AddData", new object[] { options }));
+        }
+
+        /// <summary>
+        /// 娣诲姞鏁版嵁
+        /// </summary>
+        /// <param name="options"></param>
+        /// <returns></returns>
+        [HttpPost, Route("Add"), MethodParamsValidate]
+        public virtual ActionResult Add([FromBody] SaveModel options)
+        {
+            return Json(InvokeService("AddData", new object[] { options }));
+        }
+
+        /// <summary>
+        /// 淇敼鏁版嵁
+        /// </summary>
+        /// <param name="options"></param>
+        /// <returns></returns>
+        [HttpPost, Route("Update"), MethodParamsValidate]
+        public virtual ActionResult Update([FromBody] SaveModel options)
+        {
+            return Json(InvokeService("UpdateData", new object[] { options }));
+        }
+
+        /// <summary>
+        /// 淇敼鏁版嵁
+        /// </summary>
+        /// <param name="options"></param>
+        /// <returns></returns>
+        [HttpPost, Route("UpdateData")]
+        public virtual ActionResult UpdateData([FromBody] TEntity options)
+        {
+            return Json(InvokeService("UpdateData", new object[] { options }));
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        [HttpPost, Route("Del")]
+        public virtual ActionResult Del([FromBody] object[] key)
+        {
+            return Json(InvokeService("DeleteData", new object[] { key }));
+        }
+
+        /// <summary>
+        /// 瀵煎嚭鏁版嵁
+        /// </summary>
+        /// <param name="loadData"></param>
+        /// <returns></returns>
+        [HttpPost, Route("Export")]
+        public virtual ActionResult Export([FromBody] PageDataOptions loadData)
+        {
+            WebResponseContent result = InvokeService("Export", new object[] { loadData }) as WebResponseContent;
+            if (result.Status)
+                return File(
+                       System.IO.File.ReadAllBytes(result.Data.ToString()),
+                       System.Net.Mime.MediaTypeNames.Application.Octet,
+                       Path.GetFileName(result.Data.ToString())
+                   );
+            return Json(result);
+        }
+
+        /// <summary>
+        /// 涓嬭浇瀵煎叆妯℃澘
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("DownLoadTemplate")]
+        public virtual ActionResult DownLoadTemplate()
+        {
+            WebResponseContent result = InvokeService("DownLoadTemplate", new object[] { }) as WebResponseContent;
+            if (result.Status)
+                return File(
+                       System.IO.File.ReadAllBytes(result.Data.ToString()),
+                       System.Net.Mime.MediaTypeNames.Application.Octet,
+                       Path.GetFileName(result.Data.ToString())
+                   );
+            return Json(result);
+        }
+
+        /// <summary>
+        /// 瀵煎叆鏁版嵁
+        /// </summary>
+        /// <param name="fileInput"></param>
+        /// <returns></returns>
+        [HttpPost, Route("Import")]
+        public virtual ActionResult Import(List<IFormFile> fileInput)
+        {
+            return Json(InvokeService("Import", new object[] { fileInput }));
+        }
+
+        /// <summary>
+        /// 瀵煎嚭绉嶅瓙鏁版嵁
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost, Route("ExportSeedData"), AllowAnonymous]
+        public ActionResult ExportSeedData()
+        {
+            return Json(InvokeService("ExportSeedData", new object[] { }));
+        }
+
+        private object InvokeService(string methodName, object[] parameters)
+        {
+            Type t = Service.GetType();
+            List<Type> types = new List<Type>();
+            foreach (var param in parameters)
+            {
+                types.Add(param.GetType());
+            }
+            MethodInfo method = t.GetMethod(methodName, types.ToArray());
+            return method.Invoke(Service, parameters);
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/PageDataOptions.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/PageDataOptions.cs"
new file mode 100644
index 0000000..1fff57b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/PageDataOptions.cs"
@@ -0,0 +1,153 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Utilities;
+
+namespace WIDESEA_Core
+{
+    public class PageDataOptions
+    {
+        public int Page { get; set; }
+        public int Rows { get; set; }
+        public int Total { get; set; }
+        public string TableName { get; set; }
+        public string Sort { get; set; }
+        /// <summary>
+        /// 鎺掑簭鏂瑰紡
+        /// </summary>
+        public string Order { get; set; }
+        public string Wheres { get; set; }
+        public bool Export { get; set; }
+        public object Value { get; set; }
+        /// <summary>
+        /// 鏌ヨ鏉′欢
+        /// </summary>
+        public List<SearchParameters> Filter { get; set; }
+
+
+
+        public string ValidatePageOptions(PropertyInfo[] entityProperties)
+        {
+            string where = string.Empty;
+            List<SearchParameters> searchParametersList = new List<SearchParameters>();
+            if (this.Filter != null && this.Filter.Count > 0)
+            {
+                searchParametersList.AddRange(Filter);
+            }
+            else if (!string.IsNullOrEmpty(Wheres))
+            {
+                try
+                {
+                    searchParametersList = Wheres.DeserializeObject<List<SearchParameters>>();
+                    Filter = searchParametersList;
+                }
+                catch { }
+            }
+            for (int i = 0; i < searchParametersList.Count; i++)
+            {
+                if (string.IsNullOrEmpty(searchParametersList[i].Value))
+                {
+                    continue;
+                }
+
+                PropertyInfo? property = entityProperties.Where(c => c.Name.ToUpper() == searchParametersList[i].Name.ToUpper()).FirstOrDefault();
+
+                if (property == null) continue;
+
+                List<(bool, string, object)> results = property.ValidationValueForDbType(searchParametersList[i].Value.Split(',')).ToList();
+                if (results == null || results.Count() == 0)
+                {
+                    continue;
+                }
+                for (int j = 0; j < results.Count(); j++)
+                {
+                    if (j == 0)
+                    {
+                        where += "(";
+                    }
+                    LinqExpressionType expressionType = searchParametersList[i].DisplayType.GetLinqCondition();
+                    if (expressionType == LinqExpressionType.Equal)
+                    {
+                        where += $"{searchParametersList[i].Name} {HtmlElementType.Equal} '{results[j].Item3}'";
+                    }
+                    else if (expressionType == LinqExpressionType.ThanOrEqual)
+                    {
+                        where += $"{searchParametersList[i].Name} {HtmlElementType.ThanOrEqual} '{searchParametersList[i].Value}'";
+                    }
+                    else if (expressionType == LinqExpressionType.LessThanOrEqual)
+                    {
+                        where += $"{searchParametersList[i].Name} {HtmlElementType.LessOrequal} '{searchParametersList[i].Value}'";
+                    }
+                    else if (expressionType == LinqExpressionType.GreaterThan)
+                    {
+                        where += $"{searchParametersList[i].Name} {HtmlElementType.GT} '{searchParametersList[i].Value}'";
+                    }
+                    else if (expressionType == LinqExpressionType.LessThan)
+                    {
+                        where += $"{searchParametersList[i].Name} {HtmlElementType.LT} '{searchParametersList[i].Value}'";
+                    }
+                    else if (expressionType == LinqExpressionType.Contains)
+                    {
+                        where += $"{searchParametersList[i].Name} {HtmlElementType.like} '%{searchParametersList[i].Value}%'";
+                    }
+                    else
+                    {
+                        where += $"{searchParametersList[i].Name} {searchParametersList[i].DisplayType} '{results[j].Item3}'";
+                    }
+
+                    if (j == results.Count() - 1)
+                    {
+                        where += ")";
+                    }
+                    else
+                    {
+                        where += " or ";
+                    }
+                }
+                if (i < searchParametersList.Count - 1)
+                    where += " and ";
+            }
+            return where;
+        }
+
+
+        public Dictionary<string, OrderByType> GetPageDataSort(PropertyInfo[] propertyInfo)
+        {
+            if (!string.IsNullOrEmpty(Sort))
+            {
+                if (Sort.Contains(","))
+                {
+                    List<string> sortArr = Sort.Split(",").Where(x => propertyInfo.Any(p => p.Name == x)).ToList();
+                    Dictionary<string, OrderByType> sortDic = new Dictionary<string, OrderByType>();
+                    foreach (var item in sortArr)
+                    {
+                        sortDic[item] = Order?.ToLower() == OrderByType.Asc.ToString() ? OrderByType.Asc : OrderByType.Desc;
+                    }
+                    return sortDic;
+                }
+                else if (propertyInfo.Any(x => x.Name == Sort.FirstLetterToLower() || x.Name == Sort.FirstLetterToUpper()))
+                {
+                    return new Dictionary<string, OrderByType> {
+                        {
+                            Sort,Order?.ToLower() == OrderByType.Asc.ToString() ? OrderByType.Asc : OrderByType.Desc
+                        } };
+                }
+            }
+            return new Dictionary<string, OrderByType> { { "CreateDate", Order?.ToLower() == OrderByType.Asc.ToString() ? OrderByType.Asc : OrderByType.Desc } };
+        }
+    }
+    public class SearchParameters
+    {
+        public string Name { get; set; }
+        public string Value { get; set; }
+        //鏌ヨ绫诲瀷锛歀inqExpressionType
+        public string DisplayType { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/PageGridData.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/PageGridData.cs"
new file mode 100644
index 0000000..7ad6817
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/PageGridData.cs"
@@ -0,0 +1,26 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core
+{
+    public class PageGridData<T>
+    {
+        public int Total { get; set; }
+        public List<T> Rows { get; set; }
+        public object Summary { get; set; }
+
+        public PageGridData()
+        {
+
+        }
+
+        public PageGridData(int total, List<T> rows)
+        {
+            Total = total;
+            Rows = rows;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/Permissions.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/Permissions.cs"
new file mode 100644
index 0000000..e8c006b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/Permissions.cs"
@@ -0,0 +1,27 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core
+{
+    public class Permissions
+    {
+        public int MenuId { get; set; }
+        public int ParentId { get; set; }
+        public string TableName { get; set; }
+        public string MenuAuth { get; set; }
+        public string UserAuth { get; set; }
+        /// <summary>
+        /// 褰撳墠鐢ㄦ埛鏉冮檺,瀛樺偍鐨勬槸鏉冮檺鐨勫�硷紝濡�:Add,Search绛�
+        /// </summary>
+        public string[] UserAuthArr { get; set; }
+
+        /// <summary>
+        /// 2022.03.26
+        /// 鑿滃崟绫诲瀷1:绉诲姩绔紝0:PC绔�
+        /// </summary>
+        public int MenuType { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/SaveModel.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/SaveModel.cs"
new file mode 100644
index 0000000..f103ccf
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/SaveModel.cs"
@@ -0,0 +1,21 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core
+{
+    public class SaveModel
+    {
+        public Dictionary<string, object> MainData { get; set; }
+        public List<Dictionary<string, object>> DetailData { get; set; }
+        public List<object> DelKeys { get; set; }
+
+        /// <summary>
+        /// 浠庡墠鍙颁紶鍏ョ殑鍏朵粬鍙傛暟(鑷畾涔夋墿灞曞彲浠ヤ娇鐢�)
+        /// </summary>
+        public object Extra { get; set; }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/WebResponseContent.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/WebResponseContent.cs"
new file mode 100644
index 0000000..66feb1b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/WebResponseContent.cs"
@@ -0,0 +1,53 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core
+{
+    public class WebResponseContent
+    {
+        public WebResponseContent()
+        {
+        }
+        public WebResponseContent(bool status)
+        {
+            Status = status;
+        }
+        public bool Status { get; set; }
+
+        public int Code { get; set; }
+
+        public string Message { get; set; }
+
+        public object Data { get; set; }
+
+        public string DevMessage { get; set; }
+
+        public WebResponseContent OK()
+        {
+            Status = true;
+            return this;
+        }
+
+        public static WebResponseContent Instance
+        {
+            get { return new WebResponseContent(); }
+        }
+        public WebResponseContent OK(string message = null, object data = null)
+        {
+            Status = true;
+            Message = message;
+            Data = data;
+            return this;
+        }
+
+        public WebResponseContent Error(string message = null)
+        {
+            Status = false;
+            Message = message;
+            return this;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs"
new file mode 100644
index 0000000..c22ec14
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs"
@@ -0,0 +1,432 @@
+锘縰sing Microsoft.Data.SqlClient;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Enums;
+
+namespace WIDESEA_Core.BaseRepository
+{
+    public interface IRepository<TEntity> : IDependency where TEntity : class, new()
+    {
+        /// <summary>
+        /// SqlsugarClient瀹炰綋
+        /// </summary>
+        ISqlSugarClient Db { get; }
+        /// <summary>
+        /// 閫氳繃涓婚敭鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="id">涓婚敭</param>
+        /// <returns>鏌ヨ缁撴灉</returns>
+        TEntity QureyDataById(object id);
+
+        Task<TEntity> QureyDataByIdAsync(object id);
+
+        /// <summary>
+        /// 閫氳繃涓婚敭鏁扮粍鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="lstIds">涓婚敭鏁扮粍</param>
+        /// <returns>鏌ヨ缁撴灉闆嗗悎</returns>
+        List<TEntity> QureyDataByIds(object[] lstIds);
+
+        Task<List<TEntity>> QureyDataByIdsAsync(object[] lstIds);
+
+        /// <summary>
+        /// 閫氳繃涓婚敭闆嗗悎鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="lstIds">涓婚敭闆嗗悎</param>
+        /// <returns>鏌ヨ缁撴灉闆嗗悎</returns>
+        List<TEntity> QureyDataByIds(List<object> lstIds);
+
+        Task<List<TEntity>> QureyDataByIdsAsync(List<object> lstIds);
+
+        /// <summary>
+        /// 娣诲姞鍗曟潯鏁版嵁
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <returns>褰卞搷琛屾暟</returns>
+        int AddData(TEntity entity);
+
+        bool AddData<TChild>(TEntity entity, Expression<Func<TEntity, List<TChild>>> expression) where TChild : class, new();
+
+        Task<int> AddDataAsync(TEntity entity);
+
+        /// <summary>
+        /// 娣诲姞澶氭潯鏁版嵁
+        /// </summary>
+        /// <param name="listEntity"></param>
+        /// <returns>褰卞搷琛屾暟</returns>
+        int AddData(List<TEntity> listEntity);
+
+        Task<int> AddDataAsync(List<TEntity> listEntity);
+
+        /// <summary>
+        /// 閫氳繃涓婚敭鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="id">涓婚敭</param>
+        /// <returns>鍒犻櫎缁撴灉</returns>
+        bool DeleteDataById(object id);
+
+        Task<bool> DeleteDataByIdAsync(object id);
+
+        bool DeleteAndMoveIntoHty(TEntity entity, OperateTypeEnum operateType);
+
+        bool DeleteAndMoveIntoHty(List<TEntity> entities, OperateTypeEnum operateType);
+
+        /// <summary>
+        /// 閫氳繃涓婚敭鏁版嵁鍒犻櫎澶氭潯鏁版嵁
+        /// </summary>
+        /// <param name="ids">涓婚敭鏁扮粍</param>
+        /// <returns>鍒犻櫎缁撴灉</returns>
+        bool DeleteDataByIds(object[] ids);
+
+        Task<bool> DeleteDataByIdsAsync(object[] ids);
+
+        /// <summary>
+        /// 閫氳繃瀹炰綋鏁版嵁鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="ids">涓婚敭鏁扮粍</param>
+        /// <returns>鍒犻櫎缁撴灉</returns>
+        bool DeleteData(TEntity entity);
+
+        Task<bool> DeleteDataAsync(TEntity entity);
+
+        /// <summary>
+        /// 閫氳繃瀹炰綋闆嗗悎鏁版嵁鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="ids">涓婚敭鏁扮粍</param>
+        /// <returns>鍒犻櫎缁撴灉</returns>
+        bool DeleteData(List<TEntity> listEntity);
+
+        Task<bool> DeleteDataAsync(List<TEntity> listEntity);
+
+        /// <summary>
+        /// 鏇存柊鍗曟潯鏁版嵁
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <returns></returns>
+        bool UpdateData(TEntity entity);
+
+        Task<bool> UpdateDataAsync(TEntity entity);
+
+        /// <summary>
+        /// 鏇存柊澶氭潯鏁版嵁
+        /// </summary>
+        /// <param name="listEntity"></param>
+        /// <returns></returns>
+        bool UpdateData(List<TEntity> listEntity);
+
+        Task<bool> UpdateDataAsync(List<TEntity> listEntity);
+
+        /// <summary>
+        /// 鎸囧畾鍒楁洿鏂版暟鎹�
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <param name="lstColumns"></param>
+        /// <param name="lstIgnoreColumns"></param>
+        /// <returns></returns>
+        bool UpdateData(TEntity entity, List<string> lstColumns, List<string>? lstIgnoreColumns = null);
+
+        Task<bool> UpdateDataAsync(TEntity entity, List<string> lstColumns, List<string>? lstIgnoreColumns = null);
+
+        /// <summary>
+        /// 鏌ヨ鎵�鏈夋暟鎹�
+        /// </summary>
+        /// <returns></returns>
+        List<TEntity> QueryData();
+
+        Task<List<TEntity>> QueryDataAsync();
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="where"></param>
+        /// <returns></returns>
+        List<TEntity> QueryData(string where);
+
+        Task<List<TEntity>> QueryDataAsync(string where);
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <returns></returns>
+        List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression);
+
+        Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression);
+
+        TEntity QueryFirst(Expression<Func<TEntity, bool>> whereExpression);
+
+        Task<TEntity> QueryFirstAsync(Expression<Func<TEntity, bool>> whereExpression);
+
+        TResult QueryFirst<TResult>(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, TResult>> expression);
+
+        Task<TResult> QueryFirstAsync<TResult>(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, TResult>> expression);
+
+        TResult QueryFirst<TResult>(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, TResult>> expression, Dictionary<string, OrderByType> orderBy);
+
+        Task<TResult> QueryFirstAsync<TResult>(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, TResult>> expression, Dictionary<string, OrderByType> orderBy);
+
+        TEntity QueryFirst(Expression<Func<TEntity, bool>> whereExpression, Dictionary<string, OrderByType> orderBy);
+
+        Task<TEntity> QueryFirstAsync(Expression<Func<TEntity, bool>> whereExpression, Dictionary<string, OrderByType> orderBy);
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁骞舵帓搴�
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression, Dictionary<string, OrderByType> orderBy);
+
+        Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression, string orderByFields);
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁骞舵帓搴�
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="where"></param>
+        /// <returns></returns>
+        List<TEntity> QueryData(string where, Dictionary<string, OrderByType> orderBy);
+
+        Task<List<TEntity>> QueryDataAsync(string where, Dictionary<string, OrderByType> orderBy);
+
+        /// <summary>
+        /// 鏌ヨ鎸囧畾鏁版嵁瀵硅薄
+        /// </summary>
+        /// <typeparam name="TResult"></typeparam>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        List<TResult> QueryData<TResult>(Expression<Func<TEntity, TResult>> expression);
+
+        Task<List<TResult>> QueryDataAsync<TResult>(Expression<Func<TEntity, TResult>> expression);
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鎸囧畾鏁版嵁瀵硅薄
+        /// </summary>
+        /// <typeparam name="TResult"></typeparam>
+        /// <param name="expression"></param>
+        /// <param name="whereExpression"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        List<TResult> QueryData<TResult>(Expression<Func<TEntity, TResult>> expression, Expression<Func<TEntity, bool>> whereExpression, string orderByFields = "");
+
+        Task<List<TResult>> QueryDataAsync<TResult>(Expression<Func<TEntity, TResult>> expression, Expression<Func<TEntity, bool>> whereExpression, string orderByFields);
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁骞舵帓搴�
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="orderByExpression"></param>
+        /// <param name="isAsc"></param>
+        /// <returns></returns>
+        List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression, bool isAsc = true);
+
+        Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression, bool isAsc = true);
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁骞舵帓搴�
+        /// </summary>
+        /// <param name="where"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        List<TEntity> QueryData(string where, string orderByFields);
+
+        Task<List<TEntity>> QueryDataAsync(string where, string orderByFields);
+
+        /// <summary>
+        /// 鍘熺敓Sql璇彞鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <param name="parameters"></param>
+        /// <returns></returns>
+        List<TEntity> QueryDataBySql(string sql, SugarParameter[]? parameters = null);
+
+        Task<List<TEntity>> QueryDataBySqlAsync(string sql, SugarParameter[]? parameters = null);
+
+        /// <summary>
+        /// 鍘熺敓Sql璇彞鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <param name="parameters"></param>
+        /// <returns></returns>
+        List<dynamic> QueryDynamicDataBySql(string sql, SugarParameter[]? parameters = null);
+
+        Task<List<dynamic>> QueryDynamicDataBySqlAsync(string sql, SugarParameter[]? parameters = null);
+
+        List<object> QueryObjectDataBySql(string sql, SugarParameter[]? parameters = null);
+
+        Task<List<object>> QueryObjectDataBySqlAsync(string sql, SugarParameter[]? parameters = null);
+
+        /// <summary>
+        /// 鍘熺敓Sql璇彞鎵ц鎿嶄綔
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <param name="sqlParameters"></param>
+        /// <returns></returns>
+        int ExecuteSqlCommand(string sql, params SqlParameter[] sqlParameters);
+
+        Task<int> ExecuteSqlCommandAsync(string sql, params SqlParameter[] sqlParameters);
+
+        /// <summary>
+        /// 鍘熺敓Sql璇彞鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <param name="parameters"></param>
+        /// <returns></returns>
+        DataTable QueryTable(string sql, SugarParameter[]? parameters = null);
+
+        Task<DataTable> QueryTableAsync(string sql, SugarParameter[]? parameters = null);
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁鎸囧畾鏁伴噺鐨勮
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="top"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression, int top, string orderByFields);
+
+        Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression, int top, string orderByFields);
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鎸囧畾鏁伴噺鐨勮
+        /// </summary>
+        /// <param name="where"></param>
+        /// <param name="top"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        List<TEntity> QueryData(string where, int top, string orderByFields);
+
+        Task<List<TEntity>> QueryDataAsync(string where, int top, string orderByFields);
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression, int pageIndex, int pageSize, string orderByFields);
+
+        Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression, int pageIndex, int pageSize, string orderByFields);
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ
+        /// </summary>
+        /// <param name="where"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        List<TEntity> QueryData(string where, int pageIndex, int pageSize, string orderByFields);
+
+        Task<List<TEntity>> QueryDataAsync(string where, int pageIndex, int pageSize, string orderByFields);
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        PageGridData<TEntity> QueryPage(Expression<Func<TEntity, bool>> whereExpression, int pageIndex, int pageSize, string? orderByFields = null);
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pagesize"></param>
+        /// <param name="orderBy"></param>
+        /// <returns></returns>
+        PageGridData<TEntity> QueryPage(Expression<Func<TEntity, bool>> whereExpression, int pageIndex, int pagesize, Dictionary<string, OrderByType> orderBy);
+
+        PageGridData<TEntity> QueryPage(string where, int pageIndex, int pageSize, Dictionary<string, OrderByType> orderBy);
+
+        /// <summary>
+        /// 涓よ〃鑱旀煡
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <typeparam name="T2"></typeparam>
+        /// <typeparam name="TResult"></typeparam>
+        /// <param name="joinExpression"></param>
+        /// <param name="selectExpression"></param>
+        /// <param name="whereExpression"></param>
+        /// <returns></returns>
+        List<TResult> QueryTabs<T, T2, TResult>(
+            Expression<Func<T, T2, object[]>> joinExpression,
+            Expression<Func<T, T2, TResult>> selectExpression,
+           Expression<Func<T, T2, bool>> whereExpressionT1,
+            Expression<Func<TResult, bool>> whereExpression);
+
+        List<TResult> QueryTabs<T, T2, TResult>(
+         Expression<Func<T, T2, bool>> joinExpression,
+         Expression<Func<T, T2, TResult>> selectExpression,
+         Expression<Func<T, bool>> whereExpressionT1,
+         Expression<Func<T2, bool>> whereExpressionT2,
+         Expression<Func<TResult, bool>> whereExpression);
+
+
+        Task<List<TResult>> QueryTabsAsync<T, T2, TResult>(
+            Expression<Func<T, T2, object[]>> joinExpression,
+            Expression<Func<T, T2, TResult>> selectExpression,
+            Expression<Func<TResult, bool>> whereExpression);
+
+        /// <summary>
+        /// 涓よ〃鑱旀煡-鍒嗛〉
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <typeparam name="T2"></typeparam>
+        /// <typeparam name="TResult"></typeparam>
+        /// <param name="joinExpression"></param>
+        /// <param name="selectExpression"></param>
+        /// <param name="whereExpression"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        PageGridData<TResult> QueryTabsPage<T, T2, TResult>(
+            Expression<Func<T, T2, object[]>> joinExpression,
+            Expression<Func<T, T2, TResult>> selectExpression,
+            Expression<Func<TResult, bool>> whereExpression,
+            int pageIndex = 1,
+            int pageSize = 20,
+            string? orderByFields = null);
+
+        /// <summary>
+        /// 涓よ〃鑱斿悎鏌ヨ-鍒嗛〉-鍒嗙粍
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <typeparam name="T2"></typeparam>
+        /// <typeparam name="TResult"></typeparam>
+        /// <param name="joinExpression"></param>
+        /// <param name="selectExpression"></param>
+        /// <param name="whereExpression"></param>
+        /// <param name="groupExpression"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        PageGridData<TResult> QueryTabsPage<T, T2, TResult>(
+            Expression<Func<T, T2, object[]>> joinExpression,
+            Expression<Func<T, T2, TResult>> selectExpression,
+            Expression<Func<TResult, bool>> whereExpression,
+            Expression<Func<T, object>> groupExpression,
+            int pageIndex = 1,
+            int pageSize = 20,
+            string? orderByFields = null);
+
+        //List<TResult> QueryMuch<T, T2, T3, TResult>(
+        //    Expression<Func<T, T2, T3, object[]>> joinExpression,
+        //    Expression<Func<T, T2, T3, TResult>> selectExpression,
+        //    Expression<Func<T, T2, T3, bool>> whereLambda = null) where T : class, new();
+        //Task<PageModel<TEntity>> QueryPage(PaginationModel pagination);
+    }
+}
\ No newline at end of file
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs"
new file mode 100644
index 0000000..41c5bd7
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs"
@@ -0,0 +1,977 @@
+锘縰sing SqlSugar;
+using System.Data;
+using System.Linq.Expressions;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Reflection;
+using WIDESEA_Core.Helper;
+using Microsoft.Data.SqlClient;
+using System.Drawing.Printing;
+using WIDESEA_Core.Tenants;
+using WIDESEA_Core.Seed;
+using WIDESEA_Core.DB;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.AOP;
+using OfficeOpenXml.FormulaParsing.ExpressionGraph;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Utilities;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using NetTaste;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Core.BaseRepository
+{
+    public class RepositoryBase<TEntity> : IRepository<TEntity> where TEntity : class, new()
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly SqlSugarClient _dbBase;
+
+        private ISqlSugarClient _db
+        {
+            get
+            {
+                ISqlSugarClient db = _dbBase;
+
+                //澶氱鎴�
+                //var mta = typeof(TEntity).GetCustomAttribute<MultiTenantAttribute>();
+                //if (mta is { TenantType: TenantTypeEnum.Db })
+                //{
+                //    //鑾峰彇绉熸埛淇℃伅 绉熸埛淇℃伅鍙互鎻愬墠缂撳瓨涓嬫潵 
+                //    if (App.User is { TenantId: > 0 })
+                //    {
+                //        dynamic tenant = db.Queryable(MainDb.TenantTableName, "x").Where(MainDb.TenantId, "=", App.User.TenantId).First();
+                //        if (tenant != null)
+                //        {
+                //            var iTenant = db.AsTenant();
+                //            if (!iTenant.IsAnyConnection(tenant.TenantId))
+                //            {
+                //                string conStr = tenant.ConnectionString;
+                //                ConnectionConfig connectionConfig = new ConnectionConfig()
+                //                {
+                //                    ConfigId = tenant.TenantId,
+                //                    ConnectionString = conStr.DecryptDES(AppSecret.DB),
+                //                    DbType = (SqlSugar.DbType)tenant.DbType,
+                //                    IsAutoCloseConnection = true,
+                //                    AopEvents = new AopEvents()
+                //                    {
+                //                        DataExecuting = SqlSugarAop.DataExecuting,
+
+                //                    }
+                //                };
+                //                iTenant.AddConnection(connectionConfig);
+                //            }
+
+                //            return iTenant.GetConnection(tenant.TenantId);
+                //        }
+                //    }
+                //}
+
+                return db;
+            }
+        }
+        /// <summary>
+        /// 鍒涘缓鏁版嵁搴撹繛鎺ュ璞�
+        /// </summary>
+        public ISqlSugarClient Db => _db;
+
+        public RepositoryBase(IUnitOfWorkManage unitOfWorkManage)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+            _dbBase = unitOfWorkManage.GetDbClient();
+        }
+
+        /// <summary>
+        /// 閫氳繃涓婚敭鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="id">涓婚敭</param>
+        /// <returns>鏌ヨ缁撴灉</returns>
+        public virtual TEntity QureyDataById(object id)
+        {
+            return _db.Queryable<TEntity>().In(id).Single();
+        }
+
+        /// <summary>
+        /// 閫氳繃涓婚敭鏁扮粍鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="lstIds">涓婚敭鏁扮粍</param>
+        /// <returns>鏌ヨ缁撴灉闆嗗悎</returns>
+        public virtual List<TEntity> QureyDataByIds(object[] lstIds)
+        {
+            return _db.Queryable<TEntity>().In(lstIds).ToList();
+        }
+
+        /// <summary>
+        /// 閫氳繃涓婚敭闆嗗悎鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="lstIds">涓婚敭闆嗗悎</param>
+        /// <returns>鏌ヨ缁撴灉闆嗗悎</returns>
+        public virtual List<TEntity> QureyDataByIds(List<object> lstIds)
+        {
+            return _db.Queryable<TEntity>().In(lstIds).ToList();
+        }
+
+        /// <summary>
+        /// 娣诲姞鍗曟潯鏁版嵁
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <returns>褰卞搷琛屾暟</returns>
+        public virtual int AddData(TEntity entity)
+        {
+            IInsertable<TEntity> insert = _db.Insertable(entity);
+            return insert.ExecuteReturnIdentity();
+        }
+
+        public virtual bool AddData<TChild>(TEntity entity, Expression<Func<TEntity, List<TChild>>> expression) where TChild : class, new()
+        {
+            return _db.InsertNav(entity).Include(expression).ExecuteCommand();
+        }
+
+        /// <summary>
+        /// 娣诲姞澶氭潯鏁版嵁
+        /// </summary>
+        /// <param name="listEntity"></param>
+        /// <returns>褰卞搷琛屾暟</returns>
+        public virtual int AddData(List<TEntity> listEntity)
+        {
+            IInsertable<TEntity> insert = _db.Insertable(listEntity);
+            return insert.ExecuteCommand();
+        }
+
+        /// <summary>
+        /// 閫氳繃涓婚敭鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="id">涓婚敭</param>
+        /// <returns>鍒犻櫎缁撴灉</returns>
+        public virtual bool DeleteDataById(object id)
+        {
+            return _db.Deleteable<TEntity>().In(id).ExecuteCommandHasChange();
+        }
+
+        /// <summary>
+        /// 閫氳繃涓婚敭鏁版嵁鍒犻櫎澶氭潯鏁版嵁
+        /// </summary>
+        /// <param name="ids">涓婚敭鏁扮粍</param>
+        /// <returns>鍒犻櫎缁撴灉</returns>
+        public virtual bool DeleteDataByIds(object[] ids)
+        {
+            return _db.Deleteable<TEntity>().In(ids).ExecuteCommandHasChange();
+        }
+
+        /// <summary>
+        /// 閫氳繃瀹炰綋鏁版嵁鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="ids">涓婚敭鏁扮粍</param>
+        /// <returns>鍒犻櫎缁撴灉</returns>
+        public virtual bool DeleteData(TEntity entity)
+        {
+            return _db.Deleteable(entity).ExecuteCommandHasChange();
+        }
+
+        /// <summary>
+        /// 閫氳繃瀹炰綋闆嗗悎鏁版嵁鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="ids">涓婚敭鏁扮粍</param>
+        /// <returns>鍒犻櫎缁撴灉</returns>
+        public virtual bool DeleteData(List<TEntity> listEntity)
+        {
+            return _db.Deleteable(listEntity).ExecuteCommandHasChange();
+        }
+
+        /// <summary>
+        /// 鏇存柊鍗曟潯鏁版嵁
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <returns></returns>
+        public virtual bool UpdateData(TEntity entity)
+        {
+            return _db.Updateable(entity).ExecuteCommandHasChange();
+        }
+
+        /// <summary>
+        /// 鏇存柊澶氭潯鏁版嵁
+        /// </summary>
+        /// <param name="listEntity"></param>
+        /// <returns></returns>
+        public virtual bool UpdateData(List<TEntity> listEntity)
+        {
+            return _db.Updateable(listEntity).ExecuteCommandHasChange();
+        }
+
+        /// <summary>
+        /// 鎸囧畾鍒楁洿鏂版暟鎹�
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <param name="lstColumns"></param>
+        /// <param name="lstIgnoreColumns"></param>
+        /// <returns></returns>
+        public virtual bool UpdateData(TEntity entity, List<string> lstColumns, List<string>? lstIgnoreColumns = null)
+        {
+            IUpdateable<TEntity> update = _db.Updateable(entity);
+
+            if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0)
+            {
+                update = update.IgnoreColumns(lstIgnoreColumns.ToArray());
+            }
+
+            if (lstColumns != null && lstColumns.Count > 0)
+            {
+                update = update.UpdateColumns(lstColumns.ToArray());
+            }
+
+            return update.ExecuteCommandHasChange();
+        }
+
+        /// <summary>
+        /// 鏌ヨ鎵�鏈夋暟鎹�
+        /// </summary>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryData()
+        {
+            return _db.Queryable<TEntity>().ToList();
+        }
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="where"></param>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryData(string where)
+        {
+            return _db.Queryable<TEntity>().WhereIF(!string.IsNullOrEmpty(where), where).ToList();
+        }
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression)
+        {
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).ToList();
+        }
+
+        public virtual TEntity QueryFirst(Expression<Func<TEntity, bool>> whereExpression)
+        {
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).First();
+        }
+
+        public virtual TResult QueryFirst<TResult>(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, TResult>> expression)
+        {
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).Select(expression).First();
+        }
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁骞舵帓搴�
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression, Dictionary<string, OrderByType> orderBy)
+        {
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderBy)
+            {
+                OrderByModel orderByModel = new OrderByModel()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderBy(orderByModels).ToList();
+        }
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁骞舵帓搴�
+        /// </summary>
+        /// <param name="where"></param>
+        /// <param name="orderBy"></param>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryData(string where, Dictionary<string, OrderByType> orderBy)
+        {
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderBy)
+            {
+                OrderByModel orderByModel = new OrderByModel()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+            return _db.Queryable<TEntity>().WhereIF(!string.IsNullOrEmpty(where), where).OrderBy(orderByModels).ToList();
+        }
+
+        /// <summary>
+        /// 鏌ヨ鎸囧畾鏁版嵁瀵硅薄
+        /// </summary>
+        /// <typeparam name="TResult"></typeparam>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        public virtual List<TResult> QueryData<TResult>(Expression<Func<TEntity, TResult>> expression)
+        {
+            return _db.Queryable<TEntity>().Select(expression).ToList();
+        }
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鎸囧畾鏁版嵁瀵硅薄
+        /// </summary>
+        /// <typeparam name="TResult"></typeparam>
+        /// <param name="expression"></param>
+        /// <param name="whereExpression"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        public virtual List<TResult> QueryData<TResult>(Expression<Func<TEntity, TResult>> expression, Expression<Func<TEntity, bool>> whereExpression, string orderByFields = "")
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(whereExpression != null, whereExpression).Select(expression).ToList();
+        }
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁骞舵帓搴�
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="orderByExpression"></param>
+        /// <param name="isAsc"></param>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression, bool isAsc = true)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToList();
+        }
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁骞舵帓搴�
+        /// </summary>
+        /// <param name="where"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryData(string where, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(!string.IsNullOrEmpty(where), where).ToList();
+        }
+
+        /// <summary>
+        /// 鍘熺敓Sql璇彞鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <param name="parameters"></param>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryDataBySql(string sql, SugarParameter[]? parameters = null)
+        {
+            return _db.Ado.SqlQuery<TEntity>(sql, parameters);
+        }
+
+        /// <summary>
+        /// 鍘熺敓Sql璇彞鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <param name="parameters"></param>
+        /// <returns></returns>
+        public virtual List<dynamic> QueryDynamicDataBySql(string sql, SugarParameter[]? parameters = null)
+        {
+            return _db.Ado.SqlQuery<dynamic>(sql, parameters);
+        }
+
+        /// <summary>
+        /// 鍘熺敓Sql璇彞鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <param name="parameters"></param>
+        /// <returns></returns>
+        public virtual List<object> QueryObjectDataBySql(string sql, SugarParameter[]? parameters = null)
+        {
+            return _db.Ado.SqlQuery<object>(sql, parameters);
+        }
+
+        /// <summary>
+        /// 鍘熺敓Sql璇彞鎵ц鎿嶄綔
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <param name="sqlParameters"></param>
+        /// <returns></returns>
+        public virtual int ExecuteSqlCommand(string sql, params SqlParameter[] sqlParameters)
+        {
+            return _db.Ado.ExecuteCommand(sql, sqlParameters);
+        }
+
+        /// <summary>
+        /// 鍘熺敓Sql璇彞鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <param name="parameters"></param>
+        /// <returns></returns>
+        public virtual DataTable QueryTable(string sql, SugarParameter[]? parameters = null)
+        {
+            return _db.Ado.GetDataTable(sql, parameters);
+        }
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁鎸囧畾鏁伴噺鐨勮
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="top"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression, int top, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(whereExpression != null, whereExpression).Take(top).ToList();
+        }
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鎸囧畾鏁伴噺鐨勮
+        /// </summary>
+        /// <param name="where"></param>
+        /// <param name="top"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryData(string where, int top, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(!string.IsNullOrEmpty(where), where).Take(top).ToList();
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression, int pageIndex, int pageSize, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields)
+               .WhereIF(whereExpression != null, whereExpression).ToPageList(pageIndex, pageSize);
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ
+        /// </summary>
+        /// <param name="where"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryData(string where, int pageIndex, int pageSize, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields)
+                .WhereIF(!string.IsNullOrEmpty(where), where).ToPageList(pageIndex, pageSize);
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        public virtual PageGridData<TEntity> QueryPage(Expression<Func<TEntity, bool>> whereExpression, int pageIndex, int pageSize, string? orderByFields = null)
+        {
+            int totalCount = 0;
+            var list = _db.Queryable<TEntity>()
+                .OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields)
+                .WhereIF(whereExpression != null, whereExpression)
+                .ToPageList(pageIndex, pageSize, ref totalCount);
+
+            return new PageGridData<TEntity> { Rows = list, Total = totalCount };
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderBy"></param>
+        /// <returns></returns>
+        public virtual PageGridData<TEntity> QueryPage(Expression<Func<TEntity, bool>> whereExpression, int pageIndex, int pageSize, Dictionary<string, OrderByType> orderBy)
+        {
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderBy)
+            {
+                OrderByModel orderByModel = new OrderByModel()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+            int totalCount = 0;
+            List<TEntity> list = _db.Queryable<TEntity>()
+                .OrderBy(orderByModels)
+                .WhereIF(whereExpression != null, whereExpression)
+                .ToPageList(pageIndex, pageSize, ref totalCount);
+
+            return new PageGridData<TEntity>(totalCount, list);
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ
+        /// </summary>
+        /// <param name="where"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        public virtual PageGridData<TEntity> QueryPage(string where, int pageIndex, int pageSize, Dictionary<string, OrderByType> orderBy)
+        {
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderBy)
+            {
+                OrderByModel orderByModel = new OrderByModel()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+            int totalCount = 0;
+            List<TEntity> list = _db.Queryable<TEntity>()
+                .WhereIF(!string.IsNullOrEmpty(where), where).OrderBy(orderByModels).ToPageList(pageIndex, pageSize, ref totalCount);
+
+            return new PageGridData<TEntity>(totalCount, list);
+        }
+
+        /// <summary>
+        /// 涓よ〃鑱旀煡
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <typeparam name="T2"></typeparam>
+        /// <typeparam name="TResult"></typeparam>
+        /// <param name="joinExpression"></param>
+        /// <param name="selectExpression"></param>
+        /// <param name="whereExpression"></param>
+        /// <returns></returns>
+        public virtual List<TResult> QueryTabs<T, T2, TResult>(
+           Expression<Func<T, T2, object[]>> joinExpression,
+           Expression<Func<T, T2, TResult>> selectExpression,
+           Expression<Func<T, T2, bool>> whereExpressionT1,
+           Expression<Func<TResult, bool>> whereExpression)
+        {
+            List<TResult> list = _db.Queryable(joinExpression).WhereIF(whereExpressionT1 != null, whereExpressionT1)
+               .Select(selectExpression)
+               .WhereIF(whereExpression != null, whereExpression).ToList();
+            return list;
+        }
+
+        public virtual List<TResult> QueryTabs<T, T2, TResult>(
+          Expression<Func<T, T2, bool>> joinExpression,
+          Expression<Func<T, T2, TResult>> selectExpression,
+          Expression<Func<T, bool>> whereExpressionT1,
+          Expression<Func<T2, bool>> whereExpressionT2,
+          Expression<Func<TResult, bool>> whereExpression)
+        {
+            List<TResult> list = _db.Queryable<T>().WhereIF(whereExpressionT1 != null, whereExpressionT1).InnerJoin(_db.Queryable<T2>().WhereIF(whereExpressionT2 != null, whereExpressionT2), joinExpression).Select(selectExpression)
+               .WhereIF(whereExpression != null, whereExpression).ToList();
+            return list;
+        }
+
+        /// <summary>
+        /// 涓よ〃鑱旀煡-鍒嗛〉
+        /// </summary>
+        /// <typeparam name="T1"></typeparam>
+        /// <typeparam name="T2"></typeparam>
+        /// <typeparam name="TResult"></typeparam>
+        /// <param name="joinExpression"></param>
+        /// <param name="selectExpression"></param>
+        /// <param name="whereExpression"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderByFields"></param>
+        public virtual PageGridData<TResult> QueryTabsPage<T1, T2, TResult>(Expression<Func<T1, T2, object[]>> joinExpression, Expression<Func<T1, T2, TResult>> selectExpression, Expression<Func<TResult, bool>> whereExpression, int pageIndex, int pageSize, string? orderByFields = null)
+        {
+            int totalCount = 0;
+            List<TResult> list = _db.Queryable(joinExpression)
+                .Select(selectExpression)
+                .OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields)
+                .WhereIF(whereExpression != null, whereExpression)
+                .ToPageList(pageIndex, pageSize, ref totalCount);
+            return new PageGridData<TResult>(totalCount, list);
+        }
+
+        /// <summary>
+        /// 涓よ〃鑱斿悎鏌ヨ-鍒嗛〉-鍒嗙粍
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <typeparam name="T2"></typeparam>
+        /// <typeparam name="TResult"></typeparam>
+        /// <param name="joinExpression"></param>
+        /// <param name="selectExpression"></param>
+        /// <param name="whereExpression"></param>
+        /// <param name="groupExpression"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        public virtual PageGridData<TResult> QueryTabsPage<T1, T2, TResult>(Expression<Func<T1, T2, object[]>> joinExpression, Expression<Func<T1, T2, TResult>> selectExpression, Expression<Func<TResult, bool>> whereExpression, Expression<Func<T1, object>> groupExpression, int pageIndex, int pageSize, string? orderByFields = null)
+        {
+            int totalCount = 0;
+            List<TResult> list = _db.Queryable(joinExpression).GroupBy(groupExpression)
+                .Select(selectExpression)
+                .OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields)
+                .WhereIF(whereExpression != null, whereExpression)
+                .ToPageList(pageIndex, pageSize, ref totalCount);
+            return new PageGridData<TResult>(totalCount, list);
+        }
+
+        public Task<TEntity> QureyDataByIdAsync(object id)
+        {
+            return _db.Queryable<TEntity>().In(id).SingleAsync();
+        }
+
+        public Task<List<TEntity>> QureyDataByIdsAsync(object[] lstIds)
+        {
+            return _db.Queryable<TEntity>().In(lstIds).ToListAsync();
+        }
+
+        public Task<List<TEntity>> QureyDataByIdsAsync(List<object> lstIds)
+        {
+            return _db.Queryable<TEntity>().In(lstIds).ToListAsync();
+        }
+
+        public Task<int> AddDataAsync(TEntity entity)
+        {
+            IInsertable<TEntity> insert = _db.Insertable(entity);
+            return insert.ExecuteReturnIdentityAsync();
+        }
+
+        public Task<int> AddDataAsync(List<TEntity> listEntity)
+        {
+            IInsertable<TEntity> insert = _db.Insertable(listEntity);
+            return insert.ExecuteReturnIdentityAsync();
+        }
+
+        public Task<bool> DeleteDataByIdAsync(object id)
+        {
+            return _db.Deleteable<TEntity>().In(id).ExecuteCommandHasChangeAsync();
+        }
+
+        public Task<bool> DeleteDataByIdsAsync(object[] ids)
+        {
+            return _db.Deleteable<TEntity>().In(ids).ExecuteCommandHasChangeAsync();
+        }
+
+        public Task<bool> DeleteDataAsync(TEntity entity)
+        {
+            return _db.Deleteable(entity).ExecuteCommandHasChangeAsync();
+        }
+
+        public Task<bool> DeleteDataAsync(List<TEntity> listEntity)
+        {
+            return _db.Deleteable(listEntity).ExecuteCommandHasChangeAsync();
+        }
+
+        public Task<bool> UpdateDataAsync(TEntity entity)
+        {
+            return _db.Updateable(entity).ExecuteCommandHasChangeAsync();
+        }
+
+        public Task<bool> UpdateDataAsync(List<TEntity> listEntity)
+        {
+            return _db.Updateable(listEntity).ExecuteCommandHasChangeAsync();
+        }
+
+        public Task<bool> UpdateDataAsync(TEntity entity, List<string> lstColumns, List<string>? lstIgnoreColumns = null)
+        {
+            IUpdateable<TEntity> update = _db.Updateable(entity);
+
+            if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0)
+            {
+                update = update.IgnoreColumns(lstIgnoreColumns.ToArray());
+            }
+
+            if (lstColumns != null && lstColumns.Count > 0)
+            {
+                update = update.UpdateColumns(lstColumns.ToArray());
+            }
+
+            return update.ExecuteCommandHasChangeAsync();
+        }
+
+        public Task<List<TEntity>> QueryDataAsync()
+        {
+            return _db.Queryable<TEntity>().ToListAsync();
+        }
+
+        public Task<List<TEntity>> QueryDataAsync(string where)
+        {
+            return _db.Queryable<TEntity>().WhereIF(!string.IsNullOrEmpty(where), where).ToListAsync();
+        }
+
+        public Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression)
+        {
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).ToListAsync();
+        }
+
+        public Task<TEntity> QueryFirstAsync(Expression<Func<TEntity, bool>> whereExpression)
+        {
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).FirstAsync();
+        }
+
+        public Task<TResult> QueryFirstAsync<TResult>(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, TResult>> expression)
+        {
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).Select(expression).FirstAsync();
+        }
+
+        public TResult QueryFirst<TResult>(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, TResult>> expression, Dictionary<string, OrderByType> orderBy)
+        {
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderBy)
+            {
+                OrderByModel orderByModel = new OrderByModel()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderBy(orderByModels).Select(expression).First();
+        }
+
+        public Task<TResult> QueryFirstAsync<TResult>(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, TResult>> expression, Dictionary<string, OrderByType> orderBy)
+        {
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderBy)
+            {
+                OrderByModel orderByModel = new OrderByModel()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderBy(orderByModels).Select(expression).FirstAsync();
+        }
+
+        public TEntity QueryFirst(Expression<Func<TEntity, bool>> whereExpression, Dictionary<string, OrderByType> orderBy)
+        {
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderBy)
+            {
+                OrderByModel orderByModel = new OrderByModel()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderBy(orderByModels).First();
+        }
+
+        public Task<TEntity> QueryFirstAsync(Expression<Func<TEntity, bool>> whereExpression, Dictionary<string, OrderByType> orderBy)
+        {
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderBy)
+            {
+                OrderByModel orderByModel = new OrderByModel()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderBy(orderByModels).FirstAsync();
+        }
+
+        public Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).ToListAsync();
+        }
+
+        public Task<List<TEntity>> QueryDataAsync(string where, Dictionary<string, OrderByType> orderBy)
+        {
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderBy)
+            {
+                OrderByModel orderByModel = new OrderByModel()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+            return _db.Queryable<TEntity>().WhereIF(!string.IsNullOrEmpty(where), where).OrderBy(orderByModels).ToListAsync();
+        }
+
+        public Task<List<TResult>> QueryDataAsync<TResult>(Expression<Func<TEntity, TResult>> expression)
+        {
+            return _db.Queryable<TEntity>().Select(expression).ToListAsync();
+        }
+
+        public Task<List<TResult>> QueryDataAsync<TResult>(Expression<Func<TEntity, TResult>> expression, Expression<Func<TEntity, bool>> whereExpression, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(whereExpression != null, whereExpression).Select(expression).ToListAsync();
+        }
+
+        public Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression, bool isAsc = true)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToListAsync();
+        }
+
+        public Task<List<TEntity>> QueryDataAsync(string where, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(!string.IsNullOrEmpty(where), where).ToListAsync();
+        }
+
+        public Task<List<TEntity>> QueryDataBySqlAsync(string sql, SugarParameter[]? parameters = null)
+        {
+            return _db.Ado.SqlQueryAsync<TEntity>(sql, parameters);
+        }
+
+        public Task<List<dynamic>> QueryDynamicDataBySqlAsync(string sql, SugarParameter[]? parameters = null)
+        {
+            return _db.Ado.SqlQueryAsync<dynamic>(sql, parameters);
+        }
+
+        public Task<List<object>> QueryObjectDataBySqlAsync(string sql, SugarParameter[]? parameters = null)
+        {
+            return _db.Ado.SqlQueryAsync<object>(sql, parameters);
+        }
+
+        public Task<int> ExecuteSqlCommandAsync(string sql, params SqlParameter[] sqlParameters)
+        {
+            return _db.Ado.ExecuteCommandAsync(sql, sqlParameters);
+        }
+
+        public Task<DataTable> QueryTableAsync(string sql, SugarParameter[]? parameters = null)
+        {
+            return _db.Ado.GetDataTableAsync(sql, parameters);
+        }
+
+        public Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression, int top, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(whereExpression != null, whereExpression).Take(top).ToListAsync();
+        }
+
+        public Task<List<TEntity>> QueryDataAsync(string where, int top, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(!string.IsNullOrEmpty(where), where).Take(top).ToListAsync();
+        }
+
+        public Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression, int pageIndex, int pageSize, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields)
+              .WhereIF(whereExpression != null, whereExpression).ToPageListAsync(pageIndex, pageSize);
+        }
+
+        public Task<List<TEntity>> QueryDataAsync(string where, int pageIndex, int pageSize, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields)
+                .WhereIF(!string.IsNullOrEmpty(where), where).ToPageListAsync(pageIndex, pageSize);
+        }
+
+        public Task<List<TResult>> QueryTabsAsync<T, T2, TResult>(Expression<Func<T, T2, object[]>> joinExpression, Expression<Func<T, T2, TResult>> selectExpression, Expression<Func<TResult, bool>> whereExpression)
+        {
+            return _db.Queryable(joinExpression)
+             .Select(selectExpression)
+             .WhereIF(whereExpression != null, whereExpression).ToListAsync();
+        }
+
+        public bool DeleteAndMoveIntoHty(TEntity entity, OperateTypeEnum operateType)
+        {
+            Type type = entity.GetType();
+            Assembly assembly = type.Assembly;
+            Type? htyType = assembly.GetType(type.FullName + "_Hty");
+            if (htyType != null)
+            {
+                object? obj = Activator.CreateInstance(htyType);
+                PropertyInfo keyPro = typeof(TEntity).GetKeyProperty();
+                PropertyInfo? operateTypePro = htyType.GetProperty(nameof(IBaseHistoryEntity.OperateType));
+                PropertyInfo? sourceIdPro = htyType.GetProperty(nameof(IBaseHistoryEntity.SourceId));
+                if (obj != null && keyPro != null && operateTypePro != null && sourceIdPro != null)
+                {
+                    operateTypePro.SetValue(obj, operateType.ToString());
+                    sourceIdPro.SetValue(obj, keyPro.GetValue(entity));
+
+                    List<PropertyInfo> propertyInfos = htyType.GetProperties().Where(x => x.Name != operateTypePro.Name && x.Name != sourceIdPro.Name && x.Name != keyPro.Name).ToList();
+
+                    for (int i = 0; i < propertyInfos.Count; i++)
+                    {
+                        PropertyInfo propertyInfo = propertyInfos[i];
+                        PropertyInfo? property = type.GetProperty(propertyInfo.Name);
+
+                        if (property != null)
+                        {
+                            if (propertyInfo.Name == nameof(BaseEntity.Modifier))
+                            {
+                                propertyInfo.SetValue(obj, App.User.UserId > 0 ? App.User.UserName : "System");
+                            }
+                            else if (propertyInfo.Name == nameof(BaseEntity.ModifyDate))
+                            {
+                                propertyInfo.SetValue(obj, DateTime.Now);
+                            }
+                            else
+                            {
+                                propertyInfo.SetValue(obj, property.GetValue(entity));
+                            }
+                        }
+                    }
+                    if (obj != null)
+                        _db.InsertableByObject(obj).AS(type.Name + "_Hty").ExecuteCommand();
+                }
+            }
+            return DeleteData(entity);
+        }
+
+        public bool DeleteAndMoveIntoHty(List<TEntity> entities, OperateTypeEnum operateType)
+        {
+            Type type = typeof(TEntity);
+            Assembly assembly = type.Assembly;
+            Type? htyType = assembly.GetType(type.FullName + "_Hty");
+            if (htyType != null)
+            {
+                object? obj2 = Activator.CreateInstance(htyType);
+                PropertyInfo keyPro = typeof(TEntity).GetKeyProperty();
+                PropertyInfo? operateTypePro = htyType.GetProperty(nameof(IBaseHistoryEntity.OperateType));
+                PropertyInfo? sourceIdPro = htyType.GetProperty(nameof(IBaseHistoryEntity.SourceId));
+                if (obj2 != null && keyPro != null && operateTypePro != null && sourceIdPro != null)
+                {
+                    List<PropertyInfo> propertyInfos = htyType.GetProperties().Where(x => x.Name != operateTypePro.Name && x.Name != sourceIdPro.Name && x.Name != keyPro.Name).ToList();
+                    List<object> list = new List<object>();
+                    foreach (var item in entities)
+                    {
+                        object? obj = Activator.CreateInstance(htyType);
+                        if (obj != null)
+                        {
+                            operateTypePro.SetValue(obj, operateType.ToString());
+                            sourceIdPro.SetValue(obj, keyPro.GetValue(item));
+                            for (int i = 0; i < propertyInfos.Count; i++)
+                            {
+                                PropertyInfo propertyInfo = propertyInfos[i];
+                                PropertyInfo? property = type.GetProperty(propertyInfo.Name);
+
+                                if (property != null)
+                                {
+                                    if (propertyInfo.Name == nameof(BaseEntity.Modifier))
+                                    {
+                                        propertyInfo.SetValue(obj, App.User.UserId > 0 ? App.User.UserName : "System");
+                                    }
+                                    else if (propertyInfo.Name == nameof(BaseEntity.ModifyDate))
+                                    {
+                                        propertyInfo.SetValue(obj, DateTime.Now);
+                                    }
+                                    else
+                                    {
+                                        propertyInfo.SetValue(obj, property.GetValue(item));
+                                    }
+                                }
+                            }
+                            list.Add(obj);
+                        }
+                    }
+                    if (list.Count > 0)
+                        _db.InsertableByObject(list).AS(type.Name + "_Hty").ExecuteCommand();
+
+                }
+            }
+            return DeleteData(entities);
+        }
+        //List<TResult> QueryMuch<T, T2, T3, TResult>(
+        //    Expression<Func<T, T2, T3, object[]>> joinExpression,
+        //    Expression<Func<T, T2, T3, TResult>> selectExpression,
+        //    Expression<Func<T, T2, T3, bool>> whereLambda = null) where T : class, new(){throw new NotImplementedException();}
+        //Task<PageModel<TEntity>> QueryPage(PaginationModel pagination){throw new NotImplementedException();}
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/IUnitOfWorkManage.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/IUnitOfWorkManage.cs"
new file mode 100644
index 0000000..7d715d8
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/IUnitOfWorkManage.cs"
@@ -0,0 +1,25 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.BaseRepository
+{
+    public interface IUnitOfWorkManage
+    {
+        SqlSugarClient GetDbClient();
+        int TranCount { get; }
+
+        UnitOfWork CreateUnitOfWork();
+
+        void BeginTran();
+        void BeginTran(MethodInfo method);
+        void CommitTran();
+        void CommitTran(MethodInfo method);
+        void RollbackTran();
+        void RollbackTran(MethodInfo method);
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWork.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWork.cs"
new file mode 100644
index 0000000..d4ca76b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWork.cs"
@@ -0,0 +1,55 @@
+锘縰sing Microsoft.Extensions.Logging;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.BaseRepository
+{
+    public class UnitOfWork : IDisposable
+    {
+        public ILogger Logger { get; set; }
+        public ISqlSugarClient Db { get; internal set; }
+
+        public ITenant Tenant { get; internal set; }
+
+        public bool IsTran { get; internal set; }
+
+        public bool IsCommit { get; internal set; }
+
+        public bool IsClose { get; internal set; }
+
+        public void Dispose()
+        {
+            if (IsTran && !IsCommit)
+            {
+                Logger.LogDebug("UnitOfWork RollbackTran");
+                this.Tenant.RollbackTran();
+            }
+
+            if (this.Db.Ado.Transaction != null || this.IsClose)
+                return;
+            this.Db.Close();
+        }
+
+        public bool Commit()
+        {
+            if (this.IsTran && !this.IsCommit)
+            {
+                Logger.LogDebug("UnitOfWork CommitTran");
+                this.Tenant.CommitTran();
+                this.IsCommit = true;
+            }
+
+            if (this.Db.Ado.Transaction == null && !this.IsClose)
+            {
+                this.Db.Close();
+                this.IsClose = true;
+            }
+
+            return this.IsCommit;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs"
new file mode 100644
index 0000000..81607a6
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs"
@@ -0,0 +1,194 @@
+锘縰sing Microsoft.Extensions.Logging;
+using SqlSugar;
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.BaseRepository
+{
+    public class UnitOfWorkManage : IUnitOfWorkManage
+    {
+        private readonly ILogger<UnitOfWorkManage> _logger;
+        private readonly ISqlSugarClient _sqlSugarClient;
+
+        private int _tranCount { get; set; }
+        public int TranCount => _tranCount;
+        public readonly ConcurrentStack<string> TranStack = new();
+
+        public UnitOfWorkManage(ISqlSugarClient sqlSugarClient, ILogger<UnitOfWorkManage> logger)
+        {
+            _sqlSugarClient = sqlSugarClient;
+            _logger = logger;
+            _tranCount = 0;
+        }
+
+        /// <summary>
+        /// 鑾峰彇DB锛屼繚璇佸敮涓�鎬�
+        /// </summary>
+        /// <returns></returns>
+        public SqlSugarClient GetDbClient()
+        {
+            // 蹇呴』瑕乤s锛屽悗杈逛細鐢ㄥ埌鍒囨崲鏁版嵁搴撴搷浣�
+            return _sqlSugarClient as SqlSugarClient;
+        }
+
+
+        public UnitOfWork CreateUnitOfWork()
+        {
+            UnitOfWork uow = new UnitOfWork();
+            uow.Logger = _logger;
+            uow.Db = _sqlSugarClient;
+            uow.Tenant = (ITenant)_sqlSugarClient;
+            uow.IsTran = true;
+
+            uow.Db.Open();
+            uow.Tenant.BeginTran();
+            
+            _logger.LogDebug("UnitOfWork Begin");
+            return uow;
+        }
+
+        public void BeginTran()
+        {
+            lock (this)
+            {
+                _tranCount++;
+                GetDbClient().BeginTran();
+            }
+        }
+
+        public void BeginTran(MethodInfo method)
+        {
+            lock (this)
+            {
+                GetDbClient().BeginTran();
+                TranStack.Push(method.GetFullName());
+                _tranCount = TranStack.Count;
+            }
+        }
+
+        public WebResponseContent BeginTran(Func<WebResponseContent> func)
+        {
+            lock (this)
+            {
+                BeginTran();
+                try
+                {
+                    WebResponseContent content = func();
+                    if (content.Status)
+                    {
+                        CommitTran();
+                    }
+                    else
+                    {
+                        RollbackTran();
+                    }
+                    return content;
+                }
+                catch(Exception ex)
+                {
+                    RollbackTran();
+                    return WebResponseContent.Instance.Error(ex.Message);
+                }
+            }
+        }
+
+        public void CommitTran()
+        {
+            lock (this)
+            {
+                _tranCount--;
+                if (_tranCount == 0)
+                {
+                    try
+                    {
+                        GetDbClient().CommitTran();
+                    }
+                    catch (Exception ex)
+                    {
+                        Console.WriteLine(ex.Message);
+                        GetDbClient().RollbackTran();
+                    }
+                }
+            }
+        }
+
+        public void CommitTran(MethodInfo method)
+        {
+            lock (this)
+            {
+                string result = "";
+                while (!TranStack.IsEmpty && !TranStack.TryPeek(out result))
+                {
+                    Thread.Sleep(1);
+                }
+
+
+                if (result == method.GetFullName())
+                {
+                    try
+                    {
+                        GetDbClient().CommitTran();
+
+                        _logger.LogDebug($"Commit Transaction");
+                        Console.WriteLine($"Commit Transaction");
+                    }
+                    catch (Exception ex)
+                    {
+                        Console.WriteLine(ex.Message);
+                        GetDbClient().RollbackTran();
+                        _logger.LogDebug($"Commit Error , Rollback Transaction");
+                    }
+                    finally
+                    {
+                        while (!TranStack.TryPop(out _))
+                        {
+                            Thread.Sleep(1);
+                        }
+
+                        _tranCount = TranStack.Count;
+                    }
+                }
+            }
+        }
+
+        public void RollbackTran()
+        {
+            lock (this)
+            {
+                _tranCount--;
+                GetDbClient().RollbackTran();
+            }
+        }
+
+        public void RollbackTran(MethodInfo method)
+        {
+            lock (this)
+            {
+                string result = "";
+                while (!TranStack.IsEmpty && !TranStack.TryPeek(out result))
+                {
+                    Thread.Sleep(1);
+                }
+
+                if (result == method.GetFullName())
+                {
+                    GetDbClient().RollbackTran();
+                    _logger.LogDebug($"Rollback Transaction");
+                    Console.WriteLine($"Rollback Transaction");
+                    while (!TranStack.TryPop(out _))
+                    {
+                        Thread.Sleep(1);
+                    }
+
+                    _tranCount = TranStack.Count;
+                }
+            }
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/IService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/IService.cs"
new file mode 100644
index 0000000..a5cb22c
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/IService.cs"
@@ -0,0 +1,123 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.BaseServices
+{
+    public interface IService<TEntity> : IDependency where TEntity : class, new()
+    {
+        ISqlSugarClient Db { get; }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="options"></param>
+        /// <returns></returns>
+        PageGridData<TEntity> GetPageData(PageDataOptions options);
+
+        object GetDetailPage(PageDataOptions pageData);
+
+        /// <summary>
+        /// 娣诲姞鏁版嵁
+        /// </summary>
+        /// <param name="entity">鍗曚釜瀹炰綋</param>
+        /// <returns></returns>
+        WebResponseContent AddData(TEntity entity);
+
+        /// <summary>
+        /// 娣诲姞鏁版嵁
+        /// </summary>
+        /// <param name="entities">瀹炰綋闆嗗悎</param>
+        /// <returns></returns>
+        WebResponseContent AddData(List<TEntity> entities);
+
+        /// <summary>
+        /// 娣诲姞鏁版嵁
+        /// </summary>
+        /// <param name="saveModel"></param>
+        /// <returns></returns>
+        WebResponseContent AddData(SaveModel saveModel);
+
+        /// <summary>
+        /// 淇敼鏁版嵁
+        /// </summary>
+        /// <param name="entity">鍗曚釜瀹炰綋</param>
+        /// <returns></returns>
+        WebResponseContent UpdateData(TEntity entity);
+
+        /// <summary>
+        /// 淇敼鏁版嵁
+        /// </summary>
+        /// <param name="entities">瀹炰綋闆嗗悎</param>
+        /// <returns></returns>
+        WebResponseContent UpdateData(List<TEntity> entities);
+
+        /// <summary>
+        /// 淇敼鏁版嵁
+        /// </summary>
+        /// <param name="saveModel"></param>
+        /// <returns></returns>
+        WebResponseContent UpdateData(SaveModel saveModel);
+
+        /// <summary>
+        /// 鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="key">涓婚敭</param>
+        /// <returns></returns>
+        WebResponseContent DeleteData(object key);
+
+        /// <summary>
+        /// 鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="keys">涓婚敭鏁扮粍</param>
+        /// <returns></returns>
+        WebResponseContent DeleteData(object[] keys);
+
+        /// <summary>
+        /// 鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="entity">鍗曚釜瀹炰綋</param>
+        /// <returns></returns>
+        WebResponseContent DeleteData(TEntity entity);
+
+        /// <summary>
+        /// 鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="entities">瀹炰綋闆嗗悎</param>
+        /// <returns></returns>
+        WebResponseContent DeleteData(List<TEntity> entities);
+
+        /// <summary>
+        /// 瀵煎嚭鏁版嵁
+        /// </summary>
+        /// <param name="pageData"></param>
+        /// <returns></returns>
+        WebResponseContent Export(PageDataOptions pageData);
+
+        /// <summary>
+        /// 瀵煎叆鏁版嵁
+        /// </summary>
+        /// <param name="files"></param>
+        /// <returns></returns>
+        WebResponseContent Import(List<IFormFile> files);
+
+        /// <summary>
+        /// 涓婁紶鏂囦欢
+        /// </summary>
+        /// <param name="files"></param>
+        /// <returns></returns>
+        WebResponseContent Upload(List<IFormFile> files);
+
+        /// <summary>
+        /// 妯℃澘涓嬭浇
+        /// </summary>
+        /// <returns></returns>
+        WebResponseContent DownLoadTemplate();
+
+        WebResponseContent ExportSeedData();
+    }
+}
\ No newline at end of file
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs"
new file mode 100644
index 0000000..6b3275f
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs"
@@ -0,0 +1,923 @@
+锘縰sing AutoMapper.Execution;
+using Magicodes.ExporterAndImporter.Core;
+using Magicodes.ExporterAndImporter.Core.Models;
+using Magicodes.ExporterAndImporter.Excel;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using Microsoft.Extensions.Options;
+using Newtonsoft.Json;
+using SqlSugar;
+using System.Drawing.Drawing2D;
+using System.Dynamic;
+using System.Linq.Expressions;
+using System.Reflection;
+using System.Reflection.Metadata;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+//using WIDESEA_Core.HostedService;
+using WIDESEA_Core.Utilities;
+using ICacheService = WIDESEA_Core.Caches.ICacheService;
+
+namespace WIDESEA_Core.BaseServices
+{
+    public class ServiceBase<TEntity, TRepository> : ServiceFunFilter<TEntity>, IService<TEntity>
+         where TEntity : class, new()
+         where TRepository : IRepository<TEntity>
+
+    {
+        public ServiceBase(TRepository BaseDal)
+        {
+            this.BaseDal = BaseDal;
+        }
+
+        public TRepository BaseDal { get; set; } //閫氳繃鍦ㄥ瓙绫荤殑鏋勯�犲嚱鏁颁腑娉ㄥ叆锛岃繖閲屾槸鍩虹被锛屼笉鐢ㄦ瀯閫犲嚱鏁�
+
+        public ISqlSugarClient Db => BaseDal.Db;
+
+        private PropertyInfo[] _propertyInfo { get; set; } = null;
+        public PropertyInfo[] TProperties
+        {
+            get
+            {
+                if (_propertyInfo != null)
+                {
+                    return _propertyInfo;
+                }
+                _propertyInfo = typeof(TEntity).GetProperties();
+                return _propertyInfo;
+            }
+        }
+
+        public virtual PageGridData<TEntity> GetPageData(PageDataOptions options)
+        {
+            ISugarQueryable<TEntity> sugarQueryable = Db.Queryable<TEntity>();
+
+            ValidatePageOptions(options, ref sugarQueryable);
+
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+
+            if (OrderByParameters != null)
+            {
+                foreach (var item in OrderByParameters)
+                {
+                    OrderByModel orderByModel = new OrderByModel()
+                    {
+                        FieldName = item.Key,
+                        OrderByType = item.Value
+                    };
+                    orderByModels.Add(orderByModel);
+                }
+            }
+            if (EnableWebOrderBy)
+            {
+                //鑾峰彇鎺掑簭瀛楁
+                Dictionary<string, OrderByType> orderbyDic = GetPageDataSort(options, TProperties);
+
+                foreach (var item in orderbyDic)
+                {
+                    OrderByModel orderByModel = new OrderByModel()
+                    {
+                        FieldName = item.Key,
+                        OrderByType = item.Value
+                    };
+                    orderByModels.Add(orderByModel);
+                }
+            }
+
+            int total = 0;
+            PageGridData<TEntity> pageGridData = new PageGridData<TEntity>();
+            sugarQueryable = sugarQueryable.OrderBy(orderByModels);
+            pageGridData.Rows = sugarQueryable.ToPageList(options.Page, options.Rows, ref total);
+            pageGridData.Total = total;
+
+            return pageGridData;
+        }
+
+        protected void ValidatePageOptions(PageDataOptions options, ref ISugarQueryable<TEntity> sugarQueryable)
+        {
+            options = options ?? new PageDataOptions();
+            List<SearchParameters> searchParametersList = new List<SearchParameters>();
+            if (options.Filter != null && options.Filter.Count > 0)
+            {
+                searchParametersList.AddRange(options.Filter);
+            }
+            else if (!string.IsNullOrEmpty(options.Wheres))
+            {
+                try
+                {
+                    searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
+                    options.Filter = searchParametersList;
+                }
+                catch { }
+            }
+            QueryRelativeList?.Invoke(searchParametersList);
+
+            for (int i = 0; i < searchParametersList.Count; i++)
+            {
+                if (string.IsNullOrEmpty(searchParametersList[i].Value))
+                {
+                    continue;
+                }
+
+                PropertyInfo? property = TProperties.Where(c => c.Name.ToUpper() == searchParametersList[i].Name.ToUpper()).FirstOrDefault();
+
+                if (property == null) continue;
+
+                List<(bool, string, object)> results = property.ValidationValueForDbType(searchParametersList[i].Value.Split(',')).ToList();
+                if (results == null || results.Count() == 0)
+                {
+                    continue;
+                }
+                for (int j = 0; j < results.Count(); j++)
+                {
+                    LinqExpressionType expressionType = searchParametersList[i].DisplayType.ToLower().GetLinqCondition();
+                    if (expressionType == LinqExpressionType.In)
+                    {
+                        Expression<Func<TEntity, bool>> expression = GetWhereExpression(property.Name, results.Select(x => x.Item3).ToArray(), null, expressionType);
+                        sugarQueryable = sugarQueryable.Where(expression);
+                        break;
+                    }
+                    else
+                    {
+                        Expression<Func<TEntity, bool>> expression = GetWhereExpression(property.Name, results[j].Item3, null, expressionType);
+                        sugarQueryable = sugarQueryable.Where(expression);
+                    }
+                }
+            }
+        }
+
+        protected Expression<Func<TEntity, bool>> GetWhereExpression(string propertyName, object propertyValue, ParameterExpression parameter, LinqExpressionType expressionType)
+        {
+            Type? proType = typeof(TEntity).GetProperty(propertyName)?.PropertyType;
+            if (proType == null) return p => true;
+            if (propertyValue == null) return p => true;
+            string? value = propertyValue?.ToString();
+            if (value == null) return p => true;
+
+
+            parameter = parameter ?? Expression.Parameter(typeof(TEntity), "x");
+            //鍒涘缓鑺傜偣鐨勫睘鎬=>p.name 灞炴�ame
+            MemberExpression memberProperty = Expression.PropertyOrField(parameter, propertyName);
+
+            if (expressionType == LinqExpressionType.In)
+            {
+                if (!(propertyValue is System.Collections.IList list) || list.Count == 0)
+                {
+                    if (!string.IsNullOrEmpty(propertyValue?.ToString()))
+                    {
+                        list = propertyValue.ToString().Split(",").ToList();
+                    }
+                    else
+                    {
+                        throw new Exception("灞炴�у�肩被鍨嬩笉姝g‘");
+                    }
+                }
+                //
+
+                bool isStringValue = true;
+                List<object> objList = new List<object>();
+
+                if (proType.ToString() != "System.String")
+                {
+                    isStringValue = false;
+                    foreach (var values in list)
+                    {
+                        objList.Add(values?.ToString().ChangeType(proType));
+                    }
+                    list = objList;
+                }
+
+                //if (isStringValue)
+                //{
+                //    //string 绫诲瀷鐨勫瓧娈碉紝濡傛灉鍊煎甫鏈�'鍗曞紩鍙�,EF浼氶粯璁ゅ彉鎴�''涓や釜鍗曞紩鍙�
+                //    MethodInfo method = typeof(System.Collections.IList).GetMethod("Contains");
+                //    //鍒涘缓闆嗗悎甯搁噺骞惰缃负甯搁噺鐨勫��
+                //    ConstantExpression constantCollection = Expression.Constant(list);
+                //    //鍒涘缓涓�涓〃绀鸿皟鐢ㄥ甫鍙傛暟鐨勬柟娉曠殑锛歯ew string[]{"1","a"}.Contains("a");
+                //    MethodCallExpression methodCall = Expression.Call(constantCollection, method, memberProperty);
+                //    return Expression.Lambda<Func<TEntity, bool>>(methodCall, parameter);
+                //}
+                //闈瀞tring瀛楁锛屾寜涓婇潰鏂瑰紡澶勭悊鎶ュ紓甯窷ull TypeMapping in Sql Tree
+                BinaryExpression body = null;
+                foreach (var values in list)
+                {
+                    ConstantExpression constantExpression = Expression.Constant(values);
+                    UnaryExpression unaryExpression = Expression.Convert(memberProperty, constantExpression.Type);
+
+                    body = body == null
+                        ? Expression.Equal(unaryExpression, constantExpression)
+                        : Expression.OrElse(body, Expression.Equal(unaryExpression, constantExpression));
+                }
+                return Expression.Lambda<Func<TEntity, bool>>(body, parameter);
+            }
+
+            ConstantExpression constant = proType.ToString() == "System.String"
+              ? Expression.Constant(propertyValue) : Expression.Constant(value.ChangeType(proType));
+
+            // DateTime鍙�夋嫨浜嗘棩鏈熺殑鏃跺�欒嚜鍔ㄥ湪缁撴潫鏃ユ湡鍔犱竴澶╋紝淇DateTime绫诲瀷浣跨敤鏃ユ湡鍖洪棿鏌ヨ鏃犳硶鏌ヨ鍒扮粨鏉熸棩鏈熺殑闂
+            if ((proType == typeof(DateTime) || proType == typeof(DateTime?)) && expressionType == LinqExpressionType.LessThanOrEqual && value.Length == 10)
+            {
+                constant = Expression.Constant(Convert.ToDateTime(value).AddDays(1));
+            }
+
+            UnaryExpression member = Expression.Convert(memberProperty, constant.Type);
+            Expression<Func<TEntity, bool>> expression = p => false;
+            switch (expressionType)
+            {
+                case LinqExpressionType.Equal:
+                    expression = Expression.Lambda<Func<TEntity, bool>>(Expression.Equal(member, constant), parameter);
+                    break;
+                case LinqExpressionType.NotEqual:
+                    expression = Expression.Lambda<Func<TEntity, bool>>(Expression.NotEqual(member, constant), parameter);
+                    break;
+                case LinqExpressionType.GreaterThan:
+                    expression = Expression.Lambda<Func<TEntity, bool>>(Expression.GreaterThan(member, constant), parameter);
+                    break;
+                case LinqExpressionType.LessThan:
+                    expression = Expression.Lambda<Func<TEntity, bool>>(Expression.LessThan(member, constant), parameter);
+                    break;
+                case LinqExpressionType.ThanOrEqual:
+                    expression = Expression.Lambda<Func<TEntity, bool>>(Expression.GreaterThanOrEqual(member, constant), parameter);
+                    break;
+                case LinqExpressionType.LessThanOrEqual:
+                    expression = Expression.Lambda<Func<TEntity, bool>>(Expression.LessThanOrEqual(member, constant), parameter);
+                    break;
+                case LinqExpressionType.Contains:
+                case LinqExpressionType.NotContains:
+                    MethodInfo? method = typeof(string).GetMethod("Contains", new[] { typeof(string) });
+                    if (method != null)
+                    {
+                        constant = Expression.Constant(propertyValue, typeof(string));
+                        if (expressionType == LinqExpressionType.Contains)
+                        {
+                            expression = Expression.Lambda<Func<TEntity, bool>>(Expression.Call(member, method, constant), parameter);
+                        }
+                        else
+                        {
+                            expression = Expression.Lambda<Func<TEntity, bool>>(Expression.Not(Expression.Call(member, method, constant)), parameter);
+                        }
+                    }
+                    else
+                    {
+                        expression = p => true;
+                    }
+                    break;
+                default:
+                    expression = p => false;
+                    break;
+            }
+            return expression;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎺掑簭瀛楁
+        /// </summary>
+        /// <param name="pageData"></param>
+        /// <param name="propertyInfo"></param>
+        /// <returns></returns>
+        protected Dictionary<string, OrderByType> GetPageDataSort(PageDataOptions pageData, PropertyInfo[] propertyInfo)
+        {
+            if (!string.IsNullOrEmpty(pageData.Sort))
+            {
+                if (pageData.Sort.Contains(","))
+                {
+                    List<string> sortArr = pageData.Sort.Split(",").Where(x => propertyInfo.Any(p => p.Name == x)).ToList();
+                    Dictionary<string, OrderByType> sortDic = new Dictionary<string, OrderByType>();
+                    foreach (var item in sortArr)
+                    {
+                        sortDic[item] = pageData.Order?.ToLower() == OrderByType.Asc.ToString() ? OrderByType.Asc : OrderByType.Desc;
+                    }
+                    return sortDic;
+                }
+                else if (propertyInfo.Any(x => x.Name == pageData.Sort.FirstLetterToLower() || x.Name == pageData.Sort.FirstLetterToUpper()))
+                {
+                    return new Dictionary<string, OrderByType> {
+                        {
+                            pageData.Sort,pageData.Order?.ToLower() == OrderByType.Asc.ToString().ToLower() ? OrderByType.Asc : OrderByType.Desc
+                        } };
+                }
+            }
+            return new Dictionary<string, OrderByType> { { "CreateDate", pageData.Order?.ToLower() == OrderByType.Asc.ToString() ? OrderByType.Asc : OrderByType.Desc } };
+        }
+
+
+
+        //private string GetDataRole(Type type)
+        //{
+        //    try
+        //    {
+        //        UserRole? userRole = PermissionDataHostService.UserRoles.FirstOrDefault(x => x.UserId == App.User.UserId);
+        //        if (userRole == null)
+        //            throw new Exception($"鏃犳潈闄�");
+
+        //        if (type.IsAssignableFrom(typeof(BaseWarehouseEntity)) || type.GetProperty(nameof(BaseWarehouseEntity.WarehouseId)) != null)
+        //        {
+        //            if (userRole.WarehouseIds.Count > 0)
+        //            {
+        //                return $"{nameof(BaseWarehouseEntity.WarehouseId)} in ({userRole.WarehouseIds.Serialize().Replace("[", "").Replace("]", "")})";
+        //            }
+
+        //            else
+        //                return $"1 != 1";
+        //        }
+        //        else
+        //        {
+        //            return "1 = 1";
+        //        }
+
+        //        //UserRole? userRole = PermissionDataHostService.UserRoles.FirstOrDefault(x => x.UserId == App.User.UserId);
+        //        //if (userRole == null)
+        //        //    throw new Exception($"鏃犳潈闄�");
+
+        //        //if (userRole.AuthorityScope == (int)AuthorityScopeEnum.CurrentRole)
+        //        //{
+        //        //    List<int> userId = PermissionDataHostService.UserRoles.Where(x => x.RoleId == userRole.RoleId).Select(x => x.UserId).ToList();
+        //        //    return $"creater in ({userId.Serialize()})";
+        //        //}
+        //        //else if (userRole.AuthorityScope == (int)AuthorityScopeEnum.OnlySelf)
+        //        //{
+        //        //    return $"creater = '{userRole.UserName}'";
+        //        //}
+        //        //else if (userRole.AuthorityScope == (int)AuthorityScopeEnum.None)
+        //        //{
+        //        //    return $"1 != 1";
+        //        //}
+        //        //return "";
+        //    }
+        //    catch (Exception ex)
+        //    {
+        //        throw new Exception($"鏃犳潈闄愶紝{ex.Message}");
+        //    }
+        //}
+
+        public virtual object GetDetailPage(PageDataOptions pageData)
+        {
+            Type t = typeof(TEntity);
+
+            if (pageData.Value == null) return new PageGridData<object>(total: 0, null);
+            string keyName = t.GetKeyName();
+            ////鐢熸垚鏌ヨ鏉′欢
+            //Expression<Func<TEntity, bool>> whereExpression = keyName.CreateExpression<TEntity>(pageData.Value, LinqExpressionType.Equal);
+            int totalCount = 0;
+            PropertyInfo propertyInfo = t.GetProperties().FirstOrDefault(x => x.GetCustomAttribute<Navigate>() != null);
+            if (propertyInfo != null)
+            {
+                Type detailType = propertyInfo.PropertyType.GetGenericArguments()[0];
+                Navigate navigate = propertyInfo.GetCustomAttribute<Navigate>();
+                List<ExpandoObject> list = BaseDal.Db.Queryable(detailType.Name, "detail").Where(navigate.GetName(), "=", pageData.Value).ToPageList(pageData.Page, pageData.Rows, ref totalCount);
+                return new PageGridData<ExpandoObject>(totalCount, list);
+            }
+            return new PageGridData<object>(total: 0, null);
+        }
+
+        /// <summary>
+        /// 娣诲姞鏁版嵁
+        /// </summary>
+        /// <param name="entity">鍗曚釜瀹炰綋</param>
+        /// <returns></returns>
+        public virtual WebResponseContent AddData(TEntity entity)
+        {
+            try
+            {
+                return BaseDal.AddData(entity) > 0 ? WebResponseContent.Instance.OK() : WebResponseContent.Instance.Error();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 娣诲姞鏁版嵁
+        /// </summary>
+        /// <param name="entities">瀹炰綋闆嗗悎</param>
+        /// <returns></returns>
+        public virtual WebResponseContent AddData(List<TEntity> entities)
+        {
+            try
+            {
+                return BaseDal.AddData(entities) > 0 ? WebResponseContent.Instance.OK() : WebResponseContent.Instance.Error();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 娣诲姞鏁版嵁
+        /// </summary>
+        /// <param name="saveModel"></param>
+        /// <returns></returns>
+        public virtual WebResponseContent AddData(SaveModel saveModel)
+        {
+            try
+            {
+                if (saveModel == null || saveModel.MainData == null || saveModel.MainData.Count == 0)//鍒ゆ柇鍙傛暟鏄惁浼犲叆
+                {
+                    return WebResponseContent.Instance.Error("浼犲弬閿欒,鍙傛暟涓嶈兘涓虹┖");
+                }
+                string validResult = typeof(TEntity).ValidateDicInEntity(saveModel.MainData, true, TProperties);
+
+                if (!string.IsNullOrEmpty(validResult))
+                {
+                    return WebResponseContent.Instance.Error(validResult);
+                }
+
+                PropertyInfo keyPro = typeof(TEntity).GetKeyProperty();
+                if (keyPro == null)
+                {
+                    return WebResponseContent.Instance.Error("璇峰厛璁剧疆涓婚敭");
+                }
+                if (keyPro.PropertyType == typeof(Guid))
+                {
+                    saveModel.MainData.Add(keyPro.Name, Guid.NewGuid());
+                }
+                else if (keyPro.PropertyType == typeof(int) || keyPro.PropertyType == typeof(long))
+                {
+                    SugarColumn? sugarColumn = keyPro.GetCustomAttribute<SugarColumn>();
+                    if (sugarColumn?.IsIdentity ?? true)
+                    {
+                        saveModel.MainData.Remove(keyPro.Name.FirstLetterToUpper());
+                        saveModel.MainData.Remove(keyPro.Name.FirstLetterToLower());
+                    }
+                }
+                TEntity entity = saveModel.MainData.DicToModel<TEntity>();
+                if (saveModel.DetailData == null || saveModel.DetailData.Count == 0)
+                {
+                    BaseDal.AddData(entity);
+                    return WebResponseContent.Instance.OK();
+                }
+
+                if (typeof(TEntity).GetNavigatePro() == null)
+                {
+                    return WebResponseContent.Instance.Error("鏈厤缃鑸睘鎬�");
+                }
+
+                Type detailType = typeof(TEntity).GetDetailType();
+                MethodInfo? methodInfo = GetType().GetMethod("AddDataIncludesDetail");
+                methodInfo = methodInfo?.MakeGenericMethod(new Type[] { detailType });
+                object? obj = methodInfo?.Invoke(this, new object[] { entity, detailType, saveModel.DetailData });
+                return obj as WebResponseContent;
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        public WebResponseContent AddDataIncludesDetail<TDetail>(TEntity entity, Type detailType, List<Dictionary<string, object>> detailDics) where TDetail : class, new()
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                string name = typeof(TEntity).GetMainIdByDetail();
+                string reslut = detailType.ValidateDicInEntity(detailDics, true, new string[] { name });
+                if (reslut != string.Empty)
+                    return WebResponseContent.Instance.Error(reslut);
+
+                List<TDetail> list = detailDics.DicToIEnumerable<TDetail>();
+
+                ((SqlSugarClient)BaseDal.Db).BeginTran();
+
+                int id = BaseDal.Db.Insertable(entity).ExecuteReturnIdentity();
+
+                for (int i = 0; i < list.Count; i++)
+                {
+                    TDetail detail = list[i];
+                    typeof(TDetail).SetDetailId(detail, id, name);
+                }
+
+                BaseDal.Db.Insertable(list).ExecuteCommand();
+
+                ((SqlSugarClient)BaseDal.Db).CommitTran();
+
+                content = WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                ((SqlSugarClient)BaseDal.Db).RollbackTran();
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
+
+        /// <summary>
+        /// 淇敼鏁版嵁
+        /// </summary>
+        /// <param name="entity">鍗曚釜瀹炰綋</param>
+        /// <returns></returns>
+        public virtual WebResponseContent UpdateData(TEntity entity)
+        {
+            try
+            {
+                return BaseDal.UpdateData(entity) ? WebResponseContent.Instance.OK() : WebResponseContent.Instance.Error();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 淇敼鏁版嵁
+        /// </summary>
+        /// <param name="entities">瀹炰綋闆嗗悎</param>
+        /// <returns></returns>
+        public virtual WebResponseContent UpdateData(List<TEntity> entities)
+        {
+            try
+            {
+                return BaseDal.UpdateData(entities) ? WebResponseContent.Instance.OK() : WebResponseContent.Instance.Error();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 淇敼鏁版嵁
+        /// </summary>
+        /// <param name="saveModel"></param>
+        /// <returns></returns>
+        public virtual WebResponseContent UpdateData(SaveModel saveModel)
+        {
+            try
+            {
+                List<string>? list = UpdateIgnoreColOnExecute?.Invoke(saveModel);
+                if (saveModel == null || saveModel.MainData == null || saveModel.MainData.Count == 0)//鍒ゆ柇鍙傛暟鏄惁浼犲叆
+                {
+                    return WebResponseContent.Instance.Error("浼犲弬閿欒,鍙傛暟涓嶈兘涓虹┖");
+                }
+                string validResult = typeof(TEntity).ValidateDicInEntity(saveModel.MainData, false, TProperties, list?.ToArray() ?? null);
+
+                if (!string.IsNullOrEmpty(validResult))
+                {
+                    return WebResponseContent.Instance.Error(validResult);
+                }
+
+                PropertyInfo keyPro = typeof(TEntity).GetKeyProperty();
+                if (keyPro == null)
+                {
+                    return WebResponseContent.Instance.Error("璇峰厛璁剧疆涓婚敭");
+                }
+
+                TEntity entity = saveModel.MainData.DicToModel<TEntity>();
+
+                List<string> listCol = new List<string>();
+                foreach (var item in saveModel.MainData)
+                {
+                    PropertyInfo? propertyInfo = typeof(TEntity).GetProperty(item.Key);
+                    if (propertyInfo == null)
+                    {
+                        propertyInfo = typeof(TEntity).GetProperty(item.Key.FirstLetterToLower());
+                        if (propertyInfo == null)
+                        {
+                            propertyInfo = typeof(TEntity).GetProperty(item.Key.FirstLetterToUpper());
+                        }
+                    }
+
+                    listCol.Add(propertyInfo?.Name);
+                }
+
+                if (saveModel.DetailData == null || saveModel.DetailData.Count == 0)
+                {
+                    if (list != null)
+                        listCol = listCol.Where(x => !list.Contains(x)).ToList();
+                    bool result = BaseDal.UpdateData(entity, listCol, list);
+                    return WebResponseContent.Instance.OK();
+                }
+
+                if (typeof(TEntity).GetNavigatePro() == null)
+                {
+                    return WebResponseContent.Instance.Error("鏈厤缃鑸睘鎬�");
+                }
+
+                Type detailType = typeof(TEntity).GetDetailType();
+                MethodInfo? methodInfo = GetType().GetMethod("UpdateDataInculdesDetail");
+                methodInfo = methodInfo?.MakeGenericMethod(new Type[] { detailType });
+                object? obj = methodInfo?.Invoke(this, new object[] { entity, detailType, saveModel.DetailData, saveModel.DelKeys });
+                return obj as WebResponseContent;
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        public WebResponseContent UpdateDataInculdesDetail<TDetail>(TEntity entity, Type detailType, List<Dictionary<string, object>> detailDics, List<object> delKeys) where TDetail : class, new()
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                string name = typeof(TEntity).GetMainIdByDetail();
+                string reslut = detailType.ValidateDicInEntity(detailDics, true, new string[] { name });
+                if (reslut != string.Empty)
+                    return WebResponseContent.Instance.Error(reslut);
+
+                List<TDetail> list = detailDics.DicToIEnumerable<TDetail>();
+
+                List<object> dynamicDelKeys = new List<object>();
+                if (delKeys != null)
+                {
+                    for (int i = 0; i < delKeys.Count; i++)
+                    {
+                        dynamicDelKeys.Add(delKeys[i]);
+                    }
+                }
+
+                List<TDetail> updateRows = new List<TDetail>();
+                List<TDetail> addRows = new List<TDetail>();
+
+                for (int i = 0; i < list.Count; i++)
+                {
+                    object detailId = typeof(TDetail).GetPropertyValue(list[i], typeof(TDetail).GetKeyName());
+                    if (detailId != null)
+                    {
+                        if (detailId.ToString() != "0")
+                        {
+                            updateRows.Add(list[i]);
+                        }
+                        else
+                        {
+                            addRows.Add(list[i]);
+                        }
+                    }
+                }
+
+                object mainId = typeof(TEntity).GetPropertyValue(entity, typeof(TEntity).GetKeyName());
+                if (mainId != null)
+                {
+                    ((SqlSugarClient)BaseDal.Db).BeginTran();
+
+                    if (dynamicDelKeys.Count > 0)
+                        BaseDal.Db.Deleteable<object>().AS(detailType.Name).Where($"{detailType.GetKeyName()} in (@id)", new { id = dynamicDelKeys.ToArray() }).ExecuteCommandHasChange();
+
+                    BaseDal.Db.Updateable(entity).ExecuteCommandHasChange();
+
+                    BaseDal.Db.Updateable(updateRows).ExecuteCommand();
+
+                    for (int i = 0; i < addRows.Count; i++)
+                    {
+                        TDetail detail = addRows[i];
+                        typeof(TDetail).SetDetailId(detail, mainId, name);
+                    }
+
+                    BaseDal.Db.Insertable(addRows).ExecuteCommand();
+
+                    ((SqlSugarClient)BaseDal.Db).CommitTran();
+
+                    content = WebResponseContent.Instance.OK();
+                }
+                else
+                {
+                    content = WebResponseContent.Instance.Error("鏈壘鍒颁富琛ㄤ富閿��");
+                }
+
+            }
+            catch (Exception ex)
+            {
+                ((SqlSugarClient)BaseDal.Db).RollbackTran();
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="key">涓婚敭</param>
+        /// <returns></returns>
+        public virtual WebResponseContent DeleteData(object key)
+        {
+            try
+            {
+                return BaseDal.DeleteDataById(key) ? WebResponseContent.Instance.OK() : WebResponseContent.Instance.Error();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="keys">涓婚敭鏁扮粍</param>
+        /// <returns></returns>
+        public virtual WebResponseContent DeleteData(object[] keys)
+        {
+            try
+            {
+                if (typeof(TEntity).GetNavigatePro() == null)
+                    return BaseDal.DeleteDataByIds(keys) ? WebResponseContent.Instance.OK() : WebResponseContent.Instance.Error();
+                else
+                {
+                    if (keys != null)
+                    {
+                        Type detailType = typeof(TEntity).GetDetailType();
+                        string name = typeof(TEntity).GetMainIdByDetail();
+                        List<object> dynamicDelKeys = new List<object>();
+
+                        for (int i = 0; i < keys.Length; i++)
+                        {
+                            dynamicDelKeys.Add(keys[i]);
+                        }
+                        ((SqlSugarClient)BaseDal.Db).BeginTran();
+
+                        if (dynamicDelKeys.Count > 0)
+                            BaseDal.Db.Deleteable<object>().AS(detailType.Name).Where($"{name} in (@id)", new { id = dynamicDelKeys.ToArray() }).ExecuteCommandHasChange();
+
+                        BaseDal.DeleteDataByIds(keys);
+
+                        ((SqlSugarClient)BaseDal.Db).CommitTran();
+
+                        return WebResponseContent.Instance.OK();
+                    }
+                    else
+                    {
+                        return WebResponseContent.Instance.Error("鍙傛暟閿欒");
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                ((SqlSugarClient)BaseDal.Db).RollbackTran();
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="entity">鍗曚釜瀹炰綋</param>
+        /// <returns></returns>
+        public virtual WebResponseContent DeleteData(TEntity entity)
+        {
+            try
+            {
+                return BaseDal.DeleteData(entity) ? WebResponseContent.Instance.OK() : WebResponseContent.Instance.Error();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="entities">瀹炰綋闆嗗悎</param>
+        /// <returns></returns>
+        public virtual WebResponseContent DeleteData(List<TEntity> entities)
+        {
+            try
+            {
+                return BaseDal.DeleteData(entities) ? WebResponseContent.Instance.OK() : WebResponseContent.Instance.Error();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 瀵煎嚭鏁版嵁
+        /// </summary>
+        /// <param name="pageData"></param>
+        /// <returns></returns>
+        public virtual WebResponseContent Export(PageDataOptions options)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                Type t = typeof(TEntity);
+
+                string savePath = AppDomain.CurrentDomain.BaseDirectory + $"ExcelExport";
+                IExporter exporter = new ExcelExporter();
+                string wheres = options.ValidatePageOptions(TProperties);
+                //鑾峰彇鎺掑簭瀛楁
+                Dictionary<string, OrderByType> orderbyDic = options.GetPageDataSort(TProperties);
+
+                List<TEntity> entities = BaseDal.QueryData(wheres, orderbyDic);
+
+                byte[] data = exporter.ExportAsByteArray(entities).Result;
+
+                string fileName = "";
+                SugarTable sugarTable = t.GetCustomAttribute<SugarTable>();
+                if (sugarTable != null)
+                {
+                    fileName = sugarTable.TableDescription + ".xlsx";
+                }
+                else
+                {
+                    fileName = nameof(TEntity) + ".xlsx";
+                }
+
+                FileHelper.WriteFile(savePath, fileName, data);
+
+                content = WebResponseContent.Instance.OK(data: savePath + "\\" + fileName);
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
+
+        /// <summary>
+        /// 瀵煎叆鏁版嵁
+        /// </summary>
+        /// <param name="files"></param>
+        /// <returns></returns>
+        public virtual WebResponseContent Import(List<IFormFile> files)
+        {
+            try
+            {
+                if (files == null || files.Count == 0)
+                    return new WebResponseContent { Status = true, Message = "璇烽�夋嫨涓婁紶鐨勬枃浠�" };
+                Microsoft.AspNetCore.Http.IFormFile formFile = files[0];
+                string dicPath = AppDomain.CurrentDomain.BaseDirectory + $"ExcelImprot/{DateTime.Now.ToString("yyyMMdd")}/{typeof(TEntity).Name}/";
+                if (!Directory.Exists(dicPath)) Directory.CreateDirectory(dicPath);
+                string fileName = $"{Guid.NewGuid()}_{formFile.FileName}";
+                dicPath = $"{dicPath}{fileName}";
+                using (FileStream stream = new FileStream(dicPath, FileMode.Create))
+                {
+                    formFile.CopyTo(stream);
+                }
+                ExcelImporter importer = new ExcelImporter();
+                ImportResult<TEntity> importResult = importer.Import<TEntity>(dicPath, "").Result;
+                if (importResult.HasError)
+                {
+                    return WebResponseContent.Instance.Error(importResult.TemplateErrors.Serialize());
+                }
+                BaseDal.AddData(importResult.Data.ToList());
+                return WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 涓婁紶鏂囦欢
+        /// </summary>
+        /// <param name="files"></param>
+        /// <returns></returns>
+        public virtual WebResponseContent Upload(List<IFormFile> files)
+        {
+            throw new NotImplementedException();
+        }
+
+        /// <summary>
+        /// 妯℃澘涓嬭浇
+        /// </summary>
+        /// <returns></returns>
+        public virtual WebResponseContent DownLoadTemplate()
+        {
+            WebResponseContent content = new WebResponseContent();
+            Type t = typeof(TEntity);
+            IExporter exporter = new ExcelExporter();
+            byte[] data = exporter.ExportHeaderAsByteArray(new TEntity()).Result;
+            string fileName = "";
+            SugarTable sugarTable = t.GetCustomAttribute<SugarTable>();
+            if (sugarTable != null)
+            {
+                fileName = sugarTable.TableDescription + "瀵煎叆妯℃澘.xlsx";
+            }
+            else
+            {
+                fileName = nameof(TEntity) + "瀵煎叆妯℃澘.xlsx";
+            }
+            string savePath = AppDomain.CurrentDomain.BaseDirectory + $"ExcelImprotTemplate";
+            FileHelper.WriteFile(savePath, fileName, data);
+
+            content = WebResponseContent.Instance.OK(data: savePath + "\\" + fileName);
+            return content;
+        }
+
+        public WebResponseContent ExportSeedData()
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                string seedDataFolder = $"WIDESEA_DB.DBSeed.Json/{typeof(TEntity).Name}.tsv";
+                List<TEntity> deviceInfos = BaseDal.QueryData();
+                string str = JsonConvert.SerializeObject(deviceInfos, Formatting.Indented);
+                List<Dictionary<string, object>> keyValuePairs = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(str);
+                FileHelper.WriteFileAndDelOldFile($"wwwroot/{seedDataFolder}", str);
+                content = WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceFunFilter.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceFunFilter.cs"
new file mode 100644
index 0000000..645355c
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceFunFilter.cs"
@@ -0,0 +1,238 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.BaseServices
+{
+    public abstract class ServiceFunFilter<T> where T : class
+    {
+        /// <summary>
+        /// 2020.08.15鏄惁寮�鍚绉熸埛鍔熻兘
+        /// 浣跨敤鏂规硶瑙佹枃妗f垨SellOrderService.cs
+        /// </summary>
+        protected bool IsMultiTenancy { get; set; }
+
+        /// <summary>
+        /// 鏌ヨ鐣岄潰table 缁熻銆佹眰鍜屻�佸钩鍧囧�肩瓑
+        /// 瀹炵幇鏂瑰紡
+        ///SummaryExpress = (IQueryable<App_TransactionAvgPrice> queryable) =>
+        //                {
+        //                return queryable.GroupBy(x => 1).Select(x => new
+        //                {
+        //                    AvgPrice = x.Average(o => o.AvgPrice),
+        //                    Enable = x.Sum(o => o.Enable)
+        //            }).FirstOrDefault();
+        //};
+        /// </summary>
+        //   protected Func<IGrouping<T, T>, object> SummaryExpress = null;
+        protected Func<IQueryable<T>, object> SummaryExpress = null;
+
+        /// <summary>
+        /// 鏄庣粏table 缁熻銆佹眰鍜屻�佸钩鍧囧�肩瓑
+        /// </summary>
+        /// <typeparam name="Detail"></typeparam>
+        /// <param name="queryeable"></param>
+        /// <returns></returns>
+        //protected abstract object GetDetailSummary<Detail>(IQueryable<Detail> queryeable);
+
+        /// <summary>
+        /// 鏄惁寮�鍚敤鎴锋暟鎹潈闄�,true=鐢ㄦ埛鍙兘鎿嶄綔鑷繁(鍙婁笅绾ц鑹�)鍒涘缓鐨勬暟鎹�,濡�:鏌ヨ銆佸垹闄ゃ�佷慨鏀圭瓑鎿嶄綔
+        /// 娉ㄦ剰锛氶渶瑕佸湪浠g爜鐢熸垚鍣ㄧ晫闈㈤�夋嫨銆愭槸銆戝強鐢熸垚Model鎵嶄細鐢熸晥)
+        /// </summary>
+        protected bool LimitCurrentUserPermission { get; set; } = false;
+
+        ///榛樿瀵煎嚭鏈�澶ц〃鏁伴噺锛�0涓嶉檺鍒� 
+        protected int Limit { get; set; } = 0;
+
+        /// <summary>
+        /// 榛樿涓婁紶鏂囦欢澶у皬闄愬埗3M
+        /// </summary>
+        protected int LimitUpFileSizee { get; set; } = 3;
+
+
+        /// <summary>
+        /// 2020.08.15娣诲姞鑷畾涔夊師鐢熸煡璇ql,杩欎釜瀵逛簬涓嶆兂鍐欒〃杈惧紡鍏宠仈鎴栬�呭鏉傛煡璇㈤潪甯告湁鐢�
+        /// 渚嬶細QuerySql=$"select * from tb1 as a where  a.name='xxxx' x.id in (select b.id from tb2 b)";
+        ///  select * 杩欓噷鍙互鑷畾涔夛紝浣唖elect 蹇呴』杩斿洖琛ㄦ墍鏈夌殑鍒楋紝涓嶈兘灏�
+        /// </summary>
+        protected string QuerySql = null;
+
+        /// <summary>
+        /// 鏌ヨ鍓�,瀵圭幇鍦ㄦ湁鐨勬煡璇㈠瓧绗︿覆鏉′欢澧炲姞鎴栧垹闄�
+        /// </summary>
+        protected Action<List<SearchParameters>> QueryRelativeList { get; set; }
+
+        //鏌ヨ鍓�,鍦ㄧ幇鏈夌殑鏌ヨ鏉′欢涓婇�氳繃琛ㄨ揪寮忎慨鏀规煡璇㈡潯浠�
+        protected Func<IQueryable<T>, IQueryable<T>> QueryRelativeExpression { get; set; }
+
+
+        /// <summary>
+        /// 鎸囧畾鏌ヨ鐨勫垪锛屾牸寮�:Expression<Func<T, object>> exp = x => new { x.瀛楁1, x.瀛楁2 }(鏆傛椂鏈惎鐢�)
+        /// </summary>
+        protected Expression<Func<T, object>> Columns { get; set; }
+
+        /// <summary>
+        /// 璁剧疆鏌ヨ鎺掑簭鍙傛暟鍙婃柟寮�,鍙傛暟鏍煎紡涓猴細
+        ///  Expression<Func<T, Dictionary<object, bool>>> orderBy = x => new Dictionary<object, QueryOrderBy>() 
+        ///            {{ x.ID, QueryOrderBy.Asc },{ x.DestWarehouseName, QueryOrderBy.Desc } };
+        /// 杩斿洖鐨勬槸new Dictionary<object, bool>(){{}}key涓烘帓搴忓瓧娈碉紝QueryOrderBy涓烘帓搴忔柟寮�
+        /// </summary>
+        protected Expression<Func<T, Dictionary<object, OrderByType>>> OrderByExpression;
+
+        protected Dictionary<string, OrderByType> OrderByParameters { get; set; }
+
+        protected bool EnableWebOrderBy { get; set; } = true;
+
+        /// <summary>
+        /// 璁剧疆鏌ヨ鐨勮〃鍚�(宸插純鐢�)
+        /// </summary>
+        protected string TableName { get; set; }
+
+        /// <summary>
+        /// 椤甸潰鏌ヨ鎴栧鍑猴紝浠庢暟鎹簱鏌ヨ鍑烘潵鐨勭粨鏋�
+        /// </summary>
+        protected Action<PageGridData<T>> GetPageDataOnExecuted;
+
+        /// <summary>
+        /// 璋冪敤鏂板缓澶勭悊鍓�(SaveModel涓轰紶鍏ョ殑鍘熺敓鏁版嵁)
+        /// </summary>
+        protected Func<SaveModel, WebResponseContent> AddOnExecute;
+
+        /// <summary>
+        /// 璋冪敤鏂板缓淇濆瓨鏁版嵁搴撳墠澶勭悊(宸插皢鎻愪氦鐨勫師鐢熸暟鎹浆鎹㈡垚浜嗗璞�)
+        ///  Func<T, object,ResponseData>  T涓轰富琛ㄦ暟鎹紝object涓烘槑缁嗘暟鎹�(濡傛灉闇�瑕佷娇鐢ㄦ槑缁嗗璞�,璇风敤 object as List<T>杞崲) 
+        /// </summary>
+        protected Func<T, object, WebResponseContent> AddOnExecuting;
+
+        /// <summary>
+        /// 璋冪敤鏂板缓淇濆瓨鏁版嵁搴撳悗澶勭悊銆�
+        /// **瀹炵幇褰撳墠鏂规硶鏃讹紝鍐呴儴榛樿宸茬粡寮�鍚簨鍔★紝濡傛灉瀹炵幇鐨勬柟娉曟搷浣滅殑鏄悓涓�鏁版嵁搴�,鍒欎笉闇�瑕佸湪AddOnExecuted涓簨鍔�
+        ///  Func<T, object,ResponseData>  T涓轰富琛ㄦ暟鎹紝object涓烘槑缁嗘暟鎹�(濡傛灉闇�瑕佷娇鐢ㄦ槑缁嗗璞�,璇风敤 object as List<T>杞崲) 
+        ///  姝ゅ宸插紑鍚簡DbContext浜嬪姟(閲嶇偣),濡傛灉杩樻湁鍏朵粬涓氬姟澶勪簨锛岀洿鎺ュ湪杩欓噷鍐橢F浠g爜,涓嶉渶瑕佸啀寮�鍚簨鍔�
+        /// 濡傛灉鎵ц鐨勬槸鎵嬪啓sql璇风敤repository.DbContext.Database.ExecuteSqlCommand()鎴� repository.DbContext.Set<T>().FromSql鎵ц鍏蜂綋sql璇彞
+        /// </summary>
+        protected Func<T, object, WebResponseContent> AddOnExecuted;
+
+        /// <summary>
+        /// 杩涘叆瀹℃壒娴佺▼鏂规硶涔嬪墠
+        /// </summary>
+        protected Func<T, bool> AddWorkFlowExecuting;
+
+        /// <summary>
+        /// 鍐欏叆瀹℃壒娴佺▼鏁版嵁涔嬪悗
+        /// list:瀹℃壒鐨勪汉id
+        /// </summary>
+        protected Action<T, List<int>> AddWorkFlowExecuted;
+
+        /// <summary>
+        /// 璋冪敤鏇存柊鏂规硶鍓嶅鐞�(SaveModel涓轰紶鍏ョ殑鍘熺敓鏁版嵁)
+        /// </summary>
+        protected Func<SaveModel, WebResponseContent> UpdateOnExecute;
+
+        /// <summary>
+        /// 璋冪敤鏇存柊鏂规硶鍓嶅鐞�(SaveModel涓轰紶鍏ョ殑鍘熺敓鏁版嵁)
+        /// </summary>
+        protected Func<SaveModel, List<string>> UpdateIgnoreColOnExecute;
+
+        /// <summary>
+        ///  璋冪敤鏇存柊鏂规硶淇濆瓨鏁版嵁搴撳墠澶勭悊
+        ///  (宸插皢鎻愪氦鐨勫師鐢熸暟鎹浆鎹㈡垚浜嗗璞�,灏嗘槑缁嗘柊澧炪�佷慨鏀广�佸垹闄ょ殑鏁版嵁鍒嗗埆鐢╫bject1/2/3鏍囪瘑鍑烘潵 )
+        ///  T=鏇存柊鐨勪富琛ㄥ璞�
+        ///  object1=涓烘柊澧炴槑缁嗙殑瀵硅薄锛屼娇鐢ㄦ椂灏唎bject as List<T>杞崲涓�涓�
+        ///  object2=涓烘洿鏂版槑缁嗙殑瀵硅薄
+        ///  List<object>=涓哄垹闄ょ殑缁嗙殑瀵硅薄Key
+        /// </summary>
+        protected Func<T, object, object, List<object>, WebResponseContent> UpdateOnExecuting;
+
+        /// <summary>
+        ///  璋冪敤鏇存柊鏂规硶淇濆瓨鏁版嵁搴撳悗澶勭悊
+        ///   **瀹炵幇褰撳墠鏂规硶鏃讹紝鍐呴儴榛樿宸茬粡寮�鍚簨鍔★紝濡傛灉瀹炵幇鐨勬柟娉曟搷浣滅殑鏄悓涓�鏁版嵁搴�,鍒欎笉闇�瑕佸湪UpdateOnExecuted涓簨鍔�
+        ///  (宸插皢鎻愪氦鐨勫師鐢熸暟鎹浆鎹㈡垚浜嗗璞�,灏嗘槑缁嗘柊澧炪�佷慨鏀广�佸垹闄ょ殑鏁版嵁鍒嗗埆鐢╫bject1/2/3鏍囪瘑鍑烘潵 )
+        ///  T=鏇存柊鐨勪富琛ㄥ璞�
+        ///  object1=涓烘柊澧炴槑缁嗙殑瀵硅薄锛屼娇鐢ㄦ椂灏唎bject as List<T>杞崲涓�涓�
+        ///  object2=涓烘洿鏂版槑缁嗙殑瀵硅薄
+        ///  List<object>=涓哄垹闄ょ殑缁嗙殑瀵硅薄Key
+        /// 姝ゅ宸插紑鍚簡DbContext浜嬪姟(閲嶇偣),濡傛灉杩樻湁鍏朵粬涓氬姟澶勪簨锛岀洿鎺ュ湪杩欓噷鍐橢F浠g爜,涓嶉渶瑕佸啀寮�鍚簨鍔�
+        /// 濡傛灉鎵ц鐨勬槸鎵嬪啓sql璇风敤repository.DbContext.Database.ExecuteSqlCommand()鎴� repository.DbContext.Set<T>().FromSql鎵ц鍏蜂綋sql璇彞
+        /// </summary>
+        protected Func<T, object, object, List<object>, WebResponseContent> UpdateOnExecuted;
+
+        /// <summary>
+        /// 鍒犻櫎鍓嶅鐞�,object[]鍑嗗鍒犻櫎鐨勪富閿�
+        /// </summary>
+        protected Func<object[], WebResponseContent> DelOnExecuting;
+
+        /// <summary>
+        /// 鍒犻櫎鍚庡鐞�,object[]宸插垹闄ょ殑涓婚敭,姝ゅ宸插紑鍚簡DbContext浜嬪姟(閲嶇偣),濡傛灉杩樻湁鍏朵粬涓氬姟澶勪簨锛岀洿鎺ュ湪杩欓噷鍐橢F浠g爜,涓嶉渶瑕佸啀寮�鍚簨鍔�
+        /// 濡傛灉鎵ц鐨勬槸鎵嬪啓sql璇风敤repository.DbContext.Database.ExecuteSqlCommand()鎴� repository.DbContext.Set<T>().FromSql鎵ц鍏蜂綋sql璇彞
+        /// </summary>
+        protected Func<object[], WebResponseContent> DelOnExecuted;
+
+        /// <summary>
+        /// 瀹℃牳鍓嶅鐞�
+        /// </summary>
+        protected Func<List<T>, WebResponseContent> AuditOnExecuting;
+        /// <summary>
+        /// 瀹℃牳鍚庡鐞�
+        /// </summary>
+        protected Func<List<T>, WebResponseContent> AuditOnExecuted;
+
+
+        /// <summary>
+        ///瀵煎嚭鍓嶅鐞�,DataTable瀵煎嚭鐨勮〃鏁版嵁
+        ///List<T>瀵煎嚭鐨勬暟鎹�, List<string>蹇界暐涓嶉渶瑕佸鍑虹殑瀛楁
+        ///姝ゆ柟娉曚笉寤鸿浣跨敤,鐢变笅闈xportColumns濮旀墭鏇夸唬2020.05.07
+        /// </summary>
+        protected Func<List<T>, List<string>, WebResponseContent> ExportOnExecuting;
+
+        /// <summary>
+        /// 2020.05.07
+        /// 瀵煎嚭琛ㄦ暟鎹�(鐣岄潰涓婂鍑烘搷浣�),鎸囧畾瑕佸鍑虹殑鍒楋紝鏍煎紡:Expression<Func<T, object>> exp = x => new { x.瀛楁1, x.瀛楁2 }
+        /// </summary>
+        protected Expression<Func<T, object>> ExportColumns { get; set; }
+
+
+        /// <summary>
+        /// 2020.05.07
+        /// 瀵煎嚭涓嬭浇妯℃澘锛屾寚瀹氳瀵煎嚭鐨勬ā鏉垮垪锛屾牸寮�:Expression<Func<T, object>> exp = x => new { x.瀛楁1, x.瀛楁2 }
+        /// </summary>
+        protected Expression<Func<T, object>> DownLoadTemplateColumns { get; set; }
+
+
+        /// <summary>
+        /// 瀵煎叆淇濆瓨鍚�
+        /// </summary>
+        protected Func<List<T>, WebResponseContent> ImportOnExecuted;
+
+        /// <summary>
+        /// 瀵煎叆淇濆瓨鍓�
+        /// </summary>
+        protected Func<List<T>, WebResponseContent> ImportOnExecuting;
+
+        /// <summary>
+        /// 瀵煎叆鏃朵笉楠岃瘉涓嬫媺妗嗘暟鎹簮鐨勫瓧娈靛��2023.05.03
+        /// </summary>
+        protected Expression<Func<T, object>> ImportIgnoreSelectValidationColumns;
+
+        /// <summary>
+        /// 2022.06.20澧炲姞鍘熺敓excel璇诲彇鏂规硶(瀵煎叆鏃跺彲浠ヨ嚜瀹氫箟璇诲彇excel鍐呭)
+        /// string=褰撳墠璇诲彇鐨別xcel鍗曞厓鏍肩殑鍊�
+        /// ExcelWorksheet=excel瀵硅薄
+        /// ExcelRange褰撳墠excel鍗曞厓鏍煎璞�
+        /// int=褰撳墠璇诲彇鐨勭鍑犳暟
+        /// int=褰撳墠璇诲彇鐨勭鍑犲垪
+        /// string=杩斿洖鐨勫��
+        /// </summary>
+        //protected Func<string, ExcelWorksheet, ExcelRange, int, int, string> ImportOnReadCellValue;
+
+
+        /// <summary>
+        /// 鑷畾涔変笂浼犳枃浠跺す(2022.10.07)
+        /// </summary>
+        protected string UploadFolder = null;
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Caches/Caching.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Caches/Caching.cs"
new file mode 100644
index 0000000..fff2699
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Caches/Caching.cs"
@@ -0,0 +1,351 @@
+锘縰sing Microsoft.Extensions.Caching.Distributed;
+using Microsoft.Extensions.Caching.Memory;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Const;
+
+namespace WIDESEA_Core.Caches
+{
+    /// <summary>
+    /// 瀹炰緥鍖栫紦瀛樻帴鍙Caching
+    /// </summary>
+    public class Caching : ICaching
+    {
+        private readonly IDistributedCache _cache;
+
+        public Caching(IDistributedCache cache)
+        {
+            _cache = cache;
+        }
+
+        private byte[] GetBytes<T>(T source)
+        {
+            return Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(source));
+        }
+
+        public IDistributedCache Cache => _cache;
+
+        public void AddCacheKey(string cacheKey)
+        {
+            var res = _cache.GetString(CacheConst.KeyAll);
+            var allkeys = string.IsNullOrWhiteSpace(res) ? new List<string>() : JsonConvert.DeserializeObject<List<string>>(res);
+            if (!allkeys.Any(m => m == cacheKey))
+            {
+                allkeys.Add(cacheKey);
+                _cache.SetString(CacheConst.KeyAll, JsonConvert.SerializeObject(allkeys));
+            }
+        }
+
+        /// <summary>
+        /// 澧炲姞缂撳瓨Key
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <returns></returns>
+        public async Task AddCacheKeyAsync(string cacheKey)
+        {
+            var res = await _cache.GetStringAsync(CacheConst.KeyAll);
+            var allkeys = string.IsNullOrWhiteSpace(res) ? new List<string>() : JsonConvert.DeserializeObject<List<string>>(res);
+            if (!allkeys.Any(m => m == cacheKey))
+            {
+                allkeys.Add(cacheKey);
+                await _cache.SetStringAsync(CacheConst.KeyAll, JsonConvert.SerializeObject(allkeys));
+            }
+        }
+
+        public void DelByPattern(string key)
+        {
+            var allkeys = GetAllCacheKeys();
+            if (allkeys == null) return;
+
+            var delAllkeys = allkeys.Where(u => u.Contains(key)).ToList();
+            delAllkeys.ForEach(u => { _cache.Remove(u); });
+
+            // 鏇存柊鎵�鏈夌紦瀛橀敭
+            allkeys = allkeys.Where(u => !u.Contains(key)).ToList();
+            _cache.SetString(CacheConst.KeyAll, JsonConvert.SerializeObject(allkeys));
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鏌愮壒寰佸叧閿瓧缂撳瓨
+        /// </summary>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        public async Task DelByPatternAsync(string key)
+        {
+            var allkeys = await GetAllCacheKeysAsync();
+            if (allkeys == null) return;
+
+            var delAllkeys = allkeys.Where(u => u.Contains(key)).ToList();
+            delAllkeys.ForEach(u => { _cache.Remove(u); });
+
+            // 鏇存柊鎵�鏈夌紦瀛橀敭
+            allkeys = allkeys.Where(u => !u.Contains(key)).ToList();
+            await _cache.SetStringAsync(CacheConst.KeyAll, JsonConvert.SerializeObject(allkeys));
+        }
+
+        public void DelCacheKey(string cacheKey)
+        {
+            var res = _cache.GetString(CacheConst.KeyAll);
+            var allkeys = string.IsNullOrWhiteSpace(res) ? new List<string>() : JsonConvert.DeserializeObject<List<string>>(res);
+            if (allkeys.Any(m => m == cacheKey))
+            {
+                allkeys.Remove(cacheKey);
+                _cache.SetString(CacheConst.KeyAll, JsonConvert.SerializeObject(allkeys));
+            }
+        }
+
+        /// <summary>
+        /// 鍒犻櫎缂撳瓨
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <returns></returns>
+        public async Task DelCacheKeyAsync(string cacheKey)
+        {
+            var res = await _cache.GetStringAsync(CacheConst.KeyAll);
+            var allkeys = string.IsNullOrWhiteSpace(res) ? new List<string>() : JsonConvert.DeserializeObject<List<string>>(res);
+            if (allkeys.Any(m => m == cacheKey))
+            {
+                allkeys.Remove(cacheKey);
+                await _cache.SetStringAsync(CacheConst.KeyAll, JsonConvert.SerializeObject(allkeys));
+            }
+        }
+
+        public bool Exists(string cacheKey)
+        {
+            var res = _cache.Get(cacheKey);
+            return res != null;
+        }
+
+        /// <summary>
+        /// 妫�鏌ョ粰瀹� key 鏄惁瀛樺湪
+        /// </summary>
+        /// <param name="cacheKey">閿�</param>
+        /// <returns></returns>
+        public async Task<bool> ExistsAsync(string cacheKey)
+        {
+            var res = await _cache.GetAsync(cacheKey);
+            return res != null;
+        }
+
+        public List<string> GetAllCacheKeys()
+        {
+            var res = _cache.GetString(CacheConst.KeyAll);
+            return string.IsNullOrWhiteSpace(res) ? null : JsonConvert.DeserializeObject<List<string>>(res);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎵�鏈夌紦瀛樺垪琛�
+        /// </summary>
+        /// <returns></returns>
+        public async Task<List<string>> GetAllCacheKeysAsync()
+        {
+            var res = await _cache.GetStringAsync(CacheConst.KeyAll);
+            return string.IsNullOrWhiteSpace(res) ? null : JsonConvert.DeserializeObject<List<string>>(res);
+        }
+
+        public T Get<T>(string cacheKey)
+        {
+            var res = _cache.Get(cacheKey);
+            return res == null ? default : JsonConvert.DeserializeObject<T>(Encoding.UTF8.GetString(res));
+        }
+
+        /// <summary>
+        /// 鑾峰彇缂撳瓨
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="cacheKey"></param>
+        /// <returns></returns>
+        public async Task<T> GetAsync<T>(string cacheKey)
+        {
+            var res = await _cache.GetAsync(cacheKey);
+            return res == null ? default : JsonConvert.DeserializeObject<T>(Encoding.UTF8.GetString(res));
+        }
+
+        public object Get(Type type, string cacheKey)
+        {
+            var res = _cache.Get(cacheKey);
+            return res == null ? default : JsonConvert.DeserializeObject(Encoding.UTF8.GetString(res), type);
+        }
+
+        public async Task<object> GetAsync(Type type, string cacheKey)
+        {
+            var res = await _cache.GetAsync(cacheKey);
+            return res == null ? default : JsonConvert.DeserializeObject(Encoding.UTF8.GetString(res), type);
+        }
+
+        public string GetString(string cacheKey)
+        {
+            return _cache.GetString(cacheKey);
+        }
+
+        /// <summary>
+        /// 鑾峰彇缂撳瓨
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <returns></returns>
+        public async Task<string> GetStringAsync(string cacheKey)
+        {
+            return await _cache.GetStringAsync(cacheKey);
+        }
+
+        public void Remove(string key)
+        {
+            _cache.Remove(key);
+            DelCacheKey(key);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎缂撳瓨
+        /// </summary>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        public async Task RemoveAsync(string key)
+        {
+            await _cache.RemoveAsync(key);
+            await DelCacheKeyAsync(key);
+        }
+
+        public void RemoveAll()
+        {
+            var catches = GetAllCacheKeys();
+            foreach (var @catch in catches) Remove(@catch);
+
+            catches.Clear();
+            _cache.SetString(CacheConst.KeyAll, JsonConvert.SerializeObject(catches));
+        }
+
+        public async Task RemoveAllAsync()
+        {
+            var catches = await GetAllCacheKeysAsync();
+            foreach (var @catch in catches) await RemoveAsync(@catch);
+
+            catches.Clear();
+            await _cache.SetStringAsync(CacheConst.KeyAll, JsonConvert.SerializeObject(catches));
+        }
+
+
+        public void Set<T>(string cacheKey, T value, TimeSpan? expire = null)
+        {
+            _cache.Set(cacheKey, GetBytes(value),
+                expire == null
+                    ? new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(6) }
+                    : new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = expire });
+
+            AddCacheKey(cacheKey);
+        }
+
+        /// <summary>
+        /// 澧炲姞瀵硅薄缂撳瓨
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <param name="value"></param>
+        /// <returns></returns>
+        public async Task SetAsync<T>(string cacheKey, T value)
+        {
+            await _cache.SetAsync(cacheKey, Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)),
+                new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(6) });
+
+            await AddCacheKeyAsync(cacheKey);
+        }
+
+        /// <summary>
+        /// 澧炲姞瀵硅薄缂撳瓨,骞惰缃繃鏈熸椂闂�
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <param name="value"></param>
+        /// <param name="expire"></param>
+        /// <returns></returns>
+        public async Task SetAsync<T>(string cacheKey, T value, TimeSpan expire)
+        {
+            await _cache.SetAsync(cacheKey, Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)),
+                new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = expire });
+
+            await AddCacheKeyAsync(cacheKey);
+        }
+
+        public void SetPermanent<T>(string cacheKey, T value)
+        {
+            _cache.Set(cacheKey, Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)));
+            AddCacheKey(cacheKey);
+        }
+
+        public async Task SetPermanentAsync<T>(string cacheKey, T value)
+        {
+            await _cache.SetAsync(cacheKey, Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)));
+            await AddCacheKeyAsync(cacheKey);
+        }
+
+        public void SetString(string cacheKey, string value, TimeSpan? expire = null)
+        {
+            if (expire == null)
+                _cache.SetString(cacheKey, value, new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(6) });
+            else
+                _cache.SetString(cacheKey, value, new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = expire });
+
+            AddCacheKey(cacheKey);
+        }
+
+        /// <summary>
+        /// 澧炲姞瀛楃涓茬紦瀛�
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <param name="value"></param>
+        /// <returns></returns>
+        public async Task SetStringAsync(string cacheKey, string value)
+        {
+            await _cache.SetStringAsync(cacheKey, value, new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(6) });
+
+            await AddCacheKeyAsync(cacheKey);
+        }
+
+        /// <summary>
+        /// 澧炲姞瀛楃涓茬紦瀛�,骞惰缃繃鏈熸椂闂�
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <param name="value"></param>
+        /// <param name="expire"></param>
+        /// <returns></returns>
+        public async Task SetStringAsync(string cacheKey, string value, TimeSpan expire)
+        {
+            await _cache.SetStringAsync(cacheKey, value, new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = expire });
+
+            await AddCacheKeyAsync(cacheKey);
+        }
+
+
+        /// <summary>
+        /// 缂撳瓨鏈�澶ц鑹叉暟鎹寖鍥�
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <param name="dataScopeType"></param>
+        /// <returns></returns>
+        public async Task SetMaxDataScopeType(long userId, int dataScopeType)
+        {
+            var cacheKey = CacheConst.KeyMaxDataScopeType + userId;
+            await SetStringAsync(cacheKey, dataScopeType.ToString());
+
+            await AddCacheKeyAsync(cacheKey);
+        }
+
+        /// <summary>
+        ///  鏍规嵁鐖堕敭娓呯┖
+        /// </summary>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        public async Task DelByParentKeyAsync(string key)
+        {
+            var allkeys = await GetAllCacheKeysAsync();
+            if (allkeys == null) return;
+
+            var delAllkeys = allkeys.Where(u => u.StartsWith(key)).ToList();
+            delAllkeys.ForEach(Remove);
+            // 鏇存柊鎵�鏈夌紦瀛橀敭
+            allkeys = allkeys.Where(u => !u.StartsWith(key)).ToList();
+            await SetStringAsync(CacheConst.KeyAll, JsonConvert.SerializeObject(allkeys));
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Caches/ICacheService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Caches/ICacheService.cs"
new file mode 100644
index 0000000..7deecbf
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Caches/ICacheService.cs"
@@ -0,0 +1,60 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Caches
+{
+    public interface ICacheService : IDisposable
+    {
+        /// <summary>
+        /// 楠岃瘉缂撳瓨椤规槸鍚﹀瓨鍦�
+        /// </summary>
+        /// <param name="key">缂撳瓨Key</param>
+        /// <returns></returns>
+        bool Exists(string key);
+
+        /// <summary>
+        /// 娣诲姞缂撳瓨
+        /// </summary>
+        /// <param name="key">缂撳瓨Key</param>
+        /// <param name="value">缂撳瓨Value</param>
+        /// <param name="expiresIn">缂撳瓨鏃堕暱</param>
+        /// <param name="isSliding">鏄惁婊戝姩杩囨湡锛堝鏋滃湪杩囨湡鏃堕棿鍐呮湁鎿嶄綔锛屽垯浠ュ綋鍓嶆椂闂寸偣寤堕暱杩囨湡鏃堕棿锛� //new TimeSpan(0, 60, 0);</param>
+        /// <returns></returns>
+        bool AddObject(string key, object value, int expireSeconds = -1, bool isSliding = false);
+
+        bool Add(string key, string value, int expireSeconds = -1, bool isSliding = false);
+
+        void AddOrUpdate(string key, string value, int expireSeconds = -1, bool isSliding = false);
+
+        /// <summary>
+        /// 鍒犻櫎缂撳瓨
+        /// </summary>
+        /// <param name="key">缂撳瓨Key</param>
+        /// <returns></returns>
+        bool Remove(string key);
+
+        /// <summary>
+        /// 鎵归噺鍒犻櫎缂撳瓨
+        /// </summary>
+        /// <param name="key">缂撳瓨Key闆嗗悎</param>
+        /// <returns></returns>
+        void Remove(IEnumerable<string> keys);
+
+        /// <summary>
+        /// 鑾峰彇缂撳瓨
+        /// </summary>
+        /// <param name="key">缂撳瓨Key</param>
+        /// <returns></returns>
+        T Get<T>(string key) where T : class;
+
+        /// <summary>
+        /// 鑾峰彇缂撳瓨
+        /// </summary>
+        /// <param name="key">缂撳瓨Key</param>
+        /// <returns></returns>
+        string Get(string key);
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Caches/ICaching.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Caches/ICaching.cs"
new file mode 100644
index 0000000..052615c
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Caches/ICaching.cs"
@@ -0,0 +1,59 @@
+锘縰sing Microsoft.Extensions.Caching.Distributed;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Caches
+{
+    /// <summary>
+    /// 缂撳瓨鎶借薄鎺ュ彛,鍩轰簬IDistributedCache灏佽
+    /// </summary>
+    public interface ICaching
+    {
+        public IDistributedCache Cache { get; }
+        void AddCacheKey(string cacheKey);
+        Task AddCacheKeyAsync(string cacheKey);
+
+        void DelByPattern(string key);
+        Task DelByPatternAsync(string key);
+
+        void DelCacheKey(string cacheKey);
+        Task DelCacheKeyAsync(string cacheKey);
+
+        bool Exists(string cacheKey);
+        Task<bool> ExistsAsync(string cacheKey);
+
+        List<string> GetAllCacheKeys();
+        Task<List<string>> GetAllCacheKeysAsync();
+
+        T Get<T>(string cacheKey);
+        Task<T> GetAsync<T>(string cacheKey);
+
+        object Get(Type type, string cacheKey);
+        Task<object> GetAsync(Type type, string cacheKey);
+
+        string GetString(string cacheKey);
+        Task<string> GetStringAsync(string cacheKey);
+
+        void Remove(string key);
+        Task RemoveAsync(string key);
+
+        void RemoveAll();
+        Task RemoveAllAsync();
+
+        void Set<T>(string cacheKey, T value, TimeSpan? expire = null);
+        Task SetAsync<T>(string cacheKey, T value);
+        Task SetAsync<T>(string cacheKey, T value, TimeSpan expire);
+
+        void SetPermanent<T>(string cacheKey, T value);
+        Task SetPermanentAsync<T>(string cacheKey, T value);
+
+        void SetString(string cacheKey, string value, TimeSpan? expire = null);
+        Task SetStringAsync(string cacheKey, string value);
+        Task SetStringAsync(string cacheKey, string value, TimeSpan expire);
+
+        Task DelByParentKeyAsync(string key);
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Caches/MemoryCacheService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Caches/MemoryCacheService.cs"
new file mode 100644
index 0000000..60a2d72
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Caches/MemoryCacheService.cs"
@@ -0,0 +1,113 @@
+锘縰sing Microsoft.Extensions.Caching.Memory;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Caches
+{
+    public class MemoryCacheService : ICacheService
+    {
+        protected IMemoryCache _cache;
+        public MemoryCacheService(IMemoryCache cache)
+        {
+            _cache = cache;
+
+        }
+
+        public bool Add(string key, string value, int expireSeconds = -1, bool isSliding = false)
+        {
+            return AddObject(key, value, expireSeconds, isSliding);
+        }
+
+        public bool AddObject(string key, object value, int expireSeconds = -1, bool isSliding = false)
+        {
+            if (expireSeconds != -1)
+            {
+                _cache.Set(key,
+                    value,
+                    new MemoryCacheEntryOptions()
+                    .SetSlidingExpiration(new TimeSpan(0, 0, expireSeconds))
+                    );
+            }
+            else
+            {
+                _cache.Set(key, value);
+            }
+
+            return true;
+        }
+
+        public void AddOrUpdate(string key, string value, int expireSeconds = -1, bool isSliding = false)
+        {
+            if (!string.IsNullOrEmpty(Get(key)))
+            {
+                Remove(key);
+                Add(key, value, expireSeconds, isSliding);
+            }
+            else
+            {
+                Add(key, value, expireSeconds, isSliding);
+            }
+        }
+
+        public void Dispose()
+        {
+            if (_cache != null)
+                _cache.Dispose();
+            GC.SuppressFinalize(this);
+        }
+
+        public bool Exists(string key)
+        {
+            if (key == null)
+            {
+                throw new ArgumentNullException(nameof(key));
+            }
+            return _cache.Get(key) != null;
+        }
+
+        public T Get<T>(string key) where T : class
+        {
+            if (key == null)
+            {
+                throw new ArgumentNullException(nameof(key));
+            }
+            return _cache.Get(key) as T;
+        }
+
+        public string? Get(string key)
+        {
+            try
+            {
+                return _cache.Get(key)?.ToString();
+            }
+            catch
+            {
+                return string.Empty;
+            }
+        }
+
+        public bool Remove(string key)
+        {
+            if (key == null)
+            {
+                throw new ArgumentNullException(nameof(key));
+            }
+            _cache.Remove(key);
+
+            return !Exists(key);
+        }
+
+        public void Remove(IEnumerable<string> keys)
+        {
+            if (keys == null)
+            {
+                throw new ArgumentNullException(nameof(keys));
+            }
+
+            keys.ToList().ForEach(item => _cache.Remove(item));
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/AnalysisCodeEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/AnalysisCodeEnum.cs"
new file mode 100644
index 0000000..8067ce6
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/AnalysisCodeEnum.cs"
@@ -0,0 +1,29 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.CodeConfigEnum
+{
+    /// <summary>
+    /// 瑙f瀽瑙勫垯缂栧彿
+    /// </summary>
+    public enum AnalysisCodeEnum
+    {
+        /// <summary>
+        /// 鍐呯鐮�
+        /// </summary>
+        [Description("鍐呯鐮�")]
+        InnerCode,
+
+        /// <summary>
+        /// 澶栫鐮�
+        /// </summary>
+        [Description("澶栫鐮�")]
+        OutterCode,
+
+        MatSerNumAnalysis
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/AnalysisFormatTypeEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/AnalysisFormatTypeEnum.cs"
new file mode 100644
index 0000000..a994796
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/AnalysisFormatTypeEnum.cs"
@@ -0,0 +1,49 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.CodeConfigEnum
+{
+    /// <summary>
+    /// 瑙f瀽鏍煎紡绫诲瀷
+    /// </summary>
+    public enum AnalysisFormatTypeEnum
+    {
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [Description("鐗╂枡缂栧彿")]
+        MTC,
+        /// <summary>
+        /// 鐢熶骇鏃ユ湡
+        /// </summary>
+        [Description("鐢熶骇鏃ユ湡")]
+        MTPD,
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        [Description("鎵规鍙�")]
+        BHN,
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        [Description("鏁伴噺")]
+        MTQ,
+        /// <summary>
+        /// 璁㈠崟鍙�
+        /// </summary>
+        [Description("璁㈠崟鍙�")]
+        ODN,
+
+        [Description("鏈夋晥鏈�")]
+        ED,
+        /// <summary>
+        /// 鍘熷鏁版嵁
+        /// </summary>
+        [Description("鍘熷鏁版嵁")]
+        BD,
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/AnalysisRuleEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/AnalysisRuleEnum.cs"
new file mode 100644
index 0000000..7ee4115
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/AnalysisRuleEnum.cs"
@@ -0,0 +1,27 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.CodeConfigEnum
+{
+    /// <summary>
+    /// 瑙f瀽瑙勫垯
+    /// </summary>
+    public enum AnalysisRuleEnum
+    {
+        /// <summary>
+        /// 鍒嗗壊瀛楃涓插垎鍓�
+        /// </summary>
+        [Description("鍒嗗壊瀛楃涓插垎鍓�")]
+        Split,
+
+        /// <summary>
+        /// 闀垮害鍒嗗壊
+        /// </summary>
+        [Description("闀垮害鍒嗗壊")]
+        Length
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/CodeFormatTypeEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/CodeFormatTypeEnum.cs"
new file mode 100644
index 0000000..67e6783
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/CodeFormatTypeEnum.cs"
@@ -0,0 +1,51 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.CodeConfigEnum
+{
+    /// <summary>
+    /// 缂栫爜鏍煎紡绫诲瀷
+    /// </summary>
+    public enum CodeFormatTypeEnum
+    {
+        /// <summary>
+        /// 璧峰瀛楃涓�
+        /// </summary>
+        [Description("璧峰瀛楃涓�")]
+        ST,
+
+        /// <summary>
+        /// 4浣嶆暟骞�
+        /// </summary>
+        [Description("4浣嶆暟骞�")]
+        YYYY,
+
+        /// <summary>
+        /// 2浣嶆暟鏈�
+        /// </summary>
+        [Description("2浣嶆暟鏈�")]
+        MM,
+
+        /// <summary>
+        /// 2浣嶆暟鏃�
+        /// </summary>
+        [Description("2浣嶆暟鏃�")]
+        DD,
+
+        /// <summary>
+        /// 娴佹按鍙�
+        /// </summary>
+        [Description("娴佹按鍙�")]
+        NUM,
+
+        /// <summary>
+        /// 缁撴潫瀛楃涓�
+        /// </summary>
+        [Description("缁撴潫瀛楃涓�")]
+        ED
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/RuleCodeEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/RuleCodeEnum.cs"
new file mode 100644
index 0000000..f270e87
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/RuleCodeEnum.cs"
@@ -0,0 +1,49 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.CodeConfigEnum
+{
+    /// <summary>
+    /// 缂栫爜瑙勫垯缂栧彿
+    /// </summary>
+    public enum RuleCodeEnum
+    {
+        /// <summary>
+        /// 鍏ュ簱鍗曞彿缂栫爜瑙勫垯缂栧彿
+        /// </summary>
+        [Description("鍏ュ簱鍗曞彿缂栫爜瑙勫垯缂栧彿")]
+        InboundOrderRule,
+
+        /// <summary>
+        /// 鍑哄簱鍗曞彿缂栫爜瑙勫垯缂栧彿
+        /// </summary>
+        [Description("鍑哄簱鍗曞彿缂栫爜瑙勫垯缂栧彿")]
+        OutboundOrderRule,
+
+        /// <summary>
+        /// 鏀惰揣鍗曞彿缂栫爜瑙勫垯缂栧彿
+        /// </summary>
+        [Description("鏀惰揣鍗曞彿缂栫爜瑙勫垯缂栧彿")]
+        ReceiveOrderRule,
+
+        /// <summary>
+        /// 璐ㄦ鍗曞彿缂栫爜瑙勫垯
+        /// </summary>
+        [Description("璐ㄦ鍗曞彿缂栫爜瑙勫垯")]
+        CheckOrderRule,
+        /// <summary>
+        /// 鍙戞枡鍗曞彿缂栫爜瑙勫垯
+        /// </summary>
+        [Description("鍙戞枡鍗曞彿缂栫爜瑙勫垯")]
+        FLCodeRule,
+        /// <summary>
+        /// 鍏ユ枡鍗曞彿缂栫爜瑙勫垯
+        /// </summary>
+        [Description("鍏ユ枡鍗曞彿缂栫爜瑙勫垯")]
+        RLCodeRule
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/AppSecret.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/AppSecret.cs"
new file mode 100644
index 0000000..8760498
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/AppSecret.cs"
@@ -0,0 +1,29 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Const
+{
+    /// <summary>
+    /// 绉橀挜閰嶇疆
+    /// </summary>
+    public struct AppSecret
+    {
+        public const string JWT = "BB3647441FFA4B5DB4E64A29B53CE525";
+
+        public const string Audience = "WIDESEA_WMS";
+
+        public const string Issuer = "WIDESEA_WMS_Owner";
+
+        public const string TokenHeaderName = "Authorization";
+
+        public const string User = "C5ABA9E202D94C43A3CA66002BF77FAF";
+
+        public const string DB = "3F8B7B38AD3D484A89ACA513CBD79F36";
+
+        //杩炴帴瀛楃涓�
+        //Data Source=.;Initial Catalog=WIDESEA_DB_2;User ID=sa;Password=P@ssw0rd;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/CacheConst.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/CacheConst.cs"
new file mode 100644
index 0000000..841d5d2
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/CacheConst.cs"
@@ -0,0 +1,94 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Const
+{
+    /// <summary>
+    /// 缂撳瓨鐩稿叧甯搁噺
+    /// </summary>
+    public class CacheConst
+    {
+        /// <summary>
+        /// 鐢ㄦ埛缂撳瓨
+        /// </summary>
+        public const string KeyUser = "user:";
+
+        /// <summary>
+        /// 鐢ㄦ埛閮ㄩ棬缂撳瓨
+        /// </summary>
+        public const string KeyUserDepart = "userDepart:";
+
+        /// <summary>
+        /// 鑿滃崟缂撳瓨
+        /// </summary>
+        public const string KeyMenu = "menu:";
+
+        /// <summary>
+        /// 鑿滃崟
+        /// </summary>
+        public const string KeyPermissions = "permissions";
+
+        /// <summary>
+        /// 鏉冮檺缂撳瓨
+        /// </summary>
+        public const string KeyPermission = "permission:";
+
+        /// <summary>
+        /// 鎺ュ彛璺敱
+        /// </summary>
+        public const string KeyModules = "modules";
+
+        /// <summary>
+        /// 绯荤粺閰嶇疆
+        /// </summary>
+        public const string KeySystemConfig = "sysConfig";
+
+        /// <summary>
+        /// 鏌ヨ杩囨护鍣ㄧ紦瀛�
+        /// </summary>
+        public const string KeyQueryFilter = "queryFilter:";
+
+        /// <summary>
+        /// 鏈烘瀯Id闆嗗悎缂撳瓨
+        /// </summary>
+        public const string KeyOrgIdList = "org:";
+
+        /// <summary>
+        /// 鏈�澶ц鑹叉暟鎹寖鍥寸紦瀛�
+        /// </summary>
+        public const string KeyMaxDataScopeType = "maxDataScopeType:";
+
+        /// <summary>
+        /// 楠岃瘉鐮佺紦瀛�
+        /// </summary>
+        public const string KeyVerCode = "verCode:";
+
+        /// <summary>
+        /// 鎵�鏈夌紦瀛樺叧閿瓧闆嗗悎
+        /// </summary>
+        public const string KeyAll = "keys";
+
+        /// <summary>
+        /// 瀹氭椂浠诲姟缂撳瓨
+        /// </summary>
+        public const string KeyTimer = "timer:";
+
+        /// <summary>
+        /// 鍦ㄧ嚎鐢ㄦ埛缂撳瓨
+        /// </summary>
+        public const string KeyOnlineUser = "onlineuser:";
+
+        /// <summary>
+        /// 甯搁噺涓嬫媺妗�
+        /// </summary>
+        public const string KeyConstSelector = "selector:";
+
+        /// <summary>
+        /// swagger鐧诲綍缂撳瓨
+        /// </summary>
+        public const string SwaggerLogin = "swaggerLogin:";
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/ConfigConst.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/ConfigConst.cs"
new file mode 100644
index 0000000..e6c0f07
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/ConfigConst.cs"
@@ -0,0 +1,64 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Const
+{
+    /// <summary>
+    /// 鍒嗙被甯搁噺
+    /// </summary>
+    public class CateGoryConst
+    {
+        /// <summary>
+        /// 閭鍩虹
+        /// </summary>
+        public const string CONFIG_SYS_BaseExmail = "Sys_BaseExmail";
+
+        /// <summary>
+        /// 閭閰嶇疆
+        /// </summary>
+        public const string CONFIG_SYS_RegExmail = "Sys_RegExmail";
+    }
+
+    /// <summary>
+    /// 閰嶇疆Key甯搁噺
+    /// </summary>
+    public class SysConfigConst
+    {
+        /// <summary>
+        ///  閭SMTP鍦板潃
+        /// </summary>
+        public const string SMTP_Server = "smtpServer";
+
+        /// <summary>
+        ///  閭SMTP绔彛
+        /// </summary>
+        public const string SMTP_Port = "smtpPort";
+
+        /// <summary>
+        ///  閭SMTP璐﹀彿
+        /// </summary>
+        public const string SMTP_User = "smtpUser";
+
+        /// <summary>
+        ///  閭SMTP瀵嗙爜
+        /// </summary>
+        public const string SMTP_Pass = "smtpPass";
+
+        /// <summary>
+        ///  閭鏍囬
+        /// </summary>
+        public const string SMTP_Title = "smtpTitle";
+
+        /// <summary>
+        ///  閭鍐呭鏍囬
+        /// </summary>
+        public const string SMTP_ContentTitle = "smtpContentTitle";
+        /// <summary>
+        ///  閭鍐呭鏍囬
+        /// </summary>
+        public const string SMTP_RegUser = "smtpRegUser";
+    }
+}
\ No newline at end of file
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/ErrorMsgConst.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/ErrorMsgConst.cs"
new file mode 100644
index 0000000..3456c44
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/ErrorMsgConst.cs"
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Const
+{
+    public class ErrorMsgConst
+    {
+        public const string ParamIsNull = "鍙傛暟鏃犳晥";
+        public const string EntityValueIsNull = "涓哄繀椤绘彁浜ら」";
+        public const string SugarColumnIsNull = "璇烽厤缃甋ugarColumn灞炴��";
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/HtmlElementType.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/HtmlElementType.cs"
new file mode 100644
index 0000000..735718d
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/HtmlElementType.cs"
@@ -0,0 +1,32 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Const
+{
+    public struct HtmlElementType
+    {
+        public const string drop = "drop";
+        public const string droplist = "droplist";
+        public const string select = "select";
+        public const string selectlist = "selectlist";
+        public const string checkbox = "checkbox";
+        public const string textarea = "textarea";
+        public const string thanorequal = "thanorequal";
+        public const string lessorequal = "lessorequal";
+
+
+        public const string gt = "gt";
+        public const string lt = "lt";
+        public const string GT = ">";
+        public const string LT = "<";
+        public const string like = "like";
+
+        public const string ThanOrEqual = ">=";
+        public const string LessOrequal = "<=";
+        public const string Contains = "in";
+        public const string Equal = "=";
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/SqlDbTypeName.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/SqlDbTypeName.cs"
new file mode 100644
index 0000000..b12f10d
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/SqlDbTypeName.cs"
@@ -0,0 +1,29 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Const
+{
+    public struct SqlDbTypeName
+    {
+        public const string NVarChar = "nvarchar";
+        public const string VarChar = "varchar";
+        public const string NChar = "nchar";
+        public const string Char = "char";
+        public const string Text = "text";
+        public const string Int = "int";
+        public const string BigInt = "bigint";
+        public const string DateTime = "datetime";
+        public const string Date = "date";
+        public const string SmallDateTime = "smalldatetime";
+        public const string SmallDate = "smalldate";
+        public const string Float = "float";
+        public const string Decimal = "decimal";
+        public const string Double = "double";
+        public const string Bit = "bit";
+        public const string Bool = "bool";
+        public const string UniqueIdentifier = "uniqueidentifier";
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/TenantConst.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/TenantConst.cs"
new file mode 100644
index 0000000..eeeeae4
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/TenantConst.cs"
@@ -0,0 +1,13 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Const
+{
+    public class TenantConst
+    {
+        public const string DBConStr = "Data Source={0};Initial Catalog={1};User ID={2};Password={3};Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/TenantStatus.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/TenantStatus.cs"
new file mode 100644
index 0000000..581b035
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Const/TenantStatus.cs"
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Const
+{
+    public struct TenantStatus
+    {
+        public const int Enable = 1;
+        public const int Disable = 2;
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Core/ConfigurableOptions.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Core/ConfigurableOptions.cs"
new file mode 100644
index 0000000..a313a78
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Core/ConfigurableOptions.cs"
@@ -0,0 +1,66 @@
+锘縰sing Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Options;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Core
+{
+    public static class ConfigurableOptions
+    {
+        /// <summary>娣诲姞閫夐」閰嶇疆</summary>
+        /// <typeparam name="TOptions">閫夐」绫诲瀷</typeparam>
+        /// <param name="services">鏈嶅姟闆嗗悎</param>
+        /// <returns>鏈嶅姟闆嗗悎</returns>
+        public static IServiceCollection AddConfigurableOptions<TOptions>(this IServiceCollection services)
+            where TOptions : class, IConfigurableOptions
+        {
+            Type optionsType = typeof(TOptions);
+            string path = GetConfigurationPath(optionsType);
+            services.Configure<TOptions>(App.Configuration.GetSection(path));
+
+            return services;
+        }
+
+        public static IServiceCollection AddConfigurableOptions(this IServiceCollection services, Type type)
+        {
+            string path = GetConfigurationPath(type);
+            var config = App.Configuration.GetSection(path);
+
+            Type iOptionsChangeTokenSource = typeof(IOptionsChangeTokenSource<>);
+            Type iConfigureOptions = typeof(IConfigureOptions<>);
+            Type configurationChangeTokenSource = typeof(ConfigurationChangeTokenSource<>);
+            Type namedConfigureFromConfigurationOptions = typeof(NamedConfigureFromConfigurationOptions<>);
+            iOptionsChangeTokenSource = iOptionsChangeTokenSource.MakeGenericType(type);
+            iConfigureOptions = iConfigureOptions.MakeGenericType(type);
+            configurationChangeTokenSource = configurationChangeTokenSource.MakeGenericType(type);
+            namedConfigureFromConfigurationOptions = namedConfigureFromConfigurationOptions.MakeGenericType(type);
+
+            services.AddOptions();
+            services.AddSingleton(iOptionsChangeTokenSource,
+                Activator.CreateInstance(configurationChangeTokenSource, Options.DefaultName, config) ?? throw new InvalidOperationException());
+            return services.AddSingleton(iConfigureOptions,
+                Activator.CreateInstance(namedConfigureFromConfigurationOptions, Options.DefaultName, config) ?? throw new InvalidOperationException());
+        }
+
+        /// <summary>鑾峰彇閰嶇疆璺緞</summary>
+        /// <param name="optionsType">閫夐」绫诲瀷</param>
+        /// <returns></returns>
+        public static string GetConfigurationPath(Type optionsType)
+        {
+            var endPath = new[] { "Option", "Options" };
+            var configurationPath = optionsType.Name;
+            foreach (var s in endPath)
+            {
+                if (configurationPath.EndsWith(s))
+                {
+                    return configurationPath[..^s.Length];
+                }
+            }
+
+            return configurationPath;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Core/IConfigurableOptions.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Core/IConfigurableOptions.cs"
new file mode 100644
index 0000000..a891834
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Core/IConfigurableOptions.cs"
@@ -0,0 +1,12 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Core
+{
+    public interface IConfigurableOptions
+    {
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Core/InternalApp.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Core/InternalApp.cs"
new file mode 100644
index 0000000..5dfff8e
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Core/InternalApp.cs"
@@ -0,0 +1,47 @@
+锘縰sing Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Core
+{
+    public static class InternalApp
+    {
+        internal static IServiceCollection InternalServices;
+
+        /// <summary>鏍规湇鍔�</summary>
+        internal static IServiceProvider RootServices;
+
+        /// <summary>鑾峰彇Web涓绘満鐜</summary>
+        internal static IWebHostEnvironment WebHostEnvironment;
+
+        /// <summary>鑾峰彇娉涘瀷涓绘満鐜</summary>
+        internal static IHostEnvironment HostEnvironment;
+
+        /// <summary>閰嶇疆瀵硅薄</summary>
+        internal static IConfiguration Configuration;
+
+        public static void ConfigureApplication(this WebApplicationBuilder wab)
+        {
+            HostEnvironment = wab.Environment;
+            WebHostEnvironment = wab.Environment;
+            InternalServices = wab.Services;
+        }
+
+        public static void ConfigureApplication(this IConfiguration configuration)
+        {
+            Configuration = configuration;
+        }
+
+        public static void ConfigureApplication(this IHost app)
+        {
+            RootServices = app.Services;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/DB/BaseDBConfig.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/DB/BaseDBConfig.cs"
new file mode 100644
index 0000000..1382e3e
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/DB/BaseDBConfig.cs"
@@ -0,0 +1,121 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Dynamic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Core.DB
+{
+    public class BaseDBConfig
+    {
+        /* 涔嬪墠鐨勫崟搴撴搷浣滃凡缁忓垹闄わ紝濡傛灉鎯宠涔嬪墠鐨勪唬鐮侊紝鍙互鏌ョ湅鎴戠殑GitHub鐨勫巻鍙茶褰�
+         * 鐩墠鏄搴撴搷浣滐紝榛樿鍔犺浇鐨勬槸appsettings.json璁剧疆涓簍rue鐨勭涓�涓猟b杩炴帴銆�
+         */
+        public static List<MutiDBOperate> MutiConnectionString => MutiInitConn();
+
+        private static string DifDBConnOfSecurity(params string[] conn)
+        {
+            foreach (var item in conn)
+            {
+                try
+                {
+                    if (File.Exists(item))
+                    {
+                        return File.ReadAllText(item).Trim();
+                    }
+                }
+                catch (System.Exception)
+                {
+                }
+            }
+
+            return conn[conn.Length - 1];
+        }
+
+        public static List<MutiDBOperate> MutiInitConn()
+        {
+            SqlSugarClient sqlSugarClient = new SqlSugarClient(new ConnectionConfig
+            {
+                ConfigId = MainDb.CurrentDbConnId,
+                ConnectionString = AppSettings.Get(MainDb.ConnectionString).DecryptDES(AppSecret.DB),
+                IsAutoCloseConnection = true,
+                DbType = MainDb.DbType,
+                AopEvents = new AopEvents
+                {
+                    OnError = x =>
+                    {
+                        Console.WriteLine(x.Sql);
+                    }
+                }
+            });
+
+            List<ExpandoObject> list = sqlSugarClient.Queryable(MainDb.TenantTableName, "x").Where(MainDb.TenantStatus, "=", TenantStatus.Enable).Select(TenantUtil.GetTenantSelectModels()).ToList();
+            List<MutiDBOperate> listdatabaseSlaveDB = new List<MutiDBOperate>();
+            MutiDBOperate mainDb = new MutiDBOperate()
+            {
+                Connection = AppSettings.Get(MainDb.ConnectionString).DecryptDES(AppSecret.DB),
+                ConnId = MainDb.CurrentDbConnId,
+                DbType = DataBaseType.SqlServer
+            };
+            listdatabaseSlaveDB.Add(mainDb);
+            for (int i = 0; i < list.Count; i++)
+            {
+                dynamic data = list[i];
+                MutiDBOperate mutiDBOperate = new MutiDBOperate()
+                {
+                    Connection = data.ConnectionString,
+                    ConnId = data.TenantId + "",
+                    DbType = (DataBaseType)data.DbType,
+                };
+                mutiDBOperate.Connection = mutiDBOperate.Connection.DecryptDES(AppSecret.DB);
+                listdatabaseSlaveDB.Add(mutiDBOperate);
+            }
+
+            return listdatabaseSlaveDB;
+        }
+    }
+
+    public enum DataBaseType
+    {
+        MySql = 0,
+        SqlServer = 1,
+        Sqlite = 2,
+        Oracle = 3,
+        PostgreSQL = 4,
+        Dm = 5,
+        Kdbndp = 6,
+    }
+
+    public class MutiDBOperate
+    {
+        /// <summary>
+        /// 杩炴帴鍚敤寮�鍏�
+        /// </summary>
+        public bool Enabled { get; set; }
+
+        /// <summary>
+        /// 杩炴帴ID
+        /// </summary>
+        public string ConnId { get; set; }
+
+        /// <summary>
+        /// 浠庡簱鎵ц绾у埆锛岃秺澶ц秺鍏堟墽琛�
+        /// </summary>
+        public int HitRate { get; set; }
+
+        /// <summary>
+        /// 杩炴帴瀛楃涓�
+        /// </summary>
+        public string Connection { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撶被鍨�
+        /// </summary>
+        public DataBaseType DbType { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/DB/MainDb.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/DB/MainDb.cs"
new file mode 100644
index 0000000..4319cb3
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/DB/MainDb.cs"
@@ -0,0 +1,32 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.DB
+{
+    public static class MainDb
+    {
+        public const string CurrentDbConnId = "WIDESEA";
+        public const string ConnectionStringsEncryption = "ConnectionStringsEncryption";
+        public const string ConnectionString = "ConnectionString";
+        public const string TenantTableName = "Sys_Tenant";
+        public const string TenantStatus = "Status";
+        public const string TenantId = "TenantId";
+        public const string TenantName = "TenantName";
+        public const string EntityNameSpace = "WIDESEA_Model.Models";
+        public const string TenantDbType = "DbType";
+        public const string AssemblyName = "WIDESEA_Model.dll";
+        public static DbType DbType = DbType.SqlServer;
+        public const string UserTableName = "Sys_User";
+        public const string RoleId = "RoleId";
+        public const string UserName = "UserName";
+        public const string UserId = "UserId";
+        public const string CodeRuleConfig = "Dt_CodeRuleConfig";
+        public const string RuleCode = "RuleCode";
+        public const string AnalysisRuleConfig = "Dt_AnalysisRuleConfig";
+        public const string AnalysisCode = "AnalysisCode";
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/BaseEntity.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/BaseEntity.cs"
new file mode 100644
index 0000000..7136886
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/BaseEntity.cs"
@@ -0,0 +1,82 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.DB.Models
+{
+    public class BaseEntity
+    {
+        #region 鏁版嵁鐘舵�佺鐞�
+
+        /// <summary>
+        /// 鐘舵�� <br/>
+        /// 涓珛瀛楁锛屾煇浜涜〃鍙娇鐢ㄦ煇浜涜〃涓嶄娇鐢�
+        /// </summary>
+        //public bool Enabled { get; set; } = true;
+
+        /// <summary>
+        /// 涓珛瀛楁锛屾煇浜涜〃鍙娇鐢ㄦ煇浜涜〃涓嶄娇鐢�   <br/>
+        /// 閫昏緫涓婄殑鍒犻櫎锛岄潪鐗╃悊鍒犻櫎  <br/>
+        /// 渚嬪锛氬崟鎹垹闄ゅ苟闈炵洿鎺ュ垹闄�
+        /// </summary>
+        //public bool IsDeleted { get; set; }
+
+        /// <summary>
+        /// 涓珛瀛楁 <br/>
+        /// 鏄惁鍐呯疆鏁版嵁
+        /// </summary>
+        //public bool IsInternal { get; set; }
+
+        #endregion 鏁版嵁鐘舵�佺鐞�
+
+        #region 鍒涘缓
+
+        /// <summary>
+        /// 鍒涘缓鑰�
+        /// </summary>
+        [ImporterHeader(Name = "鍒涘缓鑰�")]
+        [ExporterHeader(DisplayName = "鍒涘缓鑰�")]
+        [SugarColumn(IsNullable = false, Length = 50, IsOnlyIgnoreUpdate = true, ColumnDescription = "鍒涘缓鑰�")]
+        public string Creater { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        [ImporterHeader(Name = "鍒涘缓鏃堕棿")]
+        [ExporterHeader(DisplayName = "鍒涘缓鏃堕棿")]
+        [SugarColumn(IsNullable = false, IsOnlyIgnoreUpdate = true, ColumnDescription = "鍒涘缓鏃堕棿")]
+        public DateTime CreateDate { get; set; } = DateTime.Now;
+
+        #endregion
+
+        #region 淇敼
+
+        /// <summary>
+        /// 鏇存柊鑰�
+        /// </summary>
+        [ImporterHeader(Name = "淇敼浜�")]
+        [ExporterHeader(DisplayName = "淇敼浜�")]
+        [SugarColumn(IsNullable = true, Length = 50, IsOnlyIgnoreInsert = true, ColumnDescription = "淇敼浜�")]
+        public string Modifier { get; set; }
+
+        /// <summary>
+        /// 淇敼鏃ユ湡
+        /// </summary>
+        [ImporterHeader(Name = "淇敼鏃ユ湡")]
+        [ExporterHeader(DisplayName = "淇敼鏃ユ湡")]
+        [SugarColumn(IsNullable = true, IsOnlyIgnoreInsert = true, ColumnDescription = "淇敼鏃ユ湡")]
+        public DateTime? ModifyDate { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁鐗堟湰
+        /// </summary>
+        //[SugarColumn(DefaultValue = "0", IsEnableUpdateVersionValidation = true)] //鏍囪瘑鐗堟湰瀛楁
+        //public long Version { get; set; }
+
+        #endregion 淇敼
+    }
+}
\ No newline at end of file
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/BaseWarehouseEntity.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/BaseWarehouseEntity.cs"
new file mode 100644
index 0000000..0839833
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/BaseWarehouseEntity.cs"
@@ -0,0 +1,15 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.DB.Models
+{
+    public interface BaseWarehouseEntity
+    {
+        [SugarColumn(IsNullable = false)]
+        int WarehouseId { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/IBaseHistoryEntity.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/IBaseHistoryEntity.cs"
new file mode 100644
index 0000000..a5b560f
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/IBaseHistoryEntity.cs"
@@ -0,0 +1,37 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.DB.Models
+{
+    public interface IBaseHistoryEntity
+    {
+        /// <summary>
+        /// 鍘熻〃涓婚敭
+        /// </summary>
+        [ImporterHeader(Name = "鍘熻〃涓婚敭")]
+        [ExporterHeader(DisplayName = "鍘熻〃涓婚敭")]
+        [SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "鍘熻〃涓婚敭")]
+        public int SourceId { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔绫诲瀷
+        /// </summary>
+        [ImporterHeader(Name = "鎿嶄綔绫诲瀷")]
+        [ExporterHeader(DisplayName = "鎿嶄綔绫诲瀷")]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎿嶄綔绫诲瀷")]
+        public string OperateType { get; set; }
+
+        /// <summary>
+        /// 绉诲叆鍘嗗彶鏃堕棿
+        /// </summary>
+        [ImporterHeader(Name = "绉诲叆鍘嗗彶鏃堕棿")]
+        [ExporterHeader(DisplayName = "绉诲叆鍘嗗彶鏃堕棿")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "绉诲叆鍘嗗彶鏃堕棿")]
+        public DateTime InsertTime { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/DB/RepositorySetting.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/DB/RepositorySetting.cs"
new file mode 100644
index 0000000..67c4968
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/DB/RepositorySetting.cs"
@@ -0,0 +1,53 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Core.DB
+{
+    public class RepositorySetting
+    {
+        private static readonly Lazy<IEnumerable<Type>> AllEntitys = new(() =>
+        {
+            var path = AppDomain.CurrentDomain.RelativeSearchPath ?? AppDomain.CurrentDomain.BaseDirectory;
+            var referencedAssemblies = System.IO.Directory.GetFiles(path, MainDb.AssemblyName).Select(Assembly.LoadFrom).FirstOrDefault();
+            return referencedAssemblies
+                .GetTypes()
+                .Where(t => t.IsClass && !t.IsAbstract && t.IsSubclassOf(typeof(BaseEntity)))
+                .Where(it => it.FullName != null && it.FullName.StartsWith(MainDb.EntityNameSpace));
+        });
+
+        public static IEnumerable<Type> Entitys => AllEntitys.Value;
+
+        /// <summary>
+        /// 閰嶇疆瀹炰綋杞垹闄よ繃婊ゅ櫒<br/>
+        /// 缁熶竴杩囨护 杞垹闄� 鏃犻渶鑷繁鍐欐潯浠�
+        /// </summary>
+        public static void SetDeletedEntityFilter(SqlSugarScopeProvider db)
+        {
+            //db.QueryFilter.AddTableFilter<IDeleteFilter>(it => it.IsDeleted == false);
+        }
+
+        /// <summary>
+        /// 閰嶇疆绉熸埛
+        /// </summary>
+        public static void SetTenantEntityFilter(SqlSugarScopeProvider db)
+        {
+            if (App.User is not { UserId: > 0, TenantId: > 0 })
+            {
+                return;
+            }
+
+            //澶氱鎴� 鍗曡〃
+            //db.QueryFilter.AddTableFilter<ITenantEntity>(it => it.TenantId == App.User.TenantId || it.TenantId == 0);
+
+            //澶氱鎴� 澶氳〃
+            //db.SetTenantTable(App.User.TenantId.ToString());
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Enums/AuthorityScopeEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Enums/AuthorityScopeEnum.cs"
new file mode 100644
index 0000000..1950004
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Enums/AuthorityScopeEnum.cs"
@@ -0,0 +1,41 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Enums
+{
+    public enum AuthorityScopeEnum
+    {
+        /// <summary>
+        /// 鏃�
+        /// </summary>
+        None = -1,
+
+        /// <summary>
+        /// 浠呰嚜宸�
+        /// </summary>
+        OnlySelf = 1,
+
+        /// <summary>
+        /// 褰撳墠瑙掕壊
+        /// </summary>
+        CurrentRole = 2,
+
+        /// <summary>
+        /// 褰撳墠瑙掕壊鍙婁互涓�
+        /// </summary>
+        CurrentRoleAndDown = 3,
+
+        /// <summary>
+        /// 鑷畾涔�
+        /// </summary>
+        Custom = 4,
+
+        /// <summary>
+        /// 鎵�鏈�
+        /// </summary>
+        All = 10
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Enums/EnumHelper.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Enums/EnumHelper.cs"
new file mode 100644
index 0000000..60cddd4
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Enums/EnumHelper.cs"
@@ -0,0 +1,111 @@
+锘縰sing System.ComponentModel;
+using System.Reflection;
+
+namespace WIDESEA_Core.Enums
+{
+    public static class EnumHelper
+    {
+        /// <summary>  
+        /// 鏋氫妇杞瓧鍏搁泦鍚�  
+        /// </summary>  
+        /// <typeparam name="T">鏋氫妇绫诲悕绉�</typeparam>  
+        /// <param name="keyDefault">榛樿key鍊�</param>  
+        /// <param name="valueDefault">榛樿value鍊�</param>  
+        /// <returns>杩斿洖鐢熸垚鐨勫瓧鍏搁泦鍚�</returns>  
+        public static Dictionary<string, object> EnumListDic<T>(string keyDefault, string valueDefault = "")
+        {
+            Dictionary<string, object> dicEnum = new Dictionary<string, object>();
+            Type enumType = typeof(T);
+            if (!enumType.IsEnum)
+            {
+                return dicEnum;
+            }
+            if (!string.IsNullOrEmpty(keyDefault)) //鍒ゆ柇鏄惁娣诲姞榛樿閫夐」  
+            {
+                dicEnum.Add(keyDefault, valueDefault);
+            }
+            string[] fieldstrs = Enum.GetNames(enumType); //鑾峰彇鏋氫妇瀛楁鏁扮粍  
+            foreach (var item in fieldstrs)
+            {
+                string description = string.Empty;
+                var field = enumType.GetField(item);
+                object[] arr = field.GetCustomAttributes(typeof(DescriptionAttribute), true); //鑾峰彇灞炴�у瓧娈垫暟缁�  
+                if (arr != null && arr.Length > 0)
+                {
+                    description = ((DescriptionAttribute)arr[0]).Description;   //灞炴�ф弿杩�  
+                }
+                else
+                {
+                    description = item;  //鎻忚堪涓嶅瓨鍦ㄥ彇瀛楁鍚嶇О  
+                }
+                dicEnum.Add(description, (int)Enum.Parse(enumType, item));  //涓嶇敤鏋氫妇鐨剉alue鍊间綔涓哄瓧鍏竗ey鍊肩殑鍘熷洜浠庢灇涓句緥瀛愯兘鐪嬪嚭鏉ワ紝鍏跺疄杩欒竟搴旇鍒ゆ柇浠栫殑鍊间笉瀛樺湪锛岄粯璁ゅ彇瀛楁鍚嶇О  
+            }
+            return dicEnum;
+        }
+        /// <summary>
+        /// 鑾峰彇鏋氫妇椤规弿杩颁俊鎭� 渚嬪GetEnumDesc(Days.Sunday)
+        /// </summary>
+        /// <param name="en">鏋氫妇椤� 濡侱ays.Sunday</param>
+        /// <returns></returns>
+        public static string GetIntegralRuleTypeEnumDesc(this Enum en)
+        {
+            Type type = en.GetType();
+            MemberInfo[] memInfo = type.GetMember(en.ToString());
+            if (memInfo != null && memInfo.Length > 0)
+            {
+                object[] attrs = memInfo[0].GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
+                if (attrs != null && attrs.Length > 0)
+                    return ((DescriptionAttribute)attrs[0]).Description;
+            }
+            return en.ToString();
+        }
+        /// <summary>
+        /// 鑾峰彇鏋氫妇闆嗗悎
+        /// </summary>
+        /// <typeparam name="T">鏋氫妇绫诲悕绉�</typeparam>
+        /// <returns></returns>
+        public static IEnumerable<EnumModel> GetEnumList<T>()
+        {
+            var model = default(T);
+            FieldInfo[] fieldinfo = typeof(T).GetFields();
+            List<EnumModel> result = new List<EnumModel>();
+            foreach (FieldInfo field in fieldinfo)
+            {
+                EnumModel enumModel = new EnumModel();
+                if (!(Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) is DescriptionAttribute attribute))
+                {
+                    enumModel.Desc = field.GetValue(model).ToString();
+                }
+                else
+                {
+                    enumModel.Desc = attribute.Description;
+                }
+                enumModel.Value = field.GetValue(model).GetHashCode();
+                enumModel.Key = field.GetValue(model) as ValueType;
+                if (field.GetValue(model).ToString() != "0")
+                {
+                    result.Add(enumModel);
+                }
+
+            }
+            return result;
+        }
+    }
+
+    public class EnumModel
+    {
+        /// <summary>
+        /// Enum鐨勫��
+        /// </summary>
+        public int Value { get; set; }
+        /// <summary>
+        /// Enum鐨刱ey
+        /// </summary>
+        public ValueType Key { get; set; }
+        /// <summary>
+        /// Enum鎻忚堪
+        /// </summary>
+        public string Desc { get; set; }
+    }
+
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Enums/LinqExpressionType.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Enums/LinqExpressionType.cs"
new file mode 100644
index 0000000..cd90b5a
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Enums/LinqExpressionType.cs"
@@ -0,0 +1,21 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Enums
+{
+    public enum LinqExpressionType
+    {
+        Equal = 0,//=
+        NotEqual = 1,//!=
+        GreaterThan,//>
+        LessThan,//<
+        ThanOrEqual,//>=
+        LessThanOrEqual,//<=
+        In,
+        Contains,//Contains
+        NotContains//NotContains
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Enums/OperateTypeEnum.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Enums/OperateTypeEnum.cs"
new file mode 100644
index 0000000..9c09173
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Enums/OperateTypeEnum.cs"
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Enums
+{
+    public enum OperateTypeEnum
+    {
+        浜哄伐鍒犻櫎 = 1,
+        鑷姩鍒犻櫎 = 2,
+        浜哄伐鎭㈠ = 3,
+        鑷姩鎭㈠ = 4,
+        浜哄伐瀹屾垚 = 5,
+        鑷姩瀹屾垚 = 6,
+        鍏抽棴 = 7
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/AllOptionRegister.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/AllOptionRegister.cs"
new file mode 100644
index 0000000..93eefc0
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/AllOptionRegister.cs"
@@ -0,0 +1,24 @@
+锘縰sing Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Core;
+
+namespace WIDESEA_Core.Extensions
+{
+    public static class AllOptionRegister
+    {
+        public static void AddAllOptionRegister(this IServiceCollection services)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+
+            foreach (var optionType in App.EffectiveTypes.Where(s =>
+                         !s.IsInterface && typeof(IConfigurableOptions).IsAssignableFrom(s)))
+            {
+                services.AddConfigurableOptions(optionType);
+            }
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/ApplicationSetup.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/ApplicationSetup.cs"
new file mode 100644
index 0000000..404bf07
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/ApplicationSetup.cs"
@@ -0,0 +1,28 @@
+锘縰sing Microsoft.AspNetCore.Builder;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Extensions
+{
+    public static class ApplicationSetup
+    {
+        public static void UseApplicationSetup(this WebApplication app)
+        {
+            app.Lifetime.ApplicationStarted.Register(() =>
+            {
+                App.IsRun = true;
+            });
+
+            app.Lifetime.ApplicationStopped.Register(() =>
+            {
+                App.IsRun = false;
+
+                //娓呴櫎鏃ュ織
+                //Log.CloseAndFlush();
+            });
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/AutofacModuleRegister.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/AutofacModuleRegister.cs"
new file mode 100644
index 0000000..c98e78c
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/AutofacModuleRegister.cs"
@@ -0,0 +1,80 @@
+锘縰sing Autofac;
+using Autofac.Extras.DynamicProxy;
+using HslCommunication.WebSocket;
+using Microsoft.Extensions.DependencyModel;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Runtime.Loader;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.AOP;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.LogHelper;
+
+namespace WIDESEA_Core.Extensions
+{
+    public class AutofacModuleRegister : Autofac.Module
+    {
+        //private static readonly ILog log = LogManager.GetLogger(typeof(AutofacModuleRegister));
+        protected override void Load(ContainerBuilder builder)
+        {
+            var basePath = AppContext.BaseDirectory;
+            var cacheType = new List<Type>();
+
+            builder.RegisterType<LogAOP>();
+            if (AppSettings.Get("LogAopEnable").ObjToBool())
+            {
+                cacheType.Add(typeof(LogAOP));
+            }
+            
+            builder.RegisterGeneric(typeof(RepositoryBase<>)).As(typeof(IRepository<>)).InstancePerDependency();//娉ㄥ唽浠撳偍
+            builder.RegisterGeneric(typeof(ServiceBase<,>)).As(typeof(IService<>)).InstancePerDependency();//娉ㄥ唽鏈嶅姟
+
+            Type baseType = typeof(IDependency);
+
+            List<RuntimeLibrary> compilationLibrary = DependencyContext.Default
+                    .RuntimeLibraries
+                    .Where(x => !x.Serviceable
+                    && x.Type == "project")
+                    .ToList();
+            List<Assembly> assemblyList = new List<Assembly>();
+            foreach (var library in compilationLibrary)
+            {
+                try
+                {
+                    string path = Path.Combine(basePath, $"{library.Name}.dll");
+                    if (!File.Exists(path))
+                    {
+                        var msg = $"{library.Name}.dll涓㈠け锛屽洜涓洪」鐩В鑰︿簡锛屾墍浠ラ渶瑕佸厛F6缂栬瘧锛屽啀F5杩愯锛岃妫�鏌� bin 鏂囦欢澶癸紝骞舵嫹璐濄��";
+                        //log.Error(msg);
+                        throw new Exception(msg);
+                    }
+                    assemblyList.Add(Assembly.LoadFrom(path));
+                }
+                catch (Exception ex)
+                {
+                    Console.WriteLine(library.Name + ex.Message);
+                }
+            }
+
+            builder.RegisterAssemblyTypes(assemblyList.ToArray()).Where(x => !x.IsInterface && !x.IsAbstract && baseType.IsAssignableFrom(x))
+                        .AsImplementedInterfaces()
+                        .PropertiesAutowired()
+                        .InstancePerDependency().
+                        EnableInterfaceInterceptors()
+                        .InterceptedBy(cacheType.ToArray());
+
+            builder.RegisterType<UnitOfWorkManage>().As<IUnitOfWorkManage>()
+               .AsImplementedInterfaces()
+               .InstancePerLifetimeScope()
+               .PropertiesAutowired();
+
+            builder.RegisterType<RequestLogModel>().InstancePerLifetimeScope();
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/CorsSetup.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/CorsSetup.cs"
new file mode 100644
index 0000000..417610d
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/CorsSetup.cs"
@@ -0,0 +1,56 @@
+锘縰sing Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.Extensions
+{
+    /// <summary>
+    /// Cors 璺ㄥ煙
+    /// </summary>
+    public static class CorsSetup
+    {
+        /// <summary>
+        /// 璺ㄥ煙
+        /// </summary>
+        /// <param name="services"></param>
+        /// <exception cref="ArgumentNullException"></exception>
+        public static void AddCorsSetup(this IServiceCollection services)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+
+            services.AddCors(c =>
+            {
+                if (!AppSettings.Get(new string[] { "Cors", "EnableAllIPs" }).ObjToBool())
+                {
+                    c.AddPolicy(AppSettings.Get(new string[] {"Cors", "PolicyName" }),
+
+                        policy =>
+                        {
+                            policy
+                            .WithOrigins(AppSettings.Get(new string[] { "Cors", "IPs" }).Split(','))
+                            .AllowAnyHeader()//Ensures that the policy allows any header.
+                            .AllowAnyMethod();
+                        });
+                }
+                else
+                {
+                    //鍏佽浠绘剰璺ㄥ煙璇锋眰
+                    c.AddPolicy(AppSettings.Get(new string[] { "Cors", "PolicyName" }),
+                        policy =>
+                        {
+                            policy
+                            .SetIsOriginAllowed((host) => true)
+                            .AllowAnyMethod()
+                            .AllowAnyHeader()
+                            .AllowCredentials();
+                        });
+                }
+
+            });
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/DbSetup.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/DbSetup.cs"
new file mode 100644
index 0000000..dba095c
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/DbSetup.cs"
@@ -0,0 +1,24 @@
+锘縰sing Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Seed;
+
+namespace WIDESEA_Core
+{
+    /// <summary>
+    /// Db 鍚姩鏈嶅姟
+    /// </summary>
+    public static class DbSetup
+    {
+        public static void AddDbSetup(this IServiceCollection services)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+            
+            services.AddScoped<DBSeed>();
+            services.AddScoped<DBContext>();
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/HttpContextExtension.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/HttpContextExtension.cs"
new file mode 100644
index 0000000..92ecb6e
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/HttpContextExtension.cs"
@@ -0,0 +1,24 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Extensions
+{
+    public static class HttpContextExtension
+    {
+        public static ISession GetSession(this HttpContext context)
+        {
+            try
+            {
+                return context.Session;
+            }
+            catch (Exception)
+            {
+                return default;
+            }
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/HttpContextSetup.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/HttpContextSetup.cs"
new file mode 100644
index 0000000..2615700
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/HttpContextSetup.cs"
@@ -0,0 +1,30 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.HttpContextUser;
+
+namespace WIDESEA_Core.Extensions
+{
+    /// <summary>
+    /// HttpContext 鐩稿叧鏈嶅姟
+    /// </summary>
+    public static class HttpContextSetup
+    {
+        /// <summary>
+        ///  HttpContext 鐩稿叧鏈嶅姟
+        /// </summary>
+        /// <param name="services"></param>
+        /// <exception cref="ArgumentNullException"></exception>
+        public static void AddHttpContextSetup(this IServiceCollection services)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+
+            services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
+            services.AddScoped<IUser, AspNetUser>();
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/InitializationHostServiceSetup.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/InitializationHostServiceSetup.cs"
new file mode 100644
index 0000000..9acbd1e
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/InitializationHostServiceSetup.cs"
@@ -0,0 +1,28 @@
+锘縰sing Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Extensions
+{
+    public static class InitializationHostServiceSetup
+    {
+        /// <summary>
+        /// 搴旂敤鍒濆鍖栨湇鍔℃敞鍏�
+        /// </summary>
+        /// <param name="services"></param>
+        public static void AddInitializationHostServiceSetup(this IServiceCollection services)
+        {
+            if (services is null)
+            {
+                ArgumentNullException.ThrowIfNull(nameof(services));
+            }
+            services.AddHostedService<SeedDataHostedService>();//绉嶅瓙鏁版嵁
+            //services.AddHostedService<QuartzJobHostedService>();
+            //services.AddHostedService<ConsulHostedService>();
+            //services.AddHostedService<EventBusHostedService>();
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/IpPolicyRateLimitSetup.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/IpPolicyRateLimitSetup.cs"
new file mode 100644
index 0000000..9684dfa
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/IpPolicyRateLimitSetup.cs"
@@ -0,0 +1,43 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Extensions
+{
+    /// <summary>
+    /// IPLimit闄愭祦 鍚姩鏈嶅姟
+    /// </summary>
+    public static class IpPolicyRateLimitSetup
+    {
+        public static void AddIpPolicyRateLimitSetup(this IServiceCollection services, IConfiguration Configuration)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+
+            // needed to store rate limit counters and ip rules
+            //services.AddMemoryCache();
+
+            //load general configuration from appsettings.json
+            //services.Configure<IpRateLimitOptions>(Configuration.GetSection("IpRateLimiting"));
+
+            // inject counter and rules stores
+            //services.AddSingleton<IIpPolicyStore, MemoryCacheIpPolicyStore>();
+            //services.AddSingleton<IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>();
+            //services.AddSingleton<IProcessingStrategy, AsyncKeyLockProcessingStrategy>();
+
+            // inject counter and rules distributed cache stores
+            //services.AddSingleton<IIpPolicyStore, DistributedCacheIpPolicyStore>();
+            //services.AddSingleton<IRateLimitCounterStore, DistributedCacheRateLimitCounterStore>();
+
+            // the clientId/clientIp resolvers use it.
+            //services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
+
+            // configuration (resolvers, counter key builders)
+            //services.AddSingleton<IRateLimitConfiguration, RateLimitConfiguration>();
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/MemoryCacheSetup.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/MemoryCacheSetup.cs"
new file mode 100644
index 0000000..bd2f313
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/MemoryCacheSetup.cs"
@@ -0,0 +1,28 @@
+锘縰sing Microsoft.Extensions.Caching.Memory;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Options;
+using System;
+using WIDESEA_Core.Caches;
+
+namespace WIDESEA_Core.Extensions
+{
+    /// <summary>
+    /// Memory缂撳瓨 鍚姩鏈嶅姟
+    /// </summary>
+    public static class MemoryCacheSetup
+    {
+        public static void AddMemoryCacheSetup(this IServiceCollection services)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+
+            services.AddSingleton<ICacheService, MemoryCacheService>();
+            services.AddMemoryCache();
+            //services.AddSingleton<IMemoryCache>(factory =>
+            //{
+            //    var value = factory.GetRequiredService<IOptions<MemoryCacheOptions>>();
+            //    var cache = new MemoryCache(value);
+            //    return cache;
+            //});
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/MiniProfilerSetup.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/MiniProfilerSetup.cs"
new file mode 100644
index 0000000..3ceecb8
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/MiniProfilerSetup.cs"
@@ -0,0 +1,32 @@
+锘縰sing Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.Extensions
+{
+    /// <summary>
+    /// MiniProfiler 鎬ц兘鍒嗘瀽
+    /// </summary>
+    public static class MiniProfilerSetup
+    {
+        /// <summary>
+        /// 鎬ц兘鍒嗘瀽
+        /// </summary>
+        /// <param name="services"></param>
+        /// <exception cref="ArgumentNullException"></exception>
+        public static void AddMiniProfilerSetup(this IServiceCollection services)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+            //if (AppSettings.app(new string[] { "Startup", "MiniProfiler", "Enabled" }).ObjToBool())
+            //{
+            services.AddMiniProfiler(options =>
+            {
+                options.RouteBasePath = "/profiler";
+            });
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/SqlsugarSetup.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/SqlsugarSetup.cs"
new file mode 100644
index 0000000..f2bb02c
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/SqlsugarSetup.cs"
@@ -0,0 +1,150 @@
+锘縰sing Microsoft.Extensions.Caching.Memory;
+using Microsoft.Extensions.DependencyInjection;
+using SqlSugar;
+using StackExchange.Profiling;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.AOP;
+using WIDESEA_Core.DB;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.LogHelper;
+using WIDESEA_Core.Seed;
+
+namespace WIDESEA_Core
+{
+    /// <summary>
+    /// SqlSugar 鍚姩鏈嶅姟
+    /// </summary>
+    public static class SqlsugarSetup
+    {
+        private static readonly MemoryCache Cache = new MemoryCache(new MemoryCacheOptions());
+
+        public static void AddSqlsugarSetup(this IServiceCollection services)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+
+            // 榛樿娣诲姞涓绘暟鎹簱杩炴帴
+            //MainDb.CurrentDbConnId = AppSettings.app(new string[] { "MainDB" });
+
+            // SqlSugarScope鏄嚎绋嬪畨鍏紝鍙娇鐢ㄥ崟渚嬫敞鍏�
+            // 鍙傝�冿細https://www.donet5.com/Home/Doc?typeId=1181
+            services.AddScoped<ISqlSugarClient>(o =>
+            {
+                var memoryCache = o.GetRequiredService<IMemoryCache>();
+
+                // 杩炴帴瀛楃涓�
+                var listConfig = new List<ConnectionConfig>
+                {
+                    new ConnectionConfig
+                    {
+                        ConfigId = MainDb.CurrentDbConnId,
+                        ConnectionString = DBContext.GetMainConnectionDb().Connection,
+                        IsAutoCloseConnection = true,
+                        DbType = MainDb.DbType,
+                        AopEvents = new AopEvents
+                        {
+                            OnLogExecuting = (sql, p) =>
+                            {
+                                  Parallel.For(0, 1, e =>
+                                  {
+                                        MiniProfiler.Current.CustomTiming("SQL锛�", GetParas(p) + "銆怱QL璇彞銆戯細" + sql);
+                                     
+                                  });
+                                 if(AppSettings.GetValue("PrintSql").ObjToBool())
+                                {
+                                    Console.Out.WriteLine(GetParas(p));
+                                    Console.Out.WriteLine(sql);
+                                    Console.Out.WriteLine();
+                                }
+                            }
+                        }
+                    }
+                };
+                #region 浠庡簱
+                //var listConfig_Slave = new List<SlaveConnectionConfig>();
+                //BaseDBConfig.MutiConnectionString.ForEach(s =>
+                //{
+                //    if(s.ConnId != MainDb.CurrentDbConnId)
+                //    {
+                //        listConfig_Slave.Add(new SlaveConnectionConfig()
+                //        {
+                //            HitRate = s.HitRate,
+                //            ConnectionString = s.Connection
+                //        });
+                //    }
+
+                //});
+
+                //BaseDBConfig.MutiConnectionString.ForEach(m =>
+                //{
+                //    listConfig.Add(new ConnectionConfig()
+                //    {
+                //        ConfigId = m.ConnId.ObjToString().ToLower(),
+                //        ConnectionString = m.Connection,
+                //        DbType = (DbType)m.DbType,
+                //        IsAutoCloseConnection = true,
+                //        MoreSettings = new ConnMoreSettings()
+                //        {
+                //            //IsWithNoLockQuery = true,
+                //            IsAutoRemoveDataCache = true
+                //        },
+                //        // 浠庡簱
+                //        //SlaveConnectionConfigs = listConfig_Slave,
+                //        // 鑷畾涔夌壒鎬�
+                //        ConfigureExternalServices = new ConfigureExternalServices()
+                //        {
+                //            DataInfoCacheService = new SqlSugarMemoryCacheService(memoryCache),
+                //            EntityService = (property, column) =>
+                //            {
+                //                if (column.IsPrimarykey && property.PropertyType == typeof(int))
+                //                {
+                //                    column.IsIdentity = true;
+                //                }
+                //            }
+                //        },
+                //        InitKeyType = InitKeyType.Attribute,
+                //        AopEvents = new AopEvents()
+                //        {
+                //            OnError = x =>
+                //            {
+                //                Console.WriteLine(x.Sql);
+                //            }
+                //        }
+                //    }
+                //   );
+                //});
+                #endregion
+
+                SqlSugarClient sqlSugarClient = new SqlSugarClient(listConfig, db =>
+                {
+                    db.Aop.DataExecuting = SqlSugarAop.DataExecuting;
+                });
+                return sqlSugarClient;
+            });
+        }
+
+        private static string GetWholeSql(SugarParameter[] paramArr, string sql)
+        {
+            foreach (var param in paramArr)
+            {
+                sql.Replace(param.ParameterName, param.Value.ObjToString());
+            }
+
+            return sql;
+        }
+
+        private static string GetParas(SugarParameter[] pars)
+        {
+            string key = "銆怱QL鍙傛暟銆戯細";
+            foreach (var param in pars)
+            {
+                key += $"{param.ParameterName}:{param.Value}\n";
+            }
+
+            return key;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/SwaggerContextExtension.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/SwaggerContextExtension.cs"
new file mode 100644
index 0000000..d3e686f
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/SwaggerContextExtension.cs"
@@ -0,0 +1,72 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Http.Extensions;
+using System;
+using System.Collections.Generic;
+using System.IdentityModel.Tokens.Jwt;
+using System.Linq;
+using System.Security.Claims;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.Extensions
+{
+    public static class SwaggerContextExtension
+    {
+        public const string SwaggerCodeKey = "swagger-code";
+        public const string SwaggerJwt = "swagger-jwt";
+
+        public static bool IsSuccessSwagger()
+        {
+            return App.HttpContext?.GetSession()?.GetString(SwaggerCodeKey) == "success";
+        }
+
+        public static bool IsSuccessSwagger(this HttpContext context)
+        {
+            return context.GetSession()?.GetString(SwaggerCodeKey) == "success";
+        }
+
+        public static void SuccessSwagger()
+        {
+            App.HttpContext?.GetSession()?.SetString(SwaggerCodeKey, "success");
+        }
+
+        public static void SuccessSwagger(this HttpContext context)
+        {
+            context.GetSession()?.SetString(SwaggerCodeKey, "success");
+        }
+
+        public static void SuccessSwaggerJwt(this HttpContext context, string token)
+        {
+            var claims = new ClaimsIdentity(GetClaimsIdentity(token));
+            context.User.AddIdentity(claims);
+            context.GetSession().SetString(SwaggerJwt, token);
+        }
+
+        private static IEnumerable<Claim> GetClaimsIdentity(string token)
+        {
+            var jwtHandler = new JwtSecurityTokenHandler();
+            // token鏍¢獙
+            if (token.IsNotEmptyOrNull() && jwtHandler.CanReadToken(token))
+            {
+                var jwtToken = jwtHandler.ReadJwtToken(token);
+
+                return jwtToken.Claims;
+            }
+
+            return new List<Claim>();
+        }
+
+        public static string GetSuccessSwaggerJwt(this HttpContext context)
+        {
+            return context.GetSession().GetString(SwaggerJwt);
+        }
+
+
+        public static void RedirectSwaggerLogin(this HttpContext context)
+        {
+            var returnUrl = context.Request.GetDisplayUrl(); //鑾峰彇褰撳墠url鍦板潃 
+            context.Response.Redirect("/swg-login.html?returnUrl=" + returnUrl);
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/SwaggerSetup.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/SwaggerSetup.cs"
new file mode 100644
index 0000000..baaf4c5
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/SwaggerSetup.cs"
@@ -0,0 +1,113 @@
+锘�
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.OpenApi.Models;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+using static WIDESEA_Core.Extensions.CustomApiVersion;
+using Swashbuckle.AspNetCore.Filters;
+
+namespace WIDESEA_Core.Extensions
+{
+    /// <summary>
+    /// Swagger 
+    /// </summary>
+    public static class SwaggerSetup
+    {
+        /// <summary>
+        /// Swagger
+        /// </summary>
+        /// <param name="services"></param>
+        /// <exception cref="ArgumentNullException"></exception>
+        public static void AddSwaggerSetup(this IServiceCollection services)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+
+            var basePath = AppContext.BaseDirectory;
+            var ApiName = AppSettings.Get(new string[] { "ApiName" });
+
+            services.AddSwaggerGen(c =>
+            {
+                //閬嶅巻鍑哄叏閮ㄧ殑鐗堟湰锛屽仛鏂囨。淇℃伅灞曠ず
+                //typeof(ApiVersions).GetEnumNames().ToList().ForEach(version =>
+                //{
+                c.SwaggerDoc("v1", new OpenApiInfo
+                {
+                    Version = "v1",
+                    Title = $"{ApiName} 鎺ュ彛鏂囨。鈥斺�攞RuntimeInformation.FrameworkDescription}",
+                    Description = $"{ApiName} HTTP API " + "v1"
+                });
+                c.OrderActionsBy(o => o.RelativePath);
+                //});
+
+                c.UseInlineDefinitionsForEnums();
+              
+                // 寮�鍚姞鏉冨皬閿�
+                c.OperationFilter<AddResponseHeadersFilter>();
+                c.OperationFilter<AppendAuthorizeToSummaryOperationFilter>();
+
+                // 鍦╤eader涓坊鍔爐oken锛屼紶閫掑埌鍚庡彴
+                c.OperationFilter<SecurityRequirementsOperationFilter>();
+
+                c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
+                {
+                    Description = "JWT鎺堟潈token鍓嶉潰闇�瑕佸姞涓婂瓧娈礏earer涓庝竴涓┖鏍�,濡侭earer token",
+                    Name = "Authorization",
+                    In = ParameterLocation.Header,
+                    Type = SecuritySchemeType.ApiKey,
+                    BearerFormat = "JWT",
+                    Scheme = "Bearer"
+                });
+
+                c.AddSecurityRequirement(new OpenApiSecurityRequirement
+                {
+                    {
+                        new OpenApiSecurityScheme
+                        {
+                            Reference = new OpenApiReference {
+                                Type = ReferenceType.SecurityScheme,
+                                Id = "Bearer"
+                            }
+                        },
+                        new string[] { }
+                    }
+                });
+            }).AddControllers()
+            .ConfigureApiBehaviorOptions(options =>
+            {
+                options.SuppressConsumesConstraintForFormFileParameters = true;
+                options.SuppressInferBindingSourcesForParameters = true;
+                options.SuppressModelStateInvalidFilter = true;
+                options.SuppressMapClientErrors = true;
+                options.ClientErrorMapping[404].Link =
+                    "https://*/404";
+            });
+            //services.AddSwaggerGenNewtonsoftSupport();
+        }
+    }
+
+    /// <summary>
+    /// 鑷畾涔夌増鏈�
+    /// </summary>
+    public class CustomApiVersion
+    {
+        /// <summary>
+        /// Api鎺ュ彛鐗堟湰 鑷畾涔�
+        /// </summary>
+        public enum ApiVersions
+        {
+            /// <summary>
+            /// V1 鐗堟湰
+            /// </summary>
+            V1 = 1,
+            /// <summary>
+            /// V2 鐗堟湰
+            /// </summary>
+            V2 = 2,
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/WebSocketSetup.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/WebSocketSetup.cs"
new file mode 100644
index 0000000..1c6b23a
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/WebSocketSetup.cs"
@@ -0,0 +1,32 @@
+锘縰sing HslCommunication.WebSocket;
+using Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.Extensions
+{
+    public static class WebSocketSetup
+    {
+        public static void AddWebSocketSetup(this IServiceCollection services)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+
+            int port = AppSettings.Get("WebSocketPort").ObjToInt();
+            if (port == 0)
+            {
+                port = 9296;
+            }
+
+            services.AddSingleton(x =>
+            {
+                WebSocketServer socketServer = new WebSocketServer();
+                socketServer.ServerStart(port);
+                return socketServer;
+            });
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Filter/ActionExecuteFilter.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Filter/ActionExecuteFilter.cs"
new file mode 100644
index 0000000..7dabe0d
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Filter/ActionExecuteFilter.cs"
@@ -0,0 +1,23 @@
+锘縰sing Microsoft.AspNetCore.Mvc.Filters;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Utilities;
+
+namespace WIDESEA_Core.Filter
+{
+    public class ActionExecuteFilter : IActionFilter
+    {
+        public void OnActionExecuted(ActionExecutedContext context)
+        {
+            
+        }
+
+        public void OnActionExecuting(ActionExecutingContext context)
+        {
+            context.ActionParamsValidator();
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Filter/ApiAuthorizeFilter.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Filter/ApiAuthorizeFilter.cs"
new file mode 100644
index 0000000..74593d0
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Filter/ApiAuthorizeFilter.cs"
@@ -0,0 +1,95 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc.Filters;
+using Microsoft.Extensions.Hosting;
+using System;
+using System.Collections.Generic;
+using System.IdentityModel.Tokens.Jwt;
+using System.Linq;
+using System.Runtime;
+using System.Security.Claims;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Authorization;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.Filter
+{
+    /// <summary>
+    /// 鍒ゆ柇token鏄惁姝g‘
+    /// </summary>
+    public class ApiAuthorizeFilter : IAuthorizationFilter
+    {
+        private static readonly string replaceTokenPath = "/api/Sys_User/replaceToken";
+        private static readonly string loginPath = "/api/Sys_User/login";
+        private static readonly string vierificationCodePath = "/api/Sys_User/getVierificationCode";
+
+        public ApiAuthorizeFilter()
+        {
+
+        }
+
+        /// <summary>
+        /// 鍙垽鏂璽oken鏄惁姝g‘锛屼笉鍒ゆ柇鏉冮檺
+        /// 濡傛灉闇�瑕佸垽鏂潈闄愮殑鍦ˋction涓婂姞涓夾piActionPermission灞炴�ф爣璇嗘潈闄愮被鍒紝ActionPermissionFilter浣滄潈闄愬鐞�
+        ///(string,string,string)1銆佽姹傚弬鏁�,2銆佽繑鍥炴秷鎭紝3,寮傚父娑堟伅,4鐘舵��
+        /// </summary>
+        /// <param name="context"></param>
+        public void OnAuthorization(AuthorizationFilterContext context)
+        {
+            if (context.ActionDescriptor.EndpointMetadata.Any(item => item is IAllowAnonymous))
+            {
+                if (!context.HttpContext.User.Identity?.IsAuthenticated ?? false && !string.IsNullOrEmpty(context.HttpContext.Request.Headers[AppSecret.TokenHeaderName]))
+                {
+                    context.AddIdentity();
+                }
+                return;
+            }
+            #region 鍗曠偣鐧诲綍
+            if (string.IsNullOrEmpty(App.User.Token))
+            {
+                if (!string.IsNullOrEmpty(context.HttpContext.Request.Headers[AppSecret.TokenHeaderName].ObjToString().Replace("Bearer ", "")))
+                {
+                    DateTime? expDate = context.HttpContext.User.Claims.Where(x => x.Type == JwtRegisteredClaimNames.Exp).Select(x => x.Value).FirstOrDefault()?.GetTimeSpmpToDate();
+                    //鍔ㄦ�佹爣璇嗗埛鏂皌oken(2021.05.01)
+                    int ExpMinutes = AppSettings.Get("ExpMinutes").ObjToInt();
+                    if ((expDate.GetValueOrDefault() - DateTime.Now).TotalMinutes > ExpMinutes)
+                    {
+                        context.Unauthorized("鐧婚檰宸茶繃鏈�");
+                        return;
+                    }
+                    else
+                    {
+                        App.User.UpdateToke(context.HttpContext.Request.Headers[AppSecret.TokenHeaderName].ObjToString().Replace("Bearer ", ""));
+                    }
+                }
+                else
+                {
+                    context.Unauthorized("鐧婚檰宸茶繃鏈�");
+                    return;
+                }
+            }
+            else
+            {
+                if (App.User.Token != ((ClaimsIdentity?)context.HttpContext.User.Identity)?.BootstrapContext?.ToString())
+                {
+                    context.Unauthorized("鐧婚檰宸茶繃鏈�");
+                    return;
+                }
+            }
+            #endregion
+
+            {
+                DateTime? expDate = context.HttpContext.User.Claims.Where(x => x.Type == JwtRegisteredClaimNames.Exp).Select(x => x.Value).FirstOrDefault()?.GetTimeSpmpToDate();
+                //鍔ㄦ�佹爣璇嗗埛鏂皌oken(2021.05.01)
+                int ExpMinutes = AppSettings.Get("ExpMinutes").ObjToInt();
+                if ((expDate.GetValueOrDefault() - DateTime.Now).TotalMinutes < ExpMinutes / 3 && context.HttpContext.Request.Path != replaceTokenPath)
+                {
+                    context.HttpContext.Response.Headers.Add("widesea_exp", "1");
+                }
+            }
+
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Filter/ExporterHeaderFilter.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Filter/ExporterHeaderFilter.cs"
new file mode 100644
index 0000000..81dc421
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Filter/ExporterHeaderFilter.cs"
@@ -0,0 +1,23 @@
+锘縰sing Magicodes.ExporterAndImporter.Core.Filters;
+using Magicodes.ExporterAndImporter.Core.Models;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Filter
+{
+    public class ExporterHeaderFilter : IExporterHeaderFilter
+    {
+        /// <summary>
+        /// 琛ㄥご绛涢�夊櫒锛堜慨鏀瑰悕绉帮級
+        /// </summary>
+        /// <param name="exporterHeaderInfo"></param>
+        /// <returns></returns>
+        public ExporterHeaderInfo Filter(ExporterHeaderInfo exporterHeaderInfo)
+        {
+            return exporterHeaderInfo;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Filter/GlobalExceptionsFilter.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Filter/GlobalExceptionsFilter.cs"
new file mode 100644
index 0000000..b8e02ba
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Filter/GlobalExceptionsFilter.cs"
@@ -0,0 +1,93 @@
+锘縰sing Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc.Filters;
+using Microsoft.AspNetCore.Mvc.Rendering;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.SignalR;
+using Microsoft.Extensions.Logging;
+using StackExchange.Profiling;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+using System.Reflection.Metadata;
+using WIDESEA_Core.LogHelper;
+
+namespace WIDESEA_Core.Filter
+{
+    /// <summary>
+    /// 鍏ㄥ眬寮傚父閿欒鏃ュ織
+    /// </summary>
+    public class GlobalExceptionsFilter : IExceptionFilter
+    {
+        private readonly IWebHostEnvironment _env;
+        private readonly ILogger<GlobalExceptionsFilter> _loggerHelper;
+
+        public GlobalExceptionsFilter(IWebHostEnvironment env, ILogger<GlobalExceptionsFilter> loggerHelper)
+        {
+            _env = env;
+            _loggerHelper = loggerHelper;
+        }
+
+        public void OnException(ExceptionContext context)
+        {
+            var json = new WebResponseContent();
+
+            json.Message = context.Exception.Message;//閿欒淇℃伅
+            json.Code = 500;//500寮傚父 
+            var errorAudit = "Unable to resolve service for";
+            if (!string.IsNullOrEmpty(json.Message) && json.Message.Contains(errorAudit))
+            {
+                json.Message = json.Message.Replace(errorAudit, $"锛堣嫢鏂版坊鍔犳湇鍔★紝闇�瑕侀噸鏂扮紪璇戦」鐩級{errorAudit}");
+            }
+
+            if (_env.EnvironmentName.ObjToString().Equals("Development"))
+            {
+                json.DevMessage = context.Exception.StackTrace;//鍫嗘爤淇℃伅
+            }
+            var res = new ContentResult();
+            res.Content = json.Serialize();
+
+            context.Result = res;
+            MiniProfiler.Current.CustomTiming("Errors锛�", json.Message);
+
+            LogLock.OutLogAOP("鍏ㄥ眬寮傚父閿欒鏃ュ織", new string[] { json.Message + WriteLog(json.Message, context.Exception) });
+            //閲囩敤log4net 杩涜閿欒鏃ュ織璁板綍
+            //_loggerHelper.LogError(json.Message + WriteLog(json.Message, context.Exception));
+        }
+
+        /// <summary>
+        /// 鑷畾涔夎繑鍥炴牸寮�
+        /// </summary>
+        /// <param name="throwMsg"></param>
+        /// <param name="ex"></param>
+        /// <returns></returns>
+        public string WriteLog(string throwMsg, Exception ex)
+        {
+            return string.Format("\r\n銆愯嚜瀹氫箟閿欒銆戯細{0} \r\n銆愬紓甯哥被鍨嬨�戯細{1} \r\n銆愬紓甯镐俊鎭�戯細{2} \r\n銆愬爢鏍堣皟鐢ㄣ�戯細{3}", new object[] { throwMsg,
+                ex.GetType().Name, ex.Message, ex.StackTrace });
+        }
+
+    }
+    public class InternalServerErrorObjectResult : ObjectResult
+    {
+        public InternalServerErrorObjectResult(object value) : base(value)
+        {
+            StatusCode = StatusCodes.Status500InternalServerError;
+        }
+    }
+    //杩斿洖閿欒淇℃伅
+    public class JsonErrorResponse
+    {
+        /// <summary>
+        /// 鐢熶骇鐜鐨勬秷鎭�
+        /// </summary>
+        public string Message { get; set; }
+        /// <summary>
+        /// 寮�鍙戠幆澧冪殑娑堟伅
+        /// </summary>
+        public string DevelopmentMessage { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Filter/IFixedTokenFilter.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Filter/IFixedTokenFilter.cs"
new file mode 100644
index 0000000..99368a2
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Filter/IFixedTokenFilter.cs"
@@ -0,0 +1,57 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc.Filters;
+using System;
+using System.Collections.Generic;
+using System.IdentityModel.Tokens.Jwt;
+using System.Linq;
+using System.Net;
+using System.Security.Claims;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Authorization;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.Filter
+{
+    public interface IFixedTokenFilter : IFilterMetadata
+    {
+        AuthorizationFilterContext OnAuthorization(AuthorizationFilterContext context);
+    }
+    public class FixedTokenAttribute : Attribute, IFixedTokenFilter, IAllowAnonymous
+    {
+        public AuthorizationFilterContext OnAuthorization(AuthorizationFilterContext context)
+        {
+            string fixedoken = "";
+            //濡傛灉token宸插け鏁堬紝鐩存帴鑾峰彇header閲岀殑token
+            if (!context.HttpContext.User.Identity.IsAuthenticated)
+            {
+                fixedoken = context.HttpContext.Request.Headers[AppSecret.TokenHeaderName];
+                fixedoken = fixedoken?.Replace("Bearer ", "");
+                //鍒ゆ柇鏄惁浼犲叆浜唗oken
+                if (string.IsNullOrEmpty(fixedoken))
+                {
+                    return context.Unauthorized("娌℃湁浼犲叆token");
+                }
+                //瑙f瀽token
+                int userId = JwtHelper.GetUserId(fixedoken);
+                if (userId <= 0)
+                {
+                    return context.Unauthorized("token涓嶆纭�");
+                }
+                context.AddIdentity(userId);
+            }
+            else
+            {
+                fixedoken = ((ClaimsIdentity)context.HttpContext.User.Identity)
+                ?.BootstrapContext?.ToString();
+            }
+            //鍒ゆ柇褰撳墠鐢ㄦ埛鐨則oken涓庣紦瀛樼殑token鏄惁鐩稿悓
+            if (App.User.Token != fixedoken)
+            {
+                context.FilterResult(HttpStatusCode.Unauthorized, "token宸插け鏁�");
+            }
+            return context;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Filter/UseServiceDIAttribute.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Filter/UseServiceDIAttribute.cs"
new file mode 100644
index 0000000..be1d4a8
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Filter/UseServiceDIAttribute.cs"
@@ -0,0 +1,38 @@
+锘縰sing Microsoft.AspNetCore.Mvc.Filters;
+using Microsoft.Extensions.Logging;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Filter
+{
+    public class UseServiceDIAttribute : ActionFilterAttribute
+    {
+
+        protected readonly ILogger<UseServiceDIAttribute> _logger;
+        //private readonly IBlogArticleServices _blogArticleServices;
+        private readonly string _name;
+
+        public UseServiceDIAttribute(ILogger<UseServiceDIAttribute> logger/*, IBlogArticleServices blogArticleServices*/, string Name = "")
+        {
+            _logger = logger;
+            /*_blogArticleServices = blogArticleServices;*/
+            _name = Name;
+        }
+
+
+        public override void OnActionExecuted(ActionExecutedContext context)
+        {
+            //var dd =await _blogArticleServices.Query();
+            base.OnActionExecuted(context);
+            DeleteSubscriptionFiles();
+        }
+
+        private void DeleteSubscriptionFiles()
+        {
+
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/AppSettings.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/AppSettings.cs"
new file mode 100644
index 0000000..c09bcba
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/AppSettings.cs"
@@ -0,0 +1,89 @@
+锘縰sing Microsoft.Extensions.Configuration.Json;
+using Microsoft.Extensions.Configuration;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Helper
+{
+    /// <summary>
+    /// appsettings.json鎿嶄綔绫�
+    /// </summary>
+    public class AppSettings
+    {
+        public static IConfiguration Configuration { get; set; }
+        static string contentPath { get; set; }
+
+        public AppSettings(string contentPath)
+        {
+            string Path = "appsettings.json";
+
+            //濡傛灉浣犳妸閰嶇疆鏂囦欢 鏄� 鏍规嵁鐜鍙橀噺鏉ュ垎寮�浜嗭紝鍙互杩欐牱鍐�
+            //Path = $"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json";
+
+            Configuration = new ConfigurationBuilder()
+               .SetBasePath(contentPath)
+               .Add(new JsonConfigurationSource { Path = Path, Optional = false, ReloadOnChange = true })//杩欐牱鐨勮瘽锛屽彲浠ョ洿鎺ヨ鐩綍閲岀殑json鏂囦欢锛岃�屼笉鏄� bin 鏂囦欢澶逛笅鐨勶紝鎵�浠ヤ笉鐢ㄤ慨鏀瑰鍒跺睘鎬�
+               .Build();
+        }
+
+        public AppSettings(IConfiguration configuration)
+        {
+            Configuration = configuration;
+        }
+
+        /// <summary>
+        /// 灏佽瑕佹搷浣滅殑瀛楃
+        /// </summary>
+        /// <param name="sections">鑺傜偣閰嶇疆</param>
+        /// <returns></returns>
+        public static string Get(params string[] sections)
+        {
+            try
+            {
+
+                if (sections.Any())
+                {
+                    return Configuration[string.Join(":", sections)];
+                }
+            }
+            catch (Exception) { }
+
+            return "";
+        }
+
+        /// <summary>
+        /// 閫掑綊鑾峰彇閰嶇疆淇℃伅鏁扮粍
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="sections"></param>
+        /// <returns></returns>
+        public static List<T> Get<T>(params string[] sections)
+        {
+            List<T> list = new List<T>();
+            // 寮曠敤 Microsoft.Extensions.Configuration.Binder 鍖�
+            Configuration.Bind(string.Join(":", sections), list);
+            return list;
+        }
+
+
+        /// <summary>
+        /// 鏍规嵁璺緞  configuration["App:Name"];
+        /// </summary>
+        /// <param name="sectionsPath"></param>
+        /// <returns></returns>
+        public static string GetValue(string sectionsPath)
+        {
+            try
+            {
+                return Configuration[sectionsPath];
+            }
+            catch (Exception) { }
+
+            return "";
+
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/AutoMapperHelper.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/AutoMapperHelper.cs"
new file mode 100644
index 0000000..cb72738
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/AutoMapperHelper.cs"
@@ -0,0 +1,23 @@
+锘縰sing AutoMapper;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Helper
+{
+
+    /// <summary>
+    /// AutoMapper鏄犲皠甯姪绫�
+    /// AutoMapper 鐗堟湰13.0.1
+    /// </summary>
+    public static class AutoMapperHelper
+    {
+
+
+    }
+
+    
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/CodeAnalysisHelper.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/CodeAnalysisHelper.cs"
new file mode 100644
index 0000000..dd90e9b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/CodeAnalysisHelper.cs"
@@ -0,0 +1,204 @@
+锘縰sing OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+using WIDESEA_Core.CodeConfigEnum;
+using WIDESEA_Core.DB;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Seed;
+using WIDESEA_Core.Utilities;
+
+namespace WIDESEA_Core.Helper
+{
+    public class CodeAnalysisHelper
+    {
+        /// <summary>
+        /// 瑙f瀽缂栫爜鎴愬璞¢泦
+        /// </summary>
+        /// <typeparam name="T">娉涘瀷</typeparam>
+        /// <param name="analysisCode">瑙勫垯缂栧彿</param>
+        /// <param name="code">闇�瑙f瀽鐨勫瓧绗︿覆</param>
+        /// <returns></returns>
+        public static T CodeAnalysis<T>(AnalysisCodeEnum analysisCode, string code)
+        {
+            Type type = typeof(T);
+            object? obj = Activator.CreateInstance(type);
+            if (obj == null)
+                throw new Exception("瀹炰緥鍖栧璞¢敊璇�");
+            T result = (T)obj;
+            try
+            {
+                AnalysisRuleAttribute? analysisRule = type.GetCustomAttribute<AnalysisRuleAttribute>();
+                if (analysisRule != null)
+                {
+                    SqlSugarClient sugarClient = new SqlSugarClient(new ConnectionConfig
+                    {
+                        ConfigId = MainDb.CurrentDbConnId,
+                        ConnectionString = DBContext.GetMainConnectionDb().Connection,
+                        IsAutoCloseConnection = true,
+                        DbType = MainDb.DbType,
+                    });
+
+                    dynamic ruleConfig = sugarClient.Queryable(MainDb.AnalysisRuleConfig, "x").Where(MainDb.AnalysisCode, "=", analysisCode.ToString()).First();
+                    if (ruleConfig != null)
+                    {
+                        string format = ruleConfig.Format;
+                        string splitStr = ruleConfig.SplitStr;
+                        List<string> items = format.Split(splitStr).ToList();
+                        List<string> codes = code.Split(splitStr).ToList();
+                        if (items.Count == codes.Count)
+                        {
+                            PropertyInfo[] propertyInfos = type.GetProperties();
+                            if (AnalysisRuleEnum.Split == analysisRule.AnalysisRule)
+                            {
+                                for (int i = 0; i < propertyInfos.Length; i++)
+                                {
+                                    PropertyInfo propertyInfo = propertyInfos[i];
+                                    AnalysisItemRuleAttribute? analysisItemRule = propertyInfo.GetCustomAttribute<AnalysisItemRuleAttribute>();
+                                    if (analysisItemRule != null)
+                                    {
+                                        if (analysisItemRule.AnalysisFormaType == AnalysisFormatTypeEnum.BD)
+                                        {
+                                            propertyInfo.SetValue(result, code.ChangeType(propertyInfo.PropertyType));
+                                        }
+                                        else
+                                        {
+                                            int index = items.IndexOf($"[{analysisItemRule.AnalysisFormaType}]");
+                                            if (index != -1)
+                                            {
+                                                propertyInfo.SetValue(result, codes[index]);
+                                            }
+                                            else
+                                            {
+                                                string? codeItem = items.FirstOrDefault(x => x.Contains($"[{analysisItemRule.AnalysisFormaType}]"));
+                                                if (!string.IsNullOrEmpty(codeItem))
+                                                {
+                                                    index = items.IndexOf(codeItem);
+                                                    if (index != -1)
+                                                    {
+                                                        string value = codes[index];
+                                                        string replaceStr = codeItem.Replace($"[{analysisItemRule.AnalysisFormaType}]", "");
+
+                                                        propertyInfo.SetValue(result, value.Replace(replaceStr, "").ChangeType(propertyInfo.PropertyType));
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                throw new Exception($"瑙f瀽閿欒,{ex.Message}");
+            }
+
+            (bool, string, object?) validateResult = ModelValidate.ValidateModelData(result, type);
+            if (!validateResult.Item1)
+            {
+                throw new Exception($"瑙f瀽閿欒,{validateResult.Item2}");
+            }
+
+            return result;
+        }
+
+        /// <summary>
+        /// 瑙f瀽缂栫爜鎴愬璞¢泦鍚�
+        /// </summary>
+        /// <typeparam name="T">娉涘瀷</typeparam>
+        /// <param name="analysisCode">瑙勫垯缂栧彿</param>
+        /// <param name="codeList">闇�瑙f瀽鐨勫瓧绗︿覆闆嗗悎</param>
+        /// <returns></returns>
+        public static List<T> CodeAnalysis<T>(AnalysisCodeEnum analysisCode, List<string> codeList)
+        {
+            Type type = typeof(T);
+            List<T> list = new List<T>();
+
+            try
+            {
+                AnalysisRuleAttribute? analysisRule = type.GetCustomAttribute<AnalysisRuleAttribute>();
+                if (analysisRule != null)
+                {
+                    SqlSugarClient sugarClient = new SqlSugarClient(new ConnectionConfig
+                    {
+                        ConfigId = MainDb.CurrentDbConnId,
+                        ConnectionString = DBContext.GetMainConnectionDb().Connection,
+                        IsAutoCloseConnection = true,
+                        DbType = MainDb.DbType,
+                    });
+
+                    dynamic ruleConfig = sugarClient.Queryable(MainDb.AnalysisRuleConfig, "x").Where(MainDb.AnalysisCode, "=", analysisCode.ToString()).First();
+                    if (ruleConfig != null)
+                    {
+                        for (int j = 0; j < codeList.Count; j++)
+                        {
+                            T result = (T)Activator.CreateInstance(type);
+                            string code = codeList[j];
+                            string format = ruleConfig.Format;
+                            string splitStr = ruleConfig.SplitStr;
+                            List<string> items = format.Split(splitStr).ToList();
+                            List<string> codes = code.Split(splitStr).ToList();
+                            if (items.Count == codes.Count)
+                            {
+                                PropertyInfo[] propertyInfos = type.GetProperties();
+                                if (AnalysisRuleEnum.Split == analysisRule.AnalysisRule)
+                                {
+                                    for (int i = 0; i < propertyInfos.Length; i++)
+                                    {
+                                        PropertyInfo propertyInfo = propertyInfos[i];
+                                        AnalysisItemRuleAttribute? analysisItemRule = propertyInfo.GetCustomAttribute<AnalysisItemRuleAttribute>();
+                                        if (analysisItemRule != null)
+                                        {
+                                            if (analysisItemRule.AnalysisFormaType == AnalysisFormatTypeEnum.BD)
+                                            {
+                                                propertyInfo.SetValue(result, code.ChangeType(propertyInfo.PropertyType));
+                                            }
+                                            else
+                                            {
+                                                int index = items.IndexOf($"[{analysisItemRule.AnalysisFormaType}]");
+                                                if (index != -1)
+                                                {
+                                                    propertyInfo.SetValue(result, codes[index]);
+                                                }
+                                                else
+                                                {
+                                                    string? codeItem = items.FirstOrDefault(x => x.Contains($"[{analysisItemRule.AnalysisFormaType}]"));
+                                                    if (!string.IsNullOrEmpty(codeItem))
+                                                    {
+                                                        index = items.IndexOf(codeItem);
+                                                        if (index != -1)
+                                                        {
+                                                            string value = codes[index];
+                                                            string replaceStr = codeItem.Replace($"[{analysisItemRule.AnalysisFormaType}]", "");
+
+                                                            propertyInfo.SetValue(result, value.Replace(replaceStr, "").ChangeType(propertyInfo.PropertyType));
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                                list.Add(result);
+                            }
+                        }
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+
+            }
+            return list;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/ConsoleHelper.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/ConsoleHelper.cs"
new file mode 100644
index 0000000..2cc4614
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/ConsoleHelper.cs"
@@ -0,0 +1,57 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Helper
+{
+    public static class ConsoleHelper
+    {
+        private static readonly object _objLock = new();
+
+        /// <summary>
+        /// 鍦ㄦ帶鍒跺彴杈撳嚭
+        /// </summary>
+        /// <param name="str">鏂囨湰</param>
+        /// <param name="color">鍓嶉鑹�</param>
+        public static void WriteColorLine(string str, ConsoleColor color)
+        {
+            lock (_objLock)
+            {
+                ConsoleColor currentForeColor = Console.ForegroundColor;
+                Console.ForegroundColor = color;
+                Console.WriteLine(str);
+                Console.ForegroundColor = currentForeColor;
+            }
+        }
+
+        /// <summary>
+        /// 鎵撳嵃閿欒淇℃伅
+        /// </summary>
+        /// <param name="str">寰呮墦鍗扮殑瀛楃涓�</param>
+        /// <param name="color">鎯宠鎵撳嵃鐨勯鑹�</param>
+        public static void WriteErrorLine(this string str, ConsoleColor color = ConsoleColor.Red) => WriteColorLine(str, color);
+
+        /// <summary>
+        /// 鎵撳嵃璀﹀憡淇℃伅
+        /// </summary>
+        /// <param name="str">寰呮墦鍗扮殑瀛楃涓�</param>
+        /// <param name="color">鎯宠鎵撳嵃鐨勯鑹�</param>
+        public static void WriteWarningLine(this string str, ConsoleColor color = ConsoleColor.Yellow) => WriteColorLine(str, color);
+
+        /// <summary>
+        /// 鎵撳嵃姝e父淇℃伅
+        /// </summary>
+        /// <param name="str">寰呮墦鍗扮殑瀛楃涓�</param>
+        /// <param name="color">鎯宠鎵撳嵃鐨勯鑹�</param>
+        public static void WriteInfoLine(this string str, ConsoleColor color = ConsoleColor.White) => WriteColorLine(str, color);
+
+        /// <summary>
+        /// 鎵撳嵃鎴愬姛鐨勪俊鎭�
+        /// </summary>
+        /// <param name="str">寰呮墦鍗扮殑瀛楃涓�</param>
+        /// <param name="color">鎯宠鎵撳嵃鐨勯鑹�</param>
+        public static void WriteSuccessLine(this string str, ConsoleColor color = ConsoleColor.Green) => WriteColorLine(str, color);
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/ExportHelper.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/ExportHelper.cs"
new file mode 100644
index 0000000..6e9a8fc
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/ExportHelper.cs"
@@ -0,0 +1,106 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using Magicodes.ExporterAndImporter.Excel;
+using Magicodes.IE.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Reflection.Emit;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Helper
+{
+    public static class ExportHelper
+    {
+        public static Type CreateDynamicClass(this PropertyInfo[] propertyInfos)
+        {
+            string className = "DynamicClass";
+            AssemblyName assemblyName = new AssemblyName("WIDESEA_Model.Models");
+            AssemblyBuilder assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run);//瀹氫箟鍏锋湁鎸囧畾鍚嶇О鍜岃闂潈闄愮殑鍔ㄦ�佺▼搴忛泦
+            ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MainModule");//鍦ㄦ绋嬪簭闆嗕腑瀹氫箟鍛藉悕鐨勬殏鏃跺姩鎬佹ā鍧�
+            TypeBuilder typeBuilder = moduleBuilder.DefineType(className, TypeAttributes.Public);//TypeBuilder:鍦ㄨ繍琛屾椂瀹氫箟骞跺垱寤虹被鐨勬柊瀹炰緥
+
+            Type attributeType1 = typeof(ExcelExporterAttribute);
+            MethodInfo [] methodInfos = attributeType1.GetMethods(BindingFlags.Public);
+            ConstructorInfo[] constructorInfos2 = attributeType1.GetConstructors();
+            ConstructorInfo constructorInfo2 = constructorInfos2[0];
+            CustomAttributeBuilder customAttributeBuilder2 = new CustomAttributeBuilder(constructorInfo2, new object[] { });
+
+            typeBuilder.SetCustomAttribute(customAttributeBuilder2);
+
+            foreach (var property in propertyInfos)
+            {
+                string propertyName = property.Name;
+                Type propertyType = property.PropertyType;
+
+                FieldBuilder fieldBuilder = typeBuilder.DefineField("_" + propertyName, propertyType, FieldAttributes.Private);
+                PropertyBuilder propertyBuilder = typeBuilder.DefineProperty(propertyName, PropertyAttributes.HasDefault, propertyType, null);
+
+                SugarColumn sugarColumn = property.GetCustomAttribute<SugarColumn>();
+                if (sugarColumn != null)
+                {
+                    Type attributeType = typeof(ExporterHeaderAttribute);
+                    ConstructorInfo[] constructorInfos = attributeType.GetConstructors();
+                    ConstructorInfo constructorInfo = constructorInfos[0];
+                    CustomAttributeBuilder customAttributeBuilder = new CustomAttributeBuilder(constructorInfo, new object[] { sugarColumn.ColumnDescription, 11f, null, false, true, true, 0, KnownColor.Empty });
+                    propertyBuilder.SetCustomAttribute(customAttributeBuilder);
+                }
+
+                MethodAttributes getSetAttributes = MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.HideBySig;
+
+                MethodBuilder getMethodBuilder = typeBuilder.DefineMethod("get_" + propertyName, getSetAttributes, propertyType, Type.EmptyTypes);
+                ILGenerator getIL = getMethodBuilder.GetILGenerator();
+                getIL.Emit(OpCodes.Ldarg_0);
+                getIL.Emit(OpCodes.Ldfld, fieldBuilder);
+                getIL.Emit(OpCodes.Ret);
+
+                MethodBuilder setMethodBuilder = typeBuilder.DefineMethod("set_" + propertyName, getSetAttributes, null, new Type[] { propertyType });
+                ILGenerator setIL = setMethodBuilder.GetILGenerator();
+                setIL.Emit(OpCodes.Ldarg_0);
+                setIL.Emit(OpCodes.Ldarg_1);
+                setIL.Emit(OpCodes.Stfld, fieldBuilder);
+                setIL.Emit(OpCodes.Ret);
+
+                propertyBuilder.SetGetMethod(getMethodBuilder);
+                propertyBuilder.SetSetMethod(setMethodBuilder);
+
+
+            }
+
+            Type generatedType = typeBuilder.CreateType();
+            return generatedType;
+        }
+
+        public static void SetProperty(object instance, string propertyName, object value)
+        {
+            Type type = instance.GetType();
+            PropertyInfo propertyInfo = type.GetProperty(propertyName);
+            propertyInfo.SetValue(instance, value);
+        }
+
+        public static object GetProperty(object instance, string propertyName)
+        {
+            Type type = instance.GetType();
+            PropertyInfo propertyInfo = type.GetProperty(propertyName);
+            return propertyInfo.GetValue(instance);
+        }
+
+        public static void SetValue<T>(object instance, T value)
+        {
+            Type type = instance.GetType();
+
+            PropertyInfo[] propertyInfos = typeof(T).GetProperties();
+            for (int j = 0; j < propertyInfos.Length; j++)
+            {
+                PropertyInfo propertyInfo = type.GetProperty(propertyInfos[j].Name);
+                object obj = propertyInfos[j].GetValue(value);
+                propertyInfo.SetValue(instance, obj);
+                ExporterHeaderAttribute exporterHeaderAttribute = propertyInfo.GetCustomAttribute<ExporterHeaderAttribute>();
+            }
+
+        }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/FileHelper.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/FileHelper.cs"
new file mode 100644
index 0000000..df88f8a
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/FileHelper.cs"
@@ -0,0 +1,451 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Helper
+{
+    public class FileHelper : IDisposable
+    {
+
+        private bool _alreadyDispose = false;
+
+        #region 鏋勯�犲嚱鏁�
+        public FileHelper()
+        {
+
+        }
+        ~FileHelper()
+        {
+            Dispose(); ;
+        }
+
+        protected virtual void Dispose(bool isDisposing)
+        {
+            if (_alreadyDispose) return;
+            _alreadyDispose = true;
+        }
+        #endregion
+
+        #region IDisposable 鎴愬憳
+
+        public void Dispose()
+        {
+            Dispose(true);
+            GC.SuppressFinalize(this);
+        }
+
+        #endregion
+
+        #region 鍙栧緱鏂囦欢鍚庣紑鍚�
+        /****************************************
+          * 鍑芥暟鍚嶇О锛欸etPostfixStr
+          * 鍔熻兘璇存槑锛氬彇寰楁枃浠跺悗缂�鍚�
+          * 鍙�     鏁帮細filename:鏂囦欢鍚嶇О
+          * 璋冪敤绀哄垪锛�
+          *            string filename = "aaa.aspx";        
+          *            string s = EC.FileObj.GetPostfixStr(filename);         
+         *****************************************/
+        /// <summary>
+        /// 鍙栧悗缂�鍚�
+        /// </summary>
+        /// <param name="filename">鏂囦欢鍚�</param>
+        /// <returns>.gif|.html鏍煎紡</returns>
+        public static string GetPostfixStr(string filename)
+        {
+            int start = filename.LastIndexOf(".");
+            int length = filename.Length;
+            string postfix = filename.Substring(start, length - start);
+            return postfix;
+        }
+        #endregion
+
+        #region 鏍规嵁鏂囦欢澶у皬鑾峰彇鎸囧畾鍓嶇紑鐨勫彲鐢ㄦ枃浠跺悕
+        /// <summary>
+        /// 鏍规嵁鏂囦欢澶у皬鑾峰彇鎸囧畾鍓嶇紑鐨勫彲鐢ㄦ枃浠跺悕
+        /// </summary>
+        /// <param name="folderPath">鏂囦欢澶�</param>
+        /// <param name="prefix">鏂囦欢鍓嶇紑</param>
+        /// <param name="size">鏂囦欢澶у皬(1m)</param>
+        /// <param name="ext">鏂囦欢鍚庣紑(.log)</param>
+        /// <returns>鍙敤鏂囦欢鍚�</returns>
+        public static string GetAvailableFileWithPrefixOrderSize(string folderPath, string prefix, int size = 1 * 1024 * 1024, string ext = ".log")
+        {
+            var allFiles = new DirectoryInfo(folderPath);
+            var selectFiles = allFiles.GetFiles().Where(fi => fi.Name.ToLower().Contains(prefix.ToLower()) && fi.Extension.ToLower() == ext.ToLower() && fi.Length < size).OrderByDescending(d => d.Name).ToList();
+
+            if (selectFiles.Count > 0)
+            {
+                return selectFiles.FirstOrDefault().FullName;
+            }
+
+            return Path.Combine(folderPath, $@"{prefix}_{DateTime.Now.DateToTimeStamp()}.log");
+        }
+        public static string GetAvailableFileNameWithPrefixOrderSize(string _contentRoot, string prefix, int size = 1 * 1024 * 1024, string ext = ".log")
+        {
+            var folderPath = Path.Combine(_contentRoot, "Log");
+            if (!Directory.Exists(folderPath))
+            {
+                Directory.CreateDirectory(folderPath);
+            }
+
+            var allFiles = new DirectoryInfo(folderPath);
+            var selectFiles = allFiles.GetFiles().Where(fi => fi.Name.ToLower().Contains(prefix.ToLower()) && fi.Extension.ToLower() == ext.ToLower() && fi.Length < size).OrderByDescending(d => d.Name).ToList();
+
+            if (selectFiles.Count > 0)
+            {
+                return selectFiles.FirstOrDefault().Name.Replace(".log", "");
+            }
+
+            return $@"{prefix}_{DateTime.Now.DateToTimeStamp()}";
+        }
+        #endregion
+
+        #region 鍐欐枃浠�
+        /****************************************
+          * 鍑芥暟鍚嶇О锛歐riteFile
+          * 鍔熻兘璇存槑锛氬啓鏂囦欢,浼氳鐩栨帀浠ュ墠鐨勫唴瀹�
+          * 鍙�     鏁帮細Path:鏂囦欢璺緞,Strings:鏂囨湰鍐呭
+          * 璋冪敤绀哄垪锛�
+          *            string Path = Server.MapPath("Default2.aspx");       
+          *            string Strings = "杩欐槸鎴戝啓鐨勫唴瀹瑰晩";
+          *            EC.FileObj.WriteFile(Path,Strings);
+         *****************************************/
+        /// <summary>
+        /// 鍐欐枃浠�
+        /// </summary>
+        /// <param name="Path">鏂囦欢璺緞</param>
+        /// <param name="Strings">鏂囦欢鍐呭</param>
+        public static void WriteFile(string Path, string Strings)
+        {
+            if (!File.Exists(Path))
+            {
+                FileStream f = File.Create(Path);
+                f.Close();
+            }
+            StreamWriter f2 = new StreamWriter(Path, false, System.Text.Encoding.UTF8);
+            f2.Write(Strings);
+            f2.Close();
+            f2.Dispose();
+        }
+
+        /// <summary>
+        /// 鍐欐枃浠�
+        /// </summary>
+        /// <param name="Path">鏂囦欢璺緞</param>
+        /// <param name="Strings">鏂囦欢鍐呭</param>
+        public static void WriteFileAndDelOldFile(string Path, string Strings)
+        {
+            if (!File.Exists(Path))
+            {
+                FileStream f = File.Create(Path);
+                f.Close();
+            }
+            else
+            {
+                File.Delete(Path);
+            }
+            StreamWriter f2 = new StreamWriter(Path, false, System.Text.Encoding.UTF8);
+            f2.Write(Strings);
+            f2.Close();
+            f2.Dispose();
+        }
+
+        /// <summary>
+        /// 鍐欐枃浠�
+        /// </summary>
+        /// <param name="Path">鏂囦欢璺緞</param>
+        /// <param name="Strings">鏂囦欢鍐呭</param>
+        public static void WriteFile(string Path, byte[] buf)
+        {
+            if (!File.Exists(Path))
+            {
+                FileStream f = File.Create(Path);
+                f.Close();
+            }
+            FileStream f2 = new FileStream(Path, FileMode.Create, FileAccess.Write);
+            f2.Write(buf, 0, buf.Length);
+            f2.Close();
+            f2.Dispose();
+        }
+
+        public static void WriteFile(string Path, string fileName, byte[] buf)
+        {
+            if (!Directory.Exists(Path))
+            {
+                Directory.CreateDirectory(Path);
+            }
+            if (!File.Exists(Path + "\\" + fileName))
+            {
+                FileStream f = File.Create(Path + "\\" + fileName);
+                f.Close();
+            }
+            FileStream f2 = new FileStream(Path + "\\" + fileName, FileMode.Create, FileAccess.Write);
+            f2.Write(buf, 0, buf.Length);
+            f2.Close();
+            f2.Dispose();
+        }
+
+        /// <summary>
+        /// 鍐欐枃浠�
+        /// </summary>
+        /// <param name="Path">鏂囦欢璺緞</param>
+        /// <param name="Strings">鏂囦欢鍐呭</param>
+        /// <param name="encode">缂栫爜鏍煎紡</param>
+        public static void WriteFile(string Path, string Strings, Encoding encode)
+        {
+            if (!File.Exists(Path))
+            {
+                FileStream f = File.Create(Path);
+                f.Close();
+            }
+            StreamWriter f2 = new StreamWriter(Path, false, encode);
+            f2.Write(Strings);
+            f2.Close();
+            f2.Dispose();
+        }
+        #endregion
+
+        #region 璇绘枃浠�
+        /****************************************
+          * 鍑芥暟鍚嶇О锛歊eadFile
+          * 鍔熻兘璇存槑锛氳鍙栨枃鏈唴瀹�
+          * 鍙�     鏁帮細Path:鏂囦欢璺緞
+          * 璋冪敤绀哄垪锛�
+          *            string Path = Server.MapPath("Default2.aspx");       
+          *            string s = EC.FileObj.ReadFile(Path);
+         *****************************************/
+        /// <summary>
+        /// 璇绘枃浠�
+        /// </summary>
+        /// <param name="Path">鏂囦欢璺緞</param>
+        /// <returns></returns>
+        public static string ReadFile(string Path)
+        {
+            string s = "";
+            if (!File.Exists(Path))
+                s = "涓嶅瓨鍦ㄧ浉搴旂殑鐩綍";
+            else
+            {
+                StreamReader f2 = new StreamReader(Path, System.Text.Encoding.GetEncoding("gb2312"));
+                s = f2.ReadToEnd();
+                f2.Close();
+                f2.Dispose();
+            }
+
+            return s;
+        }
+
+        /// <summary>
+        /// 璇绘枃浠�
+        /// </summary>
+        /// <param name="Path">鏂囦欢璺緞</param>
+        /// <param name="encode">缂栫爜鏍煎紡</param>
+        /// <returns></returns>
+        public static string ReadFile(string Path, Encoding encode)
+        {
+            string s = "";
+            if (!File.Exists(Path))
+                s = "涓嶅瓨鍦ㄧ浉搴旂殑鐩綍";
+            else
+            {
+                StreamReader f2 = new StreamReader(Path, encode);
+                s = f2.ReadToEnd();
+                f2.Close();
+                f2.Dispose();
+            }
+
+            return s;
+        }
+        #endregion
+
+        #region 杩藉姞鏂囦欢
+        /****************************************
+          * 鍑芥暟鍚嶇О锛欶ileAdd
+          * 鍔熻兘璇存槑锛氳拷鍔犳枃浠跺唴瀹�
+          * 鍙�     鏁帮細Path:鏂囦欢璺緞,strings:鍐呭
+          * 璋冪敤绀哄垪锛�
+          *            string Path = Server.MapPath("Default2.aspx");     
+          *            string Strings = "鏂拌拷鍔犲唴瀹�";
+          *            EC.FileObj.FileAdd(Path, Strings);
+         *****************************************/
+        /// <summary>
+        /// 杩藉姞鏂囦欢
+        /// </summary>
+        /// <param name="Path">鏂囦欢璺緞</param>
+        /// <param name="strings">鍐呭</param>
+        public static void FileAdd(string Path, string strings)
+        {
+            StreamWriter sw = File.AppendText(Path);
+            sw.Write(strings);
+            sw.Flush();
+            sw.Close();
+        }
+        #endregion
+
+        #region 鎷疯礉鏂囦欢
+        /****************************************
+          * 鍑芥暟鍚嶇О锛欶ileCoppy
+          * 鍔熻兘璇存槑锛氭嫹璐濇枃浠�
+          * 鍙�     鏁帮細OrignFile:鍘熷鏂囦欢,NewFile:鏂版枃浠惰矾寰�
+          * 璋冪敤绀哄垪锛�
+          *            string orignFile = Server.MapPath("Default2.aspx");     
+          *            string NewFile = Server.MapPath("Default3.aspx");
+          *            EC.FileObj.FileCoppy(OrignFile, NewFile);
+         *****************************************/
+        /// <summary>
+        /// 鎷疯礉鏂囦欢
+        /// </summary>
+        /// <param name="OrignFile">鍘熷鏂囦欢</param>
+        /// <param name="NewFile">鏂版枃浠惰矾寰�</param>
+        public static void FileCoppy(string orignFile, string NewFile)
+        {
+            File.Copy(orignFile, NewFile, true);
+        }
+
+        #endregion
+
+        #region 鍒犻櫎鏂囦欢
+        /****************************************
+          * 鍑芥暟鍚嶇О锛欶ileDel
+          * 鍔熻兘璇存槑锛氬垹闄ゆ枃浠�
+          * 鍙�     鏁帮細Path:鏂囦欢璺緞
+          * 璋冪敤绀哄垪锛�
+          *            string Path = Server.MapPath("Default3.aspx");    
+          *            EC.FileObj.FileDel(Path);
+         *****************************************/
+        /// <summary>
+        /// 鍒犻櫎鏂囦欢
+        /// </summary>
+        /// <param name="Path">璺緞</param>
+        public static void FileDel(string Path)
+        {
+            File.Delete(Path);
+        }
+        #endregion
+
+        #region 绉诲姩鏂囦欢
+        /****************************************
+          * 鍑芥暟鍚嶇О锛欶ileMove
+          * 鍔熻兘璇存槑锛氱Щ鍔ㄦ枃浠�
+          * 鍙�     鏁帮細OrignFile:鍘熷璺緞,NewFile:鏂版枃浠惰矾寰�
+          * 璋冪敤绀哄垪锛�
+          *             string orignFile = Server.MapPath("../璇存槑.txt");    
+          *             string NewFile = Server.MapPath("http://www.cnblogs.com/璇存槑.txt");
+          *             EC.FileObj.FileMove(OrignFile, NewFile);
+         *****************************************/
+        /// <summary>
+        /// 绉诲姩鏂囦欢
+        /// </summary>
+        /// <param name="OrignFile">鍘熷璺緞</param>
+        /// <param name="NewFile">鏂拌矾寰�</param>
+        public static void FileMove(string orignFile, string NewFile)
+        {
+            File.Move(orignFile, NewFile);
+        }
+        #endregion
+
+        #region 鍦ㄥ綋鍓嶇洰褰曚笅鍒涘缓鐩綍
+        /****************************************
+          * 鍑芥暟鍚嶇О锛欶olderCreate
+          * 鍔熻兘璇存槑锛氬湪褰撳墠鐩綍涓嬪垱寤虹洰褰�
+          * 鍙�     鏁帮細OrignFolder:褰撳墠鐩綍,NewFloder:鏂扮洰褰�
+          * 璋冪敤绀哄垪锛�
+          *            string orignFolder = Server.MapPath("test/");    
+          *            string NewFloder = "new";
+          *            EC.FileObj.FolderCreate(OrignFolder, NewFloder);
+         *****************************************/
+        /// <summary>
+        /// 鍦ㄥ綋鍓嶇洰褰曚笅鍒涘缓鐩綍
+        /// </summary>
+        /// <param name="OrignFolder">褰撳墠鐩綍</param>
+        /// <param name="NewFloder">鏂扮洰褰�</param>
+        public static void FolderCreate(string orignFolder, string NewFloder)
+        {
+            Directory.SetCurrentDirectory(orignFolder);
+            Directory.CreateDirectory(NewFloder);
+        }
+        #endregion
+
+        #region 閫掑綊鍒犻櫎鏂囦欢澶圭洰褰曞強鏂囦欢
+        /****************************************
+          * 鍑芥暟鍚嶇О锛欴eleteFolder
+          * 鍔熻兘璇存槑锛氶�掑綊鍒犻櫎鏂囦欢澶圭洰褰曞強鏂囦欢
+          * 鍙�     鏁帮細dir:鏂囦欢澶硅矾寰�
+          * 璋冪敤绀哄垪锛�
+          *            string dir = Server.MapPath("test/");  
+          *            EC.FileObj.DeleteFolder(dir);       
+         *****************************************/
+        /// <summary>
+        /// 閫掑綊鍒犻櫎鏂囦欢澶圭洰褰曞強鏂囦欢
+        /// </summary>
+        /// <param name="dir"></param>
+        /// <returns></returns>
+        public static void DeleteFolder(string dir)
+        {
+            if (Directory.Exists(dir)) //濡傛灉瀛樺湪杩欎釜鏂囦欢澶瑰垹闄や箣
+            {
+                foreach (string d in Directory.GetFileSystemEntries(dir))
+                {
+                    if (File.Exists(d))
+                        File.Delete(d); //鐩存帴鍒犻櫎鍏朵腑鐨勬枃浠�
+                    else
+                        DeleteFolder(d); //閫掑綊鍒犻櫎瀛愭枃浠跺す
+                }
+                Directory.Delete(dir); //鍒犻櫎宸茬┖鏂囦欢澶�
+            }
+
+        }
+        #endregion
+
+        #region 灏嗘寚瀹氭枃浠跺す涓嬮潰鐨勬墍鏈夊唴瀹筩opy鍒扮洰鏍囨枃浠跺す涓嬮潰 鏋滅洰鏍囨枃浠跺す涓哄彧璇诲睘鎬у氨浼氭姤閿欍��
+        /****************************************
+          * 鍑芥暟鍚嶇О锛欳opyDir
+          * 鍔熻兘璇存槑锛氬皢鎸囧畾鏂囦欢澶逛笅闈㈢殑鎵�鏈夊唴瀹筩opy鍒扮洰鏍囨枃浠跺す涓嬮潰 鏋滅洰鏍囨枃浠跺す涓哄彧璇诲睘鎬у氨浼氭姤閿欍��
+          * 鍙�     鏁帮細srcPath:鍘熷璺緞,aimPath:鐩爣鏂囦欢澶�
+          * 璋冪敤绀哄垪锛�
+          *            string srcPath = Server.MapPath("test/");  
+          *            string aimPath = Server.MapPath("test1/");
+          *            EC.FileObj.CopyDir(srcPath,aimPath);   
+         *****************************************/
+        /// <summary>
+        /// 鎸囧畾鏂囦欢澶逛笅闈㈢殑鎵�鏈夊唴瀹筩opy鍒扮洰鏍囨枃浠跺す涓嬮潰
+        /// </summary>
+        /// <param name="srcPath">鍘熷璺緞</param>
+        /// <param name="aimPath">鐩爣鏂囦欢澶�</param>
+        public static void CopyDir(string srcPath, string aimPath)
+        {
+            try
+            {
+                // 妫�鏌ョ洰鏍囩洰褰曟槸鍚︿互鐩綍鍒嗗壊瀛楃缁撴潫濡傛灉涓嶆槸鍒欐坊鍔犱箣
+                if (aimPath[aimPath.Length - 1] != Path.DirectorySeparatorChar)
+                    aimPath += Path.DirectorySeparatorChar;
+                // 鍒ゆ柇鐩爣鐩綍鏄惁瀛樺湪濡傛灉涓嶅瓨鍦ㄥ垯鏂板缓涔�
+                if (!Directory.Exists(aimPath))
+                    Directory.CreateDirectory(aimPath);
+                // 寰楀埌婧愮洰褰曠殑鏂囦欢鍒楄〃锛岃閲岄潰鏄寘鍚枃浠朵互鍙婄洰褰曡矾寰勭殑涓�涓暟缁�
+                //濡傛灉浣犳寚鍚慶opy鐩爣鏂囦欢涓嬮潰鐨勬枃浠惰�屼笉鍖呭惈鐩綍璇蜂娇鐢ㄤ笅闈㈢殑鏂规硶
+                //string[] fileList = Directory.GetFiles(srcPath);
+                string[] fileList = Directory.GetFileSystemEntries(srcPath);
+                //閬嶅巻鎵�鏈夌殑鏂囦欢鍜岀洰褰�
+                foreach (string file in fileList)
+                {
+                    //鍏堝綋浣滅洰褰曞鐞嗗鏋滃瓨鍦ㄨ繖涓洰褰曞氨閫掑綊Copy璇ョ洰褰曚笅闈㈢殑鏂囦欢
+
+                    if (Directory.Exists(file))
+                        CopyDir(file, aimPath + Path.GetFileName(file));
+                    //鍚﹀垯鐩存帴Copy鏂囦欢
+                    else
+                        File.Copy(file, aimPath + Path.GetFileName(file), true);
+                }
+
+            }
+            catch (Exception ee)
+            {
+                throw new Exception(ee.ToString());
+            }
+        }
+        #endregion
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpContextHelper.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpContextHelper.cs"
new file mode 100644
index 0000000..d0d23cd
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpContextHelper.cs"
@@ -0,0 +1,36 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Helper
+{
+    public static class HttpContextHelper
+    {
+        public static string GetUserIp(this HttpContext context)
+        {
+            string realIP = null;
+            string forwarded = null;
+            string remoteIpAddress = context.Connection.RemoteIpAddress.ToString();
+            if (context.Request.Headers.ContainsKey("X-Real-IP"))
+            {
+                realIP = context.Request.Headers["X-Real-IP"].ToString();
+                if (realIP != remoteIpAddress)
+                {
+                    remoteIpAddress = realIP;
+                }
+            }
+            if (context.Request.Headers.ContainsKey("X-Forwarded-For"))
+            {
+                forwarded = context.Request.Headers["X-Forwarded-For"].ToString();
+                if (forwarded != remoteIpAddress)
+                {
+                    remoteIpAddress = forwarded;
+                }
+            }
+            return remoteIpAddress;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpHelper.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpHelper.cs"
new file mode 100644
index 0000000..c020a67
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpHelper.cs"
@@ -0,0 +1,136 @@
+锘縰sing Microsoft.Extensions.Logging;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http.Headers;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.LogHelper;
+
+namespace WIDESEA_Core.Helper
+{
+    public class HttpHelper
+    {
+        public static async Task<string> GetAsync(string serviceAddress, Dictionary<string, string>? headers = null)
+        {
+            string result = string.Empty;
+            DateTime beginDate = DateTime.Now;
+            try
+            {
+                using HttpClient httpClient = new HttpClient();
+                httpClient.Timeout = new TimeSpan(0, 0, 60);
+                
+                if (headers != null)
+                {
+                    foreach (var header in headers)
+                        httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
+                }
+
+                result = await httpClient.GetAsync(serviceAddress).Result.Content.ReadAsStringAsync();
+                return result;
+            }
+            catch (Exception e)
+            {
+                throw new Exception(e.Message);
+            }
+            finally
+            {
+                Logger.Add(serviceAddress, "", result, beginDate);
+            }
+        }
+
+        public static async Task<string?> PostAsync(string serviceAddress, string requestJson = "", string contentType = "application/json", Dictionary<string, string>? headers = null)
+        {
+            string result = string.Empty;
+            DateTime beginDate = DateTime.Now;
+            try
+            {
+                using (HttpContent httpContent = new StringContent(requestJson))
+                {
+                    httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
+                    using HttpClient httpClient = new HttpClient();
+                    httpClient.Timeout = new TimeSpan(0, 0, 60);
+
+                    if (headers != null)
+                    {
+                        foreach (var header in headers)
+                            httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
+                    }
+
+                    result = await httpClient.PostAsync(serviceAddress, httpContent).Result.Content.ReadAsStringAsync();
+                }
+                return result;
+            }
+            catch (Exception e)
+            {
+                throw new Exception(e.Message);
+            }
+            finally
+            {
+                Logger.Add(serviceAddress, requestJson, result, beginDate);
+            }
+        }
+
+        public static string Get(string serviceAddress, string contentType = "application/json", Dictionary<string, string>? headers = null)
+        {
+            string result = string.Empty;
+            DateTime beginDate = DateTime.Now;
+            try
+            {
+                using HttpClient httpClient = new HttpClient();
+                httpClient.Timeout = new TimeSpan(0, 0, 60);
+
+                if (headers != null)
+                {
+                    foreach (var header in headers)
+                        httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
+                }
+
+                result = httpClient.GetStringAsync(serviceAddress).Result;
+                return result;
+            }
+            catch (Exception e)
+            {
+                throw new Exception(e.Message);
+            }
+            finally
+            {
+                Logger.Add(serviceAddress, "", result, beginDate);
+            }
+        }
+
+        public static string Post(string serviceAddress, string requestJson = "", string contentType = "application/json", Dictionary<string, string>? headers = null)
+        {
+            string result = string.Empty;
+            DateTime beginDate = DateTime.Now;
+            try
+            {
+                using (HttpContent httpContent = new StringContent(requestJson))
+                {
+                    httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
+                    using HttpClient httpClient = new HttpClient();
+                    httpClient.Timeout = new TimeSpan(0, 0, 60);
+
+                    if (headers != null)
+                    {
+                        foreach (var header in headers)
+                            httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
+                    }
+
+                    result = httpClient.PostAsync(serviceAddress, httpContent).Result.Content.ReadAsStringAsync().Result;
+                }
+                return result;
+            }
+            catch (Exception e)
+            {
+                throw new Exception(e.Message);
+            }
+            finally
+            {
+                Logger.Add(serviceAddress, requestJson, result, beginDate);
+            }
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpMesHelper.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpMesHelper.cs"
new file mode 100644
index 0000000..36da40e
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpMesHelper.cs"
@@ -0,0 +1,83 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Net.Http.Headers;
+using WIDESEA_Core.LogHelper;
+using System.Security.Cryptography;
+
+namespace WIDESEA_Core.Helper
+{
+    public class HttpMesHelper
+    {
+        public static string Post(string serviceAddress, string requestJson = null, string contentType = "application/json", Dictionary<string, string>? headers = null)
+        {
+            string result = string.Empty;
+            DateTime beginDate = DateTime.Now;
+            try
+            {
+                using (HttpContent httpContent = new StringContent(requestJson))
+                {
+                    httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
+                    
+                    using HttpClient httpClient = new HttpClient();
+                    httpClient.Timeout = new TimeSpan(0, 0, 60);
+                    string authorization = "AppKey 1830415116987195392";
+                    headers = new Dictionary<string, string>
+                    {
+                        { "Authorization", authorization },
+                        { "Site_tenant_id", "0dc2d164-8a62-417e-8a00-808007464feb" }
+                    };
+                    if (headers != null)
+                    {
+                        foreach (var header in headers)
+                            httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
+                    }
+                    HttpResponseMessage responseMessage = httpClient.PostAsync(serviceAddress, httpContent).Result;
+                    result = responseMessage.Content.ReadAsStringAsync().Result;
+                }
+                return result;
+            }
+            catch (Exception e)
+            {
+                throw new Exception(e.Message);
+            }
+            finally
+            {
+                Logger.Add(serviceAddress, requestJson == null ? "" : requestJson, result, beginDate);
+            }
+        }
+        public static string GetStr(string textToEncrypt)
+        {
+            string publicKey;
+            string privateKey;
+            GenerateRSAKeyPair(out publicKey, out privateKey);
+            byte[] encryptedBytes = RSAEncrypt(textToEncrypt, publicKey);
+            // 鍙互灏嗗姞瀵嗗悗鐨勫瓧鑺傛暟缁勮浆鎹负Base64瀛楃涓叉柟渚垮悗缁鐞嗭紝渚嬪浼犺緭绛�
+            string encryptedBase64 = Convert.ToBase64String(encryptedBytes);
+            return encryptedBase64;
+        }
+        public static void GenerateRSAKeyPair(out string publicKey, out string privateKey)
+        {
+            using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(2048))
+            {
+                publicKey = rsa.ToXmlString(false);
+                privateKey = rsa.ToXmlString(true);
+            }
+        }
+        public static byte[] RSAEncrypt(string plainText, string publicKey)
+        {
+            byte[] encryptedData;
+            using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
+            {
+                rsa.FromXmlString(publicKey);
+                // 灏嗘枃鏈浆鎹负UTF8缂栫爜鐨勫瓧鑺傛暟缁�
+                byte[] plainBytes = Encoding.UTF8.GetBytes(plainText);
+                // 浣跨敤SHA1鍝堝笇绠楁硶浠ュ強Pkcs1濉厖瑙勫垯杩涜鍔犲瘑
+                encryptedData = rsa.Encrypt(plainBytes, true);
+            }
+            return encryptedData;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/MethodInfoExtensions.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/MethodInfoExtensions.cs"
new file mode 100644
index 0000000..63edd4b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/MethodInfoExtensions.cs"
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Helper
+{
+    public static class MethodInfoExtensions
+    {
+        public static string GetFullName(this MethodInfo method)
+        {
+            if (method.DeclaringType == null)
+            {
+                return $@"{method.Name}";
+            }
+
+            return $"{method.DeclaringType.FullName}.{method.Name}";
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/ObjectExtension.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/ObjectExtension.cs"
new file mode 100644
index 0000000..b051c14
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/ObjectExtension.cs"
@@ -0,0 +1,59 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Helper
+{
+    public static class ObjectExtension
+    {
+        public static List<T> DicToIEnumerable<T>(this List<Dictionary<string, object>> dicList)
+        {
+            List<T> list = new List<T>();
+            foreach (Dictionary<string, object> dic in dicList)
+            {
+                list.Add(dic.DicToModel<T>());
+            }
+            return list;
+        }
+
+        public static T DicToModel<T>(this Dictionary<string, object> dic)
+        {
+            T model = Activator.CreateInstance<T>();
+            PropertyInfo[] propertyInfos = typeof(T).GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance);
+            foreach (var property in propertyInfos)
+            {
+                object? value = null;
+                if (!dic.TryGetValue(property.Name, out value))
+                {
+                    if (!dic.TryGetValue(property.Name.FirstLetterToUpper(), out value))
+                    {
+                        if (!dic.TryGetValue(property.Name.FirstLetterToLower(), out value))
+                        {
+                            continue;
+                        }
+                    }
+                };
+
+                SugarColumn? sugarColumn = property.GetCustomAttribute<SugarColumn>();
+                if (sugarColumn != null && sugarColumn.IsIdentity && (value == null || value.Equals("")))
+                {
+                    continue;
+                }
+                //if (value != null && sugarColumn != null && !sugarColumn.IsNullable)
+                try
+                {
+                    property.SetValue(model, value.ChangeType(property.PropertyType));
+                }
+                catch
+                {
+
+                }
+            }
+            return model;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/RuntimeExtension.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/RuntimeExtension.cs"
new file mode 100644
index 0000000..702db9b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/RuntimeExtension.cs"
@@ -0,0 +1,89 @@
+锘�
+using Microsoft.Extensions.DependencyModel;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Runtime.Loader;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Helper
+{
+    public static class RuntimeExtension
+    {
+        /// <summary>
+        /// 鑾峰彇椤圭洰绋嬪簭闆嗭紝鎺掗櫎鎵�鏈夌殑绯荤粺绋嬪簭闆�(Microsoft.***銆丼ystem.***绛�)銆丯uget涓嬭浇鍖�
+        /// </summary>
+        /// <returns></returns>
+        public static IList<Assembly> GetAllAssemblies()
+        {
+            var list = new List<Assembly>();
+            var deps = DependencyContext.Default;
+            //鍙姞杞介」鐩腑鐨勭▼搴忛泦
+            var libs = deps.CompileLibraries.Where(lib => !lib.Serviceable && lib.Type == "project"); //鎺掗櫎鎵�鏈夌殑绯荤粺绋嬪簭闆嗐�丯uget涓嬭浇鍖�
+            foreach (var lib in libs)
+            {
+                try
+                {
+                    var assembly = AssemblyLoadContext.Default.LoadFromAssemblyName(new AssemblyName(lib.Name));
+                    list.Add(assembly);
+                }
+                catch (Exception e)
+                {
+                    //Log.Debug(e, "GetAllAssemblies Exception:{ex}", e.Message);
+                }
+            }
+
+            return list;
+        }
+
+        public static Assembly GetAssembly(string assemblyName)
+        {
+            return GetAllAssemblies().FirstOrDefault(assembly => assembly.FullName.Contains(assemblyName));
+        }
+
+        public static IList<Type> GetAllTypes()
+        {
+            var list = new List<Type>();
+            foreach (var assembly in GetAllAssemblies())
+            {
+                var typeInfos = assembly.DefinedTypes;
+                foreach (var typeInfo in typeInfos)
+                {
+                    list.Add(typeInfo.AsType());
+                }
+            }
+
+            return list;
+        }
+
+        public static IList<Type> GetTypesByAssembly(string assemblyName)
+        {
+            var list = new List<Type>();
+            var assembly = AssemblyLoadContext.Default.LoadFromAssemblyName(new AssemblyName(assemblyName));
+            var typeInfos = assembly.DefinedTypes;
+            foreach (var typeInfo in typeInfos)
+            {
+                list.Add(typeInfo.AsType());
+            }
+
+            return list;
+        }
+
+        public static Type GetImplementType(string typeName, Type baseInterfaceType)
+        {
+            return GetAllTypes().FirstOrDefault(t =>
+            {
+                if (t.Name == typeName &&
+                    t.GetTypeInfo().GetInterfaces().Any(b => b.Name == baseInterfaceType.Name))
+                {
+                    var typeInfo = t.GetTypeInfo();
+                    return typeInfo.IsClass && !typeInfo.IsAbstract && !typeInfo.IsGenericType;
+                }
+
+                return false;
+            });
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/SecurityEncDecryptHelper.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/SecurityEncDecryptHelper.cs"
new file mode 100644
index 0000000..c44c9e2
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/SecurityEncDecryptHelper.cs"
@@ -0,0 +1,93 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Security.Cryptography;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.DB;
+
+namespace WIDESEA_Core.Helper
+{
+    public static class SecurityEncDecryptHelper
+    {
+        private static byte[] Keys = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F };
+        /// <summary> 
+        /// DES鍔犲瘑瀛楃涓� 
+        /// </summary> 
+        /// <param name="encryptString">寰呭姞瀵嗙殑瀛楃涓�</param> 
+        /// <param name="encryptKey">鍔犲瘑瀵嗛挜,瑕佹眰涓�16浣�</param> 
+        /// <returns>鍔犲瘑鎴愬姛杩斿洖鍔犲瘑鍚庣殑瀛楃涓诧紝澶辫触杩斿洖婧愪覆</returns> 
+
+        public static string EncryptDES(this string encryptString, string encryptKey)
+        {
+            try
+            {
+                byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 16));
+                byte[] rgbIV = Keys;
+                byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
+
+                using (var DCSP = Aes.Create())
+                {
+                    using (MemoryStream mStream = new MemoryStream())
+                    {
+                        using (CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write))
+                        {
+                            cStream.Write(inputByteArray, 0, inputByteArray.Length);
+                            cStream.FlushFinalBlock();
+                            return Convert.ToBase64String(mStream.ToArray()).Replace('+', '_').Replace('/', '~');
+                        }
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                throw new Exception("瀵嗙爜鍔犲瘑寮傚父" + ex.Message);
+            }
+
+        }
+
+        /// <summary> 
+        /// DES瑙e瘑瀛楃涓� 
+        /// </summary> 
+        /// <param name="decryptString">寰呰В瀵嗙殑瀛楃涓�</param> 
+        /// <param name="decryptKey">瑙e瘑瀵嗛挜,瑕佹眰涓�16浣�,鍜屽姞瀵嗗瘑閽ョ浉鍚�</param> 
+        /// <returns>瑙e瘑鎴愬姛杩斿洖瑙e瘑鍚庣殑瀛楃涓诧紝澶辫触杩旀簮涓�</returns> 
+
+        public static string DecryptDES(this string decryptString, string decryptKey)
+        {
+            if (decryptKey == AppSecret.DB && !AppSettings.Get(MainDb.ConnectionStringsEncryption).ObjToBool())
+                return decryptString;
+
+            byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey.Substring(0, 16));
+            byte[] rgbIV = Keys;
+            byte[] inputByteArray = Convert.FromBase64String(decryptString.Replace('_', '+').Replace('~', '/'));
+            using (var DCSP = Aes.Create())
+            {
+                using (MemoryStream mStream = new MemoryStream())
+                {
+                    using (CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write))
+                    {
+                        byte[] inputByteArrays = new byte[inputByteArray.Length];
+                        cStream.Write(inputByteArray, 0, inputByteArray.Length);
+                        cStream.FlushFinalBlock();
+                        return Encoding.UTF8.GetString(mStream.ToArray());
+                    }
+                }
+            }
+        }
+        public static bool TryDecryptDES(this string decryptString, string decryptKey, out string result)
+        {
+            result = "";
+            try
+            {
+                result = DecryptDES(decryptString, decryptKey);
+                return true;
+            }
+            catch
+            {
+                return false;
+            }
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/UtilConvert.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/UtilConvert.cs"
new file mode 100644
index 0000000..d9c8538
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Helper/UtilConvert.cs"
@@ -0,0 +1,983 @@
+锘縰sing NetTaste;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using System.Web;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Enums;
+
+namespace WIDESEA_Core.Helper
+{
+    public static class UtilConvert
+    {
+        private static DateTime dateStart = new DateTime(1970, 1, 1, 8, 0, 0);
+
+        private static long longTime = 621355968000000000;
+
+        private static int samllTime = 10000000;
+        /// <summary>
+        /// 鏃堕棿鎴宠浆鎹㈡垚鏃ユ湡
+        /// </summary>
+        /// <param name="timeStamp"></param>
+        /// <returns></returns>
+        public static DateTime GetTimeSpmpToDate(this object timeStamp)
+        {
+            if (timeStamp == null) return dateStart;
+            DateTime dateTime = new DateTime(longTime + Convert.ToInt64(timeStamp) * samllTime, DateTimeKind.Utc).ToLocalTime();
+            return dateTime;
+        }
+
+        public static string Serialize(this object obj, JsonSerializerSettings formatDate = null)
+        {
+            if (obj == null) return null;
+            formatDate = formatDate ?? new JsonSerializerSettings
+            {
+                DateFormatString = "yyyy-MM-dd HH:mm:ss"
+            };
+            return JsonConvert.SerializeObject(obj, formatDate);
+        }
+
+        public static T DeserializeObject<T>(this string json)
+        {
+            if (string.IsNullOrEmpty(json))
+            {
+                return default(T);
+            }
+            if (json == "{}")
+            {
+                json = "[]";
+            }
+            return JsonConvert.DeserializeObject<T>(json);
+        }
+
+        public static string FirstLetterToLower(this string thisValue)
+        {
+            if (string.IsNullOrEmpty(thisValue)) return string.Empty;
+            string result = thisValue.Substring(0, 1).ToLower() + thisValue.Substring(1, thisValue.Length - 1);
+            return result;
+        }
+
+        public static string FirstLetterToUpper(this string thisValue)
+        {
+            if (string.IsNullOrEmpty(thisValue)) return string.Empty;
+            string result = thisValue.Substring(0, 1).ToUpper() + thisValue.Substring(1, thisValue.Length - 1);
+            return result;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <returns></returns>
+        public static int ObjToInt(this object thisValue)
+        {
+            int reval = 0;
+            if (thisValue == null) return 0;
+            if (thisValue is Enum && thisValue != DBNull.Value && Enum.TryParse(thisValue.GetType(), thisValue.ToString(), out var val))
+            {
+                return Convert.ToInt32(val.ChangeType(typeof(int)));
+            }
+            if (thisValue != DBNull.Value && int.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return reval;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <returns></returns>
+        public static int DoubleToInt(this double thisValue)
+        {
+            int reval = 0;
+
+            return Convert.ToInt32(thisValue);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <param name="errorValue"></param>
+        /// <returns></returns>
+        public static int ObjToInt(this object thisValue, int errorValue)
+        {
+            int reval = 0;
+            if (thisValue != null && thisValue != DBNull.Value && int.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return errorValue;
+        }
+
+        public static long ObjToLong(this object thisValue)
+        {
+            long reval = 0;
+            if (thisValue == null) return 0;
+            if (thisValue != DBNull.Value && long.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return reval;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <returns></returns>
+        public static double ObjToMoney(this object thisValue)
+        {
+            double reval = 0;
+            if (thisValue != null && thisValue != DBNull.Value && double.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return 0;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <param name="errorValue"></param>
+        /// <returns></returns>
+        public static double ObjToMoney(this object thisValue, double errorValue)
+        {
+            double reval = 0;
+            if (thisValue != null && thisValue != DBNull.Value && double.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return errorValue;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <returns></returns>
+        public static string ObjToString(this object thisValue)
+        {
+            if (thisValue != null) return thisValue.ToString().Trim();
+            return "";
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <returns></returns>
+        public static bool IsNotEmptyOrNull(this object thisValue)
+        {
+            return ObjToString(thisValue) != "" && ObjToString(thisValue) != "undefined" && ObjToString(thisValue) != "null";
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <param name="errorValue"></param>
+        /// <returns></returns>
+        public static string ObjToString(this object thisValue, string errorValue)
+        {
+            if (thisValue != null) return thisValue.ToString().Trim();
+            return errorValue;
+        }
+
+        public static bool IsNullOrEmpty(this object thisValue) => thisValue == null || thisValue == DBNull.Value || string.IsNullOrWhiteSpace(thisValue.ToString());
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <returns></returns>
+        public static Decimal ObjToDecimal(this object thisValue)
+        {
+            Decimal reval = 0;
+            if (thisValue != null && thisValue != DBNull.Value && decimal.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return 0;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <param name="errorValue"></param>
+        /// <returns></returns>
+        public static Decimal ObjToDecimal(this object thisValue, decimal errorValue)
+        {
+            Decimal reval = 0;
+            if (thisValue != null && thisValue != DBNull.Value && decimal.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return errorValue;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <returns></returns>
+        public static DateTime ObjToDate(this object thisValue)
+        {
+            DateTime reval = DateTime.MinValue;
+            if (thisValue != null && thisValue != DBNull.Value && DateTime.TryParse(thisValue.ToString(), out reval))
+            {
+                reval = Convert.ToDateTime(thisValue);
+            }
+
+            return reval;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <param name="errorValue"></param>
+        /// <returns></returns>
+        public static DateTime ObjToDate(this object thisValue, DateTime errorValue)
+        {
+            DateTime reval = DateTime.MinValue;
+            if (thisValue != null && thisValue != DBNull.Value && DateTime.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return errorValue;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <returns></returns>
+        public static bool ObjToBool(this object thisValue)
+        {
+            bool reval = false;
+            if (thisValue != null && thisValue != DBNull.Value && bool.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return reval;
+        }
+
+
+        /// <summary>
+        /// 鑾峰彇褰撳墠鏃堕棿鐨勬椂闂存埑
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <returns></returns>
+        public static string DateToTimeStamp(this DateTime thisValue)
+        {
+            TimeSpan ts = thisValue - new DateTime(1970, 1, 1, 0, 0, 0, 0);
+            return Convert.ToInt64(ts.TotalSeconds).ToString();
+        }
+
+        public static object ChangeType(this object value, Type type)
+        {
+            if (value == null && type.IsGenericType) return Activator.CreateInstance(type);
+            if (value == null) return null;
+            if (type == value.GetType()) return value;
+            if (type.IsEnum)
+            {
+                if (value is string)
+                    return Enum.Parse(type, value as string);
+                else
+                    return Enum.ToObject(type, value);
+            }
+
+            if (!type.IsInterface && type.IsGenericType)
+            {
+                Type innerType = type.GetGenericArguments()[0];
+                object innerValue = ChangeType(value, innerType);
+                return Activator.CreateInstance(type, new object[] { innerValue });
+            }
+
+            if (value is string && type == typeof(Guid)) return new Guid(value as string);
+            if (value is string && type == typeof(Version)) return new Version(value as string);
+            if (!(value is IConvertible)) return value;
+            return Convert.ChangeType(value, type);
+        }
+
+        public static object ChangeTypeList(this object value, Type type)
+        {
+            if (value == null) return default;
+
+            var gt = typeof(List<>).MakeGenericType(type);
+            dynamic lis = Activator.CreateInstance(gt);
+
+            var addMethod = gt.GetMethod("Add");
+            string values = value.ToString();
+            if (values != null && values.StartsWith("(") && values.EndsWith(")"))
+            {
+                string[] splits;
+                if (values.Contains("\",\""))
+                {
+                    splits = values.Remove(values.Length - 2, 2)
+                        .Remove(0, 2)
+                        .Split("\",\"");
+                }
+                else
+                {
+                    splits = values.Remove(0, 1)
+                        .Remove(values.Length - 2, 1)
+                        .Split(",");
+                }
+
+                foreach (var split in splits)
+                {
+                    var str = split;
+                    if (split.StartsWith("\"") && split.EndsWith("\""))
+                    {
+                        str = split.Remove(0, 1)
+                            .Remove(split.Length - 2, 1);
+                    }
+
+                    addMethod.Invoke(lis, new object[] { ChangeType(str, type) });
+                }
+            }
+
+            return lis;
+        }
+
+        public static string ToJson(this object value)
+        {
+            return JsonConvert.SerializeObject(value);
+        }
+
+        public static bool IsNumeric(this object value)
+        {
+            if (value == null)
+                return false;
+            bool reslut = decimal.TryParse(value.ToString(), out decimal _number);
+            return reslut;
+        }
+
+        public static bool IsInt(this object obj)
+        {
+            if (obj == null)
+                return false;
+            bool reslut = Int32.TryParse(obj.ToString(), out int _number);
+            return reslut;
+
+        }
+        public static bool IsDate(this object str)
+        {
+            return str.IsDate(out _);
+        }
+        public static bool IsDate(this object str, out DateTime dateTime)
+        {
+            dateTime = DateTime.Now;
+            if (str == null || str.ToString() == "")
+            {
+                return false;
+            }
+            return DateTime.TryParse(str.ToString(), out dateTime);
+        }
+
+        /// <summary>
+        /// 鏍规嵁浼犲叆鏍煎紡鍒ゆ柇鏄惁涓哄皬鏁�
+        /// </summary>
+        /// <param name="str"></param>
+        /// <param name="formatString">18,5</param>
+        /// <returns></returns>
+        public static bool IsNumber(this string str, string formatString)
+        {
+            if (string.IsNullOrEmpty(str)) return false;
+
+            return Regex.IsMatch(str, @"^[+-]?\d*[.]?\d*$");
+        }
+
+        public static bool IsGuid(this string guid)
+        {
+            Guid newId;
+            return guid.GetGuid(out newId);
+        }
+
+        public static bool GetGuid(this string guid, out Guid outId)
+        {
+            Guid emptyId = Guid.Empty;
+            return Guid.TryParse(guid, out outId);
+        }
+
+        /// <summary>
+        /// 杞崲涓虹煭鏁村瀷 qy 2024-7-15
+        /// </summary>
+        /// <param name="data">鏁版嵁</param>
+        public static short ToShort(this object data)
+        {
+            if (data == null)
+                return 0;
+            short result;
+            var success = short.TryParse(data.ToString(), out result);
+            if (success)
+                return result;
+            try
+            {
+                return Convert.ToInt16(data);
+            }
+            catch (Exception)
+            {
+                return 0;
+            }
+        }
+
+        /// <summary>
+        /// 杞崲涓洪珮绮惧害娴偣鏁�,骞舵寜鎸囧畾鐨勫皬鏁颁綅4鑸�5鍏� qy 2024-7-15
+        /// </summary>
+        /// <param name="data">鏁版嵁</param>
+        /// <param name="digits">灏忔暟浣嶆暟</param>
+        public static decimal ToDecimal(this object data, int digits)
+        {
+            return Math.Round(ObjToDecimal(data), digits);
+        }
+
+
+
+        /// <summary>
+        /// 鏋氫妇杞琇ist qy 2024-7-15
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <returns></returns>
+        public static List<object> GetEnumList<T>()
+        {
+            List<object> list = new List<object>();
+            var t = typeof(T);
+            foreach (var item in Enum.GetValues(typeof(T)))
+            {
+                FieldInfo f = t.GetField(Enum.GetName(typeof(T), item));
+                var r = (System.ComponentModel.DescriptionAttribute[])f.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
+                list.Add(new { ID = item, value = Enum.GetName(typeof(T), item), name = r[0].Description });
+            }
+            return list;
+        }
+
+        /// <summary> 
+        /// 楠岃瘉鍔ㄦ�佺被鍨嬪厓绱犳槸鍚︿负绌� qy 2024-7-15
+        /// </summary>
+        /// <param name="obj"></param>
+        /// <returns></returns>
+        public static bool CheckDynamic(object obj)
+        {
+            return (obj != null && Convert.ToString(obj) != "") ? true : false;
+        }
+
+        /// <summary>
+        /// 鍔ㄦ�佺被鍨嬪厓绱犺浆瀛楃涓插苟瑙g爜 qy 2024-7-15
+        /// </summary>
+        /// <param name="obj"></param>
+        /// <returns></returns>
+        public static string DynamicToString(object obj)
+        {
+            return CheckDynamic(obj) ? HttpUtility.UrlDecode(Convert.ToString(obj).Trim()) : "";
+        }
+
+        /// <summary> 
+        /// DataTable杞负json  qy 2024-7-15
+        /// </summary> 
+        /// <param name="parObjRefDataTable">DataTable</param> 
+        /// <returns>json鏁版嵁</returns> 
+        public static string ToJson(this DataTable parObjRefDataTable)
+        {
+            List<object> objArrList = new List<object>();
+
+            foreach (DataRow objDataRow in parObjRefDataTable.Rows)
+            {
+                Dictionary<string, object> objResult = new Dictionary<string, object>();
+
+                foreach (DataColumn objDataColumn in parObjRefDataTable.Columns)
+                    objResult.Add(objDataColumn.ColumnName, objDataRow[objDataColumn].ToString());
+
+                objArrList.Add(objResult);
+            }
+
+            return ToJson(objArrList);
+        }
+        /// <summary>
+        /// Json杞琇ist qy 2024-7-15
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="parJson"></param>
+        /// <returns></returns>
+        public static List<T> JsonToList<T>(this string parJson)
+        {
+            if (string.IsNullOrWhiteSpace(parJson))
+            {
+                return new List<T>();
+            }
+            else
+            {
+                return JsonConvert.DeserializeObject<List<T>>(parJson);
+            }
+        }
+
+        /// <summary>
+        /// 鏃ユ湡杞负unix鍊�
+        /// </summary>
+        /// <param name="dt"></param>
+        /// <param name="utc">T:鎸塙TC鏃堕棿璁$畻(榛樿);F:鎸夋湰鍦版椂闂磋绠�</param>
+        /// <returns></returns>
+        public static double ToUnix(this DateTime dt, bool utc = true)
+        {
+            double intResult = 0;
+            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
+            intResult = (dt - startTime).TotalSeconds;
+            intResult = Math.Round(intResult, 0);
+            return intResult;
+        }
+
+        #region 鍒ゆ柇鏄惁涓哄瓧绗︿覆 qy 2024-7-15
+        /// <summary>
+        /// 鍒ゆ柇瀛楃涓叉槸鍚︿负鍚堟硶鐨刯son瀛楃涓� qy 2024-7-15
+        /// </summary>
+        /// <param name="json"></param>
+        /// <returns></returns>
+        public static bool IsJson(string json)
+        {
+            int errIndex;
+            return IsJson(json, out errIndex);
+        }
+        public static bool IsJson(string json, out int errIndex)
+        {
+            errIndex = 0;
+            if (IsJsonStart(ref json))
+            {
+                CharState cs = new CharState();
+                char c;
+                for (int i = 0; i < json.Length; i++)
+                {
+                    c = json[i];
+                    if (SetCharState(c, ref cs) && cs.childrenStart)//璁剧疆鍏抽敭绗﹀彿鐘舵�併��
+                    {
+                        string item = json.Substring(i);
+                        int err;
+                        int length = GetValueLength(item, true, out err);
+                        cs.childrenStart = false;
+                        if (err > 0)
+                        {
+                            errIndex = i + err;
+                            return false;
+                        }
+                        i = i + length - 1;
+                    }
+                    if (cs.isError)
+                    {
+                        errIndex = i;
+                        return false;
+                    }
+                }
+
+                return !cs.arrayStart && !cs.jsonStart;
+            }
+            return false;
+        }
+
+        private static bool IsJsonStart(ref string json)
+        {
+            if (!string.IsNullOrEmpty(json))
+            {
+                json = json.Trim('\r', '\n', ' ');
+                if (json.Length > 1)
+                {
+                    char s = json[0];
+                    char e = json[json.Length - 1];
+                    return (s == '{' && e == '}') || (s == '[' && e == ']');
+                }
+            }
+            return false;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍊肩殑闀垮害锛堝綋Json鍊煎祵濂椾互"{"鎴�"["寮�澶存椂锛� qy 2024-7-15
+        /// </summary>
+        private static int GetValueLength(string json, bool breakOnErr, out int errIndex)
+        {
+            errIndex = 0;
+            int len = 0;
+            if (!string.IsNullOrEmpty(json))
+            {
+                CharState cs = new CharState();
+                char c;
+                for (int i = 0; i < json.Length; i++)
+                {
+                    c = json[i];
+                    if (!SetCharState(c, ref cs))//璁剧疆鍏抽敭绗﹀彿鐘舵�併��
+                    {
+                        if (!cs.jsonStart && !cs.arrayStart)//json缁撴潫锛屽張涓嶆槸鏁扮粍锛屽垯閫�鍑恒��
+                        {
+                            break;
+                        }
+                    }
+                    else if (cs.childrenStart)//姝e父瀛楃锛屽�肩姸鎬佷笅銆�
+                    {
+                        int length = GetValueLength(json.Substring(i), breakOnErr, out errIndex);//閫掑綊瀛愬�硷紝杩斿洖涓�涓暱搴︺�傘�傘��
+                        cs.childrenStart = false;
+                        cs.valueStart = 0;
+                        //cs.state = 0;
+                        i = i + length - 1;
+                    }
+                    if (breakOnErr && cs.isError)
+                    {
+                        errIndex = i;
+                        return i;
+                    }
+                    if (!cs.jsonStart && !cs.arrayStart)//璁板綍褰撳墠缁撴潫浣嶇疆銆�
+                    {
+                        len = i + 1;//闀垮害姣旂储寮�+1
+                        break;
+                    }
+                }
+            }
+            return len;
+        }
+
+        /// <summary>
+        /// 瀛楃鐘舵�� qy 2024-7-15
+        /// </summary>
+        private class CharState
+        {
+            internal bool jsonStart = false;//浠� "{"寮�濮嬩簡...
+            internal bool setDicValue = false;// 鍙互璁剧疆瀛楀吀鍊间簡銆�
+            internal bool escapeChar = false;//浠�"\"杞箟绗﹀彿寮�濮嬩簡
+            /// <summary>
+            /// 鏁扮粍寮�濮嬨�愪粎绗竴寮�澶存墠绠椼�戯紝鍊煎祵濂楃殑浠ャ�恈hildrenStart銆戞潵鏍囪瘑銆�
+            /// </summary>
+            internal bool arrayStart = false;//浠�"[" 绗﹀彿寮�濮嬩簡
+            internal bool childrenStart = false;//瀛愮骇宓屽寮�濮嬩簡銆�
+            /// <summary>
+            /// 銆�0 鍒濆鐘舵�侊紝鎴� 閬囧埌鈥�,鈥濋�楀彿銆戯紱銆�1 閬囧埌鈥滐細鈥濆啋鍙枫��
+            /// </summary>
+            internal int state = 0;
+
+            /// <summary>
+            /// 銆�-1 鍙栧�肩粨鏉熴�戙��0 鏈紑濮嬨�戙��1 鏃犲紩鍙峰紑濮嬨�戙��2 鍗曞紩鍙峰紑濮嬨�戙��3 鍙屽紩鍙峰紑濮嬨��
+            /// </summary>
+            internal int keyStart = 0;
+            /// <summary>
+            /// 銆�-1 鍙栧�肩粨鏉熴�戙��0 鏈紑濮嬨�戙��1 鏃犲紩鍙峰紑濮嬨�戙��2 鍗曞紩鍙峰紑濮嬨�戙��3 鍙屽紩鍙峰紑濮嬨��
+            /// </summary>
+            internal int valueStart = 0;
+            internal bool isError = false;//鏄惁璇硶閿欒銆�
+
+            internal void CheckIsError(char c)//鍙綋鎴愪竴绾у鐞嗭紙鍥犱负GetLength浼氶�掑綊鍒版瘡涓�涓瓙椤瑰鐞嗭級
+            {
+                if (keyStart > 1 || valueStart > 1)
+                {
+                    return;
+                }
+                //绀轰緥 ["aa",{"bbbb":123,"fff","ddd"}] 
+                switch (c)
+                {
+                    case '{'://[{ "[{A}]":[{"[{B}]":3,"m":"C"}]}]
+                        isError = jsonStart && state == 0;//閲嶅寮�濮嬮敊璇� 鍚屾椂涓嶆槸鍊煎鐞嗐��
+                        break;
+                    case '}':
+                        isError = !jsonStart || (keyStart != 0 && state == 0);//閲嶅缁撴潫閿欒 鎴栬�� 鎻愬墠缁撴潫{"aa"}銆傛甯哥殑鏈墈}
+                        break;
+                    case '[':
+                        isError = arrayStart && state == 0;//閲嶅寮�濮嬮敊璇�
+                        break;
+                    case ']':
+                        isError = !arrayStart || jsonStart;//閲嶅寮�濮嬮敊璇� 鎴栬�� Json 鏈粨鏉�
+                        break;
+                    case '"':
+                    case '\'':
+                        isError = !(jsonStart || arrayStart); //json 鎴栨暟缁勫紑濮嬨��
+                        if (!isError)
+                        {
+                            //閲嶅寮�濮� [""",{"" "}]
+                            isError = (state == 0 && keyStart == -1) || (state == 1 && valueStart == -1);
+                        }
+                        if (!isError && arrayStart && !jsonStart && c == '\'')//['aa',{}]
+                        {
+                            isError = true;
+                        }
+                        break;
+                    case ':':
+                        isError = !jsonStart || state == 1;//閲嶅鍑虹幇銆�
+                        break;
+                    case ',':
+                        isError = !(jsonStart || arrayStart); //json 鎴栨暟缁勫紑濮嬨��
+                        if (!isError)
+                        {
+                            if (jsonStart)
+                            {
+                                isError = state == 0 || (state == 1 && valueStart > 1);//閲嶅鍑虹幇銆�
+                            }
+                            else if (arrayStart)//["aa,] [,]  [{},{}]
+                            {
+                                isError = keyStart == 0 && !setDicValue;
+                            }
+                        }
+                        break;
+                    case ' ':
+                    case '\r':
+                    case '\n'://[ "a",\r\n{} ]
+                    case '\0':
+                    case '\t':
+                        break;
+                    default: //鍊煎紑澶淬�傘��
+                        isError = (!jsonStart && !arrayStart) || (state == 0 && keyStart == -1) || (valueStart == -1 && state == 1);//
+                        break;
+                }
+                //if (isError)
+                //{
+
+                //}
+            }
+        }
+        /// <summary>
+        /// 璁剧疆瀛楃鐘舵��(杩斿洖true鍒欎负鍏抽敭璇嶏紝杩斿洖false鍒欏綋涓烘櫘閫氬瓧绗﹀鐞嗭級 qy 2024-7-15
+        /// </summary>
+        private static bool SetCharState(char c, ref CharState cs)
+        {
+            cs.CheckIsError(c);
+            switch (c)
+            {
+                case '{'://[{ "[{A}]":[{"[{B}]":3,"m":"C"}]}]
+                    #region 澶ф嫭鍙�
+                    if (cs.keyStart <= 0 && cs.valueStart <= 0)
+                    {
+                        cs.keyStart = 0;
+                        cs.valueStart = 0;
+                        if (cs.jsonStart && cs.state == 1)
+                        {
+                            cs.childrenStart = true;
+                        }
+                        else
+                        {
+                            cs.state = 0;
+                        }
+                        cs.jsonStart = true;//寮�濮嬨��
+                        return true;
+                    }
+                    #endregion
+                    break;
+                case '}':
+                    #region 澶ф嫭鍙风粨鏉�
+                    if (cs.keyStart <= 0 && cs.valueStart < 2 && cs.jsonStart)
+                    {
+                        cs.jsonStart = false;//姝e父缁撴潫銆�
+                        cs.state = 0;
+                        cs.keyStart = 0;
+                        cs.valueStart = 0;
+                        cs.setDicValue = true;
+                        return true;
+                    }
+                    // cs.isError = !cs.jsonStart && cs.state == 0;
+                    #endregion
+                    break;
+                case '[':
+                    #region 涓嫭鍙峰紑濮�
+                    if (!cs.jsonStart)
+                    {
+                        cs.arrayStart = true;
+                        return true;
+                    }
+                    else if (cs.jsonStart && cs.state == 1)
+                    {
+                        cs.childrenStart = true;
+                        return true;
+                    }
+                    #endregion
+                    break;
+                case ']':
+                    #region 涓嫭鍙风粨鏉�
+                    if (cs.arrayStart && !cs.jsonStart && cs.keyStart <= 2 && cs.valueStart <= 0)//[{},333]//杩欐牱缁撴潫銆�
+                    {
+                        cs.keyStart = 0;
+                        cs.valueStart = 0;
+                        cs.arrayStart = false;
+                        return true;
+                    }
+                    #endregion
+                    break;
+                case '"':
+                case '\'':
+                    #region 寮曞彿
+                    if (cs.jsonStart || cs.arrayStart)
+                    {
+                        if (cs.state == 0)//key闃舵,鏈夊彲鑳芥槸鏁扮粍["aa",{}]
+                        {
+                            if (cs.keyStart <= 0)
+                            {
+                                cs.keyStart = (c == '"' ? 3 : 2);
+                                return true;
+                            }
+                            else if ((cs.keyStart == 2 && c == '\'') || (cs.keyStart == 3 && c == '"'))
+                            {
+                                if (!cs.escapeChar)
+                                {
+                                    cs.keyStart = -1;
+                                    return true;
+                                }
+                                else
+                                {
+                                    cs.escapeChar = false;
+                                }
+                            }
+                        }
+                        else if (cs.state == 1 && cs.jsonStart)//鍊奸樁娈靛繀椤绘槸Json寮�濮嬩簡銆�
+                        {
+                            if (cs.valueStart <= 0)
+                            {
+                                cs.valueStart = (c == '"' ? 3 : 2);
+                                return true;
+                            }
+                            else if ((cs.valueStart == 2 && c == '\'') || (cs.valueStart == 3 && c == '"'))
+                            {
+                                if (!cs.escapeChar)
+                                {
+                                    cs.valueStart = -1;
+                                    return true;
+                                }
+                                else
+                                {
+                                    cs.escapeChar = false;
+                                }
+                            }
+
+                        }
+                    }
+                    #endregion
+                    break;
+                case ':':
+                    #region 鍐掑彿
+                    if (cs.jsonStart && cs.keyStart < 2 && cs.valueStart < 2 && cs.state == 0)
+                    {
+                        if (cs.keyStart == 1)
+                        {
+                            cs.keyStart = -1;
+                        }
+                        cs.state = 1;
+                        return true;
+                    }
+                    // cs.isError = !cs.jsonStart || (cs.keyStart < 2 && cs.valueStart < 2 && cs.state == 1);
+                    #endregion
+                    break;
+                case ',':
+                    #region 閫楀彿 //["aa",{aa:12,}]
+
+                    if (cs.jsonStart)
+                    {
+                        if (cs.keyStart < 2 && cs.valueStart < 2 && cs.state == 1)
+                        {
+                            cs.state = 0;
+                            cs.keyStart = 0;
+                            cs.valueStart = 0;
+                            //if (cs.valueStart == 1)
+                            //{
+                            //    cs.valueStart = 0;
+                            //}
+                            cs.setDicValue = true;
+                            return true;
+                        }
+                    }
+                    else if (cs.arrayStart && cs.keyStart <= 2)
+                    {
+                        cs.keyStart = 0;
+                        //if (cs.keyStart == 1)
+                        //{
+                        //    cs.keyStart = -1;
+                        //}
+                        return true;
+                    }
+                    #endregion
+                    break;
+                case ' ':
+                case '\r':
+                case '\n'://[ "a",\r\n{} ]
+                case '\0':
+                case '\t':
+                    if (cs.keyStart <= 0 && cs.valueStart <= 0) //cs.jsonStart && 
+                    {
+                        return true;//璺宠繃绌烘牸銆�
+                    }
+                    break;
+                default: //鍊煎紑澶淬�傘��
+                    if (c == '\\') //杞箟绗﹀彿
+                    {
+                        if (cs.escapeChar)
+                        {
+                            cs.escapeChar = false;
+                        }
+                        else
+                        {
+                            cs.escapeChar = true;
+                            return true;
+                        }
+                    }
+                    else
+                    {
+                        cs.escapeChar = false;
+                    }
+                    if (cs.jsonStart || cs.arrayStart) // Json 鎴栨暟缁勫紑濮嬩簡銆�
+                    {
+                        if (cs.keyStart <= 0 && cs.state == 0)
+                        {
+                            cs.keyStart = 1;//鏃犲紩鍙风殑
+                        }
+                        else if (cs.valueStart <= 0 && cs.state == 1 && cs.jsonStart)//鍙湁Json寮�濮嬫墠鏈夊�笺��
+                        {
+                            cs.valueStart = 1;//鏃犲紩鍙风殑
+                        }
+                    }
+                    break;
+            }
+            return false;
+        }
+
+        #endregion
+
+        public static LinqExpressionType GetLinqCondition(this string stringType)
+        {
+            LinqExpressionType linqExpression;
+            switch (stringType)
+            {
+                case HtmlElementType.Contains:
+                    linqExpression = LinqExpressionType.In;
+                    break;
+                case HtmlElementType.ThanOrEqual:
+                    linqExpression = LinqExpressionType.ThanOrEqual;
+                    break;
+                case HtmlElementType.LessOrequal:
+                    linqExpression = LinqExpressionType.LessThanOrEqual;
+                    break;
+                case HtmlElementType.GT:
+                    linqExpression = LinqExpressionType.GreaterThan;
+                    break;
+                case HtmlElementType.lt:
+                    linqExpression = LinqExpressionType.LessThan;
+                    break;
+                case HtmlElementType.like:
+                    linqExpression = LinqExpressionType.Contains;
+                    break;
+                default:
+                    linqExpression = LinqExpressionType.Equal;
+                    break;
+            }
+            return linqExpression;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/HostedService/PermissionDataHostService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/HostedService/PermissionDataHostService.cs"
new file mode 100644
index 0000000..0ca0a50
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/HostedService/PermissionDataHostService.cs"
@@ -0,0 +1,200 @@
+锘�//using HslCommunication.WebSocket;
+//using Microsoft.Extensions.Hosting;
+//using SqlSugar;
+//using System;
+//using System.Collections.Generic;
+//using System.Dynamic;
+//using System.Linq;
+//using System.Text;
+//using System.Threading.Tasks;
+//using WIDESEA_Core.Helper;
+//using WIDESEA_Core.Seed;
+//using ICacheService = WIDESEA_Core.Caches.ICacheService;
+
+//namespace WIDESEA_Core.HostedService
+//{
+//    public class PermissionDataHostService : IHostedService
+//    {
+//        private readonly DBContext _dbContext;
+//        private readonly ICacheService _cacheService;
+//        private readonly WebSocketServer _server;
+
+//        public static List<UserRole> UserRoles;
+
+//        public PermissionDataHostService(DBContext dbContext, ICacheService cacheService, WebSocketServer server)
+//        {
+//            _dbContext = dbContext;
+//            _cacheService = cacheService;
+//            _server = server;
+//        }
+
+//        public Task StartAsync(CancellationToken cancellationToken)
+//        {
+//            List<UserRole> userRoles = GetUserRoles(_dbContext.Db);
+//            UserRoles = userRoles;
+//            _cacheService.AddOrUpdate("UserRoles", userRoles.Serialize());
+
+//            return Task.CompletedTask;
+//        }
+
+//        public Task StopAsync(CancellationToken cancellationToken)
+//        {
+//            throw new NotImplementedException();
+//        }
+
+//        public static List<UserRole> GetUserRoles(ISqlSugarClient db)
+//        {
+//            List<ExpandoObject> roles = db.Queryable("Sys_Role", "x").Select(RoleSelectModes).ToList();
+//            List<dynamic> roleDynamics = new List<dynamic>();
+//            foreach (var item in roles)
+//            {
+//                roleDynamics.Add(item);
+//            }
+
+//            List<dynamic> roleDataDynamics = new List<dynamic>();
+//            List<ExpandoObject> roleDatas = db.Queryable("Sys_RoleDataPermission", "x").Select(RoleDataSelectModes).ToList();
+//            foreach (var item in roleDatas)
+//            {
+//                roleDataDynamics.Add(item);
+//            }
+
+//            List<ExpandoObject> users = db.Queryable("Sys_User", "x").Select(UserSelectModes).ToList();
+
+//            List<UserRole> userRoles = new List<UserRole>();
+//            foreach (var item in users)
+//            {
+//                dynamic user = item;
+//                dynamic? role = roleDynamics.FirstOrDefault(x => x.RoleId == user.RoleId);
+//                List<object> warehouseIds = roleDataDynamics.Where(x => x.RoleId == user.RoleId).Select(x => x.WarehouseId).ToList();
+//                List<int> ids = new List<int>();
+//                for (int i = 0; i < warehouseIds.Count; i++)
+//                {
+//                    ids.Add(Convert.ToInt32(warehouseIds[i]));
+//                }
+//                if (role != null)
+//                {
+//                    userRoles.Add(new UserRole
+//                    {
+//                        RoleId = role.RoleId,
+//                        RoleName = role.RoleName,
+//                        ParentId = role.ParentId,
+//                        UserId = user.UserId,
+//                        UserName = user.UserName,
+//                        WarehouseIds = ids
+//                    });
+//                }
+//            }
+//            return userRoles;
+//        }
+
+//        public static List<UserRole> GetUserRoles(ISqlSugarClient db, int userId)
+//        {
+//            List<ExpandoObject> roles = db.Queryable("Sys_Role", "x").Select(RoleSelectModes).ToList();
+//            List<dynamic> roleDynamics = new List<dynamic>();
+//            foreach (var item in roles)
+//            {
+//                roleDynamics.Add(item);
+//            }
+
+//            List<dynamic> roleDataDynamics = new List<dynamic>();
+//            List<ExpandoObject> roleDatas = db.Queryable("Sys_RoleDataPermission", "x").Select(RoleDataSelectModes).ToList();
+//            foreach (var item in roleDatas)
+//            {
+//                roleDataDynamics.Add(item);
+//            }
+
+//            List<ExpandoObject> users = db.Queryable("Sys_User", "x").Where($"UserId={userId}").Select(UserSelectModes).ToList();
+
+//            List<UserRole> userRoles = new List<UserRole>();
+//            foreach (var item in users)
+//            {
+//                dynamic user = item;
+//                dynamic? role = roleDynamics.FirstOrDefault(x => x.RoleId == user.RoleId);
+//                List<object> warehouseIds = roleDataDynamics.Where(x => x.RoleId == user.RoleId).Select(x => x.WarehouseId).ToList();
+//                List<int> ids = new List<int>();
+//                for (int i = 0; i < warehouseIds.Count; i++)
+//                {
+//                    ids.Add(Convert.ToInt32(warehouseIds[i]));
+//                }
+//                if (role != null)
+//                {
+//                    userRoles.Add(new UserRole
+//                    {
+//                        RoleId = role.RoleId,
+//                        RoleName = role.RoleName,
+//                        ParentId = role.ParentId,
+//                        UserId = user.UserId,
+//                        UserName = user.UserName,
+//                        WarehouseIds = ids
+//                    });
+//                }
+//            }
+//            return userRoles;
+//        }
+
+//        static List<SelectModel> RoleSelectModes = new List<SelectModel>()
+//        {
+//            new SelectModel()
+//            {
+//                 FieldName = "RoleId",
+//            },
+//            new SelectModel()
+//            {
+//                 FieldName = "ParentId",
+//            },
+//            new SelectModel()
+//            {
+//                 FieldName = "RoleName",
+//            },
+//        };
+
+//        static List<SelectModel> UserSelectModes = new List<SelectModel>()
+//        {
+//            new SelectModel()
+//            {
+//                 FieldName = "UserId",
+//            },
+//            new SelectModel()
+//            {
+//                 FieldName = "UserName",
+//            },
+//            new SelectModel()
+//            {
+//                 FieldName = "RoleId",
+//            },
+//            new SelectModel()
+//            {
+//                 FieldName = "RoleName",
+//            }
+//        };
+
+//        static List<SelectModel> RoleDataSelectModes = new List<SelectModel>()
+//        {
+//            new SelectModel()
+//            {
+//                 FieldName = "RoleId",
+//            },
+//            new SelectModel()
+//            {
+//                 FieldName = "WarehouseId",
+//            }
+//        };
+//    }
+
+//    public class UserRole
+//    {
+//        public int UserId { get; set; }
+
+//        public int RoleId { get; set; }
+
+//        public string RoleName { get; set; }
+
+//        public string UserName { get; set; }
+
+//        public int ParentId { get; set; }
+
+//        public int AuthorityScope { get; set; }
+
+//        public List<int> WarehouseIds { get; set; }
+//    }
+//}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/HostedService/SeedDataHostedService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/HostedService/SeedDataHostedService.cs"
new file mode 100644
index 0000000..9d96422
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/HostedService/SeedDataHostedService.cs"
@@ -0,0 +1,63 @@
+锘縰sing HslCommunication.WebSocket;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Logging;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Seed;
+
+namespace WIDESEA_Core
+{
+    public sealed class SeedDataHostedService : IHostedService
+        {
+            private readonly DBContext _dbContext;
+        private readonly ILogger<SeedDataHostedService> _logger;
+        private readonly string _webRootPath;
+
+        public SeedDataHostedService(IServiceProvider serviceProvider, IWebHostEnvironment webHostEnvironment, ILogger<SeedDataHostedService> logger, DBContext dbContext)
+        {
+            _logger = logger;
+            _webRootPath = webHostEnvironment.WebRootPath;
+            _dbContext = dbContext;
+        }
+
+        public Task StartAsync(CancellationToken cancellationToken)
+        {
+            _logger.LogInformation("Start Initialization Db Seed Service!");
+            DoWork();
+            return Task.CompletedTask;
+        }
+
+        private void DoWork()
+        {
+            try
+            {
+                if (AppSettings.GetValue("DBSeedEnable").ObjToBool())
+                {
+
+                    DBSeed.SeedAsync(_dbContext, _webRootPath);
+
+                    //澶氱鎴� 鍚屾
+                    //await DBSeed.TenantSeedAsync(_dbContext);
+                }
+            }
+            catch (Exception ex)
+            {
+                _logger.LogError(ex, "Error occured seeding the Database.");
+                throw;
+            }
+        }
+
+        public Task StopAsync(CancellationToken cancellationToken)
+        {
+            _logger.LogInformation("Stop Initialization Db Seed Service!");
+            return Task.CompletedTask;
+        }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/AspNetUser.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/AspNetUser.cs"
new file mode 100644
index 0000000..da7b185
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/AspNetUser.cs"
@@ -0,0 +1,188 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.IdentityModel.Tokens.Jwt;
+using System.Linq;
+using System.Security.Claims;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Extensions;
+using WIDESEA_Core.Helper;
+using ICacheService = WIDESEA_Core.Caches.ICacheService;
+
+namespace WIDESEA_Core.HttpContextUser
+{
+    public class AspNetUser : IUser
+    {
+        private readonly IHttpContextAccessor _accessor;
+        private readonly ICacheService _cacheService;
+        //private readonly ILogger<AspNetUser> _logger;
+
+        public AspNetUser(IHttpContextAccessor accessor, ICacheService cacheService)
+        {
+            _accessor = accessor;
+            _cacheService = cacheService;
+            /*_logger = logger;*/
+        }
+
+        public string UserName => GetUserInfoFromToken(ClaimTypes.Name).FirstOrDefault() ?? "";
+
+        public int UserId => GetClaimValueByType(JwtRegisteredClaimNames.Jti) == null ? 0 : GetClaimValueByType(JwtRegisteredClaimNames.Jti).FirstOrDefault()?.ObjToInt() ?? 0;
+
+        public long TenantId => GetUserInfoFromToken(nameof(TenantId)).FirstOrDefault()?.ObjToLong() ?? -1;
+
+        public int RoleId => GetUserInfoFromToken(ClaimTypes.Role).FirstOrDefault()?.ObjToInt() ?? 0;
+
+        public string Token => GetToken();
+
+        public int MenuType => (_accessor.HttpContext?.Request.Headers.ContainsKey("uniapp") ?? false) ? 1 : 0;
+
+        public bool IsAuthenticated()
+        {
+            return _accessor.HttpContext?.User?.Identity?.IsAuthenticated ?? false;
+        }
+
+        public string GetToken()
+        {
+            string token = _accessor.HttpContext?.Request?.Headers["Authorization"].ObjToString().Replace("Bearer ", "") ?? "";
+            if (!token.IsNullOrEmpty())
+            {
+                return token;
+            }
+            if (_accessor.HttpContext?.IsSuccessSwagger() == true)
+            {
+                token = _accessor.HttpContext.GetSuccessSwaggerJwt();
+                if (token.IsNotEmptyOrNull())
+                {
+                    //UserInfo userInfo = JwtHelper.SerializeJwt(token);
+                    //if (userInfo.UserId > 0)
+                    //{
+                    //    return token;
+                    //}
+                    List<Claim> claims1 = _accessor.HttpContext.User.Claims.ToList();
+                    if (_accessor.HttpContext.User.Claims.Any(s => s.Type == JwtRegisteredClaimNames.Jti))
+                    {
+                        return token;
+                    }
+
+                    var claims = new ClaimsIdentity(GetClaimsIdentity(token));
+                    _accessor.HttpContext.User.AddIdentity(claims);
+                    return token;
+                }
+            }
+
+            if (MenuType == 0)
+            {
+                token = _cacheService.Get(UserId.ToString());
+                if (!string.IsNullOrEmpty(token)) { return token; }
+                return token;
+            }
+            else
+            {
+                token = _cacheService.Get(UserId.ToString() + "-App");
+                if (!string.IsNullOrEmpty(token)) { return token; }
+                return token;
+            }
+        }
+
+        public void UpdateToke(string token)
+        {
+            if (MenuType == 0)
+                _cacheService.AddOrUpdate(UserId.ToString(), token);
+            else
+                _cacheService.AddOrUpdate(UserId.ToString() + "-App", token);
+        }
+
+        public void UpdateToke(string token, int userId)
+        {
+            if (MenuType == 0)
+                _cacheService.AddOrUpdate(userId.ToString(), token);
+            else
+                _cacheService.AddOrUpdate(userId.ToString() + "-App", token);
+        }
+
+        public bool IsSuperAdmin => IsRoleIdSuperAdmin(RoleId);
+
+        public bool IsHighestRole => UserId == 1;
+
+        public List<string> GetUserInfoFromToken(string ClaimType)
+        {
+            var jwtHandler = new JwtSecurityTokenHandler();
+            var token = "";
+
+            token = GetToken();
+            // token鏍¢獙
+            if (token.IsNotEmptyOrNull() && jwtHandler.CanReadToken(token))
+            {
+                JwtSecurityToken jwtToken = jwtHandler.ReadJwtToken(token);
+
+                List<string> items = (from item in jwtToken.Claims
+                                      where item.Type == ClaimType
+                                      select item.Value).ToList();
+                return items;
+            }
+
+            return new List<string>() { };
+        }
+
+        public IEnumerable<Claim> GetClaimsIdentity()
+        {
+            if (_accessor.HttpContext != null)
+            {
+                var claims = _accessor.HttpContext.User.Claims.ToList();
+                var headers = _accessor.HttpContext.Request.Headers;
+                foreach (var header in headers)
+                {
+                    claims.Add(new Claim(header.Key, header.Value));
+                }
+
+                return claims;
+            }
+            return ArraySegment<Claim>.Empty;
+        }
+
+        public IEnumerable<Claim> GetClaimsIdentity(string token)
+        {
+            var jwtHandler = new JwtSecurityTokenHandler();
+            // token鏍¢獙
+            if (token.IsNotEmptyOrNull() && jwtHandler.CanReadToken(token))
+            {
+                var jwtToken = jwtHandler.ReadJwtToken(token);
+
+                return jwtToken.Claims;
+            }
+
+            return new List<Claim>();
+        }
+
+        public List<string> GetClaimValueByType(string ClaimType)
+        {
+            return (from item in GetClaimsIdentity()
+                    where item.Type == ClaimType
+                    select item.Value).ToList();
+        }
+
+        public bool IsRoleIdSuperAdmin(int roleId)
+        {
+            return roleId == 1;
+        }
+    }
+
+    public class UserInfo
+    {
+        public long TenantId { get; set; }
+
+        public int RoleId { get; set; }
+
+        public string UserName { get; set; }
+
+        public int UserId { get; set; }
+
+        public string UserTrueName { get; set; }
+
+        public string HeadImageUrl { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/IUser.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/IUser.cs"
new file mode 100644
index 0000000..db4d27b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/IUser.cs"
@@ -0,0 +1,57 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Security.Claims;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.HttpContextUser
+{
+    public interface IUser
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        string UserName { get; }
+
+        /// <summary>
+        /// UserId
+        /// </summary>
+        int UserId { get; }
+
+        /// <summary>
+        /// 绉熸埛ID
+        /// </summary>
+        long TenantId { get; }
+
+        int RoleId { get; }
+
+        string Token { get; }
+
+        int MenuType { get; }
+
+        void UpdateToke(string token);
+
+        void UpdateToke(string token, int userId);
+
+        /// <summary>
+        /// 鏄惁璁よ瘉
+        /// </summary>
+        /// <returns></returns>
+        bool IsAuthenticated();
+
+        IEnumerable<Claim> GetClaimsIdentity();
+
+        List<string> GetClaimValueByType(string ClaimType);
+
+        string GetToken();
+
+        List<string> GetUserInfoFromToken(string ClaimType);
+
+        bool IsSuperAdmin { get; }
+
+        bool IsHighestRole { get; }
+
+        bool IsRoleIdSuperAdmin(int roleId);
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/IDependency.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/IDependency.cs"
new file mode 100644
index 0000000..98e47b1
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/IDependency.cs"
@@ -0,0 +1,12 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core
+{
+    public interface IDependency
+    {
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/LogLock.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/LogLock.cs"
new file mode 100644
index 0000000..50da663
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/LogLock.cs"
@@ -0,0 +1,92 @@
+锘�
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.LogHelper
+{
+    public class LogLock
+    {
+        static ReaderWriterLockSlim LogWriteLock = new ReaderWriterLockSlim();
+        static int WritedCount = 0;
+        static int FailedCount = 0;
+        static string _contentRoot = string.Empty;
+
+        public LogLock(string contentPath)
+        {
+            _contentRoot = contentPath;
+        }
+
+        public static void OutLogAOP(string prefix, string[] dataParas, bool IsHeader = true)
+        {
+            OutSql2LogToFile(prefix, dataParas, IsHeader);
+        }
+
+        public static void OutSql2LogToFile(string prefix, string[] dataParas, bool IsHeader = true, bool isWrt = false)
+        {
+            try
+            {
+                //璁剧疆璇诲啓閿佷负鍐欏叆妯″紡鐙崰璧勬簮锛屽叾浠栧啓鍏ヨ姹傞渶瑕佺瓑寰呮湰娆″啓鍏ョ粨鏉熶箣鍚庢墠鑳界户缁啓鍏�
+                //娉ㄦ剰锛氶暱鏃堕棿鎸佹湁璇荤嚎绋嬮攣鎴栧啓绾跨▼閿佷細浣垮叾浠栫嚎绋嬪彂鐢熼ゥ楗� (starve)銆� 涓轰簡寰楀埌鏈�濂界殑鎬ц兘锛岄渶瑕佽�冭檻閲嶆柊鏋勯�犲簲鐢ㄧ▼搴忎互灏嗗啓璁块棶鐨勬寔缁椂闂村噺灏戝埌鏈�灏忋��
+                //      浠庢�ц兘鏂归潰鑰冭檻锛岃姹傝繘鍏ュ啓鍏ユā寮忓簲璇ョ揣璺熸枃浠舵搷浣滀箣鍓嶏紝鍦ㄦ澶勮繘鍏ュ啓鍏ユā寮忎粎鏄负浜嗛檷浣庝唬鐮佸鏉傚害
+                //      鍥犺繘鍏ヤ笌閫�鍑哄啓鍏ユā寮忓簲鍦ㄥ悓涓�涓猼ry finally璇彞鍧楀唴锛屾墍浠ュ湪璇锋眰杩涘叆鍐欏叆妯″紡涔嬪墠涓嶈兘瑙﹀彂寮傚父锛屽惁鍒欓噴鏀炬鏁板ぇ浜庤姹傛鏁板皢浼氳Е鍙戝紓甯�
+                LogWriteLock.EnterWriteLock();
+
+                var folderPath = Path.Combine(_contentRoot, "Log");
+                if (!Directory.Exists(folderPath))
+                {
+                    Directory.CreateDirectory(folderPath);
+                }
+                //string logFilePath = Path.Combine(path, $@"{filename}.log");
+                var logFilePath = FileHelper.GetAvailableFileWithPrefixOrderSize(folderPath, prefix);
+
+                var now = DateTime.Now;
+                string logContent = String.Join("\r\n", dataParas);
+                if (IsHeader)
+                {
+                    logContent = (
+                       "--------------------------------\r\n" +
+                       DateTime.Now + "|\r\n" +
+                       String.Join("\r\n", dataParas) + "\r\n"
+                       );
+                }
+                else
+                {
+                    logContent = (
+                       dataParas[1] + ",\r\n"
+                       );
+                }
+
+                //if (logContent.IsNotEmptyOrNull() && logContent.Length > 500)
+                //{
+                //    logContent = logContent.Substring(0, 500) + "\r\n";
+                //}
+                if (isWrt)
+                {
+                    System.IO.File.WriteAllText(logFilePath, logContent);
+                }
+                else
+                {
+                    System.IO.File.AppendAllText(logFilePath, logContent);
+                }
+                WritedCount++;
+            }
+            catch (Exception e)
+            {
+                //Console.Write(e.Message);
+                FailedCount++;
+            }
+            finally
+            {
+                //閫�鍑哄啓鍏ユā寮忥紝閲婃斁璧勬簮鍗犵敤
+                //娉ㄦ剰锛氫竴娆¤姹傚搴斾竴娆¢噴鏀�
+                //      鑻ラ噴鏀炬鏁板ぇ浜庤姹傛鏁板皢浼氳Е鍙戝紓甯竅鍐欏叆閿佸畾鏈粡淇濇寔鍗宠閲婃斁]
+                //      鑻ヨ姹傚鐞嗗畬鎴愬悗鏈噴鏀惧皢浼氳Е鍙戝紓甯竅姝ゆā寮忎笉涓嬪厑璁镐互閫掑綊鏂瑰紡鑾峰彇鍐欏叆閿佸畾]
+                LogWriteLock.ExitWriteLock();
+            }
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/Logger.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/Logger.cs"
new file mode 100644
index 0000000..d833379
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/Logger.cs"
@@ -0,0 +1,251 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using SqlSugar;
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.HttpContextUser;
+using WIDESEA_Core.Seed;
+
+namespace WIDESEA_Core.LogHelper
+{
+    public static class Logger
+    {
+        public static ConcurrentQueue<dynamic> loggerQueueData = new ConcurrentQueue<dynamic>();
+        static Logger()
+        {
+            Task.Run(() =>
+            {
+                StartWriteLog();
+            });
+
+        }
+
+        static void StartWriteLog()
+        {
+            DataTable queueTable = CreateEmptyTable();
+            while (true)
+            {
+                try
+                {
+                    //濡傛灉闃熷垪涓湁鏁版嵁涓旈槦鍒楄〃涓殑琛屾暟灏忎簬500锛屽垯灏嗛槦鍒椾腑鐨勬暟鎹啓鍏ラ槦鍒楄〃
+                    if (loggerQueueData.Count() > 0 && queueTable.Rows.Count < 500)
+                    {
+                        DequeueToTable(queueTable); continue;
+                    }
+                    //姣�5绉掑啓涓�娆℃暟鎹�
+                    Thread.Sleep(5000);
+
+                    //濡傛灉闃熷垪琛ㄤ腑鐨勮鏁颁负0锛屽垯璺宠繃鏈寰幆
+                    if (queueTable.Rows.Count == 0) { continue; }
+
+                    //鍒涘缓SqlSugarClient瀵硅薄锛岀敤浜庤繛鎺ユ暟鎹簱
+                    SqlSugarClient sugarClient = new SqlSugarClient(new ConnectionConfig()
+                    {
+                        ConnectionString = DBContext.GetMainConnectionDb().Connection,
+                        IsAutoCloseConnection = true,
+                        DbType = MainDb.DbType,
+                    });
+
+                    //灏嗛槦鍒楄〃涓殑鏁版嵁鎵归噺鎻掑叆鏁版嵁搴�
+                    int rows = sugarClient.Fastest<DataTable>().AS("Sys_Log").BulkCopy(queueTable);
+
+                    //娓呯┖闃熷垪琛�
+                    queueTable.Clear();
+                }
+                catch (Exception ex)
+                {
+                    //鎵撳嵃寮傚父淇℃伅
+                    Console.WriteLine(ex.ToString());
+                }
+            }
+        }
+
+        private static void DequeueToTable(DataTable queueTable)
+        {
+            loggerQueueData.TryDequeue(out dynamic log);
+            if (log != null)
+            {
+                DataRow row = queueTable.NewRow();
+                // 濡傛灉log鐨凚eginDate涓虹┖鎴栬�匓eginDate鐨勫勾浠藉皬浜�2010锛屽垯灏咮eginDate璁剧疆涓哄綋鍓嶆椂闂�
+                if (log.BeginDate == null || log.BeginDate?.Year < 2010)
+                {
+                    log.BeginDate = DateTime.Now;
+                }
+                // 濡傛灉log鐨凟ndDate涓虹┖锛屽垯灏咵ndDate璁剧疆涓哄綋鍓嶆椂闂�
+                if (log.EndDate == null)
+                {
+                    log.EndDate = DateTime.Now;
+                }
+                //  row["Id"] = log.Id;
+                // 灏哛equestParam涓殑鎹㈣绗︽浛鎹负绌哄瓧绗︿覆
+                row["RequestParam"] = log.RequestParam?.Replace("\r\n", "").Replace("\n", "");
+                // 灏哛esponseParam涓殑鎹㈣绗︽浛鎹负绌哄瓧绗︿覆
+                row["ResponseParam"] = log.ResponseParam?.Replace("\r\n", "").Replace("\n", "");
+                //row["Success"] = log.Success ?? -1;
+                // 灏咮eginDate璁剧疆涓簂og鐨凚eginDate
+                row["BeginDate"] = log.BeginDate;
+                // 灏咵ndDate璁剧疆涓簂og鐨凟ndDate
+                row["EndDate"] = log.EndDate;
+                // 璁$畻ElapsedTime锛屽嵆EndDate鍑忓幓BeginDate鐨勬绉掓暟
+                row["ElapsedTime"] = ((DateTime)log.EndDate - (DateTime)log.BeginDate).TotalMilliseconds;
+                // 灏哢serIP璁剧疆涓簂og鐨刄serIP
+                row["UserIP"] = log.UserIP;
+                // 灏哢rl璁剧疆涓簂og鐨刄rl
+                row["Url"] = log.Url;
+                // 濡傛灉log鐨刄serId涓虹┖锛屽垯灏哢serId璁剧疆涓�-1锛屽惁鍒欒缃负log鐨刄serId
+                row["UserId"] = log.UserId ?? -1;
+                // 灏哢serName璁剧疆涓簂og鐨刄serName
+                row["UserName"] = log.UserName;
+                // 灏唕ow娣诲姞鍒皅ueueTable涓�
+                queueTable.Rows.Add(row);
+            }
+        }
+
+        private static DataTable CreateEmptyTable()
+        {
+            DataTable queueTable = new DataTable();
+            queueTable.Columns.Add("BeginDate", Type.GetType("System.DateTime"));
+            queueTable.Columns.Add("ElapsedTime", Type.GetType("System.Int32"));
+            queueTable.Columns.Add("EndDate", Type.GetType("System.DateTime"));
+            queueTable.Columns.Add("RequestParam", typeof(string));
+            queueTable.Columns.Add("ResponseParam", typeof(string));
+            //queueTable.Columns.Add("Success", Type.GetType("System.Int32"));
+            queueTable.Columns.Add("Url", typeof(string));
+            queueTable.Columns.Add("UserIP", typeof(string));
+            queueTable.Columns.Add("UserName", typeof(string));
+            queueTable.Columns.Add("UserId", Type.GetType("System.Int32"));
+            //queueTable.Columns.Add("LogType", typeof(string));
+            //queueTable.Columns.Add("ExceptionInfo", typeof(string));
+            //queueTable.Columns.Add("ServiceIP", typeof(string));
+            //queueTable.Columns.Add("BrowserType", typeof(string));
+            //queueTable.Columns.Add("Role_Id", Type.GetType("System.Int32"));
+            return queueTable;
+        }
+
+        public static void Add(string requestParameter, string responseParameter)
+        {
+            dynamic log = null;
+            try
+            {
+                //鑾峰彇褰撳墠HttpContext
+                HttpContext context = App.HttpContext;
+                //濡傛灉HttpContext涓虹┖锛屽垯杩斿洖
+                if (context == null)
+                {
+                    return;
+                }
+                //濡傛灉璇锋眰鏂规硶涓篛PTIONS锛屽垯杩斿洖
+                if (context.Request.Method == "OPTIONS") return;
+                //鑾峰彇RequestLogModel瀹炰緥
+                RequestLogModel logModel = (context.RequestServices.GetService(typeof(RequestLogModel)) as RequestLogModel) ?? new RequestLogModel { RequestDate = DateTime.Now };
+
+                //鑾峰彇褰撳墠鐢ㄦ埛
+                IUser user = App.User;
+                //鍒涘缓鏃ュ織瀵硅薄
+                log = new
+                {
+                    //璇锋眰寮�濮嬫椂闂�
+                    BeginDate = logModel.RequestDate,
+                    //璇锋眰缁撴潫鏃堕棿
+                    EndDate = DateTime.Now,
+                    //璇锋眰鍙傛暟
+                    RequestParam = requestParameter,
+                    //鍝嶅簲鍙傛暟
+                    ResponseParam = responseParameter,
+                    //璇锋眰URL
+                    Url = context.Request.Scheme + "://" + context.Request.Host + context.Request.PathBase + context.Request.Path,
+                    //瀹㈡埛绔疘P
+                    UserIP = GetClientIP(context)?.Replace("::ffff:", "").Replace("::1", "127.0.0.1"),
+                    //鐢ㄦ埛ID
+                    UserId = user.UserId,
+                    //鐢ㄦ埛鍚�
+                    UserName = user.UserName
+                };
+            }
+            catch (Exception exception)
+            {
+                //濡傛灉鍙戠敓寮傚父锛屽垯鍒涘缓鏃ュ織瀵硅薄
+                log = log ?? new
+                {
+                    //璇锋眰寮�濮嬫椂闂�
+                    BeginDate = DateTime.Now,
+                    //璇锋眰缁撴潫鏃堕棿
+                    EndDate = DateTime.Now,
+                    //璇锋眰鍙傛暟
+                    RequestParam = requestParameter,
+                    //鍝嶅簲鍙傛暟
+                    ResponseParam = responseParameter,
+                };
+            }
+            //娣诲姞绯荤粺鏃ュ織
+            loggerQueueData.Enqueue(log);
+        }
+
+        public static void Add(string url, string requestParameter, string responseParameter, DateTime beginDate)
+        {
+            dynamic? log = null;
+            try
+            {
+                //鑾峰彇褰撳墠鐢ㄦ埛
+                IUser? user = App.User;
+                //鍒涘缓鏃ュ織瀵硅薄
+                log = new
+                {
+                    //璇锋眰寮�濮嬫椂闂�
+                    BeginDate = beginDate,
+                    //璇锋眰缁撴潫鏃堕棿
+                    EndDate = DateTime.Now,
+                    //璇锋眰鍙傛暟
+                    RequestParam = requestParameter,
+                    //鍝嶅簲鍙傛暟
+                    ResponseParam = responseParameter,
+                    //璇锋眰URL
+                    Url = url,
+                    //瀹㈡埛绔疘P
+                    UserIP = "",
+                    //鐢ㄦ埛ID
+                    UserId = user?.UserId,
+                    //鐢ㄦ埛鍚�
+                    UserName = user?.UserName
+                };
+            }
+            catch (Exception exception)
+            {
+                //濡傛灉鍙戠敓寮傚父锛屽垯鍒涘缓鏃ュ織瀵硅薄
+                log = log ?? new
+                {
+                    //璇锋眰寮�濮嬫椂闂�
+                    BeginDate = DateTime.Now,
+                    //璇锋眰缁撴潫鏃堕棿
+                    EndDate = DateTime.Now,
+                    //璇锋眰鍙傛暟
+                    RequestParam = requestParameter,
+                    //鍝嶅簲鍙傛暟
+                    ResponseParam = responseParameter,
+                };
+            }
+            //娣诲姞绯荤粺鏃ュ織
+            loggerQueueData.Enqueue(log);
+        }
+
+        public static string GetClientIP(HttpContext context)
+        {
+            // 鑾峰彇璇锋眰澶翠腑鐨刋-Forwarded-For瀛楁锛屽苟灏嗗叾杞崲涓哄瓧绗︿覆
+            var ip = context.Request.Headers["X-Forwarded-For"].ObjToString();
+            // 濡傛灉X-Forwarded-For瀛楁涓虹┖锛屽垯鑾峰彇杩滅▼IP鍦板潃
+            if (string.IsNullOrEmpty(ip))
+            {
+                ip = context.Connection.RemoteIpAddress.ObjToString();
+            }
+
+            // 杩斿洖IP鍦板潃
+            return ip;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/RequestLogModel.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/RequestLogModel.cs"
new file mode 100644
index 0000000..0404a69
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/RequestLogModel.cs"
@@ -0,0 +1,13 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.LogHelper
+{
+    public class RequestLogModel
+    {
+        public DateTime RequestDate { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/AllServicesMiddleware.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/AllServicesMiddleware.cs"
new file mode 100644
index 0000000..79eeb42
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/AllServicesMiddleware.cs"
@@ -0,0 +1,62 @@
+锘縰sing Autofac.Core;
+using Autofac.Extensions.DependencyInjection;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.Middlewares
+{
+    /// <summary>
+    /// 鏌ョ湅鎵�鏈夋敞鍏ョ殑鏈嶅姟
+    /// </summary>
+    public static class AllServicesMiddleware
+    {
+        public static void UseAllServicesMiddle(this IApplicationBuilder app, IServiceCollection _services)
+        {
+            if (app == null) throw new ArgumentNullException(nameof(app));
+
+            //List<Type> tsDIAutofac = new List<Type>();
+            //tsDIAutofac.AddRange(Assembly.LoadFrom(Path.Combine(AppContext.BaseDirectory, "Blog.Core.Services.dll")).GetTypes().ToList());
+            //tsDIAutofac.AddRange(Assembly.LoadFrom(Path.Combine(AppContext.BaseDirectory, "Blog.Core.Repository.dll")).GetTypes().ToList());
+
+            IEnumerable<IComponentRegistration> autofacContainers = (app.ApplicationServices.GetAutofacRoot())?.ComponentRegistry?.Registrations ?? new List<IComponentRegistration>();
+
+
+            app.Map("/allservices", builder => builder.Run(async context =>
+            {
+                context.Response.ContentType = "text/html; charset=utf-8";
+                await context.Response.WriteAsync("<style>.table2_1 table {width:100%;margin:15px 0}.table2_1 th {background-color:#93DAFF;color:#000000}.table2_1,.table2_1 th,.table2_1 td{font-size:0.95em;text-align:center;padding:4px;border:1px solid #c1e9fe;border-collapse:collapse}.table2_1 tr:nth-child(odd){background-color:#dbf2fe;}.table2_1 tr:nth-child(even){background-color:#fdfdfd;}</style>");
+
+                await context.Response.WriteAsync($"<h3>鎵�鏈夋湇鍔_services.Count}涓�</h3><table class='table2_1'><thead><tr><th>绫诲瀷</th><th>鐢熷懡鍛ㄦ湡</th><th>Instance</th></tr></thead><tbody>");
+
+                foreach (var svc in _services)
+                {
+                    await context.Response.WriteAsync("<tr>");
+                    await context.Response.WriteAsync($"<td>{svc.ServiceType.FullName}</td>");
+                    await context.Response.WriteAsync($"<td>{svc.Lifetime}</td>");
+                    await context.Response.WriteAsync($"<td>{svc.ImplementationType?.Name}</td>");
+                    await context.Response.WriteAsync("</tr>");
+                }
+                foreach (var item in autofacContainers?.ToList())
+                {
+                    var interfaceType = item.Services;
+                    foreach (var typeArray in interfaceType)
+                    {
+                        await context.Response.WriteAsync("<tr>");
+                        await context.Response.WriteAsync($"<td>{typeArray?.Description}</td>");
+                        await context.Response.WriteAsync($"<td>{item?.Lifetime}</td>");
+                        await context.Response.WriteAsync($"<td>{item?.Target.Activator.ObjToString().Replace("(ReflectionActivator)", "")}</td>");
+                        await context.Response.WriteAsync("</tr>");
+                    }
+                }
+                await context.Response.WriteAsync("</tbody></table>");
+            }));
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs"
new file mode 100644
index 0000000..eb48c1c
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs"
@@ -0,0 +1,163 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Logging;
+using Newtonsoft.Json;
+using Org.BouncyCastle.Asn1.Ocsp;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.LogHelper;
+
+namespace WIDESEA_Core.Middlewares
+{
+    /// <summary>
+    /// 璁板綍璇锋眰鍜屽搷搴旀暟鎹�
+    /// </summary>
+    public class ApiLogMiddleware
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        private readonly RequestDelegate _next;
+
+        public ApiLogMiddleware(RequestDelegate next, ILogger<ApiLogMiddleware> logger)
+        {
+            _next = next;
+        }
+
+        //todo
+        /// <summary>
+        /// API鏃ュ織涓棿浠讹紝鐢ㄤ簬澶勭悊HTTP璇锋眰鍜屽搷搴旂殑鏃ュ織璁板綍
+        /// </summary>
+        /// <remarks>
+        /// 1. 妫�鏌ョ郴缁熻繃鏈熸椂闂达紝鑻ヨ繃鏈熷垯杩斿洖500閿欒
+        /// 2. 浠呭鐞嗗寘鍚�"api"璺緞鐨勮姹�
+        /// 3. 璁板綍璇锋眰鍜屽搷搴旀暟鎹埌鏃ュ織绯荤粺
+        /// 4. 鏀寔閫氳繃閰嶇疆蹇界暐鐗瑰畾URL鐨勬棩蹇楄褰�
+        /// </remarks>
+        /// <param name="context">褰撳墠HTTP涓婁笅鏂�</param>
+        /// <returns>寮傛浠诲姟</returns>
+        public async Task InvokeAsync(HttpContext context)
+        {
+            if (App.ExpDateTime != null && (DateTime.Now - App.ExpDateTime.GetValueOrDefault()).TotalSeconds > 0)
+            {
+                context.Response.StatusCode = HttpStatusCode.InternalServerError.ObjToInt();
+                context.Response.ContentType = "application/json";
+
+                var json = new WebResponseContent();
+
+                json.Message = HttpStatusCode.InternalServerError.ToString();//閿欒淇℃伅
+                json.Code = 500;//500寮傚父 
+
+                StreamWriter streamWriter = new StreamWriter(context.Response.Body);
+                await streamWriter.WriteAsync(json.Serialize());
+                return;
+            }
+
+            // 杩囨护锛屽彧鏈夋帴鍙�
+            if (context.Request.Path.Value?.Contains("api") ?? false)
+            {
+                context.Request.EnableBuffering();
+                Stream originalBody = context.Response.Body;
+                string requestParam = string.Empty;
+                string responseParam = string.Empty;
+                try
+                {
+                    string? apiIgnore = AppSettings.GetValue("ApiLogIgnore")?.ToString();
+                    string[] ignoreUrls = !string.IsNullOrEmpty(apiIgnore) ? apiIgnore.Split(",") : new string[] { "get" };
+
+                    (context.RequestServices.GetService(typeof(RequestLogModel)) as RequestLogModel).RequestDate = DateTime.Now;
+                    try
+                    {
+                        // 瀛樺偍璇锋眰鏁版嵁
+                        requestParam = RequestDataLog(context);
+                        context.Request.Body.Position = 0;
+                    }
+                    catch { }
+                    using MemoryStream ms = new();
+                    context.Response.Body = ms;
+
+                    await _next(context);
+
+                    try
+                    {
+                        // 瀛樺偍鍝嶅簲鏁版嵁
+                        responseParam = ResponseDataLog(context.Response);
+                    }
+                    catch { }
+
+                    ms.Position = 0;
+                    await ms.CopyToAsync(originalBody);
+                    if (!((context.Request.Path.Value?.Contains("get")) ?? true) && !((context.Request.Path.Value?.Contains("Get")) ?? true) && !((context.Request.Path.Value?.Contains("query")) ?? true) && !((context.Request.Path.Value?.Contains("Query")) ?? true) && !((context.Request.Path.Value?.Contains("DownLoadApp")) ?? true) && !((context.Request.Path.Value?.Contains("downLoadApp")) ?? true) && !((context.Request.Path.Value?.Contains("UploadApp")) ?? true) && !((context.Request.Path.Value?.Contains("uploadApp")) ?? true))
+                        Logger.Add(requestParam, responseParam);
+
+                    //if (!ignoreUrls.Any(x => context.Request.Path.Value?.Contains(x) ?? false))
+                    //{
+                    //    Logger.Add(requestParam, responseParam);
+                    //}
+                }
+                catch (Exception ex)
+                {
+                    // 璁板綍寮傚父
+
+                }
+                finally
+                {
+                    context.Response.Body = originalBody;
+                }
+            }
+            else
+            {
+                await _next(context);
+            }
+        }
+
+        private string RequestDataLog(HttpContext context)
+        {
+            var request = context.Request;
+
+            var sr = new StreamReader(request.Body);
+
+            object obj;
+            string bodyData = sr.ReadToEndAsync().Result;
+            if (request.ContentLength <= 100000)
+            {
+                obj = new
+                {
+                    QueryString = request.QueryString.ToString(),
+                    BodyData = bodyData
+                };
+            }
+            else
+            {
+                obj = new
+                {
+                    QueryString = request.QueryString.ToString(),
+                    BodyData = ""
+                };
+            }
+            string data = JsonConvert.SerializeObject(obj);
+
+            request.Body.Position = 0;
+
+            return data; ;
+        }
+
+        private string ResponseDataLog(HttpResponse response)
+        {
+            if (response.ContentLength <= 100000)
+            {
+                response.Body.Position = 0;
+                using StreamReader stream = new StreamReader(response.Body, leaveOpen: true);
+                string body = stream.ReadToEnd();
+                response.Body.Position = 0;
+                return body;
+            }
+            return "";
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ExceptionHandlerMiddleware.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ExceptionHandlerMiddleware.cs"
new file mode 100644
index 0000000..33d8e0d
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ExceptionHandlerMiddleware.cs"
@@ -0,0 +1,59 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.DirectoryServices.Protocols;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Middlewares
+{
+    public class ExceptionHandlerMiddleware
+    {
+        private readonly RequestDelegate _next;
+
+        public ExceptionHandlerMiddleware(RequestDelegate next)
+        {
+            _next = next;
+        }
+
+        public async Task Invoke(HttpContext context)
+        {
+            try
+            {
+                await _next(context);
+            }
+            catch (Exception ex)
+            {
+                await HandleExceptionAsync(context, ex);
+            }
+        }
+
+        private async Task HandleExceptionAsync(HttpContext context, Exception e)
+        {
+            if (e == null) return;
+
+            await WriteExceptionAsync(context, e).ConfigureAwait(false);
+        }
+
+        private static async Task WriteExceptionAsync(HttpContext context, Exception e)
+        {
+            var message = e.Message;
+            switch (e)
+            {
+                case UnauthorizedAccessException:
+                    context.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
+                    break;
+                default:
+                    context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
+                    break;
+            }
+            context.Response.ContentType = "application/json";
+            await context.Response
+                .WriteAsync(JsonConvert.SerializeObject(WebResponseContent.Instance.Error(message)))
+                .ConfigureAwait(false);
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/HttpRequestMiddleware.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/HttpRequestMiddleware.cs"
new file mode 100644
index 0000000..deb4a6d
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/HttpRequestMiddleware.cs"
@@ -0,0 +1,25 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Middlewares
+{
+    public class HttpRequestMiddleware
+    {
+        private readonly RequestDelegate _next;
+
+        public HttpRequestMiddleware(RequestDelegate next)
+        {
+            _next = next;
+        }
+
+        public async Task InvokeAsync(HttpContext context)
+        {
+            context.Response.Headers.Add("Access-Control-Expose-Headers", "widesea_exp");
+            await _next(context);
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/IpLimitMiddleware.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/IpLimitMiddleware.cs"
new file mode 100644
index 0000000..279f7a4
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/IpLimitMiddleware.cs"
@@ -0,0 +1,40 @@
+锘�
+using Microsoft.AspNetCore.Builder;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.Middlewares
+{
+    /// <summary>
+    /// ip 闄愭祦
+    /// </summary>
+    public static class IpLimitMiddleware
+    {
+        /// <summary>
+        /// ip闄愭祦
+        /// </summary>
+        /// <param name="app"></param>
+        /// <exception cref="ArgumentNullException"></exception>
+        public static void UseIpLimitMiddle(this IApplicationBuilder app)
+        {
+            if (app == null) throw new ArgumentNullException(nameof(app));
+
+            //try
+            //{
+            //    if (AppSettings.app("Middleware", "IpRateLimit", "Enabled").ObjToBool())
+            //    {
+            //        app.UseIpRateLimiting();
+            //    }
+            //}
+            //catch (Exception e)
+            //{
+            //    Log.Error($"Error occured limiting ip rate.\n{e.Message}");
+            //    throw;
+            //}
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/JwtTokenAuthMiddleware.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/JwtTokenAuthMiddleware.cs"
new file mode 100644
index 0000000..ef95892
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/JwtTokenAuthMiddleware.cs"
@@ -0,0 +1,94 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Authorization;
+using WIDESEA_Core.HttpContextUser;
+
+namespace WIDESEA_Core.Middlewares
+{
+    /// <summary>
+    /// 涓棿浠�
+    /// 鍘熷仛涓鸿嚜瀹氫箟鎺堟潈涓棿浠�
+    /// 鍏堝仛妫�鏌� header token鐨勪娇鐢�
+    /// </summary>
+    public class JwtTokenAuthMiddleware
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        private readonly RequestDelegate _next;
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="next"></param>
+        public JwtTokenAuthMiddleware(RequestDelegate next)
+        {
+            _next = next;
+        }
+
+
+        private void PreProceed(HttpContext next)
+        {
+            //Console.WriteLine($"{DateTime.Now} middleware invoke preproceed");
+            //...
+        }
+        private void PostProceed(HttpContext next)
+        {
+            //Console.WriteLine($"{DateTime.Now} middleware invoke postproceed");
+            //....
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="httpContext"></param>
+        /// <returns></returns>
+        public Task Invoke(HttpContext httpContext)
+        {
+            PreProceed(httpContext);
+
+
+            //妫�娴嬫槸鍚﹀寘鍚�'Authorization'璇锋眰澶�
+            if (!httpContext.Request.Headers.ContainsKey("Authorization"))
+            {
+                PostProceed(httpContext);
+
+                return _next(httpContext);
+            }
+            //var tokenHeader = httpContext.Request.Headers["Authorization"].ToString();
+            var tokenHeader = httpContext.Request.Headers["Authorization"].ToString().Replace("Bearer ", "");
+
+            try
+            {
+                if (tokenHeader.Length >= 128)
+                {
+                    //Console.WriteLine($"{DateTime.Now} token :{tokenHeader}");
+                    UserInfo tm = JwtHelper.SerializeJwt(tokenHeader);
+
+                    //鎺堟潈
+                    //var claimList = new List<Claim>();
+                    //var claim = new Claim(ClaimTypes.Role, tm.Role);
+                    //claimList.Add(claim);
+                    //var identity = new ClaimsIdentity(claimList);
+                    //var principal = new ClaimsPrincipal(identity);
+                    //httpContext.User = principal;
+                }
+
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine($"{DateTime.Now} middleware wrong:{e.Message}");
+            }
+
+
+            PostProceed(httpContext);
+
+
+            return _next(httpContext);
+        }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/MiddlewareHelpers.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/MiddlewareHelpers.cs"
new file mode 100644
index 0000000..917faa5
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/MiddlewareHelpers.cs"
@@ -0,0 +1,42 @@
+锘縰sing Microsoft.AspNetCore.Builder;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Middlewares
+{
+    public static class MiddlewareHelpers
+    {
+        /// <summary>
+        /// 璇锋眰鍝嶅簲涓棿浠�
+        /// </summary>
+        /// <param name="app"></param>
+        /// <returns></returns>
+        public static IApplicationBuilder UseApiLogMiddleware(this IApplicationBuilder app)
+        {
+            return app.UseMiddleware<ApiLogMiddleware>();
+        }
+
+        /// <summary>
+        /// 鑷畾涔夋巿鏉冧腑闂翠欢
+        /// </summary>
+        /// <param name="app"></param>
+        /// <returns></returns>
+        public static IApplicationBuilder UseJwtTokenAuth(this IApplicationBuilder app)
+        {
+            return app.UseMiddleware<JwtTokenAuthMiddleware>();
+        }
+
+        /// <summary>
+        /// 寮傚父澶勭悊涓棿浠�
+        /// </summary>
+        /// <param name="app"></param>
+        /// <returns></returns>
+        public static IApplicationBuilder UseExceptionHandlerMiddle(this IApplicationBuilder app)
+        {
+            return app.UseMiddleware<ExceptionHandlerMiddleware>();
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/SwaggerAuthMiddleware.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/SwaggerAuthMiddleware.cs"
new file mode 100644
index 0000000..21c2606
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/SwaggerAuthMiddleware.cs"
@@ -0,0 +1,86 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Http;
+using WIDESEA_Core.Extensions;
+
+namespace WIDESEA_Core.Middlewares
+{
+    public class SwaggerAuthMiddleware
+    {
+
+        private readonly RequestDelegate next;
+
+        public SwaggerAuthMiddleware(RequestDelegate next)
+        {
+            this.next = next;
+        }
+
+        public async Task InvokeAsync(HttpContext context)
+        {
+            // 涔熷彲浠ユ牴鎹槸鍚︽槸鏈湴鍋氬垽鏂� IsLocalRequest
+            if (context.Request.Path.Value?.ToLower().Contains("index.html") ?? false)
+            {
+                // 鍒ゆ柇鏉冮檺鏄惁姝g‘
+                if (IsAuthorized(context))
+                {
+                    await next.Invoke(context);
+                    return;
+                }
+
+                // 鏃犳潈闄愶紝璺宠浆swagger鐧诲綍椤�
+                context.RedirectSwaggerLogin();
+            }
+            else
+            {
+                await next.Invoke(context);
+            }
+        }
+
+        /// <summary>
+        /// 妫�鏌ュ綋鍓岺TTP涓婁笅鏂囨槸鍚﹀凡閫氳繃Swagger璁よ瘉
+        /// </summary>
+        /// <param name="context">HTTP涓婁笅鏂囧璞�</param>
+        /// <returns>杩斿洖true琛ㄧず宸查�氳繃璁よ瘉锛宖alse琛ㄧず鏈�氳繃</returns>
+        public bool IsAuthorized(HttpContext context)
+        {
+            // 浣跨敤session妯″紡
+            // 鍙互浣跨敤鍏朵粬鐨�
+            return context.IsSuccessSwagger();
+        }
+
+        /// <summary>
+        /// 鍒ゆ柇鏄笉鏄湰鍦拌闂�
+        /// 鏈湴涓嶇敤swagger鎷︽埅
+        /// </summary>
+        /// <param name="context"></param>
+        /// <returns></returns>
+        public bool IsLocalRequest(HttpContext context)
+        {
+            if (context.Connection.RemoteIpAddress == null && context.Connection.LocalIpAddress == null)
+            {
+                return true;
+            }
+            if (context.Connection.RemoteIpAddress?.Equals(context.Connection.LocalIpAddress) ?? false)
+            {
+                return true;
+            }
+            if (IPAddress.IsLoopback(context.Connection.RemoteIpAddress))
+            {
+                return true;
+            }
+            return false;
+        }
+    }
+    public static class SwaggerAuthorizeExtensions
+    {
+        public static IApplicationBuilder UseSwaggerAuthorized(this IApplicationBuilder builder)
+        {
+            return builder.UseMiddleware<SwaggerAuthMiddleware>();
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/SwaggerMiddleware.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/SwaggerMiddleware.cs"
new file mode 100644
index 0000000..27c2a23
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/SwaggerMiddleware.cs"
@@ -0,0 +1,62 @@
+锘�
+using Microsoft.AspNetCore.Builder;
+using Swashbuckle.AspNetCore.SwaggerUI;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+using static WIDESEA_Core.Extensions.CustomApiVersion;
+
+namespace WIDESEA_Core.Middlewares
+{
+    /// <summary>
+    /// Swagger涓棿浠�
+    /// </summary>
+    public static class SwaggerMiddleware
+    {
+        /// <summary>
+        /// 閰嶇疆搴旂敤绋嬪簭浣跨敤Swagger涓棿浠�
+        /// </summary>
+        /// <param name="app">搴旂敤绋嬪簭鏋勫缓鍣�</param>
+        /// <param name="streamHtml">鐢ㄤ簬鑾峰彇鑷畾涔塖wagger棣栭〉HTML娴佺殑鍑芥暟</param>
+        /// <remarks>
+        /// 姝ゆ墿灞曟柟娉曢厤缃甋wagger UI锛屽寘鎷細
+        /// 1. 璁剧疆API鏂囨。绔偣
+        /// 2. 鑷畾涔夋枃妗f爣棰樺拰鏍峰紡
+        /// 3. 閰嶇疆鑷畾涔夐椤垫祦
+        /// 4. 璁剧疆鏂囨。灞曞紑琛屼负鍜岃矾鐢卞墠缂�
+        /// 濡傛灉streamHtml杩斿洖null锛屽皢鎶涘嚭寮傚父鎻愮ず闇�瑕佸皢index.html璁剧疆涓哄祵鍏ヨ祫婧�
+        /// </remarks>
+        public static void UseSwaggerMiddle(this IApplicationBuilder app, Func<Stream> streamHtml)
+        {
+            if (app == null) throw new ArgumentNullException(nameof(app));
+
+            app.UseSwagger();
+            app.UseSwaggerUI(c =>
+            {
+                //鏍规嵁鐗堟湰鍚嶇О鍊掑簭 閬嶅巻灞曠ず
+                var apiName = AppSettings.Get(new string[] { "ApiName" });
+                c.SwaggerEndpoint($"/swagger/v1/swagger.json", $"{apiName} v1");
+
+                // 灏唖wagger棣栭〉锛岃缃垚鎴戜滑鑷畾涔夌殑椤甸潰锛岃寰楄繖涓瓧绗︿覆鐨勫啓娉曪細{椤圭洰鍚�.index.html}
+                if (streamHtml.Invoke() == null)
+                {
+                    var msg = "index.html鐨勫睘鎬э紝蹇呴』璁剧疆涓哄祵鍏ョ殑璧勬簮";
+                    //Log.Error(msg);
+                    throw new Exception(msg);
+                }
+                c.DocumentTitle = $"{apiName} 鍦ㄧ嚎璋冭瘯鏂囨。";
+
+                c.InjectStylesheet("/css/swaggerdoc.css");
+                c.InjectJavascript("/js/swaggerdoc.js");
+                c.IndexStream = streamHtml;
+                c.DocExpansion(DocExpansion.None); //->淇敼鐣岄潰鎵撳紑鏃惰嚜鍔ㄦ姌鍙�
+
+                // 璺緞閰嶇疆锛岃缃负绌猴紝琛ㄧず鐩存帴鍦ㄦ牴鍩熷悕锛坙ocalhost:8001锛夎闂鏂囦欢,娉ㄦ剰localhost:8001/swagger鏄闂笉鍒扮殑锛屽幓launchSettings.json鎶妉aunchUrl鍘绘帀锛屽鏋滀綘鎯虫崲涓�涓矾寰勶紝鐩存帴鍐欏悕瀛楀嵆鍙紝姣斿鐩存帴鍐檆.RoutePrefix = "doc";
+                c.RoutePrefix = "";
+            });
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Seed/DBContext.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Seed/DBContext.cs"
new file mode 100644
index 0000000..14df465
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Seed/DBContext.cs"
@@ -0,0 +1,216 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.DB;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.Seed
+{
+    public class DBContext
+    {
+        private static MutiDBOperate connectObject => GetMainConnectionDb();
+        private static string _connectionString = connectObject.Connection;
+        private static DbType _dbType = (DbType)connectObject.DbType;
+        public static string ConnId = connectObject.ConnId;
+        private SqlSugarClient _db;
+
+        /// <summary>
+        /// 杩炴帴瀛楃涓� 
+        /// </summary>
+        public static MutiDBOperate GetMainConnectionDb()
+        {
+            MutiDBOperate mainDb = new MutiDBOperate()
+            {
+                Connection = AppSettings.Get(MainDb.ConnectionString).DecryptDES(AppSecret.DB),
+                ConnId = MainDb.CurrentDbConnId,
+                DbType = DataBaseType.SqlServer
+            };
+
+            return mainDb;
+        }
+        /// <summary>
+        /// 杩炴帴瀛楃涓� 
+        /// </summary>
+        public static string ConnectionString
+        {
+            get { return _connectionString; }
+            set { _connectionString = value; }
+        }
+        /// <summary>
+        /// 鏁版嵁搴撶被鍨� 
+        /// </summary>
+        public static DbType DbType
+        {
+            get { return _dbType; }
+            set { _dbType = value; }
+        }
+        /// <summary>
+        /// 鏁版嵁杩炴帴瀵硅薄 
+        /// </summary>
+        public SqlSugarClient Db
+        {
+            get { return _db; }
+            private set { _db = value; }
+        }
+
+        //public SqlSugarScope DbClient
+        //{
+        //    get { return _dbClient; }
+        //    private set { _dbClient = value; }
+        //}
+
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鏋勯�犲嚱鏁�
+        /// </summary>
+        public DBContext(ISqlSugarClient sqlSugarClient)
+        {
+            if (string.IsNullOrEmpty(_connectionString))
+                throw new ArgumentNullException("鏁版嵁搴撹繛鎺ュ瓧绗︿覆涓虹┖");
+
+            _db = sqlSugarClient as SqlSugarClient;
+            //_db.Aop.DataExecuting = SqlSugarAop.DataExecuting;
+        }
+
+        #region 瀹炰緥鏂规硶
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鑾峰彇鏁版嵁搴撳鐞嗗璞�
+        /// </summary>
+        /// <returns>杩斿洖鍊�</returns>
+        public SimpleClient<T> GetEntityDB<T>() where T : class, new()
+        {
+            return new SimpleClient<T>(_db);
+        }
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鑾峰彇鏁版嵁搴撳鐞嗗璞�
+        /// </summary>
+        /// <param name="db">db</param>
+        /// <returns>杩斿洖鍊�</returns>
+        //public SimpleClient<T> GetEntityDB<T>(SqlSugarClient db) where T : class, new()
+        //{
+        //    return new SimpleClient<T>(db);
+        //}
+
+
+
+        #endregion
+
+
+        #region 鏍规嵁瀹炰綋绫荤敓鎴愭暟鎹簱琛�
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鏍规嵁瀹炰綋绫荤敓鎴愭暟鎹簱琛�
+        /// </summary>
+        /// <param name="blnBackupTable">鏄惁澶囦唤琛�</param>
+        /// <param name="lstEntitys">鎸囧畾鐨勫疄浣�</param>
+        public void CreateTableByEntity<T>(bool blnBackupTable, params T[] lstEntitys) where T : class, new()
+        {
+            Type[] lstTypes = null;
+            if (lstEntitys != null)
+            {
+                lstTypes = new Type[lstEntitys.Length];
+                for (int i = 0; i < lstEntitys.Length; i++)
+                {
+                    T t = lstEntitys[i];
+                    lstTypes[i] = typeof(T);
+                }
+            }
+            CreateTableByEntity(blnBackupTable, lstTypes);
+        }
+
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鏍规嵁瀹炰綋绫荤敓鎴愭暟鎹簱琛�
+        /// </summary>
+        /// <param name="blnBackupTable">鏄惁澶囦唤琛�</param>
+        /// <param name="lstEntitys">鎸囧畾鐨勫疄浣�</param>
+        public void CreateTableByEntity(bool blnBackupTable, params Type[] lstEntitys)
+        {
+            if (blnBackupTable)
+            {
+                _db.CodeFirst.BackupTable().InitTables(lstEntitys); //change entity backupTable            
+            }
+            else
+            {
+                _db.CodeFirst.InitTables(lstEntitys);
+            }
+        }
+        #endregion
+
+
+        #region 闈欐�佹柟娉�
+
+        ///// <summary>
+        ///// 鍔熻兘鎻忚堪:鑾峰緱涓�涓狣bContext
+        ///// </summary>
+        ///// <returns></returns>
+        //public static MyContext GetDbContext()
+        //{
+        //    return new MyContext();
+        //}
+
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:璁剧疆鍒濆鍖栧弬鏁�
+        /// </summary>
+        /// <param name="strConnectionString">杩炴帴瀛楃涓�</param>
+        /// <param name="enmDbType">鏁版嵁搴撶被鍨�</param>
+        public static void Init(string strConnectionString, DbType enmDbType = SqlSugar.DbType.SqlServer)
+        {
+            _connectionString = strConnectionString;
+            _dbType = enmDbType;
+        }
+
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鍒涘缓涓�涓摼鎺ラ厤缃�
+        /// </summary>
+        /// <param name="blnIsAutoCloseConnection">鏄惁鑷姩鍏抽棴杩炴帴</param>
+        /// <param name="blnIsShardSameThread">鏄惁澶哥被浜嬪姟</param>
+        /// <returns>ConnectionConfig</returns>
+        public static ConnectionConfig GetConnectionConfig(bool blnIsAutoCloseConnection = true, bool blnIsShardSameThread = false)
+        {
+            ConnectionConfig config = new ConnectionConfig()
+            {
+                ConnectionString = _connectionString,
+                DbType = _dbType,
+                IsAutoCloseConnection = blnIsAutoCloseConnection,
+                ConfigureExternalServices = new ConfigureExternalServices()
+                {
+                    //DataInfoCacheService = new HttpRuntimeCache()
+                },
+                //IsShardSameThread = blnIsShardSameThread
+            };
+            return config;
+        }
+
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鑾峰彇涓�涓嚜瀹氫箟鐨凞B
+        /// </summary>
+        /// <param name="config">config</param>
+        /// <returns>杩斿洖鍊�</returns>
+        public static SqlSugarClient GetCustomDB(ConnectionConfig config)
+        {
+            return new SqlSugarClient(config);
+        }
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鑾峰彇涓�涓嚜瀹氫箟鐨勬暟鎹簱澶勭悊瀵硅薄
+        /// </summary>
+        /// <param name="sugarClient">sugarClient</param>
+        /// <returns>杩斿洖鍊�</returns>
+        public static SimpleClient<T> GetCustomEntityDB<T>(SqlSugarClient sugarClient) where T : class, new()
+        {
+            return new SimpleClient<T>(sugarClient);
+        }
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鑾峰彇涓�涓嚜瀹氫箟鐨勬暟鎹簱澶勭悊瀵硅薄
+        /// </summary>
+        /// <param name="config">config</param>
+        /// <returns>杩斿洖鍊�</returns>
+        public static SimpleClient<T> GetCustomEntityDB<T>(ConnectionConfig config) where T : class, new()
+        {
+            SqlSugarClient sugarClient = GetCustomDB(config);
+            return GetCustomEntityDB<T>(sugarClient);
+        }
+        #endregion
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Seed/DBSeed.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Seed/DBSeed.cs"
new file mode 100644
index 0000000..4a92f35
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Seed/DBSeed.cs"
@@ -0,0 +1,318 @@
+锘縰sing Castle.Components.DictionaryAdapter.Xml;
+using Microsoft.AspNetCore.Mvc.Rendering;
+using Newtonsoft.Json;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Dynamic;
+using System.Linq;
+using System.Net.Sockets;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.DB;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Core.Seed
+{
+    public class DBSeed
+    {
+        private static string SeedDataFolder = "WIDESEA_DB.DBSeed.Json/{0}.tsv";
+
+        /// <summary>
+        /// 寮傛娣诲姞绉嶅瓙鏁版嵁
+        /// </summary>
+        /// <param name="myContext"></param>
+        /// <param name="WebRootPath"></param>
+        /// <returns></returns>
+        public static void SeedAsync(DBContext dbContext, string WebRootPath)
+        {
+            try
+            {
+                if (string.IsNullOrEmpty(WebRootPath))
+                {
+                    throw new Exception("鑾峰彇wwwroot璺緞鏃讹紝寮傚父锛�");
+                }
+
+                SeedDataFolder = Path.Combine(WebRootPath, SeedDataFolder);
+
+                Console.WriteLine("************ WIDESEA DataBase Set *****************");
+
+                Console.WriteLine($"Master DB Type: {DBContext.DbType}");
+
+                Console.WriteLine();
+
+                // 鍒涘缓鏁版嵁搴�
+                Console.WriteLine($"Create Database(The Db Id:{DBContext.ConnId})...");
+
+                if (DBContext.DbType != SqlSugar.DbType.Oracle)
+                {
+                    dbContext.Db.DbMaintenance.CreateDatabase();
+                    ConsoleHelper.WriteSuccessLine($"Database Created Successfully!");
+                }
+                else
+                {
+                    //Oracle 鏁版嵁搴撲笉鏀寔璇ユ搷浣�
+                    ConsoleHelper.WriteSuccessLine($"Oracle 鏁版嵁搴撲笉鏀寔璇ユ搷浣滐紝鍙墜鍔ㄥ垱寤篛racle鏁版嵁搴�!");
+                }
+
+                // 鍒涘缓鏁版嵁搴撹〃锛岄亶鍘嗘寚瀹氬懡鍚嶇┖闂翠笅鐨刢lass锛�
+                // 娉ㄦ剰涓嶈鎶婂叾浠栧懡鍚嶇┖闂翠笅鐨勪篃娣诲姞杩涙潵銆�
+                Console.WriteLine("Create Tables...");
+
+                var path = AppDomain.CurrentDomain.RelativeSearchPath ?? AppDomain.CurrentDomain.BaseDirectory;
+                var referencedAssemblies = Directory.GetFiles(path, MainDb.AssemblyName).Select(Assembly.LoadFrom).ToArray();
+
+                var modelTypes = referencedAssemblies
+                    .SelectMany(a => a.DefinedTypes)
+                    .Select(type => type.AsType())
+                    .Where(x => x.IsClass && x.Namespace is MainDb.EntityNameSpace && x.GetCustomAttribute<SugarTable>() != null)
+                    .ToList();
+
+                modelTypes.ForEach(t =>
+                {
+                    //var diffString = dbContext.Db.CodeFirst.GetDifferenceTables(t).ToDiffString();
+                    // 杩欓噷鍙敮鎸佹坊鍔犺〃锛屼笉鏀寔鍒犻櫎
+                    // 濡傛灉鎯宠鍒犻櫎锛屾暟鎹簱鐩存帴鍙抽敭鍒犻櫎锛屾垨鑰呰仈绯籗qlSugar浣滆�咃紱
+                    IDbMaintenance dbMaintenance = dbContext.Db.DbMaintenance;
+                    if (!dbMaintenance.IsAnyTable(t.Name, false))
+                    {
+                        ConsoleHelper.WriteSuccessLine($"Table [{t.Name}] Created Successfully");
+                        dbContext.Db.CodeFirst.InitTables(t);
+
+                        string seedData = FileHelper.ReadFile(string.Format(SeedDataFolder, t.Name), Encoding.UTF8);
+
+                        #region AddSeedData
+                        if (seedData != "涓嶅瓨鍦ㄧ浉搴旂殑鐩綍")
+                        {
+                            List<Dictionary<string, object>>? dicFile = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(seedData);
+
+                            if (dicFile != null && dicFile.Count > 0)
+                            {
+                                List<Dictionary<string, object>> dic = new List<Dictionary<string, object>>();
+
+                                List<string> columnNames = dbContext.Db.DbMaintenance.GetColumnInfosByTableName(t.Name, false).Select(x => x.DbColumnName).ToList();
+                                var a = t.GetProperties().FirstOrDefault(x => !columnNames.Contains(x.Name));
+
+                                List<PropertyInfo> propertyInfos = t.GetProperties().Where(x => columnNames.Contains(x.Name)).ToList();
+                                for (int j = 0; j < dicFile.Count; j++)
+                                {
+                                    Dictionary<string, object> keyValuePairs = new Dictionary<string, object>();
+                                    for (int i = 0; i < propertyInfos.Count; i++)
+                                    {
+                                        PropertyInfo propertyInfo = propertyInfos[i];
+                                        SugarColumn? sugarColumn = propertyInfo.GetCustomAttribute<SugarColumn>();
+                                        if (sugarColumn != null)
+                                        {
+                                            if (!sugarColumn.IsIgnore)
+                                            {
+                                                keyValuePairs.Add(propertyInfo.Name, dicFile[j][propertyInfo.Name]);
+                                            }
+                                        }
+                                    }
+                                    dic.Add(keyValuePairs);
+                                }
+
+                                if (dic.Count > 0)
+                                {
+                                    for (int i = 0; i < dic.Count; i++)
+                                    {
+                                        if (dic[i].ContainsKey("CreateDate"))
+                                            dic[i]["CreateDate"] = DateTime.Now;
+                                        else
+                                            dic[i].Add("CreateDate", DateTime.Now);
+                                    }
+                                    string str = $"SET IDENTITY_INSERT {t.Name} ON;";
+
+                                    str += dbContext.Db.Insertable(dic).AS(t.Name).ToSqlString();
+
+                                    str += ($"SET IDENTITY_INSERT {t.Name} OFF;");
+
+                                    dbContext.Db.Ado.ExecuteCommand(str);
+
+                                    ConsoleHelper.WriteSuccessLine($"Table [{t.Name}] SeedData Added Successfully");
+                                }
+                            }
+                        }
+                        #endregion
+                    }
+                    else
+                    {
+                        List<string> columnNames = dbContext.Db.DbMaintenance.GetColumnInfosByTableName(t.Name, false).Select(x => x.DbColumnName).ToList();
+                        if (t.GetProperties().FirstOrDefault(x => !columnNames.Contains(x.Name)) != null)
+                        {
+                            bool isChange = true;
+                            List<PropertyInfo> propertyInfos = t.GetProperties().Where(x => !columnNames.Contains(x.Name)).ToList();
+                            for (int i = 0; i < propertyInfos.Count; i++)
+                            {
+                                PropertyInfo propertyInfo = propertyInfos[i];
+                                SugarColumn? sugarColumn = propertyInfo.GetCustomAttribute<SugarColumn>();
+                                if (sugarColumn != null)
+                                {
+                                    if (!sugarColumn.IsIgnore)
+                                    {
+                                        if (!sugarColumn.IsNullable)
+                                        {
+                                            isChange = false;
+                                            break;
+                                        }
+                                    }
+                                }
+                            }
+                            if (isChange)
+                                dbContext.Db.CodeFirst.InitTables(t);
+                        }
+                    }
+                });
+                ConsoleHelper.WriteSuccessLine($"Tables Created Successfully!");
+                Console.WriteLine();
+
+
+            }
+            catch (Exception ex)
+            {
+                // 1銆佽嫢鏄疢ysql,鏌ョ湅甯歌闂:https://github.com/anjoy8/Blog.Core/issues/148#issue-776281770
+                //2銆佽嫢鏄疧racle,鏌ョ湅甯歌闂:https://github.com/anjoy8/Blog.Core/issues/148#issuecomment-752340231
+                throw new Exception("閿欒锛�" + ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 鍒濆鍖� 澶氱鎴�
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <returns></returns>
+        public static async Task TenantSeedAsync(DBContext dbContext)
+        {
+
+            if (BaseDBConfig.MutiConnectionString.Where(x => x.ConnId != MainDb.CurrentDbConnId).Any())
+            {
+                Console.WriteLine($@"Init Multi Tenant Db");
+                foreach (MutiDBOperate tenant in BaseDBConfig.MutiConnectionString.Where(x => x.ConnId != MainDb.CurrentDbConnId))
+                {
+
+                    Console.WriteLine($@"Init Multi Tenant Db : {tenant.ConnId}");
+                    ConnectionConfig connectionConfig = new ConnectionConfig()
+                    {
+                        ConfigId = tenant.ConnId,
+                        ConnectionString = tenant.Connection,
+                        IsAutoCloseConnection = true,
+                        MoreSettings = new ConnMoreSettings()
+                        {
+                            IsAutoRemoveDataCache = true
+                        },
+                        DbType = (DbType)tenant.DbType,
+                    };
+                    await InitTenantSeedAsync(dbContext.Db.AsTenant(), connectionConfig);
+                }
+
+                Console.WriteLine(DateTime.Now + $@"Init Multi Tenant Db Finish");
+            }
+
+            //tenants = await myContext.Db.Queryable<SysTenant>().Where(s => s.TenantType == TenantTypeEnum.Tables).ToListAsync();
+            //if (tenants.Any())
+            //{
+            //    await InitTenantSeedAsync(myContext, tenants);
+            //}
+        }
+
+        #region 澶氱鎴� 澶氬簱 鍒濆鍖�
+
+        /// <summary>
+        /// 鍒濆鍖栧搴�
+        /// </summary>
+        /// <param name="itenant"></param>
+        /// <param name="config"></param>
+        /// <returns></returns>
+        public static async Task InitTenantSeedAsync(ITenant itenant, ConnectionConfig config)
+        {
+            Console.WriteLine(DateTime.Now + $@"Init Multi Tenant Db");
+            //itenant.RemoveConnection(config.ConfigId);
+            itenant.AddConnection(config);
+
+            var db = itenant.GetConnectionScope(config.ConfigId);
+
+            db.DbMaintenance.CreateDatabase();
+            ConsoleHelper.WriteSuccessLine($"Init Multi Tenant Db : {config.ConfigId} Database created successfully!");
+
+            Console.WriteLine($@"Init Multi Tenant Db : {config.ConfigId}  Create Tables");
+
+            // 鑾峰彇鎵�鏈夊疄浣撹〃-鍒濆鍖栫鎴蜂笟鍔¤〃
+            var entityTypes = TenantUtil.GetTenantEntityTypes(TenantTypeEnum.Db);
+            if (!entityTypes.Any()) return;
+            foreach (var entityType in entityTypes)
+            {
+                //var splitTable = entityType.GetCustomAttribute<SplitTableAttribute>();
+                //if (splitTable == null)
+                db.CodeFirst.InitTables(entityType);
+                //else
+                //    db.CodeFirst.SplitTables().InitTables(entityType);
+
+                Console.WriteLine(entityType.Name);
+            }
+            Console.WriteLine(DateTime.Now + $@"Init Multi Tenant Db Finish");
+            //澶氱鎴峰垵濮嬪寲绉嶅瓙鏁版嵁
+            //await TenantSeedDataAsync(db, TenantTypeEnum.Db);
+        }
+
+        #endregion
+
+        //private static async Task TenantSeedDataAsync(ISqlSugarClient db, TenantTypeEnum tenantType)
+        //{
+        //    // 鑾峰彇鎵�鏈夌瀛愰厤缃�-鍒濆鍖栨暟鎹�
+        //    var seedDataTypes = AssemblysExtensions.GetAllAssemblies().SelectMany(s => s.DefinedTypes)
+        //        .Where(u => !u.IsInterface && !u.IsAbstract && u.IsClass)
+        //        .Where(u =>
+        //        {
+        //            var esd = u.GetInterfaces().FirstOrDefault(i => i.HasImplementedRawGeneric(typeof(IEntitySeedData<>)));
+        //            if (esd is null)
+        //            {
+        //                return false;
+        //            }
+
+        //            var eType = esd.GenericTypeArguments[0];
+        //            return eType.IsTenantEntity(tenantType);
+        //        });
+        //    if (!seedDataTypes.Any()) return;
+        //    foreach (var seedType in seedDataTypes)
+        //    {
+        //        dynamic instance = Activator.CreateInstance(seedType);
+        //        //鍒濆鍖栨暟鎹�
+        //        {
+        //            var seedData = instance.InitSeedData();
+        //            if (seedData != null && Enumerable.Any(seedData))
+        //            {
+        //                var entityType = seedType.GetInterfaces().First().GetGenericArguments().First();
+        //                var entity = db.EntityMaintenance.GetEntityInfo(entityType);
+
+        //                if (!await db.Queryable(entity.DbTableName, "").AnyAsync())
+        //                {
+        //                    await db.Insertable(Enumerable.ToList(seedData)).ExecuteCommandAsync();
+        //                    Console.WriteLine($"Table:{entity.DbTableName} init success!");
+        //                }
+        //            }
+        //        }
+
+        //        //绉嶅瓙鏁版嵁
+        //        {
+        //            var seedData = instance.SeedData();
+        //            if (seedData != null && Enumerable.Any(seedData))
+        //            {
+        //                var entityType = seedType.GetInterfaces().First().GetGenericArguments().First();
+        //                var entity = db.EntityMaintenance.GetEntityInfo(entityType);
+
+        //                await db.Storageable(Enumerable.ToList(seedData)).ExecuteCommandAsync();
+        //                Console.WriteLine($"Table:{entity.DbTableName} seedData success!");
+        //            }
+        //        }
+
+        //        //鑷畾涔夊鐞�
+        //        {
+        //            await instance.CustomizeSeedData(db);
+        //        }
+        //    }
+        //}
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Seed/FrameSeed.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Seed/FrameSeed.cs"
new file mode 100644
index 0000000..4711bda
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Seed/FrameSeed.cs"
@@ -0,0 +1,582 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Seed
+{
+    public class FrameSeed
+    {
+
+        /// <summary>
+        /// 鐢熸垚Controller灞�
+        /// </summary>
+        /// <param name="sqlSugarClient">sqlsugar瀹炰緥</param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="tableNames">鏁版嵁搴撹〃鍚嶆暟缁勶紝榛樿绌猴紝鐢熸垚鎵�鏈夎〃</param>
+        /// <param name="isMuti"></param>
+        /// <returns></returns>
+        public static bool CreateControllers(SqlSugarScope sqlSugarClient, string ConnId = null, bool isMuti = false, string[] tableNames = null)
+        {
+            Create_Controller_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.Api.Controllers", "Blog.Core.Api.Controllers", tableNames, "", isMuti);
+            return true;
+        }
+
+        /// <summary>
+        /// 鐢熸垚Model灞�
+        /// </summary>
+        /// <param name="sqlSugarClient">sqlsugar瀹炰緥</param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="tableNames">鏁版嵁搴撹〃鍚嶆暟缁勶紝榛樿绌猴紝鐢熸垚鎵�鏈夎〃</param>
+        /// <param name="isMuti"></param>
+        /// <returns></returns>
+        public static bool CreateModels(SqlSugarScope sqlSugarClient, string ConnId, bool isMuti = false, string[] tableNames = null)
+        {
+            Create_Model_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.Model", "Blog.Core.Model.Models", tableNames, "", isMuti);
+            return true;
+        }
+
+        /// <summary>
+        /// 鐢熸垚IRepository灞�
+        /// </summary>
+        /// <param name="sqlSugarClient">sqlsugar瀹炰緥</param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="isMuti"></param>
+        /// <param name="tableNames">鏁版嵁搴撹〃鍚嶆暟缁勶紝榛樿绌猴紝鐢熸垚鎵�鏈夎〃</param>
+        /// <returns></returns>
+        public static bool CreateIRepositorys(SqlSugarScope sqlSugarClient, string ConnId, bool isMuti = false, string[] tableNames = null)
+        {
+            Create_IRepository_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.IRepository", "Blog.Core.IRepository", tableNames, "", isMuti);
+            return true;
+        }
+
+
+
+        /// <summary>
+        /// 鐢熸垚 IService 灞�
+        /// </summary>
+        /// <param name="sqlSugarClient">sqlsugar瀹炰緥</param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="isMuti"></param>
+        /// <param name="tableNames">鏁版嵁搴撹〃鍚嶆暟缁勶紝榛樿绌猴紝鐢熸垚鎵�鏈夎〃</param>
+        /// <returns></returns>
+        public static bool CreateIServices(SqlSugarScope sqlSugarClient, string ConnId, bool isMuti = false, string[] tableNames = null)
+        {
+            Create_IServices_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.IServices", "Blog.Core.IServices", tableNames, "", isMuti);
+            return true;
+        }
+
+
+
+        /// <summary>
+        /// 鐢熸垚 Repository 灞�
+        /// </summary>
+        /// <param name="sqlSugarClient">sqlsugar瀹炰緥</param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="isMuti"></param>
+        /// <param name="tableNames">鏁版嵁搴撹〃鍚嶆暟缁勶紝榛樿绌猴紝鐢熸垚鎵�鏈夎〃</param>
+        /// <returns></returns>
+        public static bool CreateRepository(SqlSugarScope sqlSugarClient, string ConnId, bool isMuti = false, string[] tableNames = null)
+        {
+            Create_Repository_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.Repository", "Blog.Core.Repository", tableNames, "", isMuti);
+            return true;
+        }
+
+
+
+        /// <summary>
+        /// 鐢熸垚 Service 灞�
+        /// </summary>
+        /// <param name="sqlSugarClient">sqlsugar瀹炰緥</param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="isMuti"></param>
+        /// <param name="tableNames">鏁版嵁搴撹〃鍚嶆暟缁勶紝榛樿绌猴紝鐢熸垚鎵�鏈夎〃</param>
+        /// <returns></returns>
+        public static bool CreateServices(SqlSugarScope sqlSugarClient, string ConnId, bool isMuti = false, string[] tableNames = null)
+        {
+            Create_Services_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.Services", "Blog.Core.Services", tableNames, "", isMuti);
+            return true;
+        }
+
+
+        #region 鏍规嵁鏁版嵁搴撹〃鐢熶骇Controller灞�
+
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鏍规嵁鏁版嵁搴撹〃鐢熶骇Controller灞�
+        /// 浣溿��銆�鑰�:Blog.Core
+        /// </summary>
+        /// <param name="sqlSugarClient"></param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="strPath">瀹炰綋绫诲瓨鏀捐矾寰�</param>
+        /// <param name="strNameSpace">鍛藉悕绌洪棿</param>
+        /// <param name="lstTableNames">鐢熶骇鎸囧畾鐨勮〃</param>
+        /// <param name="strInterface">瀹炵幇鎺ュ彛</param>
+        /// <param name="isMuti"></param>
+        /// <param name="blnSerializable">鏄惁搴忓垪鍖�</param>
+        private static void Create_Controller_ClassFileByDBTalbe(
+          SqlSugarScope sqlSugarClient,
+          string ConnId,
+          string strPath,
+          string strNameSpace,
+          string[] lstTableNames,
+          string strInterface,
+          bool isMuti = false,
+          bool blnSerializable = false)
+        {
+            var IDbFirst = sqlSugarClient.DbFirst;
+            if (lstTableNames != null && lstTableNames.Length > 0)
+            {
+                IDbFirst = IDbFirst.Where(lstTableNames);
+            }
+            var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute()
+
+                 .SettingClassTemplate(p => p =
+@"using Blog.Core.IServices;
+using Blog.Core.Model;
+using Blog.Core.Model.Models;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Linq.Expressions;
+using System.Threading.Tasks;
+
+namespace " + strNameSpace + @"
+{
+	[Route(""api/[controller]/[action]"")]
+	[ApiController]
+    [Authorize(Permissions.Name)]
+     public class {ClassName}Controller : ControllerBase
+    {
+            /// <summary>
+            /// 鏈嶅姟鍣ㄦ帴鍙o紝鍥犱负鏄ā鏉跨敓鎴愶紝鎵�浠ラ瀛楁瘝鏄ぇ鍐欑殑锛岃嚜宸卞彲浠ラ噸鏋勪笅
+            /// </summary>
+            private readonly I{ClassName}Services _{ClassName}Services;
+    
+            public {ClassName}Controller(I{ClassName}Services {ClassName}Services)
+            {
+                _{ClassName}Services = {ClassName}Services;
+            }
+    
+            [HttpGet]
+            public async Task<MessageModel<PageModel<{ClassName}>>> Get(int page = 1, string key = """",int intPageSize = 50)
+            {
+                if (string.IsNullOrEmpty(key) || string.IsNullOrWhiteSpace(key))
+                {
+                    key = """";
+                }
+    
+                Expression<Func<{ClassName}, bool>> whereExpression = a => true;
+    
+                return new MessageModel<PageModel<{ClassName}>>()
+                {
+                    msg = ""鑾峰彇鎴愬姛"",
+                    success = true,
+                    response = await _{ClassName}Services.QueryPage(whereExpression, page, intPageSize)
+                };
+
+            }
+
+            [HttpGet(""{id}"")]
+            public async Task<MessageModel<{ClassName}>> Get(string id)
+            {
+                return new MessageModel<{ClassName}>()
+                {
+                    msg = ""鑾峰彇鎴愬姛"",
+                    success = true,
+                    response = await _{ClassName}Services.QueryById(id)
+                };
+            }
+
+            [HttpPost]
+            public async Task<MessageModel<string>> Post([FromBody] {ClassName} request)
+            {
+                var data = new MessageModel<string>();
+
+                var id = await _{ClassName}Services.Add(request);
+                data.success = id > 0;
+                if (data.success)
+                {
+                    data.response = id.ObjToString();
+                    data.msg = ""娣诲姞鎴愬姛"";
+                } 
+
+                return data;
+            }
+
+            [HttpPut]
+            public async Task<MessageModel<string>> Put([FromBody] {ClassName} request)
+            {
+                var data = new MessageModel<string>();
+                data.success = await _{ClassName}Services.Update(request);
+                if (data.success)
+                {
+                    data.msg = ""鏇存柊鎴愬姛"";
+                    data.response = request?.id.ObjToString();
+                }
+
+                return data;
+            }
+
+            [HttpDelete]
+            public async Task<MessageModel<string>> Delete(int id)
+            {
+                var data = new MessageModel<string>();
+                var model = await _{ClassName}Services.QueryById(id);
+                model.IsDeleted = true;
+                data.success = await _departmentServices.Update(model);
+                if (data.success)
+                {
+                    data.msg = ""鍒犻櫎鎴愬姛"";
+                    data.response = model?.Id.ObjToString();
+                }
+
+                return data;
+            }
+    }
+}")
+
+                  .ToClassStringList(strNameSpace);
+
+            Dictionary<string, string> newdic = new Dictionary<string, string>();
+            //寰幆澶勭悊 棣栧瓧姣嶅皬鍐� 骞舵彃鍏ユ柊鐨� Dictionary
+            foreach (KeyValuePair<string, string> item in ls)
+            {
+                string newkey = "_" + item.Key.First().ToString().ToLower() + item.Key.Substring(1);
+                string newvalue = item.Value.Replace("_" + item.Key, newkey);
+                newdic.Add(item.Key, newvalue);
+            }
+            CreateFilesByClassStringList(newdic, strPath, "{0}Controller");
+        }
+        #endregion
+
+
+        #region 鏍规嵁鏁版嵁搴撹〃鐢熶骇Model灞�
+
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鏍规嵁鏁版嵁搴撹〃鐢熶骇Model灞�
+        /// 浣溿��銆�鑰�:Blog.Core
+        /// </summary>
+        /// <param name="sqlSugarClient"></param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="strPath">瀹炰綋绫诲瓨鏀捐矾寰�</param>
+        /// <param name="strNameSpace">鍛藉悕绌洪棿</param>
+        /// <param name="lstTableNames">鐢熶骇鎸囧畾鐨勮〃</param>
+        /// <param name="strInterface">瀹炵幇鎺ュ彛</param>
+        /// <param name="isMuti"></param>
+        /// <param name="blnSerializable">鏄惁搴忓垪鍖�</param>
+        private static void Create_Model_ClassFileByDBTalbe(
+          SqlSugarScope sqlSugarClient,
+          string ConnId,
+          string strPath,
+          string strNameSpace,
+          string[] lstTableNames,
+          string strInterface,
+          bool isMuti = false,
+          bool blnSerializable = false)
+        {
+            //澶氬簱鏂囦欢鍒嗙
+            if (isMuti)
+            {
+                strPath = strPath + @"\Models\" + ConnId;
+                strNameSpace = strNameSpace + "." + ConnId;
+            }
+
+            var IDbFirst = sqlSugarClient.DbFirst;
+            if (lstTableNames != null && lstTableNames.Length > 0)
+            {
+                IDbFirst = IDbFirst.Where(lstTableNames);
+            }
+            var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute()
+
+                  .SettingClassTemplate(p => p =
+@"{using}
+
+namespace " + strNameSpace + @"
+{
+{ClassDescription}
+    [SugarTable( ""{ClassName}"", """ + ConnId + @""")]" + (blnSerializable ? "\n    [Serializable]" : "") + @"
+    public class {ClassName}" + (string.IsNullOrEmpty(strInterface) ? "" : (" : " + strInterface)) + @"
+    {
+           public {ClassName}()
+           {
+           }
+{PropertyName}
+    }
+}")
+                  //.SettingPropertyDescriptionTemplate(p => p = string.Empty)
+                  .SettingPropertyTemplate(p => p =
+@"{SugarColumn}
+           public {PropertyType} {PropertyName} { get; set; }")
+
+                   //.SettingConstructorTemplate(p => p = "              this._{PropertyName} ={DefaultValue};")
+
+                   .ToClassStringList(strNameSpace);
+            CreateFilesByClassStringList(ls, strPath, "{0}");
+        }
+        #endregion
+
+
+        #region 鏍规嵁鏁版嵁搴撹〃鐢熶骇IRepository灞�
+
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鏍规嵁鏁版嵁搴撹〃鐢熶骇IRepository灞�
+        /// 浣溿��銆�鑰�:Blog.Core
+        /// </summary>
+        /// <param name="sqlSugarClient"></param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="strPath">瀹炰綋绫诲瓨鏀捐矾寰�</param>
+        /// <param name="strNameSpace">鍛藉悕绌洪棿</param>
+        /// <param name="lstTableNames">鐢熶骇鎸囧畾鐨勮〃</param>
+        /// <param name="strInterface">瀹炵幇鎺ュ彛</param>
+        /// <param name="isMuti"></param>
+        private static void Create_IRepository_ClassFileByDBTalbe(
+          SqlSugarScope sqlSugarClient,
+          string ConnId,
+          string strPath,
+          string strNameSpace,
+          string[] lstTableNames,
+          string strInterface,
+          bool isMuti = false
+            )
+        {
+            //澶氬簱鏂囦欢鍒嗙
+            if (isMuti)
+            {
+                strPath = strPath + @"\" + ConnId;
+                strNameSpace = strNameSpace + "." + ConnId;
+            }
+
+            var IDbFirst = sqlSugarClient.DbFirst;
+            if (lstTableNames != null && lstTableNames.Length > 0)
+            {
+                IDbFirst = IDbFirst.Where(lstTableNames);
+            }
+            var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute()
+
+                 .SettingClassTemplate(p => p =
+@"using Blog.Core.IRepository.Base;
+using Blog.Core.Model.Models" + (isMuti ? "." + ConnId + "" : "") + @";
+
+namespace " + strNameSpace + @"
+{
+	/// <summary>
+	/// I{ClassName}Repository
+	/// </summary>	
+    public interface I{ClassName}Repository : IBaseRepository<{ClassName}>" + (string.IsNullOrEmpty(strInterface) ? "" : (" , " + strInterface)) + @"
+    {
+    }
+}")
+
+                  .ToClassStringList(strNameSpace);
+            CreateFilesByClassStringList(ls, strPath, "I{0}Repository");
+        }
+        #endregion
+
+
+        #region 鏍规嵁鏁版嵁搴撹〃鐢熶骇IServices灞�
+
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鏍规嵁鏁版嵁搴撹〃鐢熶骇IServices灞�
+        /// 浣溿��銆�鑰�:Blog.Core
+        /// </summary>
+        /// <param name="sqlSugarClient"></param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="strPath">瀹炰綋绫诲瓨鏀捐矾寰�</param>
+        /// <param name="strNameSpace">鍛藉悕绌洪棿</param>
+        /// <param name="lstTableNames">鐢熶骇鎸囧畾鐨勮〃</param>
+        /// <param name="strInterface">瀹炵幇鎺ュ彛</param>
+        /// <param name="isMuti"></param>
+        private static void Create_IServices_ClassFileByDBTalbe(
+          SqlSugarScope sqlSugarClient,
+          string ConnId,
+          string strPath,
+          string strNameSpace,
+          string[] lstTableNames,
+          string strInterface,
+          bool isMuti = false)
+        {
+            //澶氬簱鏂囦欢鍒嗙
+            if (isMuti)
+            {
+                strPath = strPath + @"\" + ConnId;
+                strNameSpace = strNameSpace + "." + ConnId;
+            }
+
+            var IDbFirst = sqlSugarClient.DbFirst;
+            if (lstTableNames != null && lstTableNames.Length > 0)
+            {
+                IDbFirst = IDbFirst.Where(lstTableNames);
+            }
+            var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute()
+
+                  .SettingClassTemplate(p => p =
+@"using Blog.Core.IServices.BASE;
+using Blog.Core.Model.Models" + (isMuti ? "." + ConnId + "" : "") + @";
+
+namespace " + strNameSpace + @"
+{	
+	/// <summary>
+	/// I{ClassName}Services
+	/// </summary>	
+    public interface I{ClassName}Services :IBaseServices<{ClassName}>" + (string.IsNullOrEmpty(strInterface) ? "" : (" , " + strInterface)) + @"
+	{
+    }
+}")
+
+                   .ToClassStringList(strNameSpace);
+            CreateFilesByClassStringList(ls, strPath, "I{0}Services");
+        }
+        #endregion
+
+
+
+        #region 鏍规嵁鏁版嵁搴撹〃鐢熶骇 Repository 灞�
+
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鏍规嵁鏁版嵁搴撹〃鐢熶骇 Repository 灞�
+        /// 浣溿��銆�鑰�:Blog.Core
+        /// </summary>
+        /// <param name="sqlSugarClient"></param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="strPath">瀹炰綋绫诲瓨鏀捐矾寰�</param>
+        /// <param name="strNameSpace">鍛藉悕绌洪棿</param>
+        /// <param name="lstTableNames">鐢熶骇鎸囧畾鐨勮〃</param>
+        /// <param name="strInterface">瀹炵幇鎺ュ彛</param>
+        /// <param name="isMuti"></param>
+        private static void Create_Repository_ClassFileByDBTalbe(
+          SqlSugarScope sqlSugarClient,
+          string ConnId,
+          string strPath,
+          string strNameSpace,
+          string[] lstTableNames,
+          string strInterface,
+          bool isMuti = false)
+        {
+            //澶氬簱鏂囦欢鍒嗙
+            if (isMuti)
+            {
+                strPath = strPath + @"\" + ConnId;
+                strNameSpace = strNameSpace + "." + ConnId;
+            }
+
+            var IDbFirst = sqlSugarClient.DbFirst;
+            if (lstTableNames != null && lstTableNames.Length > 0)
+            {
+                IDbFirst = IDbFirst.Where(lstTableNames);
+            }
+            var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute()
+
+                  .SettingClassTemplate(p => p =
+@"using Blog.Core.IRepository" + (isMuti ? "." + ConnId + "" : "") + @";
+using Blog.Core.IRepository.UnitOfWork;
+using Blog.Core.Model.Models" + (isMuti ? "." + ConnId + "" : "") + @";
+using Blog.Core.Repository.Base;
+
+namespace " + strNameSpace + @"
+{
+	/// <summary>
+	/// {ClassName}Repository
+	/// </summary>
+    public class {ClassName}Repository : BaseRepository<{ClassName}>, I{ClassName}Repository" + (string.IsNullOrEmpty(strInterface) ? "" : (" , " + strInterface)) + @"
+    {
+        public {ClassName}Repository(IUnitOfWork unitOfWork) : base(unitOfWork)
+        {
+        }
+    }
+}")
+                  .ToClassStringList(strNameSpace);
+
+
+            CreateFilesByClassStringList(ls, strPath, "{0}Repository");
+        }
+        #endregion
+
+
+        #region 鏍规嵁鏁版嵁搴撹〃鐢熶骇 Services 灞�
+
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鏍规嵁鏁版嵁搴撹〃鐢熶骇 Services 灞�
+        /// 浣溿��銆�鑰�:Blog.Core
+        /// </summary>
+        /// <param name="sqlSugarClient"></param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="strPath">瀹炰綋绫诲瓨鏀捐矾寰�</param>
+        /// <param name="strNameSpace">鍛藉悕绌洪棿</param>
+        /// <param name="lstTableNames">鐢熶骇鎸囧畾鐨勮〃</param>
+        /// <param name="strInterface">瀹炵幇鎺ュ彛</param>
+        /// <param name="isMuti"></param>
+        private static void Create_Services_ClassFileByDBTalbe(
+          SqlSugarScope sqlSugarClient,
+          string ConnId,
+          string strPath,
+          string strNameSpace,
+          string[] lstTableNames,
+          string strInterface,
+          bool isMuti = false)
+        {
+            //澶氬簱鏂囦欢鍒嗙
+            if (isMuti)
+            {
+                strPath = strPath + @"\" + ConnId;
+                strNameSpace = strNameSpace + "." + ConnId;
+            }
+
+            var IDbFirst = sqlSugarClient.DbFirst;
+            if (lstTableNames != null && lstTableNames.Length > 0)
+            {
+                IDbFirst = IDbFirst.Where(lstTableNames);
+            }
+            var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute()
+
+                  .SettingClassTemplate(p => p =
+@"
+using Blog.Core.IServices" + (isMuti ? "." + ConnId + "" : "") + @";
+using Blog.Core.Model.Models" + (isMuti ? "." + ConnId + "" : "") + @";
+using Blog.Core.Services.BASE;
+using Blog.Core.IRepository.Base;
+
+namespace " + strNameSpace + @"
+{
+    public class {ClassName}Services : BaseServices<{ClassName}>, I{ClassName}Services" + (string.IsNullOrEmpty(strInterface) ? "" : (" , " + strInterface)) + @"
+    {
+        private readonly IBaseRepository<{ClassName}> _dal;
+        public {ClassName}Services(IBaseRepository<{ClassName}> dal)
+        {
+            this._dal = dal;
+            base.BaseDal = dal;
+        }
+    }
+}")
+                  .ToClassStringList(strNameSpace);
+
+            CreateFilesByClassStringList(ls, strPath, "{0}Services");
+        }
+        #endregion
+
+
+        #region 鏍规嵁妯℃澘鍐呭鎵归噺鐢熸垚鏂囦欢
+        /// <summary>
+        /// 鏍规嵁妯℃澘鍐呭鎵归噺鐢熸垚鏂囦欢
+        /// </summary>
+        /// <param name="ls">绫绘枃浠跺瓧绗︿覆list</param>
+        /// <param name="strPath">鐢熸垚璺緞</param>
+        /// <param name="fileNameTp">鏂囦欢鍚嶆牸寮忔ā鏉�</param>
+        private static void CreateFilesByClassStringList(Dictionary<string, string> ls, string strPath, string fileNameTp)
+        {
+
+            foreach (var item in ls)
+            {
+                var fileName = $"{string.Format(fileNameTp, item.Key)}.cs";
+                var fileFullPath = Path.Combine(strPath, fileName);
+                if (!Directory.Exists(strPath))
+                {
+                    Directory.CreateDirectory(strPath);
+                }
+                File.WriteAllText(fileFullPath, item.Value, Encoding.UTF8);
+            }
+        }
+        #endregion
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Tenants/ITenantEntity.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Tenants/ITenantEntity.cs"
new file mode 100644
index 0000000..ca499c4
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Tenants/ITenantEntity.cs"
@@ -0,0 +1,21 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Tenants
+{
+    /// <summary>
+    /// 绉熸埛妯″瀷鎺ュ彛
+    /// </summary>
+    public interface ITenantEntity
+    {
+        /// <summary>
+        /// 绉熸埛Id
+        /// </summary>
+        [SugarColumn(DefaultValue = "0")]
+        public long TenantId { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Tenants/MultiTenantAttribute.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Tenants/MultiTenantAttribute.cs"
new file mode 100644
index 0000000..a0927c3
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Tenants/MultiTenantAttribute.cs"
@@ -0,0 +1,56 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Tenants
+{
+    /// <summary>
+    /// 鏍囪瘑 澶氱鎴� 鐨勪笟鍔¤〃 <br/>
+    /// 榛樿璁剧疆鏄搴�       <br/>
+    /// 鍏叡琛ㄦ棤闇�鍖哄垎 鐩存帴浣跨敤涓诲簱 鍚勮嚜涓氬姟鍦ㄥ悇鑷簱涓� <br/>
+    /// </summary>
+    [AttributeUsage(AttributeTargets.Class)]
+    public class MultiTenantAttribute : Attribute
+    {
+        public MultiTenantAttribute()
+        {
+        }
+
+        public MultiTenantAttribute(TenantTypeEnum tenantType)
+        {
+            TenantType = tenantType;
+        }
+
+
+        public TenantTypeEnum TenantType { get; set; } = TenantTypeEnum.Db;
+    }
+
+    /// <summary>
+    /// 绉熸埛闅旂鏂规
+    /// </summary>
+    public enum TenantTypeEnum
+    {
+        None = 0,
+
+        /// <summary>
+        /// Id闅旂
+        /// </summary>
+        [Description("Id闅旂")]
+        Id = 1,
+
+        /// <summary>
+        /// 搴撻殧绂�
+        /// </summary>
+        [Description("搴撻殧绂�")]
+        Db = 2,
+
+        /// <summary>
+        /// 琛ㄩ殧绂�
+        /// </summary>
+        [Description("琛ㄩ殧绂�")]
+        Tables = 3,
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Tenants/TenantUtil.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Tenants/TenantUtil.cs"
new file mode 100644
index 0000000..a0a9755
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Tenants/TenantUtil.cs"
@@ -0,0 +1,127 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB;
+
+namespace WIDESEA_Core.Tenants
+{
+    public static class TenantUtil
+    {
+        //public static SysTenant DefaultTenantConfig(this SysTenant tenant)
+        //{
+        //    tenant.DbType ??= DbType.Sqlite;
+
+        //    //濡傛灉娌℃湁閰嶇疆杩炴帴
+        //    if (tenant.Connection.IsNullOrEmpty())
+        //    {
+        //        //姝ゅ榛樿閰嶇疆 Sqlite 鍦板潃
+        //        //瀹為檯涓氬姟涓� 涔熶細鏈夎繍缁淬�佺郴缁熺鐞嗗憳绛夋潵缁存姢
+        //        switch (tenant.DbType.Value)
+        //        {
+        //            case DbType.Sqlite:
+        //                tenant.Connection = $"DataSource={Path.Combine(Environment.CurrentDirectory, tenant.ConfigId)}.db";
+        //                break;
+        //        }
+        //    }
+
+        //    return tenant;
+        //}
+
+        //public static ConnectionConfig GetConnectionConfig(this SysTenant tenant)
+        //{
+        //    if (tenant.DbType is null)
+        //    {
+        //        throw new ArgumentException("Tenant DbType Must");
+        //    }
+
+
+        //    return new ConnectionConfig()
+        //    {
+        //        ConfigId = tenant.ConfigId,
+        //        DbType = tenant.DbType.Value,
+        //        ConnectionString = tenant.Connection,
+        //        IsAutoCloseConnection = true,
+        //        MoreSettings = new ConnMoreSettings()
+        //        {
+        //            IsAutoRemoveDataCache = true
+        //        },
+        //    };
+        //}
+
+        public static List<Type> GetTenantEntityTypes(TenantTypeEnum? tenantType = null)
+        {
+            List<Type> types = RepositorySetting.Entitys.Where(u => !u.IsInterface && !u.IsAbstract && u.IsClass).ToList();
+
+            List<Type> returnTypes = types.Where(s => IsTenantEntity(s, tenantType)).ToList();
+            return returnTypes;
+        }
+
+        public static bool IsTenantEntity(this Type u, TenantTypeEnum? tenantType = null)
+        {
+            var mta = u.GetCustomAttribute<MultiTenantAttribute>();
+            if (mta is null)
+            {
+                return false;
+            }
+
+            if (tenantType != null)
+            {
+                if (mta.TenantType != tenantType)
+                {
+                    return false;
+                }
+            }
+
+            return true;
+        }
+
+        public static string GetTenantTableName(this Type type, ISqlSugarClient db, string id)
+        {
+            var entityInfo = db.EntityMaintenance.GetEntityInfo(type);
+            return $@"{entityInfo.DbTableName}_{id}";
+        }
+
+        //public static string GetTenantTableName(this Type type, ISqlSugarClient db, SysTenant tenant)
+        //{
+        //    return GetTenantTableName(type, db, tenant.Id.ToString());
+        //}
+
+        public static void SetTenantTable(this ISqlSugarClient db, string id)
+        {
+            var types = GetTenantEntityTypes(TenantTypeEnum.Tables);
+
+            foreach (var type in types)
+            {
+                db.MappingTables.Add(type.Name, type.GetTenantTableName(db, id));
+            }
+        }
+
+        public static List<SelectModel> GetTenantSelectModels()
+        {
+            List<SelectModel> selectModels = new List<SelectModel>()
+            {
+                new SelectModel
+                {
+                    FieldName = MainDb.TenantId
+                },
+                //new SelectModel
+                //{
+                //    FieldName = MainDb.TenantName
+                //},
+                new SelectModel
+                {
+                    FieldName = MainDb.ConnectionString,
+                },
+                new SelectModel
+                {
+                    FieldName = MainDb.TenantDbType
+                }
+            };
+            return selectModels;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Utilities/EntityProperties.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Utilities/EntityProperties.cs"
new file mode 100644
index 0000000..a57e31b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Utilities/EntityProperties.cs"
@@ -0,0 +1,367 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.Utilities
+{
+    public static class EntityProperties
+    {
+        /// <summary>
+        /// 楠岃瘉鏁版嵁搴撳瓧娈电被鍨嬩笌鍊兼槸鍚︽纭紝
+        /// </summary>
+        /// <param name="value">鍊�</param>
+        /// <param name="propertyInfo">瑕侀獙璇佺殑绫荤殑灞炴�э紝鑻ヤ笉涓簄ull锛屽垯浼氬垽鏂瓧绗︿覆鐨勯暱搴︽槸鍚︽纭�</param>
+        /// <returns>(bool, string, object)bool鎴愬惁鏍¢獙鎴愬姛,string鏍¢獙澶辫触淇℃伅,object,褰撳墠鏍¢獙鐨勫��</returns>
+        public static (bool, string, object) ValidationVal(this PropertyInfo propertyInfo, object value)
+        {
+            string dbType = "";
+            SugarColumn sugarColumn = null;
+            if (propertyInfo != null)
+            {
+                sugarColumn = propertyInfo.GetCustomAttribute<SugarColumn>();
+                dbType = propertyInfo.PropertyType != null ? propertyInfo.GetProperWithDbType() : SqlDbTypeName.NVarChar;
+            }
+            dbType = dbType.ToLower();
+            string val = value?.ToString();
+            //楠岃瘉闀垮害
+            string reslutMsg = string.Empty;
+            if (dbType == SqlDbTypeName.Int)
+            {
+                if (!value.IsInt())
+                    reslutMsg = "鍙兘涓烘湁鏁堟暣鏁�";
+            }  //2021.10.12澧炲姞灞炴�ф牎楠宭ong绫诲瀷鐨勬敮鎸�
+            else if (dbType == SqlDbTypeName.BigInt)
+            {
+                if (!long.TryParse(val, out _))
+                {
+                    reslutMsg = "鍙兘涓烘湁鏁堟暣鏁�";
+                }
+            }
+            else if (dbType == SqlDbTypeName.DateTime
+                || dbType == SqlDbTypeName.Date
+                || dbType == SqlDbTypeName.SmallDateTime
+                || dbType == SqlDbTypeName.SmallDate
+                )
+            {
+                if (!value.IsDate())
+                    reslutMsg = "蹇呴』涓烘棩鏈熸牸寮�";
+            }
+            else if (dbType == SqlDbTypeName.Float || dbType == SqlDbTypeName.Decimal || dbType == SqlDbTypeName.Double)
+            {
+
+                if (!val.IsNumber(null))
+                {
+                    reslutMsg = "涓嶆槸鏈夋晥鏁板瓧";
+                }
+            }
+            else if (dbType == SqlDbTypeName.UniqueIdentifier)
+            {
+                if (!val.IsGuid())
+                {
+                    reslutMsg = propertyInfo.Name + "Guid涓嶆纭�";
+                }
+            }
+            else if (propertyInfo != null
+                && (dbType == SqlDbTypeName.VarChar
+                || dbType == SqlDbTypeName.NVarChar
+                || dbType == SqlDbTypeName.NChar
+                || dbType == SqlDbTypeName.Char
+                || dbType == SqlDbTypeName.Text))
+            {
+
+                //榛樿nvarchar(max) 銆乼ext 闀垮害涓嶈兘瓒呰繃20000
+                if (val.Length > 200000)
+                {
+                    reslutMsg = $"瀛楃闀垮害鏈�澶氥��200000銆�";
+                }
+                else
+                {
+
+                    int length = sugarColumn.Length;
+                    if (length == 0) { return (true, null, value); }
+                    //鍒ゆ柇鍙屽瓧鑺備笌鍗曞瓧娈�
+                    else if (length < 8000 &&
+                        ((dbType.Substring(0, 1) != "n"
+                        && Encoding.UTF8.GetBytes(val.ToCharArray()).Length > length)
+                         || val.Length > length)
+                         )
+                    {
+                        reslutMsg = $"鏈�澶氬彧鑳姐�恵length}銆戜釜瀛楃銆�";
+                    }
+                }
+            }
+            if (!string.IsNullOrEmpty(reslutMsg) && propertyInfo != null)
+            {
+                reslutMsg = sugarColumn.ColumnDescription + reslutMsg;
+            }
+            return (reslutMsg == "" ? true : false, reslutMsg, value);
+        }
+
+        public static List<(bool, string, object)> ValidationValueForDbType(this PropertyInfo propertyInfo, params object[] values)
+        {
+            List<(bool, string, object)> result = new List<(bool, string, object)>();
+            foreach (object value in values)
+            {
+                result.Add(propertyInfo.ValidationVal(value));
+            }
+            return result;
+        }
+
+        private static readonly Dictionary<Type, string> ProperWithDbType = new Dictionary<Type, string>() {
+            {  typeof(string),SqlDbTypeName.NVarChar },
+            { typeof(DateTime),SqlDbTypeName.DateTime},
+            {typeof(long),SqlDbTypeName.BigInt },
+            {typeof(int),SqlDbTypeName.Int},
+            { typeof(decimal),SqlDbTypeName.Decimal },
+            { typeof(float),SqlDbTypeName.Float },
+            { typeof(double),SqlDbTypeName.Double },
+            {  typeof(byte),SqlDbTypeName.Int },//绫诲瀷寰呭畬
+            { typeof(Guid),SqlDbTypeName.UniqueIdentifier}
+        };
+
+        public static string GetProperWithDbType(this PropertyInfo propertyInfo)
+        {
+            bool result = ProperWithDbType.TryGetValue(propertyInfo.PropertyType, out string value);
+            if (result)
+            {
+                return value;
+            }
+            return SqlDbTypeName.NVarChar;
+        }
+
+        /// <summary>
+        /// 鍒ゆ柇hash鐨勫垪鏄惁涓哄搴旂殑瀹炰綋锛屽苟涓斿�兼槸鍚︽湁鏁�
+        /// </summary>
+        /// <param name="typeinfo"></param>
+        /// <param name="dic"></param>
+        /// <param name="removeNotContains">绉婚櫎涓嶅瓨鍦ㄥ瓧娈�</param>
+        /// <param name="removerKey">绉婚櫎涓婚敭</param>
+        /// <returns></returns>
+        public static string ValidateDicInEntity(this Type typeinfo, Dictionary<string, object> dic, bool removerKey, PropertyInfo[] propertyInfo, string[]? ignoreFields = null)
+        {
+            if (dic == null || dic.Count == 0) { return "鍙傛暟鏃犳晥"; }
+
+            // 涓嶅瓨鍦ㄧ殑瀛楁鐩存帴绉婚櫎
+            dic.Where(x => !propertyInfo.Any(p => p.Name == x.Key.FirstLetterToUpper())).Select(s => s.Key).ToList().ForEach(f =>
+            {
+                dic.Remove(f);
+            });
+
+            string keyName = typeinfo.GetKeyName();
+            //绉婚櫎涓婚敭
+            if (removerKey)
+                dic.Remove(keyName);
+            //else
+            //{
+            //    if (!dic.ContainsKey(keyName))
+            //        return "璇蜂紶鍏ヤ富閿弬鏁�";
+            //}
+
+            foreach (PropertyInfo property in propertyInfo)
+            {
+                SugarColumn? sugarColumn = property.GetCustomAttribute<SugarColumn>();
+                if (sugarColumn == null)
+                {
+                    Navigate? navigate = property.GetCustomAttribute<Navigate>();
+                    if(navigate != null)
+                    {
+                        continue;
+                    }
+                    return "璇烽厤缃甋ugarColumn灞炴��";
+                }
+                    
+                //蹇界暐涓庝富閿殑瀛楁涓嶅仛楠岃瘉
+                if (property.Name == keyName.FirstLetterToUpper() || (ignoreFields != null && ignoreFields.Contains(property.Name)) || sugarColumn.IsOnlyIgnoreInsert || sugarColumn.IsOnlyIgnoreUpdate || sugarColumn.IsIgnore)
+                    continue;
+
+                //涓嶅湪缂栬緫涓殑鍒楋紝鏄惁涔熻蹇呭~
+                if (!dic.ContainsKey(property.Name.FirstLetterToLower()))
+                {
+                    if (!sugarColumn.IsNullable)
+                    {
+                        if (sugarColumn.DefaultValue == null)
+                            return sugarColumn.ColumnDescription + "涓哄繀椤绘彁浜ら」";
+                        continue;
+                    }
+                    continue;
+                }
+                if(dic[property.Name.FirstLetterToLower()] != null)
+                {
+                    string str = dic[property.Name.FirstLetterToLower()].ToString();
+                    //灏嗘墍鏈夌┖鍊艰缃负null
+                    if (str == string.Empty)
+                        dic[property.Name.FirstLetterToLower()] = null;
+                }
+                
+            }
+            return string.Empty;
+        }
+
+        public static string ValidateDicInEntity(this Type typeinfo, List<Dictionary<string, object>> dicList, bool removerKey, string[] ignoreFields = null)
+        {
+            PropertyInfo[] propertyInfo = typeinfo.GetProperties();
+            string reslutMsg = string.Empty;
+            foreach (Dictionary<string, object> dic in dicList)
+            {
+                reslutMsg = typeinfo.ValidateDicInEntity(dic, removerKey, propertyInfo, ignoreFields);
+                if (!string.IsNullOrEmpty(reslutMsg))
+                    return reslutMsg;
+            }
+            return reslutMsg;
+        }
+
+        public static string GetKeyName(this Type typeinfo)
+        {
+            return typeinfo.GetProperties().GetKeyName();
+        }
+
+        public static string GetKeyName(this PropertyInfo[] properties)
+        {
+            foreach (PropertyInfo property in properties)
+            {
+                SugarColumn? sugarColumn = property.GetCustomAttribute<SugarColumn>();
+                if (sugarColumn != null)
+                {
+                    if (sugarColumn.IsPrimaryKey)
+                        return property.Name;
+                }
+            }
+            return null;
+        }
+
+        public static PropertyInfo GetKeyProperty(this Type typeinfo)
+        {
+            PropertyInfo[] properties = typeinfo.GetProperties();
+            foreach (PropertyInfo property in properties)
+            {
+                SugarColumn sugarColumn = property.GetCustomAttribute<SugarColumn>();
+                if (sugarColumn?.IsPrimaryKey ?? false)
+                {
+                    return property;
+                }
+            }
+            return null;
+        }
+
+        public static Type GetDetailType(this Type typeinfo)
+        {
+            PropertyInfo[] properties = typeinfo.GetProperties();
+            foreach (PropertyInfo property in properties)
+            {
+                Navigate? navigate = property.GetCustomAttribute<Navigate>();
+                if (navigate is not null)
+                {
+                    if (navigate.GetNavigateType() == NavigateType.OneToOne)
+                        return property.PropertyType;
+                    else
+                        return property.PropertyType.GenericTypeArguments[0];
+                }
+            }
+            return null;
+        }
+
+        public static string GetMainIdByDetail(this Type typeinfo)
+        {
+            PropertyInfo[] properties = typeinfo.GetProperties();
+            foreach (PropertyInfo property in properties)
+            {
+                Navigate? navigate = property.GetCustomAttribute<Navigate>();
+                if (navigate is not null)
+                {
+                    return navigate.GetName();
+                }
+            }
+            return null;
+        }
+
+        public static void SetDetailId<T>(this Type typeinfo, T enetiy, object id, string name)
+        {
+            PropertyInfo property = typeinfo.GetProperty(name);
+            if (property != null)
+            {
+                property.SetValue(enetiy, id);
+            }
+        }
+
+        public static PropertyInfo? GetNavigatePro(this Type typeinfo)
+        {
+            PropertyInfo[] properties = typeinfo.GetProperties();
+            foreach (PropertyInfo property in properties)
+            {
+                Navigate? navigate = property.GetCustomAttribute<Navigate>();
+                if (navigate is not null)
+                {
+                    return property;
+                }
+            }
+            return null;
+        }
+
+        public static object GetPropertyValue<T>(this Type typeinfo, T data, string propertyName)
+        {
+            if (typeinfo != typeof(T))
+                return null;
+
+            PropertyInfo? property = typeinfo.GetProperty(propertyName);
+            if (property != null)
+            {
+                return property.GetValue(data);
+            }
+            return null;
+        }
+
+        public static void ValidatePageOptions<TEntity>(PageDataOptions options, ref ISugarQueryable<TEntity> sugarQueryable)
+        {
+            string where = string.Empty;
+            PropertyInfo[] entityProperties = typeof(TEntity).GetProperties();
+            List<SearchParameters> searchParametersList = new List<SearchParameters>();
+            if (options.Filter != null && options.Filter.Count > 0)
+            {
+                searchParametersList.AddRange(options.Filter);
+            }
+            else if (!string.IsNullOrEmpty(options.Wheres))
+            {
+                try
+                {
+                    searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
+                    options.Filter = searchParametersList;
+                }
+                catch { }
+            }
+            for (int i = 0; i < searchParametersList.Count; i++)
+            {
+                if (string.IsNullOrEmpty(searchParametersList[i].Value))
+                {
+                    continue;
+                }
+
+                PropertyInfo? property = entityProperties.Where(c => c.Name.ToUpper() == searchParametersList[i].Name.ToUpper()).FirstOrDefault();
+
+                if (property == null) continue;
+
+                List<(bool, string, object)> results = property.ValidationValueForDbType(searchParametersList[i].Value.Split(',')).ToList();
+                if (results == null || results.Count() == 0)
+                {
+                    continue;
+                }
+                for (int j = 0; j < results.Count(); j++)
+                {
+                    LinqExpressionType expressionType = searchParametersList[i].DisplayType.GetLinqCondition();
+                    Expression<Func<TEntity, bool>> expression = property.GetWhereExpression<TEntity>(results[j].Item3, null, expressionType);
+                    sugarQueryable = sugarQueryable.Where(expression);
+                }
+            }
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Utilities/LambdaExtensions.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Utilities/LambdaExtensions.cs"
new file mode 100644
index 0000000..a8e0099
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Utilities/LambdaExtensions.cs"
@@ -0,0 +1,248 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.Utilities
+{
+    public static class LambdaExtensions
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="propertyName">瀛楁鍚�</param>
+        /// <param name="propertyValue">琛ㄨ揪寮忕殑鍊�</param>
+        /// <param name="expressionType">鍒涘缓琛ㄨ揪寮忕殑绫诲瀷,濡�:p=>p.propertyName != propertyValue 
+        /// p=>p.propertyName.Contains(propertyValue)</param>
+        /// <returns></returns>
+        public static Expression<Func<T, bool>> CreateExpression<T>(this string propertyName, object propertyValue, LinqExpressionType expressionType)
+        {
+            return propertyName.CreateExpression<T>(propertyValue, null, expressionType);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="propertyName">瀛楁鍚�</param>
+        /// <param name="propertyValue">琛ㄨ揪寮忕殑鍊�</param>
+        /// <param name="expressionType">鍒涘缓琛ㄨ揪寮忕殑绫诲瀷,濡�:p=>p.propertyName != propertyValue 
+        /// p=>p.propertyName.Contains(propertyValue)</param>
+        /// <returns></returns>
+        private static Expression<Func<T, bool>> CreateExpression<T>(
+          this string propertyName,
+          object propertyValue,
+          ParameterExpression parameter,
+          LinqExpressionType expressionType)
+        {
+            Type proType = null;
+            PropertyInfo propertyInfo = typeof(T).GetProperty(propertyName);
+            if (propertyInfo != null)
+                proType = propertyInfo.PropertyType;
+            else
+            {
+                propertyInfo = typeof(T).GetProperty(propertyName.FirstLetterToLower());
+                if (propertyInfo != null)
+                    proType = propertyInfo.PropertyType;
+                else
+                {
+                    propertyInfo = typeof(T).GetProperty(propertyName.FirstLetterToUpper());
+                    if (propertyInfo != null)
+                        proType = propertyInfo.PropertyType;
+                    else
+                    {
+                        throw new Exception($"鏈壘鍒拌灞炴��,type:{typeof(T)}");
+                    }
+                }
+            }
+            //鍒涘缓鑺傜偣鍙橀噺濡俻=>鐨勮妭鐐筽
+            //  parameter ??= Expression.Parameter(typeof(T), "p");//鍒涘缓鍙傛暟p
+            parameter = parameter ?? Expression.Parameter(typeof(T), "p");
+
+            //鍒涘缓鑺傜偣鐨勫睘鎬=>p.name 灞炴�ame
+            MemberExpression memberProperty = Expression.PropertyOrField(parameter, propertyName);
+            if (expressionType == LinqExpressionType.In)
+            {
+                if (!(propertyValue is System.Collections.IList list) || list.Count == 0) throw new Exception("灞炴�у�肩被鍨嬩笉姝g‘");
+
+                bool isStringValue = true;
+                List<object> objList = new List<object>();
+
+                if (proType.ToString() != "System.String")
+                {
+                    isStringValue = false;
+                    foreach (var value in list)
+                    {
+                        objList.Add(value.ToString().ChangeType(proType));
+                    }
+                    list = objList;
+                }
+
+                if (isStringValue)
+                {
+                    //string 绫诲瀷鐨勫瓧娈碉紝濡傛灉鍊煎甫鏈�'鍗曞紩鍙�,EF浼氶粯璁ゅ彉鎴�''涓や釜鍗曞紩鍙�
+                    MethodInfo method = typeof(System.Collections.IList).GetMethod("Contains");
+                    //鍒涘缓闆嗗悎甯搁噺骞惰缃负甯搁噺鐨勫��
+                    ConstantExpression constantCollection = Expression.Constant(list);
+                    //鍒涘缓涓�涓〃绀鸿皟鐢ㄥ甫鍙傛暟鐨勬柟娉曠殑锛歯ew string[]{"1","a"}.Contains("a");
+                    MethodCallExpression methodCall = Expression.Call(constantCollection, method, memberProperty);
+                    return Expression.Lambda<Func<T, bool>>(methodCall, parameter);
+                }
+                //闈瀞tring瀛楁锛屾寜涓婇潰鏂瑰紡澶勭悊鎶ュ紓甯窷ull TypeMapping in Sql Tree
+                BinaryExpression body = null;
+                foreach (var value in list)
+                {
+                    ConstantExpression constantExpression = Expression.Constant(value);
+                    UnaryExpression unaryExpression = Expression.Convert(memberProperty, constantExpression.Type);
+
+                    body = body == null
+                        ? Expression.Equal(unaryExpression, constantExpression)
+                        : Expression.OrElse(body, Expression.Equal(unaryExpression, constantExpression));
+                }
+                return Expression.Lambda<Func<T, bool>>(body, parameter);
+            }
+
+            //  object value = propertyValue;
+            ConstantExpression constant = proType.ToString() == "System.String"
+                ? Expression.Constant(propertyValue) : Expression.Constant(propertyValue.ToString().ChangeType(proType));
+
+            // DateTime鍙�夋嫨浜嗘棩鏈熺殑鏃跺�欒嚜鍔ㄥ湪缁撴潫鏃ユ湡鍔犱竴澶╋紝淇DateTime绫诲瀷浣跨敤鏃ユ湡鍖洪棿鏌ヨ鏃犳硶鏌ヨ鍒扮粨鏉熸棩鏈熺殑闂
+            if ((proType == typeof(DateTime) || proType == typeof(DateTime?)) && expressionType == LinqExpressionType.LessThanOrEqual && propertyValue.ToString().Length == 10)
+            {
+                constant = Expression.Constant(Convert.ToDateTime(propertyValue.ToString()).AddDays(1));
+            }
+
+            UnaryExpression member = Expression.Convert(memberProperty, constant.Type);
+            Expression<Func<T, bool>> expression;
+            switch (expressionType)
+            {
+                //p=>p.propertyName == propertyValue
+                case LinqExpressionType.Equal:
+                    expression = Expression.Lambda<Func<T, bool>>(Expression.Equal(member, constant), parameter);
+                    break;
+                //p=>p.propertyName != propertyValue
+                case LinqExpressionType.NotEqual:
+                    expression = Expression.Lambda<Func<T, bool>>(Expression.NotEqual(member, constant), parameter);
+                    break;
+                //   p => p.propertyName > propertyValue
+                case LinqExpressionType.GreaterThan:
+                    expression = Expression.Lambda<Func<T, bool>>(Expression.GreaterThan(member, constant), parameter);
+                    break;
+                //   p => p.propertyName < propertyValue
+                case LinqExpressionType.LessThan:
+                    expression = Expression.Lambda<Func<T, bool>>(Expression.LessThan(member, constant), parameter);
+                    break;
+                // p => p.propertyName >= propertyValue
+                case LinqExpressionType.ThanOrEqual:
+                    expression = Expression.Lambda<Func<T, bool>>(Expression.GreaterThanOrEqual(member, constant), parameter);
+                    break;
+                // p => p.propertyName <= propertyValue
+                case LinqExpressionType.LessThanOrEqual:
+                    expression = Expression.Lambda<Func<T, bool>>(Expression.LessThanOrEqual(member, constant), parameter);
+                    break;
+                //   p => p.propertyName.Contains(propertyValue)
+                // p => !p.propertyName.Contains(propertyValue)
+                case LinqExpressionType.Contains:
+                case LinqExpressionType.NotContains:
+                    MethodInfo method = typeof(string).GetMethod("Contains", new[] { typeof(string) });
+                    constant = Expression.Constant(propertyValue, typeof(string));
+                    if (expressionType == LinqExpressionType.Contains)
+                    {
+                        expression = Expression.Lambda<Func<T, bool>>(Expression.Call(member, method, constant), parameter);
+                    }
+                    else
+                    {
+                        expression = Expression.Lambda<Func<T, bool>>(Expression.Not(Expression.Call(member, method, constant)), parameter);
+                    }
+                    break;
+                default:
+                    // p => p.false
+                    expression = False<T>();
+                    break;
+            }
+            return expression;
+        }
+
+        /// <summary>
+        /// 鍒涘缓lambda琛ㄨ揪寮忥細p=>false
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <returns></returns>
+        public static Expression<Func<T, bool>> False<T>()
+        {
+
+            return p => false;
+        }
+
+        public static Expression<Func<TEntity, bool>> GetWhereExpression<TEntity>(this PropertyInfo propertyInfo, object propertyValue, ParameterExpression parameter, LinqExpressionType expressionType)
+        {
+            Type proType = propertyInfo.PropertyType;
+            ConstantExpression constant = proType.ToString() == "System.String"
+               ? Expression.Constant(propertyValue) : Expression.Constant(propertyValue.ToString().ChangeType(proType));
+
+            // DateTime鍙�夋嫨浜嗘棩鏈熺殑鏃跺�欒嚜鍔ㄥ湪缁撴潫鏃ユ湡鍔犱竴澶╋紝淇DateTime绫诲瀷浣跨敤鏃ユ湡鍖洪棿鏌ヨ鏃犳硶鏌ヨ鍒扮粨鏉熸棩鏈熺殑闂
+            if ((proType == typeof(DateTime) || proType == typeof(DateTime?)) && expressionType == LinqExpressionType.LessThanOrEqual && propertyValue.ToString().Length == 10)
+            {
+                constant = Expression.Constant(Convert.ToDateTime(propertyValue.ToString()).AddDays(1));
+            }
+            parameter = parameter ?? Expression.Parameter(typeof(TEntity), "b");
+            //鍒涘缓鑺傜偣鐨勫睘鎬=>p.name 灞炴�ame
+            MemberExpression memberProperty = Expression.PropertyOrField(parameter, propertyInfo.Name);
+            UnaryExpression member = Expression.Convert(memberProperty, constant.Type);
+            Expression<Func<TEntity, bool>> expression = p => false;
+            switch (expressionType)
+            {
+                //p=>p.propertyName == propertyValue
+                case LinqExpressionType.Equal:
+                    expression = Expression.Lambda<Func<TEntity, bool>>(Expression.Equal(member, constant), parameter);
+                    break;
+                //p=>p.propertyName != propertyValue
+                case LinqExpressionType.NotEqual:
+                    expression = Expression.Lambda<Func<TEntity, bool>>(Expression.NotEqual(member, constant), parameter);
+                    break;
+                //   p => p.propertyName > propertyValue
+                case LinqExpressionType.GreaterThan:
+                    expression = Expression.Lambda<Func<TEntity, bool>>(Expression.GreaterThan(member, constant), parameter);
+                    break;
+                //   p => p.propertyName < propertyValue
+                case LinqExpressionType.LessThan:
+                    expression = Expression.Lambda<Func<TEntity, bool>>(Expression.LessThan(member, constant), parameter);
+                    break;
+                // p => p.propertyName >= propertyValue
+                case LinqExpressionType.ThanOrEqual:
+                    expression = Expression.Lambda<Func<TEntity, bool>>(Expression.GreaterThanOrEqual(member, constant), parameter);
+                    break;
+                // p => p.propertyName <= propertyValue
+                case LinqExpressionType.LessThanOrEqual:
+                    expression = Expression.Lambda<Func<TEntity, bool>>(Expression.LessThanOrEqual(member, constant), parameter);
+                    break;
+                //   p => p.propertyName.Contains(propertyValue)
+                // p => !p.propertyName.Contains(propertyValue)
+                case LinqExpressionType.Contains:
+                case LinqExpressionType.NotContains:
+                    MethodInfo method = typeof(string).GetMethod("Contains", new[] { typeof(string) });
+                    constant = Expression.Constant(propertyValue, typeof(string));
+                    if (expressionType == LinqExpressionType.Contains)
+                    {
+                        expression = Expression.Lambda<Func<TEntity, bool>>(Expression.Call(member, method, constant), parameter);
+                    }
+                    else
+                    {
+                        expression = Expression.Lambda<Func<TEntity, bool>>(Expression.Not(Expression.Call(member, method, constant)), parameter);
+                    }
+                    break;
+                default:
+                    // 
+                    expression = p => false;
+                    break;
+            }
+            return expression;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Utilities/ModelValidate.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Utilities/ModelValidate.cs"
new file mode 100644
index 0000000..b8bb9a9
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Utilities/ModelValidate.cs"
@@ -0,0 +1,239 @@
+锘縰sing Microsoft.AspNetCore.Mvc.ModelBinding;
+using Microsoft.Extensions.DependencyModel;
+using Microsoft.IdentityModel.Tokens;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
+using SqlSugar;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.Utilities
+{
+    public class ModelValidate
+    {
+        /// <summary>
+        /// 楠岃瘉瀹炰綋鍙傛暟
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="data"></param>
+        /// <returns></returns>
+        public static (bool, string, object?) ValidateModelData<T>(T data) where T : class, new()
+        {
+            Type modelType = typeof(T);
+            if (data == null) return (false, "浼犲叆鍙傛暟涓嶅彲涓簄ull", data);
+            ModelValidateAttribute? modelAttribute = modelType.GetCustomAttribute<ModelValidateAttribute>();
+            if (modelAttribute == null) return (false, $"{modelType.Name}鏈畾涔夈�怣odelValidateAttribute銆戠壒鎬�", data);
+            PropertyInfo[] propertyInfos = modelType.GetProperties();
+            return SimpleValidate(propertyInfos, data);
+        }
+
+        public static (bool, string, object?) ValidateModelData(object data, Type type)
+        {
+            if (data == null) return (false, "浼犲叆鍙傛暟涓嶅彲涓簄ull", data);
+            ModelValidateAttribute? modelAttribute = type.GetCustomAttribute<ModelValidateAttribute>();
+            if (modelAttribute == null) return (false, $"{type.Name}鏈畾涔夈�怣odelValidateAttribute銆戠壒鎬�", data);
+            PropertyInfo[] propertyInfos = type.GetProperties();
+            return SimpleValidate(propertyInfos, data);
+        }
+
+        /// <summary>
+        /// 楠岃瘉瀹炰綋鍙傛暟
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="data"></param>
+        /// <returns></returns>
+        public static (bool, string, object?) ValidateModelData<T>(List<T> datas) where T : class, new()
+        {
+            Type modelType = typeof(T);
+            if (datas == null) return (false, "浼犲叆鍙傛暟涓嶅彲涓簄ull", datas);
+            if (datas.Count == 0) return (false, "闆嗗悎涓暟涓嶅彲绛変簬0", datas);
+            foreach (T data in datas)
+            {
+                if (data == null) return (false, "浼犲叆鍙傛暟涓嶅彲涓簄ull", data);
+                ModelValidateAttribute? modelAttribute = modelType.GetCustomAttribute<ModelValidateAttribute>();
+                if (modelAttribute == null) return (false, $"{modelType.Name}鏈畾涔夈�怣odelValidateAttribute銆戠壒鎬�", data);
+                PropertyInfo[] propertyInfos = modelType.GetProperties();
+                (bool, string, object?) result = SimpleValidate(propertyInfos, data);
+                if (!result.Item1) return result;
+            }
+
+            return (true, $"鎴愬姛", datas);
+        }
+
+        private static (bool, string, object?) SimpleValidate<T>(PropertyInfo[] propertyInfos, T data) where T : class, new()
+        {
+            try
+            {
+                foreach (PropertyInfo propertyInfo in propertyInfos)
+                {
+                    PropertyValidateAttribute? propertyAttribute = propertyInfo.GetCustomAttribute<PropertyValidateAttribute>();
+                    if (propertyAttribute == null) continue;
+
+                    object? value = propertyInfo.GetValue(data, null);
+                    if (value is IList)
+                    {
+                        IList list = (IList)value;
+                        Type? t = list.GetType().GetGenericArguments().FirstOrDefault();
+                        if (t != null && t.IsClass)
+                        {
+                            foreach (var item in list)
+                            {
+                                (bool, string, object?) result = ValidateModelData(item, t);
+                                if (!result.Item1) return result;
+                            }
+                        }
+                    }
+
+                    if (propertyAttribute.NotNullAndEmpty)
+                    {
+                        if (value == null) return (false, $"{(string.IsNullOrEmpty(propertyAttribute.Description) ? propertyInfo.Name : propertyAttribute.Description)}({propertyInfo.Name})涓嶅彲涓簄ull", data);
+                        if (string.IsNullOrEmpty(value.ToString())) return (false, $"{(string.IsNullOrEmpty(propertyAttribute.Description) ? propertyInfo.Name : propertyAttribute.Description)}({propertyInfo.Name})涓嶅彲涓虹┖瀛楃涓�", data);
+                    }
+
+                    if (propertyAttribute.MinValue > int.MinValue)
+                    {
+                        if (value == null) return (false, $"{(string.IsNullOrEmpty(propertyAttribute.Description) ? propertyInfo.Name : propertyAttribute.Description)}({propertyInfo.Name})涓嶅彲涓簄ull", data);
+                        if (propertyAttribute.IsContainMinValue)
+                        {
+                            if (Convert.ToInt32(value.ToString()) < propertyAttribute.MinValue) return (false, $"{(string.IsNullOrEmpty(propertyAttribute.Description) ? propertyInfo.Name : propertyAttribute.Description)}({propertyInfo.Name})鐨勫�笺�恵value}銆戜笉鍙皬浜庛�恵propertyAttribute.MinValue}銆�", data);
+                        }
+                        else
+                        {
+                            if (Convert.ToInt32(value.ToString()) <= propertyAttribute.MinValue) return (false, $"{(string.IsNullOrEmpty(propertyAttribute.Description) ? propertyInfo.Name : propertyAttribute.Description)}({propertyInfo.Name})鐨勫�笺�恵value}銆戣澶т簬銆恵propertyAttribute.MinValue}銆�", data);
+                        }
+                    }
+
+                    if (propertyAttribute.MaxValue < int.MaxValue)
+                    {
+                        if (value == null) return (false, $"{(string.IsNullOrEmpty(propertyAttribute.Description) ? propertyInfo.Name : propertyAttribute.Description)}({propertyInfo.Name})涓嶅彲涓簄ull", data);
+                        if (propertyAttribute.IsContainMaxValue)
+                        {
+                            if (Convert.ToInt32(value.ToString()) >= propertyAttribute.MaxValue) return (false, $"{(string.IsNullOrEmpty(propertyAttribute.Description) ? propertyInfo.Name : propertyAttribute.Description)}({propertyInfo.Name})鐨勫�笺�恵value}銆戜笉鍙ぇ浜庛�恵propertyAttribute.MaxValue}銆�", data);
+                        }
+                        else
+                        {
+                            if (Convert.ToInt32(value.ToString()) > propertyAttribute.MaxValue) return (false, $"{(string.IsNullOrEmpty(propertyAttribute.Description) ? propertyInfo.Name : propertyAttribute.Description)}({propertyInfo.Name})鐨勫�笺�恵value}銆戣灏忎簬銆恵propertyAttribute.MaxValue}銆�", data);
+                        }
+                    }
+
+                    if (!string.IsNullOrEmpty(propertyAttribute.NotNullAndEmptyWithProperty))
+                    {
+                        PropertyInfo? property = propertyInfos.FirstOrDefault(x => x.Name == propertyAttribute.NotNullAndEmptyWithProperty);
+                        if (property != null)
+                        {
+                            object? tempValue = property.GetValue(data);
+                            if (tempValue != null && !string.IsNullOrEmpty(tempValue.ToString()))
+                            {
+                                Type[] types = propertyInfo.PropertyType.GenericTypeArguments;
+                                if (types.Length == 1)
+                                {
+                                    string str = value.Serialize();
+                                    if (str == "[]")
+                                    {
+                                        return (false, $"銆恵property.Name}銆戝睘鎬х殑鍊奸潪绌烘椂銆恵propertyInfo.Name}銆戝睘鎬х殑鍊间篃涓嶅彲涓虹┖", data);
+                                    }
+                                }
+                                else if (types.Length == 0)
+                                {
+                                    if (value == null)
+                                    {
+                                        return (false, $"銆恵property.Name}銆戝睘鎬х殑鍊奸潪绌烘椂銆恵propertyInfo.Name}銆戝睘鎬х殑鍊间篃涓嶅彲涓虹┖", data);
+                                    }
+                                }
+
+                            }
+                        }
+                        else
+                        {
+                            return (false, $"鏈壘鍒般�恵propertyInfo.Name}銆戠壒鎬у睘鎬с�恵propertyAttribute.NotNullAndEmptyWithProperty}銆�", data);
+                        }
+                    }
+
+                    if (propertyAttribute.NotNullAndEmptyWithPropertyAndValue != null && propertyAttribute.NotNullAndEmptyWithPropertyAndValue.Length == 2)
+                    {
+                        PropertyInfo? property = propertyInfos.FirstOrDefault(x => x.Name == propertyAttribute.NotNullAndEmptyWithPropertyAndValue[0]);
+                        if (property != null)
+                        {
+                            object? tempValue = property.GetValue(data);
+                            if (tempValue != null && !string.IsNullOrEmpty(tempValue.ToString()))
+                            {
+                                Type[] types = propertyInfo.PropertyType.GenericTypeArguments;
+                                if (types.Length == 1)
+                                {
+                                    if (tempValue.ChangeType(property.PropertyType).ToString() == propertyAttribute.NotNullAndEmptyWithPropertyAndValue[1].ChangeType(property.PropertyType).ToString())
+                                    {
+                                        string str = value.Serialize();
+
+                                        if (typeof(IList).IsAssignableFrom(property.PropertyType) && str == "[]")
+                                        {
+                                            return (false, $"銆恵property.Name}銆戝睘鎬х殑鍊间负銆恵propertyAttribute.NotNullAndEmptyWithPropertyAndValue[1]}銆戞椂銆恵propertyInfo.Name}銆戝睘鎬х殑鍊间笉鍙负绌�", data);
+                                        }
+                                        else if (property.PropertyType.IsArray && str == "[]")
+                                        {
+                                            return (false, $"銆恵property.Name}銆戝睘鎬х殑鍊间负銆恵propertyAttribute.NotNullAndEmptyWithPropertyAndValue[1]}銆戞椂銆恵propertyInfo.Name}銆戝睘鎬х殑鍊间笉鍙负绌�", data);
+                                        }
+                                    }
+                                }
+                                else if (types.Length == 0)
+                                {
+                                    if (tempValue.ChangeType(property.PropertyType).ToString() == propertyAttribute.NotNullAndEmptyWithPropertyAndValue[1].ChangeType(property.PropertyType).ToString() && value == null && string.IsNullOrEmpty(value.ToString()))
+                                    {
+                                        return (false, $"銆恵property.Name}銆戝睘鎬х殑鍊间负銆恵propertyAttribute.NotNullAndEmptyWithPropertyAndValue[1]}銆戞椂銆恵propertyInfo.Name}銆戝睘鎬х殑鍊间笉鍙负绌�", data);
+                                    }
+                                }
+                            }
+                        }
+                        else
+                        {
+                            return (false, $"鏈壘鍒板睘鎬с�恵propertyAttribute.NotNullAndEmptyWithProperty}銆�", data);
+                        }
+                    }
+
+                    if (propertyAttribute.Check != null && propertyAttribute.Check.Length > 0)
+                    {
+                        if (value == null) return (false, $"{(string.IsNullOrEmpty(propertyAttribute.Description) ? propertyInfo.Name : propertyAttribute.Description)}({propertyInfo.Name})涓嶅彲涓簄ull", data);
+                        if (propertyAttribute.Check.FirstOrDefault(x => x.ToString() == value.ToString()) == null) return (false, $"{(string.IsNullOrEmpty(propertyAttribute.Description) ? propertyInfo.Name : propertyAttribute.Description)}({propertyInfo.Name})浣跨敤浜咰heck绾︽潫锛屼紶鍏ョ殑鍊间笉鍦▄propertyAttribute.Check.Serialize()}涓�", data);
+                    }
+
+                    if (!string.IsNullOrEmpty(propertyAttribute.StartWith) && !string.IsNullOrWhiteSpace(propertyAttribute.EndWith))
+                    {
+                        if (value == null) return (false, $"{(string.IsNullOrEmpty(propertyAttribute.Description) ? propertyInfo.Name : propertyAttribute.Description)}({propertyInfo.Name})涓嶅彲涓簄ull", data);
+                        else
+                        {
+                            if (value.ToString().StartsWith(propertyAttribute.StartWith.Trim())) return (false, $"{(string.IsNullOrEmpty(propertyAttribute.Description) ? propertyInfo.Name : propertyAttribute.Description)}({propertyInfo.Name})蹇呴』浠propertyAttribute.StartWith}寮�澶�", data);
+                        }
+                    }
+
+                    if (!string.IsNullOrEmpty(propertyAttribute.EndWith) && !string.IsNullOrWhiteSpace(propertyAttribute.EndWith))
+                    {
+                        if (value == null) return (false, $"{(string.IsNullOrEmpty(propertyAttribute.Description) ? propertyInfo.Name : propertyAttribute.Description)}({propertyInfo.Name})涓嶅彲涓簄ull", data);
+                        else
+                        {
+                            if (value.ToString().EndsWith(propertyAttribute.EndWith.Trim())) return (false, $"{(string.IsNullOrEmpty(propertyAttribute.Description) ? propertyInfo.Name : propertyAttribute.Description)}({propertyInfo.Name})蹇呴』浠propertyAttribute.EndWith}缁撳熬", data);
+                        }
+                    }
+
+                    if (propertyAttribute.MaxLength > propertyAttribute.MinLength && propertyAttribute.MinLength > 0)
+                    {
+                        if (value == null) return (false, $"{(string.IsNullOrEmpty(propertyAttribute.Description) ? propertyInfo.Name : propertyAttribute.Description)}涓嶅彲涓簄ull", data);
+                        if (value.ToString().Length > propertyAttribute.MaxLength) return (false, $"{(string.IsNullOrEmpty(propertyAttribute.Description) ? propertyInfo.Name : propertyAttribute.Description)}鐨勫�艰秴鍑烘渶澶ч暱搴︺�恵propertyAttribute.MaxLength}銆戯紝鏁版嵁:{value}", data);
+
+                        if (value.ToString().Length < propertyAttribute.MinLength) return (false, $"{(string.IsNullOrEmpty(propertyAttribute.Description) ? propertyInfo.Name : propertyAttribute.Description)}鐨勫�煎皬浜庢渶灏忛暱搴︺�恵propertyAttribute.MinLength}銆戯紝鏁版嵁:{value}", data);
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                return (false, $"鏁版嵁楠岃瘉寮傚父,寮傚父淇℃伅:{ex.Message}", data);
+            }
+            return (true, "楠岃瘉鎴愬姛", data);
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Utilities/ParamsValidator.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Utilities/ParamsValidator.cs"
new file mode 100644
index 0000000..1be56f5
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Utilities/ParamsValidator.cs"
@@ -0,0 +1,48 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.Filters;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+
+namespace WIDESEA_Core.Utilities
+{
+    public static class ParamsValidator
+    {
+        public static void ActionParamsValidator(this ActionExecutingContext context)
+        {
+            List<object> obj = context.ActionDescriptor.EndpointMetadata.ToList();
+
+            if (obj.Any(x => x is MethodParamsValidateAttribute))
+            {
+                foreach (var param in context.ActionDescriptor.Parameters)
+                {
+                    ModelValidateAttribute? modelValidate = param.ParameterType.GetCustomAttribute<ModelValidateAttribute>();
+                    if (modelValidate != null && context.ActionArguments.TryGetValue(param.Name, out object? value) && value != null)
+                    {
+                        (bool, string, object?) result = ModelValidate.ValidateModelData(value, param.ParameterType);
+                        if (!result.Item1)
+                        {
+                            context.Result = new JsonResult(new WebResponseContent()
+                            {
+                                Status = false,
+                                Data = result.Item3,
+                                Message = result.Item2
+                            });
+                        }
+                    }
+                    //else
+                    //{
+                    //    if (param.ParameterType == typeof(SaveModel) && context.ActionArguments.TryGetValue(param.Name, out value) && value != null)
+                    //    {
+
+                    //    }
+                    //}
+                }
+            }
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Utilities/VierificationCode.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Utilities/VierificationCode.cs"
new file mode 100644
index 0000000..b0cdec4
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Utilities/VierificationCode.cs"
@@ -0,0 +1,122 @@
+锘縰sing SkiaSharp;
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Utilities
+{
+    public static class VierificationCode
+    {
+        private static readonly string[] _chars = new string[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "P", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
+
+        private static readonly SKColor[] colors = { SKColors.Black, SKColors.Green, SKColors.Brown };
+
+        private static readonly string[] fonts = { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "瀹嬩綋" };
+        public static string RandomText()
+        {
+            string code = "";//浜х敓鐨勯殢鏈烘暟
+            int temp = -1;
+            Random rand = new Random();
+            for (int i = 1; i < 5; i++)
+            {
+                if (temp != -1)
+                {
+                    rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks));
+                }
+                int t = rand.Next(61);
+                if (temp != -1 && temp == t)
+                {
+                    return RandomText();
+                }
+                temp = t;
+                code += _chars[t];
+            }
+            return code;
+        }
+        public static string CreateBase64Imgage(string code)
+        {
+            var random = new Random();
+            var info = new SKImageInfo((int)code.Length * 18, 32);
+            using var bitmap = new SKBitmap(info);
+            using var canvas = new SKCanvas(bitmap);
+
+            canvas.Clear(SKColors.White);
+
+            using var pen = new SKPaint();
+            pen.FakeBoldText = true;
+            pen.Style = SKPaintStyle.Fill;
+            pen.TextSize = 20;// 0.6f * info.Width * pen.TextSize / pen.MeasureText(code);
+
+            //缁樺埗闅忔満瀛楃
+            for (int i = 0; i < code.Length; i++)
+            {
+                pen.Color = random.GetRandom(colors);//闅忔満棰滆壊绱㈠紩鍊�
+
+                pen.Typeface = SKTypeface.FromFamilyName(random.GetRandom(fonts), 700, 20, SKFontStyleSlant.Italic);//閰嶇疆瀛椾綋
+                var point = new SKPoint()
+                {
+                    X = i * 16,
+                    Y = 22// info.Height - ((i + 1) % 2 == 0 ? 2 : 4),
+
+                };
+                canvas.DrawText(code.Substring(i, 1), point, pen);//缁樺埗涓�涓獙璇佸瓧绗�
+
+            }
+
+            // 缁樺埗鍣偣
+            var points = Enumerable.Range(0, 100).Select(
+                _ => new SKPoint(random.Next(bitmap.Width), random.Next(bitmap.Height))
+            ).ToArray();
+            canvas.DrawPoints(
+                SKPointMode.Points,
+                points,
+                pen);
+
+            //缁樺埗璐濆灏旂嚎鏉�
+            for (int i = 0; i < 2; i++)
+            {
+                var p1 = new SKPoint(0, 0);
+                var p2 = new SKPoint(0, 0);
+                var p3 = new SKPoint(0, 0);
+                var p4 = new SKPoint(0, 0);
+
+                var touchPoints = new SKPoint[] { p1, p2, p3, p4 };
+
+                using var bPen = new SKPaint();
+                bPen.Color = random.GetRandom(colors);
+                bPen.Style = SKPaintStyle.Stroke;
+
+                using var path = new SKPath();
+                path.MoveTo(touchPoints[0]);
+                path.CubicTo(touchPoints[1], touchPoints[2], touchPoints[3]);
+                canvas.DrawPath(path, bPen);
+            }
+            return bitmap.ToBase64String(SKEncodedImageFormat.Png);
+        }
+
+        public static T GetRandom<T>(this Random random, T[] tArray)
+        {
+            if (random == null) random = new Random();
+            return tArray[random.Next(tArray.Length)];
+        }
+
+        /// <summary>
+        /// SKBitmap杞珺ase64String
+        /// </summary>
+        /// <param name="bitmap"></param>
+        /// <param name="format"></param>
+        /// <returns></returns>
+        public static string ToBase64String(this SKBitmap bitmap, SKEncodedImageFormat format)
+        {
+            using var memStream = new MemoryStream();
+            using var wstream = new SKManagedWStream(memStream);
+            bitmap.Encode(wstream, format, 32);
+            memStream.TryGetBuffer(out ArraySegment<byte> buffer);
+            return $"{Convert.ToBase64String(buffer.Array, 0, (int)memStream.Length)}";
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/WIDESEA_Core.csproj" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/WIDESEA_Core.csproj"
new file mode 100644
index 0000000..be85784
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/WIDESEA_Core.csproj"
@@ -0,0 +1,41 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+    <Version>1.0.0</Version>
+    <Authors></Authors>
+    <Description></Description>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Autofac" Version="8.0.0" />
+    <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="9.0.0" />
+    <PackageReference Include="Autofac.Extras.DynamicProxy" Version="7.1.0" />
+    <PackageReference Include="AutoMapper" Version="13.0.1" />
+    <PackageReference Include="HslCommunication" Version="12.1.3" />
+    <PackageReference Include="Magicodes.IE.EPPlus" Version="2.7.5.1" />
+    <PackageReference Include="Magicodes.IE.Excel" Version="2.7.5.1" />
+    <PackageReference Include="MailKit" Version="4.7.1.1" />
+    <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.29" />
+    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" />
+    <PackageReference Include="MiniProfiler.AspNetCore.Mvc" Version="4.3.8" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="OfficeOpenXml.Core.ExcelPackage" Version="1.0.0" />
+    <PackageReference Include="Quartz" Version="3.13.1" />
+    <PackageReference Include="SkiaSharp" Version="2.88.8" />
+    <PackageReference Include="SqlSugarCore" Version="5.1.4.167" />
+    <PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
+    <PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="7.0.5" />
+    <PackageReference Include="Swashbuckle.AspNetCore.Newtonsoft" Version="6.5.0" />
+    <PackageReference Include="System.Linq.Dynamic.Core" Version="1.4.5" />
+    <PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Folder Include="ServiceExtensions\" />
+    <Folder Include="SystemConfig\" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Basic/CachePointGroupDTO.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Basic/CachePointGroupDTO.cs"
new file mode 100644
index 0000000..edd66c5
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Basic/CachePointGroupDTO.cs"
@@ -0,0 +1,35 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.Basic
+{
+    public class CachePointGroupDTO
+    {
+        public int IdA { get; set; }
+
+        public int IdB { get; set; }
+
+        public string PointCodeA { get; set; }
+
+        public string PointCodeB { get; set; }
+
+        public int PointTypeA { get; set; }
+
+        public int PointTypeB { get; set; }
+
+        public int PointStatusA { get; set; }
+
+        public int PointStatusB { get; set; }
+
+        public int DepthA { get; set; }
+
+        public int DepthB { get; set; }
+
+        public int EnableStatusA { get; set; }
+
+        public int EnableStatusB { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Basic/InitializationLocationDTO.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Basic/InitializationLocationDTO.cs"
new file mode 100644
index 0000000..cd6e309
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Basic/InitializationLocationDTO.cs"
@@ -0,0 +1,43 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+
+namespace WIDESEA_DTO.Basic
+{
+    [ModelValidate]
+    public class InitializationLocationDTO
+    {
+        /// <summary>
+        /// 宸烽亾鍙�
+        /// </summary>
+        [PropertyValidate("宸烽亾鍙�", NotNullAndEmpty = true)]
+        public string Roadway { get; set; }
+
+        /// <summary>
+        /// 琛�
+        /// </summary>
+        [PropertyValidate("琛�", MinValue = 1, IsContainMinValue = false)]
+        public int MaxRow { get; set; }
+
+        /// <summary>
+        /// 鍒�
+        /// </summary>
+        [PropertyValidate("鍒�", MinValue = 1, IsContainMinValue = false)]
+        public int MaxColumn { get; set; }
+
+        /// <summary>
+        /// 灞�
+        /// </summary>
+        [PropertyValidate("灞�", MinValue = 1, IsContainMinValue = false)]
+        public int MaxLayer { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍗曟繁璐т綅
+        /// </summary>
+        [PropertyValidate("娣卞害", MinValue = 1, NotNullAndEmpty = true, IsContainMinValue = true)]
+        public int Depth { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Basic/InnerCodeDTO.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Basic/InnerCodeDTO.cs"
new file mode 100644
index 0000000..3d2e1a6
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Basic/InnerCodeDTO.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.Basic
+{
+    public class InnerCodeDTO
+    {
+        public string matCode { get; set; }
+        public string batchNo { get; set; }
+        public string purchaseOrderNo { get; set; }
+        public int qty { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Basic/LocationGroupDTO.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Basic/LocationGroupDTO.cs"
new file mode 100644
index 0000000..a3df6d3
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Basic/LocationGroupDTO.cs"
@@ -0,0 +1,35 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.Basic
+{
+    public class LocationGroupDTO
+    {
+        public int IdA { get; set; }
+
+        public int IdB { get; set; }
+
+        public string LocationCodeA { get; set; }
+
+        public string LocationCodeB { get; set; }
+
+        public int LocationTypeA { get; set; }
+
+        public int LocationTypeB { get; set; }
+
+        public int LocationStatusA { get; set; }
+
+        public int LocationStatusB { get; set; }
+
+        public int DepthA { get; set; }
+
+        public int DepthB { get; set; }
+
+        public int EnableStatusA { get; set; }
+
+        public int EnableStatusB { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Basic/MatSerNumAnalysisModel.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Basic/MatSerNumAnalysisModel.cs"
new file mode 100644
index 0000000..d8c83e1
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Basic/MatSerNumAnalysisModel.cs"
@@ -0,0 +1,59 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+using WIDESEA_Core.CodeConfigEnum;
+
+namespace WIDESEA_DTO.Basic
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    [AnalysisRule, ModelValidate]
+    public class MatSerNumAnalysisModel
+    {
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [AnalysisItemRule(AnalysisFormatTypeEnum.MTC), PropertyValidate("鐗╂枡缂栧彿", NotNullAndEmpty = true)]
+        public string MaterielCode { get; set; }
+
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        [AnalysisItemRule(AnalysisFormatTypeEnum.BHN), PropertyValidate("鎵规鍙�", NotNullAndEmpty = true)]
+        public string LotNo { get; set; }
+
+        /// <summary>
+        /// 鐢熶骇鏃ユ湡
+        /// </summary>
+        [AnalysisItemRule(AnalysisFormatTypeEnum.MTPD), PropertyValidate("鐢熶骇鏃ユ湡", NotNullAndEmpty = true)]
+        public string ProductionDate { get; set; }
+
+        /// <summary>
+        /// 鏈夋晥鏈�
+        /// </summary>
+        [AnalysisItemRule(AnalysisFormatTypeEnum.ED), PropertyValidate("鏈夋晥鏈�", NotNullAndEmpty = true)]
+        public string EffectiveDate { get; set; }
+
+        /// <summary>
+        /// 閲囪喘鍗曞彿
+        /// </summary>
+        [AnalysisItemRule(AnalysisFormatTypeEnum.ODN), PropertyValidate("閲囪喘鍗曞彿", NotNullAndEmpty = true)]
+        public string PurchaseOrderNo { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        [AnalysisItemRule(AnalysisFormatTypeEnum.MTQ), PropertyValidate("鏁伴噺", NotNullAndEmpty = true)]
+        public float Quantity { get; set; }
+
+        /// <summary>
+        /// 鍘熷鏁版嵁
+        /// </summary>
+        [AnalysisItemRule(AnalysisFormatTypeEnum.BD), PropertyValidate("鍘熷鏁版嵁", NotNullAndEmpty = true)]
+        public string SerialNumber { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Basic/SupplierDTO.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Basic/SupplierDTO.cs"
new file mode 100644
index 0000000..f5d96aa
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Basic/SupplierDTO.cs"
@@ -0,0 +1,79 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+
+namespace WIDESEA_DTO.Basic
+{
+    [ModelValidate]
+    public class SupplierDTO
+    {
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鐮�
+        /// </summary>
+        [PropertyValidate("渚涘簲鍟嗙紪鐮�", NotNullAndEmpty = true)]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 渚涘簲鍟嗗叏绉�
+        /// </summary>
+        [PropertyValidate("渚涘簲鍟嗗叏绉�", NotNullAndEmpty = true)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 渚涘簲鍟嗙畝绉�
+        /// </summary>
+        [PropertyValidate("渚涘簲鍟嗙畝绉�", NotNullAndEmpty = true)]
+        public string ShortName { get; set; }
+
+        /// <summary>
+        /// 鑱旂郴浜�
+        /// </summary>
+        [PropertyValidate("鑱旂郴浜�", NotNullAndEmpty = true)]
+        public string Contacts { get; set; }
+
+        /// <summary>
+        /// 鑱旂郴鐢佃瘽
+        /// </summary>
+        [PropertyValidate("鑱旂郴鐢佃瘽", NotNullAndEmpty = true)]
+        public string ContactNumber { get; set; }
+
+        /// <summary>
+        /// 鑱旂郴鍦板潃
+        /// </summary>
+        [PropertyValidate("鑱旂郴鍦板潃", NotNullAndEmpty = true)]
+        public string ContactAddress { get; set; }
+
+        /// <summary>
+        /// 鐢靛瓙閭
+        /// </summary>
+        [PropertyValidate("鐢靛瓙閭", NotNullAndEmpty = true)]
+        public string Email { get; set; }
+
+        /// <summary>
+        /// 鎻忚堪
+        /// </summary>
+        [PropertyValidate("鎻忚堪", NotNullAndEmpty = true)]
+        public string Description { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        [PropertyValidate("鐘舵��", NotNullAndEmpty = true)]
+        public int State { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨缁勭粐
+        /// </summary>
+        [PropertyValidate("搴撳瓨缁勭粐", NotNullAndEmpty = true)]
+        public string InvOrgId { get; set; } = "娣畨鐗瑰垱浜屽巶";
+
+        /// <summary>
+        /// 鎿嶄綔绫诲瀷
+        /// </summary>
+        [PropertyValidate("鎿嶄綔绫诲瀷", NotNullAndEmpty = true,Check = new object[] { 0, 1, 2 })]
+        public string OperateType { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Inbound/InboundOrderAddDTO.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Inbound/InboundOrderAddDTO.cs"
new file mode 100644
index 0000000..8665342
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Inbound/InboundOrderAddDTO.cs"
@@ -0,0 +1,79 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+
+namespace WIDESEA_DTO.Inbound
+{
+    [ModelValidate]
+    public class InboundOrderAddDTO
+    {
+        /// <summary>
+        /// 涓婃父鍗曟嵁缂栧彿
+        /// </summary>
+        [PropertyValidate("涓婃父鍗曟嵁缂栧彿", NotNullAndEmpty = true)]
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁绫诲瀷
+        /// </summary>
+        [PropertyValidate("鍗曟嵁绫诲瀷", NotNullAndEmpty = true)]
+        public int Type { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔绫诲瀷
+        /// </summary>
+        [PropertyValidate("鎿嶄綔绫诲瀷", Check = new object[] { 1, 2, 3, 4 })]
+        public int OperateType { get; set; }
+
+        /// <summary>
+        /// 閲囪喘鏁伴噺
+        /// </summary>
+        [PropertyValidate("閲囪喘鏁伴噺", MinValue = 0, IsContainMinValue = false)]
+        public float Amount { get; set; }
+
+        /// <summary>
+        /// 涓嬪崟鏃ユ湡
+        /// </summary>
+        [PropertyValidate("涓嬪崟鏃ユ湡", NotNullAndEmpty = true)]
+        public string OrderDate { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Note { get; set; }
+
+        [PropertyValidate("鍗曟嵁鏄庣粏淇℃伅", NotNullAndEmpty = true)]
+        public List<InboundOrderDetailAddDTO> MList { get; set; }
+    }
+
+    [ModelValidate]
+    public class InboundOrderDetailAddDTO
+    {
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [PropertyValidate("鐗╂枡缂栧彿", NotNullAndEmpty = true)]
+        public string MaterielCode { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        [PropertyValidate("鏁伴噺", NotNullAndEmpty = true, MinValue = 0, IsContainMinValue = false)]
+        public float Qty { get; set; }
+
+        /// <summary>
+        /// 浠撳簱缂栧彿
+        /// </summary>
+        [PropertyValidate("浠撳簱缂栧彿", NotNullAndEmpty = true)]
+        public int WaId { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅
+        /// </summary>
+        [PropertyValidate("鍗曚綅", NotNullAndEmpty = true)]
+        public string Unit { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Inbound/InboundOrderDetailAddDTO.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Inbound/InboundOrderDetailAddDTO.cs"
new file mode 100644
index 0000000..37aca4d
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Inbound/InboundOrderDetailAddDTO.cs"
@@ -0,0 +1,11 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+
+namespace WIDESEA_DTO.Inbound
+{
+    
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Inbound/InboundOrderGetDTO.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Inbound/InboundOrderGetDTO.cs"
new file mode 100644
index 0000000..f9defcf
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Inbound/InboundOrderGetDTO.cs"
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.Inbound
+{
+    public class InboundOrderGetDTO
+    {
+        public string OrderNo { get; set; }
+        public int pageNo { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Inbound/MaterielGroupDTO.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Inbound/MaterielGroupDTO.cs"
new file mode 100644
index 0000000..f29b9b9
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Inbound/MaterielGroupDTO.cs"
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+
+namespace WIDESEA_DTO.Inbound
+{
+    [ModelValidate]
+    public class MaterielGroupDTO
+    {
+        [PropertyValidate("鎵樼洏缂栧彿", NotNullAndEmpty = true)]
+        public string PalletCode { get; set; }
+
+        [PropertyValidate("鍗曟嵁缂栧彿", NotNullAndEmpty = true)]
+        public string OrderNo { get; set; }
+
+        [PropertyValidate("搴忓垪鍙锋潯鐮�", NotNullAndEmpty = true)]
+        public List<string> SerialNumbers { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Outbound/OutboundOrderAddDTO.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Outbound/OutboundOrderAddDTO.cs"
new file mode 100644
index 0000000..7d949ad
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Outbound/OutboundOrderAddDTO.cs"
@@ -0,0 +1,37 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+
+namespace WIDESEA_DTO.Outbound
+{
+    [ModelValidate]
+    public class OutboundOrderAddDTO
+    {
+        /// <summary>
+        /// 涓婃父鍗曟嵁缂栧彿
+        /// </summary>
+        public string UpperOrderNo { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁绫诲瀷
+        /// </summary>
+        [PropertyValidate("鍗曟嵁绫诲瀷", NotNullAndEmpty = true)]
+        public int OrderType { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+
+        [PropertyValidate("鍗曟嵁鏄庣粏淇℃伅", NotNullAndEmpty = true)]
+        public List<OutboundOrderDetailAddDTO> Details { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Outbound/OutboundOrderDetailAddDTO.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Outbound/OutboundOrderDetailAddDTO.cs"
new file mode 100644
index 0000000..e5bbbf8
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Outbound/OutboundOrderDetailAddDTO.cs"
@@ -0,0 +1,39 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+
+namespace WIDESEA_DTO.Outbound
+{
+    [ModelValidate]
+    public class OutboundOrderDetailAddDTO
+    {
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [PropertyValidate("鐗╂枡缂栧彿", NotNullAndEmpty = true)]
+        public string MaterielCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string MaterielName { get; set; }
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        public string BatchNo { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鏁伴噺
+        /// </summary>
+        [PropertyValidate("鍗曟嵁鏁伴噺", NotNullAndEmpty = true, MinValue = 0, IsContainMinValue = false)]
+        public decimal OrderQuantity { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Outbound/OutboundOrderGetDTO.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Outbound/OutboundOrderGetDTO.cs"
new file mode 100644
index 0000000..e029706
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Outbound/OutboundOrderGetDTO.cs"
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.Outbound
+{
+    public class OutboundOrderGetDTO
+    {
+        public string OrderNo { get; set; }
+        public int pageNo { get; set; }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/SquareCabin/ApiResponse.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/SquareCabin/ApiResponse.cs"
new file mode 100644
index 0000000..748e207
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/SquareCabin/ApiResponse.cs"
@@ -0,0 +1,41 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.SquareCabin
+{
+    public class ApiResponse<T>
+    {
+        /// <summary>
+        /// 鍝嶅簲鐮侊細0鎴愬姛锛屽叾瀹冨け璐�
+        /// </summary>
+        public string code { get; set; } = "0";
+
+        /// <summary>
+        /// 鎻愮ず淇℃伅
+        /// </summary>
+        public string msg { get; set; } = "success";
+
+        /// <summary>
+        /// 涓氬姟鏁版嵁
+        /// </summary>
+        public T? data { get; set; }
+
+        /// <summary>
+        /// 鏄惁鎴愬姛锛坵cs鏂囨。2闇�瑕侊級
+        /// </summary>
+        public bool Success => code == "0";
+    }
+
+    //浣跨敤鏂瑰紡
+    //    return new ApiResponse<object>
+    //{
+    //    Code = "0",
+    //    Msg = "success",
+    //    Data = null
+    //};
+
+
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/SquareCabin/OrderDto.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/SquareCabin/OrderDto.cs"
new file mode 100644
index 0000000..1963213
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/SquareCabin/OrderDto.cs"
@@ -0,0 +1,320 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_DTO.SquareCabin
+{
+    public class OrderDto
+    {
+        /// <summary>
+        /// 杩斿洖缁欎笂娓哥殑鍝嶅簲
+        /// </summary>
+        public class UpstreamOrderResponse
+        {
+            /// <summary>
+            /// 缁撴灉浠g爜锛�0鎴愬姛锛�1澶辫触
+            /// </summary>
+            public string resultCode { get; set; }
+
+            /// <summary>
+            /// 缁撴灉淇℃伅
+            /// </summary>
+            public string resultMsg { get; set; }
+
+        }
+
+
+        /// <summary>
+        /// 閫氱敤涓婃父鍝嶅簲
+        /// </summary>
+        /// <typeparam name="T">杩斿洖鐨勪笟鍔℃暟鎹被鍨�</typeparam>
+        public class UpstreamResponse<T>
+        {
+            /// <summary>
+            /// 缁撴灉浠g爜锛�0鎴愬姛锛�1澶辫触
+            /// </summary>
+            public string resultCode { get; set; }
+
+            /// <summary>
+            /// 缁撴灉淇℃伅
+            /// </summary>
+            public string resultMsg { get; set; }
+
+            /// <summary>
+            /// 涓氬姟鏁版嵁
+            /// </summary>
+            public List<T> data { get; set; }
+        }
+        /// <summary>
+        /// 鍏ュ簱鍗曡〃澶翠俊鎭�
+        /// </summary>
+        public class UpstreamOrderInfo
+        { /// <summary>
+          /// 鍏ュ簱鍗曞彿
+          /// </summary>
+            public string order_no { get; set; }
+
+            /// <summary>
+            /// 鍏ュ簱鍗曠被鍨嬶紙1锛氭甯稿叆搴擄紱3锛氬叆搴撻��璐э級
+            /// </summary>
+            public string order_type { get; set; }
+
+            /// <summary>
+            /// 渚涘簲鍟嗕唬鐮�
+            /// </summary>
+            public string supplier_no { get; set; }
+
+            /// <summary>
+            /// 渚涘簲鍟嗗搧鍚嶇О
+            /// </summary>
+            public string supplier_name { get; set; }
+
+            /// <summary>
+            /// 搴撴埧鍙�
+            /// </summary>
+            public string warehouse_no { get; set; }
+
+            /// <summary>
+            /// 鍏ュ簱璁拌处鏃堕棿
+            /// </summary>
+            public DateTime account_time { get; set; }
+
+
+
+            /// <summary>
+            /// 浼樺厛绾э紙涓氬姟绯荤粺鍙兘娌℃湁锛�
+            /// </summary>
+            public string priority_level { get; set; }
+
+            /// <summary>
+            /// 鏄庣粏淇℃伅
+            /// </summary>
+            public List<UpstreamOrderDetail> details { get; set; }
+        }
+
+        /// <summary>
+        /// 鍏ュ簱鍗曟槑缁�
+        /// </summary>
+        public class UpstreamOrderDetail
+        {
+            /// <summary>
+            /// 鑽搧缂栫爜
+            /// </summary>
+            public string goods_no { get; set; }
+
+            /// <summary>
+            /// 鍏ュ簱鏁伴噺锛堥��璐т负璐熸暟锛�
+            /// </summary>
+            public decimal order_qty { get; set; }
+
+            /// <summary>
+            /// 鎵瑰彿
+            /// </summary>
+            public string batch_num { get; set; }
+
+            /// <summary>
+            /// 鏁堟湡锛堢煭鏍煎紡鏃堕棿锛�
+            /// </summary>
+            public string exp_date { get; set; }
+
+            ///// <summary>
+            ///// 搴撴埧鍙�
+            ///// </summary>
+            //public string warehouse_no { get; set; }
+        }
+
+
+        /// <summary>
+        /// 鍑哄簱鍗曡〃澶翠俊鎭�
+        /// </summary>
+        public class UpstramOutOrderInfo
+        {
+            public string order_no { get; set; }
+
+            public string order_type { get; set; }
+
+            /// <summary>
+            /// 
+            /// </summary>
+            public string client_no { get; set; }
+
+
+            public string client_name { get; set; }
+
+            /// <summary>
+            /// 搴撴埧鍙�
+            /// </summary>
+            public string warehouse_no { get; set; }
+
+            /// <summary>
+            /// 鍑哄簱璁拌处鏃堕棿
+            /// </summary>
+            public DateTime account_time { get; set; }
+
+            public List<UpstreamOutOrderDetail> details { get; set; }
+
+        }
+
+        /// <summary>
+        /// 鍑哄簱鍗曟槑缁�
+        /// </summary>
+        public class UpstreamOutOrderDetail
+        {
+            public string goods_no { get; set; }
+            public decimal out_qty { get; set; }
+            public string batch_num { get; set; }
+            public string exp_date { get; set; }
+        }
+
+
+        /// <summary>
+        /// 鑽搧淇℃伅
+        /// </summary>
+        public class MedicationsInfo
+        {
+            public string goods_no { get; set; }
+
+            public string materialCode { get; set; }
+            /// <summary>
+            /// 閫氱敤鍚�
+            /// </summary>
+            public string goods_tym { get; set; }
+            public string goods_spm { get; set; }
+            public string model { get; set; }
+            public string factory { get; set; }
+            public string unit { get; set; }
+            public decimal? item_length { get; set; }
+            public decimal? item_width { get; set; }
+            public decimal? item_hight { get; set; }
+            public decimal? item_volumn { get; set; }
+            public decimal? item_weight { get; set; }
+
+            /// <summary>
+            /// 鍌ㄥ瓨鏉′欢
+            /// </summary>
+            public string storage_cond { get; set; }
+            public string remark { get; set; }
+            public DateTime modify_date { get; set; }
+
+        }
+
+
+        /// <summary>
+        /// 渚涘簲鍟嗕俊鎭�
+        /// </summary>
+        public class SupplierInfo
+        {
+            /// <summary>
+            /// 渚涘簲鍟嗙紪鐮�
+            /// </summary>
+            public string supplier_no { get; set; }
+
+            /// <summary>
+            /// 渚涘簲鍟嗗悕绉�
+            /// </summary>
+            public string supplier_name { get; set; }
+
+
+            /// <summary>
+            /// 鐢佃瘽
+            /// </summary>
+            public string phone { get; set; }
+
+            /// <summary>
+            /// 鍦板潃
+            /// </summary>
+            public string address { get; set; }
+
+            /// <summary>
+            /// 閭
+            /// </summary>
+
+            public string email { get; set; }
+
+            /// <summary>
+            /// 澶囨敞
+            /// </summary>
+            public string remark { get; set; }
+
+            /// <summary>
+            /// 淇敼鏃堕棿
+            /// </summary>
+            public DateTime modify_date { get; set; }
+        }
+
+
+        /// <summary>
+        /// 瀹㈡埛淇℃伅
+        /// </summary>
+        public class CustomerInfo
+        {
+            /// <summary>
+            /// 瀹㈡埛缂栫爜
+            /// </summary>
+            public string client_no { get; set; }
+            /// <summary>
+            /// 瀹㈡埛鍚嶇О
+            /// </summary>
+            public string client_name { get; set; }
+
+
+            /// <summary>
+            /// 鐢佃瘽
+            /// </summary>
+            public string telephone { get; set; }
+
+
+            /// <summary>
+            /// 鍦板潃
+            /// </summary>
+            public string address { get; set; }
+
+            /// <summary>
+            /// 閭
+            /// </summary>
+            public string email { get; set; }
+
+
+            /// <summary>
+            /// 澶囨敞
+            /// </summary>
+            public string remark { get; set; }
+
+            /// <summary>
+            /// 淇敼鏃堕棿
+            /// </summary>
+            public DateTime modify_date { get; set; }
+
+        }
+
+
+        /// <summary>
+        /// 搴撳瓨淇℃伅
+        /// </summary>
+        public class InventoryInfo
+        {
+            public string  goods_no { get; set; }
+
+            /// <summary>
+            /// 鎵瑰彿
+            /// </summary>
+            public string batch_num { get; set; }
+            /// <summary>
+            /// 搴撳瓨鏁伴噺
+            /// </summary>
+            public decimal business_qty { get; set; }
+            /// <summary>
+            /// 鍙敤搴撳瓨锛堝疄闄呭簱瀛樻暟閲忥級
+            /// </summary>
+            public decimal actural_qty { get; set; }
+            /// <summary>
+            /// 鏁堟湡
+            /// </summary>
+            public string exp_date { get; set; }
+        }
+    }
+
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/SquareCabin/TowcsDto.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/SquareCabin/TowcsDto.cs"
new file mode 100644
index 0000000..ab5e6d9
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/SquareCabin/TowcsDto.cs"
@@ -0,0 +1,391 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.SquareCabin
+{
+    public class TowcsDto
+    {
+        public class TowcsResponse<T>
+        {
+            /// <summary>
+            /// 缁撴灉浠g爜锛�0鎴愬姛锛�1澶辫触
+            /// </summary>
+            public string code { get; set; }
+
+            /// <summary>
+            /// 缁撴灉淇℃伅 鎴愬姛success
+            /// </summary>
+            public string msg { get; set; }
+
+            public string  success { get; set; }
+
+            /// <summary>
+            /// 涓氬姟鏁版嵁
+            /// </summary>
+            public List<T> data { get; set; }
+        }
+
+        //鍚憌cs鍏ュ簱鍗�
+        public class ToediInInfo
+        {
+            /// <summary>
+            /// 瀹㈡埛code
+            /// </summary>
+            public string customerCode { get; set; }
+
+            /// <summary>
+            /// 鐗╂枡绫诲瀷code
+            /// </summary>
+            public string materialCode { get; set; }
+
+
+            // 澶栭儴鍏ュ簱鍗曞彿
+            //锛堝敮涓�鏍囪瘑锛屾牎閲嶏級
+            public string externalOrderNo { get; set; }
+
+            /// <summary>
+            ///鍏ュ簱鍗曠被鍨�
+            //10锛氶攢鍞叆搴撳崟
+            //20锛氱洏鐩堝叆搴撳崟
+            /// </summary>
+            public string inOrderType { get; set; }
+
+            /// <summary>
+            /// 浼樺厛绾�
+            /// </summary>
+
+            public int priority { get; set; }
+
+
+            /// <summary>
+            /// 鏄惁鍙栨秷
+            /// </summary>
+
+            public int Is_cancel { get; set; }
+
+
+            /// <summary>
+            /// 鍏ュ簱鍗曟槑缁�
+            /// </summary>
+            public List<ToediInDetail> details { get; set; }
+        }
+
+        /// <summary>
+        /// 鍏ュ簱鍗曟槑缁�
+        /// </summary>
+        public class ToediInDetail
+        {
+            /// <summary>
+            /// 鎵瑰彿
+            /// </summary>
+            public string batchNo { get; set; }
+
+            /// <summary>
+            /// 浜у搧code濡傛灉涓簄ull浣跨敤鍚嶇О+瑙勬牸鏌ユ壘sku
+            /// </summary>
+            public string productCode { get; set; }
+
+            /// <summary>
+            /// sku鍚嶇О
+            /// </summary>
+            public string productName { get; set; }
+
+
+            /// <summary>
+            /// sku瑙勬牸
+            /// </summary>
+            public string productSpecifications { get; set; }
+
+
+            /// <summary>
+            /// 鏁伴噺
+            /// </summary>
+            public int quantity { get; set; }
+
+            /// <summary>
+            /// 鏁堟湡
+            /// </summary>
+            public string validityPeriod { get; set; }
+
+
+            /// <summary>
+            /// 鐢熶骇鍘傚
+            /// </summary>
+            public string manufacturer { get; set; }
+
+
+            /// <summary>
+            /// 搴撴埧鍙�
+            /// </summary>
+            public string libraryNo { get; set; }
+
+
+            /// <summary>
+            /// 鐩樼泩鏄庣粏
+            /// </summary>
+            public List<ToediInStock> stocktakingDetails { get; set; }
+
+        }
+
+        /// <summary>
+        /// 鍏ュ簱鍗曠殑鐩樼泩鏄庣粏
+        /// </summary>
+
+        public class ToediInStock
+        {
+            /// <summary>
+            /// 鏂欑鍙�
+            /// </summary>
+            public string palletCode { get; set; }
+
+            /// <summary>
+            /// 鏁伴噺
+            /// </summary>
+            public string quantity { get; set; }
+        }
+
+
+        /// <summary>
+        /// 鍚憌cs鍑哄簱鍗�
+        /// </summary>
+        public class ToediOutInfo
+        {
+            /// <summary>
+            /// 瀹㈡埛code
+            /// </summary>
+            public string customerCode { get; set; }
+            /// <summary>
+            /// 鐗╂枡绫诲瀷code
+            /// </summary>
+            public string materialCode { get; set; }
+
+            /// <summary>
+            /// 澶栭儴鍑哄簱鍗曞彿锛堝敮涓�鏍囪瘑锛�
+            /// </summary>
+            public String  externalOrderNo { get; set; }
+
+            /// <summary>
+            /// 璁㈠崟绫诲瀷
+            //10:涓�鑸氦鏄撳嚭搴撳崟
+            //20:鐩樼偣鍑哄簱鍗�
+            //30:鐩樹簭鍑哄簱鍗�
+            /// </summary>
+            public string  outOrderType { get; set; }
+
+            /// <summary>
+            /// 浼樺厛绾�1-5
+            /// </summary>
+            public int  priority { get; set; }
+
+
+            /// <summary>
+            /// 鏄惁鍙栨秷
+            /// </summary>
+            public int Is_cancel { get; set; }
+
+
+            /// <summary>
+            /// 鍑哄簱鏄庣粏璇︽儏
+            /// </summary>
+            public List<ToeOutdiInDetail> details { get; set; }     
+
+        }
+
+        /// <summary>
+        /// 鍑哄簱鏄庣粏璇︽儏
+        /// </summary>
+        public class ToeOutdiInDetail
+        {
+            /// <summary>
+            /// 鎵瑰彿
+            /// </summary>
+            public string  batchNo { get; set; }
+
+            /// <summary>
+            /// 浜у搧code濡傛灉涓簄ull浣跨敤鍚嶇О+瑙勬牸鏌ユ壘sku
+            /// </summary>
+            public string  productCode { get; set; }
+
+            /// <summary>
+            /// sku鍚嶇О
+            /// </summary>
+            public string  productName { get; set; }
+
+            /// <summary>
+            /// sku瑙勬牸
+            /// </summary>
+            public string productSpecifications  { get; set; }
+
+            /// <summary>
+            /// 鏁伴噺
+            /// </summary>
+            public int  quantity { get; set; }
+
+            /// <summary>
+            /// 鐩樹簭鏄庣粏
+            /// </summary>
+            public List<ToOutediInStock> stocktakingDetails { get; set; }
+        }
+
+
+        /// <summary>
+        ///鍑哄簱鍗� 鐩樹簭鏄庣粏
+        /// </summary>
+        public class ToOutediInStock
+        {
+            /// <summary>
+            /// 鏂欑鍙�
+            /// </summary>
+            public string palletCode { get; set; }
+            /// <summary>
+            /// 鏁伴噺
+            /// </summary>
+            public string quantity { get; set; }
+        }
+
+
+        //浜у搧鍚屾鎺ュ彛
+        public class ProductInfo
+        {
+            /// <summary>
+            /// 瀹㈡埛code
+            /// </summary>
+            public string customerCode { get; set; }
+
+            /// <summary>
+            /// 鐗╂枡绫诲瀷code
+            /// </summary>
+            public string materialCode { get; set; }
+
+            public string productCode { get; set; }
+
+
+            /// <summary>
+            /// 浜у搧鍚嶇О
+            /// </summary>
+            public string productName { get; set; }
+
+            /// <summary>
+            /// 浜у搧鏉$爜
+            /// </summary>
+            public string  productBarCode{ get; set; }
+
+            /// <summary>
+            /// 瑙勬牸
+            /// </summary>
+            public string productSpecifications { get; set; }
+
+            /// <summary>
+            /// 鍗曚綅
+            /// </summary>
+            public string unit { get; set; }
+            /// <summary>
+            /// 闀�
+            /// </summary>
+            public string singleProductLongNum { get; set; }
+            /// <summary>
+            /// 瀹�
+            /// </summary>
+            public string singleProductWideNum { get; set; }
+            /// <summary>
+            /// 楂�
+            /// </summary>
+            public string singleProductHighNum { get; set; }
+            /// <summary>
+            /// 閲嶉噺
+            /// </summary>
+            public string singleProductWeight { get; set; }
+            /// <summary>
+            /// 浣撶Н
+            /// </summary>
+            public string singleProductVolume { get; set; }
+
+            /// <summary>
+            /// 鏄惁鍒犻櫎
+            /// </summary>
+            public string isDelete { get; set; }
+       
+        }
+
+
+        //wcs璁㈠崟鍥炰紶
+        public class EdiOrderCallbackRequest
+        {
+            public string customerCode { get; set; }
+            public string materialCode { get; set; }
+            public string externalOrderNo { get; set; }
+            public string orderNo { get; set; }
+            public string orderType { get; set; }
+            public List<EdiOrderDetailDto> details { get; set; }
+
+        }
+
+        public class EdiOrderDetailDto
+        {
+            public string batchNo { get; set; }
+            /// <summary>
+            /// 浜у搧code
+            /// </summary>
+            public string productCode { get; set; }
+            public string productName { get; set; }
+
+            /// <summary>
+            /// sku瑙勬牸
+            /// </summary>
+            public string productSpecifications { get; set; }
+            public DateTime finishDate { get; set; } //瀹屾垚鏃堕棿
+
+
+            /// <summary>
+            /// 鐩樼偣鍗曚笓灞烇紙鐩樼偣鍗曞樊寮傛槑缁嗭級
+            /// </summary>
+            public List<EdiStocktakingDetailDto> stocktakingDetails { get; set; }
+
+            /// <summary>
+            /// 鍑哄叆搴撳崟涓撳睘锛堝嚭鍏ュ簱搴撹揣鍝佹枡绠辨槑缁嗭級
+            /// </summary>
+            public List<EdiOrderBoxDto> orderDetails { get; set; }
+        }
+
+
+        /// <summary>
+        /// 璁㈠崟鍥炰紶鐩樼偣
+        /// </summary>
+        public class EdiStocktakingDetailDto
+        {
+            /// <summary>
+            /// 宸紓鏂欑鍙�
+            /// </summary>
+            public string palletCode { get; set; }
+
+            /// <summary>
+            /// 濡傛灉鏄洏鐐瑰洖杩斿洖宸紓鏁�
+            /// </summary>
+            public string differenceQuantity { get; set; }
+            /// <summary>
+            /// 濡傛灉鏄洏鐐癸紝鐩樼泩1 鐩樹簭0
+            /// </summary>
+            public string IsProfit { get; set; }
+        }
+
+
+        /// <summary>
+        /// 姝e父鍑哄叆搴�
+        /// </summary>
+        public class EdiOrderBoxDto
+        {
+            /// <summary>
+            /// 鍑哄叆搴撴暟閲�
+            /// </summary>
+            public string quantity { get; set; }
+            /// <summary>
+            /// 鏂欑鍙�
+            /// </summary>
+            public string palletCode { get; set; }
+        }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockSelectViewDTO.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockSelectViewDTO.cs"
new file mode 100644
index 0000000..d90115b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockSelectViewDTO.cs"
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.Stock
+{
+    public class StockSelectViewDTO
+    {
+
+        public string MaterielCode { get; set; }
+
+        public string MaterielName { get; set; }
+
+        public float UseableQuantity { get; set; }
+
+        public string PalletCode { get; set; }
+
+        public string LocationCode { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockViewDTO.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockViewDTO.cs"
new file mode 100644
index 0000000..39e46e9
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockViewDTO.cs"
@@ -0,0 +1,133 @@
+锘�
+using Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_DTO.Stock
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class StockViewDTO
+    {
+        /// <summary>
+        /// 浠撳簱ID
+        /// </summary>
+        public int WarehouseId {  get; set; }
+        /// <summary>
+        /// 璐т綅缂栧彿
+        /// </summary>
+        public string LocationCode { get; set; }
+
+        /// <summary>
+        /// 璐т綅鍚嶇О
+        /// </summary>
+        public string LocationName { get; set; }
+
+        /// <summary>
+        /// 璐т綅鍒�
+        /// </summary>
+        public int Column { get; set; }
+
+        /// <summary>
+        /// 璐т綅琛�
+        /// </summary>
+        public int Row { get; set; }
+
+        /// <summary>
+        /// 璐т綅灞�
+        /// </summary>
+        public int Layer { get; set; }
+
+        /// <summary>
+        /// 璐т綅娣卞害
+        /// </summary>
+        public int Depth { get; set; }
+
+        /// <summary>
+        /// 璐т綅鐘舵��
+        /// </summary>
+        public int LocationStatus { get; set; }
+
+        /// <summary>
+        /// 璐т綅绫诲瀷
+        /// </summary>
+        public int LocationType { get; set; }
+
+        /// <summary>
+        /// 宸烽亾缂栧彿
+        /// </summary>
+        public string RoadwayNo { get; set; }
+
+        /// <summary>
+        /// 绂佺敤鐘舵��
+        /// </summary>
+        public int EnalbeStatus { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨涓婚敭
+        /// </summary>
+        public int StockId { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏鍙�
+        /// </summary>
+        public string PalletCode { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public bool IsFull { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public string MaterielCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鎵瑰彿
+        /// </summary>
+        public string BatchNo { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨鐘舵��
+        /// </summary>
+        public int StockStatus { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨澶囨敞
+        /// </summary>
+        public string StockRemark { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓浜�
+        /// </summary>
+        public string Creater { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public DateTime CreateDate { get; set; }
+
+        /// <summary>
+        /// 淇敼浜�
+        /// </summary>
+        public string Modifier { get; set; }
+
+        /// <summary>
+        /// 淇敼鏃堕棿
+        /// </summary>
+        public DateTime? ModifyDate { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨璇︽儏
+        /// </summary>
+        [Navigate(NavigateType.OneToMany, nameof(Dt_StockInfoDetail.StockId), nameof(StockId))]
+        public List<Dt_StockInfoDetail> Details { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/System/ActionDTO.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/System/ActionDTO.cs"
new file mode 100644
index 0000000..57ed299
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/System/ActionDTO.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.System
+{
+    public class ActionDTO
+    {
+        public int ActionId { get; set; }
+        public int MenuId { get; set; }
+        public string Text { get; set; }
+        public string Value { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/System/DictionaryDTO.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/System/DictionaryDTO.cs"
new file mode 100644
index 0000000..c914b41
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/System/DictionaryDTO.cs"
@@ -0,0 +1,29 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.System
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DictionaryDTO
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public object Key {  get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public object Value {  get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public object Extra {  get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/System/MenuDTO.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/System/MenuDTO.cs"
new file mode 100644
index 0000000..44d8bde
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/System/MenuDTO.cs"
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_DTO.System
+{
+    public class MenuDTO : Sys_Menu
+    {
+        public List<ActionDTO> Actions { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/System/UserPermissions.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/System/UserPermissions.cs"
new file mode 100644
index 0000000..9c892bb
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/System/UserPermissions.cs"
@@ -0,0 +1,17 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.System
+{
+    public class UserPermissionDTO
+    {
+        public int Id { get; set; }
+        public int Pid { get; set; }
+        public string Text { get; set; }
+        public bool IsApp { get; set; }
+        public List<ActionDTO> Actions { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/System/VueDictionaryDTO.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/System/VueDictionaryDTO.cs"
new file mode 100644
index 0000000..ffa7f3b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/System/VueDictionaryDTO.cs"
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.System
+{
+    public class VueDictionaryDTO
+    {
+        public string DicNo { get; set; }
+
+        public string Config { get; set; }
+
+        public object Data {  get; set; }
+
+        public bool SaveCache { get; set; } = true;
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Task/WCSTaskDTO.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Task/WCSTaskDTO.cs"
new file mode 100644
index 0000000..570a8c1
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Task/WCSTaskDTO.cs"
@@ -0,0 +1,104 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.Task
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class WCSTaskDTO
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        public int TaskId { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public int TaskNum { get; set; }
+        /// <summary>
+        /// AGV浠诲姟鍙�
+        /// </summary>
+        public string AgvTaskNum { get; set; }
+        /// <summary>
+        /// 鎵樼洏缂栧彿
+        /// </summary>
+        public string PalletCode { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏绫诲瀷
+        /// </summary>
+        public int PalletType { get; set; }
+
+        /// <summary>
+        /// 璁惧缂栧彿
+        /// </summary>
+        public string DeviceCode { get; set; }
+
+        /// <summary>
+        /// 宸烽亾鍙�
+        /// </summary>
+        public string Roadway { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
+        public int TaskType { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鐘舵��
+        /// </summary>
+        public int TaskState { get; set; }
+
+        /// <summary>
+        /// 璧峰鍦板潃
+        /// </summary>
+        public string SourceAddress { get; set; }
+
+        /// <summary>
+        /// 鐩爣鍦板潃
+        /// </summary>
+        public string TargetAddress { get; set; }
+
+        /// <summary>
+        /// 褰撳墠浣嶇疆
+        /// </summary>
+        public string CurrentAddress { get; set; }
+
+        /// <summary>
+        /// 涓嬩竴鍦板潃
+        /// </summary>
+        public string NextAddress { get; set; }
+
+        /// <summary>
+        /// 寮傚父淇℃伅
+        /// </summary>
+        public string? ExceptionMessage { get; set; }
+
+        /// <summary>
+        /// 浼樺厛绾�
+        /// </summary>
+        public int Grade { get; set; }
+
+        /// <summary>
+        /// WMS浠诲姟涓婚敭
+        /// </summary>
+        public int WMSId { get; set; }
+
+        /// <summary>
+        /// 浠诲姟涓嬪彂鏃堕棿
+        /// </summary>
+        public DateTime? Dispatchertime { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Task/WMSTaskDTO.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Task/WMSTaskDTO.cs"
new file mode 100644
index 0000000..4b0b5f8
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/Task/WMSTaskDTO.cs"
@@ -0,0 +1,75 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.Task
+{
+    /// <summary>
+    /// 浠诲姟DTO
+    /// </summary>
+    public class WMSTaskDTO
+    {
+        /// <summary>
+        /// WMS浠诲姟涓婚敭
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public int TaskNum { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏鍙�
+        /// </summary>
+        public string PalletCode { get; set; }
+
+        /// <summary>
+        /// 宸烽亾鍙�
+        /// </summary>
+        public string RoadWay { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
+        public int TaskType { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鐘舵��
+        /// </summary>
+        public int TaskStatus { get; set; }
+
+        /// <summary>
+        /// 璧风偣
+        /// </summary>
+        public string SourceAddress { get; set; }
+
+        /// <summary>
+        /// 缁堢偣
+        /// </summary>
+        public string TargetAddress { get; set; }
+
+        /// <summary>
+        /// 浼樺厛绾�
+        /// </summary>
+        public int Grade { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public int WarehouseId { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string AGVArea { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public int PalletType { get; set; }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/WIDESEA_DTO.csproj" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/WIDESEA_DTO.csproj"
new file mode 100644
index 0000000..502ce7c
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_DTO/WIDESEA_DTO.csproj"
@@ -0,0 +1,14 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+	<PropertyGroup>
+		<TargetFramework>net6.0</TargetFramework>
+		<ImplicitUsings>enable</ImplicitUsings>
+		<Nullable>enable</Nullable>
+		<GenerateDocumentationFile>True</GenerateDocumentationFile>
+	</PropertyGroup>
+
+	<ItemGroup>
+		<ProjectReference Include="..\WIDESEA_Model\WIDESEA_Model.csproj" />
+	</ItemGroup>
+
+</Project>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IBasicService/IBasicService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IBasicService/IBasicService.cs"
new file mode 100644
index 0000000..b62017b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IBasicService/IBasicService.cs"
@@ -0,0 +1,31 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+
+namespace WIDESEA_IBasicService
+{
+    public interface IBasicService: IDependency
+    {
+        /// <summary>
+        /// 璐т綅涓氬姟灞�
+        /// </summary>
+        ILocationInfoService LocationInfoService { get; }
+
+        /// <summary>
+        /// 鐗╂枡涓氬姟灞�
+        /// </summary>
+        IMaterielInfoService MaterielInfoService { get; }
+
+        /// <summary>
+        /// 浠撳簱涓氬姟灞�
+        /// </summary>
+        IWarehouseService WarehouseService { get; }
+
+        IPalletCodeInfoService PalletCodeInfoService { get; }
+
+        IMaterielCodeInfoService MaterielCodeInfoService { get; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs"
new file mode 100644
index 0000000..e9f0459
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs"
@@ -0,0 +1,55 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common.CommonEnum;
+using WIDESEA_Common.LocationEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO.Basic;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IBasicService
+{
+    public interface ILocationInfoService : IService<Dt_LocationInfo>
+    {
+        IRepository<Dt_LocationInfo> Repository { get; }
+
+        /// <summary>
+        /// 鎵归噺鍚敤璐т綅
+        /// </summary>
+        /// <param name="keys">璐т綅涓婚敭鏁扮粍</param>
+        /// <returns></returns>
+        WebResponseContent LocationEnableStatus(int[] keys);
+
+        /// <summary>
+        /// 鎵归噺绂佺敤璐т綅
+        /// </summary>
+        /// <param name="keys">璐т綅涓婚敭鏁扮粍</param>
+        /// <returns></returns>
+        WebResponseContent LocationDisableStatus(int[] keys);
+
+        /// <summary>
+        /// 鍗曚釜鍚敤璐т綅
+        /// </summary>
+        /// <param name="key">璐т綅涓婚敭</param>
+        /// <returns></returns>
+        WebResponseContent LocationEnableStatus(int key);
+
+        /// <summary>
+        /// 鍗曚釜绂佺敤璐т綅
+        /// </summary>
+        /// <param name="key">璐т綅涓婚敭</param>
+        /// <returns></returns>
+        WebResponseContent LocationDisableStatus(int key);
+
+        /// <summary>
+        /// 鍒濆鍖栬揣浣�
+        /// </summary>
+        /// <param name="initializationLocationDTO"></param>
+        /// <returns></returns>
+        WebResponseContent InitializationLocation(InitializationLocationDTO initializationLocationDTO);
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielCodeInfoService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielCodeInfoService.cs"
new file mode 100644
index 0000000..7db7943
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielCodeInfoService.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IBasicService
+{
+    public interface IMaterielCodeInfoService : IService<Dt_MaterielCodeInfo>
+    {
+        public IRepository<Dt_MaterielCodeInfo> Repository { get; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielInfoService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielInfoService.cs"
new file mode 100644
index 0000000..fc325d5
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielInfoService.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO.Basic;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IBasicService
+{
+    public interface IMaterielInfoService : IService<Dt_MaterielInfo>
+    {
+        IRepository<Dt_MaterielInfo> Repository { get; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IBasicService/IPalletCodeInfoService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IBasicService/IPalletCodeInfoService.cs"
new file mode 100644
index 0000000..ea6190a
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IBasicService/IPalletCodeInfoService.cs"
@@ -0,0 +1,17 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IBasicService
+{
+    public interface IPalletCodeInfoService : IService<Dt_PalletCodeInfo>
+    {
+        public IRepository<Dt_PalletCodeInfo> Repository { get; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IBasicService/IWarehouseService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IBasicService/IWarehouseService.cs"
new file mode 100644
index 0000000..2a49178
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IBasicService/IWarehouseService.cs"
@@ -0,0 +1,17 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IBasicService
+{
+    public interface IWarehouseService : IService<Dt_Warehouse>
+    {
+        IRepository<Dt_Warehouse> Repository { get; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IBasicService/WIDESEA_IBasicService.csproj" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IBasicService/WIDESEA_IBasicService.csproj"
new file mode 100644
index 0000000..a70161f
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IBasicService/WIDESEA_IBasicService.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_DTO\WIDESEA_DTO.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderResultService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderResultService.cs"
new file mode 100644
index 0000000..8bb2659
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderResultService.cs"
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ICheckService
+{
+    public interface ICheckOrderResultService : IService<Dt_CheckOrderResult>
+    {
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderService.cs"
new file mode 100644
index 0000000..4de5428
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderService.cs"
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ICheckService
+{
+    public interface ICheckOrderService : IService<Dt_CheckOrder>
+    {
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ICheckService/WIDESEA_ICheckService.csproj" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ICheckService/WIDESEA_ICheckService.csproj"
new file mode 100644
index 0000000..a70161f
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ICheckService/WIDESEA_ICheckService.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_DTO\WIDESEA_DTO.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderDetailService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderDetailService.cs"
new file mode 100644
index 0000000..f87a463
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderDetailService.cs"
@@ -0,0 +1,17 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IInboundService
+{
+    public interface IInboundOrderDetailService : IService<Dt_InboundOrderDetail>
+    {
+        IRepository<Dt_InboundOrderDetail> Repository { get; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderDetail_HtyService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderDetail_HtyService.cs"
new file mode 100644
index 0000000..de22b2d
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderDetail_HtyService.cs"
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IInboundService
+{
+    public interface IInboundOrderDetail_HtyService : IService<Dt_InboundOrderDetail_Hty>
+    {
+        
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs"
new file mode 100644
index 0000000..bd67259
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs"
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO;
+using WIDESEA_DTO.Inbound;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IInboundService
+{
+    public interface IInboundOrderService : IService<Dt_InboundOrder>
+    {
+        IRepository<Dt_InboundOrder> Repository { get; }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrder_HtyService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrder_HtyService.cs"
new file mode 100644
index 0000000..785e4f7
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrder_HtyService.cs"
@@ -0,0 +1,17 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO.Inbound;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IInboundService
+{
+    public interface IInboundOrder_HtyService : IService<Dt_InboundOrder_Hty>
+    {
+        
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundService.cs"
new file mode 100644
index 0000000..15237d5
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundService.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+
+namespace WIDESEA_IInboundService
+{
+    public interface IInboundService : IDependency
+    {
+        IInboundOrderDetailService InboundOrderDetailService { get; }
+
+        IInboundOrderService InbounOrderService { get; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IInboundService/WIDESEA_IInboundService.csproj" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IInboundService/WIDESEA_IInboundService.csproj"
new file mode 100644
index 0000000..a70161f
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IInboundService/WIDESEA_IInboundService.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_DTO\WIDESEA_DTO.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs"
new file mode 100644
index 0000000..ea944e0
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs"
@@ -0,0 +1,23 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common.StockEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IOutboundService
+{
+    public interface IOutStockLockInfoService : IService<Dt_OutStockLockInfo>
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        IRepository<Dt_OutStockLockInfo> Repository { get; }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderDetailService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderDetailService.cs"
new file mode 100644
index 0000000..dcaeb06
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderDetailService.cs"
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common.LocationEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_DTO.Stock;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IOutboundService
+{
+    public interface IOutboundOrderDetailService : IService<Dt_OutboundOrderDetail>
+    {
+        IRepository<Dt_OutboundOrderDetail> Repository { get; }
+       
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderDetail_HtyService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderDetail_HtyService.cs"
new file mode 100644
index 0000000..644c89e
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderDetail_HtyService.cs"
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_DTO.Stock;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IOutboundService
+{
+    public interface IOutboundOrderDetail_HtyService : IService<Dt_OutboundOrderDetail_Hty>
+    {
+        
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderService.cs"
new file mode 100644
index 0000000..9d307c2
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderService.cs"
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO.Inbound;
+using WIDESEA_DTO.Outbound;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IOutboundService
+{
+    public interface IOutboundOrderService : IService<Dt_OutboundOrder>
+    {
+        IRepository<Dt_OutboundOrder> Repository { get; }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrder_HtyService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrder_HtyService.cs"
new file mode 100644
index 0000000..355ced4
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrder_HtyService.cs"
@@ -0,0 +1,10 @@
+锘縰sing WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IOutboundService
+{
+    public interface IOutboundOrder_HtyService : IService<Dt_OutboundOrder_Hty>
+    {
+        
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs"
new file mode 100644
index 0000000..7e86e2f
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+
+namespace WIDESEA_IOutboundService
+{
+    public interface IOutboundService:IDependency
+    {
+        IOutboundOrderDetailService OutboundOrderDetailService { get; }
+
+        IOutboundOrderService OutboundOrderService { get; }
+
+        IOutStockLockInfoService OutboundStockLockInfoService { get; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IOutboundService/WIDESEA_IOutboundService.csproj" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IOutboundService/WIDESEA_IOutboundService.csproj"
new file mode 100644
index 0000000..a70161f
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IOutboundService/WIDESEA_IOutboundService.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_DTO\WIDESEA_DTO.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IRecordService/ILocationStatusChangeRecordService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IRecordService/ILocationStatusChangeRecordService.cs"
new file mode 100644
index 0000000..ed24872
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IRecordService/ILocationStatusChangeRecordService.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common.LocationEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IRecordService
+{
+    public interface ILocationStatusChangeRecordService : IService<Dt_LocationStatusChangeRecord>
+    {
+        IRepository<Dt_LocationStatusChangeRecord> Repository { get; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IRecordService/IRecordService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IRecordService/IRecordService.cs"
new file mode 100644
index 0000000..5c9e120
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IRecordService/IRecordService.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+
+namespace WIDESEA_IRecordService
+{
+    public interface IRecordService : IDependency
+    {
+        ILocationStatusChangeRecordService LocationStatusChangeRecordSetvice { get; }
+
+        IStockQuantityChangeRecordService StockQuantityChangeRecordService { get; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IRecordService/IStockQuantityChangeRecordService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IRecordService/IStockQuantityChangeRecordService.cs"
new file mode 100644
index 0000000..b1221bb
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IRecordService/IStockQuantityChangeRecordService.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common.StockEnum;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IRecordService
+{
+    public interface IStockQuantityChangeRecordService : IService<Dt_StockQuantityChangeRecord>
+    {
+        IRepository<Dt_StockQuantityChangeRecord> Repository { get; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IRecordService/WIDESEA_IRecordService.csproj" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IRecordService/WIDESEA_IRecordService.csproj"
new file mode 100644
index 0000000..a70161f
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IRecordService/WIDESEA_IRecordService.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_DTO\WIDESEA_DTO.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderDetailHtyServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderDetailHtyServices.cs"
new file mode 100644
index 0000000..288d082
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderDetailHtyServices.cs"
@@ -0,0 +1,17 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+
+
+namespace WIDESEA_ISquareCabinServices
+{
+    public interface ICabinOrderDetailHtyServices : IService<Dt_CabinOrderDetail_Hty>
+    {
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderDetailServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderDetailServices.cs"
new file mode 100644
index 0000000..11c573f
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderDetailServices.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ISquareCabinServices
+{
+    public interface ICabinOrderDetailServices : IService<Dt_CabinOrderDetail>
+    {
+       
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderHtyServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderHtyServices.cs"
new file mode 100644
index 0000000..ad6e099
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderHtyServices.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ISquareCabinServices
+{
+    public interface ICabinOrderHtyServices : IService<Dt_CabinOrder_Hty>
+    {
+        
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderServices.cs"
new file mode 100644
index 0000000..6d1d128
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICabinOrderServices.cs"
@@ -0,0 +1,37 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ISquareCabinServices
+{
+    public interface ICabinOrderServices: IService<Dt_CabinOrder>
+    {
+        /// <summary>
+        /// 鑾峰彇涓婃父鍏ュ簱璁㈠崟
+        /// </summary>
+        /// <returns></returns>
+        WebResponseContent GetUpstreamOrder();
+
+
+        /// <summary>
+        /// 鍏ュ簱鎶ュ畬鎴愭帴鍙�
+        /// </summary>
+        /// <param name="order_no">鍏ュ簱鍗曞彿</param>
+        /// <returns></returns>
+        //WebResponseContent CompleteOrder(string order_no);
+        WebResponseContent CompleteAllOrders();
+
+
+        /// <summary>
+        /// 缁檞cs
+        /// </summary>
+        /// <returns></returns>
+        WebResponseContent EdiIn();
+         
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICustomerServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICustomerServices.cs"
new file mode 100644
index 0000000..2f345f6
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ICustomerServices.cs"
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ISquareCabinServices
+{
+    public interface ICustomerServices : IService<Dt_Customer>
+    {
+        /// <summary>
+        /// 鑾峰彇涓婃父瀹㈡埛鏁版嵁
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent GetCustomerList();
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderDetailHtyServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderDetailHtyServices.cs"
new file mode 100644
index 0000000..eac1b82
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderDetailHtyServices.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ISquareCabinServices
+{
+    public interface IDeliveryOrderDetailHtyServices : IService<Dt_DeliveryOrderDetail_Hty>
+    {
+       
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderDetailServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderDetailServices.cs"
new file mode 100644
index 0000000..d76c939
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderDetailServices.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ISquareCabinServices
+{
+    public interface IDeliveryOrderDetailServices : IService<Dt_DeliveryOrderDetail>
+    {
+       
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderHtyServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderHtyServices.cs"
new file mode 100644
index 0000000..5f96da4
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderHtyServices.cs"
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ISquareCabinServices
+{
+    public interface IDeliveryOrderHtyServices : IService<Dt_DeliveryOrder_Hty>
+    {
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderServices.cs"
new file mode 100644
index 0000000..e815247
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IDeliveryOrderServices.cs"
@@ -0,0 +1,47 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ISquareCabinServices
+{
+    public interface IDeliveryOrderServices : IService<Dt_DeliveryOrder>
+    {
+        /// <summary>
+        /// 鑾峰彇涓婃父鍑哄簱鍗曟暟鎹�
+        /// </summary>
+        /// <param name="searchDate"></param>
+        /// <returns></returns>
+        WebResponseContent GetUpstreamOutOrder();
+
+        /// <summary>
+        /// 缁欎笅娓竪cs鍑哄簱鍗�
+        /// </summary>
+        /// <returns></returns>
+        WebResponseContent EdiOut();
+
+        /// <summary>
+        /// 鐩樼偣鍑哄簱鎺ュ彛
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent InventoryGood(string externalOrderNo);
+
+        ///// <summary>
+        ///// 鍑哄簱鎶ュ畬鎴愭帴鍙�
+        ///// </summary>
+        ///// <param name="out_no">鍑哄簱鍗曞彿</param>
+        ///// <returns></returns>
+        //WebResponseContent CompleteOutOrder(string out_no);
+
+        /// <summary>
+        /// 鍑哄簱鎶ュ畬鎴愭帴鍙�
+        /// </summary>
+        /// <returns></returns>
+        WebResponseContent CompleteAllOutOrders();
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IInventoryServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IInventoryServices.cs"
new file mode 100644
index 0000000..cb07a66
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IInventoryServices.cs"
@@ -0,0 +1,28 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO.SquareCabin;
+using WIDESEA_Model.Models;
+using static WIDESEA_DTO.SquareCabin.TowcsDto;
+
+
+namespace WIDESEA_ISquareCabinServices
+{
+    public interface IInventoryServices : IService<Dt_Inventory>
+    {
+
+        /// <summary>
+        /// 鑾峰彇涓婃父搴撳瓨鏁版嵁
+        /// </summary>
+        /// <param name="searchDate"></param>
+        /// <returns></returns>
+        public WebResponseContent GetInventoryList(string goods_no,string batch_num);
+
+
+        public ApiResponse<Dt_Inventory> OrderFeedback(EdiOrderCallbackRequest request);
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IMedicineGoodsServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IMedicineGoodsServices.cs"
new file mode 100644
index 0000000..9c92ddf
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/IMedicineGoodsServices.cs"
@@ -0,0 +1,32 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ISquareCabinServices
+{
+    public interface IMedicineGoodsServices : IService<Dt_MedicineGoods>
+    {
+
+        /// <summary>
+        /// 鑾峰彇鑽搧鍩虹淇℃伅鍚屾鎺ュ彛
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent GetMedicineGoodsInfom();
+
+        public WebResponseContent ProductSynchronous();
+
+
+        /// <summary>
+        /// 鍒犻櫎鍗曚釜鍟嗗搧淇℃伅
+        /// </summary>
+        /// <param name="goodsno">鍟嗗搧缂栫爜</param>
+        /// <returns></returns>
+        public WebResponseContent DeleteProduct(string goodsno);
+    }
+
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ISupplierServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ISupplierServices.cs"
new file mode 100644
index 0000000..91accc5
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/ISupplierServices.cs"
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ISquareCabinServices
+{
+    public interface ISupplierServices : IService<Dt_Supplier>
+    {
+
+        /// <summary>
+        /// 鑾峰彇涓婃父渚涘簲鍟嗘暟鎹�
+        /// </summary>
+        /// <param name="searchDate"></param>
+        /// <returns></returns>
+        public WebResponseContent SyncSupplier();
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/WIDESEA_ISquareCabinServices.csproj" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/WIDESEA_ISquareCabinServices.csproj"
new file mode 100644
index 0000000..e2d1b0e
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISquareCabinServices/WIDESEA_ISquareCabinServices.csproj"
@@ -0,0 +1,15 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_Core\WIDESEA_Core.csproj" />
+    <ProjectReference Include="..\WIDESEA_DTO\WIDESEA_DTO.csproj" />
+    <ProjectReference Include="..\WIDESEA_Model\WIDESEA_Model.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoDetailService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoDetailService.cs"
new file mode 100644
index 0000000..92c9c04
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoDetailService.cs"
@@ -0,0 +1,11 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IStockService
+{
+    public interface IStockInfoDetailService : IService<Dt_StockInfoDetail>
+    {
+        IRepository<Dt_StockInfoDetail> Repository { get; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoDetail_HtyService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoDetail_HtyService.cs"
new file mode 100644
index 0000000..fb266b6
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoDetail_HtyService.cs"
@@ -0,0 +1,11 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IStockService
+{
+    public interface IStockInfoDetail_HtyService : IService<Dt_StockInfoDetail_Hty>
+    {
+        IRepository<Dt_StockInfoDetail_Hty> Repository { get; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoService.cs"
new file mode 100644
index 0000000..102691d
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoService.cs"
@@ -0,0 +1,11 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IStockService
+{
+    public interface IStockInfoService : IService<Dt_StockInfo>
+    {
+        IRepository<Dt_StockInfo> Repository { get; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfo_HtyService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfo_HtyService.cs"
new file mode 100644
index 0000000..5353c68
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfo_HtyService.cs"
@@ -0,0 +1,17 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO.Stock;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IStockService
+{
+    public interface IStockInfo_HtyService : IService<Dt_StockInfo_Hty>
+    {
+        IRepository<Dt_StockInfo_Hty> Repository { get; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IStockService/IStockService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IStockService/IStockService.cs"
new file mode 100644
index 0000000..eb21726
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IStockService/IStockService.cs"
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+
+namespace WIDESEA_IStockService
+{
+    public interface IStockService : IDependency
+    {
+        IStockInfoDetailService StockInfoDetailService { get; }
+
+        IStockInfoService StockInfoService { get; }
+
+        IStockInfoDetail_HtyService StockInfoDetail_HtyService { get; }
+
+        IStockInfo_HtyService StockInfo_HtyService { get; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IStockService/IStockViewService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IStockService/IStockViewService.cs"
new file mode 100644
index 0000000..4dbc93f
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IStockService/IStockViewService.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO.Stock;
+
+namespace WIDESEA_IStockService
+{
+    public interface IStockViewService : IDependency
+    {
+        PageGridData<StockViewDTO> GetPageData(PageDataOptions options);
+
+        object GetDetailPage(PageDataOptions pageData);
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IStockService/WIDESEA_IStockService.csproj" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IStockService/WIDESEA_IStockService.csproj"
new file mode 100644
index 0000000..a70161f
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_IStockService/WIDESEA_IStockService.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_DTO\WIDESEA_DTO.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_DictionaryListService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_DictionaryListService.cs"
new file mode 100644
index 0000000..cd1edb7
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_DictionaryListService.cs"
@@ -0,0 +1,11 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ISystemService
+{
+    public interface ISys_DictionaryListService : IService<Sys_DictionaryList>
+    {
+        IRepository<Sys_DictionaryList> Repository { get; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_DictionaryService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_DictionaryService.cs"
new file mode 100644
index 0000000..aa5aab0
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_DictionaryService.cs"
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO.System;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ISystemService
+{
+    public interface ISys_DictionaryService : IService<Sys_Dictionary>
+    {
+        IRepository<Sys_Dictionary> Repository { get; }
+
+        List<VueDictionaryDTO> GetVueDictionary(string[] dicNos);
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_LogService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_LogService.cs"
new file mode 100644
index 0000000..27dcb29
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_LogService.cs"
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ISystemService
+{
+    public interface ISys_LogService : IService<Sys_Log>
+    {
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_MenuService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_MenuService.cs"
new file mode 100644
index 0000000..8458ff9
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_MenuService.cs"
@@ -0,0 +1,39 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO.System;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ISystemService
+{
+    public interface ISys_MenuService : IService<Sys_Menu>
+    {
+        IRepository<Sys_Menu> Repository { get; }
+
+        object GetCurrentMenuActionList();
+
+        object GetMenuActionList(int roleId);
+
+        List<MenuDTO> GetUserMenuList(int roleId);
+        List<MenuDTO> GetUserMenuListPDA(int roleId);
+
+        List<ActionDTO> GetActions(int menuId, List<ActionDTO> menuActions, List<Permissions> permissions, int roleId);
+
+        object GetMenu();
+
+        object GetTreeItem(int menuId);
+
+        WebResponseContent Save(Sys_Menu menu);
+
+        WebResponseContent DelMenu(int menuId);
+
+        object? GetTreeMenuPDAStash(int ParentId);
+
+        List<Permissions> GetPermissions(int roleId);
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_RoleAuthService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_RoleAuthService.cs"
new file mode 100644
index 0000000..ea38971
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_RoleAuthService.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ISystemService
+{
+    public interface ISys_RoleAuthService : IService<Sys_RoleAuth>
+    {
+        IRepository<Sys_RoleAuth> Repository { get; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_RoleService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_RoleService.cs"
new file mode 100644
index 0000000..493cfcd
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_RoleService.cs"
@@ -0,0 +1,35 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_DTO.System;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.System;
+using WIDESEA_Core.BaseRepository;
+
+namespace WIDESEA_ISystemService
+{
+    public interface ISys_RoleService : IService<Sys_Role>
+    {
+        IRepository<Sys_Role> Repository { get; }
+
+        List<int> GetAllChildrenRoleId(int roleId);
+
+        List<RoleNodes> GetAllChildren(int roleId);
+
+        WebResponseContent GetCurrentTreePermission();
+
+        WebResponseContent GetUserTreePermission(int RoleId);
+
+        WebResponseContent GetCurrentTreePermissionPDA();
+
+        WebResponseContent GetUserTreePermissionPDA(int RoleId);
+
+        WebResponseContent SavePermission(List<UserPermissionDTO> userPermissions, int roleId);
+
+        WebResponseContent SavePermissionPDA(List<UserPermissionDTO> userPermissions, int roleId);
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_TenantService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_TenantService.cs"
new file mode 100644
index 0000000..c8de583
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_TenantService.cs"
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ISystemService
+{
+    public interface ISys_TenantService : IService<Sys_Tenant>
+    {
+        IRepository<Sys_Tenant> Repository { get; }
+
+        WebResponseContent InitTenantInfo(string tenantName, int tenantType);
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_UserService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_UserService.cs"
new file mode 100644
index 0000000..0692b26
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_UserService.cs"
@@ -0,0 +1,26 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ISystemService
+{
+    public interface ISys_UserService : IService<Sys_User>
+    {
+        IRepository<Sys_User> Repository { get; }
+
+        WebResponseContent Login(LoginInfo loginInfo);
+
+        WebResponseContent GetCurrentUserInfo();
+
+        WebResponseContent ModifyPwd(string oldPwd, string newPwd);
+        WebResponseContent ModifyUserPwd(string password, string userName);
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/WIDESEA_ISystemService.csproj" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/WIDESEA_ISystemService.csproj"
new file mode 100644
index 0000000..8b9ba57
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ISystemService/WIDESEA_ISystemService.csproj"
@@ -0,0 +1,13 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_DTO\WIDESEA_DTO.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs"
new file mode 100644
index 0000000..82805a3
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs"
@@ -0,0 +1,41 @@
+锘�#region << 鐗� 鏈� 娉� 閲� >>
+/*----------------------------------------------------------------
+ * 鍛藉悕绌洪棿锛歐IDESEA_ITaskInfoService
+ * 鍒涘缓鑰咃細鑳$搴�
+ * 鍒涘缓鏃堕棿锛�2024/8/2 16:13:36
+ * 鐗堟湰锛歏1.0.0
+ * 鎻忚堪锛�
+ *
+ * ----------------------------------------------------------------
+ * 淇敼浜猴細
+ * 淇敼鏃堕棿锛�
+ * 鐗堟湰锛歏1.0.1
+ * 淇敼璇存槑锛�
+ * 
+ *----------------------------------------------------------------*/
+#endregion << 鐗� 鏈� 娉� 閲� >>
+
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common.CommonEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_DTO;
+using WIDESEA_DTO.Stock;
+using WIDESEA_DTO.Task;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ITaskInfoService
+{
+    public interface ITaskService : IService<Dt_Task>
+    {
+        IRepository<Dt_Task> Repository { get; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITask_HtyService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITask_HtyService.cs"
new file mode 100644
index 0000000..8bd7243
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITask_HtyService.cs"
@@ -0,0 +1,18 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_DTO.Stock;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_ITaskInfoService;
+
+public interface ITask_HtyService : IService<Dt_Task_Hty>
+{
+}
\ No newline at end of file
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/WIDESEA_ITaskInfoService.csproj" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/WIDESEA_ITaskInfoService.csproj"
new file mode 100644
index 0000000..a70161f
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/WIDESEA_ITaskInfoService.csproj"
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_DTO\WIDESEA_DTO.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderDetailService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderDetailService.cs"
new file mode 100644
index 0000000..0c7afc5
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderDetailService.cs"
@@ -0,0 +1,25 @@
+锘縰sing Org.BouncyCastle.Crypto;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_IInboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_InboundService
+{
+    public class InboundOrderDetailService : ServiceBase<Dt_InboundOrderDetail, IRepository<Dt_InboundOrderDetail>>, IInboundOrderDetailService
+    {
+        public IRepository<Dt_InboundOrderDetail> Repository => BaseDal;
+
+        public InboundOrderDetailService(IRepository<Dt_InboundOrderDetail> BaseDal) : base(BaseDal)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderDetail_HtyService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderDetail_HtyService.cs"
new file mode 100644
index 0000000..919284a
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderDetail_HtyService.cs"
@@ -0,0 +1,23 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_IInboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_InboundService
+{
+    public class InboundOrderDetail_HtyService : ServiceBase<Dt_InboundOrderDetail_Hty, IRepository<Dt_InboundOrderDetail_Hty>>, IInboundOrderDetail_HtyService
+    {
+        public IRepository<Dt_InboundOrderDetail_Hty> Repository => BaseDal;
+
+        public InboundOrderDetail_HtyService(IRepository<Dt_InboundOrderDetail_Hty> BaseDal) : base(BaseDal)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
new file mode 100644
index 0000000..f3f6996
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
@@ -0,0 +1,25 @@
+锘縰sing AutoMapper;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IBasicService;
+using WIDESEA_IInboundService;
+using WIDESEA_IRecordService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_InboundService
+{
+    public class InboundOrderService : ServiceBase<Dt_InboundOrder, IRepository<Dt_InboundOrder>>, IInboundOrderService
+    {
+        private readonly IMapper _mapper;
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+
+        public IRepository<Dt_InboundOrder> Repository => BaseDal;
+
+        public InboundOrderService(IRepository<Dt_InboundOrder> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        {
+            _mapper = mapper;
+            _unitOfWorkManage = unitOfWorkManage;
+        }
+       
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrder_HtyService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrder_HtyService.cs"
new file mode 100644
index 0000000..bc3f32d
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrder_HtyService.cs"
@@ -0,0 +1,30 @@
+锘縰sing AutoMapper;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection.Metadata;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Utilities;
+using WIDESEA_DTO;
+using WIDESEA_DTO.Inbound;
+using WIDESEA_IBasicService;
+using WIDESEA_IInboundService;
+using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_InboundService
+{
+    public class InboundOrder_HtyService : ServiceBase<Dt_InboundOrder_Hty, IRepository<Dt_InboundOrder_Hty>>, IInboundOrder_HtyService
+    {
+        public InboundOrder_HtyService(IRepository<Dt_InboundOrder_Hty> BaseDal) : base(BaseDal)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_InboundService/InboundService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_InboundService/InboundService.cs"
new file mode 100644
index 0000000..97a2766
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_InboundService/InboundService.cs"
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_IInboundService;
+
+namespace WIDESEA_InboundService
+{
+    public class InboundService : IInboundService
+    {
+        public IInboundOrderDetailService InboundOrderDetailService { get; }
+
+        public IInboundOrderService InbounOrderService { get; }
+
+        public InboundService(IInboundOrderDetailService inboundOrderDetailService, IInboundOrderService inbounOrderService)
+        {
+            InboundOrderDetailService = inboundOrderDetailService;
+            InbounOrderService = inbounOrderService;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_InboundService/WIDESEA_InboundService.csproj" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_InboundService/WIDESEA_InboundService.csproj"
new file mode 100644
index 0000000..2796822
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_InboundService/WIDESEA_InboundService.csproj"
@@ -0,0 +1,17 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_IBasicService\WIDESEA_IBasicService.csproj" />
+    <ProjectReference Include="..\WIDESEA_IInboundService\WIDESEA_IInboundService.csproj" />
+    <ProjectReference Include="..\WIDESEA_IRecordService\WIDESEA_IRecordService.csproj" />
+    <ProjectReference Include="..\WIDESEA_IStockService\WIDESEA_IStockService.csproj" />
+    <ProjectReference Include="..\WIDESEA_ITaskInfoService\WIDESEA_ITaskInfoService.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/LoginInfo.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/LoginInfo.cs"
new file mode 100644
index 0000000..678745b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/LoginInfo.cs"
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Model
+{
+    public class LoginInfo
+    {
+        public string UserName { get; set; }
+
+        public string Password { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/ApprovalFlow/Dt_ApprovalFlow.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/ApprovalFlow/Dt_ApprovalFlow.cs"
new file mode 100644
index 0000000..f63ed62
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/ApprovalFlow/Dt_ApprovalFlow.cs"
@@ -0,0 +1,41 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 瀹℃壒娴佺▼琛�
+    /// </summary>
+    [SugarTable(nameof(Dt_ApprovalFlow), "瀹℃壒娴佺▼琛�")]
+    public class Dt_ApprovalFlow : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 瀹℃壒娴佺▼缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "瀹℃壒娴佺▼缂栧彿")]
+        public string FlowCode {  get; set; }
+
+        /// <summary>
+        /// 瀹℃壒娴佺▼鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "瀹℃壒娴佺▼鍚嶇О")]
+        public string FlowName { get; set; }
+
+        /// <summary>
+        /// 瀹℃壒娴佺▼鎻忚堪
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "瀹℃壒娴佺▼鎻忚堪")]
+        public string FlowDes { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/ApprovalFlow/Dt_ApprovalNode.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/ApprovalFlow/Dt_ApprovalNode.cs"
new file mode 100644
index 0000000..6381da3
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/ApprovalFlow/Dt_ApprovalNode.cs"
@@ -0,0 +1,53 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 瀹℃壒鑺傜偣琛�
+    /// </summary>
+    [SugarTable(nameof(Dt_ApprovalNode), "瀹℃壒鑺傜偣琛�")]
+    public class Dt_ApprovalNode : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 瀹℃壒娴佺▼缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "瀹℃壒娴佺▼缂栧彿锛屽閿�")]
+        public int FlowId { get; set; }
+
+        /// <summary>
+        /// 瀹℃壒鑺傜偣鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "瀹℃壒鑺傜偣鍚嶇О")]
+        public string NodeName { get; set; }
+
+        /// <summary>
+        /// 鑺傜偣绫诲瀷锛堝鍗曚汉瀹℃壒銆佸浜哄鎵广�佷細绛剧瓑锛�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鑺傜偣绫诲瀷锛堝鍗曚汉瀹℃壒銆佸浜哄鎵广�佷細绛剧瓑锛�")]
+        public int NodeType { get; set; }
+
+        /// <summary>
+        /// 瀹℃壒浜鸿鑹诧紙濡傞儴闂ㄧ粡鐞嗐�佹�荤粡鐞嗙瓑锛�
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "瀹℃壒浜鸿鑹诧紙濡傞儴闂ㄧ粡鐞嗐�佹�荤粡鐞嗙瓑锛�")]
+        public int ApproverRole { get; set; }
+
+        /// <summary>
+        /// 鑺傜偣椤哄簭
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鑺傜偣椤哄簭")]
+        public int NodeSequence { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/ApprovalFlow/Dt_ApprovalTask.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/ApprovalFlow/Dt_ApprovalTask.cs"
new file mode 100644
index 0000000..c1126f5
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/ApprovalFlow/Dt_ApprovalTask.cs"
@@ -0,0 +1,71 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 瀹℃壒浠诲姟琛�
+    /// </summary>
+    [SugarTable(nameof(Dt_ApprovalTask), "瀹℃壒浠诲姟琛�")]
+    public class Dt_ApprovalTask : BaseEntity
+    {
+        /// <summary>
+        /// 瀹℃壒浠诲姟缂栧彿锛屼富閿�
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "瀹℃壒浠诲姟缂栧彿锛屼富閿�")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 瀹℃壒娴佺▼缂栧彿锛屽閿�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "瀹℃壒娴佺▼缂栧彿锛屽閿�")]
+        public int FlowId { get; set; }
+
+        /// <summary>
+        /// 瀹℃壒鑺傜偣缂栧彿锛屽閿�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "瀹℃壒鑺傜偣缂栧彿锛屽閿�")]
+        public int NodeId { get; set; }
+
+        /// <summary>
+        /// 鐢宠浜虹敤鎴风紪鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐢宠浜虹敤鎴风紪鍙�")]
+        public int ApplicantUserId { get; set; }
+
+        /// <summary>
+        /// 鐢宠浜虹敤鎴峰悕绉�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐢宠浜虹敤鎴峰悕绉�")]
+        public string ApplicantUserName { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鐘舵�侊紙濡傚緟瀹℃壒銆佸凡瀹℃壒銆佸凡椹冲洖绛夛級
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "浠诲姟鐘舵�侊紙濡傚緟瀹℃壒銆佸凡瀹℃壒銆佸凡椹冲洖绛夛級")]
+        public int Status { get; set; }
+
+        /// <summary>
+        /// 瀹℃壒鎰忚鍐呭
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "瀹℃壒鎰忚鍐呭")]
+        public string OpinionContent { get; set; }
+
+        /// <summary>
+        /// 瀹℃壒浜�
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "瀹℃壒浜�")]
+        public string AuditUser { get; set; }
+
+        /// <summary>
+        /// 鏉ユ簮涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏉ユ簮涓婚敭")]
+        public int SourceKey { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/ApprovalFlow/Dt_NodeTransition.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/ApprovalFlow/Dt_NodeTransition.cs"
new file mode 100644
index 0000000..7944396
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/ApprovalFlow/Dt_NodeTransition.cs"
@@ -0,0 +1,41 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鑺傜偣璺宠浆琛�
+    /// </summary>
+    [SugarTable(nameof(Dt_NodeTransition), "鑺傜偣璺宠浆琛�")]
+    public class Dt_NodeTransition : BaseEntity
+    {
+        /// <summary>
+        /// 璺宠浆缂栧彿
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "璺宠浆缂栧彿锛屼富閿�")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 璧峰鑺傜偣缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "璧峰鑺傜偣缂栧彿锛屽閿�")]
+        public int FromNodeId { get; set; }
+
+        /// <summary>
+        /// 鐩爣鑺傜偣缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐩爣鑺傜偣缂栧彿锛屽閿�")]
+        public int ToNodeId { get; set; }
+
+        /// <summary>
+        /// 璺宠浆鏉′欢锛堝鈥滃悓鎰忓垯璺宠浆鍒颁笅涓�鑺傜偣鈥濓紝鈥滄嫆缁濆垯缁撴潫娴佺▼鈥濈瓑锛�
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 200, ColumnDescription = "璺宠浆鏉′欢锛堝鈥滃悓鎰忓垯璺宠浆鍒颁笅涓�鑺傜偣鈥濓紝鈥滄嫆缁濆垯缁撴潫娴佺▼鈥濈瓑锛�")]
+        public string Condition { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_ApiInfo.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_ApiInfo.cs"
new file mode 100644
index 0000000..e0dc8f8
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_ApiInfo.cs"
@@ -0,0 +1,43 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鎺ュ彛淇℃伅
+    /// </summary>
+    [SugarTable(nameof(Dt_ApiInfo), "鎺ュ彛淇℃伅")]
+    public class Dt_ApiInfo : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+        /// <summary>
+        /// 鎺ュ彛缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎺ュ彛缂栧彿")]
+        public string ApiCode { get; set; }
+        /// <summary>
+        /// 鎺ュ彛鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鎺ュ彛鍚嶇О")]
+        public string ApiName { get; set; }
+        /// <summary>
+        /// 鎺ュ彛鍦板潃
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "鎺ュ彛鍦板潃")]
+        public string ApiAddress { get; set; }
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_CustomerInfo.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_CustomerInfo.cs"
new file mode 100644
index 0000000..cbbddb4
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_CustomerInfo.cs"
@@ -0,0 +1,47 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 瀹㈡埛淇℃伅
+    /// </summary>
+    [SugarTable(nameof(Dt_CustomerInfo), "瀹㈡埛淇℃伅")]
+    public class Dt_CustomerInfo : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛缂栫爜
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "瀹㈡埛缂栫爜")]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "瀹㈡埛鍚嶇О")]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛鍏ㄧО
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 100, ColumnDescription = "瀹㈡埛鍏ㄧО")]
+        public string NickName { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛鐘舵�� 0:绂佺敤 1:鍙敤
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐘舵��")]
+        public bool State { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_LocationInfo.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_LocationInfo.cs"
new file mode 100644
index 0000000..d47c6b7
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_LocationInfo.cs"
@@ -0,0 +1,95 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 璐т綅淇℃伅
+    /// </summary>
+    [SugarTable(nameof(Dt_LocationInfo), "璐т綅淇℃伅")]
+    public class Dt_LocationInfo : BaseEntity, BaseWarehouseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 浠撳簱缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "浠撳簱缂栧彿")]
+        public int WarehouseId { get; set; }
+
+        /// <summary>
+        /// 璐т綅缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 30, ColumnDescription = "璐т綅缂栧彿")]
+        public string LocationCode {  get; set; }
+
+        /// <summary>
+        /// 璐т綅鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "璐т綅鍚嶇О")]
+        public string LocationName { get; set; }
+
+        /// <summary>
+        /// 宸烽亾缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "宸烽亾缂栧彿")]
+        public string RoadwayNo {  get; set; }
+
+        /// <summary>
+        /// 璐т綅琛�
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "璐т綅琛�")]
+        public int Row {  get; set; }
+
+        /// <summary>
+        /// 璐т綅鍒�
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "璐т綅鍒�")]
+        public int Column { get; set; }
+
+        /// <summary>
+        /// 璐т綅灞�
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "璐т綅灞�")]
+        public int Layer {  get; set; }
+
+        /// <summary>
+        /// 璐т綅娣卞害
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "璐т綅娣卞害")]
+        public int Depth {  get; set; }
+
+        /// <summary>
+        /// 璐т綅绫诲瀷
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "璐т綅绫诲瀷")]
+        public int LocationType {  get; set; }
+
+        /// <summary>
+        /// 璐т綅鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = true, DefaultValue = "0", ColumnDescription = "璐т綅鐘舵��")]
+        public int LocationStatus {  get; set; }
+
+        /// <summary>
+        /// 绂佺敤鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = true, DefaultValue = "0", ColumnDescription = "绂佺敤鐘舵��")]
+        public int EnableStatus { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "澶囨敞")]
+        public string Remark {  get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielCodeInfo.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielCodeInfo.cs"
new file mode 100644
index 0000000..37610d3
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielCodeInfo.cs"
@@ -0,0 +1,70 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鐗╂枡鐮佷俊鎭�
+    /// </summary>
+    [SugarTable(nameof(Dt_MaterielCodeInfo), "鐗╂枡鐮佷俊鎭�")]
+    public class Dt_MaterielCodeInfo : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡缂栧彿")]
+        public string MaterielCode { get; set; }
+
+        /// <summary>
+        /// 浠撳簱涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "浠撳簱缂栧彿")]
+        public int WarehouseId { get; set; }
+
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 200, ColumnDescription = "鎵规鍙�")]
+        public string LotNo { get; set; }
+
+        /// <summary>
+        /// 鐢熶骇鏃ユ湡
+        /// </summary>
+        [ImporterHeader(Name = "鐢熶骇鏃ユ湡")]
+        [ExporterHeader(DisplayName = "鐢熶骇鏃ユ湡")]
+        [SugarColumn(IsNullable = false, IsOnlyIgnoreUpdate = true, ColumnDescription = "鐢熶骇鏃ユ湡")]
+        public DateTime ProductionDate {  get; set; }
+
+        /// <summary>
+        /// 鏈夋晥鏈�
+        /// </summary>
+        [ImporterHeader(Name = "鏈夋晥鏈�")]
+        [ExporterHeader(DisplayName = "鏈夋晥鏈�")]
+        [SugarColumn(IsNullable = false, IsOnlyIgnoreUpdate = true, ColumnDescription = "鏈夋晥鏈�")]
+        public DateTime EffectiveDate { get; set; }
+
+        /// <summary>
+        /// 閲囪喘鍗曞彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "閲囪喘鍗曞彿")]
+        public string PurchaseOrderNo { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏁伴噺")]
+        public float Quantity { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielInfo.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielInfo.cs"
new file mode 100644
index 0000000..682c4fe
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielInfo.cs"
@@ -0,0 +1,128 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common.CommonEnum;
+using WIDESEA_Common.MaterielEnum;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鐗╂枡淇℃伅
+    /// </summary>
+    [SugarTable(nameof(Dt_MaterielInfo), "鐗╂枡淇℃伅")]
+    [SugarIndex("unique_materielinfo_materielcode", nameof(MaterielCode), OrderByType.Asc, true)]
+    public class Dt_MaterielInfo : BaseEntity//, BaseWarehouseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 浠撳簱缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "浠撳簱缂栧彿")]
+        public int WarehouseId { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡缂栧彿")]
+        public string MaterielCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 200, ColumnDescription = "鐗╂枡鍚嶇О")]
+        public string MaterielName { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 200, ColumnDescription = "鐗╂枡瑙勬牸")]
+        public string MaterielSpec { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍩烘湰鍒嗙被(1:鎴愬搧銆�2:鍗婃垚鍝併��3:鍘熸潗鏂欍��4:澶囦欢)
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐗╂枡鍩烘湰鍒嗙被(1:鎴愬搧銆�2:鍗婃垚鍝併��3:鍘熸潗鏂欍��4:澶囦欢)")]
+        public MaterielTypeEnum MaterielType { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡灞炴�у垎绫�(1:閲囪喘浠躲��2:鑷埗浠躲��3:閲囪喘&鑷埗浠�)
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐗╂枡灞炴�у垎绫�(1:閲囪喘浠躲��2:鑷埗浠躲��3:閲囪喘&鑷埗浠�)")]
+        public MaterielSourceTypeEnum MaterielSourceType { get; set; }
+
+        /// <summary>
+        /// 鍩烘湰鍗曚綅(buyUnitId/StockUnitId)
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鍩烘湰鍗曚綅(buyUnitId/StockUnitId)")]
+        public string MaterielUnit { get; set; }
+
+        /// <summary>
+        /// 鐗堟湰鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗堟湰鍚嶇О")]
+        public string MaterielVersion { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡灏哄
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鐗╂枡灏哄")]
+        public float? MaterielSize { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡闀垮害
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鐗╂枡闀垮害")]
+        public float? MaterielLength { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍘氬害
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鐗╂枡鍘氬害")]
+        public float? MaterielThickness { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瀹藉害
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鐗╂枡瀹藉害")]
+        public float? MaterielWide { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍨嬪彿
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鐗╂枡鍨嬪彿")]
+        public string MaterielModel { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鐘舵��(0:绂佺敤銆�1:鍙敤)
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐗╂枡鐘舵��(0:绂佺敤銆�1:鍙敤)")]
+        public EnableEnum MaterielState { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨缁勭粐(榛樿:娣畨鐗瑰垱浜屽巶)
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "搴撳瓨缁勭粐(榛樿:娣畨鐗瑰垱浜屽巶)")]
+        public string MaterielInvOrgId { get; set; }
+
+        /// <summary>
+        /// 鏄惁闇�瑕佽川妫�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏄惁闇�瑕佽川妫�")]
+        public WhetherEnum IsCheck { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_PalletCodeInfo.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_PalletCodeInfo.cs"
new file mode 100644
index 0000000..cfbc12e
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_PalletCodeInfo.cs"
@@ -0,0 +1,41 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鎵樼洏缂栧彿淇℃伅
+    /// </summary>
+    [SugarTable(nameof(Dt_PalletCodeInfo), "鎵樼洏缂栧彿淇℃伅")]
+    public class Dt_PalletCodeInfo : BaseEntity
+    {
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "浠撳簱涓婚敭")]
+        public int WarehouseId { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "鎵樼洏绫诲瀷")]
+        public int PalletType { get; set; }
+
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "鎵樼洏缂栧彿")]
+        public string PalletCode { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "娴佹按鍙�")]
+        public int SerialNo { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "鎵撳嵃鐘舵��")]
+        public int Status { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "灏哄")]
+        public int Size { get; set; }
+
+        [SugarColumn(IsNullable = false, ColumnDescription = "鎵樼洏绫诲瀷涓婚敭")]
+        public int PalletTypeId { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_PalletTypeInfo.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_PalletTypeInfo.cs"
new file mode 100644
index 0000000..5e15a8c
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_PalletTypeInfo.cs"
@@ -0,0 +1,89 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鎵樼洏绫诲瀷
+    /// </summary>
+    [SugarTable(nameof(Dt_PalletTypeInfo), "鎵樼洏绫诲瀷")]
+    public class Dt_PalletTypeInfo : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏绫诲瀷
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鎵樼洏绫诲瀷")]
+        public int PalletType { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏鍙疯捣濮嬪瓧绗︿覆
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵樼洏鍙疯捣濮嬪瓧绗︿覆")]
+        public string CodeStartStr { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏绫诲瀷鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵樼洏绫诲瀷鍚嶇О")]
+        public string TypeName { get; set; }
+
+        /// <summary>
+        /// 闀垮害
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "闀垮害")]
+        public int Length { get; set; }
+
+        /// <summary>
+        /// 瀹藉害
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "瀹藉害")]
+        public int Width { get; set; }
+
+        /// <summary>
+        /// 楂樺害
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "楂樺害")]
+        public int Height { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐘舵��")]
+        public int Enbale { get; set; }
+
+        /// <summary>
+        /// 浠撳簱缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "浠撳簱缂栧彿")]
+        public int WarehouseId { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炲眰
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵�灞炲眰")]
+        public string SortNum { get; set; }
+
+        /// <summary>
+        /// 鍗犵敤璐т綅鏁�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍗犵敤璐т綅鏁�")]
+        public int LocaitonCount { get; set; }
+
+        /// <summary>
+        /// 澶ф墭鐩樻槸鍚︽斁濂囨暟鍒�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "澶ф墭鐩樻槸鍚︽斁濂囨暟鍒�")]
+        public bool IsOdd {  get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_SupplierInfo.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_SupplierInfo.cs"
new file mode 100644
index 0000000..557e906
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_SupplierInfo.cs"
@@ -0,0 +1,83 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 渚涘簲鍟嗕俊鎭�
+    /// </summary>
+    [SugarTable(nameof(Dt_SupplierInfo), "渚涘簲鍟嗕俊鎭�")]
+    public class Dt_SupplierInfo : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鐮�
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "渚涘簲鍟嗙紪鐮�")]
+        public string SupplierCode { get; set; }
+
+        /// <summary>
+        /// 渚涘簲鍟嗗悕绉�
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "渚涘簲鍟嗗悕绉�")]
+        public string SupplierName { get; set; }
+
+        /// <summary>
+        /// 渚涘簲鍟嗙畝绉�
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "渚涘簲鍟嗙畝绉�")]
+        public string SupplierShortName { get; set; }
+
+        /// <summary>
+        /// 鑱旂郴浜�
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鑱旂郴浜�")]
+        public string Contacts { get; set; }
+
+        /// <summary>
+        /// 鑱旂郴鐢佃瘽
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鑱旂郴鐢佃瘽")]
+        public string ContactNumber { get; set; }
+
+        /// <summary>
+        /// 鑱旂郴鍦板潃
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "鑱旂郴鍦板潃")]
+        public string ContactAddress { get; set; }
+
+        /// <summary>
+        /// 鐢靛瓙閭
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鐢靛瓙閭")]
+        public string Email { get; set; }
+
+        /// <summary>
+        /// 鎻忚堪
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "鎻忚堪")]
+        public string Description { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨缁勭粐
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "搴撳瓨缁勭粐")]
+        public string InvOrgId { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐘舵��")]
+        public int Status { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_UserInfo.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_UserInfo.cs"
new file mode 100644
index 0000000..5e5066e
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_UserInfo.cs"
@@ -0,0 +1,61 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鍛樺伐淇℃伅
+    /// </summary>
+    [SugarTable(nameof(Dt_UserInfo), "鍛樺伐淇℃伅")]
+    public class Dt_UserInfo : BaseEntity
+    {
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 鍛樺伐鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鍛樺伐鍙�")]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 閮ㄩ棬缂栫爜
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "閮ㄩ棬缂栫爜")]
+        public string DeptNo { get; set; }
+        /// <summary>
+        /// 閮ㄩ棬鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "閮ㄩ棬鍚嶇О")]
+        public string DeptName { get; set; }
+
+        /// <summary>
+        /// 鍛樺伐鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鍛樺伐鍚嶇О")]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 鐘舵�� 0:绂佺敤銆�1:鍙敤锛涢粯璁や负1
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐘舵��")]
+        public int State { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨缁勭粐
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "搴撳瓨缁勭粐")]
+        public string InvOrgId { get; set; }
+
+        /// <summary>
+        /// 绫诲瀷 1=浠撶鍛橈紝2=璐ㄦ鍛�
+        /// </summary>
+        //[SugarColumn(IsNullable = false, ColumnDescription = "绫诲瀷")]
+        //public int Type { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_Warehouse.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_Warehouse.cs"
new file mode 100644
index 0000000..fa11459
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_Warehouse.cs"
@@ -0,0 +1,59 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 浠撳簱淇℃伅
+    /// </summary>
+    [SugarTable(nameof(Dt_Warehouse), "浠撳簱淇℃伅")]
+    public class Dt_Warehouse : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int WarehouseId { get; set; }
+
+        /// <summary>
+        /// 浠撳簱缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "浠撳簱缂栧彿")]
+        public string WarehouseCode { get; set; }
+
+        /// <summary>
+        /// 浠撳簱鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "浠撳簱鍚嶇О")]
+        public string WarehouseName { get; set; }
+
+        /// <summary>
+        /// 浠撳簱绫诲瀷
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "浠撳簱绫诲瀷")]
+        public string WarehouseType { get; set; }
+
+        /// <summary>
+        /// 浠撳簱鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "浠撳簱鐘舵��")]
+        public int WarehouseStatus { get; set; }
+
+        /// <summary>
+        /// 浠撳簱鎻忚堪
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "浠撳簱鎻忚堪")]
+        public string WarehouseDes { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Check/Dt_CheckOrder.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Check/Dt_CheckOrder.cs"
new file mode 100644
index 0000000..6c4bd35
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Check/Dt_CheckOrder.cs"
@@ -0,0 +1,120 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+using WIDESEA_Core.CodeConfigEnum;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 璐ㄦ鍗�
+    /// </summary>
+    [SugarTable(nameof(Dt_CheckOrder), "璐ㄦ鍗�")]
+    public class Dt_CheckOrder : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int CheckOrderId { get; set; }
+
+        /// <summary>
+        /// 妫�楠屽崟鍙�
+        /// </summary>
+        [CodeRule(RuleCodeEnum.CheckOrderRule)]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "妫�楠屽崟鍙�")]
+        public string CheckOrderNo { get; set; }
+
+        /// <summary>
+        /// 鏀惰揣鍗曞彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鏀惰揣鍗曞彿")]
+        public string ReceiveOrderNo { get; set; }
+
+        /// <summary>
+        /// 璐ㄦ鍗曠姸鎬�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "璐ㄦ鍗曠姸鎬�")]
+        public int CheckOrderStatus { get; set; }
+
+        /// <summary>
+        /// 瀹℃壒鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "瀹℃壒鐘舵��")]
+        public int AuditStatus { get; set; }
+
+        /// <summary>
+        /// 鏀惰揣鍗曟槑缁嗚鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏀惰揣鍗曟槑缁嗚鍙�")]
+        public int ReceiveDetailRowNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡缂栧彿")]
+        public string MaterielCode { get; set; }
+
+        /// <summary>
+        /// 鍚堟牸鏁伴噺
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鍚堟牸鏁伴噺")]
+        public float? QualifiedQuantity { get; set; }
+
+        /// <summary>
+        /// 鐗归噰鏁伴噺
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鐗归噰鏁伴噺")]
+        public float? DefectedQuantity { get; set; }
+
+        /// <summary>
+        /// 閫�璐ф暟閲�
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "閫�璐ф暟閲�")]
+        public float? ReturnQuantity { get; set; }
+
+        /// <summary>
+        /// 鎶ュ簾鏁伴噺
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鎶ュ簾鏁伴噺")]
+        public float? ScrappedQuantity { get; set; }
+
+        /// <summary>
+        /// 妫�楠屾�绘暟(鏀惰揣鏁伴噺)
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "妫�楠屾�绘暟")]
+        public float ReceivedQuantity { get; set; }
+
+        /// <summary>
+        /// 妫�楠岀粨鏋�
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "妫�楠岀粨鏋�")]
+        public string Result { get; set; }
+
+        /// <summary>
+        /// 鐗归噰璇存槑
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鐗归噰璇存槑")]
+        public string DefectedNote { get; set; }
+
+        /// <summary>
+        /// 妫�楠屼汉
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "妫�楠屼汉")]
+        public string CheckUserName { get; set; }
+        /// <summary>
+        /// 妫�楠屼笂浼犵姸鎬�
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "妫�楠屼笂浼犵姸鎬�")]
+        public int UploadStatus { get; set; }
+        /// <summary>
+        /// 璐ㄦ缁撴灉
+        /// </summary>
+        [Navigate(NavigateType.OneToMany, nameof(Dt_CheckOrderResult.CheckOrderId), nameof(CheckOrderId))]
+        public List<Dt_CheckOrderResult> Details { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Check/Dt_CheckOrderResult.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Check/Dt_CheckOrderResult.cs"
new file mode 100644
index 0000000..12bbcc7
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Check/Dt_CheckOrderResult.cs"
@@ -0,0 +1,53 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 妫�楠岀粨鏋�
+    /// </summary>
+    [SugarTable(nameof(Dt_CheckOrderResult), "妫�楠岀粨鏋�")]
+    public class Dt_CheckOrderResult : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 妫�楠屽崟涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "妫�楠屽崟涓婚敭")]
+        public int CheckOrderId { get; set; }
+
+        /// <summary>
+        /// 缂洪櫡浠g爜
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "缂洪櫡浠g爜")]
+        public string DefectCode { get; set; }
+
+        /// <summary>
+        /// 妫�楠岀粨鏋�
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "妫�楠岀粨鏋�")]
+        public string Result { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鏁伴噺")]
+        public float Quantity { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 500, ColumnDescription = "澶囨敞")]
+        public string Note { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Config/Dt_AnalysisRuleConfig.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Config/Dt_AnalysisRuleConfig.cs"
new file mode 100644
index 0000000..7813561
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Config/Dt_AnalysisRuleConfig.cs"
@@ -0,0 +1,65 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 缂栫爜瑙f瀽瑙勫垯閰嶇疆
+    /// </summary>
+    [SugarTable(nameof(Dt_AnalysisRuleConfig),"缂栫爜瑙f瀽瑙勫垯閰嶇疆")]
+    public class Dt_AnalysisRuleConfig : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 瑙勫垯缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "瑙勫垯缂栧彿")]
+        public string AnalysisCode { get; set; }
+
+        /// <summary>
+        /// 瑙勫垯鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "瑙勫垯鍚嶇О")]
+        public string AnalysisName { get; set; }
+
+        /// <summary>
+        /// 鍓嶇紑瀛楃涓�
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "鍓嶇紑瀛楃涓�")]
+        public string StartStr { get; set; }
+
+        /// <summary>
+        /// 缁撴潫瀛楃涓�
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "缁撴潫瀛楃涓�")]
+        public string EndStr { get; set; }
+
+        /// <summary>
+        /// 鍒嗗壊瀛楃涓�
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "鍒嗗壊瀛楃涓�")]
+        public string SplitStr { get; set; }
+
+        /// <summary>
+        /// 缂栫爜瑙勫垯
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 100, ColumnDescription = "缂栫爜瑙勫垯")]
+        public string Format { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Config/Dt_CodeRuleConfig.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Config/Dt_CodeRuleConfig.cs"
new file mode 100644
index 0000000..e25fc30
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Config/Dt_CodeRuleConfig.cs"
@@ -0,0 +1,71 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 缂栫爜鐢熸垚瑙勫垯閰嶇疆
+    /// </summary>
+    [SugarTable(nameof(Dt_CodeRuleConfig), "缂栫爜鐢熸垚瑙勫垯閰嶇疆")]
+    public class Dt_CodeRuleConfig : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 瑙勫垯缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "瑙勫垯缂栧彿")]
+        public string RuleCode { get; set; }
+
+        /// <summary>
+        /// 瑙勫垯鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "瑙勫垯鍚嶇О")]
+        public string RuleName { get; set; }
+
+        /// <summary>
+        /// 娴佹按鍙疯捣濮嬪��
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "娴佹按鍙疯捣濮嬪��")]
+        public int StartVal { get; set; }
+
+        /// <summary>
+        /// 鍓嶇紑瀛楃涓�
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 2, ColumnDescription = "鍓嶇紑瀛楃涓�")]
+        public string StartStr { get; set; }
+
+        /// <summary>
+        /// 缂栫爜瑙勫垯
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "缂栫爜瑙勫垯")]
+        public string Format { get; set; }
+
+        /// <summary>
+        /// 娴佹按鍙烽暱搴�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "娴佹按鍙烽暱搴�")]
+        public int Length { get; set; }
+
+        /// <summary>
+        /// 娴佹按鍙峰綋鍓嶅��
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "娴佹按鍙峰綋鍓嶅��")]
+        public int CurrentVal { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 500, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrder.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrder.cs"
new file mode 100644
index 0000000..63042a0
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrder.cs"
@@ -0,0 +1,80 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+using WIDESEA_Core.CodeConfigEnum;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鍏ュ簱鍗�
+    /// </summary>
+    [SugarTable(nameof(Dt_InboundOrder), "鍏ュ簱鍗�")]
+    public class Dt_InboundOrder : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 浠撳簱涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "浠撳簱涓婚敭")]
+        public int WarehouseId { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        [CodeRule(RuleCodeEnum.InboundOrderRule)]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鍗曟嵁缂栧彿")]
+        public string InboundOrderNo { get; set; }
+
+        /// <summary>
+        /// 涓婃父鍗曟嵁缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "涓婃父鍗曟嵁缂栧彿")]
+        public string UpperOrderNo { get; set; }
+
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "渚涘簲鍟嗙紪鍙�")]
+        public string SupplierId { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁绫诲瀷
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍗曟嵁绫诲瀷")]
+        public int OrderType { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍗曟嵁鐘舵��")]
+        public int OrderStatus { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏂瑰紡
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍒涘缓鏂瑰紡")]
+        public int CreateType { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鍏ュ簱鍗曟槑缁�
+        /// </summary>
+        [Navigate(NavigateType.OneToMany, nameof(Dt_InboundOrderDetail.OrderId), nameof(Id))]
+        public List<Dt_InboundOrderDetail> Details { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrderDetail.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrderDetail.cs"
new file mode 100644
index 0000000..1238647
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrderDetail.cs"
@@ -0,0 +1,89 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鍏ュ簱鍗曟槑缁�
+    /// </summary>
+    [SugarTable(nameof(Dt_InboundOrderDetail), "鍏ュ簱鍗曟槑缁�")]
+    public class Dt_InboundOrderDetail : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 鍏ュ簱鍗曚富閿�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍏ュ簱鍗曚富閿�")]
+        public int OrderId { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡缂栧彿")]
+        public string MaterielCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡鍚嶇О")]
+        public string MaterielName { get; set; }
+
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵规鍙�")]
+        public string BatchNo { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鏁伴噺
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍗曟嵁鏁伴噺")]
+        public float OrderQuantity { get; set; }
+
+        /// <summary>
+        /// 缁勭洏鏁伴噺
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "缁勭洏鏁伴噺", DefaultValue = "0")]
+        public float ReceiptQuantity { get; set; }
+
+        /// <summary>
+        /// 涓婃灦鏁伴噺
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "涓婃灦鏁伴噺", DefaultValue = "0")]
+        public float OverInQuantity { get; set; }
+
+        /// <summary>
+        /// 璁㈠崟鏄庣粏鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "璁㈠崟鏄庣粏鐘舵��")]
+        public int OrderDetailStatus { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "鍗曚綅")]
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鏀惰揣鍗曟槑缁嗚鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏀惰揣鍗曟槑缁嗚鍙�")]
+        public int RowNo { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrderDetail_Hty.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrderDetail_Hty.cs"
new file mode 100644
index 0000000..34e13aa
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrderDetail_Hty.cs"
@@ -0,0 +1,42 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鍏ュ簱鍗曟槑缁�
+    /// </summary>
+    [SugarTable(nameof(Dt_InboundOrderDetail_Hty), "鍏ュ簱鍗曟槑缁�")]
+    public class Dt_InboundOrderDetail_Hty : Dt_InboundOrderDetail, IBaseHistoryEntity
+    {
+        /// <summary>
+        /// 鍘熻〃涓婚敭
+        /// </summary>
+        [ImporterHeader(Name = "鍘熻〃涓婚敭")]
+        [ExporterHeader(DisplayName = "鍘熻〃涓婚敭")]
+        [SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "鍘熻〃涓婚敭")]
+        public int SourceId { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔绫诲瀷
+        /// </summary>
+        [ImporterHeader(Name = "鎿嶄綔绫诲瀷")]
+        [ExporterHeader(DisplayName = "鎿嶄綔绫诲瀷")]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎿嶄綔绫诲瀷")]
+        public string OperateType { get; set; }
+
+        /// <summary>
+        /// 绉诲叆鍘嗗彶鏃堕棿
+        /// </summary>
+        [ImporterHeader(Name = "绉诲叆鍘嗗彶鏃堕棿")]
+        [ExporterHeader(DisplayName = "绉诲叆鍘嗗彶鏃堕棿")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "绉诲叆鍘嗗彶鏃堕棿")]
+        public DateTime InsertTime { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrder_Hty.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrder_Hty.cs"
new file mode 100644
index 0000000..2442f67
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrder_Hty.cs"
@@ -0,0 +1,44 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+using WIDESEA_Core.CodeConfigEnum;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鍏ュ簱鍗曞巻鍙�
+    /// </summary>
+    [SugarTable(nameof(Dt_InboundOrder_Hty), "鍏ュ簱鍗曞巻鍙�")]
+    public class Dt_InboundOrder_Hty : Dt_InboundOrder, IBaseHistoryEntity
+    {
+        /// <summary>
+        /// 鍘熻〃涓婚敭
+        /// </summary>
+        [ImporterHeader(Name = "鍘熻〃涓婚敭")]
+        [ExporterHeader(DisplayName = "鍘熻〃涓婚敭")]
+        [SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "鍘熻〃涓婚敭")]
+        public int SourceId { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔绫诲瀷
+        /// </summary>
+        [ImporterHeader(Name = "鎿嶄綔绫诲瀷")]
+        [ExporterHeader(DisplayName = "鎿嶄綔绫诲瀷")]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎿嶄綔绫诲瀷")]
+        public string OperateType { get; set; }
+
+        /// <summary>
+        /// 绉诲叆鍘嗗彶鏃堕棿
+        /// </summary>
+        [ImporterHeader(Name = "绉诲叆鍘嗗彶鏃堕棿")]
+        [ExporterHeader(DisplayName = "绉诲叆鍘嗗彶鏃堕棿")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "绉诲叆鍘嗗彶鏃堕棿")]
+        public DateTime InsertTime { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_PurchaseOrder.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_PurchaseOrder.cs"
new file mode 100644
index 0000000..52c9f66
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_PurchaseOrder.cs"
@@ -0,0 +1,77 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 閲囪喘鍗�
+    /// </summary>
+    [SugarTable(nameof(Dt_PurchaseOrder), "閲囪喘鍗�"), ModelValidate]
+    public class Dt_PurchaseOrder : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 閲囪喘鍗曞彿
+        /// </summary>
+        [PropertyValidate("閲囪喘鍗曞彿", NotNullAndEmpty = true)]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "閲囪喘鍗曞彿")]
+        public string PurchaseOrderNo { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁绫诲瀷(S:鏍囧噯鍏ュ簱銆乂:瀵勫敭琛ョ粰鍏ュ簱)
+        /// </summary>
+        [PropertyValidate("鍗曟嵁绫诲瀷", NotNullAndEmpty = true, Check = new[] { "S", "V" })]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鍗曟嵁绫诲瀷")]
+        public string PurchaseOrderType { get; set; }
+
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鍙�
+        /// </summary>
+        [PropertyValidate("渚涘簲鍟嗙紪鍙�", NotNullAndEmpty = true)]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "渚涘簲鍟嗙紪鍙�")]
+        public string SupplierCode { get; set; }
+
+        /// <summary>
+        /// 閲囪喘鏁伴噺
+        /// </summary>
+        [PropertyValidate("閲囪喘鏁伴噺", MinValue = 0, IsContainMinValue = false)]
+        [SugarColumn(IsNullable = false, ColumnDescription = "閲囪喘鏁伴噺")]
+        public float OrderQuantity { get; set; }
+
+        /// <summary>
+        /// 閲囪喘鍗曠姸鎬�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "閲囪喘鍗曠姸鎬�")]
+        public int PurchaseOrderStatus { get; set; }
+
+        /// <summary>
+        /// 涓嬪崟鏃ユ湡
+        /// </summary>
+        [PropertyValidate("涓嬪崟鏃ユ湡", NotNullAndEmpty = true)]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "涓嬪崟鏃ユ湡")]
+        public string OrderDate { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍒楄〃
+        /// </summary>
+        [PropertyValidate("鐗╂枡鍒楄〃", NotNullAndEmpty = true), Navigate(NavigateType.OneToMany, nameof(Dt_PurchaseOrderDetail.PurchaseOrderId), nameof(Id))]
+        public List<Dt_PurchaseOrderDetail> Details { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_PurchaseOrderDetail.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_PurchaseOrderDetail.cs"
new file mode 100644
index 0000000..70e71fc
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_PurchaseOrderDetail.cs"
@@ -0,0 +1,71 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 閲囪喘鍗曟槑缁�
+    /// </summary>
+    [SugarTable(nameof(Dt_PurchaseOrderDetail), "閲囪喘鍗曟槑缁�"), ModelValidate]
+    public class Dt_PurchaseOrderDetail : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 澶磋〃涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "澶磋〃涓婚敭")]
+        public int PurchaseOrderId { get; set; }
+
+        /// <summary>
+        /// 琛屽彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "琛屽彿")]
+        public int RowNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡缂栧彿")]
+        public string MaterielCode { get; set; }
+
+        /// <summary>
+        /// 閲囪喘鍗曟槑缁嗙姸鎬�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "閲囪喘鍗曟槑缁嗙姸鎬�")]
+        public int PurchaseDetailStatus { get; set; }
+
+        /// <summary>
+        /// 浠撳簱缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnName = "WarehouseId", ColumnDescription = "浠撳簱缂栧彿")]
+        public int WarehouseId { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏁伴噺")]
+        public float PurchaseDetailQuantity { get; set; }
+        /// <summary>
+        /// 宸叉敹璐ф暟閲�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "宸叉敹璐ф暟閲�")]
+        public float PurchaseDetailReceiveQty { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "鍗曚綅")]
+        public string Unit { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReceiveOrder.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReceiveOrder.cs"
new file mode 100644
index 0000000..c48f4f8
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReceiveOrder.cs"
@@ -0,0 +1,92 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+using WIDESEA_Core.CodeConfigEnum;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鏀惰揣鍗�
+    /// </summary>
+    [SugarTable(nameof(Dt_ReceiveOrder), "鏀惰揣鍗�")]
+    public class Dt_ReceiveOrder : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int ReceiveOrderId { get; set; }
+
+        /// <summary>
+        /// 鏀惰揣鍗曞彿
+        /// </summary>
+        [CodeRule(RuleCodeEnum.ReceiveOrderRule)]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鏀惰揣鍗曞彿")]
+        public string ReceiveOrderNo { get; set; }
+
+        /// <summary>
+        /// 璁㈠崟绫诲瀷
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "璁㈠崟绫诲瀷")]
+        public int ReceiveOrderType { get; set; }
+
+        /// <summary>
+        /// 璁㈠崟鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "璁㈠崟鐘舵��")]
+        public int ReceiveOrderStatus { get; set; }
+
+        /// <summary>
+        /// 涓婁紶鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "涓婁紶鐘舵��")]
+        public int UploadStatus { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛浠e彿
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "瀹㈡埛浠e彿")]
+        public string CustomerId { get; set; }
+
+        /// <summary>
+        /// 渚涘簲鍟嗕唬鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "渚涘簲鍟嗕唬鍙�")]
+        public string SuppliersId { get; set; }
+
+        /// <summary>
+        /// 浠撳簱涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "浠撳簱涓婚敭")]
+        public int WarehouseId { get; set; }
+
+        /// <summary>
+        /// 鏀惰揣鏃ユ湡
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鏀惰揣鏃ユ湡")]
+        public DateTime ReceiveDate { get; set; }
+
+        /// <summary>
+        /// 閫佽揣鍗曞彿
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "閫佽揣鍗曞彿")]
+        public string DeliveryCode { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 500, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鏀惰揣鍗曟槑缁�
+        /// </summary>
+        [Navigate(NavigateType.OneToMany, nameof(Dt_ReceiveOrderDetail.ReceiveOrderId), nameof(ReceiveOrderId))]
+        public List<Dt_ReceiveOrderDetail> Details { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReceiveOrderDetail.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReceiveOrderDetail.cs"
new file mode 100644
index 0000000..36534f9
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReceiveOrderDetail.cs"
@@ -0,0 +1,101 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鏀惰揣鍗曟槑缁�
+    /// </summary>
+    [SugarTable(nameof(Dt_ReceiveOrderDetail), "鏀惰揣鍗曟槑缁�")]
+    public class Dt_ReceiveOrderDetail : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 鏀惰揣鍗曚富閿�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏀惰揣鍗曚富閿�")]
+        public int ReceiveOrderId { get; set; }
+
+        /// <summary>
+        /// 閲囪喘鍗曞彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "閲囪喘鍗曞彿")]
+        public string PurchaseOrderNo { get; set; }
+
+        /// <summary>
+        /// 閲囪喘鍗曟槑缁嗚鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "閲囪喘鍗曟槑缁嗚鍙�")]
+        public int PurchaseOrderDetailRowNo { get; set; }
+
+        /// <summary>
+        /// 琛屽彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "琛屽彿")]
+        public int RowNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡缂栧彿")]
+        public string MaterielCode { get; set; }
+
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵规鍙�")]
+        public string LotNo { get; set; }
+
+        /// <summary>
+        /// 鏀惰揣鏁伴噺
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏀惰揣鏁伴噺")]
+        public float ReceivedQuantity { get; set; }
+
+        /// <summary>
+        /// 鏄惁瑕佹楠�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏄惁瑕佹楠�")]
+        public int IfInspection { get; set; }
+
+        /// <summary>
+        /// 鍚◣浠锋牸
+        /// </summary>
+        [SugarColumn(IsNullable = false, DecimalDigits = 2, ColumnDescription = "鍚◣浠锋牸")]
+        public decimal PriceInTax { get; set; }
+
+        /// <summary>
+        /// 绋庣巼
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "绋庣巼")]
+        public string TaxRate { get; set; }
+
+        /// <summary>
+        /// 甯佸埆缂栫爜
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "甯佸埆缂栫爜")]
+        public string CurrCode { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 500, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "")]
+        public string Unit { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_MesOutboundOrder.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_MesOutboundOrder.cs"
new file mode 100644
index 0000000..235c50e
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_MesOutboundOrder.cs"
@@ -0,0 +1,116 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+using WIDESEA_Core.CodeConfigEnum;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    [SugarTable(nameof(Dt_MesOutboundOrder))]
+    public class Dt_MesOutboundOrder : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 浠撳簱涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "浠撳簱涓婚敭")]
+        public int WarehouseId { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        [CodeRule(RuleCodeEnum.OutboundOrderRule)]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鍗曟嵁缂栧彿", IsOnlyIgnoreUpdate = true)]
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鍗曞彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "浠诲姟鍗曞彿")]
+        public string TaskNo { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁绫诲瀷
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍗曟嵁绫诲瀷", IsOnlyIgnoreUpdate = true)]
+        public int OrderType { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍗曟嵁鐘舵��")]
+        public int OrderStatus { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏂瑰紡
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍒涘缓鏂瑰紡", IsOnlyIgnoreUpdate = true)]
+        public int CreateType { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡缂栧彿")]
+        public string MaterialCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "鐗╂枡鍚嶇О")]
+        public string MaterialName { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鍗曚綅")]
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鏁伴噺
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍗曟嵁鏁伴噺")]
+        public float OrderQuantity { get; set; }
+
+        /// <summary>
+        /// 閿佸畾鏁伴噺
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "閿佸畾鏁伴噺", DefaultValue = "0")]
+        public float LockQuantity { get; set; }
+
+        /// <summary>
+        /// 宸插嚭鏁伴噺
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "宸插嚭鏁伴噺", DefaultValue = "0")]
+        public float OverOutQuantity { get; set; }
+
+        /// <summary>
+        /// 绾夸綋
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "绾夸綋")]
+        public string Line { get; set; }
+
+        /// <summary>
+        /// 绾胯竟浠撳湴鍧�鐮�
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "绾胯竟浠撳湴鍧�鐮�")]
+        public string TargetAddressCode { get; set; }
+
+        /// <summary>
+        /// 瑁佸垏瀹�
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "瑁佸垏瀹�")]
+        public float Width { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundLockInfo.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundLockInfo.cs"
new file mode 100644
index 0000000..190c8ae
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundLockInfo.cs"
@@ -0,0 +1,112 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鍑哄簱璇︽儏
+    /// </summary>
+    [SugarTable(nameof(Dt_OutStockLockInfo), "鍑哄簱璇︽儏")]
+    public class Dt_OutStockLockInfo : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鍗曟嵁缂栧彿")]
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鏄庣粏涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍗曟嵁鏄庣粏涓婚敭")]
+        public int OrderDetailId { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁绫诲瀷
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍗曟嵁绫诲瀷")]
+        public int OrderType { get; set; }
+
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵规鍙�")]
+        public string BatchNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡缂栧彿")]
+        public string MaterielCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "鐗╂枡鍚嶇О")]
+        public string MaterielName { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "搴撳瓨涓婚敭")]
+        public int StockId { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鏁伴噺
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍗曟嵁鏁伴噺")]
+        public float OrderQuantity { get; set; }
+
+        /// <summary>
+        /// 鍘熷搴撳瓨閲�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍘熷搴撳瓨閲�")]
+        public float OriginalQuantity {  get; set; }
+
+        /// <summary>
+        /// 鍒嗛厤鍑哄簱閲�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍒嗛厤鍑哄簱閲�")]
+        public float AssignQuantity {  get; set; }
+
+        /// <summary>
+        /// 璐т綅缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "璐т綅缂栧彿")]
+        public string LocationCode { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵樼洏缂栧彿")]
+        public string PalletCode { get; set; }
+        /// <summary>
+        /// 鍗曚綅
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鍗曚綅")]
+        public string Unit { get; set; }
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "浠诲姟鍙�")]
+        public int? TaskNum { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐘舵��")]
+        public int Status { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrder.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrder.cs"
new file mode 100644
index 0000000..c5aff01
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrder.cs"
@@ -0,0 +1,86 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+using WIDESEA_Core.CodeConfigEnum;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鍑哄簱鍗�
+    /// </summary>
+    [SugarTable(nameof(Dt_OutboundOrder), "鍑哄簱鍗�")]
+    public class Dt_OutboundOrder : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 浠撳簱涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "浠撳簱涓婚敭")]
+        public int WarehouseId { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        [CodeRule(RuleCodeEnum.OutboundOrderRule)]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鍗曟嵁缂栧彿", IsOnlyIgnoreUpdate = true)]
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 涓婃父鍗曟嵁缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "涓婃父鍗曟嵁缂栧彿", IsOnlyIgnoreUpdate = true)]
+        public string UpperOrderNo { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁绫诲瀷
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍗曟嵁绫诲瀷", IsOnlyIgnoreUpdate = true)]
+        public int OrderType { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍗曟嵁鐘舵��")]
+        public int OrderStatus { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏂瑰紡
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍒涘缓鏂瑰紡", IsOnlyIgnoreUpdate = true)]
+        public int CreateType { get; set; }
+
+        /// <summary>
+        /// 閮ㄩ棬缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "閮ㄩ棬缂栧彿")]
+        public string DepartmentCode { get; set; }
+
+        /// <summary>
+        /// 閮ㄩ棬鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "閮ㄩ棬鍚嶇О")]
+        public string DepartmentName { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鍑哄簱鍗曟槑缁�
+        /// </summary>
+        [Navigate(NavigateType.OneToMany, nameof(Dt_OutboundOrderDetail.OrderId), nameof(Id))]
+        public List<Dt_OutboundOrderDetail> Details { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrderDetail.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrderDetail.cs"
new file mode 100644
index 0000000..78a2c67
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrderDetail.cs"
@@ -0,0 +1,87 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鍑哄簱鍗曟槑缁�
+    /// </summary>
+    [SugarTable(nameof(Dt_OutboundOrderDetail), "鍑哄簱鍗曟槑缁�")]
+    public class Dt_OutboundOrderDetail : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 鍑哄簱鍗曚富閿�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍑哄簱鍗曚富閿�")]
+        public int OrderId { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡缂栧彿")]
+        public string MaterielCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "鐗╂枡鍚嶇О")]
+        public string MaterielName { get; set; }
+
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鎵规鍙�")]
+        public string BatchNo { get; set; }
+
+        /// <summary>
+        /// 琛屽彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "琛屽彿")]
+        public int RowNo {  get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鏁伴噺
+        /// </summary>
+        [SugarColumn(IsNullable = false,  ColumnDescription = "鍗曟嵁鏁伴噺")]
+        public float OrderQuantity { get; set; }
+
+        /// <summary>
+        /// 閿佸畾鏁伴噺
+        /// </summary>
+        [SugarColumn(IsNullable = false,  ColumnDescription = "閿佸畾鏁伴噺", DefaultValue = "0")]
+        public float LockQuantity { get; set; }
+
+        /// <summary>
+        /// 宸插嚭鏁伴噺
+        /// </summary>
+        [SugarColumn(IsNullable = false,  ColumnDescription = "宸插嚭鏁伴噺", DefaultValue = "0")]
+        public float OverOutQuantity { get; set; }
+
+        /// <summary>
+        /// 璁㈠崟鏄庣粏鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "璁㈠崟鏄庣粏鐘舵��")]
+        public int OrderDetailStatus { get; set; }
+        /// <summary>
+        /// 鍗曚綅
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鍗曚綅")]
+        public string Unit { get; set; }
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrderDetail_Hty.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrderDetail_Hty.cs"
new file mode 100644
index 0000000..01d46d6
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrderDetail_Hty.cs"
@@ -0,0 +1,42 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    [SugarTable(nameof(Dt_OutboundOrderDetail_Hty), "鍑哄簱鍗曟槑缁�")]
+    public class Dt_OutboundOrderDetail_Hty : Dt_OutboundOrderDetail, IBaseHistoryEntity
+    {
+        /// <summary>
+        /// 鍘熻〃涓婚敭
+        /// </summary>
+        [ImporterHeader(Name = "鍘熻〃涓婚敭")]
+        [ExporterHeader(DisplayName = "鍘熻〃涓婚敭")]
+        [SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "鍘熻〃涓婚敭")]
+        public int SourceId { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔绫诲瀷
+        /// </summary>
+        [ImporterHeader(Name = "鎿嶄綔绫诲瀷")]
+        [ExporterHeader(DisplayName = "鎿嶄綔绫诲瀷")]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎿嶄綔绫诲瀷")]
+        public string OperateType { get; set; }
+
+        /// <summary>
+        /// 绉诲叆鍘嗗彶鏃堕棿
+        /// </summary>
+        [ImporterHeader(Name = "绉诲叆鍘嗗彶鏃堕棿")]
+        [ExporterHeader(DisplayName = "绉诲叆鍘嗗彶鏃堕棿")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "绉诲叆鍘嗗彶鏃堕棿")]
+        public DateTime InsertTime { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrder_Hty.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrder_Hty.cs"
new file mode 100644
index 0000000..c53b331
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrder_Hty.cs"
@@ -0,0 +1,44 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+using WIDESEA_Core.CodeConfigEnum;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    [SugarTable(nameof(Dt_OutboundOrder_Hty), "鍑哄簱鍗�")]
+    public class Dt_OutboundOrder_Hty : Dt_OutboundOrder, IBaseHistoryEntity
+    {
+        /// <summary>
+        /// 鍘熻〃涓婚敭
+        /// </summary>
+        [ImporterHeader(Name = "鍘熻〃涓婚敭")]
+        [ExporterHeader(DisplayName = "鍘熻〃涓婚敭")]
+        [SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "鍘熻〃涓婚敭")]
+        public int SourceId { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔绫诲瀷
+        /// </summary>
+        [ImporterHeader(Name = "鎿嶄綔绫诲瀷")]
+        [ExporterHeader(DisplayName = "鎿嶄綔绫诲瀷")]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎿嶄綔绫诲瀷")]
+        public string OperateType { get; set; }
+
+        /// <summary>
+        /// 绉诲叆鍘嗗彶鏃堕棿
+        /// </summary>
+        [ImporterHeader(Name = "绉诲叆鍘嗗彶鏃堕棿")]
+        [ExporterHeader(DisplayName = "绉诲叆鍘嗗彶鏃堕棿")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "绉诲叆鍘嗗彶鏃堕棿")]
+        public DateTime InsertTime { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Record/Dt_LocationStatusChangeRecord.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Record/Dt_LocationStatusChangeRecord.cs"
new file mode 100644
index 0000000..357b358
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Record/Dt_LocationStatusChangeRecord.cs"
@@ -0,0 +1,77 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 璐т綅鐘舵�佸彉鍔ㄨ褰�
+    /// </summary>
+    [SugarTable(nameof(Dt_LocationStatusChangeRecord), "璐т綅鐘舵�佸彉鍔ㄨ褰�")]
+    public class Dt_LocationStatusChangeRecord : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 璐т綅涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "璐т綅涓婚敭")]
+        public int LocationId { get; set; }
+
+        /// <summary>
+        /// 璐т綅缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 30, ColumnDescription = "璐т綅缂栧彿")]
+        public string LocationCode { get; set; }
+
+        /// <summary>
+        /// 鍙樺姩鍓嶈揣浣嶇姸鎬�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍙樺姩鍓嶈揣浣嶇姸鎬�")]
+        public int BeforeStatus { get; set; }
+
+        /// <summary>
+        /// 鍙樺姩鍚庤揣浣嶇姸鎬�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍙樺姩鍚庤揣浣嶇姸鎬�")]
+        public int AfterStatus { get; set; }
+
+        /// <summary>
+        /// 鍙樺姩绫诲瀷锛堝嚭搴撱�佸叆搴撱�佹墜鍔ㄨ皟鏁�...锛�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍙樺姩绫诲瀷锛堝嚭搴撱�佸叆搴撱�佹墜鍔ㄨ皟鏁�...锛�")]
+        public int ChangeType { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鍗曟嵁涓婚敭")]
+        public int? OrderId { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鍗曟嵁缂栧彿")]
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "浠诲姟鍙�")]
+        public int? TaskNum { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Record/Dt_StockQuantityChangeRecord.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Record/Dt_StockQuantityChangeRecord.cs"
new file mode 100644
index 0000000..269dbae
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Record/Dt_StockQuantityChangeRecord.cs"
@@ -0,0 +1,101 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 搴撳瓨鍙樺姩淇℃伅璁板綍
+    /// </summary>
+    [SugarTable(nameof(Dt_StockQuantityChangeRecord), "搴撳瓨鍙樺姩淇℃伅璁板綍")]
+    public class Dt_StockQuantityChangeRecord : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨鏄庣粏涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "搴撳瓨鏄庣粏涓婚敭")]
+        public int StockDetailId { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵樼洏缂栧彿")]
+        public string PalleCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡缂栧彿")]
+        public string MaterielCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 200, ColumnDescription = "鐗╂枡鍚嶇О")]
+        public string MaterielName { get; set; }
+
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵规鍙�")]
+        public string BatchNo { get; set; }
+
+        /// <summary>
+        /// 搴忓垪鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 100, ColumnDescription = "搴忓垪鍙�")]
+        public string SerilNumber { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鍗曟嵁缂栧彿")]
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "浠诲姟鍙�")]
+        public int? TaskNum { get; set; }
+
+        /// <summary>
+        /// 鍙樺姩绫诲瀷锛堝嚭搴撱�佸叆搴撱�佹墜鍔ㄨ皟鏁�...锛�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍙樺姩绫诲瀷锛堝嚭搴撱�佸叆搴撱�佹墜鍔ㄨ皟鏁�...锛�")]
+        public int ChangeType { get; set; }
+
+        /// <summary>
+        /// 鍙樺姩鏁伴噺锛堟鏁拌〃绀哄鍔狅紝璐熸暟琛ㄧず鍑忓皯锛�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍙樺姩鏁伴噺锛堟鏁拌〃绀哄鍔狅紝璐熸暟琛ㄧず鍑忓皯锛�")]
+        public float ChangeQuantity { get; set; }
+
+        /// <summary>
+        /// 鍙樺姩鍓嶅簱瀛橀噺
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍙樺姩鍓嶅簱瀛橀噺", DefaultValue = "0")]
+        public float BeforeQuantity { get; set; }
+
+        /// <summary>
+        /// 鍙樺姩鍚庡簱瀛橀噺
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍙樺姩鍚庡簱瀛橀噺", DefaultValue = "0")]
+        public float AfterQuantity { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrder.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrder.cs"
new file mode 100644
index 0000000..22ae901
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrder.cs"
@@ -0,0 +1,68 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+
+    [SugarTable("Dt_CabinOrder", "鍏ュ簱鍗曡〃")]
+    public class Dt_CabinOrder:BaseEntity
+    {
+        [SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+
+        public int Id { get; set; }
+
+        [SugarColumn(IsNullable =true,Length =50,ColumnDescription ="鍏ュ簱鍗曞彿")]
+        public  string Order_no { get; set; }
+
+
+        [SugarColumn(IsNullable = true, Length = 3, ColumnDescription = "鍏ュ簱绫诲瀷锛�1姝e父/3閫�璐�")]
+        public string Order_type { get; set; }
+
+        
+
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "渚涘簲鍟嗕唬鐮�")]
+        public string Supplier_no { get; set; }
+
+
+        [SugarColumn(IsNullable = true, Length = 100, ColumnDescription = "渚涘簲鍟嗗悕绉�")]
+        public string Supplier_name { get; set; }
+
+
+        //搴撴埧鍙�
+        [SugarColumn(ColumnName = "Warehouse_no", IsNullable = true, ColumnDescription = "搴撴埧鍙�001")]
+        public string Warehouse_no { get; set; }
+
+        [SugarColumn(IsNullable = true, ColumnDescription = "鍏ュ簱璁拌处鏃堕棿")]
+        public DateTime?Account_tiem { get; set; }
+
+        /// <summary>
+        /// 涓嬫父鐘舵�� 鏂板缓锛屽紑濮嬶紝宸插畬鎴�
+        /// 涓嬫父涓嬪彂锛堟柊寤猴級
+        /// 璇︽儏寮�濮嬶紙寮�濮嬶級
+        /// 璇︽儏鍏ㄩ儴瀹屾垚锛堝凡瀹屾垚锛屼笂浼犵粰涓婃父绯荤粺锛岀Щ鍏ュ巻鍙茶〃鍒犻櫎淇℃伅锛�
+        /// </summary>
+        [SugarColumn(ColumnName = "OdrderStatus",IsNullable = true,Length =50, ColumnDescription = "琛ㄥご鐘舵��")]
+        public string OdrderStatus { get; set; }
+
+        //涓嬮潰鏄惁闇�瑕佽繖浜涘瓧娈碉紵
+        //浼樺厛绾� priority
+        //[SugarColumn(ColumnName ="Priority",IsNullable =true,ColumnDescription ="浼樺厛绾�")]
+        //public int Priority { get; set; }
+
+
+
+        //鏄惁鍙栨秷 Iscancel
+        //[SugarColumn(ColumnName = "Iscancel", IsNullable = true, ColumnDescription = "鏄惁鍙栨秷(1鏄�0鍚�)")]
+        //public int Iscancel { get; set; }
+
+        [Navigate(NavigateType.OneToMany,nameof(Dt_CabinOrderDetail.OrderId))]
+        public List<Dt_CabinOrderDetail> Details { get; set; }
+
+      
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrderDetail.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrderDetail.cs"
new file mode 100644
index 0000000..20ae0a6
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrderDetail.cs"
@@ -0,0 +1,65 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable("Dt_CabinOrderDetail", "鍏ュ簱鏄庣粏琛�")]
+    public class Dt_CabinOrderDetail:BaseEntity
+    {
+        [SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int  Id { get; set; }
+
+        // 淇锛氬叧鑱斿瓧娈靛簲璇ユ槸涓昏〃鐨処d锛堜笉鏄疧rder_no锛�
+        [SugarColumn(ColumnName = "OrderId", ColumnDescription = "鍏宠仈鍏ュ簱鍗旾D")]
+        public int OrderId { get; set; }
+
+        //鍖哄煙锛堣嚜宸卞缓绔嬫垨鑰呬粬浠洿鎺ョ粰鍑烘潵锛�
+        [SugarColumn(ColumnName = "Reservoirarea", IsNullable = true, Length = 50, ColumnDescription = "搴撳尯")]
+        public string Reservoirarea { get; set; }
+
+        [SugarColumn(ColumnName = "Goods_no", IsNullable = true, Length = 50, ColumnDescription = "鑽搧缂栫爜")]
+        public string  Goods_no { get; set; }
+
+        [SugarColumn(ColumnName = "Order_qty", IsNullable = true, ColumnDescription = "璁㈠崟鍏ュ簱鏁伴噺锛岄��璐ф椂涓鸿礋鏁�")]
+        public decimal Order_qty { get; set; }
+
+        [SugarColumn(ColumnName = "Order_Inqty", IsNullable = true, ColumnDescription = "鍏ュ簱瀹屾垚鏁伴噺")]
+        public decimal Order_Inqty { get; set; }
+
+
+
+        [SugarColumn(ColumnName = "Batch_num", IsNullable = true, Length = 50, ColumnDescription = "鎵瑰彿")]
+        public string  Batch_num { get; set; }
+
+        [SugarColumn(ColumnName = "Exp_date", IsNullable = true, Length = 50, ColumnDescription = "鏍℃湡(yyyymmmdd)")]
+        public  string  Exp_date { get; set; }
+
+ 
+
+        //鐩樼泩鏄庣粏--銆嬫枡绠卞彿锛屾暟閲�
+        //public List<> StocktakingDetails { get; set; }
+
+
+        /// <summary>
+        /// 璁㈠崟璇︽儏鐘舵�� 鏂板缓锛屽紑濮嬶紝宸插畬鎴�
+        /// 搴撴埧鍙�+鐘舵��+锛堟柊寤猴級锛氬垽鏂槸鍚︿笅鍙戠粰wcs
+        /// 璇︽儏寮�濮嬶紙寮�濮嬶級
+        /// 璇︽儏瀹屾垚锛堝凡瀹屾垚锛岀Щ鍏ュ巻鍙茶〃鍒犻櫎淇℃伅锛�
+        /// </summary>
+        [SugarColumn(ColumnName = "OrderDetailStatus", IsNullable = true, Length = 50, ColumnDescription = "鐘舵��")]
+        public string OrderDetailStatus { get; set; }
+
+        //鐘舵��
+        [SugarColumn(ColumnName = "Status", IsNullable = true, ColumnDescription = "鐘舵�� 鍚屾鐘舵�侊細0wcs鏈悓姝� 1wcs宸插悓姝� 2鏃犻渶鍚屾锛堝嵆鍚屾涓嬪彂缁檞cs锛�")]
+        public int Status { get; set; }
+
+        // 瀵艰埅灞炴�э細涓�涓槑缁嗗搴斾竴涓嵂鍝佷俊鎭�
+        [Navigate(NavigateType.OneToOne, nameof(Goods_no), nameof(Dt_MedicineGoods.Goods_no))]
+        public Dt_MedicineGoods MedicineGoods { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrderDetail_Hty .cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrderDetail_Hty .cs"
new file mode 100644
index 0000000..c7f0927
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrderDetail_Hty .cs"
@@ -0,0 +1,66 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable("Dt_CabinOrderDetail_Hty ", "鍏ュ簱鏄庣粏鍘嗗彶琛�")]
+    public class Dt_CabinOrderDetail_Hty : BaseEntity
+    {
+
+        [SugarColumn(ColumnName = "HistoryId", IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "鍘嗗彶璁板綍涓婚敭")]
+        public int  HistoryId { get; set; }
+        // 淇濈暀鍘熻〃鎵�鏈夊瓧娈�
+        [SugarColumn(ColumnName = "Id", ColumnDescription = "鍘熶富閿�")]
+        public int Id { get; set; }
+
+        //鍖哄煙锛堣嚜宸卞缓绔嬫垨鑰呬粬浠洿鎺ョ粰鍑烘潵锛�
+        [SugarColumn(ColumnName = "Reservoirarea", IsNullable = true, Length = 50, ColumnDescription = "搴撳尯")]
+        public string Reservoirarea { get; set; }
+
+        [SugarColumn(ColumnName = "Goods_no", IsNullable = true, Length = 50, ColumnDescription = "鑽搧缂栫爜")]
+        public string Goods_no { get; set; }
+
+        [SugarColumn(ColumnName = "Order_qty", IsNullable = true, ColumnDescription = "璁㈠崟鍏ュ簱鏁伴噺锛岄��璐ф椂涓鸿礋鏁�")]
+        public decimal Order_qty { get; set; }
+
+        [SugarColumn(ColumnName = "Order_Inqty", IsNullable = true, ColumnDescription = "鍏ュ簱瀹屾垚鏁伴噺")]
+        public decimal Order_Inqty { get; set; }
+
+
+
+        [SugarColumn(ColumnName = "Batch_num", IsNullable = true, Length = 50, ColumnDescription = "鎵瑰彿")]
+        public string Batch_num { get; set; }
+
+        [SugarColumn(ColumnName = "Exp_date", IsNullable = true, Length = 50, ColumnDescription = "鏍℃湡(yyyymmmdd)")]
+        public string Exp_date { get; set; }
+
+
+
+        //鐩樼泩鏄庣粏--銆嬫枡绠卞彿锛屾暟閲�
+        //public List<> StocktakingDetails { get; set; }
+
+
+        /// <summary>
+        /// 璁㈠崟璇︽儏鐘舵�� 鏂板缓锛屽紑濮嬶紝宸插畬鎴�
+        /// 搴撴埧鍙�+鐘舵��+锛堟柊寤猴級锛氬垽鏂槸鍚︿笅鍙戠粰wcs
+        /// 璇︽儏寮�濮嬶紙寮�濮嬶級
+        /// 璇︽儏瀹屾垚锛堝凡瀹屾垚锛岀Щ鍏ュ巻鍙茶〃鍒犻櫎淇℃伅锛�
+        /// </summary>
+        [SugarColumn(ColumnName = "OrderDetailStatus", IsNullable = true, Length = 50, ColumnDescription = "鐘舵��")]
+        public string OrderDetailStatus { get; set; }
+
+        //鐘舵��
+        [SugarColumn(ColumnName = "Status", IsNullable = true, ColumnDescription = "鐘舵�� 鍚屾鐘舵�侊細0鏈悓姝� 1宸插悓姝� 2鏃犻渶鍚屾锛堝嵆鍚屾涓嬪彂缁檞cs锛�")]
+        public int Status { get; set; }
+
+        // 瀵艰埅灞炴�э細涓�涓槑缁嗗搴斾竴涓嵂鍝佷俊鎭�
+        [Navigate(NavigateType.OneToOne, nameof(Goods_no), nameof(Dt_MedicineGoods.Goods_no))]
+        public Dt_MedicineGoods MedicineGoods { get; set; }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrder_Hty.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrder_Hty.cs"
new file mode 100644
index 0000000..6d02591
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_CabinOrder_Hty.cs"
@@ -0,0 +1,72 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+
+    [SugarTable("Dt_CabinOrder_Hty", "鍏ュ簱鍗曡〃鍘嗗彶琛�")]
+    public class Dt_CabinOrder_Hty : BaseEntity
+    {
+
+        [SugarColumn(ColumnName = "HistoryId", IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "鍘嗗彶璁板綍涓婚敭")]
+        public int HistoryId { get; set; }
+
+
+        [SugarColumn(ColumnName = "Id", ColumnDescription = "鍘熶富閿�")]
+        public int Id { get; set; }
+
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鍏ュ簱鍗曞彿")]
+        public string Order_no { get; set; }
+
+
+        [SugarColumn(IsNullable = true, Length = 3, ColumnDescription = "鍏ュ簱绫诲瀷锛�1姝e父/3閫�璐�")]
+        public string Order_type { get; set; }
+
+
+
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "渚涘簲鍟嗕唬鐮�")]
+        public string Supplier_no { get; set; }
+
+
+        [SugarColumn(IsNullable = true, Length = 100, ColumnDescription = "渚涘簲鍟嗗悕绉�")]
+        public string Supplier_name { get; set; }
+
+
+        //搴撴埧鍙�
+        [SugarColumn(ColumnName = "Warehouse_no", IsNullable = true, ColumnDescription = "搴撴埧鍙�001")]
+        public string Warehouse_no { get; set; }
+
+        [SugarColumn(IsNullable = true, ColumnDescription = "鍏ュ簱璁拌处鏃堕棿")]
+        public DateTime? Account_tiem { get; set; }
+
+        /// <summary>
+        /// 涓嬫父鐘舵�� 鏂板缓锛屽紑濮嬶紝宸插畬鎴�
+        /// 涓嬫父涓嬪彂锛堟柊寤猴級
+        /// 璇︽儏寮�濮嬶紙寮�濮嬶級
+        /// 璇︽儏鍏ㄩ儴瀹屾垚锛堝凡瀹屾垚锛屼笂浼犵粰涓婃父绯荤粺锛岀Щ鍏ュ巻鍙茶〃鍒犻櫎淇℃伅锛�
+        /// </summary>
+        [SugarColumn(ColumnName = "OdrderStatus", IsNullable = true, Length = 50, ColumnDescription = "琛ㄥご鐘舵��")]
+        public string OdrderStatus { get; set; }
+
+        //涓嬮潰鏄惁闇�瑕佽繖浜涘瓧娈碉紵
+        //浼樺厛绾� priority
+        //[SugarColumn(ColumnName ="Priority",IsNullable =true,ColumnDescription ="浼樺厛绾�")]
+        //public int Priority { get; set; }
+
+
+
+        //鏄惁鍙栨秷 Iscancel
+        //[SugarColumn(ColumnName = "Iscancel", IsNullable = true, ColumnDescription = "鏄惁鍙栨秷(1鏄�0鍚�)")]
+        //public int Iscancel { get; set; }
+
+        [Navigate(NavigateType.OneToMany, nameof(Dt_CabinOrderDetail.OrderId))]
+        public List<Dt_CabinOrderDetail> Details { get; set; }
+
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_Customer.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_Customer.cs"
new file mode 100644
index 0000000..3a39474
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_Customer.cs"
@@ -0,0 +1,37 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable("Dt_Customer", "瀹㈡埛琛�")]
+    public class Dt_Customer:BaseEntity
+    {
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
+        public int Id { get; set; }
+
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "瀹㈡埛缂栫爜")]
+        public string Client_no { get; set; }
+
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "瀹㈡埛鍚嶇О")]
+        public string Client_name { get; set; } 
+
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鐢佃瘽")]
+        public string Telephone { get; set; }
+
+        [SugarColumn(IsNullable = true, Length = 70, ColumnDescription = "鍦板潃")]
+        public string Address { get; set; }
+
+        [SugarColumn(Length =50,ColumnDescription = "閭")]
+        public string Email { get; set; }
+
+        [SugarColumn(Length = 200, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrder.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrder.cs"
new file mode 100644
index 0000000..045226b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrder.cs"
@@ -0,0 +1,69 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable("Dt_DeliveryOrder", "鍑哄簱鍗�")]
+    public  class Dt_DeliveryOrder: BaseEntity
+    {
+        [SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public  int  Id { get; set; }
+
+        [SugarColumn(ColumnName = "Out_no", IsNullable = true, Length = 50, ColumnDescription = "鍑哄簱鍗曞彿")]
+        public string   Out_no{ get; set; }
+
+        [SugarColumn(ColumnName = "Out_type", IsNullable = true, Length = 3, ColumnDescription = "鍑哄簱鍗曠被鍨�1姝e父锛�2鍑哄簱閫�璐�")]
+        public string  Out_type { get; set; }
+
+        [SugarColumn(ColumnName = "Client_no", IsNullable = true, Length = 50, ColumnDescription = "瀹㈡埛浠g爜")]
+        public string Client_no { get; set; }
+
+
+        [SugarColumn(ColumnName = "Client_name", IsNullable = true, Length = 50, ColumnDescription = "瀹㈡埛鍚嶇О")]
+        public string Client_name { get; set; }
+
+
+        //搴撴埧鍙�
+        [SugarColumn(ColumnName = "Warehouse_no", IsNullable = true, ColumnDescription = "搴撴埧鍙�001缁檞cs")]
+        public string Warehouse_no { get; set; }
+
+
+
+
+        [SugarColumn(ColumnName = "Account_time", IsNullable = true, ColumnDescription = "鍑哄簱璁拌处鏃堕棿")]
+        public DateTime?Account_time { get; set; }
+
+        /// <summary>
+        /// 琛ㄥご鐘舵�侊細鏂板缓锛屽紑濮嬶紝宸插畬鎴� //璇︽儏琛ㄥ叏閮ㄧ姸鎬佷负鍏ㄩ儴锛屽湪灏嗙姸鎬佹敼鎴愬畬鎴愬悗鎵嶄細涓婁紶缁欎笂娓哥郴缁�
+        /// </summary>
+        [SugarColumn(ColumnName = "OutStatus", IsNullable = true, ColumnDescription = "鐘舵��" )]
+        public string OutStatus { get; set; }
+
+        ///// <summary>
+        ///// 涓婃父琛ㄥご鐘舵�侊細鏈畬鎴愶紝閮ㄥ垎瀹屾垚锛屽凡瀹屾垚
+        ///// </summary>
+        //[SugarColumn(ColumnName = "UpOutStatus", IsNullable = true, ColumnDescription = "缁欎笂娓稿叆搴撶姸鎬侊紝")]
+        //public string UpOutStatus { get; set; }
+
+
+
+        //鏄惁闇�瑕佷笅闈㈢殑瀛楁
+        //浼樺厛绾� priority
+        //鏄惁鍙栨秷 Is_cancel
+
+        //浼樺厛绾� priority
+        //[SugarColumn(ColumnName = "Priority", IsNullable = true, ColumnDescription = "浼樺厛绾�")]
+        //public int Priority { get; set; }
+
+        ////鏄惁鍙栨秷 Iscancel
+        //[SugarColumn(ColumnName = "Iscancel", IsNullable = true, ColumnDescription = "鏄惁鍙栨秷")]
+        //public int Iscancel { get; set; }
+        [Navigate(NavigateType.OneToMany, nameof(Dt_DeliveryOrderDetail.DeliveryOrderId))]
+        public List<Dt_DeliveryOrderDetail> Details { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrderDetail.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrderDetail.cs"
new file mode 100644
index 0000000..6912a2e
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrderDetail.cs"
@@ -0,0 +1,60 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable("Dt_DeliveryOrderDetail", "鍑哄簱鏄庣粏琛�")]
+    public class Dt_DeliveryOrderDetail : BaseEntity
+    {
+        [SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int  Id { get; set; }
+
+        [SugarColumn(ColumnName = "DeliveryOrderId", IsNullable = true, ColumnDescription = "鍏宠仈鍏ュ簱鍗旾D")]
+        public int DeliveryOrderId { get; set; }
+
+        //鍖哄煙锛堣嚜宸卞缓绔嬫垨鑰呬粬浠洿鎺ョ粰鍑烘潵锛�
+        [SugarColumn(ColumnName = "Reservoirarea", IsNullable = true, Length = 50, ColumnDescription = "搴撳尯")]
+        public string Reservoirarea { get; set; }
+
+        [SugarColumn(ColumnName = "Goods_no", IsNullable = true, Length = 50, ColumnDescription = "鑽搧缂栫爜")]
+        public string  Goods_no { get; set; }
+
+
+        [SugarColumn(ColumnName = "Order_qty", IsNullable = true, ColumnDescription = "鍑哄簱閫�璐ф椂涓鸿礋鏁�")]
+        public decimal Order_qty { get; set; }
+
+        [SugarColumn(ColumnName = "Batch_num", IsNullable = true, Length = 50, ColumnDescription = "鎵瑰彿")]
+        public string  Batch_num { get; set; }
+
+        [SugarColumn(ColumnName = "Exp_date", IsNullable = true, Length = 50, ColumnDescription = "鏍℃湡(yyyymmmdd)")]
+        public  string  Exp_date { get; set; }
+        /// <summary>
+        /// 璁㈠崟璇︽儏鐘舵�� 鏂板缓锛屽紑濮嬶紝宸插畬鎴�
+        /// 搴撴埧鍙�+鐘舵��+锛堟柊寤猴級锛氬垽鏂槸鍚︿笅鍙戠粰wcs
+        /// 璇︽儏寮�濮嬶紙寮�濮嬶級
+        /// 璇︽儏瀹屾垚锛堝凡瀹屾垚锛岀Щ鍏ュ巻鍙茶〃鍒犻櫎淇℃伅锛�
+        /// </summary>
+        [SugarColumn(ColumnName = "OotDetailStatus", IsNullable = true, Length = 50, ColumnDescription = "鐘舵��")]
+        public string OotDetailStatus { get; set; }
+
+
+        [SugarColumn(ColumnName = "Status",IsNullable =true, ColumnDescription = "涓嬫父鐘舵�侊紝鍚屾鐘舵�侊細0鏈悓姝ワ紝1宸插悓姝ワ紙鍚屾鍙戠粰wcs锛�")]
+        public int Status { get; set; }
+
+        // 瀵艰埅灞炴�э細涓�涓槑缁嗗搴斾竴涓嵂鍝佷俊鎭�
+        [Navigate(NavigateType.OneToOne, nameof(Goods_no), nameof(Dt_MedicineGoods.Goods_no))]
+        public Dt_MedicineGoods MedicineGoods { get; set; }
+
+        //鏄惁闇�瑕佷笅闈㈢殑瀛楁
+        //sku鍚嶇О productName
+        //sku瑙勬牸 ProductSpecifications
+        //鏁伴噺 quantity 
+        //鐩樹簭鏄庣粏 StocktakingDetails 
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrderDetail_Hty.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrderDetail_Hty.cs"
new file mode 100644
index 0000000..f817e86
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrderDetail_Hty.cs"
@@ -0,0 +1,62 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable("Dt_DeliveryOrderDetail_Hty", "鍑哄簱鏄庣粏鍘嗗彶琛�")]
+    public class Dt_DeliveryOrderDetail_Hty : BaseEntity
+    {
+        [SugarColumn(ColumnName = "HistoryId", IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "鍘嗗彶璁板綍涓婚敭")]
+        public int HistoryId { get; set; }
+
+        [SugarColumn(ColumnName = "Id", ColumnDescription = "鍘熶富閿�")]
+        public int Id { get; set; }
+
+        [SugarColumn(ColumnName = "DeliveryOrderId", IsNullable = true, ColumnDescription = "鍏宠仈鍏ュ簱鍗旾D")]
+        public int DeliveryOrderId { get; set; }
+
+        [SugarColumn(ColumnName = "Reservoirarea", IsNullable = true, Length = 50, ColumnDescription = "搴撳尯")]
+        public string Reservoirarea { get; set; }
+
+        [SugarColumn(ColumnName = "Goods_no", IsNullable = true, Length = 50, ColumnDescription = "鑽搧缂栫爜")]
+        public string Goods_no { get; set; }
+
+
+        [SugarColumn(ColumnName = "Order_qty", IsNullable = true, ColumnDescription = "鍑哄簱閫�璐ф椂涓鸿礋鏁�")]
+        public decimal Order_qty { get; set; }
+
+        [SugarColumn(ColumnName = "Batch_num", IsNullable = true, Length = 50, ColumnDescription = "鎵瑰彿")]
+        public string Batch_num { get; set; }
+
+        [SugarColumn(ColumnName = "Exp_date", IsNullable = true, Length = 8, ColumnDescription = "鏍℃湡(yyyymmmdd)")]
+        public string Exp_date { get; set; }
+        /// <summary>
+        /// 璁㈠崟璇︽儏鐘舵�� 鏂板缓锛屽紑濮嬶紝宸插畬鎴�
+        /// 搴撴埧鍙�+鐘舵��+锛堟柊寤猴級锛氬垽鏂槸鍚︿笅鍙戠粰wcs
+        /// 璇︽儏寮�濮嬶紙寮�濮嬶級
+        /// 璇︽儏瀹屾垚锛堝凡瀹屾垚锛岀Щ鍏ュ巻鍙茶〃鍒犻櫎淇℃伅锛�
+        /// </summary>
+        [SugarColumn(ColumnName = "OotDetailStatus", IsNullable = true, Length = 50, ColumnDescription = "鐘舵��")]
+        public string OotDetailStatus { get; set; }
+
+
+        [SugarColumn(ColumnName = "Status", IsNullable = true, ColumnDescription = "涓嬫父鐘舵�侊紝鍚屾鐘舵�侊細0鏈悓姝ワ紝1宸插悓姝ワ紙鍚屾鍙戠粰wcs锛�")]
+        public int Status { get; set; }
+
+        // 瀵艰埅灞炴�э細涓�涓槑缁嗗搴斾竴涓嵂鍝佷俊鎭�
+        [Navigate(NavigateType.OneToOne, nameof(Goods_no), nameof(Dt_MedicineGoods.Goods_no))]
+        public Dt_MedicineGoods MedicineGoods { get; set; }
+
+        //鏄惁闇�瑕佷笅闈㈢殑瀛楁
+        //sku鍚嶇О productName
+        //sku瑙勬牸 ProductSpecifications
+        //鏁伴噺 quantity 
+        //鐩樹簭鏄庣粏 StocktakingDetails 
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrder_Hty.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrder_Hty.cs"
new file mode 100644
index 0000000..019b4a4
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_DeliveryOrder_Hty.cs"
@@ -0,0 +1,63 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable("Dt_DeliveryOrder_Hty", "鍑哄簱鍗曞巻鍙茶〃")]
+    public  class Dt_DeliveryOrder_Hty : BaseEntity
+    {
+        [SugarColumn(ColumnName = "HistoryId", IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "鍘嗗彶璁板綍涓婚敭")]
+        public int HistoryId { get; set; }
+
+        [SugarColumn(ColumnName = "Id", ColumnDescription = "鍘熶富閿�")]
+        public  int  Id { get; set; }
+        [SugarColumn(ColumnName = "Out_no", IsNullable = true, Length = 50, ColumnDescription = "鍑哄簱鍗曞彿")]
+        public string Out_no { get; set; }
+
+        [SugarColumn(ColumnName = "Out_type", IsNullable = true, Length = 3, ColumnDescription = "鍑哄簱鍗曠被鍨�")]
+        public string Out_type { get; set; }
+
+        [SugarColumn(ColumnName = "Client_no", IsNullable = true, Length = 50, ColumnDescription = "瀹㈡埛浠g爜")]
+        public string Client_no { get; set; }
+
+
+        [SugarColumn(ColumnName = "Client_name", IsNullable = true, Length = 50, ColumnDescription = "瀹㈡埛鍚嶇О")]
+        public string Client_name { get; set; }
+
+
+        //搴撴埧鍙�
+        [SugarColumn(ColumnName = "Warehouse_no", IsNullable = true, ColumnDescription = "搴撴埧鍙�")]
+        public string Warehouse_no { get; set; }
+
+
+
+
+        [SugarColumn(ColumnName = "Account_time", IsNullable = true, ColumnDescription = "鍑哄簱璁拌处鏃堕棿")]
+        public DateTime? Account_time { get; set; }
+
+        /// <summary>
+        /// 琛ㄥご鐘舵�侊細鏂板缓锛屽紑濮嬶紝宸插畬鎴� //璇︽儏琛ㄥ叏閮ㄧ姸鎬佷负鍏ㄩ儴锛屽湪灏嗙姸鎬佹敼鎴愬畬鎴愬悗鎵嶄細涓婁紶缁欎笂娓哥郴缁�
+        /// </summary>
+        [SugarColumn(ColumnName = "OutStatus", IsNullable = true, ColumnDescription = "鐘舵��")]
+        public string OutStatus { get; set; }
+
+        //鏄惁闇�瑕佷笅闈㈢殑瀛楁
+        //浼樺厛绾� priority
+        //鏄惁鍙栨秷 Is_cancel
+
+        //浼樺厛绾� priority
+        //[SugarColumn(ColumnName = "Priority", IsNullable = true, ColumnDescription = "浼樺厛绾�")]
+        //public int Priority { get; set; }
+
+        ////鏄惁鍙栨秷 Iscancel
+        //[SugarColumn(ColumnName = "Iscancel", IsNullable = true, ColumnDescription = "鏄惁鍙栨秷")]
+        //public int Iscancel { get; set; }
+        [Navigate(NavigateType.OneToMany, nameof(Dt_DeliveryOrderDetail.DeliveryOrderId))]
+        public List<Dt_DeliveryOrderDetail> Details { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_ErrorLog.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_ErrorLog.cs"
new file mode 100644
index 0000000..b4f0b5e
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_ErrorLog.cs"
@@ -0,0 +1,31 @@
+锘�//using SqlSugar;
+//using System;
+//using System.Collections.Generic;
+//using System.Linq;
+//using System.Text;
+//using System.Threading.Tasks;
+//using WIDESEA_Core.DB.Models;
+
+//namespace WIDESEA_Model.Models.SquareCabin
+//{
+//    [SugarTable("ErrorLog1", "鏃ュ織鎶ラ敊琛紝瀹屾垚涓�涓帴鍙f姤閿欑殑鏃跺�欙紝瀹炴椂缁欎笉闇�瑕佸缓琛�")]
+//    public class Dt_ErrorLog : BaseEntity
+//    {
+//        [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
+//        public int Id { get; set; }
+
+//        [SugarColumn(IsNullable = true, Length = 2, ColumnDescription = "涓氬姟绫诲瀷(1鍏ュ簱鍗�,2鍏ュ簱瀹屾垚,3鍑哄簱鍗�,4鍑哄簱瀹屾垚,5鑽搧鍩虹,6渚涘簲鍟�,7瀹㈡埛,8搴撳瓨鏌ヨ)")]
+//        public string Type { get; set; }
+
+//        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鍏抽敭缂栫爜/鍗曞彿锛岃褰曟帴鍙e叧閿瓧娈�")]
+//        public string Code { get; set; }
+
+//        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "寮傚父淇℃伅")]
+//        public string Message { get; set; }
+
+//        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "澶囨敞")]
+//        public string Remark { get; set; }
+
+
+//    }
+//}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_Inventory.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_Inventory.cs"
new file mode 100644
index 0000000..a14ec6a
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_Inventory.cs"
@@ -0,0 +1,40 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable("Dt_Inventory", "搴撳瓨琛�")]
+    public class Dt_Inventory:BaseEntity
+    {
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
+        public int Id { get; set; }
+
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鑽搧缂栫爜")]
+        public string Goods_no { get; set; }
+
+        //鍖哄煙锛堣嚜宸卞缓绔嬫垨鑰呬粬浠洿鎺ョ粰鍑烘潵锛�
+        [SugarColumn(ColumnName = "Reservoirarea", IsNullable = true, Length = 50, ColumnDescription = "搴撳尯")]
+        public string Reservoirarea { get; set; }
+
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鎵瑰彿")]
+        public string Batch_num { get; set; }
+
+        [SugarColumn(IsNullable = true,  ColumnDescription = "涓氬姟搴撳瓨鏁伴噺")]
+        public decimal Business_qty { get; set; }
+
+        [SugarColumn(IsNullable = true,  ColumnDescription = "瀹為檯搴撳瓨鏁伴噺")]
+        public decimal Actual_qty { get; set; }
+
+        //鍔犱釜鏁堟湡
+        [SugarColumn(ColumnName = "Exp_date", IsNullable = true, Length = 8, ColumnDescription = "鏍℃湡(yyyymmmdd)")]
+        public string Exp_date { get; set; }
+
+        [SugarColumn(ColumnName = "PalletCode", IsNullable = true, Length = 50, ColumnDescription = "鏂欑鍙�/鎵樼洏鍙�")]
+        public string PalletCode { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_MedicineGoods.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_MedicineGoods.cs"
new file mode 100644
index 0000000..2e47eec
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_MedicineGoods.cs"
@@ -0,0 +1,70 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable("Dt_MedicineGoods", "鑽搧鍩虹淇℃伅琛�")]
+    public class Dt_MedicineGoods : BaseEntity
+    {
+        [SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int  Id { get; set; }
+
+
+        [SugarColumn(ColumnName = "Goods_no", IsNullable = true, Length = 50, ColumnDescription = "鑽搧缂栫爜锛堝敮涓�锛�")]
+        public string Goods_no { get; set; }
+
+        [SugarColumn(ColumnName = "MaterialCode", IsNullable = true, Length = 50, ColumnDescription = "璐х墿绫诲瀷/鑽搧/鍣ㄦ潗")]
+        public string MaterialCode { get; set; }
+
+        [SugarColumn(ColumnName = "Goods_tym", IsNullable = true, Length = 50, ColumnDescription = "鑽搧閫氱敤鍚�")]
+        public string Goods_tym { get; set; }
+
+
+        [SugarColumn(ColumnName = "Goods_spm", IsNullable = true, Length = 50, ColumnDescription = "鑽搧鍚嶇О")]
+        public  string Goods_spm { get; set; }
+
+        [SugarColumn(ColumnName = "Model", IsNullable = true, Length = 70, ColumnDescription = "瑙勬牸")]
+        public string  Model { get; set; }
+
+        [SugarColumn(ColumnName = "Factory", IsNullable = true, Length = 50, ColumnDescription = "鐢熶骇鍘傚")]
+        public string  Factory { get; set; }
+
+        [SugarColumn(ColumnName = "Unit", IsNullable = true, Length = 20, ColumnDescription = "璁¢噺鍗曚綅")]
+        public string  Unit { get; set; }
+
+
+        [SugarColumn(ColumnName = "Item_Iength", IsNullable = true, ColumnDescription = "鍗曞搧闀垮害锛屾绫充负鍗曚綅")]
+        public decimal? Item_Iength { get; set; }
+
+        [SugarColumn(ColumnName = "Item_width", IsNullable = true, ColumnDescription = "鍗曞搧瀹藉害锛屾绫充负鍗曚綅")]
+        public decimal ?Item_width { get; set; }
+
+        [SugarColumn(ColumnName = "Item_hight", IsNullable = true, ColumnDescription = "鍗曞搧楂樺害锛屾绫充负鍗曚綅")]
+        public decimal? Item_hight { get; set; }
+
+        [SugarColumn(ColumnName = "Item_volumn", IsNullable = true, ColumnDescription = "鍗曞搧浣撶Н锛岀珛鏂规绫充负鍗曚綅")]
+        public decimal ?Item_volumn { get; set; }
+
+        [SugarColumn(ColumnName = "Item_weight", IsNullable = true, ColumnDescription = "鍗曞搧閲嶉噺锛屽厠涓哄崟浣�")]
+        public decimal ?Item_weight { get; set; }
+
+
+        [SugarColumn(ColumnName = "Storage_cond", IsNullable = true, Length = 100, ColumnDescription = "鍌ㄥ瓨鏉′欢")]
+        public string  Storage_cond { get; set; }
+
+
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+
+
+        [SugarColumn(ColumnName = "GoodStatus", IsNullable = true, Length = 50, ColumnDescription = "鑽搧鐘舵�侊紝鏄惁涓嬪彂缁檞cs锛屾湭涓嬪彂锛屼笅鍙戝畬鎴�")]
+        public string  GoodStatus { get; set; }
+
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_Supplier.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_Supplier.cs"
new file mode 100644
index 0000000..be9c5cb
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_Supplier.cs"
@@ -0,0 +1,37 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable("Dt_Supplier", "渚涘簲鍟嗚〃")]
+    public class Dt_Supplier:BaseEntity
+    {
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
+        public int Id { get; set; }
+
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "渚涘簲鍟嗙紪鐮�")]
+        public string Supplier_no { get; set; } 
+
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "渚涘簲鍟嗗悕绉�")]
+        public string Supplier_name { get; set; } 
+
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鐢佃瘽")]
+        public string Telephone { get; set; }
+
+        [SugarColumn(IsNullable = true, Length = 70, ColumnDescription = "鍦板潃")]
+        public string Address { get; set; }
+
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "閭")]
+        public string Email { get; set; }
+
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_WarehouseType.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_WarehouseType.cs"
new file mode 100644
index 0000000..95cfd9e
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/SquareCabin/Dt_WarehouseType.cs"
@@ -0,0 +1,25 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    public class Dt_WarehouseType:BaseEntity
+    {
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true,ColumnDescription ="涓婚敭")]
+        public int Id { get; set; }
+
+        //搴撴埧浠g爜 001 002
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "搴撴埧浠g爜")]
+        public  string WarehouseCode { get; set; }
+
+        //搴撴埧鍚嶇О
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "搴撴埧鍚嶇О")]
+        public string WarehouseName { get; set; }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Stock/Dt_StockInfo.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Stock/Dt_StockInfo.cs"
new file mode 100644
index 0000000..85fea92
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Stock/Dt_StockInfo.cs"
@@ -0,0 +1,65 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 搴撳瓨淇℃伅
+    /// </summary>
+    [SugarTable(nameof(Dt_StockInfo), "搴撳瓨淇℃伅")]
+    public class Dt_StockInfo : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵樼洏缂栧彿")]
+        public string PalletCode { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏绫诲瀷
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鎵樼洏绫诲瀷")]
+        public int PalletType { get; set; }
+
+        /// <summary>
+        /// 璐т綅缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 30, ColumnDescription = "璐т綅缂栧彿")]
+        public string LocationCode { get; set; }
+
+        /// <summary>
+        /// 浠撳簱涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "浠撳簱涓婚敭")]
+        public int WarehouseId { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "搴撳瓨鐘舵��")]
+        public int StockStatus { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨鏄庣粏
+        /// </summary>
+        [Navigate(NavigateType.OneToMany, nameof(Dt_StockInfoDetail.StockId), nameof(Id))]
+        public List<Dt_StockInfoDetail> Details { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Stock/Dt_StockInfoDetail.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Stock/Dt_StockInfoDetail.cs"
new file mode 100644
index 0000000..8e69b63
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Stock/Dt_StockInfoDetail.cs"
@@ -0,0 +1,106 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    [SugarTable(nameof(Dt_StockInfoDetail), "搴撳瓨淇℃伅鏄庣粏")]
+    public class Dt_StockInfoDetail : BaseEntity
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨淇℃伅涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "搴撳瓨淇℃伅涓婚敭")]
+        public int StockId { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡缂栧彿")]
+        public string MaterielCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 200, ColumnDescription = "鐗╂枡鍚嶇О")]
+        public string MaterielName { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鍗曟嵁缂栧彿")]
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 100, ColumnDescription = "鎵规鍙�")]
+        public string BatchNo { get; set; }
+
+        /// <summary>
+        /// 鐢熶骇鏃ユ湡
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "鐢熶骇鏃ユ湡")]
+        public string ProductionDate { get; set; }
+
+        /// <summary>
+        /// 鏈夋晥鏈�
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "鏈夋晥鏈�")]
+        public string EffectiveDate { get; set; }
+
+        /// <summary>
+        /// 搴忓垪鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 100, ColumnDescription = "搴忓垪鍙�")]
+        public string SerialNumber { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨鏁伴噺
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "搴撳瓨鏁伴噺")]
+        public float StockQuantity { get; set; }
+
+        /// <summary>
+        /// 鍑哄簱鏁伴噺
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍑哄簱鏁伴噺", DefaultValue = "0")]
+        public float OutboundQuantity { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨鏄庣粏鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "搴撳瓨鏄庣粏鐘舵��")]
+        public int Status { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鍗曚綅")]
+        public string Unit { get; set; }
+        /// <summary>
+        /// 鍏ュ簱鍗曟槑缁嗚鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍏ュ簱鍗曟槑缁嗚鍙�")]
+        public int InboundOrderRowNo { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Stock/Dt_StockInfoDetail_Hty.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Stock/Dt_StockInfoDetail_Hty.cs"
new file mode 100644
index 0000000..82096fc
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Stock/Dt_StockInfoDetail_Hty.cs"
@@ -0,0 +1,42 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 搴撳瓨淇℃伅鏄庣粏鍘嗗彶
+    /// </summary>
+    [SugarTable(nameof(Dt_StockInfoDetail_Hty), "搴撳瓨淇℃伅鏄庣粏鍘嗗彶")]
+    public class Dt_StockInfoDetail_Hty : Dt_StockInfoDetail, IBaseHistoryEntity
+    {
+        /// <summary>
+        /// 鍘熻〃涓婚敭
+        /// </summary>
+        [ImporterHeader(Name = "鍘熻〃涓婚敭")]
+        [ExporterHeader(DisplayName = "鍘熻〃涓婚敭")]
+        [SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "鍘熻〃涓婚敭")]
+        public int SourceId { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔绫诲瀷
+        /// </summary>
+        [ImporterHeader(Name = "鎿嶄綔绫诲瀷")]
+        [ExporterHeader(DisplayName = "鎿嶄綔绫诲瀷")]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎿嶄綔绫诲瀷")]
+        public string OperateType { get; set; }
+
+        /// <summary>
+        /// 绉诲叆鍘嗗彶鏃堕棿
+        /// </summary>
+        [ImporterHeader(Name = "绉诲叆鍘嗗彶鏃堕棿")]
+        [ExporterHeader(DisplayName = "绉诲叆鍘嗗彶鏃堕棿")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "绉诲叆鍘嗗彶鏃堕棿")]
+        public DateTime InsertTime { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Stock/Dt_StockInfo_Hty.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Stock/Dt_StockInfo_Hty.cs"
new file mode 100644
index 0000000..00a0f08
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/Stock/Dt_StockInfo_Hty.cs"
@@ -0,0 +1,42 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 搴撳瓨淇℃伅鍘嗗彶
+    /// </summary>
+    [SugarTable(nameof(Dt_StockInfo_Hty), "搴撳瓨淇℃伅")]
+    public class Dt_StockInfo_Hty : Dt_StockInfo, IBaseHistoryEntity
+    {
+        /// <summary>
+        /// 鍘熻〃涓婚敭
+        /// </summary>
+        [ImporterHeader(Name = "鍘熻〃涓婚敭")]
+        [ExporterHeader(DisplayName = "鍘熻〃涓婚敭")]
+        [SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "鍘熻〃涓婚敭")]
+        public int SourceId { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔绫诲瀷
+        /// </summary>
+        [ImporterHeader(Name = "鎿嶄綔绫诲瀷")]
+        [ExporterHeader(DisplayName = "鎿嶄綔绫诲瀷")]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎿嶄綔绫诲瀷")]
+        public string OperateType { get; set; }
+
+        /// <summary>
+        /// 绉诲叆鍘嗗彶鏃堕棿
+        /// </summary>
+        [ImporterHeader(Name = "绉诲叆鍘嗗彶鏃堕棿")]
+        [ExporterHeader(DisplayName = "绉诲叆鍘嗗彶鏃堕棿")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "绉诲叆鍘嗗彶鏃堕棿")]
+        public DateTime InsertTime { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/RoleAuthor.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/RoleAuthor.cs"
new file mode 100644
index 0000000..4cd4407
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/RoleAuthor.cs"
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Model
+{
+    public class RoleAuthor
+    {
+        public int menuId { get; set; }
+        public string actions { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/RoleNodes.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/RoleNodes.cs"
new file mode 100644
index 0000000..25b6b51
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/RoleNodes.cs"
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Model.Models.System
+{
+    public class RoleNodes
+    {
+        public int Id { get; set; }
+        public int ParentId { get; set; }
+        public string RoleName { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Dictionary.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Dictionary.cs"
new file mode 100644
index 0000000..fb358b0
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Dictionary.cs"
@@ -0,0 +1,81 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Filter;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Model.Models
+{
+    [MultiTenant]
+    [Exporter(ExporterHeaderFilter = typeof(ExporterHeaderFilter))]
+    [SugarTable("Sys_Dictionary", "瀛楀吀鏁版嵁")]
+    public class Sys_Dictionary : BaseEntity
+    {
+        /// <summary>
+        /// 瀛楀吀ID
+        /// </summary>
+        [ExporterHeader(DisplayName = "瀛楀吀ID")]
+        [SugarColumn(IsIdentity = true, IsPrimaryKey = true, ColumnDescription = "瀛楀吀ID")]
+        public int DicId { get; set; }
+
+        /// <summary>
+        /// 閰嶇疆椤�
+        /// </summary>
+        [ExporterHeader(DisplayName = "閰嶇疆椤�")]
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "閰嶇疆椤�")]
+        public string Config { get; set; }
+
+        /// <summary>
+        /// Sql璇彞
+        /// </summary>
+        [ExporterHeader(DisplayName = "Sql璇彞")]
+        [SugarColumn(IsNullable = true, Length = 500, ColumnDescription = "Sql璇彞")]
+        public string Sql { get; set; }
+
+        /// <summary>
+        /// 瀛楀吀鍚嶇О
+        /// </summary>
+        [ExporterHeader(DisplayName = "瀛楀吀鍚嶇О")]
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "瀛楀吀鍚嶇О")]
+        public string DicName { get; set; }
+
+        /// <summary>
+        /// 瀛楀吀缂栧彿
+        /// </summary>
+        [ExporterHeader(DisplayName = "瀛楀吀缂栧彿")]
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "瀛楀吀缂栧彿")]
+        public string DicNo { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍚敤
+        /// </summary>
+        [ExporterHeader(DisplayName = "鏄惁鍚敤")]
+        [SugarColumn(IsNullable = true, ColumnDescription = "鏄惁鍚敤")]
+        public byte? Enable { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭鍙�
+        /// </summary>
+        [ExporterHeader(DisplayName = "鎺掑簭鍙�")]
+        [SugarColumn(IsNullable = true, ColumnDescription = "鎺掑簭鍙�")]
+        public int? OrderNo { get; set; }
+
+        /// <summary>
+        /// 鐖剁骇ID
+        /// </summary>
+        [ExporterHeader(DisplayName = "鐖剁骇ID")]
+        [SugarColumn(IsNullable = true, ColumnDescription = "鐖剁骇ID")]
+        public int ParentId { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [ExporterHeader(DisplayName = "澶囨敞")]
+        [SugarColumn(IsNullable = true, Length = 2000, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+
+        [ExporterHeader(IsIgnore = true)]
+        [Navigate(NavigateType.OneToMany, nameof(DicId),nameof(DicId)), SugarColumn(IsIgnore = true, IsNullable = true)]
+        public List<Sys_DictionaryList> DicList { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_DictionaryList.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_DictionaryList.cs"
new file mode 100644
index 0000000..e29f6fc
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_DictionaryList.cs"
@@ -0,0 +1,57 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+using SqlSugar;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable("Sys_DictionaryList", "瀛楀吀鏄庣粏"), MultiTenant]
+    public class Sys_DictionaryList : BaseEntity
+    {
+        /// <summary>
+        /// 瀛楀吀鍒楄〃ID
+        /// </summary>
+        [SugarColumn(IsIdentity = true, IsPrimaryKey = true, ColumnDescription = "瀛楀吀鍒楄〃ID")]
+        public int DicListId { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁婧怲ext
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鏁版嵁婧怲ext")]
+        public string DicName { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁婧怴alue
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鏁版嵁婧怴alue")]
+        public string DicValue { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁婧怚D
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏁版嵁婧怚D")]
+        public int DicId { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍙敤
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鏄惁鍙敤")]
+        public byte? Enable { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鎺掑簭鍙�")]
+        public int? OrderNo { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 2000, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Log.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Log.cs"
new file mode 100644
index 0000000..a2d31ba
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Log.cs"
@@ -0,0 +1,83 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SqlSugar;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鎺ュ彛鏃ュ織
+    /// </summary>
+    [SugarTable(nameof(Sys_Log), "鎺ュ彛鏃ュ織")]
+    public class Sys_Log
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 寮�濮嬫椂闂�
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "寮�濮嬫椂闂�")]
+        public DateTime? BeginDate { get; set; }
+
+        /// <summary>
+        /// 鏃堕暱
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鏃堕暱")]
+        public int? ElapsedTime { get; set; }
+
+        /// <summary>
+        /// 缁撴潫鏃堕棿
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "缁撴潫鏃堕棿")]
+        public DateTime EndDate { get; set; }
+
+        /// <summary>
+        /// 璇锋眰鍙傛暟
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = int.MaxValue, ColumnDescription = "璇锋眰鍙傛暟")]
+        public string RequestParam { get; set; }
+
+        /// <summary>
+        /// 鍝嶅簲鍙傛暟
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = int.MaxValue, ColumnDescription = "鍝嶅簲鍙傛暟")]
+        public string ResponseParam { get; set; }
+
+        /// <summary>
+        /// 鍝嶅簲鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鍝嶅簲鐘舵��")]
+        public int? Success { get; set; }
+
+        /// <summary>
+        /// 璇锋眰鍦板潃
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 2000, ColumnDescription = "璇锋眰鍦板潃")]
+        public string Url { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛IP
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "鐢ㄦ埛IP")]
+        public string UserIP { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鐢ㄦ埛鍚嶇О")]
+        public string? UserName { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鐢ㄦ埛涓婚敭")]
+        public int? UserId { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Menu.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Menu.cs"
new file mode 100644
index 0000000..b2e79be
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Menu.cs"
@@ -0,0 +1,81 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using SqlSugar;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable("Sys_Menu", "鑿滃崟閰嶇疆"), MultiTenant]
+    public class Sys_Menu : BaseEntity
+    {
+        /// <summary>
+        /// 鑿滃崟ID
+        /// </summary>
+        [SugarColumn(IsIdentity = true, IsPrimaryKey = true, ColumnDescription = "鑿滃崟ID")]
+        public int MenuId { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鑿滃崟鍚嶇О")]
+        public string MenuName { get; set; }
+
+        /// <summary>
+        /// 鏉冮檺
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 2000, ColumnDescription = "鏉冮檺")]
+        public string Auth { get; set; }
+
+        /// <summary>
+        /// 鍥炬爣
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "鍥炬爣")]
+        public string Icon { get; set; }
+
+        /// <summary>
+        /// 鎻忚堪
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 2000, ColumnDescription = "鎻忚堪")]
+        public string Description { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍚敤
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鏄惁鍚敤")]
+        public byte? Enable { get; set; }
+
+        /// <summary>
+        /// 琛ㄥ悕
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "琛ㄥ悕")]
+        public string TableName { get; set; }
+
+        /// <summary>
+        /// 鐖剁骇ID
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐖剁骇ID")]
+        public int ParentId { get; set; }
+
+        /// <summary>
+        /// 璺緞
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "璺緞")]
+        public string Url { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = true,ColumnDescription ="鎺掑簭鍙�")]
+        public int? OrderNo { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟绫诲瀷
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鑿滃崟绫诲瀷")]
+        public int MenuType { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Role.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Role.cs"
new file mode 100644
index 0000000..00dcd63
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Role.cs"
@@ -0,0 +1,54 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using SqlSugar;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable("Sys_Role", "瑙掕壊琛�"), MultiTenant]
+    public class Sys_Role : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsIdentity = true, IsPrimaryKey = true, ColumnDescription = "涓婚敭")]
+        public int RoleId { get; set; }
+
+        /// <summary>
+        /// 閮ㄩ棬鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = true, IsIgnore = true, Length = 50, ColumnDescription = "閮ㄩ棬鍚嶇О")]
+        public string DeptName { get; set; }
+
+        /// <summary>
+        /// 閮ㄩ棬涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "閮ㄩ棬涓婚敭")]
+        public int? DeptId { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍚敤
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏄惁鍚敤")]
+        public byte Enable { get; set; }
+
+        /// <summary>
+        /// 鐖禝D
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐖禝D")]
+        public int ParentId { get; set; }
+
+        /// <summary>
+        /// 瑙掕壊鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "瑙掕壊鍚嶇О")]
+        public string RoleName { get; set; }
+
+        [Navigate(NavigateType.OneToMany, nameof(ParentId), nameof(RoleId)), SugarColumn(IsIgnore = true, IsNullable = true)]
+        public List<Sys_Role> Roles { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_RoleAuth.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_RoleAuth.cs"
new file mode 100644
index 0000000..1d9c5ff
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_RoleAuth.cs"
@@ -0,0 +1,48 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using SqlSugar;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 瑙掕壊韬唤楠岃瘉绠$悊琛�
+    /// </summary>
+    [SugarTable("Sys_RoleAuth", "瑙掕壊韬唤楠岃瘉绠$悊"), MultiTenant]
+    public class Sys_RoleAuth : BaseEntity
+    {
+        /// <summary>
+        /// 瑙掕壊韬唤楠岃瘉ID
+        /// </summary>
+        [SugarColumn(IsIdentity = true, IsPrimaryKey = true, ColumnDescription = "瑙掕壊韬唤楠岃瘉ID")]
+        public int AuthId { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛鏉冮檺
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 500, ColumnDescription = "鐢ㄦ埛鏉冮檺")]
+        public string AuthValue { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟ID
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鑿滃崟ID")]
+        public int MenuId { get; set; }
+
+        /// <summary>
+        /// 瑙掕壊ID
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "瑙掕壊ID")]
+        public int? RoleId { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛ID
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鐢ㄦ埛ID")]
+        public int? UserId { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_RoleDataPermission.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_RoleDataPermission.cs"
new file mode 100644
index 0000000..b1d50cf
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_RoleDataPermission.cs"
@@ -0,0 +1,27 @@
+锘�//using SqlSugar;
+//using System;
+//using System.Collections.Generic;
+//using System.Linq;
+//using System.Text;
+//using System.Threading.Tasks;
+//using WIDESEA_Core.DB.Models;
+
+//namespace WIDESEA_Model.Models
+//{
+//    [SugarTable(nameof(Sys_RoleDataPermission))]
+//    public class Sys_RoleDataPermission : BaseEntity
+//    {
+//        [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
+//        public int Id { get; set; }
+
+//        public int RoleId { get; set; }
+
+//        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "瑙掕壊鍚嶇О")]
+//        public string RoleName { get; set; }
+
+//        public int WarehouseId { get; set; }
+
+//        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "")]
+//        public string WarehouseName { get; set; }
+//    }
+//}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Tenant.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Tenant.cs"
new file mode 100644
index 0000000..33836b0
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Tenant.cs"
@@ -0,0 +1,57 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable("Sys_Tenant", "绉熸埛")]
+    public class Sys_Tenant : BaseEntity
+    {
+        /// <summary>
+        /// 绉熸埛ID
+        /// </summary>
+        [SugarColumn(IsIdentity = true, IsPrimaryKey = true, ColumnDescription = "绉熸埛ID")]
+        public int TenantId { get; set; }
+
+        /// <summary>
+        /// 绉熸埛鍚嶇О
+        /// </summary>
+        [SugarColumn(Length = 200, IsNullable = false, ColumnDescription = "绉熸埛鍚嶇О")]
+        public string TenantName { get; set; }
+
+        /// <summary>
+        /// 绉熸埛绫诲瀷
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "绉熸埛绫诲瀷")]
+        public int TenantType { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撶被鍨�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏁版嵁搴撶被鍨�")]
+        public int DbType { get; set; }
+
+        /// <summary>
+        /// 杩炴帴瀛楃涓�
+        /// </summary>
+        [SugarColumn(Length = 1000, IsNullable = false, ColumnDescription = "杩炴帴瀛楃涓�")]
+        public string ConnectionString { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐘舵��")]
+        public int Status { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(Length = 2000, IsNullable = true, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_User.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_User.cs"
new file mode 100644
index 0000000..99c6a1e
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_User.cs"
@@ -0,0 +1,127 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鐢ㄦ埛淇℃伅琛�
+    /// </summary>
+    //[SugarTable("SysUserInfo")]
+    [SugarTable("Sys_User", "鐢ㄦ埛琛�")] //('鏁版嵁搴撹〃鍚�'锛�'鏁版嵁搴撹〃澶囨敞')
+    public class Sys_User : BaseEntity
+    {
+        /// <summary>
+        /// 鐢ㄦ埛ID
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "鐢ㄦ埛ID")]
+        public int UserId { get; set; }
+
+        /// <summary>
+        ///甯愬彿
+        /// </summary>
+        [SugarColumn(Length = 100, IsNullable = false, ColumnDescription = "甯愬彿")]
+        public string UserName { get; set; }
+
+        /// <summary>
+        /// 瑙掕壊ID
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "瑙掕壊ID")]
+        public int RoleId { get; set; }
+
+        /// <summary>
+        /// 瑙掕壊鍚嶇О
+        /// </summary>
+        [SugarColumn(Length = 100, IsNullable = true, ColumnDescription = "瑙掕壊鍚嶇О")]
+        public string RoleName { get; set; }
+
+        /// <summary>
+        /// 鐢佃瘽
+        /// </summary>
+        [SugarColumn(Length = 11, IsNullable = true, ColumnDescription = "鐢佃瘽")]
+        public string PhoneNo { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(Length = 200, IsNullable = true, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 瀵嗙爜
+        /// </summary>
+        [SugarColumn(Length = 200, IsNullable = false, ColumnDescription = "瀵嗙爜")]
+        public string UserPwd { get; set; }
+
+        /// <summary>
+        /// 鐪熷疄濮撳悕
+        /// </summary>
+        [SugarColumn(Length = 100, IsNullable = false, ColumnDescription = "鐪熷疄濮撳悕")]
+        public string UserTrueName { get; set; }
+
+        /// <summary>
+        /// 閮ㄩ棬
+        /// </summary>
+        [SugarColumn(Length = 100, IsNullable = true, ColumnDescription = "閮ㄩ棬")]
+        public string DeptName { get; set; }
+
+        /// <summary>
+        /// 閮ㄩ棬ID
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "閮ㄩ棬ID")]
+        public int? DeptId { get; set; }
+
+        /// <summary>
+        /// 閭
+        /// </summary>
+        [SugarColumn(Length = 100, IsNullable = true, ColumnDescription = "閭")]
+        public string Email { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍙敤
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏄惁鍙敤")]
+        public byte Enable { get; set; }
+
+        /// <summary>
+        /// 鎬у埆
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鎬у埆")]
+        public int? Gender { get; set; }
+
+        /// <summary>
+        /// 澶村儚
+        /// </summary>
+        [SugarColumn(Length = 500, IsNullable = true, ColumnDescription = "澶村儚")]
+        public string HeadImageUrl { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庡瘑鐮佷慨鏀规椂闂�
+        /// </summary>
+        [SugarColumn(IsNullable = true, IsOnlyIgnoreInsert = true, ColumnDescription = "鏈�鍚庡瘑鐮佷慨鏀规椂闂�")]
+        public DateTime? LastModifyPwdDate { get; set; }
+
+        /// <summary>
+        /// 鍦板潃
+        /// </summary>
+        [SugarColumn(Length = 200, IsNullable = true, ColumnDescription = "鍦板潃")]
+        public string Address { get; set; }
+
+        /// <summary>
+        /// 浠ょ墝
+        /// </summary>
+        [SugarColumn(Length = 500, IsNullable = true, ColumnDescription = "浠ょ墝")]
+        public string Token { get; set; }
+
+        /// <summary>
+        /// 绉熸埛ID
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "绉熸埛ID", DefaultValue = "0")]
+        public long TenantId { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs"
new file mode 100644
index 0000000..4744830
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs"
@@ -0,0 +1,146 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common.OtherEnum;
+using WIDESEA_Core.Attributes;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 浠诲姟淇℃伅
+    /// </summary>
+    [SugarTable(nameof(Dt_Task), "浠诲姟淇℃伅"), SugarIndex("unique_task_taskNum", nameof(TaskNum), OrderByType.Asc, true)]
+    public class Dt_Task : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [ImporterHeader(Name = "涓婚敭")]
+        [ExporterHeader(DisplayName = "涓婚敭")]
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int TaskId { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        [ImporterHeader(Name = "浠诲姟鍙�")]
+        [ExporterHeader(DisplayName = "浠诲姟鍙�")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "浠诲姟鍙�"), Sequence(nameof(SequenceEnum.SeqTaskNum), 100000000)]
+        public int TaskNum { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栧彿
+        /// </summary>
+        [ImporterHeader(Name = "鎵樼洏缂栧彿")]
+        [ExporterHeader(DisplayName = "鎵樼洏缂栧彿")]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵樼洏缂栧彿")]
+        public string PalletCode { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏绫诲瀷
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鎵樼洏绫诲瀷")]
+        public int PalletType { get; set; }
+
+        /// <summary>
+        /// 宸烽亾鍙�
+        /// </summary>
+        [ImporterHeader(Name = "宸烽亾鍙�")]
+        [ExporterHeader(DisplayName = "宸烽亾鍙�")]
+        [SugarColumn(IsNullable = false, Length = 10, ColumnDescription = "宸烽亾鍙�")]
+        public string Roadway { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
+        [ImporterHeader(Name = "浠诲姟绫诲瀷")]
+        [ExporterHeader(DisplayName = "浠诲姟绫诲瀷")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "浠诲姟绫诲瀷")]
+        public int TaskType { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鐘舵��
+        /// </summary>
+        [ImporterHeader(Name = "浠诲姟鐘舵��")]
+        [ExporterHeader(DisplayName = "浠诲姟鐘舵��")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "浠诲姟鐘舵��")]
+        public int TaskStatus { get; set; }
+
+        /// <summary>
+        /// 璧峰鍦板潃
+        /// </summary>
+        [ImporterHeader(Name = "璧峰鍦板潃")]
+        [ExporterHeader(DisplayName = "璧峰鍦板潃")]
+        [SugarColumn(IsNullable = false, Length = 30, ColumnDescription = "璧峰鍦板潃")]
+        public string SourceAddress { get; set; }
+
+        /// <summary>
+        /// 鐩爣鍦板潃
+        /// </summary>
+        [ImporterHeader(Name = "鐩爣鍦板潃")]
+        [ExporterHeader(DisplayName = "鐩爣鍦板潃")]
+        [SugarColumn(IsNullable = false, Length = 30, ColumnDescription = "鐩爣鍦板潃")]
+        public string TargetAddress { get; set; }
+
+        /// <summary>
+        /// 褰撳墠浣嶇疆
+        /// </summary>
+        [ImporterHeader(Name = "褰撳墠浣嶇疆")]
+        [ExporterHeader(DisplayName = "褰撳墠浣嶇疆")]
+        [SugarColumn(IsNullable = false, Length = 30, ColumnDescription = "褰撳墠浣嶇疆")]
+        public string CurrentAddress { get; set; }
+
+        /// <summary>
+        /// 涓嬩竴鍦板潃
+        /// </summary>
+        [ImporterHeader(Name = "涓嬩竴鍦板潃")]
+        [ExporterHeader(DisplayName = "涓嬩竴鍦板潃")]
+        [SugarColumn(IsNullable = false, Length = 30, ColumnDescription = "涓嬩竴鍦板潃")]
+        public string NextAddress { get; set; }
+
+        /// <summary>
+        /// 浠撳簱涓婚敭
+        /// </summary>
+        [ImporterHeader(Name = "浠撳簱涓婚敭")]
+        [ExporterHeader(DisplayName = "浠撳簱涓婚敭")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "浠撳簱涓婚敭")]
+        public int WarehouseId { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        [ImporterHeader(Name = "鍗曟嵁缂栧彿")]
+        [ExporterHeader(DisplayName = "鍗曟嵁缂栧彿")]
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鍗曟嵁缂栧彿")]
+        public string? OrderNo { get; set; }
+
+        /// <summary>
+        /// 浼樺厛绾�
+        /// </summary>
+        [ImporterHeader(Name = "浼樺厛绾�")]
+        [ExporterHeader(DisplayName = "浼樺厛绾�")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "浼樺厛绾�")]
+        public int Grade { get; set; }
+
+        /// <summary>
+        /// 浠诲姟涓嬪彂鏃堕棿
+        /// </summary>
+        [ImporterHeader(Name = "浠诲姟涓嬪彂鏃堕棿")]
+        [ExporterHeader(DisplayName = "浠诲姟涓嬪彂鏃堕棿")]
+        [SugarColumn(IsNullable = true, ColumnDescription = "浠诲姟涓嬪彂鏃堕棿")]
+        public DateTime? Dispatchertime { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [ImporterHeader(Name = "澶囨敞")]
+        [ExporterHeader(DisplayName = "澶囨敞")]
+        [SugarColumn(IsNullable = true, Length = 255, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task_Hty.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task_Hty.cs"
new file mode 100644
index 0000000..f903756
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task_Hty.cs"
@@ -0,0 +1,44 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common.OtherEnum;
+using WIDESEA_Core.Attributes;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 浠诲姟淇℃伅鍘嗗彶
+    /// </summary>
+    [SugarTable(nameof(Dt_Task_Hty), "浠诲姟淇℃伅鍘嗗彶")]
+    public class Dt_Task_Hty : Dt_Task, IBaseHistoryEntity
+    {
+        /// <summary>
+        /// 鍘熻〃涓婚敭
+        /// </summary>
+        [ImporterHeader(Name = "鍘熻〃涓婚敭")]
+        [ExporterHeader(DisplayName = "鍘熻〃涓婚敭")]
+        [SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "鍘熻〃涓婚敭")]
+        public int SourceId { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔绫诲瀷
+        /// </summary>
+        [ImporterHeader(Name = "鎿嶄綔绫诲瀷")]
+        [ExporterHeader(DisplayName = "鎿嶄綔绫诲瀷")]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎿嶄綔绫诲瀷")]
+        public string OperateType { get; set; }
+
+        /// <summary>
+        /// 绉诲叆鍘嗗彶鏃堕棿
+        /// </summary>
+        [ImporterHeader(Name = "绉诲叆鍘嗗彶鏃堕棿")]
+        [ExporterHeader(DisplayName = "绉诲叆鍘嗗彶鏃堕棿")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "绉诲叆鍘嗗彶鏃堕棿")]
+        public DateTime InsertTime { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/WIDESEA_Model.csproj" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/WIDESEA_Model.csproj"
new file mode 100644
index 0000000..efb20bf
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Model/WIDESEA_Model.csproj"
@@ -0,0 +1,19 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+	<PropertyGroup>
+		<TargetFramework>net6.0</TargetFramework>
+		<ImplicitUsings>enable</ImplicitUsings>
+		<Nullable>enable</Nullable>
+		<GenerateDocumentationFile>True</GenerateDocumentationFile>
+	</PropertyGroup>
+
+	<ItemGroup>
+		<PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
+	</ItemGroup>
+
+	<ItemGroup>
+		<ProjectReference Include="..\WIDESEA_Common\WIDESEA_Common.csproj" />
+		<ProjectReference Include="..\WIDESEA_Core\WIDESEA_Core.csproj" />
+	</ItemGroup>
+
+</Project>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs"
new file mode 100644
index 0000000..96bdd97
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs"
@@ -0,0 +1,29 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common.StockEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_IRecordService;
+using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IOutboundService
+{
+    public partial class OutStockLockInfoService : ServiceBase<Dt_OutStockLockInfo, IRepository<Dt_OutStockLockInfo>>, IOutStockLockInfoService
+    {
+        public IRepository<Dt_OutStockLockInfo> Repository => BaseDal;
+        public IUnitOfWorkManage _unitOfWorkManage;
+
+        public OutStockLockInfoService(IRepository<Dt_OutStockLockInfo> BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+        }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetailService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetailService.cs"
new file mode 100644
index 0000000..45c6d75
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetailService.cs"
@@ -0,0 +1,20 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IOutboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_OutboundService
+{
+    public partial class OutboundOrderDetailService : ServiceBase<Dt_OutboundOrderDetail, IRepository<Dt_OutboundOrderDetail>>, IOutboundOrderDetailService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+
+        public IRepository<Dt_OutboundOrderDetail> Repository => BaseDal;
+
+        public OutboundOrderDetailService(IRepository<Dt_OutboundOrderDetail> BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+        }
+       
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetail_HtyService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetail_HtyService.cs"
new file mode 100644
index 0000000..084c166
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetail_HtyService.cs"
@@ -0,0 +1,19 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IOutboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_OutboundService
+{
+    public partial class OutboundOrderDetail_HtyService : ServiceBase<Dt_OutboundOrderDetail_Hty, IRepository<Dt_OutboundOrderDetail_Hty>>, IOutboundOrderDetail_HtyService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+
+        public IRepository<Dt_OutboundOrderDetail_Hty> Repository => BaseDal;
+
+        public OutboundOrderDetail_HtyService(IRepository<Dt_OutboundOrderDetail_Hty> BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs"
new file mode 100644
index 0000000..eac2e66
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs"
@@ -0,0 +1,22 @@
+锘縰sing AutoMapper;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IOutboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_OutboundService
+{
+    public class OutboundOrderService : ServiceBase<Dt_OutboundOrder, IRepository<Dt_OutboundOrder>>, IOutboundOrderService
+    {
+        private readonly IMapper _mapper;
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        public IRepository<Dt_OutboundOrder> Repository => BaseDal;
+
+        public OutboundOrderService(IRepository<Dt_OutboundOrder> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        {
+            _mapper = mapper;
+            _unitOfWorkManage = unitOfWorkManage;
+        }
+        
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrder_HtyService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrder_HtyService.cs"
new file mode 100644
index 0000000..2b1c783
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrder_HtyService.cs"
@@ -0,0 +1,19 @@
+锘縰sing AutoMapper;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IOutboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_OutboundService
+{
+    public partial class OutboundOrder_HtyService : ServiceBase<Dt_OutboundOrder_Hty, IRepository<Dt_OutboundOrder_Hty>>, IOutboundOrder_HtyService
+    {
+        private readonly IMapper _mapper;
+        public IRepository<Dt_OutboundOrder_Hty> Repository => BaseDal;
+
+        public OutboundOrder_HtyService(IRepository<Dt_OutboundOrder_Hty> BaseDal, IMapper mapper) : base(BaseDal)
+        {
+            _mapper = mapper;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs"
new file mode 100644
index 0000000..0b2aae4
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs"
@@ -0,0 +1,21 @@
+锘縰sing WIDESEA_IOutboundService;
+
+namespace WIDESEA_OutboundService
+{
+    public class OutboundService : IOutboundService
+    {
+
+        public IOutboundOrderDetailService OutboundOrderDetailService { get; }
+
+        public IOutboundOrderService OutboundOrderService { get; }
+
+        public IOutStockLockInfoService OutboundStockLockInfoService { get; }
+
+        public OutboundService(IOutboundOrderDetailService outboundOrderDetailService, IOutboundOrderService outboundOrderService, IOutStockLockInfoService outboundStockLockInfoService)
+        {
+            OutboundOrderDetailService = outboundOrderDetailService;
+            OutboundOrderService = outboundOrderService;
+            OutboundStockLockInfoService = outboundStockLockInfoService;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_OutboundService/WIDESEA_OutboundService.csproj" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_OutboundService/WIDESEA_OutboundService.csproj"
new file mode 100644
index 0000000..b11d170
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_OutboundService/WIDESEA_OutboundService.csproj"
@@ -0,0 +1,16 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_IBasicService\WIDESEA_IBasicService.csproj" />
+    <ProjectReference Include="..\WIDESEA_IOutboundService\WIDESEA_IOutboundService.csproj" />
+    <ProjectReference Include="..\WIDESEA_IRecordService\WIDESEA_IRecordService.csproj" />
+    <ProjectReference Include="..\WIDESEA_IStockService\WIDESEA_IStockService.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_RecordService/LocationStatusChangeRecordService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_RecordService/LocationStatusChangeRecordService.cs"
new file mode 100644
index 0000000..d159a29
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_RecordService/LocationStatusChangeRecordService.cs"
@@ -0,0 +1,16 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IRecordService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_RecordService
+{
+    public partial class LocationStatusChangeRecordService : ServiceBase<Dt_LocationStatusChangeRecord, IRepository<Dt_LocationStatusChangeRecord>>, ILocationStatusChangeRecordService
+    {
+        public LocationStatusChangeRecordService(IRepository<Dt_LocationStatusChangeRecord> BaseDal) : base(BaseDal)
+        {
+        }
+
+        public IRepository<Dt_LocationStatusChangeRecord> Repository => BaseDal;
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_RecordService/RecordService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_RecordService/RecordService.cs"
new file mode 100644
index 0000000..5b98765
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_RecordService/RecordService.cs"
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_IRecordService;
+
+namespace WIDESEA_RecordService
+{
+    public class RecordService : IRecordService
+    {
+        public ILocationStatusChangeRecordService LocationStatusChangeRecordSetvice { get; }
+
+        public IStockQuantityChangeRecordService StockQuantityChangeRecordService { get; }
+
+        public RecordService(ILocationStatusChangeRecordService locationStatusChangeRecordSetvice, IStockQuantityChangeRecordService stockQuantityChangeRecordService)
+        {
+            LocationStatusChangeRecordSetvice = locationStatusChangeRecordSetvice;
+            StockQuantityChangeRecordService = stockQuantityChangeRecordService;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_RecordService/StockQuantityChangeRecordService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_RecordService/StockQuantityChangeRecordService.cs"
new file mode 100644
index 0000000..db3e38b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_RecordService/StockQuantityChangeRecordService.cs"
@@ -0,0 +1,19 @@
+锘縰sing AutoMapper;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IRecordService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_RecordService
+{
+    public partial class StockQuantityChangeRecordService : ServiceBase<Dt_StockQuantityChangeRecord, IRepository<Dt_StockQuantityChangeRecord>>, IStockQuantityChangeRecordService
+    {
+        private readonly IMapper _mapper;
+        public StockQuantityChangeRecordService(IRepository<Dt_StockQuantityChangeRecord> BaseDal, IMapper mapper) : base(BaseDal)
+        {
+            _mapper = mapper;
+        }
+
+        public IRepository<Dt_StockQuantityChangeRecord> Repository => BaseDal;
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_RecordService/WIDESEA_RecordService.csproj" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_RecordService/WIDESEA_RecordService.csproj"
new file mode 100644
index 0000000..91486e2
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_RecordService/WIDESEA_RecordService.csproj"
@@ -0,0 +1,13 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_IRecordService\WIDESEA_IRecordService.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderDetailHtyServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderDetailHtyServices.cs"
new file mode 100644
index 0000000..74727ee
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderDetailHtyServices.cs"
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+
+
+namespace WIDESEA_SquareCabinServices
+{
+    public class CabinOrderDetailHtyServices : ServiceBase<Dt_CabinOrderDetail_Hty, IRepository<Dt_CabinOrderDetail_Hty>>, ICabinOrderDetailHtyServices
+    {
+        public CabinOrderDetailHtyServices(IRepository<Dt_CabinOrderDetail_Hty> BaseDal) : base(BaseDal)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderDetailServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderDetailServices.cs"
new file mode 100644
index 0000000..35c2060
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderDetailServices.cs"
@@ -0,0 +1,21 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+
+
+namespace WIDESEA_SquareCabinServices
+{
+    public class CabinOrderDetailServices : ServiceBase<Dt_CabinOrderDetail, IRepository<Dt_CabinOrderDetail>>, ICabinOrderDetailServices
+    {
+        public CabinOrderDetailServices(IRepository<Dt_CabinOrderDetail> BaseDal) : base(BaseDal)
+        {
+
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderHtyServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderHtyServices.cs"
new file mode 100644
index 0000000..fee7e37
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderHtyServices.cs"
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_SquareCabinServices
+{
+    public class CabinOrderHtyServices : ServiceBase<Dt_CabinOrder_Hty, IRepository<Dt_CabinOrder_Hty>>, ICabinOrderHtyServices
+    {
+        public CabinOrderHtyServices(IRepository<Dt_CabinOrder_Hty> BaseDal) : base(BaseDal)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs"
new file mode 100644
index 0000000..d4560c4
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs"
@@ -0,0 +1,525 @@
+锘縰sing HslCommunication;
+using MailKit.Search;
+using Newtonsoft.Json;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+
+using static System.Net.WebRequestMethods;
+using static WIDESEA_DTO.SquareCabin.OrderDto;
+using static WIDESEA_DTO.SquareCabin.TowcsDto;
+
+
+namespace WIDESEA_SquareCabinServices
+{
+    public class CabinOrderServices : ServiceBase<Dt_CabinOrder, IRepository<Dt_CabinOrder>>, ICabinOrderServices
+    {
+       
+        static string SearchDate = "";
+
+        public CabinOrderServices(IRepository<Dt_CabinOrder> BaseDal) : base(BaseDal)
+        {
+        }
+
+        /// <summary>
+        /// 鑾峰彇涓婃父绯荤粺鐨勫叆搴撳崟
+        /// </summary>
+        /// <param name="searchDate"></param>
+        /// <returns></returns>
+        //public WebResponseContent GetUpstreamOrder(DateTime searchDate)
+        //{
+        //    var responseContent = new WebResponseContent();
+
+        //    try
+        //    {
+        //        // 璇锋眰鍦板潃
+        //        var url = "http://127.0.0.1:9090/GYZ2/95fck/inOrder";
+
+        //        //// 璇锋眰鍙傛暟
+        //        var requestData = new
+        //        {
+        //            searchDate = searchDate.ToString("yyyy-MM-dd HH:mm:ss")
+        //        };
+
+        //        // 鍙戣捣璇锋眰
+        //        var result = HttpHelper.Post(url, requestData.ToJsonString());
+
+        //        // 鍙嶅簭鍒楀寲
+        //        var response = JsonConvert.DeserializeObject<UpstreamResponse<UpstreamOrderInfo>>(result);
+
+        //        if (response.resultCode != "0")
+        //        {
+        //            // 璋冪敤寮傚父鎺ュ彛
+        //            SendErrorToUpstream(1, "", response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触", "");
+        //            return responseContent.Error(response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触");
+        //        }
+
+        //        if (response.data == null || !response.data.Any())
+        //        {
+        //            return responseContent.OK("鏃犳柊鍏ュ簱鍗曟暟鎹�");
+        //        }
+
+        //        Db.Ado.BeginTran();
+        //        List<Dt_CabinOrder> _CabinOrders = new List<Dt_CabinOrder>();
+        //        foreach (var order in response.data)
+        //        {
+        //            try
+        //            {
+        //                // 鎻掑叆鍏ュ簱鍗曡〃
+        //                var entityOrder = new Dt_CabinOrder
+        //                {
+
+        //                    Order_no = order.order_no,
+        //                    Order_type = order.order_type,
+        //                    Supplier_no = order.supplier_no,
+        //                    Account_tiem = order.account_time,
+        //                    OdrderStatus = "鏂板缓",
+        //                };
+        //                //var orderId = Db.Insertable(entityOrder).ExecuteReturnIdentity(); //灏辨槸杩斿洖涓婚敭ID銆�
+
+        //                // 鎻掑叆鍏ュ簱鏄庣粏琛�
+        //                var detailEntities = order.details.Select(d => new Dt_CabinOrderDetail
+        //                {
+        //                    //OrderId= orderId,
+        //                    Goods_no = d.goods_no,
+        //                    Order_qty = d.order_qty,
+        //                    Batch_num = d.batch_num,
+        //                    Exp_date = d.exp_date,
+        //                    Warehouse_no = d.warehouse_no,
+        //                    Status = 0,
+        //                }).ToList();
+        //                entityOrder.Details.AddRange(detailEntities); //寤虹珛涓诲璞′笌瀛愬璞$殑鍏宠仈鍏崇郴
+        //                _CabinOrders.Add(entityOrder);
+
+        //                //鑷繁
+        //                /// Db.Insertable(detailEntities).ExecuteCommand();
+
+        //                //杩欓噷瑕佽皟鐢ㄤ竴涓帴鍙e皢涓婇潰鐨勪俊鎭紶缁檞cs锛岀劧鍚庢敼鍙樼姸鎬�
+        //            }
+        //            catch (Exception innerEx)
+        //            {
+        //                // 閽堝鏌愭潯璁㈠崟鎶ラ敊鏃讹紝鎺ㄩ�佸紓甯哥粰涓婃父
+        //                SendErrorToUpstream(1, order.order_no, innerEx.Message, "");
+        //                throw; // 鎶涘嚭寮傚父锛岃澶栧眰鎹曡幏鍥炴粴
+        //            }
+        //        }
+        //        // 鎵归噺鎻掑叆锛圫qlSugar鑷姩澶勭悊涓诲閿叧绯伙級
+        //        Db.Insertable(_CabinOrders).ExecuteCommand();
+        //        Db.Ado.CommitTran();
+
+        //        //濡傛灉EdiIn瀹屾垚閭d箞灏辫皟鐢–ompleteOrder鎺ュ彛
+
+        //        return responseContent.OK("鍚屾鍏ュ簱鍗曟垚鍔�");
+        //    }
+        //    catch (Exception ex)
+        //    {
+        //        // 鍏ㄥ眬寮傚父鏃讹紝涔熸帹閫佸紓甯哥粰涓婃父
+        //        SendErrorToUpstream(1, "", ex.Message, "");
+        //        Db.Ado.RollbackTran();
+        //        return responseContent.Error("鍚屾澶辫触: " + ex.Message);
+        //    }
+        //}
+
+
+        public WebResponseContent GetUpstreamOrder()
+        {
+            var responseContent = new WebResponseContent();
+            try
+            {
+                // 璇锋眰鍦板潃
+                var url = "http://121.37.118.63:80/GYZ2/95fck/inOrder";
+                //if (string.IsNullOrEmpty(SearchDate)) SearchDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+                //// 璇锋眰鍙傛暟
+                var requestData = new
+                {
+                    //searchDate = SearchDate
+                    searchDate = "2022-10-10 20:45:16"  // 姝g‘鐨勬牸寮�
+                };
+                //SearchDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd HH:mm:ss");
+                // 鍙戣捣璇锋眰
+                var result = HttpHelper.Post(url, requestData.ToJsonString());
+
+                // 鍙嶅簭鍒楀寲
+                var response = JsonConvert.DeserializeObject<UpstreamResponse<UpstreamOrderInfo>>(result);
+
+                if (response.resultCode != "0")
+                {
+                    // 璋冪敤寮傚父鎺ュ彛
+                    SendErrorToUpstream(1, "", response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触", "");
+                    return responseContent.Error(response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触");
+                }
+
+                if (response.data == null || !response.data.Any())
+                {
+                    return responseContent.OK("鏃犳柊鍏ュ簱鍗曟暟鎹�");
+                }
+                // 鑾峰彇鎵�鏈夊凡瀛樺湪鐨勫叆搴撳崟鍙�
+                var existingOrderNos = BaseDal.Db.Queryable<Dt_CabinOrder>()
+                    .Select(x => x.Order_no)
+                    .ToList();
+
+                // 杩囨护鎺夊凡瀛樺湪鐨勫叆搴撳崟
+                var newOrders = response.data
+                    .Where(order => !existingOrderNos.Contains(order.order_no))
+                    .ToList();
+
+                if (!newOrders.Any())
+                {
+                    return responseContent.OK("鎵�鏈夊叆搴撳崟宸插瓨鍦紝鏃犻渶鏂板");
+                }
+
+                Db.Ado.BeginTran();
+                try
+                {
+                    List<Dt_CabinOrder> _CabinOrders = new List<Dt_CabinOrder>();
+                    //瀛樺偍鍏ュ簱鍗曞彿
+                    List<string> orderNos = new List<string>();
+
+                    foreach (var order in newOrders)
+                    {
+                        var entityOrder = new Dt_CabinOrder
+                        {
+                            Order_no = order.order_no,
+                            //鍏ュ簱鍗曠被鍨�
+                            Order_type = order.order_type,
+                            Supplier_no = order.supplier_no,
+                            Account_tiem = order.account_time,
+                            OdrderStatus = "鏂板缓",
+                            Supplier_name=order.supplier_name,
+                            Warehouse_no = order.warehouse_no,
+                            Details = order.details.Select(d => new Dt_CabinOrderDetail
+                            {
+                                //OrderId 瑕佹嬁鍒板叆搴撳崟琛ㄤ腑鐨刬d锛屽浣曟嬁涓嶅埌灏卞皢杩欎釜瀛楁鏀逛簡锛屾敼鎴愬叆搴撳崟鍙�
+                                // SqlSugar InsertNav宸ヤ綔鍘熺悊鍏堟彃鍏ヤ富琛� (Dt_CabinOrder)//鑾峰彇鐢熸垚鐨勪富閿甀D//鑷姩璁剧疆瀛愯〃鐨勫叧鑱斿瓧娈� (OrderId)//鍐嶆彃鍏�(Dt_CabinOrderDetail)
+                                Goods_no = d.goods_no,
+                                Order_qty = d.order_qty,
+                                Batch_num = d.batch_num,
+                                Exp_date = d.exp_date,
+                                OrderDetailStatus="鏂板缓",
+                                Status = order.warehouse_no== "001" ? 0 : 2, //濡傛灉鏄�001鎴块偅涔堝氨鏄湭鍚屾鐘舵�侊紝濡傛灉涓嶆槸001鎴块偅涔堝氨鏄棤闇�鍚屾鐘舵��
+                            }).ToList()
+                        };
+                        _CabinOrders.Add(entityOrder);
+                        orderNos.Add(order.order_no);
+                    };
+                    BaseDal.Db.InsertNav(_CabinOrders).Include(x => x.Details).ExecuteCommand();
+
+                    //鍦ㄤ笅鍙戠粰wcs 
+                  //var reslut=  EdiIn(); //鍙戠粰涓嬫父
+                                        //濡傛灉杩欎釜鏂规硶鎴愬姛浜嗭紝閭d箞灏辫皟鐢–ompleteOrder鎺ュ彛锛岀劧鍚庢敼鍙�
+                    Db.Ado.CommitTran();
+                    return responseContent.OK("鍚屾鍏ュ簱鍗曟垚鍔�");
+                }
+                catch (Exception ex)
+                {
+                    Db.Ado.RollbackTran();
+                    SendErrorToUpstream(1, "", ex.Message, "");
+                    return responseContent.Error("鍚屾澶辫触: " + ex.Message);
+                }
+            }
+            catch (Exception ex)
+            {
+                // 鍏ㄥ眬寮傚父鏃讹紝涔熸帹閫佸紓甯哥粰涓婃父
+                SendErrorToUpstream(1, "", ex.Message, "");
+                return responseContent.Error("鍚屾澶辫触: " + ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 浼犵粰wcs
+        /// </summary>
+        public WebResponseContent EdiIn()
+        {
+            try
+            {
+                //2.鏌ヨ绗﹀悎鏉′欢鐨勮鍗曪紙琛ㄥご = 鏂板缓 && 鍖呭惈鏈夋晥鏄庣粏锛�
+                //var orders = BaseDal.Db.Queryable<Dt_CabinOrder>()
+                //    .Where(o => o.OdrderStatus == "鏂板缓")
+                //    .Includes(o => o.Details, d => d.MedicineGoods)
+                //    .ToList();
+                //鏌ュ嚭鍖呭惈鍏ㄩ儴鐨勫叆搴撳崟锛屽寘鍚叏閮ㄦ槑缁�+涓�涓槑缁嗗搴斾竴涓晢鍝�
+                var orders = BaseDal.Db.CopyNew()
+                .Queryable<Dt_CabinOrder>()
+                .Where(o => o.OdrderStatus == "鏂板缓")
+                .Includes(o => o.Details, d => d.MedicineGoods)
+                .ToList();
+                // 3. 鍐嶈繃婊ゆ帀涓嶇鍚堟潯浠剁殑鏄庣粏锛堝彧淇濈暀 Status=0锛�
+                foreach (var order in orders)
+                {
+                    order.Details = order.Details.Where(d => d.Status == 0).ToList();
+                }
+
+                if (orders == null || !orders.Any())
+                {
+                    Console.WriteLine("娌℃湁绗﹀悎鏉′欢鐨勮鍗曢渶瑕佹帹閫�");
+                    return WebResponseContent.Instance.Error("娌℃湁绗﹀悎鏉′欢鐨勮鍗曢渶瑕佹帹閫�");
+                }
+                
+
+                // 4. 閬嶅巻璁㈠崟锛岀粍瑁� DTO 骞舵帹閫�
+                foreach (var order in orders)
+                {
+                    string materialCode = "YY";//榛樿鍊�
+                    //鑾峰彇褰撳墠璁㈠崟鐨勭涓�涓槑缁嗛」
+                    var firstDetail = order.Details.FirstOrDefault();
+                    if (firstDetail?.MedicineGoods != null && !string.IsNullOrEmpty(firstDetail.MedicineGoods.MaterialCode))
+                    {
+                        //濡傛灉鏉′欢婊¤冻锛屽皢鐗╂枡浠g爜璁剧疆涓虹涓�涓槑缁嗛」瀵瑰簲鐨勮嵂鍝佺墿鏂欎唬鐮�
+                        materialCode = firstDetail.MedicineGoods.MaterialCode;
+                    }
+
+                    var ediDto = new ToediInInfo
+                    {
+
+                        //瀹㈡埛浠g爜
+                        customerCode = "905",
+                        //鐗╂枡绫诲瀷
+                        materialCode = materialCode,
+                        //鍏ュ簱鍗曞彿
+                        externalOrderNo = order.Order_no,
+                        //鍏ュ簱鍗曠被鍨�
+                        inOrderType = order.Order_type == "1" ? "10" : "20",
+                        //浼樺厛绾�
+                        priority = 0,
+                        //鏄惁鍙栨秷
+                        Is_cancel = 0,
+                        details = order.Details.Select(d => new ToediInDetail
+                        {
+                            //鎵瑰彿
+                            batchNo = d.Batch_num,
+                            //浜у搧
+                            productCode = d.Goods_no,
+                            //sku鍚嶇О
+                            productName = d.MedicineGoods?.Goods_spm,
+                            //sku瑙勬牸
+                            productSpecifications = d.MedicineGoods?.Model,
+                            //鏁伴噺
+                            quantity = (int)d.Order_qty,
+                            //鏁堟湡
+                            validityPeriod = d.Exp_date,
+                            //鐢熶骇鍘傚
+                            manufacturer = d.MedicineGoods?.Factory,
+                            //鎴垮彿
+                            libraryNo = order.Warehouse_no,
+                            //鐩樼泩鍏ュ簱
+                            //stocktakingDetails = new List<ToediInStock>()
+                            //stocktakingDetails = new List<ToediInStock>()
+                            //{
+                            //    new ToediInStock
+                            //    {
+                            //         //鏂欑鍙�
+                            //        palletCode = "PDA001", 
+                            //        //鏁伴噺
+                            //        quantity = d.Order_qty.ToString()
+                            //    }
+                            // }
+                        }).ToList()
+                    };
+
+                    var url = "http://172.16.1.2:9357/file-admin/api/in/ediIn";
+                    var result = HttpHelper.Post(url, ediDto.ToJsonString());
+                    var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result);
+
+                    if (resp != null && resp.code == "0")
+                    {
+                        // 鏇存柊琛ㄥご鐘舵��
+                       BaseDal.Db.Updateable<Dt_CabinOrder>()
+                          .SetColumns(o => new Dt_CabinOrder { OdrderStatus = "寮�濮�" })
+                          .Where(o => o.Id == order.Id)
+                          .ExecuteCommand();
+
+                        // 鏇存柊鏄庣粏鐘舵�佷负宸插悓姝�
+                        BaseDal.Db.Updateable<Dt_CabinOrderDetail>()
+                          .SetColumns(d => new Dt_CabinOrderDetail { Status = 1, OrderDetailStatus = "宸插畬鎴�" })
+                          .Where(d => d.OrderId == order.Id && d.Status == 0)
+                          .ExecuteCommand();
+
+                        Console.WriteLine($"璁㈠崟 {order.Order_no} 鎺ㄩ�佹垚鍔�");
+                    }
+                    else
+                    {
+                        SendErrorToUpstream(3, order.Order_no, resp?.msg ?? "WCS 鎺ㄩ�佸け璐�", "");
+                        Console.WriteLine($"璁㈠崟 {order.Order_no} 鎺ㄩ�佸け璐ワ細{resp?.msg}");
+                        return new WebResponseContent { Status = false, Message = "璁㈠崟鎺ㄩ�佸け璐�" };
+                    }
+                }
+                return new WebResponseContent { Status = true, Message = "鎺ㄩ�佹垚鍔�" };
+            }
+            catch (Exception ex)
+            {
+                
+                Console.WriteLine("EdiIn 寮傚父锛�" + ex.Message);
+                return new WebResponseContent { Status = false, Message = ex.Message };
+            }
+        }
+
+
+        /// <summary>
+        /// 鍏ュ簱鎶ュ畬鎴愭帴鍙�
+        /// </summary>
+        /// <param name="order_no">鍏ュ簱鍗曞彿</param> //鍏堟鏌ユ槸鍚︽墍鏈夋槑缁嗛兘宸插畬鎴愶紝濡傛灉鏄紝閭d箞鏇存柊琛ㄥご鐘舵�佷负宸插畬鎴�
+        /// <returns></returns>
+        public WebResponseContent CompleteAllOrders()
+        {
+            var responseContent = new WebResponseContent();
+            try
+            {
+                // 鏌ユ壘鎵�鏈夆�滃紑濮嬧�濈姸鎬佺殑鍏ュ簱鍗�
+                var orders = BaseDal.Db.Queryable<Dt_CabinOrder>()
+                    .Where(o => o.OdrderStatus == "寮�濮�")
+                    .ToList();
+
+                if (orders == null || !orders.Any())
+                {
+                    return responseContent.OK("鏆傛棤闇�瑕佸鐞嗙殑鍏ュ簱鍗�");
+                }
+
+                int successCount = 0;
+                int failCount = 0;
+
+                foreach (var order in orders)
+                {
+                    try
+                    {
+                        BaseDal.Db.Ado.BeginTran();
+
+                        // 鏌ヨ璇ュ崟鐨勬槑缁�
+                        var details = BaseDal.Db.Queryable<Dt_CabinOrderDetail>()
+                            .Where(d => d.OrderId == order.Id)
+                            .ToList();
+
+                        // 鍒ゆ柇鏄惁鍏ㄩ儴瀹屾垚
+                        var totalCount = details.Count;
+                        var completedCount = details.Count(d => d.OrderDetailStatus == "宸插畬鎴�");
+
+                        if (totalCount > 0 && completedCount == totalCount)
+                        {
+                            // 鏇存柊琛ㄥご鐘舵��
+                            order.OdrderStatus = "宸插畬鎴�";
+                            BaseDal.Db.Updateable(order).ExecuteCommand();
+
+                            // 璋冪敤涓婃父鎺ュ彛
+                            var url = "http://121.37.118.63:80/GYZ2/95fck/inOrderOk";
+                            var result = HttpHelper.Post(url, new { order_no = order.Order_no }.ToJsonString());
+                            var response = JsonConvert.DeserializeObject<UpstreamOrderResponse>(result);
+
+                            if (response.resultCode == "0")
+                            {
+                                // === 姝ラ 1锛氭彃鍏ュ巻鍙茶〃 ===
+
+                                // 1.1 鎻掑叆琛ㄥご鍘嗗彶
+                                var orderHistory = new Dt_CabinOrder_Hty
+                                {
+                                    Id = order.Id,
+                                    Order_no = order.Order_no,
+                                    Order_type = order.Order_type,
+                                    Supplier_no = order.Supplier_no,
+                                    Supplier_name = order.Supplier_name,
+                                    Account_tiem = order.Account_tiem,
+                                    Warehouse_no = order.Warehouse_no,
+                                    OdrderStatus = order.OdrderStatus,
+
+                                };
+                                var historyId = BaseDal.Db.Insertable(orderHistory).ExecuteReturnIdentity();
+
+                                // 1.2 鎻掑叆鏄庣粏鍘嗗彶
+                                var detailsHistory = details.Select(d => new Dt_CabinOrderDetail_Hty
+                                {
+                                    Id = d.Id,
+                                    Reservoirarea = d.Reservoirarea,
+                                    Goods_no = d.Goods_no,
+                                    Order_qty = d.Order_qty,
+                                    Order_Inqty = d.Order_Inqty,
+                                    Batch_num = d.Batch_num,
+                                    Exp_date = d.Exp_date,
+                                    OrderDetailStatus = d.OrderDetailStatus,
+                                    Status = d.Status,
+                                   
+                                }).ToList();
+
+                                BaseDal.Db.Insertable(detailsHistory).ExecuteCommand();
+
+                                // === 姝ラ 2锛氬垹闄ゅ師濮嬭〃 ===
+                                BaseDal.Db.Deleteable<Dt_CabinOrderDetail>().Where(d => d.OrderId == order.Id).ExecuteCommand();
+                                BaseDal.Db.Deleteable<Dt_CabinOrder>().Where(o => o.Id == order.Id).ExecuteCommand();
+
+                                // 鎻愪氦浜嬪姟
+                                BaseDal.Db.Ado.CommitTran();
+                                successCount++;
+                            }
+                            else
+                            {
+                                BaseDal.Db.Ado.RollbackTran();
+                                failCount++;
+                                SendErrorToUpstream(2, "", $"涓婃父鎺ュ彛杩斿洖澶辫触: {response.resultMsg}", order.Order_no);
+                            }
+                        }
+                        else
+                        {
+                            BaseDal.Db.Ado.RollbackTran();
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        BaseDal.Db.Ado.RollbackTran();
+                        failCount++;
+                        SendErrorToUpstream(1, "", ex.Message, order.Order_no);
+                    }
+                }
+
+                return responseContent.OK($"鎵归噺澶勭悊瀹屾垚锛氭垚鍔� {successCount} 鍗曪紝澶辫触 {failCount} 鍗曘��");
+            }
+            catch (Exception ex)
+            {
+                return responseContent.Error("鎵归噺澶勭悊澶辫触锛�" + ex.Message);
+            }
+        }
+
+
+     
+
+
+        /// <summary>
+        /// 鎺ㄩ�佸紓甯镐俊鎭粰涓婃父绯荤粺1.鍏ュ簱鍗曟帴鍙o紱2.鍏ュ簱鍗曟姤瀹屾垚鎺ュ彛锛�3.鍑哄簱鍗曟帴鍙o紱4.鍑哄簱鎶ュ畬鎴愭帴鍙o紱5.鑽搧鍩虹淇℃伅鍚屾鎺ュ彛锛�6.渚涘簲鍟嗕俊鎭帴鍙o紱7.瀹㈡埛淇℃伅鎺ュ彛锛�8.搴撳瓨
+        /// </summary>
+        public void SendErrorToUpstream(int type, string code, string message, string remark)
+        {
+            try
+            {
+                var url = "http://121.37.118.63:80/GYZ2/95fck/lexceptionLogog";
+
+                var requestData = new
+                {
+                    type = type.ToString(),
+                    code = code,
+                    message = message,
+                    remark = remark
+                };
+
+                var result = HttpHelper.Post(url, requestData.ToJsonString());
+                // 鍙互鍙嶅簭鍒楀寲妫�鏌� resultCode 鏄惁涓�0
+            }
+            catch (Exception e)
+            {
+                // 杩欓噷涓嶈鍐嶆姏寮傚父浜嗭紝閬垮厤姝诲惊鐜�
+                Console.WriteLine("寮傚父鎺ュ彛鎺ㄩ�佸け璐ワ細" + e.Message);
+            }
+        }
+
+
+
+      
+
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CustomerServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CustomerServices.cs"
new file mode 100644
index 0000000..4c0780a
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CustomerServices.cs"
@@ -0,0 +1,105 @@
+锘縰sing HslCommunication;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+using static WIDESEA_DTO.SquareCabin.OrderDto;
+
+
+namespace WIDESEA_SquareCabinServices
+{
+    public class CustomerServices : ServiceBase<Dt_Customer, IRepository<Dt_Customer>>, ICustomerServices
+    {
+        public CustomerServices(IRepository<Dt_Customer> BaseDal) : base(BaseDal)
+        {
+        }
+
+        static string SearchDate = "";
+
+        public WebResponseContent GetCustomerList()
+        {
+            var responseContent = new WebResponseContent(); 
+            try
+            {
+                //璇锋眰鍦板潃
+                var url = "http:/121.37.118.63:80/GYZ2/95fck/clientInfo";
+
+                if (string.IsNullOrEmpty(SearchDate)) SearchDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+                //璇锋眰鍙傛暟
+                var requestDate = new
+                {
+                    searchDate = SearchDate
+                };
+                SearchDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd HH:mm:ss");
+                //璋冪敤涓婃父鎺ュ彛
+                var reslu = HttpHelper.Post(url, requestDate.ToJsonString());
+                var response = JsonConvert.DeserializeObject<UpstreamResponse<CustomerInfo>>(reslu);
+                if (response.resultCode!="0")
+                {
+                    // 璋冪敤寮傚父鎺ュ彛
+                    SendErrorToUpstream(7, "", response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触", "");
+                    return responseContent.Error(response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触");
+                }
+                if (response.data == null || !response.data.Any())
+                {
+                    return responseContent.OK("杩斿洖鐢ㄦ埛鍒楄〃涓虹┖");
+                }
+                foreach (var custom in response.data)
+                {
+                    var customdata = new Dt_Customer
+                    {
+                        Client_no=custom.client_no,
+                        Client_name=custom.client_name,
+                        Telephone=custom.telephone,
+                        Address = custom.address,
+                        Email =custom.email,
+                        Remark=custom.remark,
+                        ModifyDate = custom.modify_date
+                    };
+                    AddData(customdata);
+                }
+                return responseContent.OK("淇℃伅鍚屾鎴愬姛");
+            }
+            catch (Exception ex)
+            {
+                SendErrorToUpstream(7, "", ex.Message, "");
+                return responseContent.Error(ex.Message);
+            }
+        }
+        /// <summary>
+        /// 鎺ㄩ�佸紓甯镐俊鎭粰涓婃父绯荤粺1.鍏ュ簱鍗曟帴鍙o紱2.鍏ュ簱鍗曟姤瀹屾垚鎺ュ彛锛�3.鍑哄簱鍗曟帴鍙o紱4.鍑哄簱鎶ュ畬鎴愭帴鍙o紱5.鑽搧鍩虹淇℃伅鍚屾鎺ュ彛锛�6.渚涘簲鍟嗕俊鎭帴鍙o紱7.瀹㈡埛淇℃伅鎺ュ彛锛�8.搴撳瓨
+        /// </summary>
+        public void SendErrorToUpstream(int type, string code, string message, string remark)
+        {
+            try
+            {
+                var url = "http://127.0.0.1:9090/GYZ2/95fck/exceptionLog";
+
+                var requestData = new
+                {
+                    type = type.ToString(),
+                    code = code,
+                    message = message,
+                    remark = remark
+                };
+
+                var result = HttpHelper.Post(url, requestData.ToJsonString());
+                // 鍙互鍙嶅簭鍒楀寲妫�鏌� resultCode 鏄惁涓�0
+            }
+            catch (Exception e)
+            {
+                // 杩欓噷涓嶈鍐嶆姏寮傚父浜嗭紝閬垮厤姝诲惊鐜�
+                Console.WriteLine("寮傚父鎺ュ彛鎺ㄩ�佸け璐ワ細" + e.Message);
+            }
+        }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderDetailHtyServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderDetailHtyServices.cs"
new file mode 100644
index 0000000..e59f956
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderDetailHtyServices.cs"
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+
+
+namespace WIDESEA_SquareCabinServices
+{
+    public class DeliveryOrderDetailHtyServices : ServiceBase<Dt_DeliveryOrderDetail_Hty, IRepository<Dt_DeliveryOrderDetail_Hty>>, IDeliveryOrderDetailHtyServices
+    {
+        public DeliveryOrderDetailHtyServices(IRepository<Dt_DeliveryOrderDetail_Hty> BaseDal) : base(BaseDal)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderDetailServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderDetailServices.cs"
new file mode 100644
index 0000000..cfac259
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderDetailServices.cs"
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+
+
+namespace WIDESEA_SquareCabinServices
+{
+    public class DeliveryOrderDetailServices : ServiceBase<Dt_DeliveryOrderDetail, IRepository<Dt_DeliveryOrderDetail>>, IDeliveryOrderDetailServices
+    {
+        public DeliveryOrderDetailServices(IRepository<Dt_DeliveryOrderDetail> BaseDal) : base(BaseDal)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderHtyServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderHtyServices.cs"
new file mode 100644
index 0000000..6b8b8e1
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderHtyServices.cs"
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_SquareCabinServices
+{
+    public class DeliveryOrderHtyServices : ServiceBase<Dt_DeliveryOrder_Hty, IRepository<Dt_DeliveryOrder_Hty>>, IDeliveryOrderHtyServices
+    {
+        public DeliveryOrderHtyServices(IRepository<Dt_DeliveryOrder_Hty> BaseDal) : base(BaseDal)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs"
new file mode 100644
index 0000000..4062e24
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs"
@@ -0,0 +1,884 @@
+锘縰sing HslCommunication;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO.SquareCabin;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+using static WIDESEA_DTO.SquareCabin.OrderDto;
+
+
+
+namespace WIDESEA_SquareCabinServices
+{
+    public class DeliveryOrderServices : ServiceBase<Dt_DeliveryOrder, IRepository<Dt_DeliveryOrder>>, IDeliveryOrderServices
+    {
+        static string SearchDate = "";
+
+        public DeliveryOrderServices(IRepository<Dt_DeliveryOrder> BaseDal) : base(BaseDal)
+        {
+        }
+
+        /// <summary>
+        /// 鑾峰彇涓婃父鍑哄簱鍗� 0鎴愬姛1澶辫触
+        /// </summary>
+        /// <param name="searchDate"></param>
+        /// <returns></returns>
+        //public WebResponseContent GetUpstreamOutOrder()
+        //{
+        //    var responseContent = new WebResponseContent();
+        //    try
+        //    {
+        //        // 璇锋眰鍦板潃
+        //        var url = "http://127.0.0.1:9000/GYZ2/95fck/outOrder";
+
+        //        if (string.IsNullOrEmpty(SearchDate)) SearchDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+        //        //// 璇锋眰鍙傛暟
+        //        var requestData = new
+        //        {
+        //            searchDate = SearchDate
+        //        };
+        //        SearchDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd HH:mm:ss");
+        //        // 鍙戣捣璇锋眰
+        //        var result = HttpHelper.Post(url, requestData.ToJsonString());
+
+        //        // 鍙嶅簭鍒楀寲
+        //        var response = JsonConvert.DeserializeObject<UpstreamResponse<UpstramOutOrderInfo>>(result);
+
+        //        if (response.resultCode != "0")
+        //        {
+        //            SendErrorToUpstream(3, "", response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触", "");
+        //            return responseContent.Error(response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触");
+        //        }
+
+        //        if (response.data == null || !response.data.Any())
+        //        {
+        //            return responseContent.OK("鏃犳柊鍑哄簱鍗曟暟鎹�");
+        //        }
+
+        //        Db.Ado.BeginTran();
+
+        //        foreach (var outorder in response.data)
+        //        {
+        //            try
+        //            {
+        //                // 鎻掑叆鍑哄簱鍗�
+        //                var entityOrder = new Dt_DeliveryOrder
+        //                {
+        //                    Out_no = outorder.out_no,
+        //                    Out_type = outorder.out_type,
+        //                    Client_no = outorder.client_no,
+        //                    Client_name=outorder.client_name,
+        //                    Account_time = outorder.account_time,
+        //                    OutStatus= "鏈畬鎴�",
+        //                };
+        //                var outorderId = BaseDal.Db.Insertable(entityOrder).ExecuteReturnIdentity();
+
+        //                // 鎻掑叆鍑哄簱鍗曟槑缁�
+        //                var detailEntities = outorder.details.Select(d => new Dt_DeliveryOrderDetail
+        //                {
+        //                    DeliveryOrderId = outorderId,
+        //                    Goods_no = d.goods_no,
+        //                    Order_qty = d.out_qty,
+        //                    Batch_num = d.batch_num,
+        //                    Exp_date = d.exp_date,
+        //                    OotDetailStatus="鏂板缓"
+        //                }).ToList();
+        //                BaseDal.Db.Insertable(detailEntities).ExecuteCommand();
+        //            }
+        //            catch (Exception ex)
+        //            {
+        //                SendErrorToUpstream(3, outorder.out_no, ex.Message, "");
+        //                throw; // 璁╁灞傛崟鑾峰苟鍥炴粴
+        //            }
+        //        }
+
+        //        Db.Ado.CommitTran();
+        //        return responseContent.OK("鍚屾鍑哄簱鍗曟垚鍔�");
+        //    }
+        //    catch (Exception ex)
+        //    {
+        //        SendErrorToUpstream(3, "", ex.Message, "");
+        //        Db.Ado.RollbackTran();
+        //        return responseContent.Error("鍚屾澶辫触: " + ex.Message);
+        //    }
+        //}
+
+        public WebResponseContent GetUpstreamOutOrder()
+        {
+            var responseContent = new WebResponseContent();
+            try
+            {
+                // 璇锋眰鍦板潃
+                var url = "http://121.37.118.63:80/GYZ2/95fck/outOrder";
+
+                //if (string.IsNullOrEmpty(SearchDate)) SearchDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+                //// 璇锋眰鍙傛暟
+                var requestData = new
+                {
+                    //searchDate = SearchDate
+                    searchDate = "2022-10-10 20:45:16"  // 姝g‘鐨勬牸寮�
+                };
+                //SearchDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd HH:mm:ss");
+                // 鍙戣捣璇锋眰
+                var result = HttpHelper.Post(url, requestData.ToJsonString());
+
+                // 鍙嶅簭鍒楀寲
+                var response = JsonConvert.DeserializeObject<UpstreamResponse<UpstramOutOrderInfo>>(result);
+
+                if (response.resultCode != "0")
+                {
+                    SendErrorToUpstream(3, "", response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触", "");
+                    return responseContent.Error(response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触");
+                }
+
+                if (response.data == null || !response.data.Any())
+                {
+                    return responseContent.OK("鏃犳柊鍑哄簱鍗曟暟鎹�");
+                }
+                // 鑾峰彇鎵�鏈夊凡瀛樺湪鐨勫嚭搴撳崟鍙�
+                var existingOutOrderNos = BaseDal.Db.Queryable<Dt_DeliveryOrder>()
+                    .Select(x => x.Out_no)
+                    .ToList();
+
+                // 杩囨护鎺夊凡瀛樺湪鐨勫嚭搴撳崟
+                var newOutOrders = response.data
+                    .Where(outorder => !existingOutOrderNos.Contains(outorder.order_no))//order_no鍑哄簱鍗曞彿
+                    .ToList();
+
+                if (!newOutOrders.Any())
+                {
+                    return responseContent.OK("鎵�鏈夊嚭搴撳崟宸插瓨鍦紝鏃犻渶鏂板");
+                }
+                Db.Ado.BeginTran();
+                try
+                {
+                    List<Dt_DeliveryOrder> _DeliveryOrders = new List<Dt_DeliveryOrder>();
+                    ////瀛樺偍鍑哄簱鍗曞彿
+                    //List<string> orderNos = new List<string>();
+
+                    foreach (var outorder in newOutOrders)
+                    {
+                        var entityOrder = new Dt_DeliveryOrder
+                        {
+                            Out_no = outorder.order_no,
+                            Out_type = outorder.order_type,
+                            Client_no = outorder.client_no,
+                            Client_name = outorder.client_name,
+                            Account_time = outorder.account_time,
+                            Warehouse_no=outorder.warehouse_no,
+                            OutStatus = "鏈畬鎴�",
+                            Details = outorder.details.Select(d => new Dt_DeliveryOrderDetail
+                            {
+                                // InsertNav 浼氳嚜鍔ㄨ缃叧鑱斿瓧娈� DeliveryOrderId
+                                Goods_no = d.goods_no,
+                                Order_qty = d.out_qty,
+                                Batch_num = d.batch_num,
+                                Exp_date = d.exp_date,
+                                OotDetailStatus = "鏂板缓",
+                                Status = outorder.warehouse_no == "001" ? 0 : 2, //濡傛灉鏄�001鎴块偅涔堝皢鐘舵�佽缃负0锛�2涓轰汉宸ュ鐞�
+                            }).ToList()
+                        };
+                        _DeliveryOrders.Add(entityOrder);
+                        //orderNos.Add(outorder.out_no);
+                    };
+
+                    // 浣跨敤 InsertNav 涓�娆℃�ф彃鍏ヤ富琛ㄥ拰瀛愯〃鏁版嵁
+                    BaseDal.Db.InsertNav(_DeliveryOrders).Include(x => x.Details).ExecuteCommand();
+
+                    // 杩欓噷鍙互娣诲姞涓嬪彂鍒� WCS 鐨勯�昏緫
+                    // var result = EdiOut(); // 鍙戠粰涓嬫父
+
+                    Db.Ado.CommitTran();
+                    return responseContent.OK("鍚屾鍑哄簱鍗曟垚鍔�");
+                }
+                catch (Exception ex)
+                {
+                    Db.Ado.RollbackTran();
+                    SendErrorToUpstream(3, "", ex.Message, "");
+                    return responseContent.Error("鍚屾澶辫触: " + ex.Message);
+                }
+            }
+            catch (Exception ex)
+            {
+                // 鍏ㄥ眬寮傚父鏃讹紝涔熸帹閫佸紓甯哥粰涓婃父
+                SendErrorToUpstream(3, "", ex.Message, "");
+                return responseContent.Error("鍚屾澶辫触: " + ex.Message);
+            }
+        }
+
+
+        /// <summary>
+        /// 鍑哄簱鍗曟帹閫佺粰 WCS
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent EdiOut()
+        {
+            var responseContent = new WebResponseContent();
+            try
+            {
+                // 1. 鏌ヨ绗﹀悎鏉′欢鐨勮鍗曪紙琛ㄥご=鏂板缓 && 鍖呭惈鏈夋晥鏄庣粏锛�
+                var outOrders = BaseDal.Db.CopyNew().Queryable<Dt_DeliveryOrder>()
+                    .Where(o => o.OutStatus == "鏂板缓")
+                    .Includes(o => o.Details, d => d.MedicineGoods)
+                    .ToList();
+
+                // 2. 鍐嶈繃婊ゆ帀涓嶇鍚堟潯浠剁殑鏄庣粏锛堝彧淇濈暀 Status=0 锛�
+                foreach (var order in outOrders)
+                {
+                    order.Details = order.Details.Where(d => d.Status == 0).ToList();
+                }
+
+                if (outOrders == null || !outOrders.Any())
+                {
+                    Console.WriteLine("娌℃湁绗﹀悎鏉′欢鐨勮鍗曢渶瑕佹帹閫�");
+                    return responseContent.Error("娌℃湁绗﹀悎鏉′欢鐨勮鍗曢渶瑕佹帹閫�");
+                }
+
+                foreach (var order in outOrders)
+                {
+                    try
+                    {
+                        string materialCode = "YY";//榛樿鍊�
+                                                   //鑾峰彇褰撳墠璁㈠崟鐨勭涓�涓槑缁嗛」
+                        var firstDetail = order.Details.FirstOrDefault();
+                        if (firstDetail?.MedicineGoods != null && !string.IsNullOrEmpty(firstDetail.MedicineGoods.MaterialCode))
+                        {
+                            //濡傛灉鏉′欢婊¤冻锛屽皢鐗╂枡浠g爜璁剧疆涓虹涓�涓槑缁嗛」瀵瑰簲鐨勮嵂鍝佺墿鏂欎唬鐮�
+                            materialCode = firstDetail.MedicineGoods.MaterialCode;
+                        }
+                        // 3. 缁勮 DTO
+                        var ediDto = new TowcsDto.ToediOutInfo
+                        {
+                            customerCode = "905",
+                            materialCode = materialCode,
+                            externalOrderNo = order.Out_no,
+                            outOrderType = order.Out_type == "1" ? "10" : order.Out_type == "2" ? "20" : "30",
+                            priority = 1,
+                            Is_cancel = 0,
+                            details = order.Details.Select(d => new TowcsDto.ToeOutdiInDetail
+                            {
+                                batchNo = d.Batch_num,
+                                productCode = d.Goods_no,
+                                productName = d.MedicineGoods?.Goods_spm,
+                                productSpecifications = d.MedicineGoods?.Model,
+                                quantity = (int)d.Order_qty,
+                                //stocktakingDetails = order.Out_type == "3"
+                                //    ? new List<ToOutediInStock>
+                                //      {
+                                //  new ToOutediInStock { palletCode = "FC00001", quantity = d.Order_qty.ToString() }
+                                //      }
+                                //    : null
+                            }).ToList()
+                        };
+
+                        // 4. 璋冪敤鎺ュ彛
+                        var url = "http://172.16.1.2:9357/file-admin/api/out/ediOut";
+                        var result = HttpHelper.Post(url, ediDto.ToJsonString());
+                        var resp = JsonConvert.DeserializeObject<TowcsDto.TowcsResponse<object>>(result);
+
+                        if (resp != null && resp.code == "0")
+                        {
+                            // 鏇存柊琛ㄥご鐘舵��
+                            BaseDal.Db.Updateable<Dt_DeliveryOrder>()
+                              .SetColumns(o => new Dt_DeliveryOrder { OutStatus = "寮�濮�" })
+                              .Where(o => o.Id == order.Id)
+                              .ExecuteCommand();
+
+                            // 鏇存柊鏄庣粏鐘舵��
+                            BaseDal.Db.Updateable<Dt_DeliveryOrderDetail>()
+                              .SetColumns(d => new Dt_DeliveryOrderDetail { Status = 1,OotDetailStatus="宸插畬鎴�" })
+                              .Where(d => d.DeliveryOrderId == order.Id && d.Status == 0)
+                              .ExecuteCommand();
+
+                            Console.WriteLine($"璁㈠崟 {order.Out_no} 鎺ㄩ�佹垚鍔�");
+                        }
+                        else
+                        {
+                            SendErrorToUpstream(3, order.Out_no, resp?.msg ?? "WCS 鎺ㄩ�佸け璐�", "");
+                            Console.WriteLine($"璁㈠崟 {order.Out_no} 鎺ㄩ�佸け璐ワ細{resp?.msg}");
+                        }
+                        //鍒犻櫎鍏ㄩ儴鐘朵负宸插畬鎴愮殑鏄庣粏鍜岃〃澶达紝绉诲叆鍘嗗彶琛�
+                    }
+                    catch (Exception ex)
+                    {
+                        SendErrorToUpstream(3, order.Out_no, ex.Message, "");
+                        Console.WriteLine($"璁㈠崟 {order.Out_no} 鎺ㄩ�佸紓甯革細{ex.Message}");
+                    }
+                }
+
+                return responseContent.OK("鍑哄簱璁㈠崟鎺ㄩ�佸畬鎴�");
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine("EdiOut 寮傚父锛�" + ex.Message);
+                return responseContent.Error("鍑哄簱璁㈠崟鎺ㄩ�佸け璐ワ細" + ex.Message);
+            }
+        }
+
+
+        /// <summary>
+        /// 鍑哄簱鎶ュ畬鎴愭帴鍙�
+        /// </summary>
+        /// <param name="out_no">鍑哄簱鍗曞彿</param>
+        /// <returns></returns>
+        //public WebResponseContent CompleteOutOrder(string out_no)
+        //{
+        //    var responseContent = new WebResponseContent();
+        //    try
+        //    {
+        //        if (string.IsNullOrWhiteSpace(out_no))
+        //        {
+        //            return responseContent.Error("鍏ュ簱鍗曞彿涓嶅彲浠ヤ负绌�");
+        //        }
+
+        //        Db.Ado.BeginTran();
+        //        //鍏堟煡澶磋〃
+        //        var outOerd= BaseDal.Db.Queryable<Dt_DeliveryOrder>()
+        //            .Where(o => o.Out_no == out_no)
+        //            .First();
+        //        if (outOerd == null)
+        //        {
+        //            return responseContent.Error($"娌℃湁鎵惧埌璇ュ嚭搴撳崟鍙穥out_no}");
+        //        }
+        //        //鏌ユ壘鎵�鏈夋槑缁嗚〃鏄惁閮藉凡瀹屾垚
+        //        var incompleteDetails = BaseDal.Db.Queryable<Dt_DeliveryOrderDetail>()
+        //            .Where(d => d.DeliveryOrderId == outOerd.Id && d.OotDetailStatus == "宸插畬鎴�")
+        //            .Count();
+        //        if (incompleteDetails>0)
+        //        {
+        //            // 鏇存柊鍑哄簱鍗曠姸鎬�
+        //            BaseDal.Db.Updateable<Dt_DeliveryOrder>()
+        //              .SetColumns(o => new Dt_DeliveryOrder { OutStatus = "寮�濮�" })
+        //              .Where(o => o.Out_no == out_no)
+        //              .ExecuteCommand();
+        //            var url = " http://127.0.0.1:9090/GYZ2/95fck/outOrderOk";
+        //            var reslut = HttpHelper.Post(url, new { out_no }.ToJsonString());
+        //            var response = JsonConvert.DeserializeObject<UpstreamOrderResponse>(reslut);
+        //            if (response.resultCode != "0")
+        //            {
+        //                SendErrorToUpstream(4, "", "涓婃父鎺ュ彛杩斿洖澶辫触", "");
+        //                return responseContent.Error(response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触");
+        //            }
+        //            Db.Ado.CommitTran();
+        //            return responseContent.OK("鎿嶄綔鎴愬姛,鍑哄簱鍗曚互鍙婃槑缁嗗叏閮ㄥ畬鎴�");
+        //        }
+        //        else
+        //        {
+        //            return responseContent.OK("鎿嶄綔鎴愬姛锛屼絾浠绘湁涓哄畬鎴愮殑鏄庣粏");
+        //        }
+        //    }
+        //    catch (Exception ex)
+        //    {
+        //        Db.Ado.RollbackTran();
+        //        SendErrorToUpstream(1, "", ex.Message, "");
+        //        return responseContent.Error("鍚屾澶辫触: " + ex.Message);
+        //    }
+        //}
+
+
+        /// <summary>
+        ///鐩樼偣鍑哄簱鍗曟帹閫佺粰 WCS
+        /// </summary>
+        /// <param name="externalOrderNo">鍑哄簱鍗曞彿</param>
+        /// <returns></returns>
+        //public WebResponseContent InventoryGood(string externalOrderNo)
+        //{
+        //    try
+        //    {
+        //        // 鏌ヨ鍑哄簱鍗曞強鏄庣粏
+        //        var orders = BaseDal.Db.CopyNew().Queryable<Dt_DeliveryOrder>()
+        //            .Where(x => x.Out_no == externalOrderNo)
+        //            .Includes(o => o.Details, d => d.MedicineGoods)
+        //            .ToList();
+
+
+        //        if (orders == null || orders.Count == 0)
+        //        {
+        //            return new WebResponseContent().Error("娌℃湁鎵惧埌璇ュ嚭搴撳崟");
+        //        }
+
+        //        var url = "http://172.16.1.2:9357/file-admin/api/out/ediOut"; 
+        //        bool allSuccess = true;
+
+        //        foreach (var order in orders)
+        //        {
+        //            //鏌ユ壘缁欏晢鍝佺殑搴撳瓨
+        //            var Invert = BaseDal.Db.Queryable<Dt_Inventory>()
+        //                .Where(i => i.Goods_no == order.Out_no).First();
+        //            var ediDto = new TowcsDto.ToediOutInfo
+        //            {
+        //                customerCode = "905",
+        //                materialCode = "YY",
+        //                externalOrderNo = order.Out_no,
+        //                outOrderType = "20", // 鐩樼偣鍑哄簱鍗�
+        //                priority = 1,
+        //                Is_cancel = 0,
+        //                details = order.Details.Select(d => new TowcsDto.ToeOutdiInDetail
+        //                {
+        //                    batchNo = d.Batch_num,
+        //                    productCode = d.Goods_no,
+        //                    productName = d.MedicineGoods?.Goods_spm,
+        //                    productSpecifications = d.MedicineGoods?.Model,
+        //                    quantity = (int)d.Order_qty,
+        //                    stocktakingDetails = new List<TowcsDto.ToOutediInStock>
+        //            {
+        //                new TowcsDto.ToOutediInStock
+        //                {
+        //                    palletCode = Invert.PalletCode,  // 瀹為檯浠庣郴缁熷彇
+        //                    quantity = d.Order_qty.ToString()
+        //                }
+        //            }
+        //                }).ToList()
+        //            };
+
+        //            var result = HttpHelper.Post(url, ediDto.ToJsonString());
+        //            var resp = JsonConvert.DeserializeObject<TowcsDto.TowcsResponse<object>>(result);
+
+        //            if (resp == null || resp.code != "0")
+        //            {
+        //                allSuccess = false;
+        //                break;
+        //            }
+        //        }
+
+        //        return allSuccess
+        //            ? new WebResponseContent { Status = true, Message = "鐩樼偣鎴愬姛" }
+        //            : new WebResponseContent { Status = false, Message = "鐩樼偣澶辫触" };
+        //    }
+        //    catch (Exception ex)
+        //    {
+        //        return new WebResponseContent { Status = false, Message = ex.Message };
+        //    }
+        //}
+        public WebResponseContent InventoryGood(string externalOrderNo)
+        {
+            try
+            {
+                // 1. 鏌ュ嚭鍑哄簱鍗曞強鏄庣粏
+                var orders = BaseDal.Db.CopyNew().Queryable<Dt_DeliveryOrder>()
+                    .Where(x => x.Out_no == externalOrderNo)
+                    .Includes(o => o.Details, d => d.MedicineGoods)
+                    .ToList();
+
+                if (orders == null || orders.Count == 0)
+                    return new WebResponseContent().Error("娌℃湁鎵惧埌璇ュ嚭搴撳崟");
+
+                // 2. 鑾峰彇鎵�鏈夊晢鍝佺紪鍙�
+                var allGoodsNos = orders
+                    .SelectMany(o => o.Details.Select(d => d.Goods_no))
+                    .Distinct()
+                    .ToList();
+
+                // 3. 涓�娆℃�ф煡璇㈠簱瀛樹俊鎭�
+                var inventoryList = BaseDal.Db.Queryable<Dt_Inventory>()
+                    .Where(i => allGoodsNos.Contains(i.Goods_no))
+                    .ToList();
+
+                var inventoryDict = inventoryList.ToDictionary(i => i.Goods_no, i => i);
+
+                string url = "http://172.16.1.2:9357/file-admin/api/out/ediOut";
+                bool allSuccess = true;
+
+                // 4. 鏋勯�犵洏鐐瑰嚭搴撹姹�
+                foreach (var order in orders)
+                {
+                    var ediDto = new TowcsDto.ToediOutInfo
+                    {
+                        customerCode = "905",
+                        materialCode = "YY",
+                        externalOrderNo = order.Out_no,
+                        outOrderType = "20", // 鐩樼偣鍑哄簱鍗�
+                        priority = 1,
+                        Is_cancel = 0,
+                        details = order.Details.Select(d =>
+                        {
+                            inventoryDict.TryGetValue(d.Goods_no, out var invert);
+
+                            return new TowcsDto.ToeOutdiInDetail
+                            {
+                                batchNo = d.Batch_num,
+                                productCode = d.Goods_no,
+                                productName = d.MedicineGoods?.Goods_spm,
+                                productSpecifications = d.MedicineGoods?.Model,
+                                quantity = (int)d.Order_qty,
+                                stocktakingDetails = new List<TowcsDto.ToOutediInStock>
+                        {
+                            new TowcsDto.ToOutediInStock
+                            {
+                                palletCode = invert?.PalletCode ?? string.Empty,
+                                quantity = d.Order_qty.ToString()
+                            }
+                        }
+                            };
+                        }).ToList()
+                    };
+
+                    var result = HttpHelper.Post(url, ediDto.ToJsonString());
+                    var resp = JsonConvert.DeserializeObject<TowcsDto.TowcsResponse<object>>(result);
+
+                    if (resp == null || resp.code != "0")
+                    {
+                        allSuccess = false;
+                        break;
+                    }
+                }
+
+                return allSuccess
+                    ? new WebResponseContent { Status = true, Message = "鐩樼偣鎴愬姛" }
+                    : new WebResponseContent { Status = false, Message = "鐩樼偣澶辫触" };
+            }
+            catch (Exception ex)
+            {
+                return new WebResponseContent { Status = false, Message = ex.Message };
+            }
+        }
+
+
+
+
+        /// <summary>
+        /// 鍑哄簱鎶ュ畬鎴愭帴鍙�
+        /// </summary>
+        /// <param name="out_no">鍑哄簱鍗曞彿</param>
+        /// <returns></returns>
+        public WebResponseContent CompleteAllOutOrders()
+        {
+            var responseContent = new WebResponseContent();
+            try
+            {
+                // 鏌ユ壘鎵�鏈夆�滃紑濮嬧�濈姸鎬佺殑鍑哄簱鍗�
+                var orders = BaseDal.Db.Queryable<Dt_DeliveryOrder>()
+                    .Where(o => o.OutStatus == "寮�濮�")
+                    .ToList();
+
+                if (orders == null || !orders.Any())
+                {
+                    return responseContent.OK("鏆傛棤闇�瑕佸鐞嗙殑鍑哄簱鍗�");
+                }
+
+                int successCount = 0;
+                int failCount = 0;
+
+                foreach (var order in orders)
+                {
+                    try
+                    {
+                        Db.Ado.BeginTran();
+
+                        // 鏌ヨ璇ュ崟鐨勬槑缁�
+                        var details = BaseDal.Db.Queryable<Dt_DeliveryOrderDetail>()
+                            .Where(d => d.DeliveryOrderId == order.Id)
+                            .ToList();
+
+                        // 鍒ゆ柇鏄庣粏鏄惁鍏ㄩ儴瀹屾垚
+                        var completedCount = details.Count(d => d.OotDetailStatus == "宸插畬鎴�");
+                        var totalCount = details.Count;
+
+                        if (totalCount > 0 && completedCount == totalCount)
+                        {
+                            // 鏇存柊鐘舵�佷负宸插畬鎴�
+                            BaseDal.Db.Updateable<Dt_DeliveryOrder>()
+                                .SetColumns(o => o.OutStatus == "宸插畬鎴�")
+                                .Where(o => o.Id == order.Id)
+                                .ExecuteCommand();
+
+                            // 璋冪敤涓婃父鎺ュ彛
+                            var url = "http://121.37.118.63:80/GYZ2/95fck/outOrderOk";
+                            var requestDate = new
+                            {
+                                order_no = order.Out_no
+                            };
+                            var result = HttpHelper.Post(url, requestDate.ToJsonString());
+                            var response = JsonConvert.DeserializeObject<UpstreamOrderResponse>(result);
+
+                            if (response.resultCode == "0")
+                            {
+                                // 鉁� 鎻掑叆鍘嗗彶琛紙琛ㄥご + 鏄庣粏锛�
+                                var orderHistory = new Dt_DeliveryOrder_Hty
+                                {
+                                    Id = order.Id,
+                                    Out_no = order.Out_no,
+                                    Out_type = order.Out_type,
+                                    Client_no = order.Client_no,
+                                    Client_name = order.Client_name,
+                                    Account_time = order.Account_time,
+                                    Warehouse_no = order.Warehouse_no,
+                                    OutStatus = "宸插畬鎴�",
+                                    Details = details.Select(d => new Dt_DeliveryOrderDetail
+                                    {
+                                        Id = d.Id,
+                                        DeliveryOrderId = d.DeliveryOrderId,
+                                        Reservoirarea = d.Reservoirarea,
+                                        Goods_no = d.Goods_no,
+                                        Order_qty = d.Order_qty,
+                                        Batch_num = d.Batch_num,
+                                        Exp_date = d.Exp_date,
+                                        OotDetailStatus = d.OotDetailStatus,
+                                        Status = d.Status
+                                    }).ToList()
+                                };
+
+                                // 鎻掑叆琛ㄥご鍘嗗彶
+                                var historyId = BaseDal.Db.Insertable(orderHistory).ExecuteReturnIdentity();
+
+                                // 鎻掑叆鏄庣粏鍘嗗彶锛堝甫鏂板閿級
+                                var detailHistories = details.Select(d => new Dt_DeliveryOrderDetail_Hty
+                                {
+                                    Id = d.Id,
+                                    DeliveryOrderId = order.Id,
+                                    Reservoirarea = d.Reservoirarea,
+                                    Goods_no = d.Goods_no,
+                                    Order_qty = d.Order_qty,
+                                    Batch_num = d.Batch_num,
+                                    Exp_date = d.Exp_date,
+                                    OotDetailStatus = d.OotDetailStatus,
+                                    Status = d.Status
+                                }).ToList();
+
+                                BaseDal.Db.Insertable(detailHistories).ExecuteCommand();
+
+                                // 鍒犻櫎鍘熷鏁版嵁锛堟槑缁� 鈫� 琛ㄥご锛�
+                                BaseDal.Db.Deleteable<Dt_DeliveryOrderDetail>().Where(d => d.DeliveryOrderId == order.Id).ExecuteCommand();
+                                BaseDal.Db.Deleteable<Dt_DeliveryOrder>().Where(o => o.Id == order.Id).ExecuteCommand();
+
+                                Db.Ado.CommitTran();
+                                successCount++;
+                            }
+                            else
+                            {
+                                Db.Ado.RollbackTran();
+                                failCount++;
+                                SendErrorToUpstream(4, "", $"涓婃父鎺ュ彛杩斿洖澶辫触: {response.resultMsg}", order.Out_no);
+                            }
+                        }
+                        else
+                        {
+                            // 鏈夋湭瀹屾垚鏄庣粏锛屼笉鏇存柊
+                            Db.Ado.RollbackTran();
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        Db.Ado.RollbackTran();
+                        failCount++;
+                        SendErrorToUpstream(1, "", ex.Message, order.Out_no);
+                    }
+                }
+
+                return responseContent.OK($"鎵归噺澶勭悊瀹屾垚锛氭垚鍔� {successCount} 鍗曪紝澶辫触 {failCount} 鍗曘��");
+            }
+            catch (Exception ex)
+            {
+                return responseContent.Error("鎵归噺澶勭悊澶辫触锛�" + ex.Message);
+            }
+        }
+
+
+        //public WebResponseContent CompleteAllOutOrders()
+        //{
+        //    var responseContent = new WebResponseContent();
+        //    try
+        //    {
+        //        var orders = BaseDal.Db.Queryable<Dt_DeliveryOrder>()
+        //            .Where(o => o.OutStatus == "寮�濮�")
+        //            .ToList();
+
+        //        if (orders == null || !orders.Any())
+        //        {
+        //            return responseContent.OK("鏆傛棤闇�瑕佸鐞嗙殑鍑哄簱鍗�");
+        //        }
+
+        //        int successCount = 0;
+        //        int failCount = 0;
+        //        int serverErrorCount = 0;
+
+        //        foreach (var order in orders)
+        //        {
+        //            try
+        //            {
+        //                Db.Ado.BeginTran();
+
+        //                var details = BaseDal.Db.Queryable<Dt_DeliveryOrderDetail>()
+        //                    .Where(d => d.DeliveryOrderId == order.Id)
+        //                    .ToList();
+
+        //                var completedCount = details.Count(d => d.OotDetailStatus == "宸插畬鎴�");
+        //                var totalCount = details.Count;
+
+        //                if (totalCount > 0 && completedCount == totalCount)
+        //                {
+        //                    // 鏇存柊鐘舵�佷负宸插畬鎴�
+        //                    BaseDal.Db.Updateable<Dt_DeliveryOrder>()
+        //                        .SetColumns(o => o.OutStatus == "宸插畬鎴�")
+        //                        .Where(o => o.Id == order.Id)
+        //                        .ExecuteCommand();
+
+        //                    // 璋冪敤涓婃父鎺ュ彛
+        //                    var url = "http://121.37.118.63:80/GYZ2/95fck/outOrderOk";
+        //                    var requestDate = new
+        //                    {
+        //                        order_no = order.Out_no
+        //                    };
+
+        //                    string result;
+        //                    try
+        //                    {
+        //                        result = HttpHelper.Post(url, requestDate.ToJsonString());
+        //                    }
+        //                    catch (Exception httpEx)
+        //                    {
+        //                        // HTTP璇锋眰寮傚父锛堢綉缁滈棶棰樼瓑锛�
+        //                        Db.Ado.RollbackTran();
+        //                        failCount++;
+        //                        SendErrorToUpstream(3, "", $"缃戠粶璇锋眰澶辫触: {httpEx.Message}", order.Out_no);
+        //                        continue;
+        //                    }
+
+        //                    // 鉁� 妫�鏌ユ槸鍚︽槸500閿欒椤甸潰
+        //                    if (!string.IsNullOrEmpty(result) && result.Contains("500閿欒椤甸潰"))
+        //                    {
+        //                        Db.Ado.RollbackTran();
+        //                        serverErrorCount++;
+        //                        SendErrorToUpstream(5, "", "涓婃父鎺ュ彛鏈嶅姟鍣ㄥ唴閮ㄩ敊璇�(500)锛岃鑱旂郴涓婃父绯荤粺绠$悊鍛�", order.Out_no);
+        //                        continue;
+        //                    }
+
+        //                    // 鉁� 妫�鏌ユ槸鍚︽槸HTML鍝嶅簲
+        //                    if (!string.IsNullOrEmpty(result) && result.Trim().StartsWith("<"))
+        //                    {
+        //                        Db.Ado.RollbackTran();
+        //                        failCount++;
+        //                        SendErrorToUpstream(4, "", "涓婃父鎺ュ彛杩斿洖闈濲SON鏍煎紡鍝嶅簲", order.Out_no);
+        //                        continue;
+        //                    }
+
+        //                    // 鉁� 瀹夊叏瑙f瀽JSON
+        //                    UpstreamOrderResponse response;
+        //                    try
+        //                    {
+        //                        response = JsonConvert.DeserializeObject<UpstreamOrderResponse>(result);
+        //                    }
+        //                    catch (JsonReaderException jsonEx)
+        //                    {
+        //                        Db.Ado.RollbackTran();
+        //                        failCount++;
+        //                        SendErrorToUpstream(4, "", $"涓婃父鎺ュ彛杩斿洖鏁版嵁鏍煎紡閿欒: {jsonEx.Message}", order.Out_no);
+        //                        continue;
+        //                    }
+
+        //                    if (response.resultCode == "0")
+        //                    {
+        //                        // 鎴愬姛澶勭悊閫昏緫...
+        //                        var orderHistory = new Dt_DeliveryOrder_Hty
+        //                        {
+        //                            Id = order.Id,
+        //                            Out_no = order.Out_no,
+        //                            Out_type = order.Out_type,
+        //                            Client_no = order.Client_no,
+        //                            Client_name = order.Client_name,
+        //                            Account_time = order.Account_time,
+        //                            Warehouse_no = order.Warehouse_no,
+        //                            OutStatus = "宸插畬鎴�",
+        //                            Details = details.Select(d => new Dt_DeliveryOrderDetail
+        //                            {
+        //                                Id = d.Id,
+        //                                DeliveryOrderId = d.DeliveryOrderId,
+        //                                Reservoirarea = d.Reservoirarea,
+        //                                Goods_no = d.Goods_no,
+        //                                Order_qty = d.Order_qty,
+        //                                Batch_num = d.Batch_num,
+        //                                Exp_date = d.Exp_date,
+        //                                OotDetailStatus = d.OotDetailStatus,
+        //                                Status = d.Status
+        //                            }).ToList()
+        //                        };
+
+        //                        var historyId = BaseDal.Db.Insertable(orderHistory).ExecuteReturnIdentity();
+
+        //                        var detailHistories = details.Select(d => new Dt_DeliveryOrderDetail_Hty
+        //                        {
+        //                            Id = d.Id,
+        //                            DeliveryOrderId = order.Id,
+        //                            Reservoirarea = d.Reservoirarea,
+        //                            Goods_no = d.Goods_no,
+        //                            Order_qty = d.Order_qty,
+        //                            Batch_num = d.Batch_num,
+        //                            Exp_date = d.Exp_date,
+        //                            OotDetailStatus = d.OotDetailStatus,
+        //                            Status = d.Status
+        //                        }).ToList();
+
+        //                        BaseDal.Db.Insertable(detailHistories).ExecuteCommand();
+
+        //                        BaseDal.Db.Deleteable<Dt_DeliveryOrderDetail>().Where(d => d.DeliveryOrderId == order.Id).ExecuteCommand();
+        //                        BaseDal.Db.Deleteable<Dt_DeliveryOrder>().Where(o => o.Id == order.Id).ExecuteCommand();
+
+        //                        Db.Ado.CommitTran();
+        //                        successCount++;
+        //                    }
+        //                    else
+        //                    {
+        //                        Db.Ado.RollbackTran();
+        //                        failCount++;
+        //                        SendErrorToUpstream(4, "", $"涓婃父鎺ュ彛杩斿洖澶辫触: {response.resultMsg}", order.Out_no);
+        //                    }
+        //                }
+        //                else
+        //                {
+        //                    Db.Ado.RollbackTran();
+        //                }
+        //            }
+        //            catch (Exception ex)
+        //            {
+        //                Db.Ado.RollbackTran();
+        //                failCount++;
+        //                SendErrorToUpstream(1, "", ex.Message, order.Out_no);
+        //            }
+        //        }
+
+        //        return responseContent.OK($"鎵归噺澶勭悊瀹屾垚锛氭垚鍔� {successCount} 鍗曪紝澶辫触 {failCount} 鍗曪紝鏈嶅姟鍣ㄩ敊璇� {serverErrorCount} 鍗曘��");
+        //    }
+        //    catch (Exception ex)
+        //    {
+        //        return responseContent.Error("鎵归噺澶勭悊澶辫触锛�" + ex.Message);
+        //    }
+        //}
+
+        /// <summary>
+        /// 鎺ㄩ�佸紓甯镐俊鎭粰涓婃父绯荤粺 1.鍏ュ簱鍗曟帴鍙o紱2.鍏ュ簱鍗曟姤瀹屾垚鎺ュ彛锛�3.鍑哄簱鍗曟帴鍙o紱4.鍑哄簱鎶ュ畬鎴愭帴鍙o紱5.鑽搧鍩虹淇℃伅鍚屾鎺ュ彛锛�6.渚涘簲鍟嗕俊鎭帴鍙o紱7.瀹㈡埛淇℃伅鎺ュ彛锛�8.搴撳瓨鏌ヨ鎺ュ彛
+        /// </summary>
+        public void SendErrorToUpstream(int type, string code, string message, string remark)
+        {
+            try
+            {
+                var url = "http://121.37.118.63:80/GYZ2/95fck/exceptionLog";
+
+                var requestData = new
+                {
+                    type = type.ToString(),
+                    code = code,
+                    message = message,
+                    remark = remark
+                };
+
+                var result = HttpHelper.Post(url, requestData.ToJsonString());
+                // 鍙互鍙嶅簭鍒楀寲妫�鏌� resultCode 鏄惁涓�0
+            }
+            catch (Exception e)
+            {
+                // 杩欓噷涓嶈鍐嶆姏寮傚父浜嗭紝閬垮厤姝诲惊鐜�
+                Console.WriteLine("寮傚父鎺ュ彛鎺ㄩ�佸け璐ワ細" + e.Message);
+            }
+        }
+
+       
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/InventoryServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/InventoryServices.cs"
new file mode 100644
index 0000000..248a7fe
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/InventoryServices.cs"
@@ -0,0 +1,208 @@
+锘縰sing HslCommunication;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO.SquareCabin;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+using static WIDESEA_DTO.SquareCabin.OrderDto;
+using static WIDESEA_DTO.SquareCabin.TowcsDto;
+
+
+namespace WIDESEA_SquareCabinServices
+{
+    public class InventoryServices : ServiceBase<Dt_Inventory, IRepository<Dt_Inventory>>, IInventoryServices
+    {
+        public InventoryServices(IRepository<Dt_Inventory> BaseDal) : base(BaseDal)
+        {
+        }
+
+
+        /// <summary>
+        /// 鑾峰彇涓婃父搴撳瓨淇℃伅
+        /// </summary>
+        /// <param name="goods_no">鍟嗗搧缂栫爜</param>
+        /// <param name="batch_num">鎵瑰彿</param>
+        /// <returns></returns>
+        /// <exception cref="NotImplementedException"></exception>
+        public WebResponseContent GetInventoryList(string goods_no, string batch_num)
+        {
+            var responseContent = new WebResponseContent();
+            try
+            {
+                var url = "http://121.37.118.63/GYZ2/95fck/repositoryInfo";
+                // 鍙戣捣璇锋眰
+                var result = HttpHelper.Post(url, new { goods_no,batch_num}.ToJsonString());
+
+                // 鍙嶅簭鍒楀寲
+                var response = JsonConvert.DeserializeObject<UpstreamResponse<InventoryInfo>>(result);
+
+                if (response.resultCode!="0")
+                {
+                    // 璋冪敤寮傚父鎺ュ彛
+                    SendErrorToUpstream(8, "", response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触", "");
+                    return responseContent.Error(response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触");
+                }
+                if (response.data == null || !response.data.Any())
+                {
+                    return responseContent.OK("鏃犳柊搴撳瓨鏁版嵁");
+                }
+                Db.Ado.BeginTran();
+                foreach (var item in response.data)
+                {
+                    var Inver = new Dt_Inventory
+                    { 
+                        Goods_no = item.goods_no,
+                        Batch_num = item.batch_num,
+                        Exp_date=item.exp_date,
+                        Business_qty = item.business_qty,
+                        Actual_qty = item.actural_qty,
+                    };
+                    AddData(Inver);
+                }
+                Db.Ado.CommitTran();
+                return responseContent.OK("搴撳瓨淇℃伅鍚屾瀹屾垚");
+            }
+            catch (Exception ex)
+            {
+                Db.Ado.RollbackTran();
+                SendErrorToUpstream(8, "", ex.Message, "");
+                return responseContent.Error("鍚屾澶辫触: " + ex.Message);
+            }
+        }
+
+
+        /// <summary>
+        /// wcs鍥炰紶缁欐垜璋冪敤鎴戠殑鏂规硶
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        public ApiResponse<Dt_Inventory> OrderFeedback(EdiOrderCallbackRequest request)
+        {
+            try
+            {
+                if (request == null || request.details == null || !request.details.Any())
+                {
+                    return new ApiResponse<Dt_Inventory> { code = "500", msg = "璇锋眰鍙傛暟鏃犳晥" };
+                }
+                BaseDal.Db.Ado.BeginTran();//寮�鍚簨鍔�
+                foreach (var detail in request.details)
+                {
+                    // 鍏堟煡搴撳瓨鏄惁瀛樺湪锛堟寜鐓т骇鍝佺紪鍙峰拰鎵规鏉ュ鎵撅級
+                    var entity = BaseDal.Db.Queryable<Dt_Inventory>()
+                                   .First(x => x.Goods_no == detail.productCode && x.Batch_num == detail.batchNo);
+                    //灏嗛泦鍚堜腑鐨勬暟閲忚繘琛岀疮鍔�
+                    // 瀹夊叏杞崲
+
+                    //姝e父鍑哄叆搴�
+                    decimal orderQty = detail.orderDetails?.Sum(x => decimal.TryParse(x.quantity, out var q) ? q : 0) ?? 0;
+                    //鐩樼偣鐩樹簭
+                    decimal diffQty = detail.stocktakingDetails?.Sum(x => Convert.ToDecimal(x.differenceQuantity)) ?? 0;
+                    if (entity == null)
+                    {
+                        // 濡傛灉涓嶅瓨鍦紝鏂板缓涓�鏉�
+                        entity = new Dt_Inventory
+                        {
+                            Goods_no = detail.productCode ?? detail.productName,
+                            Reservoirarea = "榛樿搴撳尯",
+                            Batch_num = detail.batchNo,
+                            //涓氬姟搴撳瓨
+                            Business_qty = 0,
+                            //瀹為檯搴撳瓨
+                            Actual_qty = 0
+                        };
+                    }
+
+                    switch (request.orderType)
+                    {
+                        case "1": // 鍏ュ簱
+                            entity.Business_qty += orderQty;
+                            entity.Actual_qty += orderQty;
+                            break;
+
+                        case "2": // 鍑哄簱
+                            entity.Business_qty -= orderQty;
+                            entity.Actual_qty -= orderQty;
+                            if (entity.Business_qty < 0) entity.Business_qty = 0; // 鍙�夛細闃叉璐熸暟
+                            if (entity.Actual_qty < 0) entity.Actual_qty = 0;
+                            break;
+
+                        case "3": // 鐩樼偣
+                            if (detail.stocktakingDetails != null && detail.stocktakingDetails.Any())
+                            {
+                                foreach (var stock in detail.stocktakingDetails)
+                                {
+                                    //姣忔閮藉彧鎷夸竴鏉℃槑缁嗕腑鐨勬暟閲�
+                                    decimal diff = Convert.ToDecimal(stock.differenceQuantity);
+                                    if (stock.IsProfit == "1") // 鐩樼泩
+                                    {
+                                        entity.Business_qty += diff;//濡傛灉鐩樼泩浜嗗浜嗭紝灏卞皢涓氬姟鏁伴噺+锛岀洏浜忓垯鐩稿弽
+                                        entity.PalletCode = stock.palletCode;
+                                    }
+                                    else // 鐩樹簭
+                                    {
+                                        entity.Business_qty -= diff;
+                                        entity.PalletCode = stock.palletCode;
+                                    }
+                                }
+                            }
+                            break;
+                    }
+
+                    // 淇濆瓨鏁版嵁
+                    if (entity.Id == 0) // 鏂板缓
+                        BaseDal.Db.Insertable(entity).ExecuteCommand();
+                    else // 鏇存柊
+                        BaseDal.Db.Updateable(entity).ExecuteCommand();
+                }
+                BaseDal.Db.Ado.CommitTran(); // 鎻愪氦浜嬪姟
+                return new ApiResponse<Dt_Inventory> { code = "0", msg = "鎴愬姛" };
+            }
+            catch (Exception ex)
+            {
+                BaseDal.Db.Ado.RollbackTran();//鍥炴粴浜嬪姟
+                return new ApiResponse<Dt_Inventory> { code = "500", msg = ex.Message };
+            }
+        }
+
+
+
+
+
+        /// <summary>
+        /// 鎺ㄩ�佸紓甯镐俊鎭粰涓婃父绯荤粺1.鍏ュ簱鍗曟帴鍙o紱2.鍏ュ簱鍗曟姤瀹屾垚鎺ュ彛锛�3.鍑哄簱鍗曟帴鍙o紱4.鍑哄簱鎶ュ畬鎴愭帴鍙o紱5.鑽搧鍩虹淇℃伅鍚屾鎺ュ彛锛�6.渚涘簲鍟嗕俊鎭帴鍙o紱7.瀹㈡埛淇℃伅鎺ュ彛锛�8.搴撳瓨
+        /// </summary>
+        public void SendErrorToUpstream(int type, string code, string message, string remark)
+        {
+            try
+            {
+                var url = "http://121.37.118.63:80/GYZ2/95fck/exceptionLog";
+
+                var requestData = new
+                {
+                    type = type.ToString(),
+                    code = code,
+                    message = message,
+                    remark = remark
+                };
+
+                var result = HttpHelper.Post(url, requestData.ToJsonString());
+                // 鍙互鍙嶅簭鍒楀寲妫�鏌� resultCode 鏄惁涓�0
+            }
+            catch (Exception e)
+            {
+                // 杩欓噷涓嶈鍐嶆姏寮傚父浜嗭紝閬垮厤姝诲惊鐜�
+                Console.WriteLine("寮傚父鎺ュ彛鎺ㄩ�佸け璐ワ細" + e.Message);
+            }
+        }
+
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/MedicineGoodsServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/MedicineGoodsServices.cs"
new file mode 100644
index 0000000..05b95ed
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/MedicineGoodsServices.cs"
@@ -0,0 +1,295 @@
+锘縰sing HslCommunication;
+using Newtonsoft.Json;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Security.Policy;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+using static WIDESEA_DTO.SquareCabin.OrderDto;
+using static WIDESEA_DTO.SquareCabin.TowcsDto;
+
+
+namespace WIDESEA_SquareCabinServices
+{
+    public class MedicineGoodsServices : ServiceBase<Dt_MedicineGoods, IRepository<Dt_MedicineGoods>>, IMedicineGoodsServices
+    {
+        public MedicineGoodsServices(IRepository<Dt_MedicineGoods> BaseDal) : base(BaseDal)
+        {
+        }
+
+        static string SearchDate = "";
+
+        /// <summary>
+        /// 鑾峰彇鑽搧鍩虹淇℃伅鍚屾鎺ュ彛
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent GetMedicineGoodsInfom()
+        {
+            var responseContent = new WebResponseContent();
+            try
+            {
+                
+              var url = "http://121.37.118.63:80/GYZ2/95fck/goodsInfo";
+
+
+                if (string.IsNullOrEmpty(SearchDate)) SearchDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+                //璇锋眰鍙傛暟
+                var requestData = new
+                {
+                    searchDate = "2022-10-10 20:45:16"  // 姝g‘鐨勬牸寮�
+                };
+                //if (string.IsNullOrEmpty(SearchDate))
+                //{
+                //    // 榛樿鏌ヨ杩囧幓24灏忔椂鐨勬暟鎹�
+                //    SearchDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd HH:mm:ss");
+                //}
+                //// 璇锋眰鍙傛暟
+                //var requestData = new
+                //{
+                //    searchDate = SearchDate
+                //};
+                //SearchDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd HH:mm:ss");
+                // 鍙戣捣璇锋眰
+                var result = HttpHelper.Post(url, requestData.ToJsonString());
+
+                // 鍙嶅簭鍒楀寲
+                var response = JsonConvert.DeserializeObject<UpstreamResponse<MedicationsInfo>>(result);
+
+                if (response.resultCode != "0")
+                {
+                    // 璋冪敤寮傚父鎺ュ彛
+                    SendErrorToUpstream(5, "", response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触", "");
+                    return responseContent.Error(response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触");
+                }
+                if (response.data == null || !response.data.Any())
+                {
+                    return responseContent.OK("鏃犳柊鑽搧鏁版嵁");
+                }
+
+                //鑾峰彇鎵�鏈夊凡瀛樺湪鐨勫晢鍝佺紪鍙�
+                var existingGoodsNos = BaseDal.Db.Queryable<Dt_MedicineGoods>()
+                    .Select(g => g.Goods_no)
+                    .ToList();
+
+                // 鏀堕泦鎵�鏈夎鎻掑叆鐨勫疄浣�
+                var entityList = response.data.Where(Medicat => !existingGoodsNos.Contains(Medicat.goods_no)).Select(Medicat => new Dt_MedicineGoods
+                {
+                    Goods_no = Medicat.goods_no,
+                    MaterialCode=Medicat.materialCode,
+                    Goods_spm = Medicat.goods_spm,
+                    Model = Medicat.model,
+                    Factory = Medicat.factory,
+                    Unit = Medicat.unit,
+                    // 浣跨敤 ?? 杩愮畻绗︽彁渚涢粯璁ゅ��
+                    Item_Iength = Medicat.item_length ,
+                    Item_width = Medicat.item_width,
+                    Item_hight = Medicat.item_hight,
+                    Item_volumn = Medicat.item_volumn,
+                    Item_weight = Medicat.item_weight,
+                    Storage_cond = Medicat.storage_cond,
+                    Remark = Medicat.remark,
+                    GoodStatus = "鏈笅鍙�",
+                    ModifyDate = Medicat.modify_date
+                }).ToList();
+                // 涓�娆℃�ф壒閲忔彃鍏ユ暟鎹簱
+                BaseDal.Db.Insertable(entityList).ExecuteCommand();
+
+                ProductSynchronous();
+                return responseContent.OK("鍚屾鎴愬姛");
+            }
+            
+            catch (Exception ex)
+            {
+                SendErrorToUpstream(5, "", ex.Message, "");
+                return responseContent.Error(ex.Message);
+            }
+        }
+
+
+        /// <summary>
+        /// 鍙戠粰涓嬫父wcs鍚屾鑽搧淇℃伅 
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent ProductSynchronous()
+        {
+            try
+            {
+                //鍏堟壘鍒版墍鏈夋湭涓嬪彂鐨勮嵂鍝�
+                var list = BaseDal.QueryData(x => x.GoodStatus == "鏈笅鍙�").ToList();
+                if (list == null || !list.Any())
+                {
+                    return new WebResponseContent().OK("鏃犳湭涓嬪彂鑽搧");
+                }
+                //鎵惧埌浜嗗氨灏嗘暣涓猯ist鍙戠粰涓嬫父绯荤粺
+                foreach (var item in list)
+                {
+                    var medicineDTO = new ProductInfo
+                    {
+                        //鐢ㄦ埛code
+                        customerCode = "905",
+                        //鐗╂枡绫诲瀷
+                        materialCode =item.MaterialCode,
+                        //浜у搧缂栫爜
+                        productCode= item.Goods_no,
+                        //浜у搧鍚�
+                        productName =item.Goods_spm ,
+                        //浜у搧鏉$爜
+                        productBarCode= item.Goods_no,
+
+                        //瑙勬牸
+                        productSpecifications=item.Model,
+                        //鍗曚綅
+                        unit = item.Unit,
+                        //闀�
+                        singleProductLongNum = item.Item_Iength.ToString(),
+                        //瀹�
+                        singleProductWideNum = item.Item_weight.ToString(),
+                        //楂�
+                        singleProductHighNum = item.Item_hight.ToString(),
+                        //閲嶉噺
+                        singleProductWeight = item.Item_weight.ToString(),
+                        //浣撶Н
+                        singleProductVolume = item.Item_volumn.ToString(),
+                        //鏄惁鍙栨秷 0鏄笉鍒犻櫎锛�1鍒犻櫎
+                        isDelete = "0"
+                    };
+                    var url = "http://172.16.1.2:9357/file-admin/api/product/productSynchronous";
+                    var result = HttpHelper.Post(url, medicineDTO.ToJsonString());
+                    var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result);
+
+                    if (resp!=null&&resp.code=="0")
+                    {
+                        //鏇存柊鑽搧鐘舵��-宸插畬鎴�
+                        BaseDal.Db.Updateable<Dt_MedicineGoods>()
+                            .SetColumns(x => x.GoodStatus == "涓嬪彂瀹屾垚")
+                            .Where(x => x.Goods_no == item.Goods_no)
+                            .ExecuteCommand();  
+                    }
+                    else
+                    {
+                        SendErrorToUpstream(5, medicineDTO.materialCode, resp?.msg ?? "WCS鑽搧淇℃伅鍚屾澶辫触", "");
+                      
+                        return new WebResponseContent { Status = false, Message = "璁㈠崟鎺ㄩ�佸け璐�" };
+                    }
+
+                }
+                return new WebResponseContent { Status = true, Message = "鎴愬姛" };
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine("ProductSynchronous 寮傚父锛�" + ex.Message);
+                return new WebResponseContent { Status = false, Message = ex.Message };
+            }
+
+        }
+
+        /// <summary>
+        /// 鍚屾鍒犻櫎鍒犻櫎鍟嗗搧淇℃伅 
+        /// 鑽搧缂栫爜
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent DeleteProduct(string goodsno)
+        {
+            
+            try
+            {
+                var goods = BaseDal.QueryData(x => x.Goods_no == goodsno).FirstOrDefault();
+                if (goods == null)
+                {
+                    return new WebResponseContent
+                    {
+                        Status = false,
+                        Message = $"鍟嗗搧缂栧彿 {goodsno} 涓嶅瓨鍦�"
+                    };
+                }
+                var medicineDTO = new ProductInfo
+                {
+                    //鐢ㄦ埛code
+                    customerCode = "905",
+                    //鐗╂枡绫诲瀷
+                    materialCode = "YY",
+                    //浜у搧缂栫爜
+                    productCode = goods.Goods_no,
+                    //浜у搧鍚�
+                    productName = goods.Goods_spm,
+                    //浜у搧鏉$爜
+                    productBarCode = goods.Goods_no,
+
+                    //瑙勬牸
+                    productSpecifications = goods.Model,
+                    //鍗曚綅
+                    unit = goods.Unit,
+                    //闀�
+                    singleProductLongNum = goods.Item_Iength.ToString(),
+                    //瀹�
+                    singleProductWideNum = goods.Item_weight.ToString(),
+                    //楂�
+                    singleProductHighNum = goods.Item_hight.ToString(),
+                    //閲嶉噺
+                    singleProductWeight = goods.Item_weight.ToString(),
+                    //浣撶Н
+                    singleProductVolume = goods.Item_volumn.ToString(),
+                    //鏄惁鍙栨秷 0鏄笉鍒犻櫎锛�1鍒犻櫎
+                    isDelete = "1"
+                };
+                var url = "http://172.16.1.2:9357/file-admin/api/product/productSynchronous";
+                //var url = "http://172.16.1.245:9357/file-admin/api/product/productSynchronous";
+
+                var result = HttpHelper.Post(url, medicineDTO.ToJsonString());
+                var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result);
+                if (resp != null && resp.code == "0")
+                {
+                    //鎴戣嚜宸变篃鍒犻櫎
+                    BaseDal.DeleteData(goods);
+                    return new WebResponseContent { Status = true, Message = "鍒犻櫎鎴愬姛" };
+                }
+                return new WebResponseContent { Status = false, Message = "鍒犻櫎澶辫触璇烽噸璇�" };
+              
+               
+            }
+            catch (Exception ex)
+            {
+
+              return new WebResponseContent { Status=false,Message = ex.Message };
+            }
+        }
+
+
+        /// <summary>
+        /// 鎺ㄩ�佸紓甯镐俊鎭粰涓婃父绯荤粺1.鍏ュ簱鍗曟帴鍙o紱2.鍏ュ簱鍗曟姤瀹屾垚鎺ュ彛锛�3.鍑哄簱鍗曟帴鍙o紱4.鍑哄簱鎶ュ畬鎴愭帴鍙o紱5.鑽搧鍩虹淇℃伅鍚屾鎺ュ彛锛�6.渚涘簲鍟嗕俊鎭帴鍙o紱7.瀹㈡埛淇℃伅鎺ュ彛锛�8.搴撳瓨
+        /// </summary>
+        public void SendErrorToUpstream(int type, string code, string message, string remark)
+        {
+            try
+            {
+                var url = "http://121.37.118.63:80/GYZ2/95fck/exceptionLog";
+
+                var requestData = new
+                {
+                    type = type.ToString(),
+                    code = code,
+                    message = message,
+                    remark = remark
+                };
+
+                var result = HttpHelper.Post(url, requestData.ToJsonString());
+                // 鍙互鍙嶅簭鍒楀寲妫�鏌� resultCode 鏄惁涓�0
+            }
+            catch (Exception e)
+            {
+                // 杩欓噷涓嶈鍐嶆姏寮傚父浜嗭紝閬垮厤姝诲惊鐜�
+                Console.WriteLine("寮傚父鎺ュ彛鎺ㄩ�佸け璐ワ細" + e.Message);
+            }
+        }
+
+       
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/SupplierServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/SupplierServices.cs"
new file mode 100644
index 0000000..743c69a
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/SupplierServices.cs"
@@ -0,0 +1,108 @@
+锘縰sing HslCommunication;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+using static WIDESEA_DTO.SquareCabin.OrderDto;
+
+
+namespace WIDESEA_SquareCabinServices
+{
+    public class SupplierServices : ServiceBase<Dt_Supplier, IRepository<Dt_Supplier>>, ISupplierServices
+    {
+        public SupplierServices(IRepository<Dt_Supplier> BaseDal) : base(BaseDal)
+        {
+        }
+
+        static string SearchDate = "";
+        /// <summary>
+        /// 鑾峰彇涓婃父渚涘簲鍟嗕俊鎭� 0鎴愬姛1澶辫触
+        /// </summary>
+        /// <param name="searchDate"></param>
+        /// <returns></returns>
+        public WebResponseContent SyncSupplier()
+        {
+            var responseContent = new WebResponseContent();
+            try
+            {
+                var url = "http://121.37.118.63:80/GYZ2/95fck/supplierInfo";
+                // 璇锋眰鍙傛暟
+                if (string.IsNullOrEmpty(SearchDate)) SearchDate = DateTime.Now.ToString("yyyy-MM-dd:mm:ss");
+                //璇锋眰鍙傛暟
+                var requestData = new
+                {
+                    searchDate = SearchDate
+                };
+                SearchDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd HH:mm:ss");
+                var result = HttpHelper.Post(url, responseContent.ToJsonString());
+                var response = JsonConvert.DeserializeObject<UpstreamResponse<SupplierInfo>>(result);
+                if (response.resultCode!="0")
+                {
+                    //璋冪敤寮傚父鎺ュ彛
+                    SendErrorToUpstream(6, "", response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触", "");
+                    return responseContent.Error(response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触");
+                }
+                if (response.data == null || !response.data.Any())
+                {
+                    return responseContent.OK("涓婃父渚涘簲鍟嗕俊鎭负绌�");
+                }
+                foreach (var supplier in response.data)
+                {
+                    var supplierInfo = new Dt_Supplier {
+                       Supplier_no=supplier.supplier_no,
+                       Supplier_name = supplier.supplier_name,
+                       Telephone=supplier.phone,
+                       Address = supplier.address,
+                       Email=supplier.email,
+                       Remark=supplier.remark,
+                       ModifyDate=supplier.modify_date,
+                    };
+                    AddData(supplierInfo);
+
+                }
+                return responseContent.OK("鍚屾鎴愬姛");
+            }
+            catch (Exception ex)
+            {
+
+                SendErrorToUpstream(6, "", ex.Message, "");
+                return responseContent.Error("鍚屾澶辫触: " + ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 鎺ㄩ�佸紓甯镐俊鎭粰涓婃父绯荤粺1.鍏ュ簱鍗曟帴鍙o紱2.鍏ュ簱鍗曟姤瀹屾垚鎺ュ彛锛�3.鍑哄簱鍗曟帴鍙o紱4.鍑哄簱鎶ュ畬鎴愭帴鍙o紱5.鑽搧鍩虹淇℃伅鍚屾鎺ュ彛锛�6.渚涘簲鍟嗕俊鎭帴鍙o紱7.瀹㈡埛淇℃伅鎺ュ彛锛�8.搴撳瓨
+        /// </summary>
+        public void SendErrorToUpstream(int type, string code, string message, string remark)
+        {
+            try
+            {
+                var url = "http://121.37.118.63:80/GYZ2/95fck/exceptionLog";
+
+                var requestData = new
+                {
+                    type = type.ToString(),
+                    code = code,
+                    message = message,
+                    remark = remark
+                };
+
+                var result = HttpHelper.Post(url, requestData.ToJsonString());
+                // 鍙互鍙嶅簭鍒楀寲妫�鏌� resultCode 鏄惁涓�0
+            }
+            catch (Exception e)
+            {
+                // 杩欓噷涓嶈鍐嶆姏寮傚父浜嗭紝閬垮厤姝诲惊鐜�
+                Console.WriteLine("寮傚父鎺ュ彛鎺ㄩ�佸け璐ワ細" + e.Message);
+            }
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/WIDESEA_SquareCabinServices.csproj" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/WIDESEA_SquareCabinServices.csproj"
new file mode 100644
index 0000000..d55254b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/WIDESEA_SquareCabinServices.csproj"
@@ -0,0 +1,14 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_ISquareCabinServices\WIDESEA_ISquareCabinServices.csproj" />
+    <ProjectReference Include="..\WIDESEA_Model\WIDESEA_Model.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoDetailService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoDetailService.cs"
new file mode 100644
index 0000000..47ccfdf
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoDetailService.cs"
@@ -0,0 +1,26 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_StockService
+{
+    public partial class StockInfoDetailService : ServiceBase<Dt_StockInfoDetail, IRepository<Dt_StockInfoDetail>>, IStockInfoDetailService
+    {
+        public StockInfoDetailService(IRepository<Dt_StockInfoDetail> BaseDal) : base(BaseDal)
+        {
+        }
+
+        public IRepository<Dt_StockInfoDetail> Repository => BaseDal;
+
+        public bool ExistSerialNumber(string SerialNumber)
+        {
+            return BaseDal.QueryFirst(x => x.SerialNumber == SerialNumber) != null;
+        }
+
+        public bool ExistSerialNumbers(List<string> SerialNumbers)
+        {
+            return BaseDal.QueryFirst(x => SerialNumbers.Contains(x.SerialNumber)) != null;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoDetail_HtyService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoDetail_HtyService.cs"
new file mode 100644
index 0000000..d637998
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoDetail_HtyService.cs"
@@ -0,0 +1,15 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_StockService
+{
+    public partial class StockInfoDetail_HtyService : ServiceBase<Dt_StockInfoDetail_Hty, IRepository<Dt_StockInfoDetail_Hty>>, IStockInfoDetail_HtyService
+    {
+        public StockInfoDetail_HtyService(IRepository<Dt_StockInfoDetail_Hty> BaseDal) : base(BaseDal)
+        {
+        }
+        public IRepository<Dt_StockInfoDetail_Hty> Repository => BaseDal;
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs"
new file mode 100644
index 0000000..339d933
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs"
@@ -0,0 +1,21 @@
+锘縰sing AutoMapper;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_StockService
+{
+    public partial class StockInfoService : ServiceBase<Dt_StockInfo, IRepository<Dt_StockInfo>>, IStockInfoService
+    {
+        private readonly IMapper _mapper;
+
+        public IRepository<Dt_StockInfo> Repository => BaseDal;
+
+        public StockInfoService(IRepository<Dt_StockInfo> BaseDal, IMapper mapper) : base(BaseDal)
+        {
+            _mapper = mapper;
+        }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_StockService/StockInfo_HtyService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_StockService/StockInfo_HtyService.cs"
new file mode 100644
index 0000000..6552a65
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_StockService/StockInfo_HtyService.cs"
@@ -0,0 +1,20 @@
+锘縰sing AutoMapper;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_StockService
+{
+    public partial class StockInfo_HtyService : ServiceBase<Dt_StockInfo_Hty, IRepository<Dt_StockInfo_Hty>>, IStockInfo_HtyService
+    {
+        private readonly IMapper _mapper;
+
+        public IRepository<Dt_StockInfo_Hty> Repository => BaseDal;
+
+        public StockInfo_HtyService(IRepository<Dt_StockInfo_Hty> BaseDal, IMapper mapper) : base(BaseDal)
+        {
+            _mapper = mapper;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs"
new file mode 100644
index 0000000..5747dac
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs"
@@ -0,0 +1,27 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_IStockService;
+
+namespace WIDESEA_StockService
+{
+    public class StockSerivce:IStockService
+    {
+        public IStockInfoDetailService StockInfoDetailService { get; }
+
+        public IStockInfoService StockInfoService { get; }
+        public IStockInfoDetail_HtyService StockInfoDetail_HtyService { get; }
+
+        public IStockInfo_HtyService StockInfo_HtyService { get; }
+
+        public StockSerivce(IStockInfoDetailService stockInfoDetailService, IStockInfoService stockInfoService, IStockInfoDetail_HtyService stockInfoDetail_HtyService, IStockInfo_HtyService stockInfo_HtyService)
+        {
+            StockInfoDetailService = stockInfoDetailService;
+            StockInfoService = stockInfoService;
+            StockInfoDetail_HtyService = stockInfoDetail_HtyService;
+            StockInfo_HtyService = stockInfo_HtyService;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs"
new file mode 100644
index 0000000..7f7fcea
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs"
@@ -0,0 +1,101 @@
+锘縰sing SqlSugar;
+using System.Dynamic;
+using System.Reflection;
+using WIDESEA_Common.LocationEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Helper;
+//using WIDESEA_Core.HostedService;
+using WIDESEA_Core.Utilities;
+using WIDESEA_DTO.Stock;
+using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_StockService
+{
+    public partial class StockViewService : IStockViewService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly SqlSugarClient _dbBase;
+
+        public StockViewService(IUnitOfWorkManage unitOfWorkManage)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+            _dbBase = unitOfWorkManage.GetDbClient();
+        }
+
+        public virtual PageGridData<StockViewDTO> GetPageData(PageDataOptions options)
+        {
+            string where = options.ValidatePageOptions(typeof(StockViewDTO).GetProperties());
+            //鑾峰彇鎺掑簭瀛楁
+            //Dictionary<string, OrderByType> orderbyDic = options.GetPageDataSort(typeof(StockViewDTO).GetProperties());
+            //List<OrderByModel> orderByModels = new List<OrderByModel>();
+            //foreach (var item in orderbyDic)
+            //{
+            //    OrderByModel orderByModel = new OrderByModel()
+            //    {
+            //        FieldName = item.Key,
+            //        OrderByType = item.Value
+            //    };
+            //    orderByModels.Add(orderByModel);
+            //}
+            int totalCount = 0;
+
+            ISugarQueryable<Dt_StockInfo> sugarQueryable1 = _dbBase.Queryable<Dt_StockInfo>();
+            ISugarQueryable<Dt_LocationInfo> sugarQueryable = _dbBase.Queryable<Dt_LocationInfo>();
+            ISugarQueryable<Dt_StockInfoDetail> sugarQueryable2 = _dbBase.Queryable<Dt_StockInfoDetail>();
+
+
+            List<StockViewDTO> list = sugarQueryable1.InnerJoin(sugarQueryable, (b, a) => a.LocationCode == b.LocationCode).WhereIF(!string.IsNullOrEmpty(where), where).Select((b, a) => new StockViewDTO
+            {
+                LocationCode = b.LocationCode,
+                Column = a.Column,
+                CreateDate = b.CreateDate,
+                Creater = b.Creater,
+                Depth = a.Depth,
+                EnalbeStatus = a.EnableStatus,
+                Layer = a.Layer,
+                LocationName = a.LocationName,
+                LocationStatus = a.LocationStatus,
+                LocationType = a.LocationType,
+                Modifier = b.Modifier,
+                ModifyDate = b.ModifyDate,
+                PalletCode = b.PalletCode,
+                StockRemark = b.Remark,
+                RoadwayNo = a.RoadwayNo,
+                Row = a.Row,
+                StockId = b.Id,
+                StockStatus = b.StockStatus,
+                Details = b.Details,
+            }).ToPageList(options.Page, options.Rows, ref totalCount);
+
+
+            return new PageGridData<StockViewDTO>(totalCount, list);
+
+        }
+
+        public virtual object GetDetailPage(PageDataOptions pageData)
+        {
+            Type t = typeof(StockViewDTO);
+
+            if (pageData.Value == null) return new PageGridData<object>(total: 0, null);
+            string keyName = t.GetKeyName();
+            ////鐢熸垚鏌ヨ鏉′欢
+            //Expression<Func<TEntity, bool>> whereExpression = keyName.CreateExpression<TEntity>(pageData.Value, LinqExpressionType.Equal);
+            int totalCount = 0;
+            PropertyInfo? propertyInfo = t.GetProperties().FirstOrDefault(x => x.GetCustomAttribute<Navigate>() != null);
+            if (propertyInfo != null)
+            {
+                Type detailType = propertyInfo.PropertyType.GetGenericArguments()[0];
+                Navigate? navigate = propertyInfo.GetCustomAttribute<Navigate>();
+                if (navigate != null)
+                {
+                    List<ExpandoObject> list = _dbBase.Queryable(detailType.Name, "detail").Where(navigate.GetName(), "=", pageData.Value).ToPageList(pageData.Page, pageData.Rows, ref totalCount);
+                    return new PageGridData<ExpandoObject>(totalCount, list);
+                }
+            }
+            return new PageGridData<object>(total: 0, null);
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_StockService/WIDESEA_StockService.csproj" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_StockService/WIDESEA_StockService.csproj"
new file mode 100644
index 0000000..aa7acf1
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_StockService/WIDESEA_StockService.csproj"
@@ -0,0 +1,14 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_IRecordService\WIDESEA_IRecordService.csproj" />
+    <ProjectReference Include="..\WIDESEA_IStockService\WIDESEA_IStockService.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryListService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryListService.cs"
new file mode 100644
index 0000000..5f574a4
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryListService.cs"
@@ -0,0 +1,21 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_ISystemService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_SystemService
+{
+    public class Sys_DictionaryListService : ServiceBase<Sys_DictionaryList, IRepository<Sys_DictionaryList>>, ISys_DictionaryListService
+    {
+        public Sys_DictionaryListService(IRepository<Sys_DictionaryList> BaseDal) : base(BaseDal)
+        {
+        }
+
+        public IRepository<Sys_DictionaryList> Repository => BaseDal;
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs"
new file mode 100644
index 0000000..4e2449d
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs"
@@ -0,0 +1,224 @@
+锘縰sing Newtonsoft.Json;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Information;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common.CommonEnum;
+using WIDESEA_Common.LocationEnum;
+using WIDESEA_Common.OrderEnum;
+using WIDESEA_Common.StockEnum;
+using WIDESEA_Common.TaskEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Caches;
+using WIDESEA_Core.DB;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Utilities;
+using WIDESEA_DTO.System;
+using WIDESEA_ISystemService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_SystemService
+{
+    public class Sys_DictionaryService : ServiceBase<Sys_Dictionary, IRepository<Sys_Dictionary>>, ISys_DictionaryService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly ICacheService _cacheService;
+
+        public Sys_DictionaryService(IRepository<Sys_Dictionary> BaseDal, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+            _cacheService = cacheService;
+        }
+
+        public IRepository<Sys_Dictionary> Repository => BaseDal;
+
+        public override WebResponseContent AddData(SaveModel saveModel)
+        {
+            string validResult = typeof(Sys_Dictionary).ValidateDicInEntity(saveModel.MainData, true, TProperties);
+
+            if (!string.IsNullOrEmpty(validResult))
+            {
+                return WebResponseContent.Instance.Error(validResult);
+            }
+
+            Sys_Dictionary dictionary = saveModel.MainData.DicToModel<Sys_Dictionary>();
+            if (!string.IsNullOrEmpty(_cacheService.Get(dictionary.DicNo)))
+                _cacheService.Remove(dictionary.DicNo);
+            return base.AddData(saveModel);
+        }
+
+        public override WebResponseContent UpdateData(SaveModel saveModel)
+        {
+            Sys_Dictionary dictionary = saveModel.MainData.DicToModel<Sys_Dictionary>();
+            _cacheService.Remove(dictionary.DicNo);
+            return base.UpdateData(saveModel);
+        }
+
+        public IEnumerable<Sys_Dictionary> GetDictionaries(IEnumerable<string> dicNos, bool executeSql = true)
+        {
+            List<Sys_Dictionary> Dictionaries = GetDictionaries(dicNos.ToList());
+
+            foreach (var item in Dictionaries)
+            {
+                if (executeSql)
+                {
+                    //  2020.05.01澧炲姞鏍规嵁鐢ㄦ埛淇℃伅鍔犺浇瀛楀吀鏁版嵁婧恠ql
+                    string sql = item.Sql;
+                    if (!string.IsNullOrEmpty(sql))
+                    {
+                        item.DicList = Query(sql);
+                    }
+                }
+            }
+
+            return Dictionaries;
+        }
+
+        List<Sys_DictionaryList> Query(string sql)
+        {
+            try
+            {
+                return BaseDal.QueryDynamicDataBySql(sql, null).Select(s => new Sys_DictionaryList()
+                {
+                    DicName = s.value,
+                    DicValue = s.key.ToString()
+                }).ToList();
+            }
+            catch (Exception ex)
+            {
+                return new List<Sys_DictionaryList>();
+            }
+        }
+
+        private List<Sys_Dictionary> GetDictionaries(List<string> dicNos)
+        {
+            //base.QueryData().ToList();
+            List<Sys_Dictionary> _dictionaries = Db.Queryable<Sys_Dictionary>().Where(x => x.Enable == 1 && dicNos.Contains(x.DicNo)).Includes(x => x.DicList).ToList();
+            return _dictionaries;
+        }
+
+        public List<VueDictionaryDTO> GetVueDictionary(string[] dicNos)
+        {
+            if (dicNos == null || dicNos.Count() == 0) return new List<VueDictionaryDTO>();
+            List<VueDictionaryDTO> vueDictionaryDTOs = new List<VueDictionaryDTO>();
+
+            List<string> cacheDicNos = new List<string>();
+            foreach (string n in dicNos)
+            {
+                string str = _cacheService.Get(n);
+                if (!string.IsNullOrEmpty(str))
+                {
+                    VueDictionaryDTO? vueDictionary = JsonConvert.DeserializeObject<VueDictionaryDTO>(str);
+
+                    if (vueDictionary != null)
+                    {
+                        vueDictionaryDTOs.Add(vueDictionary);
+                        cacheDicNos.Add(n);
+                    }
+                }
+            }
+            if (dicNos.Where(x => !cacheDicNos.Contains(x)).Count() > 0)
+            {
+                List<VueDictionaryDTO> selectDics = GetDictionaries(dicNos.Where(x => !cacheDicNos.Contains(x))).Select(s => new VueDictionaryDTO
+                {
+                    DicNo = s.DicNo,
+                    Config = s.Config,
+                    //dbSql = s.Sql,
+                    Data = s.DicList.OrderByDescending(o => o.OrderNo).Select(list => new { key = list.DicValue, value = list.DicName }),
+                    SaveCache = false
+                }).ToList();
+
+                foreach (var item in selectDics)
+                {
+                    if (!_cacheService.Exists(item.DicNo) && item.SaveCache)
+                    {
+                        _cacheService.Add(item.DicNo, item.Serialize());
+                    }
+                }
+                vueDictionaryDTOs.AddRange(selectDics);
+            }
+
+            //object GetSourceData(string dicNo, string dbSql, object data)
+            //{
+            //    if (string.IsNullOrEmpty(dbSql))
+            //    {
+            //        return data;
+            //    }
+            //    return BaseDal.QueryObjectDataBySql(dbSql, null);
+            //}
+            //List<VueDictionaryDTO> vueDictionaryDTOs = dicConfig.Select(item => new VueDictionaryDTO
+            //{
+            //    DicNo = item.dicNo,
+            //    Config = item.config,
+            //    Data = GetSourceData(item.dicNo, item.dbSql, item.list)
+            //}).ToList();
+
+            try
+            {
+                List<string> dicList = dicNos.ToList();
+                if (dicNos.Where(x => !cacheDicNos.Contains(x)).Count() > 0)
+                {
+                    string str = AppSettings.Configuration["dics"];
+                    if (!string.IsNullOrEmpty(str))
+                    {
+                        List<string> cusDics = new List<string>();
+
+                        List<string> dics = str.Split(",").ToList();
+
+                        foreach (var item in dics)
+                        {
+                            if (dicNos.Contains(item) && !cacheDicNos.Contains(item))
+                            {
+                                dicList.Remove(item);
+                                cusDics.Add(item);
+                            }
+                        }
+
+                        foreach (var item in cusDics)
+                        {
+                            VueDictionaryDTO vueDictionaryDTO = GetVueDictionary(item.Trim());
+                            if (vueDictionaryDTO != null)
+                            {
+                                vueDictionaryDTOs.Add(vueDictionaryDTO);
+                                if (!_cacheService.Exists(item) && vueDictionaryDTO.SaveCache)
+                                {
+                                    _cacheService.Add(item, vueDictionaryDTO.Serialize());
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            catch
+            {
+
+            }
+            return vueDictionaryDTOs;
+        }
+
+        private VueDictionaryDTO GetVueDictionary(string key)
+        {
+            VueDictionaryDTO result = null;
+            try
+            {
+                switch (key)
+                {
+                    default:
+                        return result;
+                }
+            }
+            catch (Exception ex)
+            {
+                return null;
+            }
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_LogService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_LogService.cs"
new file mode 100644
index 0000000..6b8859f
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_LogService.cs"
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_ISystemService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_SystemService
+{
+    public class Sys_LogService : ServiceBase<Sys_Log, IRepository<Sys_Log>>, ISys_LogService
+    {
+        public Sys_LogService(IRepository<Sys_Log> BaseDal) : base(BaseDal)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_MenuService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_MenuService.cs"
new file mode 100644
index 0000000..195b7bb
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_MenuService.cs"
@@ -0,0 +1,415 @@
+锘縰sing AutoMapper;
+using SqlSugar;
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO.System;
+using WIDESEA_ISystemService;
+using WIDESEA_Model;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_SystemService
+{
+    public class Sys_MenuService : ServiceBase<Sys_Menu, IRepository<Sys_Menu>>, ISys_MenuService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly IMapper _mapper;
+
+        public IRepository<Sys_Menu> Repository => BaseDal;
+
+        public Sys_MenuService(IRepository<Sys_Menu> BaseDal, IUnitOfWorkManage unitOfWorkManage, IMapper mapper) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+            _mapper = mapper;
+        }
+
+        /// <summary>
+        /// 鑾峰彇褰撳墠鐢ㄦ埛鎵�鏈夎彍鍗曚笌鏉冮檺
+        /// </summary>
+        /// <returns></returns>
+        public object GetCurrentMenuActionList()
+        {
+            object obj = GetMenuActionList(App.User.RoleId);
+            if (obj is IEnumerable<object> list)
+            {
+                if (list.Any())
+                {
+                    return obj;
+                }
+                else
+                {
+                    return WebResponseContent.Instance.Error("鏈幏鍙栧埌鑿滃崟淇℃伅");
+                }
+            }
+            return obj;
+        }
+
+        public List<MenuDTO> GetAllPDAMenu()
+        {
+            List<Sys_Menu> menus = BaseDal.QueryData(x => (x.Enable == 1 || x.Enable == 2) && x.MenuType == 1).OrderByDescending(a => a.OrderNo).ThenByDescending(q => q.ParentId).ToList();
+            List<MenuDTO> _menus = _mapper.Map<List<MenuDTO>>(menus);
+            _menus.ForEach(x =>
+            {
+                if (!string.IsNullOrEmpty(x.Auth) && x.Auth.Length > 10)
+                {
+                    try
+                    {
+                        x.Actions = x.Auth.DeserializeObject<List<ActionDTO>>();
+                    }
+                    catch { }
+                }
+                x.Actions ??= new List<ActionDTO>();
+            });
+            string test = _menus.Serialize();
+            return _menus;
+        }
+
+        private List<Permissions> MenuActionToArray(List<Permissions> permissions)
+        {
+            permissions.ForEach(x =>
+            {
+                try
+                {
+                    x.UserAuthArr = string.IsNullOrEmpty(x.UserAuth)
+                    ? new string[0]
+                    : x.UserAuth.DeserializeObject<List<ActionDTO>>().Select(s => s.Value).ToArray();
+                }
+                catch { }
+                finally
+                {
+                    if (x.UserAuthArr == null)
+                    {
+                        x.UserAuthArr = new string[0];
+                    }
+                }
+            });
+            return permissions;
+        }
+
+        private List<Permissions> ActionToArray(List<Permissions> permissions)
+        {
+            permissions.ForEach(x =>
+            {
+                try
+                {
+                    var menuAuthArr = x.MenuAuth.DeserializeObject<List<ActionDTO>>();
+                    x.UserAuthArr = string.IsNullOrEmpty(x.UserAuth)
+                    ? new string[0]
+                    : x.UserAuth.Split(",").Where(c => menuAuthArr.Any(m => m.Value == c)).ToArray();
+
+                }
+                catch { }
+                finally
+                {
+                    if (x.UserAuthArr == null)
+                    {
+                        x.UserAuthArr = new string[0];
+                    }
+                }
+            });
+            return permissions;
+        }
+
+        /// <summary>
+        /// 鑾峰彇瑙掕壊鏉冮檺鏃堕�氳繃瀹夊叏瀛楀吀閿佸畾鐨勮鑹瞚d
+        /// </summary>
+        private static ConcurrentDictionary<string, object> objKeyValue = new ConcurrentDictionary<string, object>();
+        public List<Permissions> GetPermissions(int roleId)
+        {
+            if (App.User.IsRoleIdSuperAdmin(roleId))
+            {
+                //2020.12.27澧炲姞鑿滃崟鐣岄潰涓婁笉鏄剧ず锛屼絾鍙互鍒嗛厤鏉冮檺
+                var permissions = BaseDal.QueryData(x => x.Enable == 1 || x.Enable == 2)
+                    .Select(a => new Permissions
+                    {
+                        MenuId = a.MenuId,
+                        ParentId = a.ParentId,
+                        TableName = (a.TableName ?? "").ToLower(),
+                        UserAuth = a.Auth,
+                        MenuType = a.MenuType
+                    }).ToList();
+                return MenuActionToArray(permissions);
+            }
+
+            //閿佸畾姣忎釜瑙掕壊锛岄�氳繃瀹夊叏瀛楀吀鍑忓皯閿佺矑搴︼紝鍚﹀垯澶氫釜鍚屾椂瑙掕壊鑾峰彇缂撳瓨浼氬鑷撮樆濉�
+            object objId = objKeyValue.GetOrAdd(roleId.ToString(), new object());
+            //閿佸畾姣忎釜瑙掕壊
+            lock (objId)
+            {
+                //娌℃湁redis/memory缂撳瓨瑙掕壊鐨勭増鏈彿鎴栦笌褰撳墠鏈嶅姟鍣ㄧ殑瑙掕壊鐗堟湰鍙蜂笉鍚屾椂锛屽埛鏂扮紦瀛�
+
+                List<Permissions> _permissions = BaseDal.QueryTabs<Sys_Menu, Sys_RoleAuth, Permissions>((a, b) => new object[] { JoinType.Inner, a.MenuId == b.MenuId }, (a, b) => new Permissions { MenuId = a.MenuId, ParentId = a.ParentId, TableName = (a.TableName ?? "").ToLower(), MenuAuth = a.Auth, UserAuth = b.AuthValue ?? "", MenuType = a.MenuType }, (a, b) => b.RoleId == roleId, x => true);
+
+                ActionToArray(_permissions);
+
+                return _permissions;
+            }
+        }
+
+        public List<MenuDTO> GetAllMenuPDA()
+        {
+            if (App.User.IsRoleIdSuperAdmin(App.User.RoleId))
+            {
+                return GetAllPDAMenu();
+            }
+            List<int> menuIds = GetPermissions(App.User.RoleId).Select(x => x.MenuId).ToList();
+            return GetAllPDAMenu().Where(x => menuIds.Contains(x.MenuId)).ToList();
+        }
+
+        /// <summary>
+        /// 鑾峰彇PDA棣栭〉浠撳簱鏉冮檺
+        /// </summary>
+        /// <returns></returns>
+        public object GetTreeMenuPDAStash(int ParentId)
+        {
+            List<MenuDTO> _menus = GetAllMenuPDA().Where(x => x.ParentId == ParentId).ToList();
+            return _menus;
+        }
+
+        public List<MenuDTO> GetAllMenu()
+        {
+            List<Sys_Menu> menus = BaseDal.QueryData(x => (x.Enable == 1 || x.Enable == 2) && x.MenuType == App.User.MenuType).OrderByDescending(a => a.OrderNo).ThenByDescending(q => q.ParentId).ToList();
+            List<MenuDTO> _menus = _mapper.Map<List<MenuDTO>>(menus);
+            _menus.ForEach(x =>
+            {
+                if (!string.IsNullOrEmpty(x.Auth) && x.Auth.Length > 10)
+                {
+                    try
+                    {
+                        x.Actions = x.Auth.DeserializeObject<List<ActionDTO>>();
+                    }
+                    catch { }
+                }
+                x.Actions ??= new List<ActionDTO>();
+            });
+            string test = _menus.Serialize();
+            return _menus;
+        }
+
+        public object GetSuperAdminMenu()
+        {
+            return GetAllMenu().Select(x =>
+                  new
+                  {
+                      id = x.MenuId,
+                      name = x.MenuName,
+                      url = x.Url,
+                      parentId = x.ParentId,
+                      icon = x.Icon,
+                      x.Enable,
+                      x.TableName, // 2022.03.26澧炵Щ鍔ㄧ鍔犺彍鍗曠被鍨�
+                      permission = x.Actions.Select(s => s.Value).ToArray()
+                  }).ToList();
+        }
+
+        public object GetMenuByRoleId(int roleId)
+        {
+            var menu = from a in GetPermissions(roleId)
+                       join b in GetAllMenu()
+                       on a.MenuId equals b.MenuId
+                       orderby b.OrderNo descending
+                       select new
+                       {
+                           id = a.MenuId,
+                           name = b.MenuName,
+                           url = b.Url,
+                           parentId = b.ParentId,
+                           icon = b.Icon,
+                           b.Enable,
+                           b.TableName,
+                           permission = a.UserAuthArr
+                       };
+            return menu.ToList();
+        }
+
+        /// <summary>
+        /// 鏍规嵁瑙掕壊ID鑾峰彇鑿滃崟涓庢潈闄�
+        /// </summary>
+        /// <param name="roleId"></param>
+        /// <returns></returns>
+        public object GetMenuActionList(int roleId)
+        {
+            if (App.User.IsRoleIdSuperAdmin(roleId))
+            {
+                return GetSuperAdminMenu();
+            }
+            return GetMenuByRoleId(roleId);
+        }
+
+
+        public List<MenuDTO> GetUserMenuList(int roleId)
+        {
+            if (App.User.IsRoleIdSuperAdmin(roleId))
+            {
+                return GetAllMenu();
+            }
+            List<int> menuIds = GetPermissions(roleId).Select(x => x.MenuId).ToList();
+            return GetAllMenu().Where(x => menuIds.Contains(x.MenuId)).ToList();
+        }
+
+        public List<MenuDTO> GetUserMenuListPDA(int roleId)
+        {
+            if (App.User.IsRoleIdSuperAdmin(roleId))
+            {
+                return GetAllMenuPDA();
+            }
+            List<int> menuIds = GetPermissions(roleId).Select(x => x.MenuId).ToList();
+            return GetAllMenuPDA().Where(x => menuIds.Contains(x.MenuId)).ToList();
+        }
+
+        public List<ActionDTO> GetActions(int menuId, List<ActionDTO> menuActions, List<Permissions> permissions, int roleId)
+        {
+            if (App.User.IsRoleIdSuperAdmin(roleId))
+            {
+                return menuActions;
+            }
+
+            return menuActions.Where(p => permissions
+                 .Exists(w => menuId == w.MenuId
+                 && w.UserAuthArr.Contains(p.Value)))
+                  .ToList();
+        }
+
+        public object GetMenu(List<int> menuIds)
+        {
+            return BaseDal.QueryData(x => menuIds.Contains(x.MenuId)).Select(a =>
+             new
+             {
+                 id = a.MenuId,
+                 parentId = a.ParentId,
+                 name = a.MenuName,
+                 a.MenuType,
+                 a.OrderNo
+             }).OrderByDescending(a => a.OrderNo)
+                .ThenByDescending(q => q.parentId).ToList();
+        }
+
+        /// <summary>
+        /// 缂栬緫淇敼鑿滃崟鏃�,鑾峰彇鎵�鏈夎彍鍗�
+        /// </summary>
+        /// <returns></returns>
+        public object GetMenu()
+        {
+            if (App.User.IsRoleIdSuperAdmin(App.User.RoleId))
+            {
+                List<int> menuIds = BaseDal.QueryData().Select(x => x.MenuId).ToList();
+                return GetMenu(menuIds);
+            }
+            else
+            {
+                List<int> menuIds = GetPermissions(App.User.RoleId).Select(x => x.MenuId).ToList();
+                return GetMenu(menuIds);
+            }
+        }
+
+        /// <summary>
+        /// 缂栬緫鑿滃崟鏃讹紝鑾峰彇鑿滃崟淇℃伅
+        /// </summary>
+        /// <param name="menuId"></param>
+        /// <returns></returns>
+        public object GetTreeItem(int menuId)
+        {
+            var sysMenu = BaseDal.QueryData(x => x.MenuId == menuId)
+                .Select(
+                p => new
+                {
+                    p.MenuId,
+                    p.ParentId,
+                    p.MenuName,
+                    p.Url,
+                    p.Auth,
+                    p.OrderNo,
+                    p.Icon,
+                    p.Enable,
+                    // 2022.03.26澧炵Щ鍔ㄧ鍔犺彍鍗曠被鍨�
+                    MenuType = p.MenuType,
+                    p.CreateDate,
+                    p.Creater,
+                    p.TableName,
+                    p.ModifyDate
+                }).FirstOrDefault();
+                return sysMenu;
+        }
+
+        /// <summary>
+        /// 鏂板缓鎴栫紪杈戣彍鍗�
+        /// </summary>
+        /// <param name="menu"></param>
+        /// <returns></returns>
+        public WebResponseContent Save(Sys_Menu menu)
+        {
+            WebResponseContent webResponse = new WebResponseContent();
+            if (menu == null) return webResponse.Error("娌℃湁鑾峰彇鍒版彁浜ょ殑鍙傛暟");
+            if (menu.MenuId > 0 && menu.MenuId == menu.ParentId) return webResponse.Error("鐖剁骇ID涓嶈兘鏄綋鍓嶈彍鍗曠殑ID");
+            try
+            {
+                //webResponse = menu.ValidationEntity(x => new { x.MenuName, x.TableName });
+                //if (!webResponse.Status) return webResponse;
+                if (menu.TableName != "/" && menu.TableName != ".")
+                {
+                    // 2022.03.26澧炵Щ鍔ㄧ鍔犺彍鍗曠被鍨嬪垽鏂�
+                    Sys_Menu sysMenu = BaseDal.QueryFirst(x => x.TableName == menu.TableName);
+                    if (sysMenu != null)
+                    {
+                        if (sysMenu.MenuType == menu.MenuType)
+                        {
+                            if ((menu.MenuId > 0 && sysMenu.MenuId != menu.MenuId)
+                            || menu.MenuId <= 0)
+                            {
+                                return webResponse.Error($"瑙嗗浘/琛ㄥ悕銆恵menu.TableName}銆戝凡琚叾浠栬彍鍗曚娇鐢�");
+                            }
+                        }
+                    }
+                }
+                bool _changed = false;
+                if (menu.MenuId <= 0)
+                {
+                    int id = BaseDal.AddData(menu);
+                    menu.MenuId = id;
+                }
+                else
+                {
+                    //2020.05.07鏂板绂佹閫夋嫨涓婄骇瑙掕壊涓鸿嚜宸�
+                    if (menu.MenuId == menu.ParentId)
+                    {
+                        return webResponse.Error($"鐖剁骇id涓嶈兘涓鸿嚜宸�");
+                    }
+                    if (BaseDal.QueryFirst(x => x.ParentId == menu.MenuId && menu.ParentId == x.MenuId) != null)
+                    {
+                        return webResponse.Error($"涓嶈兘閫夋嫨姝ょ埗绾d锛岄�夋嫨鐨勭埗绾d涓庡綋鍓嶈彍鍗曞舰鎴愪緷璧栧叧绯�");
+                    }
+
+                    _changed = BaseDal.QueryData(c => c.MenuId == menu.MenuId).Select(s => s.Auth).FirstOrDefault() != menu.Auth;
+
+                    BaseDal.UpdateData(menu);
+                }
+                webResponse.OK("淇濆瓨鎴愬姛", menu);
+            }
+            catch (Exception ex)
+            {
+                webResponse.Error(ex.Message);
+            }
+            return webResponse;
+
+        }
+
+        public WebResponseContent DelMenu(int menuId)
+        {
+            WebResponseContent webResponse = new WebResponseContent();
+            if (BaseDal.QueryFirst(x => x.ParentId == menuId) != null)
+            {
+                return webResponse = WebResponseContent.Instance.Error("褰撳墠鑿滃崟瀛樺湪瀛愯彍鍗�,璇峰厛鍒犻櫎瀛愯彍鍗�!");
+            }
+            BaseDal.DeleteDataById(menuId);
+
+            return webResponse = WebResponseContent.Instance.OK("鍒犻櫎鎴愬姛");
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_RoleAuthService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_RoleAuthService.cs"
new file mode 100644
index 0000000..4c64284
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_RoleAuthService.cs"
@@ -0,0 +1,21 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_ISystemService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_SystemService
+{
+    public class Sys_RoleAuthService : ServiceBase<Sys_RoleAuth, IRepository<Sys_RoleAuth>>, ISys_RoleAuthService
+    {
+        public Sys_RoleAuthService(IRepository<Sys_RoleAuth> BaseDal) : base(BaseDal)
+        {
+        }
+
+        public IRepository<Sys_RoleAuth> Repository => BaseDal;
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_RoleService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_RoleService.cs"
new file mode 100644
index 0000000..fb668b1
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_RoleService.cs"
@@ -0,0 +1,358 @@
+锘縰sing Microsoft.AspNetCore.DataProtection.KeyManagement;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_DTO.System;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.HttpContextUser;
+using WIDESEA_ISystemService;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.System;
+using WIDESEA_Core.Helper;
+//using WIDESEA_Core.HostedService;
+
+namespace WIDESEA_SystemService
+{
+    public class Sys_RoleService : ServiceBase<Sys_Role, IRepository<Sys_Role>>, ISys_RoleService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly ISys_MenuService _MenuService;
+        private readonly ISys_RoleAuthService _RoleAuthService;
+
+        public IRepository<Sys_Role> Repository => BaseDal;
+
+        public Sys_RoleService(IRepository<Sys_Role> BaseDal, ISys_MenuService MenuService,  IUnitOfWorkManage unitOfWorkManage, ISys_RoleAuthService roleAuthService) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+            _MenuService = MenuService;
+            _RoleAuthService = roleAuthService;
+        }
+
+        public List<int> GetAllChildrenRoleId(int roleId)
+        {
+            return GetAllChildren(roleId).Select(x => x.Id).ToList();
+        }
+
+        public List<RoleNodes> GetAllChildren(int roleId)
+        {
+            if (roleId <= 0) return new List<RoleNodes>() { };
+            var roles = GetAllRoleId();
+            if (App.User.IsRoleIdSuperAdmin(roleId)) return roles;
+
+            var list = GetChildren(roles, roleId);
+            return list;
+        }
+
+        public List<RoleNodes> GetAllRoleId()
+        {
+            List<RoleNodes> roles = BaseDal.QueryData().Select(s => new RoleNodes() { Id = s.RoleId, ParentId = s.ParentId, RoleName = s.RoleName }).ToList();
+
+            return roles;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎵�鏈夊瓙鑺傜偣
+        /// </summary>
+        /// <param name="roleId"></param>
+        private List<RoleNodes> GetChildren(List<RoleNodes> roles, int roleId)
+        {
+            List<RoleNodes> rolesChildren = roles.Where(x => x.Id == roleId).Distinct().ToList();
+
+            for (int i = 0; i < rolesChildren.Count; i++)
+            {
+                RoleNodes node = rolesChildren[i];
+                var children = roles.Where(x => x.ParentId == node.Id && !rolesChildren.Any(c => c.Id == x.Id)).Distinct().ToList();
+                rolesChildren.AddRange(children);
+            }
+            return rolesChildren;
+        }
+
+        /// <summary>
+        /// 缂栬緫鏉冮檺鏃惰幏鍙栧綋鍓嶇敤鎴蜂笅鐨勬墍鏈夎鑹蹭笌褰撳墠鐢ㄦ埛鐨勮彍鍗曟潈闄�
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent GetCurrentTreePermission()
+        {
+            WebResponseContent content = GetCurrentUserTreePermission();
+            int roleId = App.User.RoleId;
+            return WebResponseContent.Instance.OK(null, new
+            {
+                tree = content.Data,
+                roles = GetAllChildren(roleId)
+            });
+        }
+
+        /// <summary>
+        /// 缂栬緫鏉冮檺鏃讹紝鑾峰彇褰撳墠鐢ㄦ埛鐨勬墍鏈夎彍鍗曟潈闄�
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent GetCurrentUserTreePermission()
+        {
+            return GetUserTreePermission(App.User.RoleId);
+        }
+
+        /// <summary>
+        /// 缂栬緫鏉冮檺鏃讹紝鑾峰彇鎸囧畾瑙掕壊鐨勬墍鏈夎彍鍗曟潈闄�
+        /// </summary>
+        /// <param name="roleId"></param>
+        /// <returns></returns>
+        public WebResponseContent GetUserTreePermission(int roleId)
+        {
+            if (!App.User.IsRoleIdSuperAdmin(roleId) && App.User.RoleId != roleId)
+            {
+                if (!(GetAllChildren(App.User.RoleId)).Exists(x => x.Id == roleId))
+                {
+                    return WebResponseContent.Instance.Error("娌℃湁鏉冮檺鑾峰彇姝よ鑹茬殑鏉冮檺淇℃伅");
+                }
+            }
+            //鑾峰彇鐢ㄦ埛鏉冮檺
+            List<Permissions> permissions = _MenuService.GetPermissions(roleId);
+            //鏉冮檺鐢ㄦ埛鏉冮檺鏌ヨ鎵�鏈夌殑鑿滃崟淇℃伅
+            List<MenuDTO> menus = _MenuService.GetUserMenuList(roleId);
+            //鑾峰彇褰撳墠鐢ㄦ埛鏉冮檺濡�:(Add,Search)瀵瑰簲鐨勬樉绀烘枃鏈俊鎭:Add锛氭坊鍔狅紝Search:鏌ヨ
+            var data = menus.Select(x => new
+            {
+                Id = x.MenuId,
+                Pid = x.ParentId,
+                Text = x.MenuName,
+                IsApp = x.MenuType == 1,
+                Actions = _MenuService.GetActions(x.MenuId, x.Actions, permissions, roleId)
+            });
+            return WebResponseContent.Instance.OK(null, data);
+        }
+        public WebResponseContent GetCurrentTreePermissionPDA()
+        {
+            WebResponseContent content = GetCurrentUserTreePermissionPDA();
+            int roleId = App.User.RoleId;
+            return WebResponseContent.Instance.OK(null, new
+            {
+                tree = content.Data,
+                roles = GetAllChildren(roleId)
+            });
+        }
+
+        /// <summary>
+        /// 缂栬緫鏉冮檺鏃讹紝鑾峰彇褰撳墠鐢ㄦ埛鐨勬墍鏈夎彍鍗曟潈闄�
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent GetCurrentUserTreePermissionPDA()
+        {
+            return GetUserTreePermissionPDA(App.User.RoleId);
+        }
+        public WebResponseContent GetUserTreePermissionPDA(int roleId)
+        {
+            if (!App.User.IsRoleIdSuperAdmin(roleId) && App.User.RoleId != roleId)
+            {
+                if (!(GetAllChildren(App.User.RoleId)).Exists(x => x.Id == roleId))
+                {
+                    return WebResponseContent.Instance.Error("娌℃湁鏉冮檺鑾峰彇姝よ鑹茬殑鏉冮檺淇℃伅");
+                }
+            }
+            //鑾峰彇鐢ㄦ埛鏉冮檺
+            List<Permissions> permissions = _MenuService.GetPermissions(roleId);
+            //鏉冮檺鐢ㄦ埛鏉冮檺鏌ヨ鎵�鏈夌殑鑿滃崟淇℃伅
+            List<MenuDTO> menus = _MenuService.GetUserMenuListPDA(roleId);
+
+            //鑾峰彇褰撳墠鐢ㄦ埛鏉冮檺濡�:(Add,Search)瀵瑰簲鐨勬樉绀烘枃鏈俊鎭:Add锛氭坊鍔狅紝Search:鏌ヨ
+            var data = menus.Where(x => x.MenuType == 1).Select(x => new
+            {
+                Id = x.MenuId,
+                Pid = x.ParentId,
+                Text = x.MenuName,
+                IsApp = x.MenuType == 1,
+                Actions = _MenuService.GetActions(x.MenuId, x.Actions, permissions, roleId)
+            });
+            return WebResponseContent.Instance.OK(null, data);
+        }
+
+        /// <summary>
+        /// 淇濆瓨瑙掕壊鏉冮檺
+        /// </summary>
+        /// <param name="userPermissions"></param>
+        /// <param name="roleId"></param>
+        /// <returns></returns>
+        public WebResponseContent SavePermission(List<UserPermissionDTO> userPermissions, int roleId)
+        {
+            WebResponseContent content = new WebResponseContent();
+            string message = "";
+            try
+            {
+                if (!GetAllChildren(App.User.RoleId).Exists(x => x.Id == roleId))
+                    return WebResponseContent.Instance.Error("娌℃湁鏉冮檺淇敼姝よ鑹茬殑鏉冮檺淇℃伅");
+                //褰撳墠鐢ㄦ埛鐨勬潈闄�
+                List<Permissions> permissions = _MenuService.GetPermissions(App.User.RoleId);
+
+                List<int> menuIds = _MenuService.Repository.QueryData(x => x.MenuId, x => x.MenuType == 1);
+
+                List<int> originalMeunIds = new List<int>();
+                //琚垎閰嶈鑹茬殑鏉冮檺
+                List<Sys_RoleAuth> roleAuths = _RoleAuthService.Repository.QueryData(x => x.RoleId == roleId && menuIds.Contains(x.MenuId));
+                List<Sys_RoleAuth> updateAuths = new List<Sys_RoleAuth>();
+                foreach (UserPermissionDTO x in userPermissions)
+                {
+                    Permissions per = permissions.FirstOrDefault(p => p.MenuId == x.Id);
+                    //涓嶈兘鍒嗛厤瓒呰繃褰撳墠鐢ㄦ埛鐨勬潈闄�
+                    if (per == null) continue;
+                    //per.UserAuthArr.Contains(a.Value)鏍¢獙鏉冮檺鑼冨洿
+                    string[] arr = x.Actions == null || x.Actions.Count == 0
+                      ? new string[0]
+                      : x.Actions.Where(a => per.UserAuthArr.Contains(a.Value))
+                      .Select(s => s.Value).ToArray();
+
+                    //濡傛灉褰撳墠鏉冮檺娌℃湁鍒嗛厤杩囷紝璁剧疆Auth_Id榛樿涓�0锛岃〃绀烘柊澧炵殑鏉冮檺
+                    var auth = roleAuths.Where(r => r.MenuId == x.Id).Select(s => new { s.AuthId, s.AuthValue, s.MenuId }).FirstOrDefault();
+                    string newAuthValue = string.Join(",", arr);
+                    //鏉冮檺娌℃湁鍙戠敓鍙樺寲鍒欎笉澶勭悊
+                    if (auth == null || auth.AuthValue != newAuthValue)
+                    {
+                        updateAuths.Add(new Sys_RoleAuth()
+                        {
+                            RoleId = roleId,
+                            MenuId = x.Id,
+                            AuthValue = string.Join(",", arr),
+                            AuthId = auth == null ? 0 : auth.AuthId,
+                            ModifyDate = DateTime.Now,
+                            Modifier = App.User.UserName,
+                            CreateDate = DateTime.Now,
+                            Creater = App.User.UserName
+                        });
+                    }
+                    else
+                    {
+                        originalMeunIds.Add(auth.MenuId);
+                    }
+
+                }
+                //鏇存柊鏉冮檺
+                _RoleAuthService.Repository.UpdateData(updateAuths);
+                //鏂板鐨勬潈闄�
+                _RoleAuthService.Repository.AddData(updateAuths);
+
+                //鑾峰彇鏉冮檺鍙栨秷鐨勬潈闄�
+                int[] authIds = roleAuths.Where(x => userPermissions.Select(u => u.Id)
+                 .ToList().Contains(x.MenuId) || originalMeunIds.Contains(x.MenuId))
+                .Select(s => s.AuthId)
+                .ToArray();
+                List<Sys_RoleAuth> delAuths = roleAuths.Where(x => x.AuthValue != "" && !authIds.Contains(x.AuthId)).ToList();
+                delAuths.ForEach(x =>
+                {
+                    x.AuthValue = "";
+                });
+                //灏嗗彇娑堢殑鏉冮檺璁剧疆涓�""
+                _RoleAuthService.Repository.DeleteData(delAuths);
+
+                int addCount = updateAuths.Where(x => x.AuthId <= 0).Count();
+                int updateCount = updateAuths.Where(x => x.AuthId > 0).Count();
+
+                string _version = DateTime.Now.ToString("yyyyMMddHHMMssfff");
+
+
+                content.OK($"淇濆瓨鎴愬姛锛氭柊澧炲姞閰嶈彍鍗曟潈闄恵addCount}鏉�,鏇存柊鑿滃崟{updateCount}鏉�,鍒犻櫎鏉冮檺{delAuths.Count}鏉�");
+            }
+            catch (Exception ex)
+            {
+                message = "寮傚父淇℃伅锛�" + ex.Message + ex.StackTrace + ",";
+            }
+
+            return content;
+        }
+
+        /// <summary>
+        /// 淇濆瓨瑙掕壊鏉冮檺
+        /// </summary>
+        /// <param name="userPermissions"></param>
+        /// <param name="roleId"></param>
+        /// <returns></returns>
+        public WebResponseContent SavePermissionPDA(List<UserPermissionDTO> userPermissions, int roleId)
+        {
+            WebResponseContent content = new WebResponseContent();
+            string message = "";
+            try
+            {
+                if (!GetAllChildren(App.User.RoleId).Exists(x => x.Id == roleId))
+                    return WebResponseContent.Instance.Error("娌℃湁鏉冮檺淇敼姝よ鑹茬殑鏉冮檺淇℃伅");
+                //褰撳墠鐢ㄦ埛鐨勬潈闄�
+                List<Permissions> permissions = _MenuService.GetPermissions(App.User.RoleId);
+
+                List<int> originalMeunIds = new List<int>();
+
+                List<int> menuIds = _MenuService.Repository.QueryData(x => x.MenuId, x => x.MenuType == 1);
+
+                //琚垎閰嶈鑹茬殑鏉冮檺
+                List<Sys_RoleAuth> roleAuths = _RoleAuthService.Repository.QueryData(x => x.RoleId == roleId && menuIds.Contains(x.MenuId));
+                List<Sys_RoleAuth> updateAuths = new List<Sys_RoleAuth>();
+                foreach (UserPermissionDTO x in userPermissions)
+                {
+                    Permissions per = permissions.FirstOrDefault(p => p.MenuId == x.Id);
+                    //涓嶈兘鍒嗛厤瓒呰繃褰撳墠鐢ㄦ埛鐨勬潈闄�
+                    if (per == null) continue;
+                    //per.UserAuthArr.Contains(a.Value)鏍¢獙鏉冮檺鑼冨洿
+                    string[] arr = x.Actions == null || x.Actions.Count == 0
+                      ? new string[0]
+                      : x.Actions.Where(a => per.UserAuthArr.Contains(a.Value))
+                      .Select(s => s.Value).ToArray();
+
+                    //濡傛灉褰撳墠鏉冮檺娌℃湁鍒嗛厤杩囷紝璁剧疆Auth_Id榛樿涓�0锛岃〃绀烘柊澧炵殑鏉冮檺
+                    var auth = roleAuths.Where(r => r.MenuId == x.Id).Select(s => new { s.AuthId, s.AuthValue, s.MenuId }).FirstOrDefault();
+                    string newAuthValue = string.Join(",", arr);
+                    //鏉冮檺娌℃湁鍙戠敓鍙樺寲鍒欎笉澶勭悊
+                    if (auth == null || auth.AuthValue != newAuthValue)
+                    {
+                        updateAuths.Add(new Sys_RoleAuth()
+                        {
+                            RoleId = roleId,
+                            MenuId = x.Id,
+                            AuthValue = string.Join(",", arr),
+                            AuthId = auth == null ? 0 : auth.AuthId,
+                            ModifyDate = DateTime.Now,
+                            Modifier = App.User.UserName,
+                            CreateDate = DateTime.Now,
+                            Creater = App.User.UserName
+                        });
+                    }
+                    else
+                    {
+                        originalMeunIds.Add(auth.MenuId);
+                    }
+
+                }
+                //鏇存柊鏉冮檺
+                _RoleAuthService.Repository.UpdateData(updateAuths);
+                //鏂板鐨勬潈闄�
+                _RoleAuthService.Repository.AddData(updateAuths);
+
+                //鑾峰彇鏉冮檺鍙栨秷鐨勬潈闄�
+                int[] authIds = roleAuths.Where(x => userPermissions.Select(u => u.Id)
+                 .ToList().Contains(x.MenuId) || originalMeunIds.Contains(x.MenuId))
+                .Select(s => s.AuthId)
+                .ToArray();
+                List<Sys_RoleAuth> delAuths = roleAuths.Where(x => x.AuthValue != "" && !authIds.Contains(x.AuthId)).ToList();
+                delAuths.ForEach(x =>
+                {
+                    x.AuthValue = "";
+                });
+                //灏嗗彇娑堢殑鏉冮檺璁剧疆涓�""
+                _RoleAuthService.Repository.DeleteData(delAuths);
+
+                int addCount = updateAuths.Where(x => x.AuthId <= 0).Count();
+                int updateCount = updateAuths.Where(x => x.AuthId > 0).Count();
+
+                string _version = DateTime.Now.ToString("yyyyMMddHHMMssfff");
+
+
+                content.OK($"淇濆瓨鎴愬姛锛氭柊澧炲姞閰嶈彍鍗曟潈闄恵addCount}鏉�,鏇存柊鑿滃崟{updateCount}鏉�,鍒犻櫎鏉冮檺{delAuths.Count}鏉�");
+            }
+            catch (Exception ex)
+            {
+                message = "寮傚父淇℃伅锛�" + ex.Message + ex.StackTrace + ",";
+            }
+
+            return content;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_TenantService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_TenantService.cs"
new file mode 100644
index 0000000..9a7f4d9
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_TenantService.cs"
@@ -0,0 +1,82 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.AOP;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Seed;
+using WIDESEA_ISystemService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_SystemService
+{
+    public class Sys_TenantService : ServiceBase<Sys_Tenant, IRepository<Sys_Tenant>>, ISys_TenantService
+    {
+        private IUnitOfWorkManage _unitOfWorkManage;
+
+        public IRepository<Sys_Tenant> Repository => BaseDal;
+
+        public Sys_TenantService(IRepository<Sys_Tenant> BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+        }
+
+        public WebResponseContent InitTenantInfo(string tenantName, int tenantType)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                Sys_Tenant tenant = new Sys_Tenant()
+                {
+                    ConnectionString = TenantConst.DBConStr,
+                    DbType = 1,
+                    Status = 1,
+                    TenantName = tenantName,
+                    TenantType = tenantType,
+                    CreateDate = DateTime.Now,
+                    Creater = "1111"
+                };
+
+                int tenantId = BaseDal.Db.Insertable(tenant).ExecuteReturnIdentity();
+
+                tenant = BaseDal.QueryFirst(x => x.TenantId == tenantId);
+
+                tenant.ConnectionString = string.Format(TenantConst.DBConStr, ".", "Tenant_WMSDB_" + tenantId, "sa", "P@ssw0rd").EncryptDES(AppSecret.DB);
+
+                BaseDal.UpdateData(tenant);
+
+                InitTenantDb(tenant);
+                content = WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
+
+        public void InitTenantDb(Sys_Tenant tenant)
+        {
+            string conStr = tenant.ConnectionString.DecryptDES(AppSecret.DB);
+
+            ConnectionConfig connectionConfig = new ConnectionConfig()
+            {
+                ConfigId = tenant.TenantId,
+                ConnectionString = conStr,
+                DbType = (DbType)tenant.DbType,
+                IsAutoCloseConnection = true,
+                AopEvents = new AopEvents()
+                {
+                    DataExecuting = SqlSugarAop.DataExecuting
+                }
+            };
+            DBSeed.InitTenantSeedAsync(Db.AsTenant(), connectionConfig);
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs"
new file mode 100644
index 0000000..cea2a5f
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs"
@@ -0,0 +1,269 @@
+锘縰sing WIDESEA_Core.Authorization;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.HttpContextUser;
+using WIDESEA_ISystemService;
+using WIDESEA_Model;
+using WIDESEA_Model.Models;
+using WIDESEA_Core.BaseRepository;
+using System.Net;
+using WIDESEA_Core.Caches;
+using SqlSugar;
+using ICacheService = WIDESEA_Core.Caches.ICacheService;
+using HslCommunication.WebSocket;
+using System.Drawing.Drawing2D;
+using System.Linq;
+using MailKit.Search;
+using OrderByType = SqlSugar.OrderByType;
+using System.Drawing.Printing;
+//using WIDESEA_Core.HostedService;
+
+namespace WIDESEA_SystemService
+{
+    public class Sys_UserService : ServiceBase<Sys_User, IRepository<Sys_User>>, ISys_UserService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly ICacheService _cacheService;
+        private readonly ISys_MenuService _menuService;
+        private readonly ISys_RoleService _roleService;
+
+        public IRepository<Sys_User> Repository => BaseDal;
+
+        public Sys_UserService(IRepository<Sys_User> repository, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService, ISys_MenuService menuService, ISys_RoleService roleService) : base(repository)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+            _cacheService = cacheService;
+            _menuService = menuService;
+            _roleService = roleService;
+        }
+
+        public WebResponseContent Login(LoginInfo loginInfo)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                //BaseDal.QueryFirst(x => x.UserName == loginInfo.UserName);
+
+                string msg = string.Empty;
+
+                #region 涓存椂浣跨敤
+                try
+                {
+                    loginInfo.Password = loginInfo.Password.EncryptDES(AppSecret.User);
+                }
+                catch
+                {
+
+                }
+                #endregion
+
+                UserInfo user = BaseDal.QueryFirst(x => x.UserName == loginInfo.UserName && x.UserPwd == loginInfo.Password, x => new UserInfo { HeadImageUrl = x.HeadImageUrl, RoleId = x.RoleId, TenantId = x.TenantId, UserId = x.UserId, UserName = x.UserName, UserTrueName = x.UserTrueName });
+                if (user != null)
+                {
+                    object obj = _menuService.GetMenuActionList(user.RoleId);
+                    if (obj is not IEnumerable<object> list)
+                    {
+                        return WebResponseContent.Instance.Error("鏃犵櫥褰曟潈闄�");
+                    }
+                    if (!list.Any())
+                    {
+                        return WebResponseContent.Instance.Error("鏃犵櫥褰曟潈闄�");
+                    }
+
+                    string token = JwtHelper.IssueJwt(new TokenModelJwt()
+                    {
+                        UserId = user.UserId,
+                        RoleId = user.RoleId,
+                        UserName = user.UserName,
+                        TenantId = user.TenantId,
+                    });
+                    App.User.UpdateToke(token, user.UserId);
+
+                    //if (PermissionDataHostService.UserRoles.FirstOrDefault(x => x.UserId == user.UserId) == null)
+                    //    PermissionDataHostService.UserRoles.AddRange(PermissionDataHostService.GetUserRoles(Db, user.UserId));
+
+                    content = WebResponseContent.Instance.OK(data: new { token, userName = user.UserName, img = user.HeadImageUrl, user.UserTrueName });
+                }
+                else
+                {
+                    content = WebResponseContent.Instance.Error("璐﹀彿鎴栧瘑鐮侀敊璇�");
+                }
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+
+            return content;
+        }
+
+        public override WebResponseContent UpdateData(SaveModel saveModel)
+        {
+            UpdateIgnoreColOnExecute = x =>
+            {
+                return new List<string>
+                {
+                    nameof(Sys_User.UserPwd),
+                    nameof(Sys_User.TenantId)
+                };
+            };
+            return base.UpdateData(saveModel);
+        }
+
+        public override PageGridData<Sys_User> GetPageData(PageDataOptions options)
+        {
+            int roleId = -1;
+            //鏍戝舰鑿滃崟浼犳煡璇㈣鑹蹭笅鎵�鏈夌敤鎴�
+            if (options.Value != null)
+            {
+                roleId = options.Value.ObjToInt();
+            }
+
+            if (roleId <= 0)
+            {
+                if (App.User.IsHighestRole) return base.GetPageData(options);
+                roleId = App.User.RoleId;
+            }
+            int totalCount = 0;
+            List<int> roleIds = _roleService.GetAllChildrenRoleId(roleId).Where(x => x != roleId).ToList();
+            ISugarQueryable<Sys_User> sugarQueryable = Db.Queryable<Sys_User>();
+            ValidatePageOptions(options, ref sugarQueryable);
+
+            Dictionary<string, OrderByType> orderbyDic = options.GetPageDataSort(TProperties);
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderbyDic)
+            {
+                OrderByModel orderByModel = new OrderByModel()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+            List<Sys_User> users = sugarQueryable.Where(x => roleIds.Contains(x.RoleId) || x.UserId == App.User.UserId).OrderBy(orderByModels).ToPageList(options.Page, options.Rows, ref totalCount);
+            return new PageGridData<Sys_User> { Rows = users, Total = totalCount };
+        }
+
+        public override WebResponseContent AddData(SaveModel saveModel)
+        {
+            string pwd = "123456";
+            string uesrName = saveModel.MainData[nameof(Sys_User.UserName).FirstLetterToLower()].ToString();
+            saveModel.MainData[nameof(Sys_User.UserPwd).FirstLetterToLower()] = pwd.EncryptDES(AppSecret.User);
+
+            WebResponseContent content = base.AddData(saveModel);
+            if (content.Status)
+            {
+                return WebResponseContent.Instance.OK($"鐢ㄦ埛鏂板缓鎴愬姛.甯愬彿{uesrName}瀵嗙爜{pwd}");
+            }
+            else
+            {
+                return content;
+            }
+        }
+
+        /// <summary>
+        /// 涓汉涓績鑾峰彇褰撳墠鐢ㄦ埛淇℃伅
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent GetCurrentUserInfo()
+        {
+            var data = BaseDal.QueryFirst(x => x.UserId == App.User.UserId, s => new
+            {
+                s.UserName,
+                s.UserTrueName,
+                s.Address,
+                s.PhoneNo,
+                s.Email,
+                s.Remark,
+                s.Gender,
+                s.RoleName,
+                s.HeadImageUrl,
+                s.CreateDate
+            });
+            return WebResponseContent.Instance.OK(null, data);
+        }
+
+        /// <summary>
+        /// 淇敼瀵嗙爜
+        /// </summary>
+        /// <param name="parameters"></param>
+        /// <returns></returns>
+        public WebResponseContent ModifyPwd(string oldPwd, string newPwd)
+        {
+            WebResponseContent content = WebResponseContent.Instance;
+            oldPwd = oldPwd?.Trim();
+            newPwd = newPwd?.Trim();
+            string message = "";
+            try
+            {
+                if (string.IsNullOrEmpty(oldPwd)) return WebResponseContent.Instance.Error("鏃у瘑鐮佷笉鑳戒负绌�");
+                if (string.IsNullOrEmpty(newPwd)) return WebResponseContent.Instance.Error("鏂板瘑鐮佷笉鑳戒负绌�");
+                if (newPwd.Length < 6) return WebResponseContent.Instance.Error("瀵嗙爜涓嶈兘灏戜簬6浣�");
+
+                int userId = App.User.UserId;
+                string userCurrentPwd = BaseDal.QueryFirst(x => x.UserId == userId, s => s.UserPwd);
+
+                string _oldPwd = oldPwd.EncryptDES(AppSecret.User);
+                if (_oldPwd != userCurrentPwd) return WebResponseContent.Instance.Error("鏃у瘑鐮佷笉姝g‘");
+
+                string _newPwd = newPwd.EncryptDES(AppSecret.User);
+                if (userCurrentPwd == _newPwd) return WebResponseContent.Instance.Error("鏂板瘑鐮佷笉鑳戒笌鏃у瘑鐮佺浉鍚�");
+
+
+                BaseDal.UpdateData(new Sys_User
+                {
+                    UserId = userId,
+                    UserPwd = _newPwd,
+                    LastModifyPwdDate = DateTime.Now
+                }, new List<string>
+                {
+                    nameof(Sys_User.LastModifyPwdDate),
+                    nameof(Sys_User.UserPwd)
+                });
+
+                content = WebResponseContent.Instance.OK("瀵嗙爜淇敼鎴愬姛");
+            }
+            catch (Exception ex)
+            {
+                message = ex.Message;
+                content = WebResponseContent.Instance.Error("鏈嶅姟鍣ㄤ簡鐐归棶棰�,璇风◢鍚庡啀璇�");
+            }
+            return content;
+        }
+        public WebResponseContent ModifyUserPwd(string password, string userName)
+        {
+            WebResponseContent content = new WebResponseContent();
+            string message = "";
+            password = password?.Trim();
+            try
+            {
+                if (string.IsNullOrEmpty(password)) return WebResponseContent.Instance.Error("瀵嗙爜涓嶈兘涓虹┖");
+                //鑾峰彇鐢ㄦ埛
+                Sys_User user = BaseDal.QueryFirst(x => x.UserName == userName);
+                if (user == null) return WebResponseContent.Instance.Error("鐢ㄦ埛涓嶅瓨鍦�");
+                user.UserPwd = password.EncryptDES(AppSecret.User);
+                BaseDal.UpdateData(user);
+                if (App.User.UserId == user.UserId)
+                {
+                    string token = JwtHelper.IssueJwt(new TokenModelJwt()
+                    {
+                        UserId = user.UserId,
+                        RoleId = user.RoleId,
+                        UserName = user.UserName,
+                        TenantId = user.TenantId,
+                    });
+                    _cacheService.AddOrUpdate(user.UserId.ToString(), token);
+                }
+                return content.OK("鏇存敼鎴愬姛");
+            }
+            catch (Exception ex)
+            {
+                message = ex.Message;
+                content.Error("鏈嶅姟鍣ㄤ簡鐐归棶棰�,璇风◢鍚庡啀璇�");
+            }
+            return content;
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/WIDESEA_SystemService.csproj" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/WIDESEA_SystemService.csproj"
new file mode 100644
index 0000000..37aa4de
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SystemService/WIDESEA_SystemService.csproj"
@@ -0,0 +1,13 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_ISystemService\WIDESEA_ISystemService.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
new file mode 100644
index 0000000..408a9cb
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
@@ -0,0 +1,57 @@
+锘�#region << 鐗� 鏈� 娉� 閲� >>
+/*----------------------------------------------------------------
+ * 鍛藉悕绌洪棿锛歐IDESEA_TaskInfoService
+ * 鍒涘缓鑰咃細鑳$搴�
+ * 鍒涘缓鏃堕棿锛�2024/8/2 16:13:36
+ * 鐗堟湰锛歏1.0.0
+ * 鎻忚堪锛�
+ *
+ * ----------------------------------------------------------------
+ * 淇敼浜猴細
+ * 淇敼鏃堕棿锛�
+ * 鐗堟湰锛歏1.0.1
+ * 淇敼璇存槑锛�
+ * 
+ *----------------------------------------------------------------*/
+#endregion << 鐗� 鏈� 娉� 閲� >>
+
+using AutoMapper;
+using SqlSugar;
+using WIDESEA_Common.TaskEnum;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IBasicService;
+using WIDESEA_IInboundService;
+using WIDESEA_IOutboundService;
+using WIDESEA_IRecordService;
+using WIDESEA_IStockService;
+using WIDESEA_ITaskInfoService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_TaskInfoService
+{
+    public partial class TaskService : ServiceBase<Dt_Task, IRepository<Dt_Task>>, ITaskService
+    {
+        private readonly IMapper _mapper;
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+
+        public IRepository<Dt_Task> Repository => BaseDal;
+
+        private Dictionary<string, OrderByType> _taskOrderBy = new()
+            {
+                {nameof(Dt_Task.Grade),OrderByType.Desc },
+                {nameof(Dt_Task.CreateDate),OrderByType.Asc},
+            };
+
+        public List<int> TaskTypes => typeof(TaskTypeEnum).GetEnumIndexList();
+
+        public List<int> TaskOutboundTypes => typeof(TaskTypeEnum).GetEnumIndexList();
+
+        public TaskService(IRepository<Dt_Task> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        {
+            _mapper = mapper;
+            _unitOfWorkManage = unitOfWorkManage;
+        }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_TaskInfoService/Task_HtyService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_TaskInfoService/Task_HtyService.cs"
new file mode 100644
index 0000000..73bd716
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_TaskInfoService/Task_HtyService.cs"
@@ -0,0 +1,13 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_ITaskInfoService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_TaskInfoService;
+
+public class Task_HtyService : ServiceBase<Dt_Task_Hty, IRepository<Dt_Task_Hty>>, ITask_HtyService
+{
+    public Task_HtyService(IRepository<Dt_Task_Hty> BaseDal) : base(BaseDal)
+    {
+    }
+}
\ No newline at end of file
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WIDESEA_TaskInfoService.csproj" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WIDESEA_TaskInfoService.csproj"
new file mode 100644
index 0000000..5272e9b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WIDESEA_TaskInfoService.csproj"
@@ -0,0 +1,18 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_IBasicService\WIDESEA_IBasicService.csproj" />
+    <ProjectReference Include="..\WIDESEA_IInboundService\WIDESEA_IInboundService.csproj" />
+    <ProjectReference Include="..\WIDESEA_IOutboundService\WIDESEA_IOutboundService.csproj" />
+    <ProjectReference Include="..\WIDESEA_IRecordService\WIDESEA_IRecordService.csproj" />
+    <ProjectReference Include="..\WIDESEA_IStockService\WIDESEA_IStockService.csproj" />
+    <ProjectReference Include="..\WIDESEA_ITaskInfoService\WIDESEA_ITaskInfoService.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer.sln" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer.sln"
new file mode 100644
index 0000000..2a16a82
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer.sln"
@@ -0,0 +1,399 @@
+锘�
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.9.34701.34
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_WMSServer", "WIDESEA_WMSServer\WIDESEA_WMSServer.csproj", "{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_Core", "WIDESEA_Core\WIDESEA_Core.csproj", "{111BD7AA-9749-4506-9772-79F9EF14754C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_Common", "WIDESEA_Common\WIDESEA_Common.csproj", "{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_Model", "WIDESEA_Model\WIDESEA_Model.csproj", "{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Service", "Service", "{60DE2920-37C6-4C2B-A053-6B1B2DAF047A}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_DTO", "WIDESEA_DTO\WIDESEA_DTO.csproj", "{929DF936-042C-4EEC-8722-A831FC2F0AEA}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "System", "System", "{F40FDE85-110F-4B31-AA62-E2BD432028E0}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_ISystemService", "WIDESEA_ISystemService\WIDESEA_ISystemService.csproj", "{00A5A08A-8A36-4972-8863-7DCF8DBC7978}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_SystemService", "WIDESEA_SystemService\WIDESEA_SystemService.csproj", "{D8C9593B-B31C-4650-8F44-962E9096A0CF}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TaskInfo", "TaskInfo", "{65441FA0-9B61-45F6-AC6F-76E4468617BA}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Stock", "Stock", "{9F5EEC4F-B525-4527-AA48-404EA6E46FFC}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Outbound", "Outbound", "{839D91F1-D8B5-4FA0-8980-DD2ED1012D87}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Inbound", "Inbound", "{A8175EEC-87F8-4560-8D95-1027B33B6301}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Basic", "Basic", "{2228B322-FB4C-49C0-8C1C-0264ED6787FB}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{99C8A9CA-A406-4889-BEE1-8865179376B9}"
+	ProjectSection(SolutionItems) = preProject
+		.editorconfig = .editorconfig
+	EndProjectSection
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IBasicService", "WIDESEA_IBasicService\WIDESEA_IBasicService.csproj", "{5F260E03-095A-4870-8419-5B72CB62929E}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_BasicService", "WIDESEA_BasicService\WIDESEA_BasicService.csproj", "{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IInboundService", "WIDESEA_IInboundService\WIDESEA_IInboundService.csproj", "{3E1C6F64-6E74-4E76-9E5D-7EE6A7AA1F26}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_InboundService", "WIDESEA_InboundService\WIDESEA_InboundService.csproj", "{9619D9B0-7E5B-42F0-BA2C-B840B3E1C258}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IOutboundService", "WIDESEA_IOutboundService\WIDESEA_IOutboundService.csproj", "{69C05DDB-1AA6-4090-9916-029CD0E95B10}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_OutboundService", "WIDESEA_OutboundService\WIDESEA_OutboundService.csproj", "{1B884AD3-7E67-44CD-B182-DEECDD671DD2}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IStockService", "WIDESEA_IStockService\WIDESEA_IStockService.csproj", "{49716D78-720D-475D-948C-0FC6C5F079E5}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_StockService", "WIDESEA_StockService\WIDESEA_StockService.csproj", "{7DC26D42-D8EE-46F0-BA66-A13457086885}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_ITaskInfoService", "WIDESEA_ITaskInfoService\WIDESEA_ITaskInfoService.csproj", "{CE0DB91F-5A68-448E-A419-4C26B5039F51}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_TaskInfoService", "WIDESEA_TaskInfoService\WIDESEA_TaskInfoService.csproj", "{7D7534D4-51D9-46DC-A6B7-6430042F4E12}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Record", "Record", "{551C56D1-8642-4391-B478-A1BC51D63F98}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IRecordService", "WIDESEA_IRecordService\WIDESEA_IRecordService.csproj", "{6E0E5856-A399-4791-9EAD-84ABC43F35AA}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_RecordService", "WIDESEA_RecordService\WIDESEA_RecordService.csproj", "{A343A2C5-995D-45F1-A3E5-20495DD3F615}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Check", "Check", "{294A53A4-1311-4B71-A812-378A2BCB8346}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEA_ICheckService", "WIDESEA_ICheckService\WIDESEA_ICheckService.csproj", "{82EBBC95-FD6E-4E30-9F21-625DE1991C2C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEA_CheckService", "WIDESEA_CheckService\WIDESEA_CheckService.csproj", "{C57C16CE-88A7-499A-8CE1-855D55482891}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SquareCabin", "SquareCabin", "{5BD8243F-07D6-449D-855C-065448EEF5F3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEA_ISquareCabinServices", "WIDESEA_ISquareCabinServices\WIDESEA_ISquareCabinServices.csproj", "{FC3D3619-FE28-4CF5-8471-CBBC55649B10}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEA_SquareCabinServices", "WIDESEA_SquareCabinServices\WIDESEA_SquareCabinServices.csproj", "{9D0451BD-FBB9-428A-9745-67334785D57A}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Debug|x86 = Debug|x86
+		Dev|Any CPU = Dev|Any CPU
+		Dev|x86 = Dev|x86
+		Release|Any CPU = Release|Any CPU
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Debug|x86.Build.0 = Debug|Any CPU
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Dev|x86.Build.0 = Debug|Any CPU
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Release|Any CPU.Build.0 = Release|Any CPU
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Release|x86.ActiveCfg = Release|Any CPU
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Release|x86.Build.0 = Release|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Debug|x86.Build.0 = Debug|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Dev|x86.Build.0 = Debug|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Release|Any CPU.Build.0 = Release|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Release|x86.ActiveCfg = Release|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Release|x86.Build.0 = Release|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Debug|x86.Build.0 = Debug|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Dev|x86.Build.0 = Debug|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Release|x86.ActiveCfg = Release|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Release|x86.Build.0 = Release|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Debug|x86.Build.0 = Debug|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Dev|x86.Build.0 = Debug|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Release|Any CPU.Build.0 = Release|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Release|x86.ActiveCfg = Release|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Release|x86.Build.0 = Release|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Debug|x86.Build.0 = Debug|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Dev|x86.Build.0 = Debug|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Release|Any CPU.Build.0 = Release|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Release|x86.ActiveCfg = Release|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Release|x86.Build.0 = Release|Any CPU
+		{00A5A08A-8A36-4972-8863-7DCF8DBC7978}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{00A5A08A-8A36-4972-8863-7DCF8DBC7978}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{00A5A08A-8A36-4972-8863-7DCF8DBC7978}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{00A5A08A-8A36-4972-8863-7DCF8DBC7978}.Debug|x86.Build.0 = Debug|Any CPU
+		{00A5A08A-8A36-4972-8863-7DCF8DBC7978}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{00A5A08A-8A36-4972-8863-7DCF8DBC7978}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{00A5A08A-8A36-4972-8863-7DCF8DBC7978}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{00A5A08A-8A36-4972-8863-7DCF8DBC7978}.Dev|x86.Build.0 = Debug|Any CPU
+		{00A5A08A-8A36-4972-8863-7DCF8DBC7978}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{00A5A08A-8A36-4972-8863-7DCF8DBC7978}.Release|Any CPU.Build.0 = Release|Any CPU
+		{00A5A08A-8A36-4972-8863-7DCF8DBC7978}.Release|x86.ActiveCfg = Release|Any CPU
+		{00A5A08A-8A36-4972-8863-7DCF8DBC7978}.Release|x86.Build.0 = Release|Any CPU
+		{D8C9593B-B31C-4650-8F44-962E9096A0CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D8C9593B-B31C-4650-8F44-962E9096A0CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D8C9593B-B31C-4650-8F44-962E9096A0CF}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{D8C9593B-B31C-4650-8F44-962E9096A0CF}.Debug|x86.Build.0 = Debug|Any CPU
+		{D8C9593B-B31C-4650-8F44-962E9096A0CF}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{D8C9593B-B31C-4650-8F44-962E9096A0CF}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{D8C9593B-B31C-4650-8F44-962E9096A0CF}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{D8C9593B-B31C-4650-8F44-962E9096A0CF}.Dev|x86.Build.0 = Debug|Any CPU
+		{D8C9593B-B31C-4650-8F44-962E9096A0CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{D8C9593B-B31C-4650-8F44-962E9096A0CF}.Release|Any CPU.Build.0 = Release|Any CPU
+		{D8C9593B-B31C-4650-8F44-962E9096A0CF}.Release|x86.ActiveCfg = Release|Any CPU
+		{D8C9593B-B31C-4650-8F44-962E9096A0CF}.Release|x86.Build.0 = Release|Any CPU
+		{5F260E03-095A-4870-8419-5B72CB62929E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{5F260E03-095A-4870-8419-5B72CB62929E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{5F260E03-095A-4870-8419-5B72CB62929E}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{5F260E03-095A-4870-8419-5B72CB62929E}.Debug|x86.Build.0 = Debug|Any CPU
+		{5F260E03-095A-4870-8419-5B72CB62929E}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{5F260E03-095A-4870-8419-5B72CB62929E}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{5F260E03-095A-4870-8419-5B72CB62929E}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{5F260E03-095A-4870-8419-5B72CB62929E}.Dev|x86.Build.0 = Debug|Any CPU
+		{5F260E03-095A-4870-8419-5B72CB62929E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{5F260E03-095A-4870-8419-5B72CB62929E}.Release|Any CPU.Build.0 = Release|Any CPU
+		{5F260E03-095A-4870-8419-5B72CB62929E}.Release|x86.ActiveCfg = Release|Any CPU
+		{5F260E03-095A-4870-8419-5B72CB62929E}.Release|x86.Build.0 = Release|Any CPU
+		{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}.Debug|x86.Build.0 = Debug|Any CPU
+		{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}.Dev|x86.Build.0 = Debug|Any CPU
+		{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}.Release|Any CPU.Build.0 = Release|Any CPU
+		{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}.Release|x86.ActiveCfg = Release|Any CPU
+		{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}.Release|x86.Build.0 = Release|Any CPU
+		{3E1C6F64-6E74-4E76-9E5D-7EE6A7AA1F26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{3E1C6F64-6E74-4E76-9E5D-7EE6A7AA1F26}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{3E1C6F64-6E74-4E76-9E5D-7EE6A7AA1F26}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{3E1C6F64-6E74-4E76-9E5D-7EE6A7AA1F26}.Debug|x86.Build.0 = Debug|Any CPU
+		{3E1C6F64-6E74-4E76-9E5D-7EE6A7AA1F26}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{3E1C6F64-6E74-4E76-9E5D-7EE6A7AA1F26}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{3E1C6F64-6E74-4E76-9E5D-7EE6A7AA1F26}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{3E1C6F64-6E74-4E76-9E5D-7EE6A7AA1F26}.Dev|x86.Build.0 = Debug|Any CPU
+		{3E1C6F64-6E74-4E76-9E5D-7EE6A7AA1F26}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{3E1C6F64-6E74-4E76-9E5D-7EE6A7AA1F26}.Release|Any CPU.Build.0 = Release|Any CPU
+		{3E1C6F64-6E74-4E76-9E5D-7EE6A7AA1F26}.Release|x86.ActiveCfg = Release|Any CPU
+		{3E1C6F64-6E74-4E76-9E5D-7EE6A7AA1F26}.Release|x86.Build.0 = Release|Any CPU
+		{9619D9B0-7E5B-42F0-BA2C-B840B3E1C258}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9619D9B0-7E5B-42F0-BA2C-B840B3E1C258}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{9619D9B0-7E5B-42F0-BA2C-B840B3E1C258}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{9619D9B0-7E5B-42F0-BA2C-B840B3E1C258}.Debug|x86.Build.0 = Debug|Any CPU
+		{9619D9B0-7E5B-42F0-BA2C-B840B3E1C258}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{9619D9B0-7E5B-42F0-BA2C-B840B3E1C258}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{9619D9B0-7E5B-42F0-BA2C-B840B3E1C258}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{9619D9B0-7E5B-42F0-BA2C-B840B3E1C258}.Dev|x86.Build.0 = Debug|Any CPU
+		{9619D9B0-7E5B-42F0-BA2C-B840B3E1C258}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{9619D9B0-7E5B-42F0-BA2C-B840B3E1C258}.Release|Any CPU.Build.0 = Release|Any CPU
+		{9619D9B0-7E5B-42F0-BA2C-B840B3E1C258}.Release|x86.ActiveCfg = Release|Any CPU
+		{9619D9B0-7E5B-42F0-BA2C-B840B3E1C258}.Release|x86.Build.0 = Release|Any CPU
+		{69C05DDB-1AA6-4090-9916-029CD0E95B10}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{69C05DDB-1AA6-4090-9916-029CD0E95B10}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{69C05DDB-1AA6-4090-9916-029CD0E95B10}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{69C05DDB-1AA6-4090-9916-029CD0E95B10}.Debug|x86.Build.0 = Debug|Any CPU
+		{69C05DDB-1AA6-4090-9916-029CD0E95B10}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{69C05DDB-1AA6-4090-9916-029CD0E95B10}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{69C05DDB-1AA6-4090-9916-029CD0E95B10}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{69C05DDB-1AA6-4090-9916-029CD0E95B10}.Dev|x86.Build.0 = Debug|Any CPU
+		{69C05DDB-1AA6-4090-9916-029CD0E95B10}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{69C05DDB-1AA6-4090-9916-029CD0E95B10}.Release|Any CPU.Build.0 = Release|Any CPU
+		{69C05DDB-1AA6-4090-9916-029CD0E95B10}.Release|x86.ActiveCfg = Release|Any CPU
+		{69C05DDB-1AA6-4090-9916-029CD0E95B10}.Release|x86.Build.0 = Release|Any CPU
+		{1B884AD3-7E67-44CD-B182-DEECDD671DD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1B884AD3-7E67-44CD-B182-DEECDD671DD2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1B884AD3-7E67-44CD-B182-DEECDD671DD2}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{1B884AD3-7E67-44CD-B182-DEECDD671DD2}.Debug|x86.Build.0 = Debug|Any CPU
+		{1B884AD3-7E67-44CD-B182-DEECDD671DD2}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{1B884AD3-7E67-44CD-B182-DEECDD671DD2}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{1B884AD3-7E67-44CD-B182-DEECDD671DD2}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{1B884AD3-7E67-44CD-B182-DEECDD671DD2}.Dev|x86.Build.0 = Debug|Any CPU
+		{1B884AD3-7E67-44CD-B182-DEECDD671DD2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1B884AD3-7E67-44CD-B182-DEECDD671DD2}.Release|Any CPU.Build.0 = Release|Any CPU
+		{1B884AD3-7E67-44CD-B182-DEECDD671DD2}.Release|x86.ActiveCfg = Release|Any CPU
+		{1B884AD3-7E67-44CD-B182-DEECDD671DD2}.Release|x86.Build.0 = Release|Any CPU
+		{49716D78-720D-475D-948C-0FC6C5F079E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{49716D78-720D-475D-948C-0FC6C5F079E5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{49716D78-720D-475D-948C-0FC6C5F079E5}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{49716D78-720D-475D-948C-0FC6C5F079E5}.Debug|x86.Build.0 = Debug|Any CPU
+		{49716D78-720D-475D-948C-0FC6C5F079E5}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{49716D78-720D-475D-948C-0FC6C5F079E5}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{49716D78-720D-475D-948C-0FC6C5F079E5}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{49716D78-720D-475D-948C-0FC6C5F079E5}.Dev|x86.Build.0 = Debug|Any CPU
+		{49716D78-720D-475D-948C-0FC6C5F079E5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{49716D78-720D-475D-948C-0FC6C5F079E5}.Release|Any CPU.Build.0 = Release|Any CPU
+		{49716D78-720D-475D-948C-0FC6C5F079E5}.Release|x86.ActiveCfg = Release|Any CPU
+		{49716D78-720D-475D-948C-0FC6C5F079E5}.Release|x86.Build.0 = Release|Any CPU
+		{7DC26D42-D8EE-46F0-BA66-A13457086885}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7DC26D42-D8EE-46F0-BA66-A13457086885}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7DC26D42-D8EE-46F0-BA66-A13457086885}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{7DC26D42-D8EE-46F0-BA66-A13457086885}.Debug|x86.Build.0 = Debug|Any CPU
+		{7DC26D42-D8EE-46F0-BA66-A13457086885}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{7DC26D42-D8EE-46F0-BA66-A13457086885}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{7DC26D42-D8EE-46F0-BA66-A13457086885}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{7DC26D42-D8EE-46F0-BA66-A13457086885}.Dev|x86.Build.0 = Debug|Any CPU
+		{7DC26D42-D8EE-46F0-BA66-A13457086885}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7DC26D42-D8EE-46F0-BA66-A13457086885}.Release|Any CPU.Build.0 = Release|Any CPU
+		{7DC26D42-D8EE-46F0-BA66-A13457086885}.Release|x86.ActiveCfg = Release|Any CPU
+		{7DC26D42-D8EE-46F0-BA66-A13457086885}.Release|x86.Build.0 = Release|Any CPU
+		{CE0DB91F-5A68-448E-A419-4C26B5039F51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{CE0DB91F-5A68-448E-A419-4C26B5039F51}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{CE0DB91F-5A68-448E-A419-4C26B5039F51}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{CE0DB91F-5A68-448E-A419-4C26B5039F51}.Debug|x86.Build.0 = Debug|Any CPU
+		{CE0DB91F-5A68-448E-A419-4C26B5039F51}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{CE0DB91F-5A68-448E-A419-4C26B5039F51}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{CE0DB91F-5A68-448E-A419-4C26B5039F51}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{CE0DB91F-5A68-448E-A419-4C26B5039F51}.Dev|x86.Build.0 = Debug|Any CPU
+		{CE0DB91F-5A68-448E-A419-4C26B5039F51}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{CE0DB91F-5A68-448E-A419-4C26B5039F51}.Release|Any CPU.Build.0 = Release|Any CPU
+		{CE0DB91F-5A68-448E-A419-4C26B5039F51}.Release|x86.ActiveCfg = Release|Any CPU
+		{CE0DB91F-5A68-448E-A419-4C26B5039F51}.Release|x86.Build.0 = Release|Any CPU
+		{7D7534D4-51D9-46DC-A6B7-6430042F4E12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7D7534D4-51D9-46DC-A6B7-6430042F4E12}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7D7534D4-51D9-46DC-A6B7-6430042F4E12}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{7D7534D4-51D9-46DC-A6B7-6430042F4E12}.Debug|x86.Build.0 = Debug|Any CPU
+		{7D7534D4-51D9-46DC-A6B7-6430042F4E12}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{7D7534D4-51D9-46DC-A6B7-6430042F4E12}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{7D7534D4-51D9-46DC-A6B7-6430042F4E12}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{7D7534D4-51D9-46DC-A6B7-6430042F4E12}.Dev|x86.Build.0 = Debug|Any CPU
+		{7D7534D4-51D9-46DC-A6B7-6430042F4E12}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7D7534D4-51D9-46DC-A6B7-6430042F4E12}.Release|Any CPU.Build.0 = Release|Any CPU
+		{7D7534D4-51D9-46DC-A6B7-6430042F4E12}.Release|x86.ActiveCfg = Release|Any CPU
+		{7D7534D4-51D9-46DC-A6B7-6430042F4E12}.Release|x86.Build.0 = Release|Any CPU
+		{6E0E5856-A399-4791-9EAD-84ABC43F35AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{6E0E5856-A399-4791-9EAD-84ABC43F35AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{6E0E5856-A399-4791-9EAD-84ABC43F35AA}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{6E0E5856-A399-4791-9EAD-84ABC43F35AA}.Debug|x86.Build.0 = Debug|Any CPU
+		{6E0E5856-A399-4791-9EAD-84ABC43F35AA}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{6E0E5856-A399-4791-9EAD-84ABC43F35AA}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{6E0E5856-A399-4791-9EAD-84ABC43F35AA}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{6E0E5856-A399-4791-9EAD-84ABC43F35AA}.Dev|x86.Build.0 = Debug|Any CPU
+		{6E0E5856-A399-4791-9EAD-84ABC43F35AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{6E0E5856-A399-4791-9EAD-84ABC43F35AA}.Release|Any CPU.Build.0 = Release|Any CPU
+		{6E0E5856-A399-4791-9EAD-84ABC43F35AA}.Release|x86.ActiveCfg = Release|Any CPU
+		{6E0E5856-A399-4791-9EAD-84ABC43F35AA}.Release|x86.Build.0 = Release|Any CPU
+		{A343A2C5-995D-45F1-A3E5-20495DD3F615}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{A343A2C5-995D-45F1-A3E5-20495DD3F615}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{A343A2C5-995D-45F1-A3E5-20495DD3F615}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{A343A2C5-995D-45F1-A3E5-20495DD3F615}.Debug|x86.Build.0 = Debug|Any CPU
+		{A343A2C5-995D-45F1-A3E5-20495DD3F615}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{A343A2C5-995D-45F1-A3E5-20495DD3F615}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{A343A2C5-995D-45F1-A3E5-20495DD3F615}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{A343A2C5-995D-45F1-A3E5-20495DD3F615}.Dev|x86.Build.0 = Debug|Any CPU
+		{A343A2C5-995D-45F1-A3E5-20495DD3F615}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{A343A2C5-995D-45F1-A3E5-20495DD3F615}.Release|Any CPU.Build.0 = Release|Any CPU
+		{A343A2C5-995D-45F1-A3E5-20495DD3F615}.Release|x86.ActiveCfg = Release|Any CPU
+		{A343A2C5-995D-45F1-A3E5-20495DD3F615}.Release|x86.Build.0 = Release|Any CPU
+		{82EBBC95-FD6E-4E30-9F21-625DE1991C2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{82EBBC95-FD6E-4E30-9F21-625DE1991C2C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{82EBBC95-FD6E-4E30-9F21-625DE1991C2C}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{82EBBC95-FD6E-4E30-9F21-625DE1991C2C}.Debug|x86.Build.0 = Debug|Any CPU
+		{82EBBC95-FD6E-4E30-9F21-625DE1991C2C}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{82EBBC95-FD6E-4E30-9F21-625DE1991C2C}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{82EBBC95-FD6E-4E30-9F21-625DE1991C2C}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{82EBBC95-FD6E-4E30-9F21-625DE1991C2C}.Dev|x86.Build.0 = Debug|Any CPU
+		{82EBBC95-FD6E-4E30-9F21-625DE1991C2C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{82EBBC95-FD6E-4E30-9F21-625DE1991C2C}.Release|Any CPU.Build.0 = Release|Any CPU
+		{82EBBC95-FD6E-4E30-9F21-625DE1991C2C}.Release|x86.ActiveCfg = Release|Any CPU
+		{82EBBC95-FD6E-4E30-9F21-625DE1991C2C}.Release|x86.Build.0 = Release|Any CPU
+		{C57C16CE-88A7-499A-8CE1-855D55482891}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{C57C16CE-88A7-499A-8CE1-855D55482891}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{C57C16CE-88A7-499A-8CE1-855D55482891}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{C57C16CE-88A7-499A-8CE1-855D55482891}.Debug|x86.Build.0 = Debug|Any CPU
+		{C57C16CE-88A7-499A-8CE1-855D55482891}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{C57C16CE-88A7-499A-8CE1-855D55482891}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{C57C16CE-88A7-499A-8CE1-855D55482891}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{C57C16CE-88A7-499A-8CE1-855D55482891}.Dev|x86.Build.0 = Debug|Any CPU
+		{C57C16CE-88A7-499A-8CE1-855D55482891}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{C57C16CE-88A7-499A-8CE1-855D55482891}.Release|Any CPU.Build.0 = Release|Any CPU
+		{C57C16CE-88A7-499A-8CE1-855D55482891}.Release|x86.ActiveCfg = Release|Any CPU
+		{C57C16CE-88A7-499A-8CE1-855D55482891}.Release|x86.Build.0 = Release|Any CPU
+		{FC3D3619-FE28-4CF5-8471-CBBC55649B10}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{FC3D3619-FE28-4CF5-8471-CBBC55649B10}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{FC3D3619-FE28-4CF5-8471-CBBC55649B10}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{FC3D3619-FE28-4CF5-8471-CBBC55649B10}.Debug|x86.Build.0 = Debug|Any CPU
+		{FC3D3619-FE28-4CF5-8471-CBBC55649B10}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{FC3D3619-FE28-4CF5-8471-CBBC55649B10}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{FC3D3619-FE28-4CF5-8471-CBBC55649B10}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{FC3D3619-FE28-4CF5-8471-CBBC55649B10}.Dev|x86.Build.0 = Debug|Any CPU
+		{FC3D3619-FE28-4CF5-8471-CBBC55649B10}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{FC3D3619-FE28-4CF5-8471-CBBC55649B10}.Release|Any CPU.Build.0 = Release|Any CPU
+		{FC3D3619-FE28-4CF5-8471-CBBC55649B10}.Release|x86.ActiveCfg = Release|Any CPU
+		{FC3D3619-FE28-4CF5-8471-CBBC55649B10}.Release|x86.Build.0 = Release|Any CPU
+		{9D0451BD-FBB9-428A-9745-67334785D57A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9D0451BD-FBB9-428A-9745-67334785D57A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{9D0451BD-FBB9-428A-9745-67334785D57A}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{9D0451BD-FBB9-428A-9745-67334785D57A}.Debug|x86.Build.0 = Debug|Any CPU
+		{9D0451BD-FBB9-428A-9745-67334785D57A}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{9D0451BD-FBB9-428A-9745-67334785D57A}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{9D0451BD-FBB9-428A-9745-67334785D57A}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{9D0451BD-FBB9-428A-9745-67334785D57A}.Dev|x86.Build.0 = Debug|Any CPU
+		{9D0451BD-FBB9-428A-9745-67334785D57A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{9D0451BD-FBB9-428A-9745-67334785D57A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{9D0451BD-FBB9-428A-9745-67334785D57A}.Release|x86.ActiveCfg = Release|Any CPU
+		{9D0451BD-FBB9-428A-9745-67334785D57A}.Release|x86.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(NestedProjects) = preSolution
+		{F40FDE85-110F-4B31-AA62-E2BD432028E0} = {60DE2920-37C6-4C2B-A053-6B1B2DAF047A}
+		{00A5A08A-8A36-4972-8863-7DCF8DBC7978} = {F40FDE85-110F-4B31-AA62-E2BD432028E0}
+		{D8C9593B-B31C-4650-8F44-962E9096A0CF} = {F40FDE85-110F-4B31-AA62-E2BD432028E0}
+		{65441FA0-9B61-45F6-AC6F-76E4468617BA} = {60DE2920-37C6-4C2B-A053-6B1B2DAF047A}
+		{9F5EEC4F-B525-4527-AA48-404EA6E46FFC} = {60DE2920-37C6-4C2B-A053-6B1B2DAF047A}
+		{839D91F1-D8B5-4FA0-8980-DD2ED1012D87} = {60DE2920-37C6-4C2B-A053-6B1B2DAF047A}
+		{A8175EEC-87F8-4560-8D95-1027B33B6301} = {60DE2920-37C6-4C2B-A053-6B1B2DAF047A}
+		{2228B322-FB4C-49C0-8C1C-0264ED6787FB} = {60DE2920-37C6-4C2B-A053-6B1B2DAF047A}
+		{5F260E03-095A-4870-8419-5B72CB62929E} = {2228B322-FB4C-49C0-8C1C-0264ED6787FB}
+		{D11C804C-2FF4-4C18-A3EE-2F0574427BB3} = {2228B322-FB4C-49C0-8C1C-0264ED6787FB}
+		{3E1C6F64-6E74-4E76-9E5D-7EE6A7AA1F26} = {A8175EEC-87F8-4560-8D95-1027B33B6301}
+		{9619D9B0-7E5B-42F0-BA2C-B840B3E1C258} = {A8175EEC-87F8-4560-8D95-1027B33B6301}
+		{69C05DDB-1AA6-4090-9916-029CD0E95B10} = {839D91F1-D8B5-4FA0-8980-DD2ED1012D87}
+		{1B884AD3-7E67-44CD-B182-DEECDD671DD2} = {839D91F1-D8B5-4FA0-8980-DD2ED1012D87}
+		{49716D78-720D-475D-948C-0FC6C5F079E5} = {9F5EEC4F-B525-4527-AA48-404EA6E46FFC}
+		{7DC26D42-D8EE-46F0-BA66-A13457086885} = {9F5EEC4F-B525-4527-AA48-404EA6E46FFC}
+		{CE0DB91F-5A68-448E-A419-4C26B5039F51} = {65441FA0-9B61-45F6-AC6F-76E4468617BA}
+		{7D7534D4-51D9-46DC-A6B7-6430042F4E12} = {65441FA0-9B61-45F6-AC6F-76E4468617BA}
+		{551C56D1-8642-4391-B478-A1BC51D63F98} = {60DE2920-37C6-4C2B-A053-6B1B2DAF047A}
+		{6E0E5856-A399-4791-9EAD-84ABC43F35AA} = {551C56D1-8642-4391-B478-A1BC51D63F98}
+		{A343A2C5-995D-45F1-A3E5-20495DD3F615} = {551C56D1-8642-4391-B478-A1BC51D63F98}
+		{294A53A4-1311-4B71-A812-378A2BCB8346} = {60DE2920-37C6-4C2B-A053-6B1B2DAF047A}
+		{82EBBC95-FD6E-4E30-9F21-625DE1991C2C} = {294A53A4-1311-4B71-A812-378A2BCB8346}
+		{C57C16CE-88A7-499A-8CE1-855D55482891} = {294A53A4-1311-4B71-A812-378A2BCB8346}
+		{5BD8243F-07D6-449D-855C-065448EEF5F3} = {60DE2920-37C6-4C2B-A053-6B1B2DAF047A}
+		{FC3D3619-FE28-4CF5-8471-CBBC55649B10} = {5BD8243F-07D6-449D-855C-065448EEF5F3}
+		{9D0451BD-FBB9-428A-9745-67334785D57A} = {5BD8243F-07D6-449D-855C-065448EEF5F3}
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {599A7267-7402-4143-84AE-9B407FC2BB69}
+	EndGlobalSection
+EndGlobal
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/.config/dotnet-tools.json" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/.config/dotnet-tools.json"
new file mode 100644
index 0000000..b99844e
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/.config/dotnet-tools.json"
@@ -0,0 +1,12 @@
+{
+  "version": 1,
+  "isRoot": true,
+  "tools": {
+    "dotnet-ef": {
+      "version": "8.0.6",
+      "commands": [
+        "dotnet-ef"
+      ]
+    }
+  }
+}
\ No newline at end of file
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationInfoController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationInfoController.cs"
new file mode 100644
index 0000000..c62202f
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationInfoController.cs"
@@ -0,0 +1,30 @@
+锘縰sing HslCommunication.WebSocket;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using WIDESEA_Common.CommonEnum;
+using WIDESEA_Common.LocationEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_Core.Enums;
+using WIDESEA_DTO.Basic;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Basic
+{
+    /// <summary>
+    /// 璐т綅
+    /// </summary>
+    [Route("api/LocationInfo")]
+    [ApiController]
+    public class LocationInfoController : ApiBaseController<ILocationInfoService, Dt_LocationInfo>
+    {
+        public LocationInfoController(ILocationInfoService service) : base(service)
+        {
+        }
+
+       
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/MaterielCodeInfoController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/MaterielCodeInfoController.cs"
new file mode 100644
index 0000000..529ed7b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/MaterielCodeInfoController.cs"
@@ -0,0 +1,17 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core.BaseController;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Basic
+{
+    [Route("api/MaterielCodeInfo")]
+    [ApiController]
+    public class MaterielCodeInfoController : ApiBaseController<IMaterielCodeInfoService, Dt_MaterielCodeInfo>
+    {
+        public MaterielCodeInfoController(IMaterielCodeInfoService service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/MaterielInfoController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/MaterielInfoController.cs"
new file mode 100644
index 0000000..58f725f
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/MaterielInfoController.cs"
@@ -0,0 +1,27 @@
+锘縰sing Autofac.Core;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.CodeConfigEnum;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO.Basic;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Basic
+{
+    /// <summary>
+    /// 鐗╂枡
+    /// </summary>
+    [Route("api/MaterielInfo")]
+    [ApiController]
+    public class MaterielInfoController : ApiBaseController<IMaterielInfoService, Dt_MaterielInfo>
+    {
+        public MaterielInfoController(IMaterielInfoService service) : base(service)
+        {
+        }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/PalletCodeInfoController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/PalletCodeInfoController.cs"
new file mode 100644
index 0000000..beb05d9
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/PalletCodeInfoController.cs"
@@ -0,0 +1,19 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Basic
+{
+    [Route("api/PalletCodeInfo")]
+    [ApiController]
+    public class PalletCodeInfoController : ApiBaseController<IPalletCodeInfoService, Dt_PalletCodeInfo>
+    {
+        public PalletCodeInfoController(IPalletCodeInfoService service) : base(service)
+        {
+        }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/WarehouseController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/WarehouseController.cs"
new file mode 100644
index 0000000..9a40dd7
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/WarehouseController.cs"
@@ -0,0 +1,22 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Basic
+{
+    /// <summary>
+    /// 浠撳簱
+    /// </summary>
+    [Route("api/Warehouse")]
+    [ApiController]
+    public class WarehouseController : ApiBaseController<IWarehouseService, Dt_Warehouse>
+    {
+        public WarehouseController(IWarehouseService service) : base(service)
+        {
+        }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Check/CheckOrderController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Check/CheckOrderController.cs"
new file mode 100644
index 0000000..e729346
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Check/CheckOrderController.cs"
@@ -0,0 +1,23 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_ICheckService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Check
+{
+    /// <summary>
+    /// 璐ㄦ鍗�
+    /// </summary>
+    [Route("api/CheckOrder")]
+    [ApiController]
+    public class CheckOrderController : ApiBaseController<ICheckOrderService, Dt_CheckOrder>
+    {
+        public CheckOrderController(ICheckOrderService service) : base(service)
+        {
+        }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Check/CheckOrderResultController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Check/CheckOrderResultController.cs"
new file mode 100644
index 0000000..85e8231
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Check/CheckOrderResultController.cs"
@@ -0,0 +1,22 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_ICheckService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Check
+{
+    /// <summary>
+    /// 璐ㄦ缁撴灉
+    /// </summary>
+    [Route("api/CheckOrderResult")]
+    [ApiController]
+    public class CheckOrderResultController : ApiBaseController<ICheckOrderResultService, Dt_CheckOrderResult>
+    {
+        public CheckOrderResultController(ICheckOrderResultService service) : base(service)
+        {
+        }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderController.cs"
new file mode 100644
index 0000000..27e8874
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderController.cs"
@@ -0,0 +1,24 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_DTO.Inbound;
+using WIDESEA_IInboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Inbound
+{
+    /// <summary>
+    /// 鍏ュ簱鍗�
+    /// </summary>
+    [Route("api/InboundOrder")]
+    [ApiController]
+    public class InboundOrderController : ApiBaseController<IInboundOrderService, Dt_InboundOrder>
+    {
+        public InboundOrderController(IInboundOrderService service) : base(service)
+        {
+        }
+        
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderDetailController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderDetailController.cs"
new file mode 100644
index 0000000..cd51da6
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderDetailController.cs"
@@ -0,0 +1,22 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_IInboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Inbound
+{
+    /// <summary>
+    /// 鍏ュ簱鍗曟槑缁�
+    /// </summary>
+    [Route("api/InboundOrderDetail")]
+    [ApiController]
+    public class InboundOrderDetailController : ApiBaseController<IInboundOrderDetailService, Dt_InboundOrderDetail>
+    {
+        public InboundOrderDetailController(IInboundOrderDetailService service) : base(service)
+        {
+        }
+        
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderDetail_HtyController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderDetail_HtyController.cs"
new file mode 100644
index 0000000..bdcac48
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderDetail_HtyController.cs"
@@ -0,0 +1,23 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_DTO.Inbound;
+using WIDESEA_IInboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Inbound
+{
+    /// <summary>
+    /// 鍏ュ簱鍗曟槑缁嗗巻鍙�
+    /// </summary>
+    [Route("api/InboundOrderDetail_Hty")]
+    [ApiController]
+    public class InboundOrderDetail_HtyController : ApiBaseController<IInboundOrderDetail_HtyService, Dt_InboundOrderDetail_Hty>
+    {
+        public InboundOrderDetail_HtyController(IInboundOrderDetail_HtyService service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrder_HtyController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrder_HtyController.cs"
new file mode 100644
index 0000000..efb312c
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrder_HtyController.cs"
@@ -0,0 +1,23 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_DTO.Inbound;
+using WIDESEA_IInboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Inbound
+{
+    /// <summary>
+    /// 鍏ュ簱鍗曞巻鍙�
+    /// </summary>
+    [Route("api/InboundOrder_Hty")]
+    [ApiController]
+    public class InboundOrder_HtyController : ApiBaseController<IInboundOrder_HtyService, Dt_InboundOrder_Hty>
+    {
+        public InboundOrder_HtyController(IInboundOrder_HtyService service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutStockLockInfoController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutStockLockInfoController.cs"
new file mode 100644
index 0000000..7eba6eb
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutStockLockInfoController.cs"
@@ -0,0 +1,23 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_IOutboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Outbound
+{
+    /// <summary>
+    /// 鍑哄簱璇︽儏
+    /// </summary>
+    [Route("api/OutStockLockInfo")]
+    [ApiController]
+    public class OutStockLockInfoController : ApiBaseController<IOutStockLockInfoService, Dt_OutStockLockInfo>
+    {
+        public OutStockLockInfoController(IOutStockLockInfoService service) : base(service)
+        {
+        }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundOrderController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundOrderController.cs"
new file mode 100644
index 0000000..cfd6d31
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundOrderController.cs"
@@ -0,0 +1,28 @@
+锘縰sing Autofac.Core;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_Core.CodeConfigEnum;
+using WIDESEA_DTO.Inbound;
+using WIDESEA_DTO.Outbound;
+using WIDESEA_IOutboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Outbound
+{
+    /// <summary>
+    /// 鍑哄簱鍗�
+    /// </summary>
+    [Route("api/OutboundOrder")]
+    [ApiController]
+    public class OutboundOrderController : ApiBaseController<IOutboundOrderService, Dt_OutboundOrder>
+    {
+        public OutboundOrderController(IOutboundOrderService service) : base(service)
+        {
+
+        }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundOrderDetailController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundOrderDetailController.cs"
new file mode 100644
index 0000000..1414153
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundOrderDetailController.cs"
@@ -0,0 +1,24 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_DTO.Stock;
+using WIDESEA_IOutboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Outbound
+{
+    /// <summary>
+    /// 鍑哄簱鍗曟槑缁�
+    /// </summary>
+    [Route("api/OutboundOrderDetail")]
+    [ApiController]
+    public class OutboundOrderDetailController : ApiBaseController<IOutboundOrderDetailService, Dt_OutboundOrderDetail>
+    {
+        public OutboundOrderDetailController(IOutboundOrderDetailService service) : base(service)
+        {
+        }
+        
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundOrderDetail_HtyController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundOrderDetail_HtyController.cs"
new file mode 100644
index 0000000..9efe889
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundOrderDetail_HtyController.cs"
@@ -0,0 +1,24 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_DTO.Inbound;
+using WIDESEA_IInboundService;
+using WIDESEA_IOutboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Inbound
+{
+    /// <summary>
+    /// 鍑哄簱鍗曟槑缁嗗巻鍙�
+    /// </summary>
+    [Route("api/OutboundOrderDetail_Hty")]
+    [ApiController]
+    public class OutboundOrderDetail_HtyController : ApiBaseController<IOutboundOrderDetail_HtyService, Dt_OutboundOrderDetail_Hty>
+    {
+        public OutboundOrderDetail_HtyController(IOutboundOrderDetail_HtyService service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundOrder_HtyController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundOrder_HtyController.cs"
new file mode 100644
index 0000000..7d40d61
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundOrder_HtyController.cs"
@@ -0,0 +1,24 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_DTO.Inbound;
+using WIDESEA_IInboundService;
+using WIDESEA_IOutboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Inbound
+{
+    /// <summary>
+    /// 鍑哄簱鍗曞巻鍙�
+    /// </summary>
+    [Route("api/OutboundOrder_Hty")]
+    [ApiController]
+    public class OutboundOrder_HtyController : ApiBaseController<IOutboundOrder_HtyService, Dt_OutboundOrder_Hty>
+    {
+        public OutboundOrder_HtyController(IOutboundOrder_HtyService service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDAController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDAController.cs"
new file mode 100644
index 0000000..33d6641
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDAController.cs"
@@ -0,0 +1,113 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO.Inbound;
+using WIDESEA_IInboundService;
+using WIDESEA_IOutboundService;
+using WIDESEA_ITaskInfoService;
+using System.IO;
+using WIDESEA_Model.Models;
+using System;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    /// <summary>
+    /// PDA
+    /// </summary>
+    [Route("api/PDA")]
+    [Authorize, ApiController]
+    public class PDAController : Controller
+    {
+        private readonly IInboundService _inboundService;
+        private readonly IOutboundService _outboundService;
+        private readonly ITaskService _taskService;
+
+        public PDAController(ITaskService taskService, IInboundService inboundService, IOutboundService outboundService)
+        {
+            _inboundService = inboundService;
+            _outboundService = outboundService;
+            _taskService = taskService;
+        }
+
+        /// <summary>
+        /// 涓嬭浇PDA
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("DownLoadApp"), AllowAnonymous]
+        public virtual ActionResult DownLoadApp()
+        {
+            string path = $"{AppDomain.CurrentDomain.BaseDirectory}Upload/App/";
+            if (!Directory.Exists(path)) Directory.CreateDirectory(path);
+            path += "WMS-PDA.apk";
+
+            if (System.IO.File.Exists(path))
+            {
+                byte[] fileBytes = System.IO.File.ReadAllBytes(path);
+                return File(
+                        fileBytes,
+                        System.Net.Mime.MediaTypeNames.Application.Octet,
+                        System.IO.Path.GetFileName(path)
+                    );
+            }
+            else
+            {
+                return Json(WebResponseContent.Instance.Error($"鏈壘鍒板畨瑁呭寘"));
+            }
+
+        }
+
+        /// <summary>
+        /// 涓婁紶PDA
+        /// </summary>
+        /// <param name="fileInput"></param>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("UploadApp"), AllowAnonymous]
+        [Consumes("multipart/form-data")]
+        public WebResponseContent UploadApp(IEnumerable<IFormFile> fileInput)
+        {
+            try
+            {
+                List<IFormFile> files = fileInput.ToList();
+                if (files == null || files.Count() == 0)
+                    return new WebResponseContent { Status = true, Message = "璇烽�夋嫨涓婁紶鐨勬枃浠�" };
+                IFormFile formFile = files[0];
+                string dicPath = $"{AppDomain.CurrentDomain.BaseDirectory}Upload/App/";
+                if (!Directory.Exists(dicPath)) Directory.CreateDirectory(dicPath);
+                string path = $"{dicPath}WMS-PDA{DateTime.Now:yyyyMMddhhmmss}.apk";
+                dicPath = $"{dicPath}WMS-PDA.apk";
+                if (System.IO.File.Exists(dicPath))
+                    System.IO.File.Move(dicPath, path);
+
+                using (var stream = new FileStream(dicPath, FileMode.Create))
+                {
+                    formFile.CopyTo(stream);
+                }
+                return new WebResponseContent { Status = true, Message = "鏂囦欢涓婁紶鎴愬姛" };
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        [HttpPost, HttpGet, Route("GetPDAVersion"), AllowAnonymous]
+        public WebResponseContent GetPDAVersion(string version)
+        {
+            try
+            {
+                string versionP = AppSettings.Get("PDAVersion");
+                if (Convert.ToInt32(versionP) > Convert.ToInt32(version))
+                    return WebResponseContent.Instance.OK(data: true);
+                else return WebResponseContent.Instance.OK(data: false);
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Record/LocationStatusChangeRecordController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Record/LocationStatusChangeRecordController.cs"
new file mode 100644
index 0000000..8df163d
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Record/LocationStatusChangeRecordController.cs"
@@ -0,0 +1,23 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_IRecordService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Record
+{
+    /// <summary>
+    /// 璐т綅鐘舵�佸彉鍔ㄨ褰�
+    /// </summary>
+    [Route("api/LocationStatusChangeRecord")]
+    [ApiController]
+    public class LocationStatusChangeRecordController : ApiBaseController<ILocationStatusChangeRecordService, Dt_LocationStatusChangeRecord>
+    {
+        public LocationStatusChangeRecordController(ILocationStatusChangeRecordService service) : base(service)
+        {
+        }
+       
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Record/StockQuantityChangeRecordController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Record/StockQuantityChangeRecordController.cs"
new file mode 100644
index 0000000..2973d77
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Record/StockQuantityChangeRecordController.cs"
@@ -0,0 +1,20 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core.BaseController;
+using WIDESEA_IRecordService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Record
+{
+    /// <summary>
+    /// 搴撳瓨鏁伴噺鍙樺姩璁板綍
+    /// </summary>
+    [Route("api/StockQuantityChangeRecord")]
+    [ApiController]
+    public class StockQuantityChangeRecordController : ApiBaseController<IStockQuantityChangeRecordService, Dt_StockQuantityChangeRecord>
+    {
+        public StockQuantityChangeRecordController(IStockQuantityChangeRecordService service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/CabinOrderController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/CabinOrderController.cs"
new file mode 100644
index 0000000..28b69d4
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/CabinOrderController.cs"
@@ -0,0 +1,34 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    [Route("api/CabinOrder")]
+    [ApiController]
+    public class CabinOrderController : ApiBaseController<ICabinOrderServices, Dt_CabinOrder>
+    {
+        public CabinOrderController(ICabinOrderServices service) : base(service)
+        {
+        }
+
+
+        [HttpPost,Route("GetUpstreamOrder"),AllowAnonymous]
+        public WebResponseContent GetUpstreamOrder()
+        {
+            return Service.GetUpstreamOrder();
+        }
+
+
+        //[HttpPost, Route("CompleteOrder"), AllowAnonymous]
+        //public WebResponseContent CompleteOrder(string order_no)
+        //{
+        //    return Service.CompleteOrder(order_no);
+        //}
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/CabinOrderDetailController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/CabinOrderDetailController.cs"
new file mode 100644
index 0000000..8a6649b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/CabinOrderDetailController.cs"
@@ -0,0 +1,17 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core.BaseController;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    [Route("api/CabinOrderDetail")]
+    [ApiController]
+    public class CabinOrderDetailController : ApiBaseController<ICabinOrderDetailServices, Dt_CabinOrderDetail>
+    {
+        public CabinOrderDetailController(ICabinOrderDetailServices service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/CabinOrderDetailHtyController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/CabinOrderDetailHtyController.cs"
new file mode 100644
index 0000000..5d07d9f
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/CabinOrderDetailHtyController.cs"
@@ -0,0 +1,15 @@
+锘�//using Microsoft.AspNetCore.Http;
+//using Microsoft.AspNetCore.Mvc;
+//using WIDESEA_ISquareCabinServices;
+
+//namespace WIDESEA_WMSServer.Controllers
+//{
+//    [Route("api/CabinOrderDetail")]
+//    [ApiController]
+//    public class CabinOrderDetailHtyController : ApiBaseController<ICabinOrderDetailHtyServices, Dt_CabinOrderDetail_Hty>
+//    {
+//        public CabinOrderDetailHtyController(ICabinOrderDetailHtyServices service) : base(service)
+//        {
+//        }
+//    }
+//}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/CustomerController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/CustomerController.cs"
new file mode 100644
index 0000000..80d6370
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/CustomerController.cs"
@@ -0,0 +1,18 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core.BaseController;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    [Route("api/Customer")]
+    [ApiController]
+    public class CustomerController : ApiBaseController<ICustomerServices, Dt_Customer>
+    {
+        public CustomerController(ICustomerServices service) : base(service)
+        {
+
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/DeliveryOrderController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/DeliveryOrderController.cs"
new file mode 100644
index 0000000..0460675
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/DeliveryOrderController.cs"
@@ -0,0 +1,37 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    [Route("api/DeliveryOrder")]
+    [ApiController]
+    public class DeliveryOrderController : ApiBaseController<IDeliveryOrderServices, Dt_DeliveryOrder>
+    {
+        public DeliveryOrderController(IDeliveryOrderServices service) : base(service)
+        {
+        }
+
+
+        [HttpPost,Route("GetUpstreamOutOrder"),AllowAnonymous]
+        public WebResponseContent GetUpstreamOutOrder()
+        {
+            return Service.GetUpstreamOutOrder();
+        }
+
+        /// <summary>
+        /// 鐩樼偣鍑哄簱鎺ュ彛
+        /// </summary>
+        /// <param name="externalOrderNo"></param>
+        /// <returns></returns>
+        [HttpPost, Route("InventoryGood"), AllowAnonymous]
+        public WebResponseContent InventoryGood(string externalOrderNo)
+        {
+            return Service.InventoryGood(externalOrderNo);
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/DeliveryOrderDetailController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/DeliveryOrderDetailController.cs"
new file mode 100644
index 0000000..869d7fe
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/DeliveryOrderDetailController.cs"
@@ -0,0 +1,17 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core.BaseController;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    [Route("api/DeliveryOrderDetail")]
+    [ApiController]
+    public class DeliveryOrderDetailController : ApiBaseController<IDeliveryOrderDetailServices, Dt_DeliveryOrderDetail>
+    {
+        public DeliveryOrderDetailController(IDeliveryOrderDetailServices service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/IWarehouseTypeServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/IWarehouseTypeServices.cs"
new file mode 100644
index 0000000..9138ee2
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/IWarehouseTypeServices.cs"
@@ -0,0 +1,6 @@
+锘縩amespace WIDESEA_WMSServer.Controllers
+{
+    public interface IWarehouseTypeServices
+    {
+    }
+}
\ No newline at end of file
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/InventoryController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/InventoryController.cs"
new file mode 100644
index 0000000..e840b8a
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/InventoryController.cs"
@@ -0,0 +1,33 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_DTO.SquareCabin;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+using static WIDESEA_DTO.SquareCabin.TowcsDto;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    [Route("api/Inventory")]
+    [ApiController]
+    public class InventoryController : ApiBaseController<IInventoryServices, Dt_Inventory>
+    {
+        public InventoryController(IInventoryServices service) : base(service)
+        {
+        }
+
+        [HttpPost,Route("OrderFeedback"),AllowAnonymous]
+        public ApiResponse<Dt_Inventory> OrderFeedback([FromBody]EdiOrderCallbackRequest request)
+        {
+            return Service.OrderFeedback(request);
+        }
+
+        [HttpPost,Route("GetInventoryList"),AllowAnonymous]
+        public WebResponseContent GetInventoryList(string goods_no, string batch_num)
+        {
+            return Service.GetInventoryList(goods_no, batch_num);
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/MedicineGoodsController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/MedicineGoodsController.cs"
new file mode 100644
index 0000000..a88ae72
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/MedicineGoodsController.cs"
@@ -0,0 +1,31 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    [Route("api/MedicineGoods")]
+    [ApiController]
+    public class MedicineGoodsController : ApiBaseController<IMedicineGoodsServices, Dt_MedicineGoods>
+    {
+        public MedicineGoodsController(IMedicineGoodsServices service) : base(service)
+        {
+
+        }
+        [HttpPost,Route("GetMedicineGoodsInfom"),AllowAnonymous]
+        public WebResponseContent GetMedicineGoodsInfom()
+        {
+            return Service.GetMedicineGoodsInfom();
+        }
+
+        [HttpPost, Route("DeleteProduct"), AllowAnonymous]
+        public WebResponseContent DeleteProduct(string goodsno)
+        {
+            return Service.DeleteProduct(goodsno);
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/SupplierController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/SupplierController.cs"
new file mode 100644
index 0000000..195fd99
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/SupplierController.cs"
@@ -0,0 +1,26 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    [Route("api/Supplier")]
+    [ApiController]
+    public class SupplierController : ApiBaseController<ISupplierServices, Dt_Supplier>
+    {
+        public SupplierController(ISupplierServices service) : base(service)
+        {
+
+        }
+
+        [HttpPost,Route("SyncSupplier"),AllowAnonymous]
+        public WebResponseContent SyncSupplier()
+        {
+            return Service.SyncSupplier();
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/WarehouseTypeController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/WarehouseTypeController.cs"
new file mode 100644
index 0000000..1bc9364
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/SquareCabin/WarehouseTypeController.cs"
@@ -0,0 +1,17 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core.BaseController;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    [Route("api/WarehouseType")]
+    [ApiController]
+    public class WarehouseTypeController : ApiBaseController<IWarehouseTypeServices, Dt_WarehouseType>
+    {
+        public WarehouseTypeController(IWarehouseTypeServices service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoController.cs"
new file mode 100644
index 0000000..089a068
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoController.cs"
@@ -0,0 +1,25 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_DTO.Stock;
+using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Stock
+{
+    /// <summary>
+    /// 搴撳瓨
+    /// </summary>
+    [Route("api/StockInfo")]
+    [ApiController]
+    public class StockInfoController : ApiBaseController<IStockInfoService, Dt_StockInfo>
+    {
+        public StockInfoController(IStockInfoService service) : base(service)
+        {
+        }
+
+        
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoDetailController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoDetailController.cs"
new file mode 100644
index 0000000..5ff0f67
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoDetailController.cs"
@@ -0,0 +1,20 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core.BaseController;
+using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Stock
+{
+    /// <summary>
+    /// 搴撳瓨鏄庣粏
+    /// </summary>
+    [Route("api/StockInfoDetail")]
+    [ApiController]
+    public class StockInfoDetailController : ApiBaseController<IStockInfoDetailService, Dt_StockInfoDetail>
+    {
+        public StockInfoDetailController(IStockInfoDetailService service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoDetail_HtyController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoDetail_HtyController.cs"
new file mode 100644
index 0000000..59d8b50
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoDetail_HtyController.cs"
@@ -0,0 +1,22 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core.BaseController;
+using WIDESEA_DTO.Stock;
+using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Stock
+{
+    /// <summary>
+    /// 搴撳瓨鏄庣粏鍘嗗彶
+    /// </summary>
+    [Route("api/StockInfoDetail_Hty")]
+    [ApiController]
+    public class StockInfoDetail_HtyController : ApiBaseController<IStockInfoDetail_HtyService, Dt_StockInfoDetail_Hty>
+    {
+        public StockInfoDetail_HtyController(IStockInfoDetail_HtyService service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfo_HtyController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfo_HtyController.cs"
new file mode 100644
index 0000000..e7a7f70
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfo_HtyController.cs"
@@ -0,0 +1,22 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core.BaseController;
+using WIDESEA_DTO.Stock;
+using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Stock
+{
+    /// <summary>
+    /// 搴撳瓨鍘嗗彶
+    /// </summary>
+    [Route("api/StockInfo_Hty")]
+    [ApiController]
+    public class StockInfo_HtyController : ApiBaseController<IStockInfo_HtyService, Dt_StockInfo_Hty>
+    {
+        public StockInfo_HtyController(IStockInfo_HtyService service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockViewController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockViewController.cs"
new file mode 100644
index 0000000..69857e1
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockViewController.cs"
@@ -0,0 +1,38 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Options;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_DTO.Stock;
+using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Stock
+{
+    /// <summary>
+    /// 搴撳瓨瑙嗗浘
+    /// </summary>
+    [Route("api/StockView")]
+    [Authorize, ApiController]
+    public class StockViewController : Controller
+    {
+        private readonly IStockViewService _stockViewService;
+        public StockViewController(IStockViewService stockViewService) 
+        {
+            _stockViewService = stockViewService;
+        }
+
+        [HttpPost, Route("GetPageData")]
+        public PageGridData<StockViewDTO> GetPageData([FromBody] PageDataOptions options)
+        {
+            return _stockViewService.GetPageData(options);
+        }
+
+        [HttpPost, Route("GetDetailPage")]
+        public object GetDetailPage([FromBody] PageDataOptions pageData)
+        {
+            return _stockViewService.GetDetailPage(pageData);
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_DictionaryController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_DictionaryController.cs"
new file mode 100644
index 0000000..ac11540
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_DictionaryController.cs"
@@ -0,0 +1,31 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+using WIDESEA_Core.BaseController;
+using WIDESEA_Core.Helper;
+using WIDESEA_ISystemService;
+using WIDESEA_Model.Models;
+using WIDESEA_DTO.System;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    /// <summary>
+    /// 瀛楀吀
+    /// </summary>
+    [Route("api/Sys_Dictionary")]
+    [ApiController]
+    public class Sys_DictionaryController : ApiBaseController<ISys_DictionaryService, Sys_Dictionary>
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+        public Sys_DictionaryController(ISys_DictionaryService service, IHttpContextAccessor httpContextAccessor) : base(service)
+        {
+            _httpContextAccessor = httpContextAccessor;
+        }
+
+        [HttpPost, Route("GetVueDictionary"), AllowAnonymous]
+        public IActionResult GetVueDictionary([FromBody] string[] dicNos)
+        {
+            return Json(Service.GetVueDictionary(dicNos));
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_DictionaryListController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_DictionaryListController.cs"
new file mode 100644
index 0000000..26a8597
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_DictionaryListController.cs"
@@ -0,0 +1,19 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core.BaseController;
+using WIDESEA_ISystemService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    /// <summary>
+    /// 瀛楀吀鏄庣粏
+    /// </summary>
+    [Route("api/Sys_DictionaryList")]
+    [ApiController]
+    public class Sys_DictionaryListController : ApiBaseController<ISys_DictionaryListService, Sys_DictionaryList>
+    {
+        public Sys_DictionaryListController(ISys_DictionaryListService service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_LogController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_LogController.cs"
new file mode 100644
index 0000000..3cd2f46
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_LogController.cs"
@@ -0,0 +1,20 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core.BaseController;
+using WIDESEA_ISystemService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    /// <summary>
+    /// 鏃ュ織
+    /// </summary>
+    [Route("api/Sys_Log")]
+    [ApiController]
+    public class Sys_LogController : ApiBaseController<ISys_LogService, Sys_Log>
+    {
+        public Sys_LogController(ISys_LogService service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_MenuController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_MenuController.cs"
new file mode 100644
index 0000000..d6dcb2f
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_MenuController.cs"
@@ -0,0 +1,67 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_ISystemService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    /// <summary>
+    /// 鑿滃崟
+    /// </summary>
+    [Route("api/Sys_Menu")]
+    [ApiController]
+    public class Sys_MenuController : ApiBaseController<ISys_MenuService, Sys_Menu>
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+        public Sys_MenuController(ISys_MenuService menuService, IHttpContextAccessor httpContextAccessor) : base(menuService)
+        {
+            _httpContextAccessor = httpContextAccessor;
+        }
+        [HttpGet, HttpPost, Route("getTreeMenu")]
+        public IActionResult GetTreeMenu()
+        {
+            return Json(Service.GetCurrentMenuActionList());
+        }
+
+        [HttpPost, Route("getMenu")]
+        public IActionResult GetMenu()
+        {
+            return Json(Service.GetMenu());
+        }
+
+        [HttpPost, Route("getTreeItem")]
+        public IActionResult GetTreeItem(int menuId)
+        {
+            return Json(Service.GetTreeItem(menuId));
+        }
+
+        [HttpPost, Route("save")]
+        public ActionResult Save([FromBody] Sys_Menu menu)
+        {
+            if (App.User.UserId == 1)
+            {
+                return Json(Service.Save(menu));
+            }
+            else
+            {
+                return Json(WebResponseContent.Instance.Error("浠呴檺瓒呯骇绠$悊鍛樹慨鏀规暟鎹�"));
+            }
+        }
+        [HttpPost, Route("delMenu")]
+        public WebResponseContent DelMenu(int menuId)
+        {
+            return Service.DelMenu(menuId);
+        }
+
+        /// <summary>
+        /// 鑾峰彇棣栭〉鎵�鏈変粨搴撴潈闄�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet, HttpPost, Route("GetTreeMenuPDAStash")]
+        public IActionResult GetTreeMenuPDAStash(int ParentId)
+        {
+            return Json(Service.GetTreeMenuPDAStash(ParentId));
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_RoleController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_RoleController.cs"
new file mode 100644
index 0000000..22fc324
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_RoleController.cs"
@@ -0,0 +1,84 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Routing;
+using WIDESEA_DTO.System;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_ISystemService;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.System;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    /// <summary>
+    /// 瑙掕壊
+    /// </summary>
+    [Route("api/Sys_Role")]
+    [ApiController]
+    public class Sys_RoleController : ApiBaseController<ISys_RoleService, Sys_Role>
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+        public Sys_RoleController(ISys_RoleService service, IHttpContextAccessor httpContextAccessor) : base(service)
+        {
+            _httpContextAccessor = httpContextAccessor;
+        }
+
+        [HttpPost, Route("getUserChildRoles")]
+        public IActionResult GetUserChildRoles()
+        {
+            int roleId = App.User.RoleId;
+            var data = Service.GetAllChildren(roleId);
+
+            if (App.User.IsSuperAdmin)
+            {
+                return Json(WebResponseContent.Instance.OK(null, data));
+            }
+            //涓嶆槸瓒呯骇绠$悊锛屽皢鑷繁鐨勮鑹叉煡鍑烘潵锛屽湪鏍戝舰鑿滃崟涓婁綔涓烘牴鑺傜偣
+            var self = data.Where(x => x.Id == roleId)
+                 .Select(s => new RoleNodes()
+                 {
+                     Id = s.Id,
+                     ParentId = 0,//灏嗚嚜宸辩殑瑙掕壊浣滀负root鑺傜偣
+                     RoleName = s.RoleName
+                 }).ToList();
+            data.AddRange(self);
+            return Json(WebResponseContent.Instance.OK(null, data));
+        }
+
+        [HttpPost, Route("getCurrentTreePermission")]
+        public IActionResult GetCurrentTreePermission()
+        {
+            return Json(Service.GetCurrentTreePermission());
+        }
+
+        [HttpPost, Route("getUserTreePermission")]
+        public IActionResult GetUserTreePermission(int roleId)
+        {
+            return Json(Service.GetUserTreePermission(roleId));
+        }
+
+        [HttpPost, Route("getCurrentTreePermissionPDA")]
+        public IActionResult GetCurrentTreePermissionPDA()
+        {
+            return Json(Service.GetCurrentTreePermissionPDA());
+        }
+        [HttpPost, Route("getUserTreePermissionPDA")]
+        public IActionResult GetUserTreePermissionPDA(int roleId)
+        {
+            return Json(Service.GetUserTreePermissionPDA(roleId));
+        }
+
+        [HttpPost, Route("savePermission")]
+        public IActionResult SavePermission([FromBody] List<UserPermissionDTO> userPermissions, int roleId)
+        {
+            return Json(Service.SavePermission(userPermissions, roleId));
+        }
+
+        [HttpPost, Route("SavePermissionPDA")]
+        public IActionResult SavePermissionPDA([FromBody] List<UserPermissionDTO> userPermissions, int roleId)
+        {
+            return Json(Service.SavePermissionPDA(userPermissions, roleId));
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_TenantController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_TenantController.cs"
new file mode 100644
index 0000000..d64cd8d
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_TenantController.cs"
@@ -0,0 +1,36 @@
+锘�
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.HttpContextUser;
+using WIDESEA_ISystemService;
+using WIDESEA_Model;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    /// <summary>
+    /// 绉熸埛
+    /// </summary>
+    [Route("api/tenant")]
+    [ApiController]
+    public class Sys_TenantController : ApiBaseController<ISys_TenantService, Sys_Tenant>
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+
+        public Sys_TenantController(ISys_TenantService tenantService, IHttpContextAccessor httpContextAccessor) : base(tenantService)
+        {
+            _httpContextAccessor = httpContextAccessor;
+        }
+
+        [HttpGet, Route("initTenantInfo"), AllowAnonymous]
+        public WebResponseContent InitTenantInfo(string tenantName, int tenantType)
+        {
+            return Service.InitTenantInfo(tenantName, tenantType);
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_UserController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_UserController.cs"
new file mode 100644
index 0000000..0d42fac
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_UserController.cs"
@@ -0,0 +1,157 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Caching.Memory;
+using Newtonsoft.Json;
+using StackExchange.Profiling;
+using WIDESEA_Core;
+using WIDESEA_Core.Authorization;
+using WIDESEA_Core.BaseController;
+using WIDESEA_Core.Caches;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Extensions;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.HttpContextUser;
+using WIDESEA_Core.Utilities;
+using WIDESEA_ISystemService;
+using WIDESEA_Model;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    /// <summary>
+    /// 鐢ㄦ埛
+    /// </summary>
+    [Route("api/User")]
+    [ApiController]
+    public class Sys_UserController : ApiBaseController<ISys_UserService, Sys_User>
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+        private readonly ICacheService _cacheService;
+
+        public Sys_UserController(ISys_UserService userService, IHttpContextAccessor httpContextAccessor, ICacheService cacheService) : base(userService)
+        {
+            _httpContextAccessor = httpContextAccessor;
+            _cacheService = cacheService;
+        }
+
+        [HttpPost, Route("login"), AllowAnonymous]
+        public IActionResult Login([FromBody] LoginInfo loginInfo)
+        {
+            return Json(Service.Login(loginInfo));
+        }
+
+        [HttpPost, Route("swgLogin"), AllowAnonymous]
+        public dynamic SwgLogin([FromBody] SwaggerLoginRequest loginRequest)
+        {
+            if (loginRequest is null)
+            {
+                return new { result = false };
+            }
+
+            try
+            {
+                LoginInfo loginInfo = new LoginInfo
+                {
+                    Password = loginRequest.pwd,
+                    UserName = loginRequest.name
+                };
+                var result = Service.Login(loginInfo);
+                if (result.Status)
+                {
+                    HttpContext.SuccessSwagger();
+                    Dictionary<string, object>? dict = JsonConvert.DeserializeObject<Dictionary<string, object>>(result.Data.Serialize());
+                    if (dict != null)
+                    {
+                        HttpContext.SuccessSwaggerJwt((dict.ContainsKey("token") ? dict["token"].ToString() : "") ?? "");
+                    }
+                    string str = HttpContext.GetSuccessSwaggerJwt();
+                    return new { result = true };
+                }
+            }
+            catch (Exception ex)
+            {
+
+            }
+
+            return new { result = false };
+        }
+
+        [HttpPost, Route("getCurrentUserInfo")]
+        public WebResponseContent GetCurrentUser()
+        {
+            return Service.GetCurrentUserInfo();
+        }
+
+        [HttpPost, Route("modifyPwd")]
+        public IActionResult ModifyPwd(string oldPwd, string newPwd)
+        {
+            return Json(Service.ModifyPwd(oldPwd, newPwd));
+        }
+
+        [HttpGet, Route("getVierificationCode"), AllowAnonymous]
+        public IActionResult GetVierificationCode()
+        {
+            //var html = MiniProfiler.Current.RenderIncludes(_httpContextAccessor.HttpContext);
+            string code = "1234" /*VierificationCode.RandomText()*/;
+            var data = new
+            {
+                img = VierificationCode.CreateBase64Imgage(code),
+                uuid = Guid.NewGuid()
+            };
+
+            return Json(data);
+        }
+        [HttpGet, Route("SerializeJwt"), AllowAnonymous]
+        public WebResponseContent SerializeJwt(string code)
+        {
+            return WebResponseContent.Instance.OK(data: JwtHelper.SerializeJwt(code));
+        }
+        [HttpPost, Route("replaceToken")]
+        public WebResponseContent ReplaceToken()
+        {
+            WebResponseContent responseContent = new WebResponseContent();
+            try
+            {
+                string token = App.User.GetToken();
+                if (string.IsNullOrEmpty(token))
+                {
+                    return responseContent = WebResponseContent.Instance.Error("token鏃犳晥锛岃閲嶆柊鐧诲綍锛�");
+                }
+                TokenModelJwt tokenModelJwt = new TokenModelJwt()
+                {
+                    RoleId = App.User.RoleId,
+                    TenantId = App.User.TenantId,
+                    UserId = App.User.UserId,
+                    UserName = App.User.UserName
+                };
+                string newToken = JwtHelper.IssueJwt(tokenModelJwt);
+
+                App.User.UpdateToke(newToken, App.User.UserId);
+                return responseContent = WebResponseContent.Instance.OK(data: newToken);
+            }
+            catch (Exception ex)
+            {
+                return responseContent.Error(ex.Message);
+            }
+
+        }
+        /// <summary>
+        /// 鏇存柊瀵嗙爜
+        /// </summary>
+        /// <param name="password">瀵嗙爜</param>
+        /// <param name="userName">鐢ㄦ埛鍚�</param>
+        /// <returns></returns>
+        [HttpPost,Route("ModifyUserPwd")]
+        public WebResponseContent ModifyUserPwd(string password, string userName)
+        {
+            return Service.ModifyUserPwd(password,userName);
+        }
+    }
+
+    public class SwaggerLoginRequest
+    {
+        public string name { get; set; }
+        public string pwd { get; set; }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
new file mode 100644
index 0000000..dcc27d0
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
@@ -0,0 +1,26 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Common.CommonEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_DTO.Stock;
+using WIDESEA_DTO.Task;
+using WIDESEA_ITaskInfoService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.TaskInfo
+{
+    /// <summary>
+    /// 浠诲姟
+    /// </summary>
+    [Route("api/Task")]
+    [ApiController]
+    public class TaskController : ApiBaseController<ITaskService, Dt_Task>
+    {
+        public TaskController(ITaskService service) : base(service)
+        {
+        }
+
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/Task_HtyController.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/Task_HtyController.cs"
new file mode 100644
index 0000000..16f12a7
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/Task_HtyController.cs"
@@ -0,0 +1,23 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_DTO.Stock;
+using WIDESEA_ITaskInfoService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.TaskInfo
+{
+    /// <summary>
+    /// 浠诲姟鍘嗗彶
+    /// </summary>
+    [Route("api/Task_Hty")]
+    [ApiController]
+    public class Task_HtyController : ApiBaseController<ITask_HtyService, Dt_Task_Hty>
+    {
+        public Task_HtyController(ITask_HtyService service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/CustomerJob.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/CustomerJob.cs"
new file mode 100644
index 0000000..8347d34
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/CustomerJob.cs"
@@ -0,0 +1,21 @@
+锘縰sing Pomelo.AspNetCore.TimedJob;
+using WIDESEA_ISquareCabinServices;
+
+namespace WIDESEA_WMSServer
+{
+    public class CustomerJob:Job
+    {
+        private readonly ICustomerServices _customerServices;
+
+        public CustomerJob(ICustomerServices customerServices)
+        {
+            _customerServices = customerServices;
+        }
+
+        [Invoke(Begin = "2025-09-01", Interval = 1000 * 5, IsEnabled = false, SkipWhileExecuting = true)]
+        public void Run()
+        {
+            _customerServices.GetCustomerList();
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutoMapperConfig.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutoMapperConfig.cs"
new file mode 100644
index 0000000..2892fb3
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutoMapperConfig.cs"
@@ -0,0 +1,18 @@
+锘縰sing AutoMapper;
+
+namespace WIDESEA_WMSServer.Filter
+{
+    /// <summary>
+    /// 闈欐�佸叏灞� AutoMapper 閰嶇疆鏂囦欢
+    /// </summary>
+    public class AutoMapperConfig
+    {
+        public static MapperConfiguration RegisterMappings()
+        {
+            return new MapperConfiguration(cfg =>
+            {
+                cfg.AddProfile(new CustomProfile());
+            });
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutoMapperSetup.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutoMapperSetup.cs"
new file mode 100644
index 0000000..0e51421
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutoMapperSetup.cs"
@@ -0,0 +1,16 @@
+锘縩amespace WIDESEA_WMSServer.Filter
+{
+    /// <summary>
+    /// Automapper 鍚姩鏈嶅姟
+    /// </summary>
+    public static class AutoMapperSetup
+    {
+        public static void AddAutoMapperSetup(this IServiceCollection services)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+
+            services.AddAutoMapper(typeof(AutoMapperConfig));
+            AutoMapperConfig.RegisterMappings();
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutofacPropertityModuleReg.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutofacPropertityModuleReg.cs"
new file mode 100644
index 0000000..d8f1854
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutofacPropertityModuleReg.cs"
@@ -0,0 +1,16 @@
+锘縰sing Autofac;
+using Microsoft.AspNetCore.Mvc;
+
+namespace WIDESEA_WMSServer.Filter
+{
+    public class AutofacPropertityModuleReg : Autofac.Module
+    {
+        protected override void Load(ContainerBuilder builder)
+        {
+            var controllerBaseType = typeof(ControllerBase);
+            builder.RegisterAssemblyTypes(typeof(Program).Assembly)
+                .Where(t => controllerBaseType.IsAssignableFrom(t) && t != controllerBaseType)
+                .PropertiesAutowired();
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs"
new file mode 100644
index 0000000..8636c46
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs"
@@ -0,0 +1,38 @@
+锘縰sing Autofac.Builder;
+using AutoMapper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common.OrderEnum;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO;
+using WIDESEA_DTO.Inbound;
+using WIDESEA_DTO.Outbound;
+using WIDESEA_DTO.System;
+using WIDESEA_DTO.Task;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Filter
+{
+    public class CustomProfile : Profile
+    {
+        /// <summary>
+        /// 閰嶇疆鏋勯�犲嚱鏁帮紝鐢ㄦ潵鍒涘缓鍏崇郴鏄犲皠
+        /// </summary>
+        public CustomProfile()
+        {
+            CreateMap<Sys_Menu, MenuDTO>();
+            CreateMap<InboundOrderDetailAddDTO, Dt_InboundOrderDetail>().ForMember(x => x.OrderDetailStatus, b => b.MapFrom(b => 0));
+            CreateMap<InboundOrderAddDTO, Dt_InboundOrder>();
+
+            CreateMap<Dt_StockInfoDetail, Dt_StockQuantityChangeRecord>().ForMember(x => x.SerilNumber, b => b.MapFrom(b => b.SerialNumber)).ForMember(x => x.StockDetailId, b => b.MapFrom(b => b.Id));
+            CreateMap<OutboundOrderDetailAddDTO, Dt_OutboundOrderDetail>().ForMember(x => x.OrderDetailStatus, b => b.MapFrom(b => 0));
+            CreateMap<OutboundOrderAddDTO, Dt_OutboundOrder>();
+            CreateMap<Dt_ReceiveOrderDetail, Dt_CheckOrder>().ForMember(a => a.ReceivedQuantity, b => b.MapFrom(x => x.ReceivedQuantity)).ForMember(a => a.MaterielCode, b => b.MapFrom(x => x.MaterielCode)).ForMember(a => a.CheckOrderStatus, b => b.MapFrom(x => CheckOrderStatusEnum.NotCheck.ObjToInt()));
+
+            CreateMap<Dt_Task, WMSTaskDTO>();
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/GoodsJob.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/GoodsJob.cs"
new file mode 100644
index 0000000..f07b525
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/GoodsJob.cs"
@@ -0,0 +1,22 @@
+锘縰sing Pomelo.AspNetCore.TimedJob;
+using WIDESEA_ISquareCabinServices;
+using static WIDESEA_DTO.SquareCabin.TowcsDto;
+
+namespace WIDESEA_WMSServer
+{
+    public class GoodsJob : Job
+    {
+        private readonly IMedicineGoodsServices _medicineGoodsServices;
+        public GoodsJob(IMedicineGoodsServices medicineGoodsServices)
+        {
+            _medicineGoodsServices = medicineGoodsServices;
+        }
+        //姣忛殧1绉掓墽琛屼竴娆�
+        [Invoke(Begin = "2025-09-01", Interval = 1000 * 5, IsEnabled = false, SkipWhileExecuting = true)]
+        public void Run()
+        {
+            _medicineGoodsServices.GetMedicineGoodsInfom();
+            //_medicineGoodsServices.ProductSynchronous();
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/InOrderJob.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/InOrderJob.cs"
new file mode 100644
index 0000000..fc8db88
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/InOrderJob.cs"
@@ -0,0 +1,22 @@
+锘縰sing Pomelo.AspNetCore.TimedJob;
+using WIDESEA_ISquareCabinServices;
+
+namespace WIDESEA_WMSServer
+{
+    public class InOrderJob : Job
+    {
+        private readonly ICabinOrderServices _cabinOrderServices;
+        public InOrderJob(ICabinOrderServices cabinOrderServices)
+        {
+            _cabinOrderServices = cabinOrderServices;
+        }
+        //姣忛殧1绉掓墽琛屼竴娆�
+        [Invoke(Begin = "2025-09-01", Interval = 1000 * 5, IsEnabled = false,SkipWhileExecuting = true)]
+        public void Run()
+        {
+            //_cabinOrderServices.GetUpstreamOrder();
+            _cabinOrderServices.EdiIn();
+            _cabinOrderServices.CompleteAllOrders();
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/OutOrderJob.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/OutOrderJob.cs"
new file mode 100644
index 0000000..1eaa90c
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/OutOrderJob.cs"
@@ -0,0 +1,25 @@
+锘縰sing Pomelo.AspNetCore.TimedJob;
+using WIDESEA_ISquareCabinServices;
+
+namespace WIDESEA_WMSServer
+{
+    public class OutOrderJob : Job
+    {
+        private readonly IDeliveryOrderServices _deliveryOrderServices;
+        public OutOrderJob(IDeliveryOrderServices deliveryOrderServices)
+        {
+            _deliveryOrderServices = deliveryOrderServices;
+        }
+        //姣忛殧1绉掓墽琛屼竴娆�
+        [Invoke(Begin = "2025-09-01", Interval = 1000 * 5, IsEnabled =true, SkipWhileExecuting = true)]
+        public void Run()
+        {
+            //鑾峰彇涓婃父鍑哄簱鍗曟暟鎹�
+            //_deliveryOrderServices.GetUpstreamOutOrder();
+            //涓嬪彂wcs
+            //_deliveryOrderServices.EdiOut();
+            _deliveryOrderServices.CompleteAllOutOrders();
+
+        }
+    }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
new file mode 100644
index 0000000..e96a56f
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
@@ -0,0 +1,147 @@
+using System.Reflection;
+using System.Text;
+using Autofac;
+using Autofac.Core;
+using Autofac.Extensions.DependencyInjection;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Mvc.Controllers;
+using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
+using Microsoft.Extensions.DependencyInjection.Extensions;
+using Microsoft.Extensions.FileProviders;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
+using Newtonsoft.Json.Serialization;
+using WIDESEA_Core;
+using WIDESEA_Core.Authorization;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Core;
+using WIDESEA_Core.Extensions;
+using WIDESEA_Core.Filter;
+using WIDESEA_Core.Helper;
+//using WIDESEA_Core.HostedService;
+using WIDESEA_Core.Middlewares;
+using WIDESEA_WMSServer.Filter;
+
+var builder = WebApplication.CreateBuilder(args);
+
+builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()).ConfigureContainer<ContainerBuilder>(builder =>
+{
+    builder.RegisterModule<AutofacModuleRegister>();//带有接口层的服务注入
+    builder.RegisterModule<AutofacPropertityModuleReg>();//
+}).ConfigureAppConfiguration((hostingContext, config) =>
+{
+    hostingContext.Configuration.ConfigureApplication();
+    config.Sources.Clear();
+    config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
+}); ;
+builder.ConfigureApplication();
+
+//App.ExpDateTime = DateTime.Parse("2025-03-31 00:00:00");//过期时间
+
+// 2、配置服务
+builder.Services.AddSingleton(new AppSettings(builder.Configuration));//注册
+builder.Services.AddAllOptionRegister();//读取配置文件
+builder.Services.AddMemoryCacheSetup();//缓存
+builder.Services.AddWebSocketSetup();
+builder.Services.AddSqlsugarSetup();//SqlSugar 启动服务
+builder.Services.AddDbSetup();//Db 启动服务
+builder.Services.AddInitializationHostServiceSetup();//应用初始化服务注入
+//builder.Services.AddHostedService<PermissionDataHostService>();//数据权限
+
+builder.Services.AddAutoMapperSetup();
+
+builder.Services.AddCorsSetup();
+
+builder.Services.AddMiniProfilerSetup();
+
+builder.Services.AddSwaggerSetup();
+
+builder.Services.AddHttpContextSetup();
+
+
+
+
+builder.Services.AddMvc(options =>
+{
+    options.Filters.Add(typeof(ApiAuthorizeFilter));
+    options.Filters.Add(typeof(ActionExecuteFilter));
+});
+
+builder.Services.AddAuthorizationSetup();
+
+builder.Services.AddIpPolicyRateLimitSetup(builder.Configuration);//IPLimit限流 启动服务
+
+builder.Services.AddScoped<UseServiceDIAttribute>();
+
+builder.Services.AddSession();
+
+builder.Services.AddHttpClient();
+
+builder.Services.AddControllers(o =>
+{
+    o.Filters.Add(typeof(GlobalExceptionsFilter));//全局异常
+})
+.AddNewtonsoftJson(options =>
+{
+    options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Serialize;
+    //options.SerializerSettings.ContractResolver = new DefaultContractResolver();
+    options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
+    options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
+    options.SerializerSettings.NullValueHandling = NullValueHandling.Include;
+    options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Local;
+    options.SerializerSettings.Converters.Add(new StringEnumConverter());
+});
+// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
+builder.Services.AddEndpointsApiExplorer();
+
+builder.Services.Replace(ServiceDescriptor.Transient<IControllerActivator, ServiceBasedControllerActivator>());
+Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
+
+
+builder.Services.AddTimedJob();//注入时间job
+
+var app = builder.Build();
+
+// 3、配置中间件
+app.UseMiniProfiler();//性能分析器
+app.ConfigureApplication();//配置文件
+app.UseApplicationSetup();//启动配置
+
+app.UseAllServicesMiddle(builder.Services);
+
+app.UseSession();
+app.UseSwaggerAuthorized();
+app.UseSwaggerMiddle(() => Assembly.GetExecutingAssembly().GetManifestResourceStream("WIDESEA_WMSServer.index.html") ?? throw new Exception("WIDESEA_WMSServer.index.html文件"));
+app.UseIpLimitMiddle();
+app.UseApiLogMiddleware();
+
+
+//todo
+//app.UseRecordAccessLogsMiddle();
+
+app.UseCors(AppSettings.Get(new string[] { "Cors", "PolicyName" }));
+
+DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions();
+defaultFilesOptions.DefaultFileNames.Clear();
+defaultFilesOptions.DefaultFileNames.Add("index.html");
+app.UseDefaultFiles(defaultFilesOptions);
+app.UseMiddleware<HttpRequestMiddleware>();
+app.UseStaticFiles();
+
+app.UseStaticFiles(new StaticFileOptions
+{
+    FileProvider = new PhysicalFileProvider(App.WebHostEnvironment.WebRootPath)
+});
+
+app.UseCookiePolicy();
+app.UseStatusCodePages();
+
+app.UseTimedJob();//使用时间定时器
+app.UseRouting();
+
+app.UseAuthentication();
+app.UseAuthorization();
+
+app.MapControllers();
+
+app.Run();
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile.pubxml" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile.pubxml"
new file mode 100644
index 0000000..86bb19c
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile.pubxml"
@@ -0,0 +1,21 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+https://go.microsoft.com/fwlink/?LinkID=208121.
+-->
+<Project>
+  <PropertyGroup>
+    <DeleteExistingFiles>false</DeleteExistingFiles>
+    <ExcludeApp_Data>false</ExcludeApp_Data>
+    <LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
+    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
+    <LastUsedPlatform>Any CPU</LastUsedPlatform>
+    <PublishProvider>FileSystem</PublishProvider>
+    <PublishUrl>E:\IISText\HuanAn\WMS</PublishUrl>
+    <WebPublishMethod>FileSystem</WebPublishMethod>
+    <_TargetId>Folder</_TargetId>
+    <SiteUrlToLaunchAfterPublish />
+    <TargetFramework>net6.0</TargetFramework>
+    <ProjectGuid>d81a65b5-47d1-40c1-8fde-7d24ff003f51</ProjectGuid>
+    <SelfContained>false</SelfContained>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile1.pubxml" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile1.pubxml"
new file mode 100644
index 0000000..36847ea
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile1.pubxml"
@@ -0,0 +1,17 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+https://go.microsoft.com/fwlink/?LinkID=208121.
+-->
+<Project>
+  <PropertyGroup>
+    <DeleteExistingFiles>false</DeleteExistingFiles>
+    <ExcludeApp_Data>false</ExcludeApp_Data>
+    <LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
+    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
+    <LastUsedPlatform>Any CPU</LastUsedPlatform>
+    <PublishProvider>FileSystem</PublishProvider>
+    <PublishUrl>bin\Release\net6.0\publish\</PublishUrl>
+    <WebPublishMethod>FileSystem</WebPublishMethod>
+    <_TargetId>Folder</_TargetId>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile2.pubxml" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile2.pubxml"
new file mode 100644
index 0000000..56e882f
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile2.pubxml"
@@ -0,0 +1,17 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+https://go.microsoft.com/fwlink/?LinkID=208121.
+-->
+<Project>
+  <PropertyGroup>
+    <DeleteExistingFiles>false</DeleteExistingFiles>
+    <ExcludeApp_Data>false</ExcludeApp_Data>
+    <LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
+    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
+    <LastUsedPlatform>Any CPU</LastUsedPlatform>
+    <PublishProvider>FileSystem</PublishProvider>
+    <PublishUrl>E:\椤圭洰鍙戝竷鏂囦欢\Fangzho</PublishUrl>
+    <WebPublishMethod>FileSystem</WebPublishMethod>
+    <_TargetId>Folder</_TargetId>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/launchSettings.json" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/launchSettings.json"
new file mode 100644
index 0000000..16b63a2
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/launchSettings.json"
@@ -0,0 +1,31 @@
+锘縶
+  "$schema": "https://json.schemastore.org/launchsettings.json",
+  "iisSettings": {
+    "windowsAuthentication": false,
+    "anonymousAuthentication": true,
+    "iisExpress": {
+      "applicationUrl": "http://localhost:39740",
+      "sslPort": 0
+    }
+  },
+  "profiles": {
+    "WIDESEA_WMSServer": {
+      "commandName": "Project",
+      "dotnetRunMessages": true,
+      "launchBrowser": true,
+      //"launchUrl": "swagger",
+      "applicationUrl": "http://localhost:5230",
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    },
+    "IIS Express": {
+      "commandName": "IISExpress",
+      "launchBrowser": true,
+      //"launchUrl": "swagger",
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    }
+  }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_WMSServer.csproj" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_WMSServer.csproj"
new file mode 100644
index 0000000..1a1eebe
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_WMSServer.csproj"
@@ -0,0 +1,89 @@
+锘�<Project Sdk="Microsoft.NET.Sdk.Web">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <Nullable>enable</Nullable>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <GenerateDocumentationFile>True</GenerateDocumentationFile>
+    <DocumentationFile></DocumentationFile>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+    <NoWarn>1701;1702;1591;1573;1570</NoWarn>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+    <NoWarn>1701;1702;1591;1573;1570</NoWarn>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <Compile Remove="wwwroot\Upload\**" />
+    <Content Remove="wwwroot\Upload\**" />
+    <EmbeddedResource Remove="wwwroot\Upload\**" />
+    <None Remove="wwwroot\Upload\**" />
+  </ItemGroup>
+
+  <ItemGroup>
+	  <Content Update="wwwroot\swg-login.html">
+		  <CopyToOutputDirectory>Never</CopyToOutputDirectory>
+	  </Content>
+    <Content Remove="wwwroot\WIDESEA_DB.DBSeed.Json\Sys_Tenant.tsv" />
+  </ItemGroup>
+
+	<ItemGroup>
+		<None Include="wwwroot\WIDESEA_DB.DBSeed.Json\Sys_User.tsv">
+		  <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+		</None>
+	</ItemGroup>
+
+	<ItemGroup>
+		<None Remove="index.html" />
+	</ItemGroup>
+	
+	<ItemGroup>
+		<EmbeddedResource Include="index.html">
+		  <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+		</EmbeddedResource>
+	</ItemGroup>
+	
+	<ItemGroup>
+	  <PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="6.7.3" />
+	  <PackageReference Include="TimedJob" Version="2.0.0" />
+	</ItemGroup>
+	
+	<ItemGroup>
+	  <ProjectReference Include="..\WIDESEA_BasicService\WIDESEA_BasicService.csproj" />
+	  <ProjectReference Include="..\WIDESEA_CheckService\WIDESEA_CheckService.csproj" />
+	  <ProjectReference Include="..\WIDESEA_InboundService\WIDESEA_InboundService.csproj" />
+	  <ProjectReference Include="..\WIDESEA_OutboundService\WIDESEA_OutboundService.csproj" />
+	  <ProjectReference Include="..\WIDESEA_RecordService\WIDESEA_RecordService.csproj" />
+	  <ProjectReference Include="..\WIDESEA_SquareCabinServices\WIDESEA_SquareCabinServices.csproj" />
+	  <ProjectReference Include="..\WIDESEA_StockService\WIDESEA_StockService.csproj" />
+	  <ProjectReference Include="..\WIDESEA_SystemService\WIDESEA_SystemService.csproj" />
+	  <ProjectReference Include="..\WIDESEA_TaskInfoService\WIDESEA_TaskInfoService.csproj" />
+	</ItemGroup>
+	
+	<ItemGroup>
+	  <Content Update="wwwroot\favicon.ico">
+	    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+	  </Content>
+	  <Content Update="wwwroot\logo.jpg.jpg">
+	    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+	  </Content>
+	  <Content Update="wwwroot\WIDESEA_DB.DBSeed.Json\Sys_Dictionary.tsv">
+	    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+	  </Content>
+	  <Content Update="wwwroot\WIDESEA_DB.DBSeed.Json\Sys_DictionaryList.tsv">
+	    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+	  </Content>
+	  <Content Update="wwwroot\WIDESEA_DB.DBSeed.Json\Sys_Menu.tsv">
+	    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+	  </Content>
+	  <Content Update="wwwroot\WIDESEA_DB.DBSeed.Json\Sys_Role.tsv">
+	    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+	  </Content>
+	  <Content Update="wwwroot\WIDESEA_DB.DBSeed.Json\Sys_RoleAuth.tsv">
+	    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+	  </Content>
+	</ItemGroup>
+</Project>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_WMSServer.xml" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_WMSServer.xml"
new file mode 100644
index 0000000..7f7e193
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_WMSServer.xml"
@@ -0,0 +1,163 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>WIDESEA_WMSServer</name>
+    </assembly>
+    <members>
+        <member name="M:WIDESEA_WMSServer.Controllers.Approval.ApprovalTaskController.AuditAgree(System.Int32)">
+            <summary>
+            鍚屾剰瀹℃壒
+            </summary>
+            <param name="sourceKey"></param>
+            <returns></returns>
+        </member>
+        <member name="M:WIDESEA_WMSServer.Controllers.Approval.ApprovalTaskController.AuditReject(System.Int32)">
+            <summary>
+            椹冲洖瀹℃壒
+            </summary>
+            <param name="sourceKey"></param>
+            <returns></returns>
+        </member>
+        <member name="M:WIDESEA_WMSServer.Controllers.Approval.ApprovalTaskController.PushTest">
+            <summary>
+            鎺ㄩ�佹祴璇�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:WIDESEA_WMSServer.Controllers.Basic.LocationInfoController.InitializationLocation(WIDESEA_DTO.Basic.InitializationLocationDTO)">
+            <summary>
+            鍒濆鍖栬揣浣�
+            </summary>
+            <param name="initializationLocationDTO"></param>
+            <returns></returns>
+        </member>
+        <member name="M:WIDESEA_WMSServer.Controllers.Basic.LocationInfoController.AssignLocation(System.String,WIDESEA_Common.CommonEnum.PalletTypeEnum)">
+            <summary>
+            璐т綅鍒嗛厤
+            </summary>
+            <param name="roadwayNo"></param>
+            <param name="palletType"></param>
+            <returns></returns>
+        </member>
+        <member name="M:WIDESEA_WMSServer.Controllers.Basic.LocationInfoController.LocationEnableStatus(System.Int32[])">
+            <summary>
+            鍚敤璐т綅
+            </summary>
+            <param name="keys"></param>
+            <returns></returns>
+        </member>
+        <member name="M:WIDESEA_WMSServer.Controllers.Basic.LocationInfoController.LocationDisableStatus(System.Int32[])">
+            <summary>
+            绂佺敤璐т綅
+            </summary>
+            <param name="keys"></param>
+            <returns></returns>
+        </member>
+        <member name="M:WIDESEA_WMSServer.Controllers.Check.CheckOrderController.CommitAudit(System.Int32)">
+            <summary>
+            鎻愪氦瀹℃牳
+            </summary>
+            <param name="checkOrderId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:WIDESEA_WMSServer.Controllers.Check.CheckOrderResultController.CommitCheckResult(System.Int32,WIDESEA_Model.Models.Dt_CheckOrderResult)">
+            <summary>
+            鎻愪氦璐ㄦ缁撴灉
+            </summary>
+            <param name="checkOrderId"></param>
+            <param name="checkResult"></param>
+            <returns></returns>
+        </member>
+        <member name="M:WIDESEA_WMSServer.Controllers.ERP.ErpController.ReceivePurchaseOrder(WIDESEA_DTO.PurchaseOrderModel)">
+            <summary>
+            鎺ユ敹ERP閲囪喘鍗曚俊鎭�
+            </summary>
+            <param name="model"></param>
+            <returns></returns>
+        </member>
+        <member name="M:WIDESEA_WMSServer.Controllers.ERP.ErpController.ReceiveSupplier(WIDESEA_DTO.Basic.SupplierDTO)">
+            <summary>
+            鎺ユ敹ERP渚涘簲鍟嗕俊鎭�
+            </summary>
+            <param name="model"></param>
+            <returns></returns>
+        </member>
+        <member name="M:WIDESEA_WMSServer.Controllers.ERP.ErpController.ReceiveMaterial(WIDESEA_DTO.Basic.MaterielInfoDTO)">
+            <summary>
+            鎺ユ敹ERP鐗╂枡淇℃伅
+            </summary>
+            <param name="model"></param>
+            <returns></returns>
+        </member>
+        <member name="M:WIDESEA_WMSServer.Controllers.ERP.ErpController.ReceiveOutOrder(WIDESEA_DTO.ERP.ErpOutOrderDTO)">
+            <summary>
+            鎺ユ敹ERP鍑哄簱鍗曚俊鎭�
+            </summary>
+            <param name="erpOutOrder"></param>
+            <returns></returns>
+        </member>
+        <member name="M:WIDESEA_WMSServer.Controllers.Inbound.InboundOrderController.MaterielGroup(System.Int32,System.String,System.String)">
+            <summary>
+            鍗曚釜鐗╂枡鐮佺粍鐩�
+            </summary>
+            <param name="inboundOrderId"></param>
+            <param name="palletCode"></param>
+            <param name="serNum"></param>
+            <returns></returns>
+        </member>
+        <member name="M:WIDESEA_WMSServer.Controllers.Inbound.InboundOrderController.MaterielGroup(System.Int32,System.String,System.Collections.Generic.List{System.String})">
+            <summary>
+            澶氫釜鐗╂枡鐮佺粍鐩�
+            </summary>
+            <param name="inboundOrderId"></param>
+            <param name="palletCode"></param>
+            <param name="serNums"></param>
+            <returns></returns>
+        </member>
+        <member name="M:WIDESEA_WMSServer.Controllers.Inbound.ReceiveOrderController.CreateInboundOrder(System.Int32)">
+            <summary>
+            鏍规嵁鏀惰揣鍗曞垱寤哄叆搴撳崟
+            </summary>
+            <param name="receiveOrderId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:WIDESEA_WMSServer.Controllers.Inbound.ReceiveOrderDetailController.AddReceiveOrderDetail(System.String,System.String)">
+            <summary>
+            鍒涘缓鏀惰揣鍗曟槑缁�(PDA鎵爜鏀惰揣)
+            </summary>
+            <param name="serNum"></param>
+            <param name="orderNo"></param>
+            <returns></returns>
+        </member>
+        <member name="M:WIDESEA_WMSServer.Controllers.TaskInfo.TaskController.RequestInboundTask(System.String,System.String)">
+            <summary>
+            鐢宠鍏ュ簱浠诲姟
+            </summary>
+            <param name="palletCode"></param>
+            <param name="stationCode"></param>
+            <returns></returns>
+        </member>
+        <member name="M:WIDESEA_WMSServer.Controllers.TaskInfo.TaskController.InboundTaskCompleted(System.Int32)">
+            <summary>
+            鍏ュ簱浠诲姟瀹屾垚
+            </summary>
+            <param name="taskNum"></param>
+            <returns></returns>
+        </member>
+        <member name="T:WIDESEA_WMSServer.Filter.AutoMapperConfig">
+            <summary>
+            闈欐�佸叏灞� AutoMapper 閰嶇疆鏂囦欢
+            </summary>
+        </member>
+        <member name="T:WIDESEA_WMSServer.Filter.AutoMapperSetup">
+            <summary>
+            Automapper 鍚姩鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:WIDESEA_WMSServer.Filter.CustomProfile.#ctor">
+            <summary>
+            閰嶇疆鏋勯�犲嚱鏁帮紝鐢ㄦ潵鍒涘缓鍏崇郴鏄犲皠
+            </summary>
+        </member>
+    </members>
+</doc>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.Development.json" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.Development.json"
new file mode 100644
index 0000000..0c208ae
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.Development.json"
@@ -0,0 +1,8 @@
+{
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.AspNetCore": "Warning"
+    }
+  }
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json"
new file mode 100644
index 0000000..a081353
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json"
@@ -0,0 +1,35 @@
+{
+  //"urls": "http://*:9291", //web鏈嶅姟绔彛锛屽鏋滅敤IIS閮ㄧ讲锛屾妸杩欎釜鍘绘帀
+  "urls": "http://*:5000", //web鏈嶅姟绔彛锛屽鏋滅敤IIS閮ㄧ讲锛屾妸杩欎釜鍘绘帀
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.AspNetCore": "Warning"
+    }
+  },
+  "dics": "inOrderType,outOrderType,inboundState,createType,enableEnum,enableStatusEnum,locationStatusEnum,locationTypeEnum,taskTypeEnum,taskStatusEnum,outboundStatusEnum,orderDetailStatusEnum,stockStatusEmun,stockChangeType,outStockStatus,receiveOrderTypeEnum,authorityScope,authorityScopes,locationChangeType,warehouses,suppliers,taskType,receiveStatus,purchaseType,purchaseOrderStatus,printStatus",
+  "AllowedHosts": "*",
+  "ConnectionStringsEncryption": false,
+  "MainDB": "DB_WIDESEA", //褰撳墠椤圭洰鐨勪富搴擄紝鎵�瀵瑰簲鐨勮繛鎺ュ瓧绗︿覆鐨凟nabled蹇呴』涓簍rue
+  //杩炴帴瀛楃涓�
+  //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=",
+  //"ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWMS_HUAIAN;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
+  //"ConnectionString": "Data Source=10.30.4.92;Initial Catalog=WMS_TC;User ID=sa;Password=duo123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
+  //鏃MS鏁版嵁搴撹繛鎺�
+  "ConnectionString": "Data Source=.;Initial Catalog=WIDESEA_WMSDBF_Z;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
+  //璺ㄥ煙
+  "Cors": {
+    "PolicyName": "CorsIpAccess", //绛栫暐鍚嶇О
+    "EnableAllIPs": true, //褰撲负true鏃讹紝寮�鏀炬墍鏈塈P鍧囧彲璁块棶銆�
+    // 鏀寔澶氫釜鍩熷悕绔彛锛屾敞鎰忕鍙e彿鍚庝笉瑕佸甫/鏂滄潌锛氭瘮濡俵ocalhost:8000/锛屾槸閿欑殑0
+    // 娉ㄦ剰锛宧ttp://127.0.0.1:1818 鍜� http://localhost:1818 鏄笉涓�鏍风殑
+    "IPs": "http://127.0.0.1:8080,http://localhost:8080,http://127.0.0.1:8081,http://localhost:8081"
+  },
+  "LogAopEnable": false,
+  "PrintSql": false, //鎵撳嵃SQL璇彞
+  "ApiName": "WIDESEA",
+  "ExpMinutes": 120,
+  "DBSeedEnable": false, //鏄惁鍚敤鏁版嵁搴撶瀛愭暟鎹紝鍒涘缓琛�
+  "PDAVersion": "4",
+  "WebSocketPort": 9296
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/index.html" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/index.html"
new file mode 100644
index 0000000..97ba152
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/index.html"
@@ -0,0 +1,188 @@
+锘�<!--1銆佺増鏈彿瑕佷笌nuget鍖呬竴鑷达紱2銆乮d涓嶈兘涓虹┖-->
+<script async="async" id="mini-profiler" src="/profiler/includes.min.js?v=4.3.8+1120572909" data-version="4.3.8+1120572909" data-path="/profiler/" data-current-id="0d7e468e-0bb5-4c81-90fc-91fd1543640a" data-ids="0d7e468e-0bb5-4c81-90fc-91fd1543640a" data-position="Left" data-scheme="Light" data-authorized="true" data-children="true" data-max-traces="15" data-toggle-shortcut="Alt+P" data-trivial-milliseconds="2.0" data-ignored-duplicate-execute-types="Open,OpenAsync,Close,CloseAsync"></script>
+
+<!-- HTML for static distribution bundle build -->
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <!--鏋侀�熸ā寮�-->
+    <meta name="renderer" content="webkit" />
+    <meta name="force-rendering" content="webkit" />
+    <title>%(DocumentTitle)</title>
+    <link href="./swagger-ui.css" rel="stylesheet">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <link rel="stylesheet" type="text/css" href="./swagger-ui.css">
+    <link rel="icon" type="image/png" href="./logo/favicon-32x32.png" sizes="32x32" />
+    <script src="js/jquery-3.3.1.min.js"></script>
+    <style>
+        .swagger-ui .opblock-summary-control:focus {
+            outline: none
+        }
+
+        .swagger-ui .topbar .download-url-wrapper {
+            display: flex;
+            flex: 3;
+            margin-bottom: 0px;
+            justify-content: flex-end;
+        }
+
+        .swagger-ui .auth-container input[type=password], .swagger-ui .auth-container input[type=text] {
+            min-width: 565px;
+        }
+
+        html {
+            box-sizing: border-box;
+            overflow-y: scroll;
+        }
+
+        *,
+        *:before,
+        *:after {
+            box-sizing: inherit;
+        }
+
+        body {
+            margin: 0;
+            background: #fafafa;
+        }
+
+        .qqgroup {
+            position: absolute;
+            right: 0px;
+            top: 0px;
+        }
+
+        .info {
+            float: left;
+            position: relative;
+            width: 100%;
+        }
+
+        .download-contents {
+            display: none;
+        }
+        /* 婊氬姩妲� */
+        ::-webkit-scrollbar {
+            width: 9px;
+            height: 9px;
+        }
+
+        ::-webkit-scrollbar-track {
+            border-radius: 3px;
+            background: rgba(0,0,0,0.06);
+            -webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.08);
+        }
+        /* 婊氬姩鏉℃粦鍧� */
+        ::-webkit-scrollbar-thumb {
+            border-radius: 3px;
+            background: rgba(0,0,0,0.12);
+            -webkit-box-shadow: inset 0 0 10px rgba(0,0,0,0.2);
+        }
+    </style>
+    %(HeadContent)
+</head>
+<body style=" user-select: text;">
+    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="position:absolute;width:0;height:0">
+        <defs>
+            <symbol viewBox="0 0 20 20" id="unlocked">
+                <path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z"></path>
+            </symbol>
+            <symbol viewBox="0 0 20 20" id="locked">
+                <path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z" />
+            </symbol>
+            <symbol viewBox="0 0 20 20" id="close">
+                <path d="M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z" />
+            </symbol>
+            <symbol viewBox="0 0 20 20" id="large-arrow">
+                <path d="M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z" />
+            </symbol>
+            <symbol viewBox="0 0 20 20" id="large-arrow-down">
+                <path d="M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z" />
+            </symbol>
+
+            <symbol viewBox="0 0 24 24" id="jump-to">
+                <path d="M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z" />
+            </symbol>
+            <symbol viewBox="0 0 24 24" id="expand">
+                <path d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z" />
+            </symbol>
+        </defs>
+    </svg>
+    <div id="swagger-ui"></div>
+    <div id="footer" style="text-align: center;margin-bottom: 10px;">
+        
+
+        <br><span id="poweredby"></span>
+    </div>
+    <!-- Workaround for https://github.com/swagger-api/swagger-editor/issues/1371 -->
+    <script>
+        if (window.navigator.userAgent.indexOf("Edge") > -1) {
+            console.log("Removing native Edge fetch in favor of swagger-ui's polyfill")
+            window.fetch = undefined;
+        }
+    </script>
+    <script src="./swagger-ui-bundle.js"></script>
+    <script src="./swagger-ui-standalone-preset.js"></script>
+    <script>
+        var int = null;
+
+        window.onload = function () {
+            var configObject = JSON.parse('%(ConfigObject)');
+            var oauthConfigObject = JSON.parse('%(OAuthConfigObject)');
+
+            //鑾峰彇token鍦ㄦ鐩存帴璧嬪�硷紝鑳界洿鎺ュ簲鐢╯wagger鐨勬牱寮�
+            //configObject.onComplete = function () {
+            //    ui.preauthorizeApiKey("oauth2", "");
+            //};
+
+            // Apply mandatory parameters
+            configObject.dom_id = "#swagger-ui";
+            configObject.presets = [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset];
+            configObject.layout = "StandaloneLayout";
+
+            // If oauth2RedirectUrl isn't specified, use the built-in default
+            if (!configObject.hasOwnProperty("oauth2RedirectUrl"))
+                configObject.oauth2RedirectUrl = window.location.href.replace("index.html", "oauth2-redirect.html");
+
+            // Build a system
+            const ui = SwaggerUIBundle(configObject);
+
+            // Apply OAuth config
+            ui.initOAuth(oauthConfigObject);
+
+            //娓呯┖鍏冪礌鍐呭锛岃繖閲屾竻绌轰簡閫夋嫨鐗堟湰鐨勮嫳鏂�
+            $(".select-label span").empty();
+
+            myOnload();
+
+            //淇敼鐗堟湰鐨勭炕璇戜负涓枃
+            function myOnload() {
+                $(document).ready(function () {
+                    $(".select-label span").each(function () {
+                        var myvalue = '閫夋嫨涓�涓帴鍙g増鏈�';
+                        $(this).html(myvalue);
+                    });
+                });
+            }
+            setTimeout(() => {
+
+                //浜岀淮鐮�
+                $('.info').append("<div class='qqgroup'><div style=\"color: #4990e2;\"><a href=\"../allservices\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"link\">路 鏌ョ湅鎵�鏈変緷璧栨敞鍐岀殑鏈嶅姟</a><br></div></div><div style='clear: both;'></div>");
+
+                //淇敼 token鎺堟潈鎸夐挳涓轰腑鏂�
+                //$(".auth-wrapper span").empty();
+                //$(document).ready(function () {
+                //    $('.auth-wrapper span').each(function () {
+                //        var myvalue = '鎺堟潈璁よ瘉';
+                //        $(this).html(myvalue);
+                //    });
+                //});
+                
+            }, 1000)
+            // 鏂囨。logo
+            $(".link img").attr("src", "./logo/favicon-32x32.png");
+        }
+    </script>
+</body>
+</html>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_Dictionary.tsv" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_Dictionary.tsv"
new file mode 100644
index 0000000..7cd8502
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_Dictionary.tsv"
@@ -0,0 +1,274 @@
+锘縖
+  {
+    "DicId": 3,
+    "Config": "{valueField: 'Enable',\r\ntextField: 'Enable',\r\n containField: null,\r\n  handler: null }",
+    "Sql": null,
+    "DicName": "鏄惁鍊�",
+    "DicNo": "enable",
+    "Enable": 1,
+    "OrderNo": null,
+    "ParentId": 0,
+    "Remark": null,
+    "DicList": null,
+    "Creater": "system",
+    "CreateDate": "2024-09-04T11:08:54.763",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2022-01-03T18:30:18.113"
+  },
+  {
+    "DicId": 30,
+    "Config": "{valueField: 'Success',\r\n textField: 'Success', \r\n containField: null,\r\n handler: null }\r\n",
+    "Sql": null,
+    "DicName": "鍝嶅簲鐘舵��",
+    "DicNo": "restatus",
+    "Enable": 1,
+    "OrderNo": null,
+    "ParentId": 0,
+    "Remark": null,
+    "DicList": null,
+    "Creater": "system",
+    "CreateDate": "2024-09-04T11:08:54.763",
+    "Modifier": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2018-06-12T10:21:48"
+  },
+  {
+    "DicId": 31,
+    "Config": "{valueField: 'LogType',\r\n textField: 'LogType', \r\n containField: null,\r\n handler: null }\r\n",
+    "Sql": null,
+    "DicName": "鏃ュ織绫诲瀷",
+    "DicNo": "log",
+    "Enable": 1,
+    "OrderNo": null,
+    "ParentId": 0,
+    "Remark": null,
+    "DicList": null,
+    "Creater": "system",
+    "CreateDate": "2024-09-04T11:08:54.763",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2022-04-04T13:21:54.927"
+  },
+  {
+    "DicId": 32,
+    "Config": "{valueField: 'RoleId',\r\n textField: 'RoleName', \r\n containField: ['RoleId','RoleName'],\r\n handler: null }\r\n",
+    "Sql": "SELECT RoleId as 'key',RoleName as 'value' FROM Sys_Role WHERE Enable=1",
+    "DicName": "瑙掕壊鍒楄〃",
+    "DicNo": "roles",
+    "Enable": 1,
+    "OrderNo": 123,
+    "ParentId": 0,
+    "Remark": "sql璇彞闇�瑕乲ey,value鍒楋紝鐣岄潰鎵嶈兘缁戝畾鏁版嵁婧�",
+    "DicList": null,
+    "Creater": "system",
+    "CreateDate": "2024-09-04T11:08:54.763",
+    "Modifier": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2018-07-13T15:03:53"
+  },
+  {
+    "DicId": 35,
+    "Config": "{\r\n valueField: 'AuditStatus',\r\n textField: 'AuditStatus',\r\n  containField:null \r\n}",
+    "Sql": null,
+    "DicName": "瀹℃牳鐘舵��",
+    "DicNo": "audit",
+    "Enable": 1,
+    "OrderNo": null,
+    "ParentId": 0,
+    "Remark": null,
+    "DicList": null,
+    "Creater": "system",
+    "CreateDate": "2024-09-04T11:08:54.763",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2023-05-08T01:05:44.193"
+  },
+  {
+    "DicId": 49,
+    "Config": "{\r\n valueField: 'Gender',\r\n textField: 'Gender',\r\n  containField:null \r\n}",
+    "Sql": null,
+    "DicName": "鎬у埆",
+    "DicNo": "gender",
+    "Enable": 1,
+    "OrderNo": null,
+    "ParentId": 0,
+    "Remark": null,
+    "DicList": null,
+    "Creater": "system",
+    "CreateDate": "2024-09-04T11:08:54.763",
+    "Modifier": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2018-07-23T11:10:28"
+  },
+  {
+    "DicId": 50,
+    "Config": "{\r\n valueField: 'Enable',\r\n textField: 'Enable',\r\n  containField:null \r\n}",
+    "Sql": null,
+    "DicName": "鍚敤鐘舵��",
+    "DicNo": "status",
+    "Enable": 1,
+    "OrderNo": null,
+    "ParentId": 0,
+    "Remark": null,
+    "DicList": null,
+    "Creater": "system",
+    "CreateDate": "2024-09-04T11:08:54.763",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:07:01.817"
+  },
+  {
+    "DicId": 59,
+    "Config": "{\r\n valueField: 'IsRegregisterPhone',\r\n textField: 'IsRegregisterPhone',\r\n  containField:null \r\n}",
+    "Sql": null,
+    "DicName": "鎵嬫満鐢ㄦ埛",
+    "DicNo": "isphone",
+    "Enable": 1,
+    "OrderNo": null,
+    "ParentId": 0,
+    "Remark": null,
+    "DicList": null,
+    "Creater": "system",
+    "CreateDate": "2024-09-04T11:08:54.763",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2020-11-20T23:05:48.303"
+  },
+  {
+    "DicId": 66,
+    "Config": null,
+    "Sql": "SELECT RoleId AS id,parentId,RoleId AS [key],RoleName AS value FROM Sys_Role",
+    "DicName": "绾ц仈瑙掕壊",
+    "DicNo": "tree_roles",
+    "Enable": 1,
+    "OrderNo": null,
+    "ParentId": 0,
+    "Remark": null,
+    "DicList": null,
+    "Creater": "system",
+    "CreateDate": "2024-09-04T11:08:54.763",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2020-11-20T23:08:03.217"
+  },
+  {
+    "DicId": 67,
+    "Config": null,
+    "Sql": null,
+    "DicName": "nav",
+    "DicNo": "nav",
+    "Enable": 1,
+    "OrderNo": null,
+    "ParentId": 0,
+    "Remark": null,
+    "DicList": null,
+    "Creater": "system",
+    "CreateDate": "2024-09-04T11:08:54.763",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:07:01.817"
+  },
+  {
+    "DicId": 70,
+    "Config": null,
+    "Sql": null,
+    "DicName": "璇锋眰鏂瑰紡",
+    "DicNo": "璇锋眰鏂瑰紡",
+    "Enable": 1,
+    "OrderNo": null,
+    "ParentId": 0,
+    "Remark": null,
+    "DicList": null,
+    "Creater": "system",
+    "CreateDate": "2024-09-04T11:08:54.763",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:07:01.817"
+  },
+  {
+    "DicId": 71,
+    "Config": null,
+    "Sql": null,
+    "DicName": "瀹氭椂浠诲姟鐘舵��",
+    "DicNo": "瀹氭椂浠诲姟鐘舵��",
+    "Enable": 1,
+    "OrderNo": null,
+    "ParentId": 0,
+    "Remark": null,
+    "DicList": null,
+    "Creater": "system",
+    "CreateDate": "2024-09-04T11:08:54.763",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:07:01.817"
+  },
+  {
+    "DicId": 72,
+    "Config": null,
+    "Sql": "SELECT DepartmentId AS 'key',DepartmentId AS 'id',ParentId AS parentId,DepartmentName as 'value' FROM Sys_Department",
+    "DicName": "缁勭粐鏈烘瀯",
+    "DicNo": "缁勭粐鏈烘瀯",
+    "Enable": 1,
+    "OrderNo": null,
+    "ParentId": 0,
+    "Remark": null,
+    "DicList": null,
+    "Creater": "system",
+    "CreateDate": "2024-09-04T11:08:54.763",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:07:01.817"
+  },
+  {
+    "DicId": 75,
+    "Config": null,
+    "Sql": null,
+    "DicName": "鏃ュ織鐘舵��",
+    "DicNo": "LogState",
+    "Enable": 1,
+    "OrderNo": null,
+    "ParentId": 0,
+    "Remark": null,
+    "DicList": null,
+    "Creater": "瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:54.763",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:07:01.817"
+  },
+  {
+    "DicId": 78,
+    "Config": null,
+    "Sql": "SELECT Id AS 'key', WarehouseName AS 'value' FROM Dt_Warehouse\r\nUNION ALL\r\nSELECT '0' AS 'key', '鏃�' AS 'value'",
+    "DicName": "浠撳簱",
+    "DicNo": "warehouse",
+    "Enable": 1,
+    "OrderNo": null,
+    "ParentId": 0,
+    "Remark": null,
+    "DicList": null,
+    "Creater": "admin",
+    "CreateDate": "2024-09-23T15:18:34.56",
+    "Modifier": null,
+    "ModifyDate": null
+  },
+  {
+    "DicId": 79,
+    "Config": null,
+    "Sql": "SELECT Id AS 'key', AreaName AS 'value' FROM Dt_AreaInfo\r\nUNION ALL\r\nSELECT '0' AS 'key', '鏃�' AS 'value'",
+    "DicName": "鍖哄煙",
+    "DicNo": "areainfo",
+    "Enable": 1,
+    "OrderNo": null,
+    "ParentId": 0,
+    "Remark": null,
+    "DicList": null,
+    "Creater": "admin",
+    "CreateDate": "2024-09-23T17:07:26.75",
+    "Modifier": null,
+    "ModifyDate": null
+  },
+  {
+    "DicId": 81,
+    "Config": null,
+    "Sql": null,
+    "DicName": "鏄惁鍊�",
+    "DicNo": "yesno",
+    "Enable": 1,
+    "OrderNo": 0,
+    "ParentId": 0,
+    "Remark": null,
+    "DicList": null,
+    "Creater": "admin",
+    "CreateDate": "2024-09-24T13:40:11.04",
+    "Modifier": null,
+    "ModifyDate": null
+  }
+]
\ No newline at end of file
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_DictionaryList.tsv" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_DictionaryList.tsv"
new file mode 100644
index 0000000..798f1dd
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_DictionaryList.tsv"
@@ -0,0 +1,522 @@
+锘縖
+  {
+    "DicListId": 3,
+    "DicName": "鍚�",
+    "DicValue": "0",
+    "DicId": 3,
+    "Enable": null,
+    "OrderNo": 2,
+    "Remark": null,
+    "Creater": "admin",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2022-01-03T18:30:18.113"
+  },
+  {
+    "DicListId": 4,
+    "DicName": "鏄�",
+    "DicValue": "1",
+    "DicId": 3,
+    "Enable": null,
+    "OrderNo": 1,
+    "Remark": null,
+    "Creater": "xxx",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2022-01-03T18:30:18.113"
+  },
+  {
+    "DicListId": 22,
+    "DicName": "鍏朵粬",
+    "DicValue": "0",
+    "DicId": 30,
+    "Enable": null,
+    "OrderNo": 10,
+    "Remark": null,
+    "Creater": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2019-08-21T16:49:43"
+  },
+  {
+    "DicListId": 23,
+    "DicName": "鎴愬姛",
+    "DicValue": "1",
+    "DicId": 30,
+    "Enable": null,
+    "OrderNo": 100,
+    "Remark": null,
+    "Creater": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2019-08-21T16:49:43"
+  },
+  {
+    "DicListId": 24,
+    "DicName": "寮傚父",
+    "DicValue": "2",
+    "DicId": 30,
+    "Enable": null,
+    "OrderNo": 50,
+    "Remark": null,
+    "Creater": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2019-08-21T16:49:43"
+  },
+  {
+    "DicListId": 25,
+    "DicName": "绯荤粺",
+    "DicValue": "System",
+    "DicId": 31,
+    "Enable": null,
+    "OrderNo": 100,
+    "Remark": null,
+    "Creater": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2022-04-04T13:21:54.947"
+  },
+  {
+    "DicListId": 26,
+    "DicName": "鐧婚檰",
+    "DicValue": "Login",
+    "DicId": 31,
+    "Enable": null,
+    "OrderNo": 90,
+    "Remark": null,
+    "Creater": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2022-04-04T13:21:54.947"
+  },
+  {
+    "DicListId": 27,
+    "DicName": "鏂板缓",
+    "DicValue": "Add",
+    "DicId": 31,
+    "Enable": null,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2022-04-04T13:21:54.943"
+  },
+  {
+    "DicListId": 28,
+    "DicName": "鍒犻櫎",
+    "DicValue": "Del",
+    "DicId": 31,
+    "Enable": 1,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2022-04-04T13:21:54.943"
+  },
+  {
+    "DicListId": 29,
+    "DicName": "缂栬緫",
+    "DicValue": "Edit",
+    "DicId": 31,
+    "Enable": 1,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2022-04-04T13:21:54.943"
+  },
+  {
+    "DicListId": 37,
+    "DicName": "寰呭鏍�",
+    "DicValue": "0",
+    "DicId": 35,
+    "Enable": 0,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2023-05-08T01:05:44.193"
+  },
+  {
+    "DicListId": 38,
+    "DicName": "瀹℃牳閫氳繃",
+    "DicValue": "1",
+    "DicId": 35,
+    "Enable": null,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2023-05-08T01:05:44.193"
+  },
+  {
+    "DicListId": 39,
+    "DicName": "瀹℃牳涓�",
+    "DicValue": "2",
+    "DicId": 35,
+    "Enable": 0,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2023-05-08T01:05:44.193"
+  },
+  {
+    "DicListId": 71,
+    "DicName": "寮傚父",
+    "DicValue": "Exception",
+    "DicId": 31,
+    "Enable": 0,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2022-04-04T13:21:54.943"
+  },
+  {
+    "DicListId": 90,
+    "DicName": "鐢�",
+    "DicValue": "0",
+    "DicId": 49,
+    "Enable": null,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2018-07-23T11:10:28"
+  },
+  {
+    "DicListId": 91,
+    "DicName": "濂�",
+    "DicValue": "1",
+    "DicId": 49,
+    "Enable": null,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2018-07-23T11:10:28"
+  },
+  {
+    "DicListId": 96,
+    "DicName": "鏈惎鐢�",
+    "DicValue": "0",
+    "DicId": 50,
+    "Enable": 1,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2019-08-16T18:17:47"
+  },
+  {
+    "DicListId": 97,
+    "DicName": "宸插惎鐢�",
+    "DicValue": "1",
+    "DicId": 50,
+    "Enable": 1,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2019-08-16T18:17:47"
+  },
+  {
+    "DicListId": 98,
+    "DicName": "宸插垹闄�",
+    "DicValue": "2",
+    "DicId": 50,
+    "Enable": 1,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2019-08-16T18:17:47"
+  },
+  {
+    "DicListId": 128,
+    "DicName": "鏄�",
+    "DicValue": "1",
+    "DicId": 59,
+    "Enable": 0,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2020-11-20T23:05:48.303"
+  },
+  {
+    "DicListId": 129,
+    "DicName": "鍚�",
+    "DicValue": "0",
+    "DicId": 59,
+    "Enable": 1,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "娴嬭瘯瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2020-11-20T23:05:48.303"
+  },
+  {
+    "DicListId": 144,
+    "DicName": "鍒锋柊Token",
+    "DicValue": "ReplaceToeken",
+    "DicId": 31,
+    "Enable": null,
+    "OrderNo": 110,
+    "Remark": null,
+    "Creater": "瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2022-04-04T13:21:54.937"
+  },
+  {
+    "DicListId": 145,
+    "DicName": "Info",
+    "DicValue": "3",
+    "DicId": 30,
+    "Enable": null,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:07:07.187"
+  },
+  {
+    "DicListId": 423,
+    "DicName": "鏄�",
+    "DicValue": "1",
+    "DicId": 67,
+    "Enable": 0,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:07:07.187"
+  },
+  {
+    "DicListId": 424,
+    "DicName": "鍚�",
+    "DicValue": "0",
+    "DicId": 67,
+    "Enable": 0,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:07:07.187"
+  },
+  {
+    "DicListId": 435,
+    "DicName": "瀹℃牳鏈�氳繃",
+    "DicValue": "3",
+    "DicId": 35,
+    "Enable": 0,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "瓒呯骇绠$悊鍛�",
+    "ModifyDate": "2023-05-08T01:05:44.193"
+  },
+  {
+    "DicListId": 436,
+    "DicName": "get",
+    "DicValue": "get",
+    "DicId": 70,
+    "Enable": 0,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:07:07.187"
+  },
+  {
+    "DicListId": 437,
+    "DicName": "post",
+    "DicValue": "post",
+    "DicId": 70,
+    "Enable": 0,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:07:07.187"
+  },
+  {
+    "DicListId": 438,
+    "DicName": "姝e父",
+    "DicValue": "0",
+    "DicId": 71,
+    "Enable": 0,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:07:07.187"
+  },
+  {
+    "DicListId": 439,
+    "DicName": "鏆傚仠",
+    "DicValue": "1",
+    "DicId": 71,
+    "Enable": 0,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:07:07.187"
+  },
+  {
+    "DicListId": 442,
+    "DicName": "椹冲洖",
+    "DicValue": "4",
+    "DicId": 35,
+    "Enable": 0,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:07:07.187"
+  },
+  {
+    "DicListId": 443,
+    "DicName": "绂佺敤",
+    "DicValue": "DisEnable",
+    "DicId": 73,
+    "Enable": 1,
+    "OrderNo": 1,
+    "Remark": null,
+    "Creater": "瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "寮�鍙�",
+    "ModifyDate": "2023-07-14T14:17:01.037"
+  },
+  {
+    "DicListId": 444,
+    "DicName": "鍚敤",
+    "DicValue": "Enable",
+    "DicId": 73,
+    "Enable": 1,
+    "OrderNo": 0,
+    "Remark": null,
+    "Creater": "瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": "寮�鍙�",
+    "ModifyDate": "2023-07-14T14:17:01.017"
+  },
+  {
+    "DicListId": 449,
+    "DicName": "淇℃伅",
+    "DicValue": "Info",
+    "DicId": 75,
+    "Enable": 0,
+    "OrderNo": 1,
+    "Remark": null,
+    "Creater": "瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:07:07.187"
+  },
+  {
+    "DicListId": 450,
+    "DicName": "鎴愬姛",
+    "DicValue": "Sucess",
+    "DicId": 75,
+    "Enable": 0,
+    "OrderNo": 2,
+    "Remark": null,
+    "Creater": "瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:07:07.187"
+  },
+  {
+    "DicListId": 451,
+    "DicName": "澶辫触",
+    "DicValue": "Error",
+    "DicId": 75,
+    "Enable": 0,
+    "OrderNo": 3,
+    "Remark": null,
+    "Creater": "瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:07:07.187"
+  },
+  {
+    "DicListId": 456,
+    "DicName": "鏈鏍�",
+    "DicValue": "OrderState_Unaudited",
+    "DicId": 84,
+    "Enable": 0,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:07:07.187"
+  },
+  {
+    "DicListId": 457,
+    "DicName": "宸插鏍�",
+    "DicValue": "OrderState_Audited",
+    "DicId": 84,
+    "Enable": 0,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T11:08:55.2",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:07:07.187"
+  },
+  {
+    "DicListId": 458,
+    "DicName": "鏄�",
+    "DicValue": "true",
+    "DicId": 81,
+    "Enable": null,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "admin",
+    "CreateDate": "2024-09-24T13:40:11.09",
+    "Modifier": null,
+    "ModifyDate": null
+  },
+  {
+    "DicListId": 459,
+    "DicName": "鍚�",
+    "DicValue": "false",
+    "DicId": 81,
+    "Enable": null,
+    "OrderNo": null,
+    "Remark": null,
+    "Creater": "admin",
+    "CreateDate": "2024-09-24T13:40:11.093",
+    "Modifier": null,
+    "ModifyDate": null
+  }
+]
\ No newline at end of file
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_Menu.tsv" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_Menu.tsv"
new file mode 100644
index 0000000..f71d836
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_Menu.tsv"
@@ -0,0 +1,716 @@
+锘縖
+  {
+    "MenuId": 1,
+    "MenuName": "鐢ㄦ埛绠$悊",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "el-icon-user",
+    "Description": null,
+    "Enable": 1,
+    "TableName": ".",
+    "ParentId": 0,
+    "Url": null,
+    "OrderNo": 4000,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-05-09T15:50:07.567"
+  },
+  {
+    "MenuId": 2,
+    "MenuName": "鐢ㄦ埛绠$悊",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": null,
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Sys_User",
+    "ParentId": 1,
+    "Url": "/Sys_User",
+    "OrderNo": 2000,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-05-09T15:50:14.03"
+  },
+  {
+    "MenuId": 3,
+    "MenuName": "鏉冮檺绠$悊",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "ivu-icon ivu-icon-ios-boat",
+    "Description": null,
+    "Enable": 1,
+    "TableName": ",",
+    "ParentId": 1,
+    "Url": "/permission",
+    "OrderNo": 1000,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-05-09T15:50:20.727"
+  },
+  {
+    "MenuId": 4,
+    "MenuName": "瑙掕壊绠$悊",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": null,
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Sys_Role",
+    "ParentId": 1,
+    "Url": "/Sys_Role",
+    "OrderNo": 900,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-05-09T15:50:23.177"
+  },
+  {
+    "MenuId": 5,
+    "MenuName": "绯荤粺璁剧疆",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "el-icon-setting",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "绯荤粺璁剧疆",
+    "ParentId": 0,
+    "Url": "/",
+    "OrderNo": 0,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-05-09T15:50:38.703"
+  },
+  {
+    "MenuId": 6,
+    "MenuName": "鑿滃崟璁剧疆",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": null,
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Sys_Menu",
+    "ParentId": 5,
+    "Url": "/sysmenu",
+    "OrderNo": 10,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-05-09T15:50:42.007"
+  },
+  {
+    "MenuId": 7,
+    "MenuName": "涓嬫媺妗嗙粦瀹氳缃�",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": null,
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Sys_Dictionary",
+    "ParentId": 5,
+    "Url": "/Sys_Dictionary",
+    "OrderNo": 10,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:06:31.127"
+  },
+  {
+    "MenuId": 8,
+    "MenuName": "鏃ュ織绠$悊",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "el-icon-date",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "xxx",
+    "ParentId": 0,
+    "Url": "/",
+    "OrderNo": 500,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-05-09T15:50:30.557"
+  },
+  {
+    "MenuId": 9,
+    "MenuName": "鎺ュ彛鏃ュ織",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": null,
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Sys_Log",
+    "ParentId": 8,
+    "Url": "/Sys_Log/Manager",
+    "OrderNo": 0,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-05-09T15:50:34.273"
+  },
+  {
+    "MenuId": 12,
+    "MenuName": "浠诲姟绠$悊",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "el-icon-shopping-bag-2",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "/",
+    "ParentId": 0,
+    "Url": "/",
+    "OrderNo": 9000,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-09-04T10:44:31.457"
+  },
+  {
+    "MenuId": 13,
+    "MenuName": "浠诲姟淇℃伅",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": null,
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Dt_Task",
+    "ParentId": 12,
+    "Url": "/task",
+    "OrderNo": 500,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-09-20T09:15:35.93"
+  },
+  {
+    "MenuId": 17,
+    "MenuName": "鍩虹绠$悊",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "el-icon-notebook-2",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "/",
+    "ParentId": 0,
+    "Url": "/",
+    "OrderNo": 10000,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-09-04T10:44:15.293"
+  },
+  {
+    "MenuId": 19,
+    "MenuName": "鍗曟嵁绠$悊",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"}]",
+    "Icon": "el-icon-document",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "/",
+    "ParentId": 0,
+    "Url": "",
+    "OrderNo": 8000,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-09-04T10:50:35.37"
+  },
+  {
+    "MenuId": 20,
+    "MenuName": "搴撳瓨绠$悊",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"}]",
+    "Icon": "el-icon-discount",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "/",
+    "ParentId": 0,
+    "Url": "",
+    "OrderNo": 7000,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-09-04T10:53:10.417"
+  },
+  {
+    "MenuId": 21,
+    "MenuName": "浠撳簱淇℃伅",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"},{\"text\":\"鍚敤\",\"value\":\"Enable\"},{\"text\":\"绂佺敤\",\"value\":\"Disable\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Dt_Warehouse",
+    "ParentId": 17,
+    "Url": "/warehouse",
+    "OrderNo": 10000,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-09-24T14:36:38.443"
+  },
+  {
+    "MenuId": 23,
+    "MenuName": "璐т綅淇℃伅",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"},{\"text\":\"鍚敤\",\"value\":\"Enable\"},{\"text\":\"绂佺敤\",\"value\":\"Disable\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Dt_LocationInfo",
+    "ParentId": 17,
+    "Url": "/locationInfo",
+    "OrderNo": 8000,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-09-24T14:36:47.427"
+  },
+  {
+    "MenuId": 24,
+    "MenuName": "鐗╂枡淇℃伅",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Dt_MaterielInfo",
+    "ParentId": 17,
+    "Url": "/materielInfo",
+    "OrderNo": 7000,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:06:31.127"
+  },
+  {
+    "MenuId": 25,
+    "MenuName": "鍏ュ簱鍗�",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Dt_InboundOrder",
+    "ParentId": 19,
+    "Url": "/inboundOrder",
+    "OrderNo": 10000,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-09-04T10:50:25.91"
+  },
+  {
+    "MenuId": 26,
+    "MenuName": "鍏ュ簱鍗曟槑缁�",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 0,
+    "TableName": "Dt_InboundOrderDetail",
+    "ParentId": 19,
+    "Url": "/inboundOrderDetail",
+    "OrderNo": 9000,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-09-24T11:12:44.15"
+  },
+  {
+    "MenuId": 27,
+    "MenuName": "鍑哄簱鍗�",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Dt_OutboundOrder",
+    "ParentId": 19,
+    "Url": "/outboundOrder",
+    "OrderNo": 8000,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:06:31.127"
+  },
+  {
+    "MenuId": 28,
+    "MenuName": "鍑哄簱鍗曟槑缁�",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 0,
+    "TableName": "Dt_OutboundOrderDetail",
+    "ParentId": 19,
+    "Url": "/outboundOrderDetail",
+    "OrderNo": 7000,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-09-24T11:12:46.923"
+  },
+  {
+    "MenuId": 29,
+    "MenuName": "搴撳瓨淇℃伅",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Dt_StockInfo",
+    "ParentId": 20,
+    "Url": "/stockInfo",
+    "OrderNo": 10000,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:06:31.127"
+  },
+  {
+    "MenuId": 30,
+    "MenuName": "搴撳瓨淇℃伅鏄庣粏",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Dt_StockInfoDetail",
+    "ParentId": 20,
+    "Url": "/stockInfoDetail",
+    "OrderNo": 9000,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:06:31.127"
+  },
+  {
+    "MenuId": 32,
+    "MenuName": "搴撳瓨瑙嗗浘",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "StockView",
+    "ParentId": 20,
+    "Url": "/stockView",
+    "OrderNo": 9000,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": null,
+    "ModifyDate": null
+  },
+  {
+    "MenuId": 41,
+    "MenuName": "鍏ュ簱璁㈠崟",
+    "Auth": "",
+    "Icon": "",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "/",
+    "ParentId": 0,
+    "Url": "/inboundOrder",
+    "OrderNo": 0,
+    "MenuType": 1,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-09-30T16:34:47.333"
+  },
+  {
+    "MenuId": 42,
+    "MenuName": "渚涘簲鍟嗕俊鎭�",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Dt_SupplierInfo",
+    "ParentId": 17,
+    "Url": "/supplierInfo",
+    "OrderNo": 0,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": null,
+    "ModifyDate": null
+  },
+  {
+    "MenuId": 43,
+    "MenuName": "妫�楠岀鐞�",
+    "Auth": "",
+    "Icon": "el-icon-document-checked",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "/",
+    "ParentId": 0,
+    "Url": "",
+    "OrderNo": 9700,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-12-18T18:46:55.123"
+  },
+  {
+    "MenuId": 44,
+    "MenuName": "妫�楠屼俊鎭�",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Dt_CheckOrder",
+    "ParentId": 43,
+    "Url": "/checkOrder",
+    "OrderNo": 0,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": null,
+    "ModifyDate": null
+  },
+  {
+    "MenuId": 45,
+    "MenuName": "鍘嗗彶鍏ュ簱鍗�",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Dt_InboundOrder_Hty",
+    "ParentId": 19,
+    "Url": "/inboundOrder_Hty",
+    "OrderNo": 6500,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-12-17T14:45:19.42"
+  },
+  {
+    "MenuId": 46,
+    "MenuName": "鍘嗗彶鍏ュ簱鍗曟槑缁�",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 0,
+    "TableName": "Dt_InboundOrderDetail_Hty",
+    "ParentId": 19,
+    "Url": "/inboundOrderDetail_Hty",
+    "OrderNo": 6400,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-12-17T14:45:26.113"
+  },
+  {
+    "MenuId": 47,
+    "MenuName": "鍘嗗彶鍑哄簱鍗�",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Dt_OutboundOrder_Hty",
+    "ParentId": 19,
+    "Url": "/outboundOrder_Hty",
+    "OrderNo": 6300,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-12-17T14:45:31.007"
+  },
+  {
+    "MenuId": 48,
+    "MenuName": "鍘嗗彶鍑哄簱鍗曟槑缁�",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 0,
+    "TableName": "Dt_OutboundOrderDetail_Hty",
+    "ParentId": 19,
+    "Url": "/outboundOrderDetail_Hty",
+    "OrderNo": 6200,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-12-17T14:45:35.687"
+  },
+  {
+    "MenuId": 49,
+    "MenuName": "閲囪喘绠$悊",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"}]",
+    "Icon": "el-icon-s-shop",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "/",
+    "ParentId": 0,
+    "Url": "",
+    "OrderNo": 9900,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-12-17T15:34:23.89"
+  },
+  {
+    "MenuId": 50,
+    "MenuName": "閲囪喘鍗�",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "/Dt_PurchaseOrder",
+    "ParentId": 49,
+    "Url": "/purchaseOrder",
+    "OrderNo": 0,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": "admin",
+    "ModifyDate": "2024-12-17T16:31:57.193"
+  },
+  {
+    "MenuId": 51,
+    "MenuName": "鏀惰揣绠$悊",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"}]",
+    "Icon": "el-icon-s-home",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "/",
+    "ParentId": 0,
+    "Url": "",
+    "OrderNo": 9800,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": null,
+    "ModifyDate": null
+  },
+  {
+    "MenuId": 52,
+    "MenuName": "鏀惰揣鍗�",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Dt_ReceiveOrder",
+    "ParentId": 51,
+    "Url": "/receiveOrder",
+    "OrderNo": 0,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": null,
+    "ModifyDate": null
+  },
+  {
+    "MenuId": 53,
+    "MenuName": "閲囪喘鍗曟槑缁�",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 0,
+    "TableName": "Dt_PurchaseOrderDetail",
+    "ParentId": 49,
+    "Url": "/purchaseOrderDetail",
+    "OrderNo": 2,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:25:49.06",
+    "Modifier": null,
+    "ModifyDate": null
+  },
+  {
+    "MenuId": 54,
+    "MenuName": "瀹㈡埛淇℃伅",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Dt_CustomerInfo",
+    "ParentId": 17,
+    "Url": "/customerInfo",
+    "OrderNo": 0,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T17:56:51.487",
+    "Modifier": null,
+    "ModifyDate": null
+  },
+  {
+    "MenuId": 55,
+    "MenuName": "鍛樺伐淇℃伅",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Dt_UserInfo",
+    "ParentId": 17,
+    "Url": "/userInfo",
+    "OrderNo": 0,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T18:19:34.37",
+    "Modifier": null,
+    "ModifyDate": null
+  },
+  {
+    "MenuId": 56,
+    "MenuName": "鍘嗗彶浠诲姟淇℃伅",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Dt_Task_Hty",
+    "ParentId": 12,
+    "Url": "/task_hty",
+    "OrderNo": 0,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T18:35:41.773",
+    "Modifier": null,
+    "ModifyDate": null
+  },
+  {
+    "MenuId": 57,
+    "MenuName": "璐т綅鍙樺姩璁板綍",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Dt_LocationStatusChangeRecord",
+    "ParentId": 8,
+    "Url": "/locationStatusChangeRecord",
+    "OrderNo": 0,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T18:38:41.89",
+    "Modifier": null,
+    "ModifyDate": null
+  },
+  {
+    "MenuId": 58,
+    "MenuName": "搴撳瓨鍙樺姩璁板綍",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": "",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Dt_StockQuantityChangeRecord",
+    "ParentId": 8,
+    "Url": "/stockQuantityChangeRecord",
+    "OrderNo": 0,
+    "MenuType": 0,
+    "Creater": "admin",
+    "CreateDate": "2024-12-18T18:46:22.51",
+    "Modifier": null,
+    "ModifyDate": null
+  }
+]
\ No newline at end of file
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_Role.tsv" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_Role.tsv"
new file mode 100644
index 0000000..119ac80
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_Role.tsv"
@@ -0,0 +1,15 @@
+锘縖
+  {
+    "RoleId": 1,
+    "DeptName": null,
+    "DeptId": 111,
+    "Enable": 1,
+    "ParentId": 0,
+    "RoleName": "瓒呯骇绠$悊鍛�",
+    "Roles": null,
+    "Creater": "瓒呯骇绠$悊鍛�",
+    "CreateDate": "2024-09-04T10:37:49.73",
+    "Modifier": "admin",
+    "ModifyDate": "2024-04-29T13:53:44.717"
+  }
+]
\ No newline at end of file
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_RoleAuth.tsv" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_RoleAuth.tsv"
new file mode 100644
index 0000000..92a83ba
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_RoleAuth.tsv"
@@ -0,0 +1,167 @@
+锘縖
+  {
+    "AuthId": 136,
+    "AuthValue": "Search,Add,Delete,Update,Import,Export",
+    "MenuId": 1,
+    "RoleId": 1,
+    "UserId": null,
+    "Creater": "admin",
+    "CreateDate": "2024-09-04T10:37:50",
+    "Modifier": "admin",
+    "ModifyDate": "2024-02-22T09:31:16.363"
+  },
+  {
+    "AuthId": 137,
+    "AuthValue": "Search,Add,Delete,Update,Import,Export",
+    "MenuId": 2,
+    "RoleId": 1,
+    "UserId": null,
+    "Creater": "admin",
+    "CreateDate": "2024-09-04T10:37:50",
+    "Modifier": "admin",
+    "ModifyDate": "2024-04-29T15:04:07.83"
+  },
+  {
+    "AuthId": 138,
+    "AuthValue": "Search,Add,Delete,Update,Import,Export",
+    "MenuId": 3,
+    "RoleId": 1,
+    "UserId": null,
+    "Creater": "admin",
+    "CreateDate": "2024-09-04T10:37:50",
+    "Modifier": "admin",
+    "ModifyDate": "2024-02-22T09:31:16.363"
+  },
+  {
+    "AuthId": 140,
+    "AuthValue": "Search,Add,Delete,Update,Import,Export",
+    "MenuId": 4,
+    "RoleId": 1,
+    "UserId": null,
+    "Creater": "admin",
+    "CreateDate": "2024-09-04T10:37:50",
+    "Modifier": "admin",
+    "ModifyDate": "2024-02-22T09:31:16.363"
+  },
+  {
+    "AuthId": 141,
+    "AuthValue": "Search,Add,Delete,Update,Import,Export",
+    "MenuId": 5,
+    "RoleId": 1,
+    "UserId": null,
+    "Creater": "admin",
+    "CreateDate": "2024-09-04T10:37:50",
+    "Modifier": "admin",
+    "ModifyDate": "2024-02-22T09:31:16.363"
+  },
+  {
+    "AuthId": 143,
+    "AuthValue": "Search,Add,Delete,Update,Import,Export",
+    "MenuId": 6,
+    "RoleId": 1,
+    "UserId": null,
+    "Creater": "admin",
+    "CreateDate": "2024-09-04T10:37:50",
+    "Modifier": "admin",
+    "ModifyDate": "2024-02-22T09:31:16.363"
+  },
+  {
+    "AuthId": 144,
+    "AuthValue": "Search,Add,Delete,Update,Import,Export",
+    "MenuId": 7,
+    "RoleId": 1,
+    "UserId": null,
+    "Creater": "admin",
+    "CreateDate": "2024-09-04T10:37:50",
+    "Modifier": "admin",
+    "ModifyDate": "2024-04-29T15:00:47.033"
+  },
+  {
+    "AuthId": 146,
+    "AuthValue": "Search,Add,Delete,Update,Import,Export",
+    "MenuId": 8,
+    "RoleId": 1,
+    "UserId": null,
+    "Creater": "admin",
+    "CreateDate": "2024-09-04T10:37:50",
+    "Modifier": "admin",
+    "ModifyDate": "2024-04-29T15:04:07.83"
+  },
+  {
+    "AuthId": 148,
+    "AuthValue": "Search,Add,Delete,Update,Import,Export",
+    "MenuId": 9,
+    "RoleId": 1,
+    "UserId": null,
+    "Creater": "admin",
+    "CreateDate": "2024-09-04T10:37:50",
+    "Modifier": "admin",
+    "ModifyDate": "2024-02-22T09:31:16.363"
+  },
+  {
+    "AuthId": 153,
+    "AuthValue": "Search,Add,Delete,Update,Import,Export",
+    "MenuId": 10,
+    "RoleId": 1,
+    "UserId": null,
+    "Creater": "admin",
+    "CreateDate": "2024-09-04T10:37:50",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:06:51.9677061+08:00"
+  },
+  {
+    "AuthId": 154,
+    "AuthValue": "Search,Add,Delete,Update,Import,Export",
+    "MenuId": 12,
+    "RoleId": 1,
+    "UserId": null,
+    "Creater": "admin",
+    "CreateDate": "2024-09-04T10:37:50",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:06:51.9677072+08:00"
+  },
+  {
+    "AuthId": 155,
+    "AuthValue": "Search,Add,Delete,Update,Import,Export",
+    "MenuId": 13,
+    "RoleId": 1,
+    "UserId": null,
+    "Creater": "admin",
+    "CreateDate": "2024-09-04T10:37:50",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:06:51.9677079+08:00"
+  },
+  {
+    "AuthId": 156,
+    "AuthValue": "Search",
+    "MenuId": 11,
+    "RoleId": 1,
+    "UserId": null,
+    "Creater": "admin",
+    "CreateDate": "2024-09-04T10:37:50",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:06:51.9677085+08:00"
+  },
+  {
+    "AuthId": 157,
+    "AuthValue": "Search",
+    "MenuId": 11,
+    "RoleId": 2,
+    "UserId": null,
+    "Creater": "admin",
+    "CreateDate": "2024-09-04T10:37:50",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:06:51.9677167+08:00"
+  },
+  {
+    "AuthId": 158,
+    "AuthValue": "Search,Add,Delete,Update,Import,Export",
+    "MenuId": 10,
+    "RoleId": 2,
+    "UserId": null,
+    "Creater": "admin",
+    "CreateDate": "2024-09-04T10:37:50",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:06:51.9677174+08:00"
+  }
+]
\ No newline at end of file
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_User.tsv" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_User.tsv"
new file mode 100644
index 0000000..11ae206
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_User.tsv"
@@ -0,0 +1,29 @@
+锘縖
+  {
+    "UserId": 1,
+    "UserName": "admin",
+    "RoleId": 1,
+    "RoleName": "瓒呯骇绠$悊鍛�",
+    "PhoneNo": "",
+    "Remark": "",
+    "UserPwd": "j79rYYvCz4vdhcboB1Ausg==",
+    "UserTrueName": "瓒呯骇绠$悊鍛�",
+    "DeptName": "",
+    "DeptId": 0,
+    "Email": "",
+    "Enable": 1,
+    "Gender": 1,
+    "HeadImageUrl": "",
+    "LastModifyPwdDate": "2024-04-16T19:58:55",
+    "Address": "绯荤粺鏈嶅姟鍣�",
+    "AuditDate": "2024-04-16T00:54:06",
+    "AuditStatus": 1,
+    "Auditor": "瓒呯骇绠$悊鍛�",
+    "Token": "",
+    "TenantId": 0,
+    "Creater": "绯荤粺",
+    "CreateDate": "2024-09-04T10:37:50.81",
+    "Modifier": null,
+    "ModifyDate": "2024-09-04T11:06:37.8196741+08:00"
+  }
+]
\ No newline at end of file
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/css/site.css" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/css/site.css"
new file mode 100644
index 0000000..e679a8e
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/css/site.css"
@@ -0,0 +1,71 @@
+锘�/* Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
+for details on configuring this project to bundle and minify static web assets. */
+
+a.navbar-brand {
+  white-space: normal;
+  text-align: center;
+  word-break: break-all;
+}
+
+/* Provide sufficient contrast against white background */
+a {
+  color: #0366d6;
+}
+
+.btn-primary {
+  color: #fff;
+  background-color: #1b6ec2;
+  border-color: #1861ac;
+}
+
+.nav-pills .nav-link.active, .nav-pills .show > .nav-link {
+  color: #fff;
+  background-color: #1b6ec2;
+  border-color: #1861ac;
+}
+
+/* Sticky footer styles
+-------------------------------------------------- */
+html {
+  font-size: 14px;
+}
+@media (min-width: 768px) {
+  html {
+    font-size: 16px;
+  }
+}
+
+.border-top {
+  border-top: 1px solid #e5e5e5;
+}
+.border-bottom {
+  border-bottom: 1px solid #e5e5e5;
+}
+
+.box-shadow {
+  box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05);
+}
+
+button.accept-policy {
+  font-size: 1rem;
+  line-height: inherit;
+}
+
+/* Sticky footer styles
+-------------------------------------------------- */
+html {
+  position: relative;
+  min-height: 100%;
+}
+
+body {
+  /* Margin bottom by footer height */
+  margin-bottom: 60px;
+}
+.footer {
+  position: absolute;
+  bottom: 0;
+  width: 100%;
+  white-space: nowrap;
+  line-height: 60px; /* Vertically center the text there */
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/css/style.css" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/css/style.css"
new file mode 100644
index 0000000..f8fe18d
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/css/style.css"
@@ -0,0 +1,132 @@
+@charset "utf-8";
+::selection {
+  background: #2D2F36;
+}
+::-webkit-selection {
+  background: #2D2F36;
+}
+::-moz-selection {
+  background: #2D2F36;
+}
+body {
+  background: white;
+  font-family: 'Inter UI', sans-serif;
+  margin: 0;
+  padding: 20px;
+}
+.page {
+  background: #e2e2e5;
+  display: flex;
+  flex-direction: column;
+  height: calc(100% - 40px);
+  position: absolute;
+  place-content: center;
+  width: calc(100% - 40px);
+}
+@media (max-width: 767px) {
+  .page {
+    height: auto;
+    margin-bottom: 20px;
+    padding-bottom: 20px;
+  }
+}
+.container {
+  display: flex;
+  height: 320px;
+  margin: 0 auto;
+  width: 640px;
+}
+@media (max-width: 767px) {
+  .container {
+    flex-direction: column;
+    height: 630px;
+    width: 320px;
+  }
+}
+.left {
+  background: white;
+  height: calc(100% - 40px);
+  top: 20px;
+  position: relative;
+  width: 50%;
+}
+@media (max-width: 767px) {
+  .left {
+    height: 100%;
+    left: 20px;
+    width: calc(100% - 40px);
+    max-height: 270px;
+  }
+}
+.login {
+  font-size: 33px;
+  font-weight: 900;
+  margin: 50px 40px 40px;
+}
+.eula {
+  color: #999;
+  font-size: 14px;
+  line-height: 1.5;
+  margin: 40px;
+}
+.right {
+  background: #474A59;
+  box-shadow: 0px 0px 40px 16px rgba(0,0,0,0.22);
+  color: #F1F1F2;
+  position: relative;
+  width: 50%;
+}
+@media (max-width: 767px) {
+  .right {
+    flex-shrink: 0;
+    height: 100%;
+    width: 100%;
+    max-height: 350px;
+  }
+}
+svg {
+  position: absolute;
+  width: 320px;
+}
+path {
+  fill: none;
+  stroke: url(#linearGradient);;
+  stroke-width: 4;
+  stroke-dasharray: 240 1386;
+}
+.form {
+  margin: 40px;
+  position: absolute;
+}
+label {
+  color:  #c2c2c5;
+  display: block;
+  font-size: 14px;
+  height: 16px;
+  margin-top: 20px;
+  margin-bottom: 5px;
+}
+input {
+  background: transparent;
+  border: 0;
+  color: #f2f2f2;
+  font-size: 20px;
+  height: 30px;
+  line-height: 30px;
+  outline: none !important;
+  width: 100%;
+}
+input::-moz-focus-inner { 
+  border: 0; 
+}
+#submit {
+  color: #707075;
+  margin-top: 40px;
+  transition: color 300ms;
+}
+#submit:focus {
+  color: #f2f2f2;
+}
+#submit:active {
+  color: #d0d0d2;
+}
\ No newline at end of file
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/css/swaggerdoc.css" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/css/swaggerdoc.css"
new file mode 100644
index 0000000..1a05ca2
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/css/swaggerdoc.css"
@@ -0,0 +1,109 @@
+.selectBox {
+    margin: 50px auto; /*灞呬腑*/
+    width: 150px;
+    text-align: center;
+}
+
+    .selectBox a {
+        color: #1b1b1b;
+        text-decoration: none;
+    }
+
+    .selectBox ul, .selectBox li {
+        list-style: none;
+    }
+
+    .selectBox span {
+        line-height: 46px;
+        background-color: #85ea2d;
+        display: block;
+        margin-bottom: 20px;
+        position: relative;
+        z-index: 2;
+        border-radius: 5px;
+        -webkit-transition: all .2s ease-in;
+        transition: all .2s ease-in;
+    }
+
+.drop {
+    left: 0;
+    right: 0;
+    top: -9999px;
+    box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.2);
+    border-radius: 5px;
+    position: absolute;
+    z-index: 1;
+    -webkit-transform: translateY(-50px); /*y杞存柟鍚戝钩绉�*/
+    transform: translateY(-50px);
+    opacity: 0;
+    -webkit-transition: all .2s ease-in; /*骞崇Щ鏃堕棿0.2s*/
+    transition: all .2s ease-in;
+}
+/*缁欓�佷釜涓嬫媺鍔╂敾*/
+.selectBox:hover span {
+    background-color: #74ea0d;
+}
+
+    .selectBox:hover span a:after {
+        -webkit-transform: rotate(180deg); /*鏃嬭浆180搴�*/
+        transform: rotate(180deg);
+    }
+
+.selectBox:hover .drop {
+    position: static;
+    opacity: 1;
+    -webkit-transform: translateY(0);
+    transform: translateY(0);
+}
+.drop li:first-child:before {
+    content: " ";
+    font-size: 0;
+    line-height: 0;
+    margin: 0 auto; /*灞呬腑*/
+    display: block; /*鐙崰涓�琛�*/
+    box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.2); /*閰嶅悎鏁翠綋涓�鏍风殑鎶曞奖*/
+    background-color: #fff;
+    width: 10px;
+    height: 10px;
+    -webkit-transform: rotate(45deg);
+    transform: rotate(45deg); /*涓�涓鏂瑰舰鍊炬枩鍥涘崄浜斿害灏辨槸涓夎浜嗕絾鏄鎶婁笅鍗婇儴鍒嗚棌璧锋潵*/
+    position: relative;
+    top: -5px; /*鏋滄柇鐨勯湶鍑轰笂鍗婇儴鍒�*/
+    z-index: 1; /*鏋滄柇鐨勯殣钘忎笅鍗婇儴鍒�*/
+    -webkit-transition: all .2s ease-in;
+    transition: all .2s ease-in;
+}
+
+.drop li a {
+    color: #888;
+    line-height: 46px;
+    border-bottom: solid 1px #eee;
+    font-size: 14px;
+    display: block;
+    background-color: #fff; /*瑕佹湁鑳屾櫙鑹叉墠鑳界洊浣忓憖*/
+    position: relative;
+    z-index: 2; /*杩欓噷寰堥噸瑕� 瑕佹尅浣忎笁瑙掑舰鐨勪笅鍗婇儴鍒�*/
+    -webkit-transition: all .2s ease-in;
+    transition: all .2s ease-in;
+}
+.drop li:first-child a {
+    border-top-left-radius: 5px;
+    border-top-right-radius: 5px;
+    margin-top: -10px;
+}
+
+.drop li:last-child a {
+    border-bottom-left-radius: 5px;
+    border-bottom-right-radius: 5px;
+    border-bottom: none;
+}
+.drop li:hover:before {
+    background-color: #85ea2d;
+}
+
+.drop li:hover a {
+    background-color: #85ea2d;
+    color: #fff;
+}
+
+
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/favicon.ico" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/favicon.ico"
new file mode 100644
index 0000000..a3a7999
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/favicon.ico"
Binary files differ
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/anime.min.js" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/anime.min.js"
new file mode 100644
index 0000000..c399324
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/anime.min.js"
@@ -0,0 +1,33 @@
+/*
+ 2017 Julian Garnier
+ Released under the MIT license
+*/
+var $jscomp={scope:{}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(e,r,p){if(p.get||p.set)throw new TypeError("ES3 does not support getters and setters.");e!=Array.prototype&&e!=Object.prototype&&(e[r]=p.value)};$jscomp.getGlobal=function(e){return"undefined"!=typeof window&&window===e?e:"undefined"!=typeof global&&null!=global?global:e};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_";
+$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.symbolCounter_=0;$jscomp.Symbol=function(e){return $jscomp.SYMBOL_PREFIX+(e||"")+$jscomp.symbolCounter_++};
+$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var e=$jscomp.global.Symbol.iterator;e||(e=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[e]&&$jscomp.defineProperty(Array.prototype,e,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(e){var r=0;return $jscomp.iteratorPrototype(function(){return r<e.length?{done:!1,value:e[r++]}:{done:!0}})};
+$jscomp.iteratorPrototype=function(e){$jscomp.initSymbolIterator();e={next:e};e[$jscomp.global.Symbol.iterator]=function(){return this};return e};$jscomp.array=$jscomp.array||{};$jscomp.iteratorFromArray=function(e,r){$jscomp.initSymbolIterator();e instanceof String&&(e+="");var p=0,m={next:function(){if(p<e.length){var u=p++;return{value:r(u,e[u]),done:!1}}m.next=function(){return{done:!0,value:void 0}};return m.next()}};m[Symbol.iterator]=function(){return m};return m};
+$jscomp.polyfill=function(e,r,p,m){if(r){p=$jscomp.global;e=e.split(".");for(m=0;m<e.length-1;m++){var u=e[m];u in p||(p[u]={});p=p[u]}e=e[e.length-1];m=p[e];r=r(m);r!=m&&null!=r&&$jscomp.defineProperty(p,e,{configurable:!0,writable:!0,value:r})}};$jscomp.polyfill("Array.prototype.keys",function(e){return e?e:function(){return $jscomp.iteratorFromArray(this,function(e){return e})}},"es6-impl","es3");var $jscomp$this=this;
+(function(e,r){"function"===typeof define&&define.amd?define([],r):"object"===typeof module&&module.exports?module.exports=r():e.anime=r()})(this,function(){function e(a){if(!h.col(a))try{return document.querySelectorAll(a)}catch(c){}}function r(a,c){for(var d=a.length,b=2<=arguments.length?arguments[1]:void 0,f=[],n=0;n<d;n++)if(n in a){var k=a[n];c.call(b,k,n,a)&&f.push(k)}return f}function p(a){return a.reduce(function(a,d){return a.concat(h.arr(d)?p(d):d)},[])}function m(a){if(h.arr(a))return a;
+h.str(a)&&(a=e(a)||a);return a instanceof NodeList||a instanceof HTMLCollection?[].slice.call(a):[a]}function u(a,c){return a.some(function(a){return a===c})}function C(a){var c={},d;for(d in a)c[d]=a[d];return c}function D(a,c){var d=C(a),b;for(b in a)d[b]=c.hasOwnProperty(b)?c[b]:a[b];return d}function z(a,c){var d=C(a),b;for(b in c)d[b]=h.und(a[b])?c[b]:a[b];return d}function T(a){a=a.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,c,d,k){return c+c+d+d+k+k});var c=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);
+a=parseInt(c[1],16);var d=parseInt(c[2],16),c=parseInt(c[3],16);return"rgba("+a+","+d+","+c+",1)"}function U(a){function c(a,c,b){0>b&&(b+=1);1<b&&--b;return b<1/6?a+6*(c-a)*b:.5>b?c:b<2/3?a+(c-a)*(2/3-b)*6:a}var d=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(a)||/hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(a);a=parseInt(d[1])/360;var b=parseInt(d[2])/100,f=parseInt(d[3])/100,d=d[4]||1;if(0==b)f=b=a=f;else{var n=.5>f?f*(1+b):f+b-f*b,k=2*f-n,f=c(k,n,a+1/3),b=c(k,n,a);a=c(k,n,a-1/3)}return"rgba("+
+255*f+","+255*b+","+255*a+","+d+")"}function y(a){if(a=/([\+\-]?[0-9#\.]+)(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(a))return a[2]}function V(a){if(-1<a.indexOf("translate")||"perspective"===a)return"px";if(-1<a.indexOf("rotate")||-1<a.indexOf("skew"))return"deg"}function I(a,c){return h.fnc(a)?a(c.target,c.id,c.total):a}function E(a,c){if(c in a.style)return getComputedStyle(a).getPropertyValue(c.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase())||"0"}function J(a,c){if(h.dom(a)&&
+u(W,c))return"transform";if(h.dom(a)&&(a.getAttribute(c)||h.svg(a)&&a[c]))return"attribute";if(h.dom(a)&&"transform"!==c&&E(a,c))return"css";if(null!=a[c])return"object"}function X(a,c){var d=V(c),d=-1<c.indexOf("scale")?1:0+d;a=a.style.transform;if(!a)return d;for(var b=[],f=[],n=[],k=/(\w+)\((.+?)\)/g;b=k.exec(a);)f.push(b[1]),n.push(b[2]);a=r(n,function(a,b){return f[b]===c});return a.length?a[0]:d}function K(a,c){switch(J(a,c)){case "transform":return X(a,c);case "css":return E(a,c);case "attribute":return a.getAttribute(c)}return a[c]||
+0}function L(a,c){var d=/^(\*=|\+=|-=)/.exec(a);if(!d)return a;var b=y(a)||0;c=parseFloat(c);a=parseFloat(a.replace(d[0],""));switch(d[0][0]){case "+":return c+a+b;case "-":return c-a+b;case "*":return c*a+b}}function F(a,c){return Math.sqrt(Math.pow(c.x-a.x,2)+Math.pow(c.y-a.y,2))}function M(a){a=a.points;for(var c=0,d,b=0;b<a.numberOfItems;b++){var f=a.getItem(b);0<b&&(c+=F(d,f));d=f}return c}function N(a){if(a.getTotalLength)return a.getTotalLength();switch(a.tagName.toLowerCase()){case "circle":return 2*
+Math.PI*a.getAttribute("r");case "rect":return 2*a.getAttribute("width")+2*a.getAttribute("height");case "line":return F({x:a.getAttribute("x1"),y:a.getAttribute("y1")},{x:a.getAttribute("x2"),y:a.getAttribute("y2")});case "polyline":return M(a);case "polygon":var c=a.points;return M(a)+F(c.getItem(c.numberOfItems-1),c.getItem(0))}}function Y(a,c){function d(b){b=void 0===b?0:b;return a.el.getPointAtLength(1<=c+b?c+b:0)}var b=d(),f=d(-1),n=d(1);switch(a.property){case "x":return b.x;case "y":return b.y;
+case "angle":return 180*Math.atan2(n.y-f.y,n.x-f.x)/Math.PI}}function O(a,c){var d=/-?\d*\.?\d+/g,b;b=h.pth(a)?a.totalLength:a;if(h.col(b))if(h.rgb(b)){var f=/rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(b);b=f?"rgba("+f[1]+",1)":b}else b=h.hex(b)?T(b):h.hsl(b)?U(b):void 0;else f=(f=y(b))?b.substr(0,b.length-f.length):b,b=c&&!/\s/g.test(b)?f+c:f;b+="";return{original:b,numbers:b.match(d)?b.match(d).map(Number):[0],strings:h.str(a)||c?b.split(d):[]}}function P(a){a=a?p(h.arr(a)?a.map(m):m(a)):[];return r(a,
+function(a,d,b){return b.indexOf(a)===d})}function Z(a){var c=P(a);return c.map(function(a,b){return{target:a,id:b,total:c.length}})}function aa(a,c){var d=C(c);if(h.arr(a)){var b=a.length;2!==b||h.obj(a[0])?h.fnc(c.duration)||(d.duration=c.duration/b):a={value:a}}return m(a).map(function(a,b){b=b?0:c.delay;a=h.obj(a)&&!h.pth(a)?a:{value:a};h.und(a.delay)&&(a.delay=b);return a}).map(function(a){return z(a,d)})}function ba(a,c){var d={},b;for(b in a){var f=I(a[b],c);h.arr(f)&&(f=f.map(function(a){return I(a,
+c)}),1===f.length&&(f=f[0]));d[b]=f}d.duration=parseFloat(d.duration);d.delay=parseFloat(d.delay);return d}function ca(a){return h.arr(a)?A.apply(this,a):Q[a]}function da(a,c){var d;return a.tweens.map(function(b){b=ba(b,c);var f=b.value,e=K(c.target,a.name),k=d?d.to.original:e,k=h.arr(f)?f[0]:k,w=L(h.arr(f)?f[1]:f,k),e=y(w)||y(k)||y(e);b.from=O(k,e);b.to=O(w,e);b.start=d?d.end:a.offset;b.end=b.start+b.delay+b.duration;b.easing=ca(b.easing);b.elasticity=(1E3-Math.min(Math.max(b.elasticity,1),999))/
+1E3;b.isPath=h.pth(f);b.isColor=h.col(b.from.original);b.isColor&&(b.round=1);return d=b})}function ea(a,c){return r(p(a.map(function(a){return c.map(function(b){var c=J(a.target,b.name);if(c){var d=da(b,a);b={type:c,property:b.name,animatable:a,tweens:d,duration:d[d.length-1].end,delay:d[0].delay}}else b=void 0;return b})})),function(a){return!h.und(a)})}function R(a,c,d,b){var f="delay"===a;return c.length?(f?Math.min:Math.max).apply(Math,c.map(function(b){return b[a]})):f?b.delay:d.offset+b.delay+
+b.duration}function fa(a){var c=D(ga,a),d=D(S,a),b=Z(a.targets),f=[],e=z(c,d),k;for(k in a)e.hasOwnProperty(k)||"targets"===k||f.push({name:k,offset:e.offset,tweens:aa(a[k],d)});a=ea(b,f);return z(c,{children:[],animatables:b,animations:a,duration:R("duration",a,c,d),delay:R("delay",a,c,d)})}function q(a){function c(){return window.Promise&&new Promise(function(a){return p=a})}function d(a){return g.reversed?g.duration-a:a}function b(a){for(var b=0,c={},d=g.animations,f=d.length;b<f;){var e=d[b],
+k=e.animatable,h=e.tweens,n=h.length-1,l=h[n];n&&(l=r(h,function(b){return a<b.end})[0]||l);for(var h=Math.min(Math.max(a-l.start-l.delay,0),l.duration)/l.duration,w=isNaN(h)?1:l.easing(h,l.elasticity),h=l.to.strings,p=l.round,n=[],m=void 0,m=l.to.numbers.length,t=0;t<m;t++){var x=void 0,x=l.to.numbers[t],q=l.from.numbers[t],x=l.isPath?Y(l.value,w*x):q+w*(x-q);p&&(l.isColor&&2<t||(x=Math.round(x*p)/p));n.push(x)}if(l=h.length)for(m=h[0],w=0;w<l;w++)p=h[w+1],t=n[w],isNaN(t)||(m=p?m+(t+p):m+(t+" "));
+else m=n[0];ha[e.type](k.target,e.property,m,c,k.id);e.currentValue=m;b++}if(b=Object.keys(c).length)for(d=0;d<b;d++)H||(H=E(document.body,"transform")?"transform":"-webkit-transform"),g.animatables[d].target.style[H]=c[d].join(" ");g.currentTime=a;g.progress=a/g.duration*100}function f(a){if(g[a])g[a](g)}function e(){g.remaining&&!0!==g.remaining&&g.remaining--}function k(a){var k=g.duration,n=g.offset,w=n+g.delay,r=g.currentTime,x=g.reversed,q=d(a);if(g.children.length){var u=g.children,v=u.length;
+if(q>=g.currentTime)for(var G=0;G<v;G++)u[G].seek(q);else for(;v--;)u[v].seek(q)}if(q>=w||!k)g.began||(g.began=!0,f("begin")),f("run");if(q>n&&q<k)b(q);else if(q<=n&&0!==r&&(b(0),x&&e()),q>=k&&r!==k||!k)b(k),x||e();f("update");a>=k&&(g.remaining?(t=h,"alternate"===g.direction&&(g.reversed=!g.reversed)):(g.pause(),g.completed||(g.completed=!0,f("complete"),"Promise"in window&&(p(),m=c()))),l=0)}a=void 0===a?{}:a;var h,t,l=0,p=null,m=c(),g=fa(a);g.reset=function(){var a=g.direction,c=g.loop;g.currentTime=
+0;g.progress=0;g.paused=!0;g.began=!1;g.completed=!1;g.reversed="reverse"===a;g.remaining="alternate"===a&&1===c?2:c;b(0);for(a=g.children.length;a--;)g.children[a].reset()};g.tick=function(a){h=a;t||(t=h);k((l+h-t)*q.speed)};g.seek=function(a){k(d(a))};g.pause=function(){var a=v.indexOf(g);-1<a&&v.splice(a,1);g.paused=!0};g.play=function(){g.paused&&(g.paused=!1,t=0,l=d(g.currentTime),v.push(g),B||ia())};g.reverse=function(){g.reversed=!g.reversed;t=0;l=d(g.currentTime)};g.restart=function(){g.pause();
+g.reset();g.play()};g.finished=m;g.reset();g.autoplay&&g.play();return g}var ga={update:void 0,begin:void 0,run:void 0,complete:void 0,loop:1,direction:"normal",autoplay:!0,offset:0},S={duration:1E3,delay:0,easing:"easeOutElastic",elasticity:500,round:0},W="translateX translateY translateZ rotate rotateX rotateY rotateZ scale scaleX scaleY scaleZ skewX skewY perspective".split(" "),H,h={arr:function(a){return Array.isArray(a)},obj:function(a){return-1<Object.prototype.toString.call(a).indexOf("Object")},
+pth:function(a){return h.obj(a)&&a.hasOwnProperty("totalLength")},svg:function(a){return a instanceof SVGElement},dom:function(a){return a.nodeType||h.svg(a)},str:function(a){return"string"===typeof a},fnc:function(a){return"function"===typeof a},und:function(a){return"undefined"===typeof a},hex:function(a){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a)},rgb:function(a){return/^rgb/.test(a)},hsl:function(a){return/^hsl/.test(a)},col:function(a){return h.hex(a)||h.rgb(a)||h.hsl(a)}},A=function(){function a(a,
+d,b){return(((1-3*b+3*d)*a+(3*b-6*d))*a+3*d)*a}return function(c,d,b,f){if(0<=c&&1>=c&&0<=b&&1>=b){var e=new Float32Array(11);if(c!==d||b!==f)for(var k=0;11>k;++k)e[k]=a(.1*k,c,b);return function(k){if(c===d&&b===f)return k;if(0===k)return 0;if(1===k)return 1;for(var h=0,l=1;10!==l&&e[l]<=k;++l)h+=.1;--l;var l=h+(k-e[l])/(e[l+1]-e[l])*.1,n=3*(1-3*b+3*c)*l*l+2*(3*b-6*c)*l+3*c;if(.001<=n){for(h=0;4>h;++h){n=3*(1-3*b+3*c)*l*l+2*(3*b-6*c)*l+3*c;if(0===n)break;var m=a(l,c,b)-k,l=l-m/n}k=l}else if(0===
+n)k=l;else{var l=h,h=h+.1,g=0;do m=l+(h-l)/2,n=a(m,c,b)-k,0<n?h=m:l=m;while(1e-7<Math.abs(n)&&10>++g);k=m}return a(k,d,f)}}}}(),Q=function(){function a(a,b){return 0===a||1===a?a:-Math.pow(2,10*(a-1))*Math.sin(2*(a-1-b/(2*Math.PI)*Math.asin(1))*Math.PI/b)}var c="Quad Cubic Quart Quint Sine Expo Circ Back Elastic".split(" "),d={In:[[.55,.085,.68,.53],[.55,.055,.675,.19],[.895,.03,.685,.22],[.755,.05,.855,.06],[.47,0,.745,.715],[.95,.05,.795,.035],[.6,.04,.98,.335],[.6,-.28,.735,.045],a],Out:[[.25,
+.46,.45,.94],[.215,.61,.355,1],[.165,.84,.44,1],[.23,1,.32,1],[.39,.575,.565,1],[.19,1,.22,1],[.075,.82,.165,1],[.175,.885,.32,1.275],function(b,c){return 1-a(1-b,c)}],InOut:[[.455,.03,.515,.955],[.645,.045,.355,1],[.77,0,.175,1],[.86,0,.07,1],[.445,.05,.55,.95],[1,0,0,1],[.785,.135,.15,.86],[.68,-.55,.265,1.55],function(b,c){return.5>b?a(2*b,c)/2:1-a(-2*b+2,c)/2}]},b={linear:A(.25,.25,.75,.75)},f={},e;for(e in d)f.type=e,d[f.type].forEach(function(a){return function(d,f){b["ease"+a.type+c[f]]=h.fnc(d)?
+d:A.apply($jscomp$this,d)}}(f)),f={type:f.type};return b}(),ha={css:function(a,c,d){return a.style[c]=d},attribute:function(a,c,d){return a.setAttribute(c,d)},object:function(a,c,d){return a[c]=d},transform:function(a,c,d,b,f){b[f]||(b[f]=[]);b[f].push(c+"("+d+")")}},v=[],B=0,ia=function(){function a(){B=requestAnimationFrame(c)}function c(c){var b=v.length;if(b){for(var d=0;d<b;)v[d]&&v[d].tick(c),d++;a()}else cancelAnimationFrame(B),B=0}return a}();q.version="2.2.0";q.speed=1;q.running=v;q.remove=
+function(a){a=P(a);for(var c=v.length;c--;)for(var d=v[c],b=d.animations,f=b.length;f--;)u(a,b[f].animatable.target)&&(b.splice(f,1),b.length||d.pause())};q.getValue=K;q.path=function(a,c){var d=h.str(a)?e(a)[0]:a,b=c||100;return function(a){return{el:d,property:a,totalLength:N(d)*(b/100)}}};q.setDashoffset=function(a){var c=N(a);a.setAttribute("stroke-dasharray",c);return c};q.bezier=A;q.easings=Q;q.timeline=function(a){var c=q(a);c.pause();c.duration=0;c.add=function(d){c.children.forEach(function(a){a.began=
+!0;a.completed=!0});m(d).forEach(function(b){var d=z(b,D(S,a||{}));d.targets=d.targets||a.targets;b=c.duration;var e=d.offset;d.autoplay=!1;d.direction=c.direction;d.offset=h.und(e)?b:L(e,b);c.began=!0;c.completed=!0;c.seek(d.offset);d=q(d);d.began=!0;d.completed=!0;d.duration>b&&(c.duration=d.duration);c.children.push(d)});c.seek(0);c.reset();c.autoplay&&c.restart();return c};return c};q.random=function(a,c){return Math.floor(Math.random()*(c-a+1))+a};return q});
\ No newline at end of file
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/jquery-3.3.1.min.js" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/jquery-3.3.1.min.js"
new file mode 100644
index 0000000..4d9b3a2
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/jquery-3.3.1.min.js"
@@ -0,0 +1,2 @@
+/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:n.sort,splice:n.splice},w.extend=w.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||g(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&w.isPlainObject(n)?n:{},a[t]=w.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},w.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==c.call(e))&&(!(t=i(e))||"function"==typeof(n=f.call(t,"constructor")&&t.constructor)&&p.call(n)===d)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){m(e)},each:function(e,t){var n,r=0;if(C(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?w.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return a.apply([],s)},guid:1,support:h}),"function"==typeof Symbol&&(w.fn[Symbol.iterator]=n[Symbol.iterator]),w.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function C(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!g(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",I="\\["+M+"*("+R+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+R+"))|)"+M+"*\\]",W=":("+R+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+I+")*)|.*)\\)|)",$=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),F=new RegExp("^"+M+"*,"+M+"*"),_=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="<a id='"+b+"'></a><select id='"+b+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=pe(t);function ye(){}ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=r.preFilter;while(s){n&&!(i=F.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=_.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(B," ")}),s=s.slice(n.length));for(a in r.filter)!(i=V[a].exec(s))||l[a]&&!(i=l[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):k(e,u).slice(0)};function ve(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function me(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&"parentNode"===o,s=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,u){var l,c,f,p=[T,s];if(u){while(t=t[r])if((1===t.nodeType||a)&&e(t,n,u))return!0}else while(t=t[r])if(1===t.nodeType||a)if(f=t[b]||(t[b]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[o])&&l[0]===T&&l[1]===s)return p[2]=l[2];if(c[o]=p,p[2]=e(t,n,u))return!0}return!1}}function xe(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r<i;r++)oe(e,t[r],n);return n}function we(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(e,t,n,r,i,o){return r&&!r[b]&&(r=Te(r)),i&&!i[b]&&(i=Te(i,o)),se(function(o,a,s,u){var l,c,f,p=[],d=[],h=a.length,g=o||be(t||"*",s.nodeType?[s]:s,[]),y=!e||!o&&t?g:we(g,p,e,s,u),v=n?i||(o?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r){l=we(v,d),r(l,[],s,u),c=l.length;while(c--)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f))}if(o){if(i||e){if(i){l=[],c=v.length;while(c--)(f=v[c])&&l.push(y[c]=f);i(null,v=[],l,u)}c=v.length;while(c--)(f=v[c])&&(l=i?O(o,f):p[c])>-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u<o;u++)if(n=r.relative[e[u].type])p=[me(xe(p),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[b]){for(i=++u;i<o;i++)if(r.relative[e[i].type])break;return Te(u>1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u<i&&Ce(e.slice(u,i)),i<o&&Ce(e=e.slice(i)),i<o&&ve(e))}p.push(n)}return xe(p)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t<r;t++)if(w.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)w.find(e,i[t],n);return r>1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(w.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&w(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s<o.length)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1)}e.memory||(n=!1),t=!1,i&&(o=n?[]:"")},l={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){w.each(n,function(n,r){g(r)?e.unique&&l.has(r)||o.push(r):r&&r.length&&"string"!==x(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return w.each(arguments,function(e,t){var n;while((n=w.inArray(t,o,n))>-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t<o)){if((e=r.apply(s,u))===n.promise())throw new TypeError("Thenable self-resolution");l=e&&("object"==typeof e||"function"==typeof e)&&e.then,g(l)?i?l.call(e,a(o,n,I,i),a(o,n,W,i)):(o++,l.call(e,a(o,n,I,i),a(o,n,W,i),a(o,n,I,n.notifyWith))):(r!==I&&(s=void 0,u=[e]),(i||n.resolveWith)(s,u))}},c=i?l:function(){try{l()}catch(e){w.Deferred.exceptionHook&&w.Deferred.exceptionHook(e,c.stackTrace),t+1>=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},X=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function G(e){return e.replace(X,"ms-").replace(U,V)}var Y=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=w.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Y(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[G(t)]=n;else for(r in t)i[G(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][G(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(G):(t=G(t))in r?[t]:t.match(M)||[]).length;while(n--)delete r[t[n]]}(void 0===t||w.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!w.isEmptyObject(t)}};var J=new Q,K=new Q,Z=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ee=/[A-Z]/g;function te(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Z.test(e)?JSON.parse(e):e)}function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(ee,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=te(n)}catch(e){}K.set(e,t,n)}else n=void 0;return n}w.extend({hasData:function(e){return K.hasData(e)||J.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),w.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=K.get(o),1===o.nodeType&&!J.get(o,"hasDataAttrs"))){n=a.length;while(n--)a[n]&&0===(r=a[n].name).indexOf("data-")&&(r=G(r.slice(5)),ne(o,r,i[r]));J.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof e?this.each(function(){K.set(this,e)}):z(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=K.get(o,e)))return n;if(void 0!==(n=ne(o,e)))return n}else this.each(function(){K.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?w.queue(this[0],e):void 0===t?this:this.each(function(){var n=w.queue(this,e,t);w._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&w.dequeue(this,e)})},dequeue:function(e){return this.each(function(){w.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=w.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=J.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ie=new RegExp("^(?:([+-])=|)("+re+")([a-z%]*)$","i"),oe=["Top","Right","Bottom","Left"],ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&w.contains(e.ownerDocument,e)&&"none"===w.css(e,"display")},se=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i};function ue(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return w.css(e,t,"")},u=s(),l=n&&n[3]||(w.cssNumber[t]?"":"px"),c=(w.cssNumber[t]||"px"!==l&&+u)&&ie.exec(w.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)w.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,w.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var le={};function ce(e){var t,n=e.ownerDocument,r=e.nodeName,i=le[r];return i||(t=n.body.appendChild(n.createElement(r)),i=w.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),le[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(r=e[o]).style&&(n=r.style.display,t?("none"===n&&(i[o]=J.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&ae(r)&&(i[o]=ce(r))):"none"!==n&&(i[o]="none",J.set(r,"display",n)));for(o=0;o<a;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}w.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?w(this).show():w(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))w.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+w.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;w.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&w.inArray(o,r)>-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n<arguments.length;n++)u[n]=arguments[n];if(t.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,t)){s=w.event.handlers.call(this,t,l),n=0;while((o=s[n++])&&!t.isPropagationStopped()){t.currentTarget=o.elem,r=0;while((a=o.handlers[r++])&&!t.isImmediatePropagationStopped())t.rnamespace&&!t.rnamespace.test(a.namespace)||(t.handleObj=a,t.data=a.data,void 0!==(i=((w.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?w(i,this).index(l)>-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(w.Event.prototype,e,{enumerable:!0,configurable:!0,get:g(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[w.expando]?e:new w.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Se()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===Se()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&N(this,"input"))return this.click(),!1},_default:function(e){return N(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},w.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},w.Event=function(e,t){if(!(this instanceof w.Event))return new w.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:ke,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&w.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[w.expando]=!0},w.Event.prototype={constructor:w.Event,isDefaultPrevented:ke,isPropagationStopped:ke,isImmediatePropagationStopped:ke,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},w.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},w.event.addProp),w.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){w.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||w.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),w.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,w(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=ke),this.each(function(){w.event.remove(this,e,n,t)})}});var Ne=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/<script|<style|<link/i,je=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n<r;n++)w.event.add(t,i,l[i][n])}K.hasData(e)&&(s=K.access(e),u=w.extend({},s),K.set(t,u))}}function Me(e,t){var n=t.nodeName.toLowerCase();"input"===n&&pe.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,r){t=a.apply([],t);var i,o,s,u,l,c,f=0,p=e.length,d=p-1,y=t[0],v=g(y);if(v||p>1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f<p;f++)l=i,f!==d&&(l=w.clone(l,!0,!0),u&&w.merge(s,ye(l,"script"))),n.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,w.map(s,Oe),f=0;f<u;f++)l=s[f],he.test(l.type||"")&&!J.access(l,"globalEval")&&w.contains(c,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?w._evalUrl&&w._evalUrl(l.src):m(l.textContent.replace(qe,""),c,l))}return e}function Ie(e,t,n){for(var r,i=t?w.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||w.cleanData(ye(r)),r.parentNode&&(n&&w.contains(r.ownerDocument,r)&&ve(ye(r,"script")),r.parentNode.removeChild(r));return e}w.extend({htmlPrefilter:function(e){return e.replace(Ne,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r<i;r++)Me(o[r],a[r]);if(t)if(n)for(o=o||ye(e),a=a||ye(s),r=0,i=o.length;r<i;r++)Pe(o[r],a[r]);else Pe(e,s);return(a=ye(s,"script")).length>0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(w.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,function(t){var n=this.parentNode;w.inArray(this,e)<0&&(w.cleanData(ye(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),w(i[a])[t](n),s.apply(r,n.get());return this.pushStack(r)}});var We=new RegExp("^("+re+")(?!px)[a-z%]+$","i"),$e=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},Be=new RegExp(oe.join("|"),"i");!function(){function t(){if(c){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",be.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);i="1%"!==t.top,u=12===n(t.marginLeft),c.style.right="60%",s=36===n(t.right),o=36===n(t.width),c.style.position="absolute",a=36===c.offsetWidth||"absolute",be.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var i,o,a,s,u,l=r.createElement("div"),c=r.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",h.clearCloneStyle="content-box"===c.style.backgroundClip,w.extend(h,{boxSizingReliable:function(){return t(),o},pixelBoxStyles:function(){return t(),s},pixelPosition:function(){return t(),i},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),a}}))}();function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||$e(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||w.contains(e.ownerDocument,e)||(a=w.style(e,t)),!h.pixelBoxStyles()&&We.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}var ze=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ue={position:"absolute",visibility:"hidden",display:"block"},Ve={letterSpacing:"0",fontWeight:"400"},Ge=["Webkit","Moz","ms"],Ye=r.createElement("div").style;function Qe(e){if(e in Ye)return e;var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;while(n--)if((e=Ge[n]+t)in Ye)return e}function Je(e){var t=w.cssProps[e];return t||(t=w.cssProps[e]=Qe(e)||e),t}function Ke(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ze(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=w.css(e,n+oe[a],!0,i)),r?("content"===n&&(u-=w.css(e,"padding"+oe[a],!0,i)),"margin"!==n&&(u-=w.css(e,"border"+oe[a]+"Width",!0,i))):(u+=w.css(e,"padding"+oe[a],!0,i),"padding"!==n?u+=w.css(e,"border"+oe[a]+"Width",!0,i):s+=w.css(e,"border"+oe[a]+"Width",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a<i;a++)o[t[a]]=w.css(e,t[a],!1,r);return o}return void 0!==n?w.style(e,t,n):w.css(e,t)},e,t,arguments.length>1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ct(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=J.get(e,"fxshow");n.queue||(null==(a=w._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,w.queue(e,"fx").length||a.empty.fire()})}));for(r in t)if(i=t[r],it.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||w.style(e,r)}if((u=!w.isEmptyObject(t))||!w.isEmptyObject(d)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=J.get(e,"display")),"none"===(c=w.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=w.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===w.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(y?"hidden"in y&&(g=y.hidden):y=J.access(e,"fxshow",{display:l}),o&&(y.hidden=!g),g&&fe([e],!0),p.done(function(){g||fe([e]),J.remove(e,"fxshow");for(r in d)w.style(e,r,d[r])})),u=lt(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}}function ft(e,t){var n,r,i,o,a;for(n in e)if(r=G(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=w.cssHooks[r])&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function pt(e,t,n){var r,i,o=0,a=pt.prefilters.length,s=w.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=nt||st(),n=Math.max(0,l.startTime+l.duration-t),r=1-(n/l.duration||0),o=0,a=l.tweens.length;o<a;o++)l.tweens[o].run(r);return s.notifyWith(e,[l,r,n]),r<1&&a?n:(a||s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:w.extend({},t),opts:w.extend(!0,{specialEasing:{},easing:w.easing._default},n),originalProperties:t,originalOptions:n,startTime:nt||st(),duration:n.duration,tweens:[],createTween:function(t,n){var r=w.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(ft(c,l.opts.specialEasing);o<a;o++)if(r=pt.prefilters[o].call(l,e,c,l.opts))return g(r.stop)&&(w._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return w.map(c,lt,l),g(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),w.fx.timer(w.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}w.Animation=w.extend(pt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){g(e)?(t=e,e=["*"]):e=e.match(M);for(var n,r=0,i=e.length;r<i;r++)n=e[r],pt.tweeners[n]=pt.tweeners[n]||[],pt.tweeners[n].unshift(t)},prefilters:[ct],prefilter:function(e,t){t?pt.prefilters.unshift(e):pt.prefilters.push(e)}}),w.speed=function(e,t,n){var r=e&&"object"==typeof e?w.extend({},e):{complete:n||!n&&t||g(e)&&e,duration:e,easing:n&&t||t&&!g(t)&&t};return w.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in w.fx.speeds?r.duration=w.fx.speeds[r.duration]:r.duration=w.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&w.dequeue(this,r.queue)},r},w.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=w.isEmptyObject(e),o=w.speed(t,n,r),a=function(){var t=pt(this,w.extend({},e),o);(i||J.get(this,"finish"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=w.timers,a=J.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&ot.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||w.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=J.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=w.timers,a=r?r.length:0;for(n.finish=!0,w.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),w.each(["toggle","show","hide"],function(e,t){var n=w.fn[t];w.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}}),w.each({slideDown:ut("show"),slideUp:ut("hide"),slideToggle:ut("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){w.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),w.timers=[],w.fx.tick=function(){var e,t=0,n=w.timers;for(nt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||w.fx.stop(),nt=void 0},w.fx.timer=function(e){w.timers.push(e),w.fx.start()},w.fx.interval=13,w.fx.start=function(){rt||(rt=!0,at())},w.fx.stop=function(){rt=null},w.fx.speeds={slow:600,fast:200,_default:400},w.fn.delay=function(t,n){return t=w.fx?w.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e=r.createElement("input"),t=r.createElement("select").appendChild(r.createElement("option"));e.type="checkbox",h.checkOn=""!==e.value,h.optSelected=t.selected,(e=r.createElement("input")).value="t",e.type="radio",h.radioValue="t"===e.value}();var dt,ht=w.expr.attrHandle;w.fn.extend({attr:function(e,t){return z(this,w.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!N(n.parentNode,"optgroup"))){if(t=w(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=w.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=w.inArray(w.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("<script>").prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&o("error"===e.type?404:200,e.type)}),r.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Yt=[],Qt=/(=)\?(?=&|$)|\?\?/;w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Yt.pop()||w.expando+"_"+Et++;return this[e]=!0,e}}),w.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(Qt.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=g(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Qt,"$1"+i):!1!==t.jsonp&&(t.url+=(kt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||w.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,Yt.push(i)),a&&g(o)&&o(a[0]),a=o=void 0}),"script"}),h.createHTMLDocument=function(){var e=r.implementation.createHTMLDocument("").body;return e.innerHTML="<form></form><form></form>",2===e.childNodes.length}(),w.parseHTML=function(e,t,n){if("string"!=typeof e)return[];"boolean"==typeof t&&(n=t,t=!1);var i,o,a;return t||(h.createHTMLDocument?((i=(t=r.implementation.createHTMLDocument("")).createElement("base")).href=r.location.href,t.head.appendChild(i)):t=r),o=A.exec(e),a=!n&&[],o?[t.createElement(o[1])]:(o=xe([e],t,a),a&&a.length&&w(a).remove(),w.merge([],o.childNodes))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=vt(e.slice(s)),e=e.slice(0,s)),g(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&w.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?w("<div>").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=w.css(e,"position"),f=w(e),p={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=w.css(e,"top"),u=w.css(e,"left"),(l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1)?(a=(r=f.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),g(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(p.top=t.top-s.top+a),null!=t.left&&(p.left=t.left-s.left+i),"using"in t?t.using.call(e,p):f.css(p)}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===w.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===w.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,"borderTopWidth",!0),i.left+=w.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-w.css(r,"marginTop",!0),left:t.left-i.left-w.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===w.css(e,"position"))e=e.offsetParent;return e||be})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;w.fn[e]=function(r){return z(this,function(e,r,i){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each(["top","left"],function(e,t){w.cssHooks[t]=_e(h.pixelPosition,function(e,n){if(n)return n=Fe(e,t),We.test(n)?w(e).position()[t]+"px":n})}),w.each({Height:"height",Width:"width"},function(e,t){w.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===o?"margin":"border");return z(this,function(t,n,i){var o;return y(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),w.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w});
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/site.js" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/site.js"
new file mode 100644
index 0000000..ac49c18
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/site.js"
@@ -0,0 +1,4 @@
+锘�// Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
+// for details on configuring this project to bundle and minify static web assets.
+
+// Write your JavaScript code.
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/swaggerdoc.js" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/swaggerdoc.js"
new file mode 100644
index 0000000..bbba38b
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/swaggerdoc.js"
@@ -0,0 +1,139 @@
+锘縱ar exten = "";//涓嬭浇鏂囦欢鍚庣紑鍚�
+var timerLoadExportBtn = null;
+$(document).delegate("#select", "change", function () {
+    debugger
+    setTimeout("LoadExportApiWordBtn()", 300);//鍔犺浇瀵煎嚭鎸夐挳
+    console.log("dom export ok");
+});
+
+$(document).ready(function () {
+    InitLoad();//鍒濆鍖栧鍑�
+    //loading璁剧疆
+    $.busyLoadSetup({
+        animation: "slide",
+        background: "rgba(255, 152, 0, 0.86)"
+    });
+});
+
+//鍒濆鍖�
+function InitLoad() {
+    setTimeout("LoadExportApiWordBtn()", 300);//鍔犺浇瀵煎嚭鎸夐挳
+}
+
+//鍔犺浇鑷畾涔夊鍑烘寜閽�
+function LoadExportApiWordBtn() {
+    $(".information-container").height(240);//鏂囨。浠嬬粛鍖哄煙楂樺害
+    $(".topbar").height(35);
+    var btnExport = "<div class='selectBox' style='position: absolute;margin: 0;padding: 0;margin-left: 1432px;top: 2.5px;'>" +
+        "<span><a href='javascript:void(0);'>瀵煎嚭绂荤嚎鏂囨。</a></span>" +
+        "<div class='drop'>" +
+        "<ul style='margin: 0;padding: 0;'>" +
+        //"<li>" +
+        //"<a href='javascript:void(0);' onclick='ExportApiWord(1)'>瀵煎嚭 Word</a>" +
+        //"</li>" +
+        //"<li>" +
+        //"<a href='javascript:void(0);' onclick='ExportApiWord(2)'>瀵煎嚭 PDF</a>" +
+        //"</li>" +
+        "<li>" +
+        "<a href='javascript:void(0);' onclick='ExportApiWord(3)'>瀵煎嚭 Html</a>" +
+        "</li >" +
+        //"<li>" +
+        //"<a href='javascript:void(0);' onclick='ExportApiWord(4)'>瀵煎嚭 Xml</a>" +
+        //"</li >" +
+        //"<li>" +
+        //"<a href='javascript:void(0);' onclick='ExportApiWord(5)'>瀵煎嚭 Svg</a>" +
+        //"</li >" +
+        "</ul >" +
+        "</div >" +
+        "</div >";
+    //information-container杩欎釜鍏冪礌鏄痵wagger鍚庢湡鍔ㄦ�佹覆鏌撳嚭鏉ョ殑锛屾墍鏈夎繖閲岃鍔犱釜寰幆鍒ゆ柇銆�
+    //绗竴娆¤繘鏉ュ鏋滄湁杩欎釜class鐩存帴鍔犺浇鎸夐挳閫�鍑�
+    if ($("*").hasClass("information-container")) {
+        $(".information-container").append(btnExport);
+        return;
+    }
+    //娌℃湁鍏冪礌绛夊緟鍏冪礌鍑虹幇鍦ㄥ姞杞芥寜閽�
+    timerLoadExportBtn = setInterval(function () {
+        if ($("*").hasClass("information-container")) {
+            $(".information-container").append(btnExport);
+            console.log("load ok");
+            window.clearInterval(timerLoadExportBtn);
+            return;
+        }
+        console.log("loading");
+    }, 788);
+}
+
+
+/**
+ * 寤惰繜鍑芥暟
+ * @param {any} delay
+ */
+function sleep(delay) {
+    var start = (new Date()).getTime();
+    while ((new Date()).getTime() - start < delay) {
+        continue;
+    }
+}
+
+/*
+ * 瀵煎嚭
+ */
+function ExportApiWord(type) {
+    switch (type) {
+        case 1:
+            exten = ".docx";
+            break;
+        case 2:
+            exten = ".pdf";
+            break;
+        case 3:
+            exten = ".html";
+            break;
+        case 4:
+            exten = ".xml";
+            break;
+        case 5:
+            exten = ".svg";
+            break;
+    }
+    var version = $("#select option:selected").val();
+    version = version.split('/')[2];
+    var url = '/api/Swagger/ExportWord?type=' + exten + "&version=" + version;
+    var xhr = new XMLHttpRequest();
+    xhr.open('GET', url, true);    // 涔熷彲浠ヤ娇鐢≒OST鏂瑰紡锛屾牴鎹帴鍙�
+    xhr.responseType = "blob";  // 杩斿洖绫诲瀷blob
+    // 瀹氫箟璇锋眰瀹屾垚鐨勫鐞嗗嚱鏁帮紝璇锋眰鍓嶄篃鍙互澧炲姞鍔犺浇妗�/绂佺敤涓嬭浇鎸夐挳閫昏緫
+    xhr.onload = function () {
+        // 璇锋眰瀹屾垚
+        if (this.status === 200) {
+            // 杩斿洖200
+            var blob = this.response;
+            var reader = new FileReader();
+            reader.readAsDataURL(blob); // 杞崲涓篵ase64锛屽彲浠ョ洿鎺ユ斁鍏琛ㄦ儏href
+            reader.onload = function(e) {
+                // 杞崲瀹屾垚锛屽垱寤轰竴涓猘鏍囩鐢ㄤ簬涓嬭浇
+                var a = document.createElement('a');
+                a.download = 'WIDESEAWCS API鏂囨。 ' + version + exten;
+                a.href = e.target.result;
+                $("body").append(a); // 淇firefox涓棤娉曡Е鍙慶lick
+                a.click();
+                $(a).remove();
+            }
+        } else {
+            alert(this.status+this.statusText);
+        }
+        //鍏抽棴load
+        $.busyLoadFull('hide',
+            {
+                animation: "fade"
+            });
+    };
+    // 鍙戦�乤jax璇锋眰
+    xhr.send();
+    //鎵撳紑loader閬僵
+    $.busyLoadFull('show', {
+        text: "LOADING ...",
+        animation: "fade"
+    });
+}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/logo.jpg.jpg" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/logo.jpg.jpg"
new file mode 100644
index 0000000..d479f96
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/logo.jpg.jpg"
Binary files differ
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/logo/favicon-32x32.png" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/logo/favicon-32x32.png"
new file mode 100644
index 0000000..68062fe
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/logo/favicon-32x32.png"
Binary files differ
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/swg-login.html" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/swg-login.html"
new file mode 100644
index 0000000..16b0b3c
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/swg-login.html"
@@ -0,0 +1,140 @@
+锘�<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8" />
+    <title>鐧诲綍 - 鎺ュ彛鏂囨。</title>
+    <script src="js/jquery-3.3.1.min.js"></script>
+    <link type="text/css" href="css/style.css" rel="stylesheet" />
+    <script src="js/anime.min.js"></script>
+</head>
+<body>
+    <div class="page">
+        <div class="container">
+            <div class="left">
+                <div></div>
+
+                <div class="login">鎺ュ彛鏂囨。</div>
+                <div class="eula">娆㈣繋浣跨敤锛�</div>
+            </div>
+            <div class="right">
+                <svg viewBox="0 0 320 300">
+                    <defs>
+                        <linearGradient inkscape:collect="always"
+                                        id="linearGradient"
+                                        x1="13"
+                                        y1="193.49992"
+                                        x2="307"
+                                        y2="193.49992"
+                                        gradientUnits="userSpaceOnUse">
+                            <stop style="stop-color:#ff00ff;"
+                                  offset="0"
+                                  id="stop876" />
+                            <stop style="stop-color:#ff0000;"
+                                  offset="1"
+                                  id="stop878" />
+                        </linearGradient>
+                    </defs>
+                    <path d="m 40,120.00016 239.99984,-3.2e-4 c 0,0 24.99263,0.79932 25.00016,35.00016 0.008,34.20084 -25.00016,35 -25.00016,35 h -239.99984 c 0,-0.0205 -25,4.01348 -25,38.5 0,34.48652 25,38.5 25,38.5 h 215 c 0,0 20,-0.99604 20,-25 0,-24.00396 -20,-25 -20,-25 h -190 c 0,0 -20,1.71033 -20,25 0,24.00396 20,25 20,25 h 168.57143" />
+                </svg>
+                <div class="form">
+                    <label for="email">鐢ㄦ埛鍚�</label>
+                    <input type="email" id="email">
+                    <label for="password">瀵嗙爜</label>
+                    <input type="password" id="password">
+                    <input type="submit" id="submit" onclick="submit()" value="鐧� 褰�">
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <script>
+        var current = null;
+        document.querySelector('#email').addEventListener('focus', function (e) {
+            if (current) current.pause();
+            current = anime({
+                targets: 'path',
+                strokeDashoffset: {
+                    value: 0,
+                    duration: 700,
+                    easing: 'easeOutQuart'
+                },
+                strokeDasharray: {
+                    value: '240 1386',
+                    duration: 700,
+                    easing: 'easeOutQuart'
+                }
+            });
+        });
+        document.querySelector('#password').addEventListener('focus', function (e) {
+            if (current) current.pause();
+            current = anime({
+                targets: 'path',
+                strokeDashoffset: {
+                    value: -336,
+                    duration: 700,
+                    easing: 'easeOutQuart'
+                },
+                strokeDasharray: {
+                    value: '240 1386',
+                    duration: 700,
+                    easing: 'easeOutQuart'
+                }
+            });
+        });
+        document.querySelector('#submit').addEventListener('focus', function (e) {
+            if (current) current.pause();
+            current = anime({
+                targets: 'path',
+                strokeDashoffset: {
+                    value: -730,
+                    duration: 700,
+                    easing: 'easeOutQuart'
+                },
+                strokeDasharray: {
+                    value: '530 1386',
+                    duration: 700,
+                    easing: 'easeOutQuart'
+                }
+            });
+        });
+
+        function GetQueryString(name) {
+            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
+            var r = window.location.search.substr(1).match(reg);
+            if (r != null) return decodeURI(r[2]);
+            return null;
+        }
+
+        function submit() {
+            let postdata = {
+                "name": $("#email").val(),
+                "pwd": $("#password").val(),
+            };
+            if (!(postdata.name && postdata.pwd)) {
+                alert('鍙傛暟涓嶆纭�');
+                return
+            }
+            $.ajax({
+                url: "/api/User/swgLogin",
+                type: "POST",
+                contentType: "application/json; charset=utf-8",
+                data: JSON.stringify(postdata),
+                dataType: 'json',
+                success: function (data) {
+                    if (data?.result) {
+                        var returnUrl = GetQueryString("returnUrl");
+                        if (returnUrl != null && returnUrl.length > 0) {
+                            window.location.href = returnUrl;
+                        } else {
+                            window.location.href = "/index.html";
+                        }
+                    } else {
+                        alert('鍙傛暟涓嶆纭�');
+                    }
+                }
+            });
+        }
+    </script>
+
+</body>
+</html>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/~$\350\210\261\345\257\206\351\233\206\345\272\223\346\216\245\345\217\243\345\215\217\350\256\256--905\345\214\273\351\231\242\350\215\257\345\223\201\345\272\223\346\210\277\346\216\245\345\217\243\345\257\271\346\216\245\346\226\207\346\241\243_V1.1.2-20250728\0501\051.docx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/~$\350\210\261\345\257\206\351\233\206\345\272\223\346\216\245\345\217\243\345\215\217\350\256\256--905\345\214\273\351\231\242\350\215\257\345\223\201\345\272\223\346\210\277\346\216\245\345\217\243\345\257\271\346\216\245\346\226\207\346\241\243_V1.1.2-20250728\0501\051.docx"
deleted file mode 100644
index fcd42e3..0000000
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/~$\350\210\261\345\257\206\351\233\206\345\272\223\346\216\245\345\217\243\345\215\217\350\256\256--905\345\214\273\351\231\242\350\215\257\345\223\201\345\272\223\346\210\277\346\216\245\345\217\243\345\257\271\346\216\245\346\226\207\346\241\243_V1.1.2-20250728\0501\051.docx"
+++ /dev/null
Binary files differ

--
Gitblit v1.9.3