From 1eaedea85d11516f3d5fae365cf5c6ddeb007a67 Mon Sep 17 00:00:00 2001
From: 18923810322 <1666941798@qq.com>
Date: Wed, 30 Apr 2025 17:01:05 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=A1=B9=E7=9B=AE=E6=96=87?=
=?UTF-8?q?=E4=BB=B6=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.dockerignore | 30 +
.gitattributes | 63 +
.gitignore | 366 ++
Dockerfile | 40 +
src/BarCode.Web.Api/.config/dotnet-tools.json | 12 +
.../Controllers/BoxController.cs | 199 +
.../Controllers/BoxMarkController.cs | 89 +
.../Controllers/ClientLogController.cs | 82 +
.../Controllers/FileDownManagerController.cs | 107 +
.../Controllers/HeartController.cs | 20 +
.../Controllers/LoginController.cs | 143 +
.../Controllers/MaterialController.cs | 118 +
.../Controllers/SecurityController.cs | 59 +
.../Controllers/SecurityNumberController.cs | 189 +
.../Controllers/SerialNumberController.cs | 309 ++
.../Controllers/SysConfigController.cs | 180 +
.../Controllers/TestController.cs | 508 ++
.../Controllers/WmsBoxController.cs | 150 +
src/BarCode.Web.Api/CustomResultFilter .cs | 40 +
src/BarCode.Web.Api/Program.cs | 60 +
.../Properties/launchSettings.json | 50 +
.../appsettings.Development.json | 8 +
src/BarCode.Web.Api/appsettings.json | 100 +
.../wwwroot/BarCode.Web.Api.xml | 396 ++
.../wwwroot/BarCode.Web.Core.xml | 4526 +++++++++++++++++
.../wwwroot/BarCode.Web.Domain.xml | 4028 +++++++++++++++
src/BarCode.Web.Core/BarCode.Web.Core.csproj | 33 +
.../ERP/ConnectedService.json | 99 +
.../Connected Services/ERP/Reference.cs | 1236 +++++
.../Dto/Box/BoxDetailsResponse.cs | 31 +
.../Dto/Box/BoxInfoResponse.cs | 83 +
.../Dto/Box/BoxQueryRequest.cs | 69 +
src/BarCode.Web.Core/Dto/Box/BoxResponse.cs | 67 +
.../Dto/Box/DeleteBoxSerialNumberRequest.cs | 31 +
.../Dto/Box/GenerateBoxRequest.cs | 27 +
.../Dto/Box/SaveBoxDetailsRequest.cs | 26 +
.../Dto/Box/SaveBoxRequest.cs | 30 +
src/BarCode.Web.Core/Dto/Box/WmsBoxRequest.cs | 47 +
.../Dto/Box/WmsBoxResponse.cs | 95 +
.../Dto/BoxMark/BoxMarkQueryRequest.cs | 52 +
.../Dto/BoxMark/BoxMarkQueryResponse.cs | 124 +
.../Dto/BoxMark/GenerateBoxMarkDto.cs | 83 +
.../Dto/EnumStatusResponse.cs | 71 +
.../Dto/Erp/Customer/ErpCustomerDto.cs | 27 +
src/BarCode.Web.Core/Dto/Erp/ErpBaseDto.cs | 15 +
.../Dto/Erp/ErpBillQueryDto.cs | 40 +
.../Dto/Erp/ErpBillQueryParamDto.cs | 55 +
.../Dto/Erp/ErpInStockResultDto.cs | 92 +
.../Dto/Erp/ErpInventoryDto.cs | 30 +
src/BarCode.Web.Core/Dto/Erp/ErpNumberDto.cs | 50 +
src/BarCode.Web.Core/Dto/Erp/ErpOperateDto.cs | 28 +
.../Dto/Erp/ErpPurchaseInStockSaveDto.cs | 74 +
src/BarCode.Web.Core/Dto/Erp/ErpPushDto.cs | 62 +
src/BarCode.Web.Core/Dto/Erp/ErpSave.cs | 28 +
.../Dto/Erp/Material/ErpMaterialDto.cs | 68 +
src/BarCode.Web.Core/Dto/Erp/Org/ErpOrgDto.cs | 27 +
.../ErpDeliveryNoticeOutStockResultDto.cs | 65 +
.../Dto/Erp/OutStock/ErpOutStockSaveDto.cs | 94 +
.../Dto/Erp/OutStock/ErpSalOutStockSaveDto.cs | 48 +
.../Dto/Erp/PullDownStrResponse.cs | 29 +
.../Dto/Erp/Stock/ErpStockDto.cs | 33 +
.../Dto/Erp/Stock/ErpSubStockDto.cs | 37 +
.../Dto/Erp/Supplier/ErpSupplierDto.cs | 31 +
.../Dto/Erp/TakeStock/ErpTakeStockSaveDto.cs | 138 +
.../Dto/FileDownManagerRequest.cs | 43 +
.../Dto/FileDownManagerResponse.cs | 73 +
.../Dto/FileDownManagerStatusResponse.cs | 19 +
.../Dto/Login/AccessTokenDto.cs | 37 +
src/BarCode.Web.Core/Dto/Login/DeptInfoDto.cs | 17 +
src/BarCode.Web.Core/Dto/Login/LoginInDto.cs | 25 +
.../Dto/Login/LoginOutAuthorizeRequest.cs | 14 +
src/BarCode.Web.Core/Dto/Login/LoginOutDto.cs | 44 +
.../Dto/Login/LoginRequest.cs | 86 +
.../Dto/Login/Menu/MenuRequest.cs | 29 +
.../Dto/Login/Menu/MenuResponse.cs | 105 +
.../Dto/Login/Single/LoginSingleRequest.cs | 27 +
.../Dto/Login/Single/LoginSingleResponse.cs | 33 +
src/BarCode.Web.Core/Dto/Login/TagInfoDto.cs | 13 +
.../Dto/Login/Temp/LoginJsonDeptTempDto.cs | 19 +
.../Dto/Login/Temp/LoginJsonTokenTempDto.cs | 107 +
.../Dto/Login/Temp/LoginTempDto.cs | 70 +
.../Login/Temp/v3/LoginJsonCompanyTempDto.cs | 13 +
.../Login/Temp/v3/LoginJsonDeptV3TempDto.cs | 13 +
.../Dto/Login/Temp/v3/LoginJsonOrgTempDto.cs | 13 +
.../Dto/Login/Temp/v3/LoginJsonRoleTempDto.cs | 13 +
.../Login/Temp/v3/LoginJsonTokenV3TempDto.cs | 30 +
src/BarCode.Web.Core/Dto/Login/UserInfoDto.cs | 101 +
.../Dto/Login/UserInfoV3Dto.cs | 30 +
src/BarCode.Web.Core/Dto/MaterialResponse.cs | 65 +
src/BarCode.Web.Core/Dto/MaterialSubStock.cs | 37 +
src/BarCode.Web.Core/Dto/OperateRequest.cs | 29 +
.../Dto/PaginationRequestDto.cs | 28 +
.../GenerateSecurityNumberRequest.cs | 30 +
.../OperateSecurityNumberRequest.cs | 27 +
.../SecurityGenerateRecordInfoResponse.cs | 63 +
.../SecurityGenerateRecordQueryRequest.cs | 45 +
.../SecurityNumberInfoResponse.cs | 62 +
.../SecurityNumberQueryRequest.cs | 50 +
.../SecurityNumbersExportReponse.cs | 41 +
.../SecurityNumbersExportRequest.cs | 16 +
.../Dto/SecurityNumbers/SecurityResponse.cs | 31 +
src/BarCode.Web.Core/Dto/SendDataDto.cs | 98 +
.../GenerateSerialNumberRequest.cs | 59 +
.../OperateSerialNumberRequest.cs | 27 +
.../SGenerateRecordInfoResponse.cs | 84 +
.../SGenerateRecordQueryRequest.cs | 71 +
.../SerialNumberByBoxIdQueryRequest.cs | 21 +
.../SerialNumbers/SerialNumberInfoResponse.cs | 121 +
.../SerialNumbers/SerialNumberQueryRequest.cs | 87 +
.../SerialNumbersExportReponse.cs | 56 +
.../SerialNumbersExportRequest.cs | 19 +
.../SerialNumbersExternalResponse.cs | 44 +
.../SerialNumbers/SerialNumbersResponse.cs | 73 +
.../SerialNumbers/SerialNumbersWmsRequest.cs | 19 +
.../SerialNumbers/SerialNumbersWmsResponse.cs | 31 +
.../SerialNumbers/UpdateMaterialRequest.cs | 30 +
.../Dto/SingleData/CodeRequest.cs | 19 +
.../Dto/SingleData/CodesRequest.cs | 19 +
.../Dto/SingleData/IdRequest.cs | 25 +
.../Dto/SingleData/IdsRequest.cs | 22 +
.../Dto/SingleData/NameRequest.cs | 25 +
.../Dto/SingleData/OrgAllResponse.cs | 51 +
.../Dto/SingleData/SingleDataRequest.cs | 24 +
.../Dto/SingleData/SingleDataResponse.cs | 40 +
.../Dto/SingleData/SubStockRequest.cs | 24 +
.../Dto/SingleData/SupplierInfoResponse.cs | 25 +
.../Dto/SingleData/SysOrgResponse.cs | 54 +
.../Dto/SingleData/SysStaffResponse.cs | 37 +
.../Dto/SingleData/SystemCodeRequest.cs | 32 +
.../Dto/SingleData/UcStockResponse.cs | 38 +
.../Dto/SingleData/UcSubStockResponse.cs | 48 +
.../Dto/SingleData/UserRequest.cs | 24 +
src/BarCode.Web.Core/Dto/SubUcStockRequset.cs | 27 +
src/BarCode.Web.Core/Dto/TemplateExcel.cs | 34 +
src/BarCode.Web.Core/EntityBase.cs | 29 +
src/BarCode.Web.Core/EnumOperate.cs | 49 +
.../Exceptions/WebHttpException.cs | 23 +
src/BarCode.Web.Core/Help/CacheHelp.cs | 50 +
src/BarCode.Web.Core/Help/ClassClone.cs | 34 +
src/BarCode.Web.Core/Help/ClassCopyUtil.cs | 63 +
src/BarCode.Web.Core/Help/DateTimeUtil.cs | 239 +
src/BarCode.Web.Core/Help/HttpClientHelp.cs | 174 +
src/BarCode.Web.Core/Help/RedisClient.cs | 119 +
.../Help/ValidatetionHelper.cs | 77 +
.../Internal/Results/Result.cs | 184 +
.../Internal/Results/Result2.cs | 102 +
.../Internal/Results/ResultCodes.cs | 62 +
.../Internal/Results/ResultList.cs | 102 +
.../Internal/Results/ResultPagedList.cs | 112 +
src/BarCode.Web.Core/Internal/Security/RSA.cs | 463 ++
src/BarCode.Web.Core/NumericalProcess.cs | 63 +
.../BarCode.Web.Domain.csproj | 28 +
src/BarCode.Web.Domain/Entitys/Box.cs | 195 +
src/BarCode.Web.Domain/Entitys/BoxDetails.cs | 45 +
src/BarCode.Web.Domain/Entitys/BoxMark.cs | 192 +
.../Entitys/BoxMarkBillNo.cs | 87 +
.../Entitys/CenerateData.cs | 40 +
.../Entitys/FileDownManager.cs | 90 +
src/BarCode.Web.Domain/Entitys/Materials.cs | 77 +
.../Entitys/SecurityNumberGenerateRecord.cs | 116 +
.../Entitys/SecurityNumbers.cs | 110 +
.../Entitys/SerialNumberGenerateRecord.cs | 150 +
.../Entitys/SerialNumbers.cs | 287 ++
.../IService/IBoxMarkService.cs | 32 +
.../IService/IBoxService.cs | 60 +
.../IService/IExportExcelService.cs | 56 +
.../IService/IQiniuUploadService.cs | 22 +
.../IService/ISecurityNumberService.cs | 32 +
.../IService/ISerialNumberService.cs | 50 +
.../Public/IErpBasicDataExtendService.cs | 191 +
.../IService/Public/IErpService.cs | 100 +
.../IService/Public/IHttpClientService.cs | 18 +
.../IService/Public/ILoginService.cs | 77 +
.../IService/Public/IMaterialService.cs | 25 +
.../Public/IRedisConcurrentProcessService.cs | 15 +
.../IService/Public/ISingleDataService.cs | 128 +
.../IService/Public/IWmsService.cs | 22 +
.../Infrastructure/IAllFielRepositories.cs | 28 +
.../Infrastructure/IBasicsRepositories.cs | 93 +
.../Infrastructure/IBoxMarkRepositories.cs | 60 +
.../Infrastructure/IBoxRepositories.cs | 47 +
.../ICenerateDataRepositories.cs | 23 +
.../IFileDownManagerRepositories.cs | 32 +
.../Infrastructure/ILoginRepositories.cs | 24 +
.../Infrastructure/IMaterialsRepositories.cs | 77 +
.../ISGenerateRecordRepositories.cs | 34 +
.../ISecurityGenerateRecordRepositories.cs | 35 +
.../ISecurityNumbersRepositories.cs | 43 +
.../ISerialNumbersRepositories.cs | 62 +
.../ITransactionRepositories.cs | 22 +
src/BarCode.Web.Domain/Mappers/AppMapper.cs | 74 +
src/BarCode.Web.Domain/Mappers/BoxMapper.cs | 36 +
.../Mappers/BoxMarkMapper.cs | 20 +
src/BarCode.Web.Domain/Mappers/MapperList.cs | 98 +
.../Mappers/MaterialMapper.cs | 21 +
.../Mappers/SecurityNumberMapper.cs | 20 +
.../Mappers/SerialNumberMapper.cs | 21 +
src/BarCode.Web.Domain/Options/AppOptions.cs | 44 +
.../Options/EmailOptions.cs | 42 +
src/BarCode.Web.Domain/Options/ErpOptions.cs | 39 +
.../Options/QiniuOptions.cs | 31 +
.../Options/QuartzJobOptions.cs | 155 +
src/BarCode.Web.Domain/Options/SmsOptions.cs | 32 +
src/BarCode.Web.Domain/Options/SoaOptions.cs | 47 +
src/BarCode.Web.Domain/Options/WmsOptions.cs | 14 +
.../QuartzJob/CenerateDataQuartzJob.cs | 48 +
.../QuartzJob/MaterialsBarQuartzJob.cs | 39 +
.../QuartzJob/MaterialsQuartzJob.cs | 42 +
.../Services/BoxMarkService.cs | 131 +
src/BarCode.Web.Domain/Services/BoxService.cs | 459 ++
.../Services/ExportExcelService.cs | 229 +
.../Services/Public/ErpBaseDataSync.cs | 83 +
.../Public/ErpBasicDataExtendService.cs | 442 ++
.../Services/Public/ErpService.cs | 1207 +++++
.../Services/Public/HostedService.cs | 55 +
.../Services/Public/HttpClientService.cs | 230 +
.../Services/Public/LoginService.cs | 567 +++
.../Services/Public/MaterialService.cs | 150 +
.../Services/Public/Radix.cs | 344 ++
.../Services/Public/RedisClientService.cs | 93 +
.../Public/RedisConcurrentProcessService.cs | 37 +
.../Services/Public/SingleDataService.cs | 476 ++
.../Services/Public/WmsService.cs | 57 +
.../Services/QiniuUploadService.cs | 73 +
.../Services/SecurityNumberService.cs | 234 +
.../Services/SerialNumberService.cs | 423 ++
.../TimedJob/ErpBaseDataSyncJob.cs | 76 +
src/BarCode.Web.Domain/Values/BoxStatus.cs | 32 +
.../Values/CenerateDataType.cs | 19 +
.../Values/Erp/FormIdParam.cs | 85 +
src/BarCode.Web.Domain/Values/ExportStatus.cs | 30 +
.../Values/FileDownLoadOrderType.cs | 34 +
src/BarCode.Web.Domain/Values/ResultCodes.cs | 64 +
.../Values/Single/SingleAction.cs | 122 +
.../Values/Single/SingleControllerType.cs | 29 +
.../Values/Single/SingleLoginAction.cs | 42 +
.../Values/Single/SysConfigAction.cs | 223 +
.../BarCode.Web.Repositories.csproj | 30 +
.../BasicsRepositories.cs | 197 +
.../BoxMarkRepositories.cs | 312 ++
.../BoxRepositories.cs | 381 ++
.../CenerateDataRepositories.cs | 87 +
.../Configuration/DbContextExtensions.cs | 225 +
.../Configuration/EFLog/EFCoreLogger.cs | 39 +
.../EFLog/EFCoreLoggerProvider.cs | 13 +
.../Configuration/RepositoryDbContext.cs | 135 +
.../DependencyInjection/AppBuilder.cs | 300 ++
.../AppBuilderExtensions.cs | 63 +
.../AuthorizationTokenSecurityPolicy.cs | 198 +
.../ErrorHandlingMiddleware.cs | 85 +
.../PlatformActionMiddleware.cs | 85 +
.../ServiceCollectionExtensions.cs | 40 +
.../FileDownManagerRepositories.cs | 110 +
.../LoginRepositories.cs | 49 +
.../MaterialsRepositories.cs | 177 +
.../MySqlDataAccess.cs | 68 +
.../SGenerateRecordRepositories.cs | 339 ++
.../SecurityGenerateRecordRepositories.cs | 275 +
.../SecurityNumbersRepositories.cs | 315 ++
.../SerialNumbersRepositories.cs | 723 +++
.../TransactionRepositories.cs | 47 +
261 files changed, 33985 insertions(+)
create mode 100644 .dockerignore
create mode 100644 .gitattributes
create mode 100644 .gitignore
create mode 100644 Dockerfile
create mode 100644 src/BarCode.Web.Api/.config/dotnet-tools.json
create mode 100644 src/BarCode.Web.Api/Controllers/BoxController.cs
create mode 100644 src/BarCode.Web.Api/Controllers/BoxMarkController.cs
create mode 100644 src/BarCode.Web.Api/Controllers/ClientLogController.cs
create mode 100644 src/BarCode.Web.Api/Controllers/FileDownManagerController.cs
create mode 100644 src/BarCode.Web.Api/Controllers/HeartController.cs
create mode 100644 src/BarCode.Web.Api/Controllers/LoginController.cs
create mode 100644 src/BarCode.Web.Api/Controllers/MaterialController.cs
create mode 100644 src/BarCode.Web.Api/Controllers/SecurityController.cs
create mode 100644 src/BarCode.Web.Api/Controllers/SecurityNumberController.cs
create mode 100644 src/BarCode.Web.Api/Controllers/SerialNumberController.cs
create mode 100644 src/BarCode.Web.Api/Controllers/SysConfigController.cs
create mode 100644 src/BarCode.Web.Api/Controllers/TestController.cs
create mode 100644 src/BarCode.Web.Api/Controllers/WmsBoxController.cs
create mode 100644 src/BarCode.Web.Api/CustomResultFilter .cs
create mode 100644 src/BarCode.Web.Api/Program.cs
create mode 100644 src/BarCode.Web.Api/Properties/launchSettings.json
create mode 100644 src/BarCode.Web.Api/appsettings.Development.json
create mode 100644 src/BarCode.Web.Api/appsettings.json
create mode 100644 src/BarCode.Web.Api/wwwroot/BarCode.Web.Api.xml
create mode 100644 src/BarCode.Web.Api/wwwroot/BarCode.Web.Core.xml
create mode 100644 src/BarCode.Web.Api/wwwroot/BarCode.Web.Domain.xml
create mode 100644 src/BarCode.Web.Core/BarCode.Web.Core.csproj
create mode 100644 src/BarCode.Web.Core/Connected Services/ERP/ConnectedService.json
create mode 100644 src/BarCode.Web.Core/Connected Services/ERP/Reference.cs
create mode 100644 src/BarCode.Web.Core/Dto/Box/BoxDetailsResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/Box/BoxInfoResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/Box/BoxQueryRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/Box/BoxResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/Box/DeleteBoxSerialNumberRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/Box/GenerateBoxRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/Box/SaveBoxDetailsRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/Box/SaveBoxRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/Box/WmsBoxRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/Box/WmsBoxResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/BoxMark/BoxMarkQueryRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/BoxMark/BoxMarkQueryResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/BoxMark/GenerateBoxMarkDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/EnumStatusResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/Erp/Customer/ErpCustomerDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Erp/ErpBaseDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Erp/ErpBillQueryDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Erp/ErpBillQueryParamDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Erp/ErpInStockResultDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Erp/ErpInventoryDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Erp/ErpNumberDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Erp/ErpOperateDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Erp/ErpPurchaseInStockSaveDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Erp/ErpPushDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Erp/ErpSave.cs
create mode 100644 src/BarCode.Web.Core/Dto/Erp/Material/ErpMaterialDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Erp/Org/ErpOrgDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Erp/OutStock/ErpDeliveryNoticeOutStockResultDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Erp/OutStock/ErpOutStockSaveDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Erp/OutStock/ErpSalOutStockSaveDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Erp/PullDownStrResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/Erp/Stock/ErpStockDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Erp/Stock/ErpSubStockDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Erp/Supplier/ErpSupplierDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Erp/TakeStock/ErpTakeStockSaveDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/FileDownManagerRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/FileDownManagerResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/FileDownManagerStatusResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/Login/AccessTokenDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Login/DeptInfoDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Login/LoginInDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Login/LoginOutAuthorizeRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/Login/LoginOutDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Login/LoginRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/Login/Menu/MenuRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/Login/Menu/MenuResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/Login/Single/LoginSingleRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/Login/Single/LoginSingleResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/Login/TagInfoDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Login/Temp/LoginJsonDeptTempDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Login/Temp/LoginJsonTokenTempDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Login/Temp/LoginTempDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Login/Temp/v3/LoginJsonCompanyTempDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Login/Temp/v3/LoginJsonDeptV3TempDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Login/Temp/v3/LoginJsonOrgTempDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Login/Temp/v3/LoginJsonRoleTempDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Login/Temp/v3/LoginJsonTokenV3TempDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Login/UserInfoDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/Login/UserInfoV3Dto.cs
create mode 100644 src/BarCode.Web.Core/Dto/MaterialResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/MaterialSubStock.cs
create mode 100644 src/BarCode.Web.Core/Dto/OperateRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/PaginationRequestDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/SecurityNumbers/GenerateSecurityNumberRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/SecurityNumbers/OperateSecurityNumberRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/SecurityNumbers/SecurityGenerateRecordInfoResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/SecurityNumbers/SecurityGenerateRecordQueryRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/SecurityNumbers/SecurityNumberInfoResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/SecurityNumbers/SecurityNumberQueryRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/SecurityNumbers/SecurityNumbersExportReponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/SecurityNumbers/SecurityNumbersExportRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/SecurityNumbers/SecurityResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/SendDataDto.cs
create mode 100644 src/BarCode.Web.Core/Dto/SerialNumbers/GenerateSerialNumberRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/SerialNumbers/OperateSerialNumberRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/SerialNumbers/SGenerateRecordInfoResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/SerialNumbers/SGenerateRecordQueryRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/SerialNumbers/SerialNumberByBoxIdQueryRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/SerialNumbers/SerialNumberInfoResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/SerialNumbers/SerialNumberQueryRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/SerialNumbers/SerialNumbersExportReponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/SerialNumbers/SerialNumbersExportRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/SerialNumbers/SerialNumbersExternalResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/SerialNumbers/SerialNumbersResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/SerialNumbers/SerialNumbersWmsRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/SerialNumbers/SerialNumbersWmsResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/SerialNumbers/UpdateMaterialRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/SingleData/CodeRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/SingleData/CodesRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/SingleData/IdRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/SingleData/IdsRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/SingleData/NameRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/SingleData/OrgAllResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/SingleData/SingleDataRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/SingleData/SingleDataResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/SingleData/SubStockRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/SingleData/SupplierInfoResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/SingleData/SysOrgResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/SingleData/SysStaffResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/SingleData/SystemCodeRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/SingleData/UcStockResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/SingleData/UcSubStockResponse.cs
create mode 100644 src/BarCode.Web.Core/Dto/SingleData/UserRequest.cs
create mode 100644 src/BarCode.Web.Core/Dto/SubUcStockRequset.cs
create mode 100644 src/BarCode.Web.Core/Dto/TemplateExcel.cs
create mode 100644 src/BarCode.Web.Core/EntityBase.cs
create mode 100644 src/BarCode.Web.Core/EnumOperate.cs
create mode 100644 src/BarCode.Web.Core/Exceptions/WebHttpException.cs
create mode 100644 src/BarCode.Web.Core/Help/CacheHelp.cs
create mode 100644 src/BarCode.Web.Core/Help/ClassClone.cs
create mode 100644 src/BarCode.Web.Core/Help/ClassCopyUtil.cs
create mode 100644 src/BarCode.Web.Core/Help/DateTimeUtil.cs
create mode 100644 src/BarCode.Web.Core/Help/HttpClientHelp.cs
create mode 100644 src/BarCode.Web.Core/Help/RedisClient.cs
create mode 100644 src/BarCode.Web.Core/Help/ValidatetionHelper.cs
create mode 100644 src/BarCode.Web.Core/Internal/Results/Result.cs
create mode 100644 src/BarCode.Web.Core/Internal/Results/Result2.cs
create mode 100644 src/BarCode.Web.Core/Internal/Results/ResultCodes.cs
create mode 100644 src/BarCode.Web.Core/Internal/Results/ResultList.cs
create mode 100644 src/BarCode.Web.Core/Internal/Results/ResultPagedList.cs
create mode 100644 src/BarCode.Web.Core/Internal/Security/RSA.cs
create mode 100644 src/BarCode.Web.Core/NumericalProcess.cs
create mode 100644 src/BarCode.Web.Domain/BarCode.Web.Domain.csproj
create mode 100644 src/BarCode.Web.Domain/Entitys/Box.cs
create mode 100644 src/BarCode.Web.Domain/Entitys/BoxDetails.cs
create mode 100644 src/BarCode.Web.Domain/Entitys/BoxMark.cs
create mode 100644 src/BarCode.Web.Domain/Entitys/BoxMarkBillNo.cs
create mode 100644 src/BarCode.Web.Domain/Entitys/CenerateData.cs
create mode 100644 src/BarCode.Web.Domain/Entitys/FileDownManager.cs
create mode 100644 src/BarCode.Web.Domain/Entitys/Materials.cs
create mode 100644 src/BarCode.Web.Domain/Entitys/SecurityNumberGenerateRecord.cs
create mode 100644 src/BarCode.Web.Domain/Entitys/SecurityNumbers.cs
create mode 100644 src/BarCode.Web.Domain/Entitys/SerialNumberGenerateRecord.cs
create mode 100644 src/BarCode.Web.Domain/Entitys/SerialNumbers.cs
create mode 100644 src/BarCode.Web.Domain/IService/IBoxMarkService.cs
create mode 100644 src/BarCode.Web.Domain/IService/IBoxService.cs
create mode 100644 src/BarCode.Web.Domain/IService/IExportExcelService.cs
create mode 100644 src/BarCode.Web.Domain/IService/IQiniuUploadService.cs
create mode 100644 src/BarCode.Web.Domain/IService/ISecurityNumberService.cs
create mode 100644 src/BarCode.Web.Domain/IService/ISerialNumberService.cs
create mode 100644 src/BarCode.Web.Domain/IService/Public/IErpBasicDataExtendService.cs
create mode 100644 src/BarCode.Web.Domain/IService/Public/IErpService.cs
create mode 100644 src/BarCode.Web.Domain/IService/Public/IHttpClientService.cs
create mode 100644 src/BarCode.Web.Domain/IService/Public/ILoginService.cs
create mode 100644 src/BarCode.Web.Domain/IService/Public/IMaterialService.cs
create mode 100644 src/BarCode.Web.Domain/IService/Public/IRedisConcurrentProcessService.cs
create mode 100644 src/BarCode.Web.Domain/IService/Public/ISingleDataService.cs
create mode 100644 src/BarCode.Web.Domain/IService/Public/IWmsService.cs
create mode 100644 src/BarCode.Web.Domain/Infrastructure/IAllFielRepositories.cs
create mode 100644 src/BarCode.Web.Domain/Infrastructure/IBasicsRepositories.cs
create mode 100644 src/BarCode.Web.Domain/Infrastructure/IBoxMarkRepositories.cs
create mode 100644 src/BarCode.Web.Domain/Infrastructure/IBoxRepositories.cs
create mode 100644 src/BarCode.Web.Domain/Infrastructure/ICenerateDataRepositories.cs
create mode 100644 src/BarCode.Web.Domain/Infrastructure/IFileDownManagerRepositories.cs
create mode 100644 src/BarCode.Web.Domain/Infrastructure/ILoginRepositories.cs
create mode 100644 src/BarCode.Web.Domain/Infrastructure/IMaterialsRepositories.cs
create mode 100644 src/BarCode.Web.Domain/Infrastructure/ISGenerateRecordRepositories.cs
create mode 100644 src/BarCode.Web.Domain/Infrastructure/ISecurityGenerateRecordRepositories.cs
create mode 100644 src/BarCode.Web.Domain/Infrastructure/ISecurityNumbersRepositories.cs
create mode 100644 src/BarCode.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs
create mode 100644 src/BarCode.Web.Domain/Infrastructure/ITransactionRepositories.cs
create mode 100644 src/BarCode.Web.Domain/Mappers/AppMapper.cs
create mode 100644 src/BarCode.Web.Domain/Mappers/BoxMapper.cs
create mode 100644 src/BarCode.Web.Domain/Mappers/BoxMarkMapper.cs
create mode 100644 src/BarCode.Web.Domain/Mappers/MapperList.cs
create mode 100644 src/BarCode.Web.Domain/Mappers/MaterialMapper.cs
create mode 100644 src/BarCode.Web.Domain/Mappers/SecurityNumberMapper.cs
create mode 100644 src/BarCode.Web.Domain/Mappers/SerialNumberMapper.cs
create mode 100644 src/BarCode.Web.Domain/Options/AppOptions.cs
create mode 100644 src/BarCode.Web.Domain/Options/EmailOptions.cs
create mode 100644 src/BarCode.Web.Domain/Options/ErpOptions.cs
create mode 100644 src/BarCode.Web.Domain/Options/QiniuOptions.cs
create mode 100644 src/BarCode.Web.Domain/Options/QuartzJobOptions.cs
create mode 100644 src/BarCode.Web.Domain/Options/SmsOptions.cs
create mode 100644 src/BarCode.Web.Domain/Options/SoaOptions.cs
create mode 100644 src/BarCode.Web.Domain/Options/WmsOptions.cs
create mode 100644 src/BarCode.Web.Domain/QuartzJob/CenerateDataQuartzJob.cs
create mode 100644 src/BarCode.Web.Domain/QuartzJob/MaterialsBarQuartzJob.cs
create mode 100644 src/BarCode.Web.Domain/QuartzJob/MaterialsQuartzJob.cs
create mode 100644 src/BarCode.Web.Domain/Services/BoxMarkService.cs
create mode 100644 src/BarCode.Web.Domain/Services/BoxService.cs
create mode 100644 src/BarCode.Web.Domain/Services/ExportExcelService.cs
create mode 100644 src/BarCode.Web.Domain/Services/Public/ErpBaseDataSync.cs
create mode 100644 src/BarCode.Web.Domain/Services/Public/ErpBasicDataExtendService.cs
create mode 100644 src/BarCode.Web.Domain/Services/Public/ErpService.cs
create mode 100644 src/BarCode.Web.Domain/Services/Public/HostedService.cs
create mode 100644 src/BarCode.Web.Domain/Services/Public/HttpClientService.cs
create mode 100644 src/BarCode.Web.Domain/Services/Public/LoginService.cs
create mode 100644 src/BarCode.Web.Domain/Services/Public/MaterialService.cs
create mode 100644 src/BarCode.Web.Domain/Services/Public/Radix.cs
create mode 100644 src/BarCode.Web.Domain/Services/Public/RedisClientService.cs
create mode 100644 src/BarCode.Web.Domain/Services/Public/RedisConcurrentProcessService.cs
create mode 100644 src/BarCode.Web.Domain/Services/Public/SingleDataService.cs
create mode 100644 src/BarCode.Web.Domain/Services/Public/WmsService.cs
create mode 100644 src/BarCode.Web.Domain/Services/QiniuUploadService.cs
create mode 100644 src/BarCode.Web.Domain/Services/SecurityNumberService.cs
create mode 100644 src/BarCode.Web.Domain/Services/SerialNumberService.cs
create mode 100644 src/BarCode.Web.Domain/TimedJob/ErpBaseDataSyncJob.cs
create mode 100644 src/BarCode.Web.Domain/Values/BoxStatus.cs
create mode 100644 src/BarCode.Web.Domain/Values/CenerateDataType.cs
create mode 100644 src/BarCode.Web.Domain/Values/Erp/FormIdParam.cs
create mode 100644 src/BarCode.Web.Domain/Values/ExportStatus.cs
create mode 100644 src/BarCode.Web.Domain/Values/FileDownLoadOrderType.cs
create mode 100644 src/BarCode.Web.Domain/Values/ResultCodes.cs
create mode 100644 src/BarCode.Web.Domain/Values/Single/SingleAction.cs
create mode 100644 src/BarCode.Web.Domain/Values/Single/SingleControllerType.cs
create mode 100644 src/BarCode.Web.Domain/Values/Single/SingleLoginAction.cs
create mode 100644 src/BarCode.Web.Domain/Values/Single/SysConfigAction.cs
create mode 100644 src/BarCode.Web.Repositories/BarCode.Web.Repositories.csproj
create mode 100644 src/BarCode.Web.Repositories/BasicsRepositories.cs
create mode 100644 src/BarCode.Web.Repositories/BoxMarkRepositories.cs
create mode 100644 src/BarCode.Web.Repositories/BoxRepositories.cs
create mode 100644 src/BarCode.Web.Repositories/CenerateDataRepositories.cs
create mode 100644 src/BarCode.Web.Repositories/Configuration/DbContextExtensions.cs
create mode 100644 src/BarCode.Web.Repositories/Configuration/EFLog/EFCoreLogger.cs
create mode 100644 src/BarCode.Web.Repositories/Configuration/EFLog/EFCoreLoggerProvider.cs
create mode 100644 src/BarCode.Web.Repositories/Configuration/RepositoryDbContext.cs
create mode 100644 src/BarCode.Web.Repositories/DependencyInjection/AppBuilder.cs
create mode 100644 src/BarCode.Web.Repositories/DependencyInjection/AppBuilderExtensions.cs
create mode 100644 src/BarCode.Web.Repositories/DependencyInjection/AuthorizationTokenSecurityPolicy.cs
create mode 100644 src/BarCode.Web.Repositories/DependencyInjection/ErrorHandlingMiddleware.cs
create mode 100644 src/BarCode.Web.Repositories/DependencyInjection/PlatformActionMiddleware.cs
create mode 100644 src/BarCode.Web.Repositories/DependencyInjection/ServiceCollectionExtensions.cs
create mode 100644 src/BarCode.Web.Repositories/FileDownManagerRepositories.cs
create mode 100644 src/BarCode.Web.Repositories/LoginRepositories.cs
create mode 100644 src/BarCode.Web.Repositories/MaterialsRepositories.cs
create mode 100644 src/BarCode.Web.Repositories/MySqlDataAccess.cs
create mode 100644 src/BarCode.Web.Repositories/SGenerateRecordRepositories.cs
create mode 100644 src/BarCode.Web.Repositories/SecurityGenerateRecordRepositories.cs
create mode 100644 src/BarCode.Web.Repositories/SecurityNumbersRepositories.cs
create mode 100644 src/BarCode.Web.Repositories/SerialNumbersRepositories.cs
create mode 100644 src/BarCode.Web.Repositories/TransactionRepositories.cs
diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..fe1152b
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,30 @@
+**/.classpath
+**/.dockerignore
+**/.env
+**/.git
+**/.gitignore
+**/.project
+**/.settings
+**/.toolstarget
+**/.vs
+**/.vscode
+**/*.*proj.user
+**/*.dbmdl
+**/*.jfm
+**/azds.yaml
+**/bin
+**/charts
+**/docker-compose*
+**/Dockerfile*
+**/node_modules
+**/npm-debug.log
+**/obj
+**/secrets.dev.yaml
+**/values.dev.yaml
+LICENSE
+README.md
+!**/.gitignore
+!.git/HEAD
+!.git/config
+!.git/packed-refs
+!.git/refs/heads/**
\ No newline at end of file
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..1ff0c42
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,63 @@
+###############################################################################
+# Set default behavior to automatically normalize line endings.
+###############################################################################
+* text=auto
+
+###############################################################################
+# Set default behavior for command prompt diff.
+#
+# This is need for earlier builds of msysgit that does not have it on by
+# default for csharp files.
+# Note: This is only used by command line
+###############################################################################
+#*.cs diff=csharp
+
+###############################################################################
+# Set the merge driver for project and solution files
+#
+# Merging from the command prompt will add diff markers to the files if there
+# are conflicts (Merging from VS is not affected by the settings below, in VS
+# the diff markers are never inserted). Diff markers may cause the following
+# file extensions to fail to load in VS. An alternative would be to treat
+# these files as binary and thus will always conflict and require user
+# intervention with every merge. To do so, just uncomment the entries below
+###############################################################################
+#*.sln merge=binary
+#*.csproj merge=binary
+#*.vbproj merge=binary
+#*.vcxproj merge=binary
+#*.vcproj merge=binary
+#*.dbproj merge=binary
+#*.fsproj merge=binary
+#*.lsproj merge=binary
+#*.wixproj merge=binary
+#*.modelproj merge=binary
+#*.sqlproj merge=binary
+#*.wwaproj merge=binary
+
+###############################################################################
+# behavior for image files
+#
+# image files are treated as binary by default.
+###############################################################################
+#*.jpg binary
+#*.png binary
+#*.gif binary
+
+###############################################################################
+# diff behavior for common document formats
+#
+# Convert binary document formats to text before diffing them. This feature
+# is only available from the command line. Turn it on by uncommenting the
+# entries below.
+###############################################################################
+#*.doc diff=astextplain
+#*.DOC diff=astextplain
+#*.docx diff=astextplain
+#*.DOCX diff=astextplain
+#*.dot diff=astextplain
+#*.DOT diff=astextplain
+#*.pdf diff=astextplain
+#*.PDF diff=astextplain
+#*.rtf diff=astextplain
+#*.RTF diff=astextplain
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..bc1364c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,366 @@
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+##
+## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
+
+# User-specific files
+*.rsuser
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Mono auto generated files
+mono_crash.*
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+[Ww][Ii][Nn]32/
+[Aa][Rr][Mm]/
+[Aa][Rr][Mm]64/
+bld/
+[Bb]in/
+[Oo]bj/
+[Oo]ut/
+[Ll]og/
+[Ll]ogs/
+
+# Visual Studio 2015/2017 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
+
+# Visual Studio 2017 auto generated files
+Generated\ Files/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUnit
+*.VisualState.xml
+TestResult.xml
+nunit-*.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# Benchmark Results
+BenchmarkDotNet.Artifacts/
+
+# .NET Core
+project.lock.json
+project.fragment.lock.json
+artifacts/
+
+# ASP.NET Scaffolding
+ScaffoldingReadMe.txt
+
+# StyleCop
+StyleCopReport.xml
+
+# Files built by Visual Studio
+*_i.c
+*_p.c
+*_h.h
+*.ilk
+*.meta
+*.obj
+*.iobj
+*.pch
+*.pdb
+*.ipdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*_wpftmp.csproj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+*.sap
+
+# Visual Studio Trace Files
+*.e2e
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# AxoCover is a Code Coverage Tool
+.axoCover/*
+!.axoCover/settings.json
+
+# Coverlet is a free, cross platform Code Coverage Tool
+coverage*.json
+coverage*.xml
+coverage*.info
+
+# Visual Studio code coverage results
+*.coverage
+*.coveragexml
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# Note: Comment the next line if you want to checkin your web deploy settings,
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
+
+# NuGet Packages
+*.nupkg
+# NuGet Symbol Packages
+*.snupkg
+# The packages folder can be ignored because of Package Restore
+**/[Pp]ackages/*
+# except build/, which is used as an MSBuild target.
+!**/[Pp]ackages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/[Pp]ackages/repositories.config
+# NuGet v3's project.json files produces more ignorable files
+*.nuget.props
+*.nuget.targets
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
+AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+*.appx
+*.appxbundle
+*.appxupload
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!?*.[Cc]ache/
+
+# Others
+ClientBin/
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.jfm
+*.pfx
+*.publishsettings
+orleans.codegen.cs
+
+# Including strong name files can present a security risk
+# (https://github.com/github/gitignore/pull/2483#issue-259490424)
+#*.snk
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+ServiceFabricBackup/
+*.rptproj.bak
+
+# SQL Server files
+*.mdf
+*.ldf
+*.ndf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+*.rptproj.rsuser
+*- [Bb]ackup.rdl
+*- [Bb]ackup ([0-9]).rdl
+*- [Bb]ackup ([0-9][0-9]).rdl
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+node_modules/
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
+*.vbw
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
+# FAKE - F# Make
+.fake/
+
+# CodeRush personal settings
+.cr/personal
+
+# Python Tools for Visual Studio (PTVS)
+__pycache__/
+*.pyc
+
+# Cake - Uncomment if you are using it
+# tools/**
+# !tools/packages.config
+
+# Tabs Studio
+*.tss
+
+# Telerik's JustMock configuration file
+*.jmconfig
+
+# BizTalk build output
+*.btp.cs
+*.btm.cs
+*.odx.cs
+*.xsd.cs
+
+# OpenCover UI analysis results
+OpenCover/
+
+# Azure Stream Analytics local run output
+ASALocalRun/
+
+# MSBuild Binary and Structured Log
+*.binlog
+
+# NVidia Nsight GPU debugger configuration file
+*.nvuser
+
+# MFractors (Xamarin productivity tool) working folder
+.mfractor/
+
+# Local History for Visual Studio
+.localhistory/
+
+# BeatPulse healthcheck temp database
+healthchecksdb
+
+# Backup folder for Package Reference Convert tool in Visual Studio 2017
+MigrationBackup/
+
+# Ionide (cross platform F# VS Code tools) working folder
+.ionide/
+
+# Fody - auto-generated XML schema
+FodyWeavers.xsd
+/BarCode.Web.sln
+/src/BarCode.Web.Api/BarCode.Web.Api.csproj
+/src/BarCode.Web.Api/BarCode.Web.Api.csproj
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..2690cf5
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,40 @@
+#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
+#文档地址 https://github.com/dotnet/dotnet-docker/
+FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
+WORKDIR /app
+EXPOSE 8080
+EXPOSE 80
+EXPOSE 443
+
+#安装apt-get 安装 libc6-dev , libgdiplus 用于支持system.drawing 组件绘制,默认ubuntu命令
+#RUN apt-get update -qq && apt-get -y install libgdiplus libc6-dev
+#安装 curl
+RUN apt-get update && apt-get install -y curl
+
+COPY ["src/BarCode.Web.Api/wwwroot/BarCode.Web.Api.xml", "/app/BarCode.Web.Api.xml"]
+COPY ["src/BarCode.Web.Api/wwwroot/BarCode.Web.Core.xml", "/app/BarCode.Web.Core.xml"]
+COPY ["src/BarCode.Web.Api/wwwroot/BarCode.Web.Domain.xml", "/app/BarCode.Web.Domain.xml"]
+
+USER app
+
+#FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
+FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
+ARG BUILD_CONFIGURATION=Release
+WORKDIR /src
+COPY ["src/BarCode.Web.Api/BarCode.Web.Api.csproj", "src/BarCode.Web.Api/"]
+COPY ["src/BarCode.Web.Repositories/BarCode.Web.Repositories.csproj", "src/BarCode.Web.Repositories/"]
+COPY ["src/BarCode.Web.Core/BarCode.Web.Core.csproj", "src/BarCode.Web.Core/"]
+COPY ["src/BarCode.Web.Domain/BarCode.Web.Domain.csproj", "src/BarCode.Web.Domain/"]
+RUN dotnet restore "./src/BarCode.Web.Api/BarCode.Web.Api.csproj"
+COPY . .
+WORKDIR "/src/src/BarCode.Web.Api"
+RUN dotnet build "./BarCode.Web.Api.csproj" -c $BUILD_CONFIGURATION -o /app/build
+
+FROM build AS publish
+ARG BUILD_CONFIGURATION=Release
+RUN dotnet publish "./BarCode.Web.Api.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
+
+FROM base AS final
+WORKDIR /app
+COPY --from=publish /app/publish .
+ENTRYPOINT ["dotnet", "BarCode.Web.Api.dll"]
\ No newline at end of file
diff --git a/src/BarCode.Web.Api/.config/dotnet-tools.json b/src/BarCode.Web.Api/.config/dotnet-tools.json
new file mode 100644
index 0000000..305bdb1
--- /dev/null
+++ b/src/BarCode.Web.Api/.config/dotnet-tools.json
@@ -0,0 +1,12 @@
+{
+ "version": 1,
+ "isRoot": true,
+ "tools": {
+ "dotnet-ef": {
+ "version": "9.0.0",
+ "commands": [
+ "dotnet-ef"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/BarCode.Web.Api/Controllers/BoxController.cs b/src/BarCode.Web.Api/Controllers/BoxController.cs
new file mode 100644
index 0000000..4ba50c6
--- /dev/null
+++ b/src/BarCode.Web.Api/Controllers/BoxController.cs
@@ -0,0 +1,199 @@
+锘縰sing AutoMapper;
+using BarCode.Web.Core.Dto;
+using BarCode.Web.Core.Dto.Box;
+using BarCode.Web.Core.Dto.SerialNumbers;
+using BarCode.Web.Core.Internal.Results;
+using BarCode.Web.Domain.Infrastructure;
+using BarCode.Web.Domain.IService;
+using BarCode.Web.Domain.IService.Public;
+using BarCode.Web.Domain.Services;
+using BarCode.Web.Domain.Values;
+using BarCode.Web.Repositories;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using System.Text.RegularExpressions;
+
+namespace BarCode.Web.Api.Controllers
+{
+ ///
+ /// 绠卞瓙
+ ///
+ [Route("api/[controller]")]
+ [ApiController]
+ public class BoxController : ControllerBase
+ {
+ private readonly IBoxRepositories _boxRepositories;
+ private readonly IMapper _mapper;
+ private readonly ILoginService _loginService;
+ private readonly IBoxService _boxService;
+ public BoxController(IMapper mapper, ILoginService loginService, IBoxRepositories boxRepositories,
+ IBoxService boxService)
+ {
+ _boxRepositories = boxRepositories;
+ _mapper = mapper;
+ _loginService = loginService;
+ _boxService = boxService;
+ }
+
+ ///
+ /// 绠变俊鎭-鍒楄〃
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("GetList")]
+ public async Task> GetPagedList([FromBody] BoxQueryRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return ResultPagedList.ReFailure(ResultCodes.Token_Invalid_Error);
+
+ if (!string.IsNullOrEmpty(dto.BoxBeginNo)
+ && !Regex.Match(dto.BoxBeginNo.ToUpper().Replace("CTN", ""), "^[0-9]*$").Success)
+ return ResultPagedList.ReFailure(ResultCodes.BoxNO_Invalid_Error);
+ if (!string.IsNullOrEmpty(dto.BoxEndNo)
+ && !Regex.Match(dto.BoxEndNo.ToUpper().Replace("CTN", ""), "^[0-9]*$").Success)
+ return ResultPagedList.ReFailure(ResultCodes.BoxNO_Invalid_Error);
+
+ var (list, count) = await _boxRepositories.GetListAsync(dto, loginInfo);
+ var result = ResultPagedList.ReSuccess(list, count);
+ return result;
+ }
+ /////
+ ///// 鑾峰彇璇︽儏
+ /////
+ /////
+ /////
+ //[HttpGet]
+ //[Route("GetInfo/{id}")]
+ //public async Task> GetInfo([FromRoute] int id)
+ //{
+ // var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ // if (loginInfo == null || loginInfo.UserInfo == null)
+ // return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+
+ // var response = await _repositories.GetInfo(id);
+ // return Result.ReSuccess(response);
+ //}
+
+ ///
+ /// 鐢熸垚绠辩爜
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("Generate")]
+ public async Task Generate(GenerateBoxRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+ return await _boxService.Generate(dto, loginInfo);
+ }
+
+ ///
+ /// 瑁呯淇濆瓨
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("Save")]
+ public async Task Save(SaveBoxRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+
+ return await _boxService.Save(dto, loginInfo);
+ }
+ ///
+ /// 鎵撳嵃
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("Print")]
+ public async Task Print(OperateRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+ return await _boxService.Print(dto);
+ }
+ ///
+ /// 鍒犻櫎
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("Delete")]
+ public async Task Delete(DeleteBoxSerialNumberRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+ return await _boxService.Delete(dto, loginInfo);
+ }
+ ///
+ /// 娓呯┖瑁呯淇℃伅
+ ///
+ ///
+ ///
+ [HttpGet]
+ [Route("Clear")]
+ public async Task Clear([FromQuery] int boxId)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+ return await _boxService.Clear(boxId, loginInfo);
+ }
+ ///
+ /// 鏍规嵁绠卞彿鑾峰彇绠变俊鎭
+ ///
+ ///
+ ///
+ [HttpGet]
+ [Route("GetBoxByNo")]
+ public async Task> GetBoxByNo([FromQuery] string boxBillNo)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+ var entity = await _boxRepositories.GetByNo(boxBillNo);
+ if (entity == null)
+ return Result.ReFailure(ResultCodes.BoxNoDataError);
+
+ return Result.ReSuccess(_mapper.Map(entity));
+ }
+ ///
+ /// 閲嶆柊瑁呯
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("Restart")]
+ public async Task Restart(OperateRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+ return await _boxService.Restart(dto, loginInfo);
+ }
+ ///
+ /// 寮濮嬭绠
+ ///
+ ///
+ ///
+ [HttpGet]
+ [Route("BeginCarton")]
+ public async Task BeginCarton([FromQuery] int boxId)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+ return await _boxService.BeginCarton(boxId, loginInfo);
+ }
+
+ }
+}
diff --git a/src/BarCode.Web.Api/Controllers/BoxMarkController.cs b/src/BarCode.Web.Api/Controllers/BoxMarkController.cs
new file mode 100644
index 0000000..44c4d10
--- /dev/null
+++ b/src/BarCode.Web.Api/Controllers/BoxMarkController.cs
@@ -0,0 +1,89 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using BarCode.Web.Core.Dto;
+using BarCode.Web.Core.Internal.Results;
+using BarCode.Web.Domain.Infrastructure;
+using BarCode.Web.Domain.IService;
+using BarCode.Web.Domain.IService.Public;
+using BarCode.Web.Domain.Values;
+
+namespace BarCode.Web.Api.Controllers
+{
+ ///
+ /// 绠卞敍-鎺ュ彛
+ ///
+ [Route("api/[controller]")]
+ [ApiController]
+ public class BoxMarkController : ControllerBase
+ {
+
+ private readonly ILoginService _loginService;
+ private readonly IBoxMarkService _boxMarkService;
+ private readonly IBoxMarkRepositories _boxMarkRepositories;
+ private readonly IExportExcelService _exportExcelService;
+ public BoxMarkController(
+ ILoginService loginService,
+ IBoxMarkRepositories boxMarkRepositories,
+ IBoxMarkService boxMarkService,
+ IExportExcelService exportExcelService)
+ {
+ this._loginService = loginService;
+ this._boxMarkService = boxMarkService;
+ this._exportExcelService = exportExcelService;
+ this._boxMarkRepositories = boxMarkRepositories;
+ }
+
+ ///
+ /// 绠卞敍--鍒楄〃
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("GetList")]
+ public async Task> GetPagedList([FromBody] BoxMarkQueryRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return ResultPagedList.ReFailure(ResultCodes.Token_Invalid_Error);
+ var (list, count) = await _boxMarkService.GetPagedList(dto, loginInfo);
+ return ResultPagedList.ReSuccess(list, count);
+ }
+
+ ///
+ /// 鐢熸垚
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("generate")]
+ public async Task> GenerateAsync([FromBody] GenerateBoxMarkDto dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return ResultPagedList.ReFailure(ResultCodes.Token_Invalid_Error);
+ return await _boxMarkService.Generate(dto, loginInfo);
+ }
+
+ ///
+ /// 鎵归噺鍒犻櫎
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("delete")]
+ public async Task Delete([FromBody] OperateRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return ResultPagedList.ReFailure(ResultCodes.Token_Invalid_Error);
+ var isSuccess= await _boxMarkRepositories.DeleteRange(dto.Ids);
+ if(!isSuccess)
+ return Result.ReFailure(ResultCodes.DateWriteError);
+ return Result.ReSuccess();
+ }
+ }
+}
diff --git a/src/BarCode.Web.Api/Controllers/ClientLogController.cs b/src/BarCode.Web.Api/Controllers/ClientLogController.cs
new file mode 100644
index 0000000..cdd40b6
--- /dev/null
+++ b/src/BarCode.Web.Api/Controllers/ClientLogController.cs
@@ -0,0 +1,82 @@
+锘縰sing Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Logging;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using BarCode.Web.Core.Internal.Results;
+using Microsoft.Extensions.Hosting;
+
+namespace BarCode.Web.Api.Controllers
+{
+ ///
+ /// 鍓嶇璁板綍鏃ュ織
+ ///
+ [Route("api/[controller]")]
+ [ApiController]
+ public class ClientLogController : ControllerBase
+ {
+ private readonly ILogger _Logger;
+ public IWebHostEnvironment _webHostEnvironment { get; set; }
+ public ClientLogController(ILogger Logger, IWebHostEnvironment webHostEnvironment)
+ {
+ _Logger = Logger;
+ _webHostEnvironment = webHostEnvironment;
+ }
+ ///
+ /// 鍓嶇璁板綍鏃ュ織
+ ///
+ ///
+ ///
+ [HttpGet]
+ [Route("Log")]
+ public Task Log([FromQuery] string log)
+ {
+ if (!_webHostEnvironment.IsDevelopment())
+ _Logger.LogInformation($"鍓嶇鏃ュ織 鏃堕棿:{DateTime.Now} 鍐呭:{log}");
+
+ return Task.FromResult(Result.ReSuccess());
+ }
+
+ ///
+ /// 鍓嶇璁板綍鏃ュ織
+ ///
+ ///
+ ///
+ [HttpGet]
+ [Route("test")]
+ public Task Log()
+ {
+ return Task.FromResult(Result.ReSuccess());
+ }
+
+ ///
+ /// 鍓嶇璁板綍鏃ュ織(鏁扮粍)
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("Logs")]
+ public Task Logs(List logs)
+ {
+ if (!_webHostEnvironment.IsDevelopment())
+ _Logger.LogInformation($"鍓嶇鏃ュ織(鏁扮粍) 鏃堕棿:{DateTime.Now} 鍐呭:{JsonConvert.SerializeObject(logs)}");
+
+ return Task.FromResult(Result.ReSuccess());
+ }
+ }
+ ///
+ /// 娑堟伅鏁扮粍
+ ///
+ [Serializable]
+ public class LogRequest
+ {
+ ///
+ /// 娑堟伅鍐呭鏁扮粍
+ ///
+ public List logs { get; set; } = new List();
+ }
+}
diff --git a/src/BarCode.Web.Api/Controllers/FileDownManagerController.cs b/src/BarCode.Web.Api/Controllers/FileDownManagerController.cs
new file mode 100644
index 0000000..b0ad382
--- /dev/null
+++ b/src/BarCode.Web.Api/Controllers/FileDownManagerController.cs
@@ -0,0 +1,107 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using BarCode.Web.Core;
+using BarCode.Web.Core.Dto;
+using BarCode.Web.Core.Internal.Results;
+using BarCode.Web.Domain.Infrastructure;
+using BarCode.Web.Domain.IService.Public;
+using BarCode.Web.Domain.Values;
+using Microsoft.AspNetCore.StaticFiles;
+using NPOI.SS.Formula.Functions;
+using Npoi.Mapper;
+
+namespace BarCode.Web.Api.Controllers
+{
+ ///
+ /// 涓婁紶涓嬭浇涓績
+ ///
+ [Route("api/[controller]")]
+ [ApiController]
+ public class FileDownManagerController : ControllerBase
+ {
+ private readonly ILoginService _loginService;
+ private readonly IFileDownManagerRepositories _repositories;
+ public FileDownManagerController(ILoginService loginService, IFileDownManagerRepositories repositories)
+ {
+ _loginService = loginService;
+ _repositories = repositories;
+ }
+
+ ///
+ /// 鑾峰彇闇瑕佺殑鐘舵佸垪琛
+ ///
+ ///
+ [HttpGet]
+ [Route("GetStatus")]
+ public Task> GetStatus()
+ {
+ FileDownManagerStatusResponse response = new FileDownManagerStatusResponse();
+ foreach (FileDownLoadOrderType enumv in Enum.GetValues(typeof(FileDownLoadOrderType)))
+ {
+ response.Type.Add((int)enumv, enumv.GetRemark());
+ }
+ foreach (ExportStatus enumv in Enum.GetValues(typeof(ExportStatus)))
+ {
+ response.Status.Add((int)enumv, enumv.GetRemark());
+ }
+ return Task.FromResult(Result.ReSuccess(response));
+ }
+
+ ///
+ /// 涓嬭浇瀵煎嚭鏂囦欢 鍒楄〃
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("FileDownManagerQuery")]
+ public async Task> FileDownManagerQuery(FileDownManagerRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null)
+ return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+ dto.SupplierId = loginInfo.UserInfo.SupplierId;
+
+ var result = await _repositories.GetList(dto, loginInfo);
+ return Result.ReSuccess(result);
+ }
+ ///
+ /// 妯℃澘(鐢熸垚搴忓垪鐮)
+ ///
+ ///
+ [HttpGet]
+ [Route("TemplateExcel")]
+ public IActionResult TemplateExcel()
+ {
+ Mapper mapper = new Mapper();
+
+ //绗竴涓弬鏁颁负瀵煎嚭Excel鍚嶇О
+ //绗簩涓弬鏁颁负Excel鏁版嵁鏉ユ簮
+ //绗笁涓弬鏁颁负瀵煎嚭鐨凷heet鍚嶇О
+ //overwrite鍙傛暟濡傛灉鏄瑕嗙洊宸插瓨鍦ㄧ殑Excel鎴栬呮柊寤篍xcel鍒欎负true锛屽鏋滃湪鍘熸湁Excel涓婅拷鍔犳暟鎹垯涓篺alse
+ //xlsx鍙傛暟鏄敤浜庡尯鍒嗗鍑虹殑鏁版嵁鏍煎紡涓簒lsx杩樻槸xls
+ byte[] buffer = null;
+ using (MemoryStream stream = new MemoryStream())
+ {
+ try
+ {
+ List list = new List();
+ mapper.Put(list, "sheet1", true);
+
+ mapper.Save(stream);
+ }
+ catch (Exception)
+ {
+ }
+
+ buffer = stream.ToArray();
+ }
+ // .xlsx鏂囦欢瀵瑰簲鐨凪ime淇℃伅
+ var mime = new FileExtensionContentTypeProvider().Mappings[".xlsx"];
+ return File(buffer, mime, "鎵归噺鐢熸垚鏉$爜妯℃澘.xlsx");
+ }
+ }
+}
diff --git a/src/BarCode.Web.Api/Controllers/HeartController.cs b/src/BarCode.Web.Api/Controllers/HeartController.cs
new file mode 100644
index 0000000..66c7130
--- /dev/null
+++ b/src/BarCode.Web.Api/Controllers/HeartController.cs
@@ -0,0 +1,20 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace BarCode.Web.Api.Controllers
+{
+ [Route("api/[controller]")]
+ [ApiController]
+ public class HeartController : ControllerBase
+ {
+ [HttpGet]
+ public Task Heart()
+ {
+ return Task.FromResult("Success");
+ }
+ }
+}
diff --git a/src/BarCode.Web.Api/Controllers/LoginController.cs b/src/BarCode.Web.Api/Controllers/LoginController.cs
new file mode 100644
index 0000000..9e3b391
--- /dev/null
+++ b/src/BarCode.Web.Api/Controllers/LoginController.cs
@@ -0,0 +1,143 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Logging;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using BarCode.Web.Core.Dto.Login;
+using BarCode.Web.Core.Internal.Results;
+using BarCode.Web.Domain.IService.Public;
+using BarCode.Web.Domain.Values;
+
+namespace BarCode.Web.Api.Controllers
+{
+ ///
+ /// 鐧诲綍鎺ュ彛
+ ///
+ [Route("api/[controller]")]
+ [ApiController]
+ public class LoginController : ControllerBase
+ {
+ private readonly ILoginService _loginService;
+ private readonly ILogger _logger;
+ public LoginController(ILoginService loginService,ILogger logger)
+ {
+ this._logger = logger;
+ this._loginService = loginService;
+
+ }
+
+ ///
+ /// 鐧诲綍
+ ///
+ ///
+ ///
+ [HttpGet]
+ [Route("LoginIn")]
+ public async Task> LoginIn([FromQuery] string code)
+ {
+ //var result = await _loginService.GetUserInfoAsync(code);
+ var result = await _loginService.GetUserInfoByCode(code);
+ return result;
+ }
+
+ ///
+ /// 鐧诲綍-APP鍜屽皬绋嬪簭
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("LoginInPwd")]
+ public async Task> LoginInPwd([FromBody] LoginRequest dto)
+ {
+ var result = await _loginService.GetUserInfo(dto.UserName,dto.Password);
+ return result;
+ }
+
+ ///
+ /// 閫鍑虹櫥褰
+ ///
+ ///
+ [HttpPost]
+ [Route("LoginOut")]
+ public async Task LoginOut()
+ {
+ string authorization = this.HttpContext.Request.Headers["Authorization"];
+ //if (string.IsNullOrEmpty(authorization))
+ //{
+ // return Result.ReFailure(BaseResultCodes.UnAuthorized);
+ //}
+
+ //if (logininfo == null || logininfo.UserInfo == null)
+ // return Result.ReFailure(BaseResultCodes.UnAuthorized);
+ if (!string.IsNullOrEmpty(authorization))
+ {
+ var logininfo = _loginService.GetLoginInfo(authorization);
+ if (logininfo != null && logininfo.UserInfo != null)
+ {
+ var dto = new LoginOutDto()
+ {
+ UcId = logininfo.UserInfo.UcId.ToString(),
+ SessionId = logininfo.UserInfo.SeesionId,
+ Token = logininfo.TokenInfo.Token,
+ AccessToken = logininfo.TokenInfo.PhpToken,
+ RefreshToken=logininfo.TokenInfo.RefreshToken,
+ ExpiresIn = logininfo.TokenInfo.Expired
+ };
+ var res = await _loginService.LoginOut(dto);
+ }
+ }
+ return Result.ReSuccess();
+ }
+ ///
+ /// PHP鍗曠偣閫鍑轰娇鐢
+ ///
+ ///
+ [HttpGet]
+ [Route("LoginOutSingle")]
+ public async Task LoginOutSingle()
+ {
+ this.HttpContext.Request.Cookies.TryGetValue("PHPSESSID", out string value);
+ if (string.IsNullOrEmpty(value))
+ value = string.Empty;
+ if (!string.IsNullOrEmpty(value))
+ await _loginService.LoginOutSingleAsync(value);
+ return Result.ReSuccess();
+ }
+
+ ///
+ /// 鑿滃崟鍒楄〃
+ ///
+ ///
+ [HttpGet]
+ [Route("Menus")]
+ public async Task>> GetMenuList()
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return Result>.ReFailure(ResultCodes.Token_Invalid_Error);
+
+ _logger.LogInformation($"鐢ㄦ埛ID锛歿loginInfo.UserInfo.UcId}");
+ var list = await _loginService.GetMenuList(loginInfo.UserInfo.UcId);
+ _logger.LogInformation($"鑿滃崟鏁伴噺锛歿list.Count}");
+ if (list.Count == 0)
+ {
+ //璋冪敤鍗曠偣鐨勯鍑烘帴鍙
+ var dto = new LoginOutDto()
+ {
+ UcId = loginInfo.UserInfo.UcId.ToString(),
+ SessionId = loginInfo.UserInfo.SeesionId,
+ Token = loginInfo.TokenInfo.Token,
+ AccessToken = loginInfo.TokenInfo.PhpToken,
+ ExpiresIn = loginInfo.TokenInfo.Expired
+
+ };
+ await _loginService.LoginOut(dto);
+ return Result>.ReFailure(ResultCodes.NoRoot);
+ }
+ var res = Result>.ReSuccess(list);
+ return res;
+ }
+ }
+}
diff --git a/src/BarCode.Web.Api/Controllers/MaterialController.cs b/src/BarCode.Web.Api/Controllers/MaterialController.cs
new file mode 100644
index 0000000..ee7f664
--- /dev/null
+++ b/src/BarCode.Web.Api/Controllers/MaterialController.cs
@@ -0,0 +1,118 @@
+锘縰sing AutoMapper;
+using BarCode.Web.Core.Dto.Erp;
+using BarCode.Web.Core.Help;
+using BarCode.Web.Core.Internal.Results;
+using BarCode.Web.Domain.Entitys;
+using BarCode.Web.Domain.Infrastructure;
+using BarCode.Web.Domain.IService.Public;
+using BarCode.Web.Domain.Options;
+using BarCode.Web.Domain.Services;
+using BarCode.Web.Domain.Services.Public;
+using BarCode.Web.Domain.Values;
+using BarCode.Web.Repositories;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Caching.Memory;
+using Microsoft.Extensions.Options;
+using Newtonsoft.Json;
+
+namespace BarCode.Web.Api.Controllers
+{
+ ///
+ /// 鐗╂枡
+ ///
+ [Route("api/[controller]")]
+ [ApiController]
+ public class MaterialController : ControllerBase
+ {
+ private IMapper _mapper;
+ private ILogger _logger;
+ private IErpService _erpService;
+ private IMaterialsRepositories _materialsRepositories;
+ private ErpOptions _erpOptions;
+ private readonly IMemoryCache _memoryCache;
+ public MaterialController(IMapper mapper, ILogger logger, IErpService erpService,
+ IMaterialsRepositories materialsRepositories, IOptions erpOptions, IMemoryCache memoryCache)
+ {
+ _mapper = mapper;
+ _logger = logger;
+ _erpService = erpService;
+ _materialsRepositories = materialsRepositories;
+ this._erpOptions = erpOptions.Value;
+ this._memoryCache = memoryCache;
+ }
+
+ ///
+ /// 鍒锋柊鐗╂枡 69鏉$爜鎴杋d32杩涘埗
+ ///
+ /// 鐗╂枡缂栫爜
+ /// 69 鏉$爜,id id32杩涘埗,other 鍚嶅瓧鍜岃鏍煎瀷鍙
+ ///
+ [HttpGet]
+ [Route("Refresh/{number}/{type}")]
+ public async Task Refresh([FromRoute] string number, [FromRoute] string type)
+ {
+ if (string.IsNullOrEmpty(number))
+ return Result.ReFailure("鐗╂枡缂栫爜涓嶈兘涓虹┖", 556677);
+ if (string.IsNullOrEmpty(type) || (!type.Equals("69") && !type.Equals("id")&& !type.Equals("other")))
+ return Result.ReFailure("绫诲瀷鍙兘鏄69鎴杋d鎴杘ther", 556677);
+
+ List numbers = new List();
+ numbers.Add(number);
+
+ var list = await _materialsRepositories.GetEntityList(numbers);
+ if (list.Count() <= 0) return Result.ReFailure(ResultCodes.MateriaNoData);
+
+ var mDtos = await _erpService.BillQueryForMaterialByNumbers(numbers);
+ if (!mDtos.IsSuccess) return Result.ReFailure(mDtos.Message, mDtos.Status);
+ if (mDtos.Data.Count() <= 0) return Result.ReFailure(ResultCodes.MateriaNoData);
+
+ var materials = _memoryCache.Get>(_erpOptions.cache_materail_key);
+
+ List update_list = new List();
+ foreach (var m in mDtos.Data)
+ {
+ var entity = list.FirstOrDefault(f => f.MaterialNumber.Equals(m.MaterialNumber));
+ if (entity == null) continue;
+ if (type.Equals("69"))
+ {
+ entity.BarCode = m.BarCode.Trim();
+ update_list.Add(entity);
+ }
+ if (type.Equals("id"))
+ {
+ entity.IdConvertBar = m.IdConvertBar.Trim();
+ update_list.Add(entity);
+ }
+ if (type.Equals("other"))
+ {
+ entity.MaterialName = m.MaterialName;
+ entity.Specifications = m.Specifications;
+ update_list.Add(entity);
+ }
+
+ //淇敼缂撳瓨
+ if (materials == null) continue;
+ var entity_cache = materials.FirstOrDefault(f => f.MaterialNumber.Equals(m.MaterialNumber));
+ if (entity_cache == null) continue;
+ if (type.Equals("69"))
+ entity_cache.BarCode = m.BarCode.Trim();
+ if (type.Equals("id"))
+ entity_cache.IdConvertBar = m.IdConvertBar.Trim();
+ if (type.Equals("other"))
+ {
+ entity_cache.MaterialName = m.MaterialName;
+ entity_cache.Specifications = m.Specifications;
+ }
+
+ }
+ //淇敼缂撳瓨
+ if (materials != null && materials.Count() > 0)
+ {
+ _memoryCache.Set(_erpOptions.cache_materail_key, materials, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromMinutes(DateTimeUtil.GetTotalMinutesTimeSpan())));
+ }
+ await _materialsRepositories.UpdateRange(update_list);
+ return Result.ReSuccess();
+ }
+ }
+}
diff --git a/src/BarCode.Web.Api/Controllers/SecurityController.cs b/src/BarCode.Web.Api/Controllers/SecurityController.cs
new file mode 100644
index 0000000..2218df0
--- /dev/null
+++ b/src/BarCode.Web.Api/Controllers/SecurityController.cs
@@ -0,0 +1,59 @@
+锘縰sing BarCode.Web.Core.Dto.SecurityNumbers;
+using BarCode.Web.Core.Dto.SerialNumbers;
+using BarCode.Web.Core.Help;
+using BarCode.Web.Core.Internal.Results;
+using BarCode.Web.Domain.Infrastructure;
+using BarCode.Web.Domain.Values;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+using System.Text.Json.Serialization;
+using System.Text.RegularExpressions;
+
+namespace BarCode.Web.Api.Controllers
+{
+ [Route("api/[controller]")]
+ [ApiController]
+ public class SecurityController : ControllerBase
+ {
+ public readonly ISecurityNumbersRepositories _securityNumbersRepositories;
+ public readonly ILogger _logger;
+ public SecurityController(ISecurityNumbersRepositories securityNumbersRepositories, ILogger logger)
+ {
+ _securityNumbersRepositories = securityNumbersRepositories;
+ _logger = logger;
+ }
+ ///
+ /// 鑾峰彇搴忓垪鍙蜂俊鎭
+ ///
+ /// 闃蹭吉鐮
+ ///
+ [HttpGet]
+ [Route("Get")]
+ public async Task> Get([FromQuery] string security)
+ {
+ _logger.LogInformation($"璇锋眰闃蹭吉鐮:{security}");
+ var zz = "^[0-9A-Za-z]{6,15}$";
+ Regex regex = new Regex(zz);
+ if (!regex.IsMatch(security)) return Result.ReSuccess(new SecurityResponse());
+
+ var res = await _securityNumbersRepositories.GetEntity(security);
+ if (res == null) return Result.ReSuccess(new SecurityResponse());
+
+ res.Get();
+ res = await _securityNumbersRepositories.Edit(res);
+ //涓轰簡璁╁墠绔彲浠ュ仛璇█鍒ゆ柇 杩欎釜鎺ュ彛鎵鏈夐敊璇兘鎻愮ず500
+ if (res == null) return Result.ReFailure(BaseResultCodes.UnknowError);
+
+ var response = new SecurityResponse()
+ {
+ Security = res.SecurityNumber,
+ QueryCount = res.QueryCount,
+ IsOneQuery = res.QueryCount == 1 ? true : false,
+ QueryTime = res.QueryTime.DateToStringSeconds()
+ };
+ _logger.LogInformation($"璇锋眰闃蹭吉鐮佽繑鍥:{JsonConvert.SerializeObject(response)}");
+ return Result.ReSuccess(response);
+ }
+ }
+}
diff --git a/src/BarCode.Web.Api/Controllers/SecurityNumberController.cs b/src/BarCode.Web.Api/Controllers/SecurityNumberController.cs
new file mode 100644
index 0000000..9816bab
--- /dev/null
+++ b/src/BarCode.Web.Api/Controllers/SecurityNumberController.cs
@@ -0,0 +1,189 @@
+锘縰sing AutoMapper;
+using BarCode.Web.Core.Dto.SecurityNumbers;
+using BarCode.Web.Core.Dto;
+using BarCode.Web.Core.Help;
+using BarCode.Web.Core.Internal.Results;
+using BarCode.Web.Domain.Infrastructure;
+using BarCode.Web.Domain.IService.Public;
+using BarCode.Web.Domain.IService;
+using BarCode.Web.Domain.Options;
+using BarCode.Web.Domain.Values;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Options;
+using BarCode.Web.Core.Dto.SerialNumbers;
+using BarCode.Web.Domain.Services;
+using BarCode.Web.Core;
+
+namespace BarCode.Web.Api.Controllers
+{
+ ///
+ /// 闃蹭吉鐮
+ ///
+ [Route("api/[controller]")]
+ [ApiController]
+ public class SecurityNumberController : ControllerBase
+ {
+ private readonly IMapper _mapper;
+ private readonly ILoginService _loginService;
+ private readonly ISecurityNumbersRepositories _securityNumbersRepositories;
+ private readonly ISecurityNumberService _securityNumberService;
+ private readonly IExportExcelService _exportExcelService;
+ private readonly QiniuOptions _option;
+ private readonly ISecurityGenerateRecordRepositories _sGenerateRecordRepositories;
+ public SecurityNumberController(IMapper mapper, ILoginService loginService, ISecurityNumbersRepositories SecurityNumbersRepositories,
+ ISecurityNumberService SecurityNumberService, IExportExcelService exportExcelService,
+ IOptions option, ISecurityGenerateRecordRepositories sGenerateRecordRepositories)
+ {
+ _mapper = mapper;
+ _loginService = loginService;
+ _securityNumbersRepositories = SecurityNumbersRepositories;
+ _securityNumberService = SecurityNumberService;
+ _exportExcelService = exportExcelService;
+ _option = option?.Value;
+ _sGenerateRecordRepositories = sGenerateRecordRepositories;
+ }
+ ///
+ /// 闃蹭吉鐮佺敓鎴愯褰曞垪琛
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("GetGenerateRecordList")]
+ public async Task> GetGenerateRecordList([FromBody] SecurityGenerateRecordQueryRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return ResultPagedList.ReFailure(ResultCodes.Token_Invalid_Error);
+
+ var (list, count) = await _sGenerateRecordRepositories.GetListAsync(dto, loginInfo);
+ var result = ResultPagedList.ReSuccess(list, count);
+ return result;
+ }
+ ///
+ /// 闃蹭吉鐮佸垪琛
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("GetList")]
+ public async Task> GetPagedList([FromBody] SecurityNumberQueryRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return ResultPagedList.ReFailure(ResultCodes.Token_Invalid_Error);
+
+ var (list, count) = await _securityNumbersRepositories.GetListAsync(dto, loginInfo);
+ var result = ResultPagedList.ReSuccess(list, count);
+ return result;
+ }
+ ///
+ /// 闃蹭吉鐮佺敓鎴愯褰曢〉闈-涓嬭浇鏉$爜
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("ExportAll")]
+ public Task> ExportAll(OperateRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null)
+ return Task.FromResult(Result.ReFailure(ResultCodes.Token_Invalid_Error));
+
+ var entityList = _sGenerateRecordRepositories.GetEntityList(dto.Ids).GetAwaiter().GetResult();
+ if (entityList.Count < 0)return Task.FromResult(Result.ReFailure(ResultCodes.NoDateError));
+ string orgCode = entityList.First().OrgCode;
+ //鍙嶅啓涓嬭浇鏁版嵁
+ var resSuccess = this.DownLoad(new OperateSecurityNumberRequest() { GenerateRecordIds = dto.Ids, IsAll = true }).GetAwaiter().GetResult();
+ if (!resSuccess.IsSuccess) Task.FromResult(Result.ReFailure(resSuccess.Message, resSuccess.Status));
+
+ string fileName = FileDownLoadOrderType.SecurityNumbers.GetRemark() + DateTime.Now.DateToStringSecondsNoSpace() + ".xlsx";
+ string res = _option.Url + fileName;
+
+ SecurityNumbersExportRequest request = new SecurityNumbersExportRequest();
+ request.Ids = dto.Ids;
+
+ Task.Run(async () =>
+ {
+ await _exportExcelService.ExportList(request, fileName, loginInfo.UserInfo.UcId, loginInfo, FileDownLoadOrderType.SecurityNumbers, orgCode);
+ });
+
+ return Task.FromResult(Result.ReSuccess(res));
+ }
+ ///
+ /// 闃蹭吉鐮侀〉闈-鏉$爜涓嬭浇
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("Export")]
+ public Task> Export([FromBody] SecurityNumberQueryRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null)
+ return Task.FromResult(Result.ReFailure(ResultCodes.Token_Invalid_Error));
+
+ var entity = _sGenerateRecordRepositories.GetEntity(dto.GenerateRecordId).GetAwaiter().GetResult();
+ if (entity==null) return Task.FromResult(Result.ReFailure(ResultCodes.NoDateError));
+ string orgCode = entity.OrgCode;
+ //鍙嶅啓涓嬭浇鏁版嵁
+ Result resSuccess;
+ if (dto.SecurityNumbers.Count() > 0)
+ {
+ resSuccess = this.DownLoad(new OperateSecurityNumberRequest()
+ {
+ GenerateRecordIds = new List() { dto.GenerateRecordId },
+ IsAll = false,
+ SecurityNumbers = dto.SecurityNumbers
+ }).GetAwaiter().GetResult();
+ }
+ else
+ {
+ resSuccess = this.DownLoad(new OperateSecurityNumberRequest()
+ {
+ GenerateRecordIds = new List() { dto.GenerateRecordId },
+ IsAll = true
+ }).GetAwaiter().GetResult();
+ }
+ if (!resSuccess.IsSuccess) return Task.FromResult(Result.ReFailure(resSuccess.Message, resSuccess.Status));
+
+ string fileName = FileDownLoadOrderType.SecurityNumberInfo.GetRemark() + DateTime.Now.DateToStringSecondsNoSpace() + ".xlsx";
+ string res = _option.Url + fileName;
+
+ Task.Run(async () =>
+ {
+ await _exportExcelService.ExportList(dto, fileName, loginInfo.UserInfo.UcId, loginInfo, FileDownLoadOrderType.SecurityNumberInfo, orgCode);
+ });
+
+ return Task.FromResult(Result.ReSuccess(res));
+ }
+ ///
+ /// 涓嬭浇(涓鑸悗绔唴閮ㄨ皟鐢)
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("DownLoad")]
+ public async Task DownLoad(OperateSecurityNumberRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+ return await _securityNumberService.DownLoad(dto);
+ }
+ ///
+ /// 鐢熸垚搴忓垪鍙
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("Generate")]
+ public async Task Generate(GenerateSecurityNumberRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+ return await _securityNumberService.Generate(dto, loginInfo);
+ }
+ }
+}
diff --git a/src/BarCode.Web.Api/Controllers/SerialNumberController.cs b/src/BarCode.Web.Api/Controllers/SerialNumberController.cs
new file mode 100644
index 0000000..e003ac8
--- /dev/null
+++ b/src/BarCode.Web.Api/Controllers/SerialNumberController.cs
@@ -0,0 +1,309 @@
+锘縰sing AutoMapper;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using BarCode.Web.Core.Internal.Results;
+using BarCode.Web.Domain.Infrastructure;
+using BarCode.Web.Domain.IService.Public;
+using BarCode.Web.Domain.Values;
+using BarCode.Web.Core.Dto.SerialNumbers;
+using BarCode.Web.Repositories;
+using BarCode.Web.Core.Dto;
+using BarCode.Web.Domain.IService;
+using BarCode.Web.Core.Help;
+using BarCode.Web.Core;
+using BarCode.Web.Domain.Services;
+using BarCode.Web.Domain.Options;
+using Microsoft.Extensions.Options;
+using NPOI.SS.Formula.Functions;
+using System.Diagnostics.Eventing.Reader;
+using BarCode.Web.Core.Dto.Box;
+using System.Text.RegularExpressions;
+
+namespace BarCode.Web.Api.Controllers
+{
+ ///
+ /// 搴忓垪鍙
+ ///
+ [Route("api/[controller]")]
+ [ApiController]
+ public class SerialNumberController : ControllerBase
+ {
+ private readonly IMapper _mapper;
+ private readonly ILoginService _loginService;
+ private readonly ISerialNumbersRepositories _serialNumbersRepositories;
+ private readonly ISerialNumberService _serialNumberService;
+ private readonly IExportExcelService _exportExcelService;
+ private readonly QiniuOptions _option;
+ private readonly ISGenerateRecordRepositories _sGenerateRecordRepositories;
+ public SerialNumberController(IMapper mapper, ILoginService loginService, ISerialNumbersRepositories serialNumbersRepositories,
+ ISerialNumberService serialNumberService, IExportExcelService exportExcelService,
+ IOptions option, ISGenerateRecordRepositories sGenerateRecordRepositories)
+ {
+ _mapper = mapper;
+ _loginService = loginService;
+ _serialNumbersRepositories = serialNumbersRepositories;
+ _serialNumberService = serialNumberService;
+ _exportExcelService = exportExcelService;
+ _option = option?.Value;
+ _sGenerateRecordRepositories = sGenerateRecordRepositories;
+ }
+ ///
+ /// 搴忓垪鐮佺敓鎴愯褰曞垪琛
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("GetGenerateRecordList")]
+ public async Task> GetGenerateRecordList([FromBody] SGenerateRecordQueryRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return ResultPagedList.ReFailure(ResultCodes.Token_Invalid_Error);
+
+ var (list, count) = await _sGenerateRecordRepositories.GetListAsync(dto, loginInfo);
+ var result = ResultPagedList.ReSuccess(list, count);
+ return result;
+ }
+ ///
+ /// 搴忓垪鐮佸垪琛
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("GetList")]
+ public async Task> GetPagedList([FromBody] SerialNumberQueryRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return ResultPagedList.ReFailure(ResultCodes.Token_Invalid_Error);
+
+ if (!string.IsNullOrEmpty(dto.NumberCodeBegin)
+ && (!Regex.Match(dto.NumberCodeBegin, "^[0-9]*$").Success || dto.NumberCodeBegin.Length < 12))
+ return ResultPagedList.ReFailure(ResultCodes.NumberCode_Invalid_Error);
+ if (!string.IsNullOrEmpty(dto.NumberCodeEnd)
+ && (!Regex.Match(dto.NumberCodeEnd, "^[0-9]*$").Success || dto.NumberCodeEnd.Length < 12))
+ return ResultPagedList.ReFailure(ResultCodes.NumberCode_Invalid_Error);
+
+ var (list, count) = await _serialNumbersRepositories.GetListAsync(dto, loginInfo);
+ var result = ResultPagedList.ReSuccess(list, count);
+ return result;
+ }
+ ///
+ /// 鏉$爜鐢熸垚璁板綍椤甸潰-涓嬭浇鏉$爜
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("ExportAll")]
+ public Task> ExportAll(OperateRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null)
+ return Task.FromResult(Result.ReFailure(ResultCodes.Token_Invalid_Error));
+
+ var entityList = _sGenerateRecordRepositories.GetEntityList(dto.Ids).GetAwaiter().GetResult();
+ if (entityList.Count < 0) return Task.FromResult(Result.ReFailure(ResultCodes.NoDateError));
+ string orgCode = entityList.First().OrgCode;
+
+ //鍙嶅啓涓嬭浇鏁版嵁
+ var resSuccess = this.DownLoad(new OperateSerialNumberRequest() { GenerateRecordIds = dto.Ids, IsAll = true }).GetAwaiter().GetResult();
+ if (!resSuccess.IsSuccess) Task.FromResult(Result.ReFailure(resSuccess.Message, resSuccess.Status));
+
+ string fileName = FileDownLoadOrderType.SerialNumbers.GetRemark() + DateTime.Now.DateToStringSecondsNoSpace() + ".xlsx";
+ string res = _option.Url + fileName;
+
+ SerialNumbersExportRequest request = new SerialNumbersExportRequest();
+ request.Ids = dto.Ids;
+
+ Task.Run(async () =>
+ {
+ await _exportExcelService.ExportList(request, fileName, loginInfo.UserInfo.UcId, loginInfo, FileDownLoadOrderType.SerialNumbers, orgCode);
+ });
+
+ return Task.FromResult(Result.ReSuccess(res));
+ }
+ ///
+ /// 搴忓垪鐮侀〉闈-鏉$爜涓嬭浇
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("Export")]
+ public Task> Export([FromBody] SerialNumberQueryRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null)
+ return Task.FromResult(Result.ReFailure(ResultCodes.Token_Invalid_Error));
+
+ var entity = _sGenerateRecordRepositories.GetEntity(dto.GenerateRecordId).GetAwaiter().GetResult();
+ if (entity == null) return Task.FromResult(Result.ReFailure(ResultCodes.NoDateError));
+ string orgCode = entity.OrgCode;
+
+ //鍙嶅啓涓嬭浇鏁版嵁
+ Result resSuccess;
+ if (dto.SerialNumbers.Count() > 0)
+ {
+ resSuccess = this.DownLoad(new OperateSerialNumberRequest()
+ {
+ GenerateRecordIds = new List() { dto.GenerateRecordId },
+ IsAll = false,
+ SerialNumbers = dto.SerialNumbers
+ }).GetAwaiter().GetResult();
+ }
+ else
+ {
+ resSuccess = this.DownLoad(new OperateSerialNumberRequest()
+ {
+ GenerateRecordIds = new List() { dto.GenerateRecordId },
+ IsAll = true
+ }).GetAwaiter().GetResult();
+ }
+ if (!resSuccess.IsSuccess) return Task.FromResult(Result.ReFailure(resSuccess.Message, resSuccess.Status));
+
+ string fileName = FileDownLoadOrderType.SerialNumberInfo.GetRemark() + DateTime.Now.DateToStringSecondsNoSpace() + ".xlsx";
+ string res = _option.Url + fileName;
+
+ Task.Run(async () =>
+ {
+ await _exportExcelService.ExportList(dto, fileName, loginInfo.UserInfo.UcId, loginInfo, FileDownLoadOrderType.SerialNumberInfo, orgCode);
+ });
+
+ return Task.FromResult(Result.ReSuccess(res));
+ }
+ ///
+ /// 鐢熸垚搴忓垪鍙
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("Generate")]
+ public async Task Generate(GenerateSerialNumberRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+ return await _serialNumberService.Generate(dto, loginInfo);
+ }
+
+ ///
+ /// 鎵撳嵃
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("Print")]
+ public async Task Print(OperateSerialNumberRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+ return await _serialNumberService.Print(dto);
+ }
+
+ ///
+ /// 涓嬭浇(涓鑸悗绔唴閮ㄨ皟鐢)
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("DownLoad")]
+ public async Task DownLoad(OperateSerialNumberRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+ return await _serialNumberService.DownLoad(dto);
+ }
+
+
+ ///
+ /// 鑾峰彇搴忓垪鍙蜂俊鎭
+ ///
+ /// 绠盜d
+ ///
+ [HttpPost]
+ [Route("GetByBoxId")]
+ public async Task> GetByBoxId(SerialNumberByBoxIdQueryRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return ResultPagedList.ReFailure(ResultCodes.Token_Invalid_Error);
+ if (dto.BoxId == 0)
+ return ResultPagedList.ReFailure(ResultCodes.NoDateError);
+
+ var (list, count) = await _serialNumbersRepositories.GetEntityListByBoxId(dto);
+ var result = ResultPagedList.ReSuccess(list, count);
+ return result;
+ }
+
+
+ /////
+ ///// 鑾峰彇搴忓垪鍙蜂俊鎭
+ /////
+ ///// 搴忓垪鍙
+ ///// 缁勭粐鎴栦緵搴斿晢缂栫爜
+ /////
+ //[HttpGet]
+ //[Route("Get")]
+ //public async Task> Get([FromQuery] string serialNumber, [FromQuery] string orgCode)
+ //{
+ // var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ // if (loginInfo == null || loginInfo.UserInfo == null)
+ // return ResultList.ReFailure(ResultCodes.Token_Invalid_Error);
+ // if (string.IsNullOrEmpty(orgCode))
+ // return ResultList.ReFailure(ResultCodes.NoOrgError);
+
+ // var res = await _serialNumbersRepositories.GetEntityList(serialNumber, orgCode, loginInfo);
+ // // var res = await _serialNumbersRepositories.GetEntityList(serialNumber, orgCode, loginInfo);
+ // if (res == null) return ResultList.ReFailure(ResultCodes.SerialNumberNoData);
+
+ // // return ResultList.ReSuccess(res);
+ // return ResultList.ReSuccess(res.ToList());
+ //}
+
+
+ ///
+ /// 鑾峰彇搴忓垪鍙蜂俊鎭
+ ///
+ /// 搴忓垪鍙
+ /// 缁勭粐鎴栦緵搴斿晢缂栫爜
+ ///
+ [HttpGet]
+ [Route("Get")]
+ public async Task> Get([FromQuery] string serialNumber, [FromQuery] string orgCode)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+ if (string.IsNullOrEmpty(orgCode))
+ return Result.ReFailure(ResultCodes.NoOrgError);
+
+ var res = await _serialNumbersRepositories.GetEntity(serialNumber, orgCode, loginInfo);
+ // var res = await _serialNumbersRepositories.GetEntityList(serialNumber, orgCode, loginInfo);
+ if (res == null) return Result.ReFailure(ResultCodes.SerialNumberNoData);
+
+ // return ResultList.ReSuccess(res);
+ return Result.ReSuccess(res);
+ }
+
+ ///
+ /// 淇敼搴忓垪鐮佺墿鏂
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("UpdateMaterial")]
+ public async Task UpdateMaterial(UpdateMaterialRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+ return await _serialNumberService.UpdateMaterial(dto);
+ }
+
+ }
+}
diff --git a/src/BarCode.Web.Api/Controllers/SysConfigController.cs b/src/BarCode.Web.Api/Controllers/SysConfigController.cs
new file mode 100644
index 0000000..9423ddb
--- /dev/null
+++ b/src/BarCode.Web.Api/Controllers/SysConfigController.cs
@@ -0,0 +1,180 @@
+锘縰sing AutoMapper;
+using BarCode.Web.Core.Dto.Erp;
+using BarCode.Web.Core.Dto.Erp.Org;
+using BarCode.Web.Core.Dto.Erp.Supplier;
+using BarCode.Web.Core.Dto.Login;
+using BarCode.Web.Core.Dto.SingleData;
+using BarCode.Web.Core.Internal.Results;
+using BarCode.Web.Domain.Infrastructure;
+using BarCode.Web.Domain.IService.Public;
+using BarCode.Web.Domain.Options;
+using BarCode.Web.Domain.Values;
+using BarCode.Web.Domain.Values.Single;
+using BarCode.Web.Repositories;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Caching.Memory;
+using Microsoft.Extensions.Options;
+using NPOI.POIFS.FileSystem;
+using System.ComponentModel.Design;
+
+namespace BarCode.Web.Api.Controllers
+{
+ ///
+ /// 绯荤粺閰嶇疆
+ ///
+ [Route("api/[controller]")]
+ [ApiController]
+ public class SysConfigController : ControllerBase
+ {
+ private readonly ILoginService _loginService;
+ private readonly IBasicsRepositories _basicsRepositories;
+ private readonly IErpService _erpService;
+ private readonly ISingleDataService _singleDataService;
+ private readonly IMapper _mapper;
+ private readonly IErpBasicDataExtendService _erpBasicDataExtendService;
+ private readonly ILogger _logger;
+ private ErpOptions _erpOptions;
+ private readonly IMemoryCache _memoryCache;
+
+ public SysConfigController(ILoginService loginService, IBasicsRepositories basicsRepositories, IOptions erpOptions, IErpService erpService, ISingleDataService singleDataService, IMemoryCache memoryCache,
+ IMapper mapper, IErpBasicDataExtendService erpBasicDataExtendService,
+ ILogger logger)
+ {
+ this._erpOptions = erpOptions?.Value;
+ this._memoryCache = memoryCache;
+ _loginService = loginService;
+ _basicsRepositories = basicsRepositories;
+ _erpService = erpService;
+ _singleDataService = singleDataService;
+ _mapper = mapper;
+ _erpBasicDataExtendService = erpBasicDataExtendService;
+ _logger = logger;
+ }
+ ///
+ /// 鑾峰彇鐗╂枡锛涢氳繃瑙勬牸鍨嬪彿
+ ///
+ ///
+ ///
+ [HttpGet]
+ [Route("GetMaterialList")]
+ public async Task> GetMaterialList([FromQuery] string speci)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return ResultList.ReFailure(ResultCodes.Token_Invalid_Error);
+
+ var materials = _memoryCache.Get>(_erpOptions.cache_materail_key);
+ if (materials == null)
+ {
+ var res = await _erpService.BillQueryForMaterial();
+ if (res.IsSuccess)
+ materials = res.Data.ToList();
+ }
+ if (materials == null) return ResultList.ReFailure(ResultCodes.MateriaNoData);
+ //娌℃湁鐗╂枡Id 32杩涘埗鐨勪篃杩囨护鎺
+ var result = materials.Where(x => x.Specifications.Contains(speci)
+ && !string.IsNullOrEmpty(x.IdConvertBar.Trim())).Take(30).ToList();
+ return ResultList.ReSuccess(result);
+ }
+ ///
+ /// 鑾峰彇渚涘簲鍟-erp鍩虹鏁版嵁
+ /// 浣跨敤code鍋氶敭
+ ///
+ /// 渚涘簲鍟嗗悕瀛
+ /// 缁勭粐缂栫爜
+ ///
+ [HttpGet]
+ [Route("GetSupplierOrOrg")]
+ public async Task> GetSupplierOrOrg([FromQuery] string? name, [FromQuery] string orgCode)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null)
+ return ResultList.ReFailure(ResultCodes.Token_Invalid_Error);
+
+ var result = await _singleDataService.GetSingleDataNoCache, NameRequest, SysConfigAction>(
+ new NameRequest(name, loginInfo.UserInfo.CompanyId), SysConfigAction.GetSupplierByNameAndCompany, SingleControllerType.SysConfig);
+ if (!result.IsSuccess)
+ return ResultList.ReFailure(result.Message, result.Status);
+
+ List suppliers = result.Data.ToList();
+ //suppliers = suppliers.Where(w => w.ErpOrgCode.Equals(orgCode)).ToList();
+ if (!string.IsNullOrEmpty(name))
+ suppliers = suppliers.Where(w => w.Name.Contains(name)).ToList();
+ List pullList = new List();
+ foreach (var c in suppliers)
+ {
+ pullList.Add(new PullDownStrResponse()
+ {
+ Id = "s_" + c.Id.ToString(),
+ Name = c.Name,
+ Code = "s_" + c.Code
+ });
+ }
+
+ //var org_result = await _erpService.BillQueryForOrg();
+ //List orgs = org_result.Data.ToList();
+ //if (!string.IsNullOrEmpty(name))
+ // orgs = orgs.Where(w => w.Name.Contains(name)).ToList();
+ //foreach (var c in orgs)
+ //{
+ // pullList.Add(new PullDownStrResponse()
+ // {
+ // Id = "o_" + c.Id.ToString(),
+ // Name = c.Name,
+ // Code = "o_" + c.Number
+ // });
+ //}
+
+ return ResultList.ReSuccess(pullList);
+ }
+ ///
+ /// 鑾峰彇缁勭粐-erp鍩虹鏁版嵁
+ /// 浣跨敤 code鍋氶敭
+ ///
+ ///
+ [HttpGet]
+ [Route("GetOrg")]
+ public async Task> GetOrg([FromQuery] string? name)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null)
+ return ResultList.ReFailure(ResultCodes.Token_Invalid_Error);
+
+ List pullList = new List();
+
+ if (loginInfo.UserInfo.Identity == 2)
+ {
+ pullList.Add(new PullDownStrResponse()
+ {
+ Id = loginInfo.UserInfo.SupplierId.ToString(),
+ Name = loginInfo.UserInfo.SupplierName,
+ Code = "s_" + loginInfo.UserInfo.SupplierCode,
+ IsDefault = true
+ }); ;
+ return ResultList.ReSuccess(pullList);
+ }
+ var result = await _singleDataService.GetSingleDataNoCache, UserRequest, SysConfigAction>(
+ new UserRequest(loginInfo.UserInfo.UcId), SysConfigAction.GetOrgByUser, SingleControllerType.SysConfig);
+ if (!result.IsSuccess)
+ return ResultList.ReFailure(result.Message, result.Status);
+
+ List orgs = result.Data.ToList();
+ if (!string.IsNullOrEmpty(name))
+ orgs = orgs.Where(w => w.Name.Contains(name)).ToList();
+ foreach (var c in orgs)
+ {
+ pullList.Add(new PullDownStrResponse()
+ {
+ Id = c.Id.ToString(),
+ Name = c.Name,
+ Code = "o_" + c.ErpOrgCode
+ });
+ }
+ //榛樿鏄剧ず绗竴涓
+ pullList.First().IsDefault = true;
+
+ return ResultList.ReSuccess(pullList);
+ }
+ }
+}
diff --git a/src/BarCode.Web.Api/Controllers/TestController.cs b/src/BarCode.Web.Api/Controllers/TestController.cs
new file mode 100644
index 0000000..e42223d
--- /dev/null
+++ b/src/BarCode.Web.Api/Controllers/TestController.cs
@@ -0,0 +1,508 @@
+锘縰sing AutoMapper;
+using AutoMapper.Internal.Mappers;
+using BarCode.Web.Core.Dto.Box;
+using BarCode.Web.Core.Dto.Erp.Org;
+using BarCode.Web.Core.Dto.SerialNumbers;
+using BarCode.Web.Core.Help;
+using BarCode.Web.Core.Internal.Results;
+using BarCode.Web.Domain.Entitys;
+using BarCode.Web.Domain.Infrastructure;
+using BarCode.Web.Domain.IService;
+using BarCode.Web.Domain.IService.Public;
+using BarCode.Web.Domain.Services;
+using BarCode.Web.Domain.Services.Public;
+using BarCode.Web.Domain.Values;
+using BarCode.Web.Repositories;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore.Storage;
+using Newtonsoft.Json;
+using NPOI.SS.Formula.Functions;
+using StackExchange.Redis;
+using System.ComponentModel.Design;
+using System.Diagnostics.Eventing.Reader;
+using System.Json;
+using System.Runtime.InteropServices.JavaScript;
+using System.Text.Json.Nodes;
+using System.Text.RegularExpressions;
+
+namespace BarCode.Web.Api.Controllers
+{
+ [Route("api/[controller]")]
+ [ApiController]
+ public class TestController : ControllerBase
+ {
+ private readonly ILoginService _loginService;
+ private readonly IFileDownManagerRepositories _repositories;
+ private readonly IMaterialService _materialService;
+ private readonly ISerialNumberService _serialNumberService;
+ private readonly IBoxRepositories _boxRepositories;
+ private readonly IMapper _mapper;
+ private readonly ISecurityGenerateRecordRepositories _securityGenerateRecordRepositories;
+ private IBasicsRepositories _transactionRepositories;
+ private readonly IBoxService _boxService;
+ private readonly IErpService _erpService;
+ private readonly ISGenerateRecordRepositories _sGenerateRecordRepositories;
+ private readonly ISerialNumbersRepositories _serialNumbersRepositories;
+ private readonly ISecurityNumbersRepositories _securityNumbersRepositories;
+ public TestController(ILoginService loginService, IFileDownManagerRepositories repositories, IMaterialService materialService,
+ ISerialNumberService serialNumberService, IBoxRepositories boxRepositories, IMapper mapper,
+ ISecurityGenerateRecordRepositories securityGenerateRecordRepositories, IBasicsRepositories transactionRepositories,
+ IBoxService boxService, IErpService erpService, ISGenerateRecordRepositories sGenerateRecordRepositories,
+ ISerialNumbersRepositories serialNumbersRepositories, ISecurityNumbersRepositories securityNumbersRepositories)
+ {
+ _loginService = loginService;
+ _repositories = repositories;
+ _materialService = materialService;
+ _serialNumberService = serialNumberService;
+ _boxRepositories = boxRepositories;
+ _mapper = mapper;
+ _securityGenerateRecordRepositories = securityGenerateRecordRepositories;
+ _transactionRepositories = transactionRepositories;
+ _boxService = boxService;
+ _erpService = erpService;
+ _sGenerateRecordRepositories = sGenerateRecordRepositories;
+ _serialNumbersRepositories = serialNumbersRepositories;
+ _securityNumbersRepositories = securityNumbersRepositories;
+ }
+ [HttpGet]
+ [Route("Get")]
+ public async Task Get()
+ {
+ //await GetFSer();
+
+ //Dictionary dic = new Dictionary();
+ //dic.Add("ABCD", "1111");
+ //dic.Add("ABCE", "2222");
+ //dic.Add("ABCF", "3333");
+ //dic.Add("BCDD", "4444");
+ //var v = from d in dic where d.Value.Equals("2222") select d;
+
+ //var b = v.Select(s => s.Key).ToList();
+
+ //await _materialService.SyncBar();
+
+ //await GetSer();
+
+ //await GetSer();
+ //GetBox();
+ //await GetBox();
+ //string msg = "o_sdf";
+ //string s = msg.Substring(0, 2);
+ //string s2 = msg.Substring(2, msg.Length-2);
+
+ //var supplier_result = await _erpService.BillQueryForSupplier();
+
+ //DateTime begin = DateTime.Now.AddDays(-1);
+ //begin = begin.AddHours(-1);
+ //WmsBoxRequest request = new WmsBoxRequest(begin, DateTime.Now);
+ //var b = await _boxService.GetCartonListAsync(request);
+
+ // List ids = new List();
+ // ids.Add(1);ids.Add(2);
+ // var bList = await _boxRepositories.GetEntityList(ids);
+ // foreach(var b in bList)
+ // {
+ // //var d= b.Details.FirstOrDefault(f=>f.MaterialNumber=="1");
+ // // d.Qty = 2;
+ // if (b.Id == 1)
+ // {
+ // var d = b.Details.FirstOrDefault(f => f.MaterialNumber == "1");
+ // d.Qty = 10;
+ // b.Details.Add(new BoxDetails()
+ // {
+ // MaterialNumber = "3",
+ // Qty = 3
+ // });
+ // }else
+ // {
+ // var d= b.Details.FirstOrDefault(f=>f.MaterialNumber=="2");
+ // b.Details.Remove(d);
+ // }
+ // }
+ //var s= await _boxRepositories.EditEntityList(bList);
+
+
+ //鎻愪氦浜嬪姟
+ // var isSuccess = _transactionRepositories.CommitTransaction(true, _transaction);
+ //var b=await _boxRepositories.Get(1);
+
+
+
+ //var c=_mapper.Map(b);
+ //string exclude = "WXYZ";
+ //int? FLength = 9;
+ //for (int i = 1; i < 100; i++)
+ //{
+ // var bc = Radix.ConvertRadix36((ulong)i, exclude.ToCharArray()).PadLeft(FLength ?? 0, '0');
+ // Console.WriteLine($"闃蹭吉鐮亄i} : {bc}");
+ //}
+ //var b = await _boxRepositories.Get(1);
+ //GenerateSerialNumberRequest r = new GenerateSerialNumberRequest();
+ //r.OrgCode = "101";
+ //r.Details = new List();
+ ////r.Details.Add(new GenerateSerialNumberInfoRequest()
+ ////{
+ //// MaterialId = 260845,
+ //// MaterialNumber = "AS-005-000-002",
+ //// Number = 10
+ ////});
+ //r.Details.Add(new GenerateSerialNumberInfoRequest()
+ //{
+ // IdConvertBar = "",
+ // MaterialNumber = "G01-12-005834",
+ // Number = 3
+ //});
+ //await _serialNumberService.Generate(r, null);
+
+ // await _materialService.SyncNewMaterials();
+ //var s= await _repositories.GetList(new Core.Dto.FileDownManagerRequest(), 0);
+ return Result.ReSuccess();
+ }
+
+ private async Task GetBox()
+ {
+ string[] arr = System.IO.File.ReadAllLines("E:\\1\\x.txt");
+ var sList = GetS();
+ //var sList = new List();
+ List boxs = new List();
+ int i = 0;
+ foreach (string str in arr)
+ {
+ i++;
+ Console.WriteLine("鎿嶄綔鏉℃暟:" + i);
+ var strarr = str.Split('\t');
+ if (strarr[3] == "NULL")
+ {
+ Box box = new Box()
+ {
+ CompanyId = 1,
+ Id = Convert.ToInt32(strarr[2].Replace("CTN", "")),
+ BoxBillNo = strarr[2],
+ OrgCode = strarr[0].Replace("-", ""),
+ SupplierCode = strarr[1].Replace("-", ""),
+ CreateTime = strarr[6] != "-" ? Convert.ToDateTime(strarr[6]) : DateTime.Now
+ };
+ if (string.IsNullOrEmpty(box.OrgCode) && string.IsNullOrEmpty(box.SupplierCode))
+ box.OrgCode = "101";
+ boxs.Add(box);
+ }
+ else
+ {
+ var box = boxs.FirstOrDefault(w => w.BoxBillNo.Equals(strarr[2]));
+ if (box == null)
+ {
+ box = new Box()
+ {
+ CompanyId = 1,
+ Id = Convert.ToInt32(strarr[2].Replace("CTN", "")),
+ BoxBillNo = strarr[2],
+ OrgCode = strarr[0].Replace("-", ""),
+ SupplierCode = strarr[1].Replace("-", ""),
+ CreateTime = strarr[6] != "-" ? Convert.ToDateTime(strarr[6]) : DateTime.Now,
+ CartonBeginTime = strarr[7] != "-" ? Convert.ToDateTime(strarr[7]) : null,
+ CartonEndTime = strarr[8] != "-" ? Convert.ToDateTime(strarr[8]) : null,
+ Status = strarr[8] != "-" ? BoxStatus.Complete : BoxStatus.NoComplete,
+ PrintNumber = Convert.ToInt32(strarr[10])
+ };
+ if (string.IsNullOrEmpty(box.OrgCode) && string.IsNullOrEmpty(box.SupplierCode))
+ box.OrgCode = "101";
+
+ var sers = sList.Where(w => w.BoxId == box.Id && w.MaterialNumber == strarr[3]).Select(s => s.SerialNumber).ToList();
+
+ box.Details.Add(new BoxDetails()
+ {
+ MaterialNumber = strarr[3],
+ Qty = Convert.ToInt32(strarr[4]),
+ SerialNumbers = sers
+ });
+ boxs.Add(box);
+ }
+ else
+ {
+ var sers = sList.Where(w => w.BoxId == box.Id && w.MaterialNumber == strarr[3]).Select(s => s.SerialNumber).ToList();
+
+ box.Details.Add(new BoxDetails()
+ {
+ MaterialNumber = strarr[3],
+ Qty = Convert.ToInt32(strarr[4]),
+ SerialNumbers = sers
+ });
+ }
+ }
+ }
+ var lis = boxs.GroupBy(g => new { g.OrgCode, g.SupplierCode }).Select(s => s.Key).ToList();
+
+ var c = boxs.Where(w => w.CreateTime > DateTime.Now.AddHours(-1)).Count();
+ var c1 = boxs.Where(w => w.Status == BoxStatus.Complete).Count();
+ var c2 = boxs.Where(w => w.Status == BoxStatus.NoComplete).Count();
+
+ var res = await _boxRepositories.AddRange(boxs);
+ }
+
+ private List GetS()
+ {
+ List serialNumbers = new List();
+
+ string[] arr_t = System.IO.File.ReadAllLines("E:\\1\\t.txt");
+ long number = 200000000;
+ foreach (var str in arr_t)
+ {
+ var strarr = str.Split('\t');
+ try
+ {
+ number = number - 1;
+ var s = new SerialNumbers();
+
+ s.Id = number;
+ s.SerialNumber = strarr[1];
+ s.OrgCode = strarr[2].Replace("-", "");
+ s.SupplierCode = strarr[3].Replace("-", "");
+ s.MaterialNumber = strarr[5];
+ if (string.IsNullOrEmpty(strarr[6]) || strarr[6] == "-")
+ s.BoxId = 0;
+ else
+ s.BoxId = Convert.ToInt32(strarr[6].ToUpper().Replace("CTN", ""));
+ if (string.IsNullOrEmpty(strarr[6]) || strarr[6] == "-")
+ s.IsUse = false;
+ else
+ s.IsUse = true;
+ if (!string.IsNullOrEmpty(strarr[7]) && strarr[7] != "-")
+ s.CreateTime = Convert.ToDateTime(strarr[7]);
+ if (!string.IsNullOrEmpty(strarr[8]) && strarr[8] != "-")
+ s.CompleteCartonTime = Convert.ToDateTime(strarr[8]);
+ s.NumberCode = "";
+
+ if (string.IsNullOrEmpty(s.OrgCode) && string.IsNullOrEmpty(s.SupplierCode))
+ s.OrgCode = "101";
+ serialNumbers.Add(s);
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine("鏁版嵁澶勭悊閿欒:" + str);
+ }
+ }
+ return serialNumbers;
+ //int couont_1 = serialNumbers.Where(w => w.OrgCode == "" && w.SupplierCode == "").Count();
+ //int couont_2 = serialNumbers.GroupBy(g =>new { g.MaterialNumber ,g.OrgCode,g.SupplierCode}).Count();
+
+ //var lis= serialNumbers.GroupBy(g => new { g.OrgCode, g.SupplierCode }).Select(s=>s.Key).ToList();
+ }
+
+ private List GetE()
+ {
+ List serialNumbers = new List();
+
+ string[] arr_t = System.IO.File.ReadAllLines("E:\\1\\e.txt");
+ long number = 199000000;
+ foreach (var str in arr_t)
+ {
+ var strarr = str.Split('\t');
+ try
+ {
+ number = number - 1;
+ var s = new SerialNumbers();
+
+ s.Id = number;
+ s.SerialNumber = strarr[5];
+ s.OrgCode = "101";
+ s.SupplierCode = "";
+ s.MaterialNumber = strarr[0];
+ s.BoxId = 0;
+ s.IsUse = false;
+ s.CreateTime = Convert.ToDateTime("2023-09-06 00:00:05");
+ s.NumberCode = "";
+ serialNumbers.Add(s);
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine("鏁版嵁澶勭悊閿欒:" + str);
+ }
+ }
+ return serialNumbers;
+ //int couont_1 = serialNumbers.Where(w => w.OrgCode == "" && w.SupplierCode == "").Count();
+ //int couont_2 = serialNumbers.GroupBy(g =>new { g.MaterialNumber ,g.OrgCode,g.SupplierCode}).Count();
+
+ //var lis= serialNumbers.GroupBy(g => new { g.OrgCode, g.SupplierCode }).Select(s=>s.Key).ToList();
+ }
+
+
+ private async Task GetSer()
+ {
+ IDbContextTransaction _transaction = _transactionRepositories.GetTransaction();
+
+ Result res_Rollback = Result.ReSuccess();
+ bool isSuccess = true;
+
+ // var sList = GetS();
+ var sList = GetE();
+ var mList = sList.GroupBy(g => new { g.MaterialNumber, g.OrgCode, g.SupplierCode }).Select(s => s.Key).ToList();
+ int numberid = 2620;
+ List records = new List();
+ int bid = 0;
+ foreach (var m in mList)
+ {
+ bid++;
+ Console.WriteLine($"澶勭悊鐢熸垚璁″垝鏁版嵁{bid}");
+
+ var scountList = sList.Where(w => w.MaterialNumber == m.MaterialNumber && w.OrgCode == m.OrgCode && w.SupplierCode == m.SupplierCode).ToList();
+ var scount = scountList.Count();
+ SerialNumberGenerateRecord record = new SerialNumberGenerateRecord()
+ {
+ Id = numberid,
+ MaterialNumber = m.MaterialNumber,
+ OrgCode = m.OrgCode,
+ SupplierCode = m.SupplierCode,
+ CompanyId = 1,
+ IsGenerateComplete = true,
+ Number = scount,
+ GenerateCompleteTime = Convert.ToDateTime("2023-09-06 00:00:05"),
+ CreateTime = Convert.ToDateTime("2023-09-06 00:00:05")
+ };
+ records.Add(record);
+ scountList.ForEach(f => f.GenerateRecordId = numberid);
+ numberid++;
+ }
+ var cs = sList.Where(w => w.GenerateRecordId == 0).Count();
+ try
+ {
+ if (res_Rollback.IsSuccess)
+ {
+ var res = await _sGenerateRecordRepositories.AddRange(records, false);
+ if (!res) res_Rollback = Result.ReFailure(ResultCodes.DateWriteError);
+ }
+ if (res_Rollback.IsSuccess)
+ {
+ for (int i = 1; i <= 7; i++)
+ {
+ Console.WriteLine($"姝e湪澶勭悊绗瑊i}椤垫暟鎹");
+ var sis = sList.Skip((i - 1) * 100000).Take(100000).ToList();
+ if (sis.Count() <= 0) break;
+ var res = await _serialNumbersRepositories.AddRange(sis, false);
+ if (!res)
+ {
+ res_Rollback = Result.ReFailure(ResultCodes.DateWriteError);
+ break;
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+
+ throw ex;
+ }
+
+ //鎻愪氦浜嬪姟An error occurred while saving the entity changes. See the inner exception for details.鈥
+
+ isSuccess = _transactionRepositories.CommitTransaction(res_Rollback.IsSuccess ? false : true, _transaction);
+ }
+
+
+
+ private List GetFE()
+ {
+ List serialNumbers = new List();
+
+ string[] arr_t = System.IO.File.ReadAllLines("E:\\1\\b6.txt");
+
+ foreach (var str in arr_t)
+ {
+ var strarr = str.Split('\t');
+ try
+ {
+ var s = new SecurityNumbers();
+
+ s.SecurityNumber = strarr[3];
+ s.OrgCode = "101";
+ s.SupplierCode = "";
+ s.MaterialNumber = strarr[0];
+ s.CreateTime = Convert.ToDateTime("2024-06-13 12:10:00");
+ serialNumbers.Add(s);
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine("鏁版嵁澶勭悊閿欒:" + str);
+ }
+ }
+ return serialNumbers;
+ //int couont_1 = serialNumbers.Where(w => w.OrgCode == "" && w.SupplierCode == "").Count();
+ //int couont_2 = serialNumbers.GroupBy(g =>new { g.MaterialNumber ,g.OrgCode,g.SupplierCode}).Count();
+
+ //var lis= serialNumbers.GroupBy(g => new { g.OrgCode, g.SupplierCode }).Select(s=>s.Key).ToList();
+ }
+
+
+ private async Task GetFSer()
+ {
+ IDbContextTransaction _transaction = _transactionRepositories.GetTransaction();
+
+ Result res_Rollback = Result.ReSuccess();
+ bool isSuccess = true;
+
+ // var sList = GetS();
+ var sList = GetFE();
+ var mList = sList.GroupBy(g => new { g.MaterialNumber }).Select(s => s.Key).ToList();
+ int numberid = 30872924;
+ List records = new List();
+ int bid = 0;
+ foreach (var m in mList)
+ {
+ bid++;
+ Console.WriteLine($"澶勭悊鐢熸垚璁″垝鏁版嵁{bid}");
+
+ var scountList = sList.Where(w => w.MaterialNumber == m.MaterialNumber).ToList();
+ var scount = scountList.Count();
+ SecurityNumberGenerateRecord record = new SecurityNumberGenerateRecord()
+ {
+ Id = numberid,
+ LotNumber = "",
+ MaterialNumber = m.MaterialNumber,
+ OrgCode = "101",
+ SupplierCode = "",
+ CompanyId = 1,
+ IsGenerateComplete = true,
+ Number = scount,
+ GenerateCompleteTime = Convert.ToDateTime("2024-06-13 12:15:00"),
+ CreateTime = Convert.ToDateTime("2024-06-13 12:10:00")
+ };
+ records.Add(record);
+ scountList.ForEach(f => f.GenerateRecordId = numberid);
+ numberid++;
+ }
+ var cs = sList.Where(w => w.GenerateRecordId == 0).Count();
+ try
+ {
+ if (res_Rollback.IsSuccess)
+ {
+ var res = await _securityGenerateRecordRepositories.AddRange(records, false);
+ if (!res) res_Rollback = Result.ReFailure(ResultCodes.DateWriteError);
+ }
+ if (res_Rollback.IsSuccess)
+ {
+ for (int i = 1; i <= 7; i++)
+ {
+ Console.WriteLine($"姝e湪澶勭悊绗瑊i}椤垫暟鎹");
+ var sis = sList.Skip((i - 1) * 100000).Take(100000).ToList();
+ if (sis.Count() <= 0) break;
+ var res = await _securityNumbersRepositories.AddRange(sis, false);
+ if (!res)
+ {
+ res_Rollback = Result.ReFailure(ResultCodes.DateWriteError);
+ break;
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+
+ throw ex;
+ }
+
+ //鎻愪氦浜嬪姟An error occurred while saving the entity changes. See the inner exception for details.鈥
+
+ isSuccess = _transactionRepositories.CommitTransaction(res_Rollback.IsSuccess ? false : true, _transaction);
+ }
+ }
+}
diff --git a/src/BarCode.Web.Api/Controllers/WmsBoxController.cs b/src/BarCode.Web.Api/Controllers/WmsBoxController.cs
new file mode 100644
index 0000000..0e2c118
--- /dev/null
+++ b/src/BarCode.Web.Api/Controllers/WmsBoxController.cs
@@ -0,0 +1,150 @@
+锘縰sing AutoMapper;
+using BarCode.Web.Domain.Infrastructure;
+using BarCode.Web.Domain.IService.Public;
+using BarCode.Web.Domain.IService;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using BarCode.Web.Core.Dto.Box;
+using BarCode.Web.Core.Internal.Results;
+using BarCode.Web.Domain.Values;
+using System.Text.RegularExpressions;
+using NPOI.SS.Formula.Functions;
+using System.Collections.Generic;
+using Newtonsoft.Json;
+using BarCode.Web.Core.Dto.SerialNumbers;
+using BarCode.Web.Domain.Services.Public;
+using BarCode.Web.Domain.Values.Single;
+using System.ComponentModel.Design;
+
+namespace BarCode.Web.Api.Controllers
+{
+ [Route("api/[controller]")]
+ [ApiController]
+ public class WmsBoxController : ControllerBase
+ {
+ private readonly IBoxRepositories _boxRepositories;
+ private readonly IMapper _mapper;
+ private readonly ILoginService _loginService;
+ private readonly IBoxService _boxService;
+ private readonly ILogger _logger;
+ private readonly ISerialNumbersRepositories _serialNumbersRepositories;
+ private readonly ISingleDataService _singleDataService;
+ public WmsBoxController(IMapper mapper, ILoginService loginService, IBoxRepositories boxRepositories,
+ IBoxService boxService, ILogger logger,
+ ISerialNumbersRepositories serialNumbersRepositories, ISingleDataService singleDataService)
+ {
+ _boxRepositories = boxRepositories;
+ _mapper = mapper;
+ _loginService = loginService;
+ _boxService = boxService;
+ _logger = logger;
+ _serialNumbersRepositories = serialNumbersRepositories;
+ _singleDataService = singleDataService;
+ }
+
+ ///
+ /// Wms鑾峰彇绠变俊鎭-鍒楄〃
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("GetList")]
+ public async Task GetList(WmsBoxRequest dto)
+ {
+ _logger.LogInformation($"璇锋眰娑堟伅:{JsonConvert.SerializeObject(dto)}");
+ List list = new List();
+ int count = 0;
+ try
+ {
+ (list, count) = await _boxService.GetCartonListAsync(dto);
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError($"wms绯荤粺鑾峰彇绠变俊鎭紓甯:{ex.Message}");
+ return new OpsReponse()
+ {
+ succeeded = false
+ };
+ }
+ OpsInfo info = new OpsInfo()
+ {
+ date = JsonConvert.SerializeObject(list)
+ };
+ OpsReponse reponse = new OpsReponse()
+ {
+ succeeded = true,
+ data = info
+ };
+ return reponse;
+ }
+ ///
+ /// Wms鑾峰彇搴忓垪鍙蜂俊鎭
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("GetSerialNumber")]
+ public async Task> GetSerialNumber(SerialNumbersWmsRequest dto)
+ {
+ _logger.LogInformation($"wms鑾峰彇搴忓垪鐮:{JsonConvert.SerializeObject(dto)}");
+
+ var entity = await _serialNumbersRepositories.GetEntityWms(dto.SerialNumber);
+ if (entity == null) return Result.ReFailure(ResultCodes.SerialNumberNoData);
+ if (entity.BoxId > 0)
+ return Result.ReFailure(ResultCodes.SerialNumberBindBox);
+ if (entity.IsUse == true)
+ return Result.ReFailure(ResultCodes.SerialNumberIsUse);
+ var response = new SerialNumbersWmsResponse()
+ {
+ SerialNumber = entity.SerialNumber.Equals(dto.SerialNumber) ? entity.SerialNumber : entity.NumberCode,
+ MaterialNumber = entity.MaterialNumber,
+ CreateTime = entity.CreateTime,
+ Creator = _singleDataService.GetSingleData(SingleAction.Users, 1, entity.CreatorId)
+ };
+ //鎶婃煡璇㈠埌鐨勫簭鍒楃爜淇敼鎴愪娇鐢
+ entity.WmsGet(dto.SerialNumber);
+ var list = new List();
+ list.Add(entity);
+ var res = await _serialNumbersRepositories.EditEntityList(list);
+ if (!res) return Result.ReFailure(ResultCodes.DateWriteError);
+
+ _logger.LogInformation($"wms鑾峰彇搴忓垪鐮佽繑鍥炲簭鍒楃爜淇℃伅:{JsonConvert.SerializeObject(response)}");
+
+ return Result.ReSuccess(response);
+ }
+
+ ///
+ /// 鑾峰彇搴忓垪鍙蜂俊鎭
+ ///
+ /// 搴忓垪鍙
+ ///
+ [HttpGet]
+ [Route("Get/{serialNumber}")]
+ public async Task> Get([FromRoute] string serialNumber)
+ {
+ if (string.IsNullOrEmpty(serialNumber))
+ return Result.ReFailure(ResultCodes.SerialNumbersNoData);
+
+ var serial = await _serialNumbersRepositories.GetExternal(serialNumber);
+ if (serial == null) return Result.ReFailure(ResultCodes.SerialNumbersNoData);
+ return Result.ReSuccess(serial);
+ }
+ }
+
+ public class OpsInfo
+ {
+ public int code { get; set; }
+ public string message { get; set; }
+ public string date { get; set; }
+ public string token { get; set; }
+ }
+ public class OpsReponse
+ {
+ public int statusCode { get; set; }
+ public bool succeeded { get; set; }
+ public string errors { get; set; }
+ public string extras { get; set; }
+
+ public OpsInfo data { get; set; }
+ }
+}
diff --git a/src/BarCode.Web.Api/CustomResultFilter .cs b/src/BarCode.Web.Api/CustomResultFilter .cs
new file mode 100644
index 0000000..a4f711c
--- /dev/null
+++ b/src/BarCode.Web.Api/CustomResultFilter .cs
@@ -0,0 +1,40 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.Filters;
+using BarCode.Web.Core.Internal.Results;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace BarCode.Web.Api
+{
+ ///
+ /// 閿欒鎷︽埅
+ ///
+ public class CustomResultFilter : ActionFilterAttribute
+ {
+ public override void OnResultExecuting(ResultExecutingContext context)
+ {
+ if (!context.ModelState.IsValid)
+ {
+ var result = new Result();
+
+ foreach (var item in context.ModelState.Values)
+ {
+ foreach (var error in item.Errors)
+ {
+ result.Message += error.ErrorMessage + ",";
+ result.Status = 4204004;
+ }
+ }
+ result.Message = result.Message.TrimEnd(',');
+ context.Result = new JsonResult(result);
+ }
+ }
+
+ public override void OnActionExecuting(ActionExecutingContext context)
+ {
+ }
+
+ }
+}
diff --git a/src/BarCode.Web.Api/Program.cs b/src/BarCode.Web.Api/Program.cs
new file mode 100644
index 0000000..43bda42
--- /dev/null
+++ b/src/BarCode.Web.Api/Program.cs
@@ -0,0 +1,60 @@
+using BarCode.Web.Api;
+using BarCode.Web.Domain.Options;
+using BarCode.Web.Repositories.DependencyInjection;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.OpenApi.Models;
+using Swashbuckle.AspNetCore.SwaggerUI;
+using System.Configuration;
+using System.IdentityModel.Tokens.Jwt;
+
+var builder = WebApplication.CreateBuilder(args);
+
+// Add services to the container.
+JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
+var option = builder.Configuration.GetSection("AppOptions").Get();
+var option_soa = builder.Configuration.GetSection("SoaOptions").Get();
+
+var isDevelopment = builder.Configuration.GetSection("IsDevelopment").Get();
+var serverVersion = new MySqlServerVersion(new Version(8, 0, 18));
+//数据库注入
+builder.Services.AddApp(builder.Configuration, isDevelopment, builder =>
+{
+ builder.AddDbContext(
+ opt => { opt.UseMySql(option.DBConnectionString, serverVersion); });
+});
+
+
+builder.Services.AddControllers(options =>
+{
+ options.Filters.Add();
+});
+
+var app = builder.Build();
+
+// Configure the HTTP request pipeline.
+// Swagger中间件
+if (isDevelopment)
+{
+ app.UseSwagger();
+ // SwaggerUI
+ app.UseSwaggerUI(c =>
+ {
+ c.SwaggerEndpoint($"/swagger/v1/swagger.json", "BarCode-Api");
+ c.RoutePrefix = string.Empty;
+ c.DocExpansion(DocExpansion.None);
+ });
+}
+
+app.UseHttpsRedirection();
+app.UseStaticFiles();
+app.UseCors("AllowAllOrigin");
+//统一异常处理中间件
+app.UseMiddleware();
+app.UseMiddleware();
+
+//app.UseAuthorization();
+
+app.MapControllers();
+
+app.Run();
diff --git a/src/BarCode.Web.Api/Properties/launchSettings.json b/src/BarCode.Web.Api/Properties/launchSettings.json
new file mode 100644
index 0000000..703b688
--- /dev/null
+++ b/src/BarCode.Web.Api/Properties/launchSettings.json
@@ -0,0 +1,50 @@
+{
+ "profiles": {
+ "http": {
+ "commandName": "Project",
+ "launchBrowser": true,
+ "launchUrl": "weatherforecast",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ },
+ "dotnetRunMessages": true,
+ "applicationUrl": "http://localhost:5050"
+ },
+ "IIS Express": {
+ "commandName": "IISExpress",
+ "launchBrowser": true,
+ "launchUrl": "weatherforecast",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ },
+ "Container (Dockerfile)": {
+ "commandName": "Docker",
+ "launchBrowser": true,
+ "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/weatherforecast",
+ "environmentVariables": {
+ "ASPNETCORE_HTTP_PORTS": "8080"
+ },
+ "publishAllPorts": true
+ },
+ "WSL": {
+ "commandName": "WSL2",
+ "launchBrowser": true,
+ "launchUrl": "http://localhost:5050/weatherforecast",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development",
+ "ASPNETCORE_URLS": "http://localhost:5050"
+ },
+ "distributionName": ""
+ }
+ },
+ "$schema": "http://json.schemastore.org/launchsettings.json",
+ "iisSettings": {
+ "windowsAuthentication": false,
+ "anonymousAuthentication": true,
+ "iisExpress": {
+ "applicationUrl": "http://localhost:56505",
+ "sslPort": 0
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/BarCode.Web.Api/appsettings.Development.json b/src/BarCode.Web.Api/appsettings.Development.json
new file mode 100644
index 0000000..0c208ae
--- /dev/null
+++ b/src/BarCode.Web.Api/appsettings.Development.json
@@ -0,0 +1,8 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ }
+}
diff --git a/src/BarCode.Web.Api/appsettings.json b/src/BarCode.Web.Api/appsettings.json
new file mode 100644
index 0000000..0a82c14
--- /dev/null
+++ b/src/BarCode.Web.Api/appsettings.json
@@ -0,0 +1,100 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ },
+ "AllowedHosts": "*", //鍏佽鎵鏈変富鏈
+ "IsDevelopment": true, //鏄惁鏄紑鍙戞ā寮
+ "AllowedCores": "localhost,http://localhost:8080,http://192.168.1.188:8080",//璺ㄥ煙
+ "AppOptions": {
+ "DBConnectionString": "Server=rm-wz9215skklas0287pwo.mysql.rds.aliyuncs.com; Database=test_barcode_db;User Id=orico_erp;password=Orico2023;port=3306;CharSet=gb2312;Connect Timeout=150;", //鏁版嵁搴撹繛鎺ュ湴鍧
+ "RedisConnectionString": "47.106.232.90:6379,password=orico.2020,DefaultDatabase=7", //redis杩炴帴鍦板潃
+ "RedisIpRateLimitingConnectionString": "47.110.156.96:16379,password=123456,DefaultDatabase=3", //redis杩炴帴鍦板潃
+ "SingleBaseUrl": "http://127.0.0.1:8066/api", //鍗曠偣鏈嶅姟杩炴帴鍦板潃
+ "DBType": "Mysql", //鏁版嵁搴撶被鍨
+ "CompanyId": 1, //鍏徃Id
+ "AllowCache": false, //鍏佽缂撳瓨
+ "RedisDirectory": "Test" //redis鏍囪
+ },
+ "SoaOptions": {
+ "ModuleID": 30,//绯荤粺鍦ㄥ崟鐐圭郴缁熺殑鏍囪
+ "AdminUser": [ 1 ],//绠$悊鍛樼敤鎴
+ "Url_V3": "https://dev.uc.v3.f2b211.com", //姝e紡http://uc.v3.f2b211.com //鍗曠偣绯荤粺鐨勮繛鎺ュ湴鍧v3鐗
+ "Url": "http://dev.uc.f2b211.com",//鍗曠偣绯荤粺鐨勮繛鎺ュ湴鍧(鑰佺増 搴旇娌$敤浜)
+ "AppId": "100829382855098368",//绯荤粺Id
+ "AppSecret": "d0ebed53e67ec9b0be4e23918bb11792",//绯荤粺鎺堟潈
+ "PublicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs7b9r5qLgy4R/caQi2ZwfCULhOOZsfyBwlhqL0Y/nyBI/bFwc0+iIVHp/gq78PYXAUOplQC5YnaLMHsAV4y3pfGPiA7jD5ZmnoEJq1MLIDBCbm7H8JaBdW4b48w7afccTgnkqFQP3vs7JS8VSTkOEO32lyX6LYjP6o32juUsDu4VKZH922BHvaNC0ewt1dOT4v6XHiGPOyJs3dW86yqhCWRDRGZjUPMZDlZfQx1qF3thMc4DObgKWYVS5RWsKvDg5DwbQznUuhneCABHpqZ0ICtkq187K29dHmk8KmCNtsHM8+zwP+j1GU9/zVT4XVw+oGJcO6II0ZTWkA/ESSUTmQIDAQAB",//鍏挜
+ "PrivateKey": "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCztv2vmouDLhH9xpCLZnB8JQuE45mx/IHCWGovRj+fIEj9sXBzT6IhUen+Crvw9hcBQ6mVALlidoswewBXjLel8Y+IDuMPlmaegQmrUwsgMEJubsfwloF1bhvjzDtp9xxOCeSoVA/e+zslLxVJOQ4Q7faXJfotiM/qjfaO5SwO7hUpkf3bYEe9o0LR7C3V05Pi/pceIY87Imzd1bzrKqEJZENEZmNQ8xkOVl9DHWoXe2ExzgM5uApZhVLlFawq8ODkPBtDOdS6Gd4IAEempnQgK2SrXzsrb10eaTwqYI22wczz7PA/6PUZT3/NVPhdXD6gYlw7ogjRlNaQD8RJJROZAgMBAAECggEABeEWq4gCyGfZbtPwJp9TTrxnhBFuFcSM+i6qSqGhszL7MFF9vEf+pdhoL0dqnpduaTwtcBJ1/iKiqxNbD4Iq/+LHL0xNYVUqRkUya8hrtMHfan11TQmfcpgHkYw85VqQMn1gXaFiY4kUhkLkD2EudJ9UUd2MMbEoHCRIzKPyrQpO3We/4iwYFh96DW+iSzxRuqjtWE4+rnWaQECPzeOu7TMaktnccqw+dPM49EXPmtGCCqfSwLAAYEewL0q4dcaLgFL4qugABsTM7NQaS8AgE5so2RErcpeGSIy0s1aNgSPmdhJ8Msc+AMVc6xYpkylYYmmSNMKVnnQgVhAJsIrmAQKBgQDSFh/V52LffsYV69ePtgMnNlp+fGeYb1zqSAREKJlPjEB24BTPbbUhPQSrdi9ZFa0W93lEPTPyokWx8Rj/1GnHd5k9QPkPzIejO3ljuCtEXBn0Y+4S24T1gMEgGpiMgOQdmTI1xQ2btifvLFsu+63TDPeYiXJclTjFMtGGHMHw1QKBgQDa/aQmxLV+5/2hzf+ijsklJ4w3DTzzXl1OTdcyQia2oxs6fJ/9YEs0zzVLvcs3JA+evuJtuzteXmexUEv8hH9OGMJFbSiJ2ePwGNJ1JKPN4zRAA2FVtrmVdS4rVwjb/kuVU+4KFxpM98R/YZAnymhD9obepD23kxOdhVFgff0ZtQKBgQCqwBSr9F6mLBGvq3oOce7qJgEzIMXKXWj1egcNprnEr8eNVt9TIGXBWCi9e1dMXpPKQOWtEtlv8XgYAk9BT1GSL6C66l4D+0aa4zHsXLm92+W0fqv3Y7gTGczd3P/z4qaFcAghL8G5tzmJ6VFLRH+pM7bhoYTzvszfakhlamYu6QKBgQCYeoMRe2XkNyQixYx5Y3IqrJ60tkL6MXpGS2zLUcQi5u7OinfbtHCpFJ3HXx9gBXvazI5cWUG9M35/t6kw6hC6EAM01Ayl71EGnEHtztU/RjPbXn8nb1NI/Y5oHvHMPAPktcvIus1VSi9HgmcdTZHLwJun6jQO3hmKVImU5iSVAQKBgQC2xZ9KkzAui1YSadtD6jNtBzdXgEQ0K2MziRBlVslFfxmlJ/0X9r4lIw4RJJmsCS6To9n1h0DGK9uveVwE+oGPLD95ISala+OYj9ewiBnZwbkDD201q0Ui2ji4PCZa462ZNKJw/G8vQ5oc/zu2EBER/85Y5h+RtJfFs3b5TKtNxA=="//绉侀挜
+ },
+ "ErpOptions": {
+ "EndpointAddress": "http://erp.orico.com.cn/k3cloud/ERPGW.asmx",//閲戣澏杩炴帴鍦板潃
+ "UserName": "mes",//閲戣澏璐︽埛鍚
+ "Password": "A1B2C3Dh.",//閲戣澏瀵嗙爜
+ "ErpId": "ce20210909"//閲戣澏Id
+ },
+ "WmsOptions": {
+ "Url": "https://api.wms.test.f2b211.com/" //WMS绯荤粺鐨勮繛鎺ュ湴鍧
+ },
+ "Qiniu": {
+ "AccessKey": "dOsTum4a5qvhPTBbZRPX0pIOU7PZWRX7htKjztms",//涓冪墰浜戣处鍙
+ "SecretKey": "KFxsGbnErkALFfeGdMa8QWTdodJbamMX0iznLe-q",//涓冪墰浜戞巿鏉
+ "Bucket": "orico-wms-test", //姝e紡 orico-wms //涓冪墰浜戞枃浠朵笅鐨勬枃浠跺悕
+ "Url": "https://wmstestfile.f2b211.com/" //娴嬭瘯 https://wmstestfile.f2b211.com/ 姝e紡 https://wmsfile.f2b211.com/ //璁块棶涓冪墰浜戞枃浠剁殑閾炬帴鍦板潃
+ }, //瀹氭椂浠诲姟閰嶇疆椤
+ "QuartzJobOptions": {
+ //瀛樺偍绫诲瀷:閿拰鍊
+ "JobStoreTypeKey": "quartz.jobStore.type",
+ "JobStoreTypeValue": "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz",
+
+ //鏁版嵁搴撻┍鍔ㄧ被鍨-杩欓噷鏄痬ysql:閿拰鍊
+ "JobStoreDriverDelegateTypeKey": "quartz.jobStore.driverDelegateType",
+ "JobStoreDriverDelegateTypeValue": "Quartz.Impl.AdoJobStore.MySQLDelegate, Quartz",
+
+ //鏁版嵁搴撹〃鍚嶅墠缂:閿拰鍊
+ "JobStoreTablePrefixKey": "quartz.jobStore.tablePrefix",
+ "JobStoreTablePrefixValue": "QRTZ_",
+
+ //鏁版嵁婧愮殑鍚嶇О:閿拰鍊
+ "JobStoreDataSourceKey": "quartz.jobStore.dataSource",
+ "JobStoreDataSourceValue": "myDS",
+
+ //杩炴帴瀛楃涓:閿拰鍊
+ "JobStoreConnectionStringKey": "quartz.dataSource.myDS.connectionString",
+ "JobStoreConnectionStringValue": "Server=rm-wz9215skklas0287pwo.mysql.rds.aliyuncs.com; Database=test_barcode_db;User Id=orico_erp;password=Orico2023;port=3306;CharSet=gb2312;Connect Timeout=150;",
+
+ //mysql鎻愪緵鍣:閿拰鍊
+ "JobStoreProviderKey": "quartz.dataSource.myDS.provider",
+ "JobStoreProviderValue": "MySql",
+
+ //鍑犵偣寮濮嬫墽琛
+ "JobStartHour": [ 15, 11, 1, 0, 0, 10 ],
+ //鍑犲垎閽熷紑濮嬫墽琛
+ "JobStartMinute": [ 30, 39, 30, 20, 5, 5 ],
+
+ //鎵цCron琛ㄨ揪寮忥細鍙互鏄嚑灏忔椂or鍑犲垎閽無r鍑犵閽無r鍑犲ぉor鍑犲懆锛
+ "JobStartExpre": "0 0 * * * ?",
+ "JobStartExpreAmount": "0 50 23 * * ?",
+ "JobStartExpreSend": "0 0 12,16,20 * * ?",
+ "JobStartExpreMaterial": "0 30 23 * * ?",
+ "JobStartExpreCenerateData": "0 1 0 * * ?", //鍑屾櫒0鐐1鍒嗘墽琛
+
+ //a.鏄惁鍚敤闆嗙兢锛氶敭鍜屽
+ "JobStoreClusteredKey": "quartz.jobStore.clustered",
+ "JobStoreClusteredValue": true,
+
+ //b.闆嗙兢涓殑姣忎釜鑺傜偣閮藉繀椤绘湁涓涓敮涓鐨 instanceId
+ // 閫氳繃灏嗏淎UTO鈥濊缃负璇ュ睘鎬х殑鍊兼潵瀹屾垚
+ //澶囨敞锛歛灞炴у拰b灞炴ч厤濂椾娇鐢紱濡傛灉涓嶅紑鍚泦缇よ繖涓や釜灞炴у幓鎺
+ "JobStoreInstanceIdKey": "quartz.scheduler.instanceId",
+ "JobStoreInstanceIdValue": "AUTO",
+
+ //浠ヤ笅鍙互鑷畾涔夐厤缃
+ "QuartzJobKey": "OpsJob",
+ "QuartzJobValue": "OpsJobGroup",
+ "QuartzJobDescription": "OpsJob",
+ "QuartzTriggerIdentity": "OpsTrigger",
+ "QuartzTriggerDescription": "OpsJobTrigger"
+ }
+}
diff --git a/src/BarCode.Web.Api/wwwroot/BarCode.Web.Api.xml b/src/BarCode.Web.Api/wwwroot/BarCode.Web.Api.xml
new file mode 100644
index 0000000..7dcd7a8
--- /dev/null
+++ b/src/BarCode.Web.Api/wwwroot/BarCode.Web.Api.xml
@@ -0,0 +1,396 @@
+
+
+
+ BarCode.Web.Api
+
+
+
+
+ 绠卞瓙
+
+
+
+
+ 绠变俊鎭-鍒楄〃
+
+
+
+
+
+
+ 鐢熸垚绠辩爜
+
+
+
+
+
+
+ 瑁呯淇濆瓨
+
+
+
+
+
+
+ 鎵撳嵃
+
+
+
+
+
+
+ 鍒犻櫎
+
+
+
+
+
+
+ 娓呯┖瑁呯淇℃伅
+
+
+
+
+
+
+ 鏍规嵁绠卞彿鑾峰彇绠变俊鎭
+
+
+
+
+
+
+ 閲嶆柊瑁呯
+
+
+
+
+
+
+ 寮濮嬭绠
+
+
+
+
+
+
+ 绠卞敍-鎺ュ彛
+
+
+
+
+ 绠卞敍--鍒楄〃
+
+
+
+
+
+
+ 鐢熸垚
+
+
+
+
+
+
+ 鎵归噺鍒犻櫎
+
+
+
+
+
+
+ 鍓嶇璁板綍鏃ュ織
+
+
+
+
+ 鍓嶇璁板綍鏃ュ織
+
+
+
+
+
+
+ 鍓嶇璁板綍鏃ュ織
+
+
+
+
+
+
+ 鍓嶇璁板綍鏃ュ織(鏁扮粍)
+
+
+
+
+
+
+ 娑堟伅鏁扮粍
+
+
+
+
+ 娑堟伅鍐呭鏁扮粍
+
+
+
+
+ 涓婁紶涓嬭浇涓績
+
+
+
+
+ 鑾峰彇闇瑕佺殑鐘舵佸垪琛
+
+
+
+
+
+ 涓嬭浇瀵煎嚭鏂囦欢 鍒楄〃
+
+
+
+
+
+
+ 妯℃澘(鐢熸垚搴忓垪鐮)
+
+
+
+
+
+ 鐧诲綍鎺ュ彛
+
+
+
+
+ 鐧诲綍
+
+
+
+
+
+
+ 鐧诲綍-APP鍜屽皬绋嬪簭
+
+
+
+
+
+
+ 閫鍑虹櫥褰
+
+
+
+
+
+ PHP鍗曠偣閫鍑轰娇鐢
+
+
+
+
+
+ 鑿滃崟鍒楄〃
+
+
+
+
+
+ 鐗╂枡
+
+
+
+
+ 鍒锋柊鐗╂枡 69鏉$爜鎴杋d32杩涘埗
+
+ 鐗╂枡缂栫爜
+ 69 鏉$爜,id id32杩涘埗,other 鍚嶅瓧鍜岃鏍煎瀷鍙
+
+
+
+
+ 鑾峰彇搴忓垪鍙蜂俊鎭
+
+ 闃蹭吉鐮
+
+
+
+
+ 闃蹭吉鐮
+
+
+
+
+ 闃蹭吉鐮佺敓鎴愯褰曞垪琛
+
+
+
+
+
+
+ 闃蹭吉鐮佸垪琛
+
+
+
+
+
+
+ 闃蹭吉鐮佺敓鎴愯褰曢〉闈-涓嬭浇鏉$爜
+
+
+
+
+
+
+ 闃蹭吉鐮侀〉闈-鏉$爜涓嬭浇
+
+
+
+
+
+
+ 涓嬭浇(涓鑸悗绔唴閮ㄨ皟鐢)
+
+
+
+
+
+
+ 鐢熸垚搴忓垪鍙
+
+
+
+
+
+
+ 搴忓垪鍙
+
+
+
+
+ 搴忓垪鐮佺敓鎴愯褰曞垪琛
+
+
+
+
+
+
+ 搴忓垪鐮佸垪琛
+
+
+
+
+
+
+ 鏉$爜鐢熸垚璁板綍椤甸潰-涓嬭浇鏉$爜
+
+
+
+
+
+
+ 搴忓垪鐮侀〉闈-鏉$爜涓嬭浇
+
+
+
+
+
+
+ 鐢熸垚搴忓垪鍙
+
+
+
+
+
+
+ 鎵撳嵃
+
+
+
+
+
+
+ 涓嬭浇(涓鑸悗绔唴閮ㄨ皟鐢)
+
+
+
+
+
+
+ 鑾峰彇搴忓垪鍙蜂俊鎭
+
+ 绠盜d
+
+
+
+
+ 鑾峰彇搴忓垪鍙蜂俊鎭
+
+ 搴忓垪鍙
+ 缁勭粐鎴栦緵搴斿晢缂栫爜
+
+
+
+
+ 淇敼搴忓垪鐮佺墿鏂
+
+
+
+
+
+
+ 绯荤粺閰嶇疆
+
+
+
+
+ 鑾峰彇鐗╂枡锛涢氳繃瑙勬牸鍨嬪彿
+
+
+
+
+
+
+ 鑾峰彇渚涘簲鍟-erp鍩虹鏁版嵁
+ 浣跨敤code鍋氶敭
+
+ 渚涘簲鍟嗗悕瀛
+ 缁勭粐缂栫爜
+
+
+
+
+ 鑾峰彇缁勭粐-erp鍩虹鏁版嵁
+ 浣跨敤 code鍋氶敭
+
+
+
+
+
+ Wms鑾峰彇绠变俊鎭-鍒楄〃
+
+
+
+
+
+
+ Wms鑾峰彇搴忓垪鍙蜂俊鎭
+
+
+
+
+
+
+ 鑾峰彇搴忓垪鍙蜂俊鎭
+
+ 搴忓垪鍙
+
+
+
+
+ 閿欒鎷︽埅
+
+
+
+
diff --git a/src/BarCode.Web.Api/wwwroot/BarCode.Web.Core.xml b/src/BarCode.Web.Api/wwwroot/BarCode.Web.Core.xml
new file mode 100644
index 0000000..788cabf
--- /dev/null
+++ b/src/BarCode.Web.Api/wwwroot/BarCode.Web.Core.xml
@@ -0,0 +1,4526 @@
+
+
+
+ BarCode.Web.Core
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 璇锋眰瀵硅薄
+
+
+
+
+ 缁勭粐Code
+
+
+
+
+ 璁㈠崟缂栧彿闆嗗悎瀛楃涓
+
+
+
+
+ 鐗╂枡涓変欢濂楁悳绱
+
+
+
+
+ 寮濮嬬殑绠卞敍缂栧彿
+
+
+
+
+ 缁撴潫鐨勭鍞涚紪鍙
+
+
+
+
+ 鎿嶄綔浜
+
+
+
+
+ 鐢熸垚寮濮嬫椂闂
+
+
+
+
+ 鐢熸垚缁撴潫鏃堕棿
+
+
+
+
+ 鍒楄〃鍝嶅簲瀵硅薄
+
+
+
+
+ 鍞竴ID
+
+
+
+
+ 鏄庣粏缂栧彿ID
+
+
+
+
+ 绠卞敍缂栧彿
+
+
+
+
+ 璁㈠崟缂栧彿
+
+
+
+
+ 鐗╂枡瑙勬牸鍨嬪彿
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 鐗╂枡鍚嶇О
+
+
+
+
+ 69鏉$爜
+
+
+
+
+ 瑁呯鏁伴噺
+
+
+
+
+ 瑁呯鍑閲
+
+
+
+
+ 瑁呯姣涢噸
+
+
+
+
+ 灏剧鏁伴噺
+
+
+
+
+ 灏剧鍑閲
+
+
+
+
+ 灏剧姣涢噸
+
+
+
+
+ 澶囨敞
+
+
+
+
+ 鎿嶄綔浜
+
+
+
+
+ 鍒涘缓鏃堕棿锛堢敓鎴愭椂闂达級
+
+
+
+
+ 鏄惁鏄熬绠
+
+
+
+
+ 瑁呯鎬绘暟
+
+
+
+
+ 浜у搧鏁伴噺
+
+
+
+
+ 鎺掑簭
+
+
+
+
+ 娴佹按鍙(寮濮)
+
+
+
+
+ 娴佹按鍙(缁撴潫)
+
+
+
+
+ 鐢熸垚绠卞敍dto
+
+
+
+
+ 缁勭粐Code
+
+
+
+
+
+ 鐗╂枡
+
+
+
+
+ 浜у搧鏁伴噺
+
+
+
+
+ 瑁呯鏁伴噺
+
+
+
+
+ 瑁呯鍑閲
+
+
+
+
+ 瑁呯姣涢噸
+
+
+
+
+ 灏剧鏁伴噺
+
+
+
+
+ 灏剧鍑閲
+
+
+
+
+ 灏剧姣涢噸
+
+
+
+
+ 澶囨敞
+
+
+
+
+ 娴佹按鍙(寮濮)
+
+
+
+
+ 娴佹按鍙(缁撴潫)
+
+
+
+
+ 绠辨槑缁嗕俊鎭
+
+
+
+
+ ID
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 鏁伴噺锛堣绠辨暟閲忥級
+
+
+
+
+ 搴忓垪鍙
+
+
+
+
+ 绠卞垪琛ㄨ繑鍥炰俊鎭
+
+
+
+
+ ID
+
+
+
+
+ 鏄庣粏Id(鍙兘涓0)
+
+
+
+
+ 绠辩紪鍙
+
+
+
+
+ 渚涘簲鍟嗘垨缁勭粐
+
+
+
+
+ 鐗╂枡瑙勬牸鍨嬪彿
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 鐗╂枡鍚嶇О
+
+
+
+
+ 鐗╂枡鏉$爜
+
+
+
+
+ 搴忓垪鍙
+
+
+
+
+ 鏁伴噺锛堣绠辨暟閲忥級
+
+
+
+
+ 绠辩姸鎬
+
+
+
+
+ 瑁呯寮濮嬫椂闂
+
+
+
+
+ 瑁呯缁撴潫鏃堕棿(瀹屾垚瑁呯鏃堕棿)
+
+
+
+
+ 瑁呯浜
+
+
+
+
+ 鐢熸垚浜
+
+
+
+
+ 鍒涘缓鏃堕棿
+
+
+
+
+ 绠卞彿鎵撳嵃娆℃暟
+
+
+
+
+ 绠变俊鎭垪琛
+
+
+
+
+ 缁勭粐Code
+
+
+
+
+ 绠卞彿(寮濮)
+
+
+
+
+ 绠卞彿(缁撴潫)
+
+
+
+
+ 绠辩姸鎬
+
+
+
+
+ 鍒涘缓鏃堕棿
+
+
+
+
+ 鍒涘缓鏃堕棿
+
+
+
+
+ 瑁呯瀹屾垚鏃堕棿
+
+
+
+
+ 瑁呯瀹屾垚鏃堕棿
+
+
+
+
+ 鐗╂枡缂栫爜/鍚嶇О/鍨嬪彿瑙勬牸
+
+
+
+
+ 搴忓垪鍙
+
+
+
+
+ 绠卞彿鎵撳嵃鐘舵 鎵撳嵃 true 鏈墦鍗癴alse
+
+
+
+
+ 渚涘簲鍟嗘垨缁勭粐
+
+
+
+
+ 鐢熸垚浜
+
+
+
+
+ 绠变俊鎭
+
+
+
+
+ ID
+
+
+
+
+ 绠辩紪鍙
+
+
+
+
+ 渚涘簲鍟咰ode
+
+
+
+
+ 缁勭粐Code
+
+
+
+
+ 绠辩姸鎬
+
+
+
+
+ 瑁呯寮濮嬫椂闂
+
+
+
+
+ 瑁呯缁撴潫鏃堕棿(瀹屾垚瑁呯鏃堕棿)
+
+
+
+
+ 瀹屾垚瑁呯鐢ㄦ埛
+
+
+
+
+ 绠卞瓙鍒涘缓鐢ㄦ埛
+
+
+
+
+ 鍒涘缓鏃堕棿
+
+
+
+
+ 绠卞彿鎵撳嵃娆℃暟
+
+
+
+
+ 鏈鏂版墦鍗版椂闂
+
+
+
+
+ 鏄庣粏
+
+
+
+
+ 鍒犻櫎绠卞拰搴忓垪鐮佺粦瀹
+
+
+
+
+ 绠盜d
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 搴忓垪鍙
+
+
+
+
+ 鐢熸垚绠辩爜
+
+
+
+
+ 缁勭粐Code
+
+
+
+
+ 鐢熸垚鏁伴噺
+
+
+
+
+ 绠变俊鎭槑缁
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 搴忓垪鍙
+
+
+
+
+ 淇濆瓨绠变俊鎭(瑁呯淇濆瓨,瀹屾垚瑁呯)
+
+
+
+
+ 绠盜d
+
+
+
+
+ 鏄惁瀹屾垚瑁呯(淇濆瓨 false 瀹屾垚瑁呯 true)
+
+
+
+
+ 鏄庣粏淇℃伅
+
+
+
+
+ 鑰乷ps绠变俊鎭姹
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 寮濮嬫椂闂
+
+
+
+
+ 缁撴潫鏃堕棿
+
+
+
+
+ 绠卞彿
+
+
+
+
+ 椤电爜
+
+
+
+
+ 姣忛〉鏉℃暟
+
+
+
+
+ 鑰乷ps绠变俊鎭
+
+
+
+
+ 瀵瑰簲鑰丱PS鐨勭ID
+
+
+
+
+ 绠辩紪鍙凤紙鑰丱PS鐢熸垚鐨勭鍙凤級
+
+
+
+
+ 渚涘簲鍟咺d
+
+
+
+
+ 缁勭粐Id
+
+
+
+
+ 瀹屾垚瑁呯鏃堕棿
+
+
+
+
+ 瀹屾垚瑁呯鐢ㄦ埛
+
+
+
+
+ 绠卞瓙鍒涘缓鐢ㄦ埛
+
+
+
+
+ 鍒涘缓鏃堕棿锛堝搴旇丱PS鐨勫垱寤烘椂闂达級
+
+
+
+
+ 鏄庣粏
+
+
+
+
+ 搴忓垪鍙
+
+
+
+
+ 搴忓垪鍙风敓鎴愭椂闂
+
+
+
+
+ 搴忓垪鍙风敓鎴愮敤鎴
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 鏁伴噺锛堣绠辨暟閲忥級
+
+
+
+
+ 搴忓垪鍙烽泦
+
+
+
+
+ 鎵鏈夋灇涓句俊鎭
+
+
+
+
+ 鍑哄簱鍗曠被鍨
+
+
+
+
+ 绉诲簱鍗曠被鍨
+
+
+
+
+ 鐩樼偣缁撴灉绫诲瀷
+
+
+
+
+ 鍏ュ簱鍗曠被鍨
+
+
+
+
+ 鍏ュ簱鐘舵
+
+
+
+
+ 绫诲瀷锛1涓哄叆搴撳洖閫涓嬫灦锛2涓哄嚭搴撳洖閫涓婃灦
+
+
+
+
+ 绫诲瀷锛1涓哄叆搴擄紝2涓哄嚭搴
+
+
+
+
+ 鍗曟嵁绫诲瀷
+
+
+
+
+ 闈為噰璐笂鏋舵柟寮
+
+
+
+
+ 涓嬭浇瀵煎嚭璁㈠崟绫诲瀷
+
+
+
+
+ 涓嬭浇瀵煎嚭鐘舵
+
+
+
+
+ 鍑哄叆搴撴柟寮忥細鎸夌鎴栬呮寜浜у搧
+
+
+
+
+ 鍑哄簱鐘舵
+
+
+
+
+ 鍚屾閲戣澏鐘舵
+
+
+
+
+ 瀹㈡埛
+
+
+
+
+ ID
+
+
+
+
+ 缂栫爜
+
+
+
+
+ 鍚嶇О
+
+
+
+
+ ERP锛氬崟鎹煡璇-dto
+
+
+
+
+ 浠ょ墝
+
+
+
+
+ 鍙傛暟
+
+
+
+
+ 鍙傛暟(淇濆瓨鎻愪氦瀹℃牳formId鍦ㄥ灞)
+
+
+
+
+ ERP锛氬崟鎹煡璇-鍙傛暟-dto
+
+
+
+
+ 涓氬姟瀵硅薄琛ㄥ崟Id锛堝繀褰曪級
+
+
+
+
+ 闇鏌ヨ鐨勫瓧娈祂ey闆嗗悎锛屽瓧绗︿覆绫诲瀷锛屾牸寮忥細"key1,key2,..."锛堝繀褰曪級 娉紙鏌ヨ鍗曟嵁浣撳唴鐮,闇鍔犲崟鎹綋Key鍜屼笅鍒掔嚎,濡傦細FEntryKey_FEntryId锛
+
+
+
+
+ 杩囨护鏉′欢锛屾暟缁勭被鍨嬶紝濡傦細[{"Left":"(","FieldName":"Field1","Compare":"=","Value":"111","Right":")","Logic":"AND"},{"Left":"(","FieldName":"Field2","Compare":"=","Value":"222","Right":")","Logic":""}]
+
+
+
+
+ 鎺掑簭瀛楁锛屽瓧绗︿覆绫诲瀷锛堥潪蹇呭綍锛
+
+
+
+
+ 杩斿洖鎬昏鏁帮紝鏁村瀷锛堥潪蹇呭綍锛
+
+
+
+
+ 寮濮嬭绱㈠紩锛屾暣鍨嬶紙闈炲繀褰曪級
+
+
+
+
+ 鏈澶ц鏁帮紝鏁村瀷锛屼笉鑳借秴杩10000锛堥潪蹇呭綍锛
+
+
+
+
+ 琛ㄥ崟鎵鍦ㄧ殑瀛愮郴缁熷唴鐮侊紝瀛楃涓茬被鍨嬶紙闈炲繀褰曪級
+
+
+
+
+ ERP:鍏ュ簱鍗-缁熶竴鍝嶅簲瀵硅薄
+
+
+
+
+ 鍗曟嵁缂栧彿
+
+
+
+
+ 缁勭粐
+
+
+
+
+ erp鐨勬槑缁咺D
+
+
+
+
+ 缁勭粐缂栫爜
+
+
+
+
+ 渚涘簲鍟
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 浠撳簱ID
+
+
+
+
+ 浠撳簱code
+
+
+
+
+ 鏁伴噺
+
+
+
+
+ 鍑哄巶浠
+
+
+
+
+ 宸蹭氦鏁伴噺锛堝搴旈噾铦剁殑宸蹭氦鏁伴噺-瀵瑰簲鐗╂枡锛夛紝鐩墠鍙湁閲囪喘璁㈠崟鏈
+
+
+
+
+ 鏄庣粏澶囨敞
+
+
+
+
+ 鍒涘缓鏃堕棿
+
+
+
+
+ 鍗曟嵁绫诲瀷
+
+
+
+
+ 閿鍞鍗
+
+
+
+
+ 瀹㈡埛缂栫爜
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 缁勭粐缂栫爜
+
+
+
+
+ 浠撳簱
+
+
+
+
+ 瀛愪粨搴(璺熼噾铦朵氦浜掑瓧娈)
+
+
+
+
+ 鏁伴噺
+
+
+
+
+ 缂栫爜
+
+
+
+
+ 缂栫爜
+
+
+
+
+ 鐩樼偣瀛愪粨搴
+
+
+
+
+ GD浠
+
+
+
+
+ HD浠
+
+
+
+
+ erp 鎻愪氦鍜屽鏍
+
+
+
+
+ 涓氬姟瀵硅薄琛ㄥ崟Id锛堝繀褰曪級
+
+
+
+
+ 鍗曟嵁缂栫爜
+
+
+
+
+ 淇敼閲囪喘鍏ュ簱鍗
+
+
+
+
+ 鍗曟嵁Id
+
+
+
+
+ 鏄庣粏
+
+
+
+
+ 鏄庣粏
+
+
+
+
+ 鏄庣粏Id
+
+
+
+
+ 閲囪喘璁㈠崟鏄庣粏Id
+
+
+
+
+ 鏁伴噺
+
+
+
+
+ 鎵瑰彿
+
+
+
+
+ 鎵瑰彿
+
+
+
+
+ 鎵瑰彿
+
+
+
+
+ 涓嬫帹
+
+
+
+
+ 涓氬姟瀵硅薄琛ㄥ崟Id锛堝繀褰曪級
+
+
+
+
+ 鍒嗗綍鍐呯爜闆嗗悎锛岄楀彿鍒嗛殧锛堝垎褰曚笅鎺ㄦ椂蹇呭綍锛 娉紙鎸夊垎褰曚笅鎺ㄦ椂锛屽崟鎹唴鐮佸拰缂栫爜涓嶉渶瑕佸~,鍚﹀垯鎸夋暣鍗曚笅鎺級
+
+
+
+
+ 鐩爣鍗曟嵁绫诲瀷
+
+
+
+
+ 鏄惁鍚敤榛樿杞崲瑙勫垯锛屽竷灏旂被鍨嬶紝榛樿false锛堥潪蹇呭綍锛
+ false 闇瑕佺┛ RuleId true 涓嶉渶瑕佷紶RuleId
+
+
+
+
+ 杞崲瑙勫垯鍐呯爜
+
+
+
+
+ 淇濆瓨澶辫触鏃舵槸鍚︽殏瀛橈紝甯冨皵绫诲瀷锛岄粯璁alse锛堥潪蹇呭綍锛 娉紙鏆傚瓨鐨勫崟鎹槸娌℃湁缂栫爜鐨勶級
+
+
+
+
+ Erp鍚屾鏁版嵁鏃跺崟鎹ご
+
+
+
+
+ 涓氬姟瀵硅薄琛ㄥ崟Id锛堝繀褰曪級
+
+
+
+
+ 鍗曟嵁浣
+
+
+
+
+ 瀵瑰簲閲戣澏锛岀墿鏂欎俊鎭
+
+
+
+
+ 缁勭粐ID
+
+
+
+
+ 缁勭粐缂栫爜
+
+
+
+
+ 鐗╂枡ID
+
+
+
+
+ 鐗╂枡鍚嶇О
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 鐗╂枡瑙勬牸鍨嬪彿
+
+
+
+
+ 鍩烘湰鍗曚綅
+
+
+
+
+ 鍩烘湰鍗曚綅鍚嶇О
+
+
+
+
+ 鍩烘湰鍗曚綅缂栫爜
+
+
+
+
+ 鏉$爜
+
+
+
+
+ 鏄惁鍚敤鎵瑰彿绠$悊
+
+
+
+
+ 鐗╂枡Id 32杩涘埗瀛楃涓
+
+
+
+
+ 閲戣澏缁勭粐-鍩烘湰淇℃伅
+
+
+
+
+ Id
+
+
+
+
+ 缂栫爜
+
+
+
+
+ 鍚嶇О
+
+
+
+
+ 鍙戣揣閫氱煡鍗曡浆鍑哄簱浠诲姟
+
+
+
+
+ 鏉ユ簮鍗曞彿
+
+
+
+
+ 閿鍞鍗曞彿
+
+
+
+
+ 鍙戣揣缁勭粐
+
+
+
+
+ 缁勭粐缂栫爜
+
+
+
+
+ 鏀惰揣瀹㈡埛
+
+
+
+
+ 瀵瑰簲閲戣澏鍗曟嵁鏄庣粏id(閿鍞嚭搴撳悓姝ラ噾铦朵笅鎺ㄤ娇鐢)
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 浠撳簱ID
+
+
+
+
+ 浠撲綅ID
+
+
+
+
+ 搴斿嚭搴撴暟閲
+
+
+
+
+ 璁㈠崟鏄庣粏澶囨敞
+
+
+
+
+ 鍒涘缓鏃堕棿锛坋rp閭h竟鐨勫垱寤烘椂闂达級
+
+
+
+
+ 鐢ㄦ潵鑷姩鏋勫缓鍗曟嵁绫诲瀷 璺烵utStockType 涓鑷
+
+
+
+
+ 鍑哄簱鍗曞悓姝ラ噾铦
+
+
+
+
+ 鍗曟嵁缂栧彿
+
+
+
+
+ 鍗曟嵁绫诲瀷
+
+
+
+
+ 鍙戣揣缁勭粐
+
+
+
+
+ 鏀惰揣瀹㈡埛
+
+
+
+
+ 鍒涘缓鏃堕棿锛堝嚭搴撴椂闂达級
+
+
+
+
+ 缁撶畻甯佸埆榛樿涓: 浜烘皯甯
+
+
+
+
+ 閿鍞粍缁囧彇瀵瑰簲鍙戣揣閫氱煡鍗曠殑閿鍞粍缁
+
+
+
+
+ 閿鍞儴闂ㄥ彇瀵瑰簲鍙戣揣閫氱煡鍗曠殑閿鍞儴闂
+
+
+
+
+ 鐗╂枡Id
+
+
+
+
+ 浠撳簱ID
+
+
+
+
+ 鍑哄簱鏁伴噺
+
+
+
+
+ 鍑哄簱鏁伴噺
+
+
+
+
+ 搴斿彂鏁伴噺锛屽彇瀵瑰簲鍙戣揣閫氱煡鍗曠殑閿鍞暟閲
+
+
+
+
+ 鍗曚环 鍙栧搴斿彂璐ч氱煡鍗曞搴旂墿鏂欑紪鐮佽鐨 鍗曚环
+
+
+
+
+ 鍚◣鍗曚环 鍙栧搴斿彂璐ч氱煡鍗曞搴旂墿鏂欑紪鐮佽鐨 鍚◣鍗曚环
+
+
+
+
+ 淇敼閿鍞嚭搴撳崟
+
+
+
+
+ 鍗曟嵁Id
+
+
+
+
+ 鏄庣粏
+
+
+
+
+ 鏄庣粏Id
+
+
+
+
+ 鍙戣揣閫氱煡鍗曟槑缁咺d
+
+
+
+
+ 鏁伴噺
+
+
+
+
+ key涓簊tring 涓嬫媺鍒楄〃瀵硅薄
+
+
+
+
+ id
+
+
+
+
+ 缂栫爜
+
+
+
+
+ 鍚嶅瓧
+
+
+
+
+ 鏄惁榛樿閫変腑
+
+
+
+
+ 浠撳簱淇℃伅
+
+
+
+
+ id
+
+
+
+
+ 缂栫爜
+
+
+
+
+ 鍚嶅瓧
+
+
+
+
+ 涓氬姟缁勭粐(浣跨敤缁勭粐)
+
+
+
+
+ 涓氬姟缁勭粐(浣跨敤缁勭粐)缂栫爜
+
+
+
+
+ 瀛愪粨搴撲俊鎭
+
+
+
+
+ id
+
+
+
+
+ 缂栫爜
+
+
+
+
+ 鍚嶅瓧
+
+
+
+
+ 涓氬姟缁勭粐(浣跨敤缁勭粐)
+
+
+
+
+ 涓氬姟缁勭粐(浣跨敤缁勭粐)缂栫爜
+
+
+
+
+ 浠撳簱缂栫爜
+
+
+
+
+ erp渚涘簲鍟嗗熀纭鏁版嵁
+
+
+
+
+ ID
+
+
+
+
+ 缂栫爜
+
+
+
+
+ 鍚嶇О
+
+
+
+
+ 缁勭粐缂栫爜
+
+
+
+
+ 鐩樼偣鍗
+
+
+
+
+ 鍗曟嵁绫诲瀷(鏍囧噯鐩樹簭鍗; 鏍囧噯鐩樼泩鍗 PY01_SYS) 鐩樹簭 PK01_SYS
+
+
+
+
+ 搴撳瓨缁勭粐 (鍙栦粨搴撳搴旂殑搴撳瓨缁勭粐)
+
+
+
+
+ 璐т富绫诲瀷: 榛樿涓轰笟鍔$粍缁 BD_OwnerOrg
+
+
+
+
+ 鍗曟嵁缂栧彿
+
+
+
+
+ 鐩樼偣鏃ユ湡
+
+
+
+
+ 鏄庣粏
+
+
+
+
+ 搴撳瓨鐘舵 KCZT01_SYS
+
+
+
+
+ 璐т富绫诲瀷: 榛樿涓轰笟鍔$粍缁 BD_OwnerOrg
+
+
+
+
+ 鍙栦粨搴撳搴旂殑璐т富淇℃伅 璐т富: 绛変簬搴撳瓨缁勭粐
+
+
+
+
+ 淇濈鑰呯被鍨
+
+
+
+
+ 淇濈鑰 浠撳簱鈥濆簱瀛樼粍缁団
+
+
+
+
+ 鐗╂枡ID
+
+
+
+
+ 鍗曚綅ID
+
+
+
+
+ 浠撳簱ID
+
+
+
+
+ 浠撲綅ID
+
+
+
+
+ 鐩樼偣鍓嶆暟閲忥紙wms绯荤粺鏁伴噺锛
+
+
+
+
+ 鐩樼偣瀹為檯鏁伴噺锛堝疄闄呬粨搴撴暟閲忥級
+
+
+
+
+ 鐩樼泩鏁伴噺
+
+
+
+
+ 鐩樹簭鏁伴噺
+
+
+
+
+ 澶囨敞
+
+
+
+
+ 涓婁紶涓嬭浇鍒楄〃
+
+
+
+
+ 缁勭粐Code
+
+
+
+
+ 鍗曟嵁绫诲瀷(浠诲姟绫诲瀷)
+
+
+
+
+ 鐘舵
+
+
+
+
+ 涓嬪崟鏃堕棿 寮濮
+
+
+
+
+ 涓嬪崟鏃堕棿 缁撴潫
+
+
+
+
+ 鎿嶄綔浜
+
+
+
+
+ 渚涘簲鍟嗙敤鎴稩d
+
+
+
+
+ 涓婁紶涓嬭浇鍒楄〃
+
+
+
+
+ 鏌ヨ鍒楄〃鍐呭
+
+
+
+
+ 鎬绘潯鏁
+
+
+
+
+ 涓婁紶涓嬭浇鍒楄〃
+
+
+
+
+ 涓婚敭 璁㈠崟缂栧彿
+
+
+
+
+ 鏃ユ湡
+
+
+
+
+ 鍗曟嵁绫诲瀷(浠诲姟绫诲瀷)
+
+
+
+
+ 鐘舵(Key锛
+
+
+
+
+ 鐘舵
+
+
+
+
+ 鏂囦欢鍦板潃
+
+
+
+
+ 鎿嶄綔浜
+
+
+
+
+ 澶辫触鍘熷洜
+
+
+
+
+ 浠诲姟绫诲瀷
+
+
+
+
+ 鐘舵
+
+
+
+
+ 瀹㈡埛绔悕绉
+
+
+
+
+ 鎺堟潈token -- 缁欏墠绔敤鐨勯獙璇乼oken
+
+
+
+
+ 鎺堟潈token -- 鍗曠偣缁欒繃鏉ョ殑token
+
+
+
+
+ token澶存爣璇
+
+
+
+
+ 鍒锋柊token
+
+
+
+
+ 杩囨湡鏃堕棿
+
+
+
+
+ 鐧诲綍鍚庤淇濆瓨鐨勪俊鎭
+
+
+
+
+ 鐢ㄦ埛淇℃伅
+
+
+
+
+ token淇℃伅
+
+
+
+
+ 鐧诲嚭鐨刣to
+
+
+
+
+ 鎺堟潈token
+
+
+
+
+ 鐢ㄦ埛ID
+
+
+
+
+ PHP-session-ID
+
+
+
+
+ PHP鐧诲綍杩斿洖鐨則oken
+
+
+
+
+ PHP鐧诲綍鐨勮繃鏈熸椂闂
+
+
+
+
+ ops鑷繁浜х敓鐨則oken 缁欏墠绔獙璇佺敤鐨
+
+
+
+
+ 鐧诲綍璇锋眰瀵硅薄
+
+
+
+
+ 璐﹀彿
+
+
+
+
+ 瀵嗙爜
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 鑿滃崟鐨勮姹傚璞
+
+
+
+
+ 鐢ㄦ埛ID锛堜笉鏄汉鍛業D锛
+
+
+
+
+ 搴旂敤ID
+
+
+
+
+ 鑿滃崟鍝嶅簲瀵硅薄
+
+
+
+
+
+
+
+
+
+ 涓婄骇鑿滃崟
+
+
+
+
+ 妯″潡ID锛屽搴攁pps琛↖D
+
+
+
+
+ 鑿滃崟鏍囬
+
+
+
+
+ 鑿滃崟鏍囩
+
+
+
+
+ 鑿滃崟璺緞
+
+
+
+
+ 鎿嶄綔锛屾瘮濡 /admin/info
+
+
+
+
+ 鍥炬爣
+
+
+
+
+
+
+
+
+
+ 鎺掑簭
+
+
+
+
+ 0涓烘櫘閫氭寜閽/杩炴帴锛1涓哄乏渚ц彍鍗
+
+
+
+
+ 鏄惁鏄剧ず锛0涓哄惁锛1涓烘槸
+
+
+
+
+ 鏄惁绂佺敤锛0涓哄惁锛1涓烘槸
+
+
+
+
+ 鏄惁绂佺敤锛歵rue涓虹鐢紝false涓哄惎鐢
+
+
+
+
+ 瀛愰泦
+
+
+
+
+ meta
+
+
+
+
+ 鑿滃崟鍚嶅瓧
+
+
+
+
+ 鑿滃崟鍥炬爣
+
+
+
+
+ 鐧诲綍鍚庯細璇锋眰鐩稿叧鍏ㄩ儴淇℃伅瀵硅薄
+
+
+
+
+ 鐢ㄦ埛ID
+
+
+
+
+ 渚涘簲鍟
+
+
+
+
+ 瀹㈡埛
+
+
+
+
+ 鐧诲綍鍚庯細鍝嶅簲鐩稿叧鍏ㄩ儴淇℃伅瀵硅薄
+
+
+
+
+ 浜哄憳
+
+
+
+
+ 鍏徃
+
+
+
+
+ 渚涘簲鍟
+
+
+
+
+ 瀹㈡埛
+
+
+
+
+ 閮ㄩ棬
+
+
+
+
+ 鍩烘湰淇℃伅浜哄憳--鍜屽崟鐐圭郴缁熺殑瀛楁涓涓瀵瑰簲
+
+
+
+
+ 鐢ㄦ埛鍦ㄥ崟鐐逛腑缁翠竴ID
+
+
+
+
+ 鐢ㄦ埛缂栫爜
+
+
+
+
+ 鐢ㄦ埛涓氬姟鍛樼紪鐮
+
+
+
+
+ 瑙掕壊id
+
+
+
+
+ 濮撳悕
+
+
+
+
+ 澶村儚
+
+
+
+
+ 鐢ㄦ埛鎵嬫満
+
+
+
+
+ 鐢ㄦ埛閭欢
+
+
+
+
+ 鍏徃id
+
+
+
+
+ 缁勭粐id
+
+
+
+
+ 渚涘簲鍟唅d
+
+
+
+
+ 瀹㈡埛id
+
+
+
+
+ 鍒涘缓鏃堕棿
+
+
+
+
+ 鏇存柊鏃堕棿
+
+
+
+
+ 绛惧悕(鐧诲綍锛夋椂闂
+
+
+
+
+ 绛惧悕(鐧诲綍锛塱p
+
+
+
+
+ 鍏抽棴鐘舵侊紝0涓烘湭鍏抽棴
+
+
+
+
+ 鐢ㄦ埛绫诲瀷 1涓哄憳宸ワ紝2涓轰緵搴斿晢锛3涓哄鎴
+
+
+
+
+ 閮ㄩ棬
+
+
+
+
+ 鐧诲綍鍚庤幏鍙栫殑:token 淇℃伅-鍜屽崟鐐圭郴缁熺殑瀛楁涓涓瀵瑰簲
+
+
+
+
+ 鐢ㄦ埛鍦ㄥ崟鐐逛腑缁翠竴ID
+
+
+
+
+ 鍗曠偣璁块棶鐨剆ession id
+
+
+
+
+ 鍚庣画涓庡崟鐐归氫俊楠岃瘉token
+
+
+
+
+ access token杩囨湡鏃堕棿
+
+
+
+
+ 鐢ㄤ簬access_token杩囨湡鍚庡埛鏂扮敤
+
+
+
+
+ 鍔犲瘑鍚庣殑鐢ㄦ埛鏁版嵁
+
+
+
+
+ 鐧诲綍鍚庤幏鍙栫殑:token 淇℃伅-鍜屽崟鐐圭郴缁熺殑瀛楁涓涓瀵瑰簲
+
+
+
+
+ 鍚庣画涓庡崟鐐归氫俊楠岃瘉token
+
+
+
+
+ access token杩囨湡鏃堕棿
+
+
+
+
+ 鐢ㄤ簬access_token杩囨湡鍚庡埛鏂扮敤
+
+
+
+
+ 鍔犲瘑鍚庣殑鐢ㄦ埛鏁版嵁
+
+
+
+
+ 鐢ㄦ埛鍦ㄥ崟鐐逛腑缁翠竴ID
+
+
+
+
+ 浜哄憳ID
+
+
+
+
+ 鐢ㄦ埛缂栫爜
+
+
+
+
+ 鐢ㄦ埛涓氬姟鍛樼紪鐮
+
+
+
+
+ 澶村儚
+
+
+
+
+ 鏄惁鏄痑dmin璐︽埛
+
+
+
+
+ 鍏徃id
+
+
+
+
+ 鍏徃鍚嶇О
+
+
+
+
+ 缁勭粐id 鐢ㄦ埛绫诲瀷涓哄唴閮ㄥ憳宸ョ殑鏃跺欐墠鏈夊
+
+
+
+
+ 渚涘簲鍟唅d 鐢ㄦ埛绫诲瀷涓轰緵搴斿晢鐨勬椂鍊欐墠鏈夊
+
+
+
+
+ 渚涘簲鍟咰ode 鐢ㄦ埛绫诲瀷涓轰緵搴斿晢鐨勬椂鍊欐墠鏈夊
+
+
+
+
+ 渚涘簲鍟嗗悕绉
+
+
+
+
+ 瀹㈡埛id 鐢ㄦ埛绫诲瀷涓哄鎴风殑鏃跺欐墠鏈夊
+
+
+
+
+ 瀹㈡埛鍚嶇О
+
+
+
+
+ 鐢ㄦ埛绫诲瀷锛1涓哄憳宸ワ紝2涓轰緵搴斿晢锛3涓哄鎴
+
+
+
+
+ 鐢ㄦ埛鍦ㄥ崟鐐逛腑缁翠竴ID
+
+
+
+
+ 搴忓垪鍙蜂俊鎭
+
+
+
+
+ 绠盜d
+
+
+
+
+ 绠卞彿
+
+
+
+
+ 浠撲綅缂栫爜(搴忓垪鍙蜂笉瀛樺湪搴撳瓨鐨勮瘽浠撲綅鏄"")
+
+
+
+
+ 浠撳簱缂栫爜
+
+
+
+
+ 鏄惁瀛樺湪浜庣搴撳瓨涓
+
+
+
+
+ 搴忓垪鍙
+
+
+
+
+ 鐗╂枡鍚嶇О
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 鐗╂枡瑙勬牸鍨嬪彿
+
+
+
+
+ 鏄惁鏄丱ps鏉$爜
+
+
+
+
+ 鏄惁鍐荤粨
+
+
+
+
+ 鏄惁婵娲昏繃(鍙湁鍋氳繃 鐩樼偣 閲囪喘鍜岄潪閲囪喘涓婃灦 鍑哄簱鍥為涓婃灦 鎵嶇畻婵娲)
+
+
+
+
+ 鐗╂枡瀵瑰簲鐨勪粨浣嶆湁鍝簺
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 浠撲綅缂栫爜
+
+
+
+
+ 浠撲綅鍚嶇О
+
+
+
+
+ 缁勭粐
+
+
+
+
+ 浠撳簱
+
+
+
+
+ 鎿嶄綔 Id闆嗗悎
+
+
+
+
+ 鎿嶄綔 Id闆嗗悎
+
+
+
+
+ 鎿嶄綔 string闆嗗悎
+
+
+
+
+ 缁勭粐Id(鎵鏈夊垪琛ㄩ〉閮介渶瑕 鍏ㄥ眬)
+
+
+
+
+ 椤垫暟 涓嶄紶榛樿涓1
+
+
+
+
+ 姣忛〉鏉℃暟 涓嶄紶榛樿姣忛〉10 鏉
+
+
+
+
+ 鐢熸垚闃蹭吉鐮
+
+
+
+
+ 缁勭粐Code
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 鏁伴噺
+
+
+
+
+ 闃蹭吉鐮佷笅杞
+
+
+
+
+ 鐢熸垚璁板綍Id
+
+
+
+
+ 鏄惁鍏ㄩ儴鎿嶄綔
+
+
+
+
+ 濡傛灉鏄儴鍒嗘搷浣(闃蹭吉鐮) 鍏ㄩ儴鎿嶄綔鐨勮瘽鍙笉浼
+
+
+
+
+ 闃蹭吉鐮佺敓鎴愬垪琛ㄨ褰
+
+
+
+
+ 涓婚敭 璁㈠崟缂栧彿
+
+
+
+
+ 闃蹭吉鐮佹壒娆
+
+
+
+
+ 鐗╂枡瑙勬牸鍨嬪彿
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 鐗╂枡鍚嶇О
+
+
+
+
+ 鐗╂枡鏉$爜
+
+
+
+
+ 鐢熸垚瀹屾垚 1 鐢熸垚涓 0
+
+
+
+
+ 鐢熸垚鏉$爜鏁伴噺
+
+
+
+
+ 涓嬭浇鏁
+
+
+
+
+ 鍒涘缓浜
+
+
+
+
+ 鐢熸垚鏃堕棿
+
+
+
+
+ 鐢熸垚瀹屾垚鏃堕棿
+
+
+
+
+ 闃蹭吉鐮佺敓鎴愬垪琛
+
+
+
+
+ 缁勭粐Code
+
+
+
+
+ 鍒涘缓鏃堕棿
+
+
+
+
+ 鍒涘缓鏃堕棿
+
+
+
+
+ 闃蹭吉鐮侀泦鍚
+
+
+
+
+ 闃蹭吉鐮佹壒鍙
+
+
+
+
+ 鐢熸垚瀹屾垚 true 鐢熸垚涓 false 涓嶆悳 null鎴栦笉浼
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 闃蹭吉鐮佸垪琛
+
+
+
+
+ 娴佹按鍙
+
+
+
+
+ 鐢熸垚璁板綍Id
+
+
+
+
+ 闃蹭吉鐮
+
+
+
+
+ 鐗╂枡瑙勬牸鍨嬪彿
+
+
+
+
+ 鏁伴噺
+
+
+
+
+ 鐢熸垚鏃堕棿
+
+
+
+
+ 涓嬭浇娆℃暟
+
+
+
+
+ 鏈鏂颁笅杞芥椂闂
+
+
+
+
+ 鍒涘缓浜
+
+
+
+
+ 闃蹭吉鐮佸垪琛
+
+
+
+
+ 缁勭粐Code
+
+
+
+
+ 鐢熸垚璁板綍Id
+
+
+
+
+ 娴佹按鍙峰尯闂-寮濮
+
+
+
+
+ 娴佹按鍙峰尯闂-缁撴潫
+
+
+
+
+ 鏄惁涓嬭浇 true 涓嬭浇 false 鏈笅杞
+
+
+
+
+ 涓嬭浇鏃堕棿
+
+
+
+
+ 涓嬭浇鏃堕棿
+
+
+
+
+ 闃蹭吉鐮
+
+
+
+
+ 闃蹭吉鐮佸鍑
+
+
+
+
+ 闃蹭吉鐮
+
+
+
+
+ 鐗╂枡瑙勬牸鍨嬪彿
+
+
+
+
+ 鏁伴噺
+
+
+
+
+ 涓嬭浇娆℃暟
+
+
+
+
+ 鏈鏂颁笅杞芥椂闂
+
+
+
+
+ 鐢熸垚璁板綍Ids
+
+
+
+
+ 闃蹭吉鐮佷俊鎭
+
+
+
+
+ 闃蹭吉鐮
+
+
+
+
+ 鏄惁绗竴娆℃煡璇 true 绗竴娆 false 涓嶆槸绗竴娆
+
+
+
+
+ 鏌ヨ娆℃暟
+
+
+
+
+ 绗竴娆℃煡璇㈡椂闂
+
+
+
+
+ 瀹㈡埛缂栫爜
+
+
+
+
+ 瀹㈡埛鍚嶇О
+
+
+
+
+ 鎵嬫満鍙风爜
+
+
+
+
+ 閭
+
+
+
+
+ 閭
+
+
+
+
+ 鏄庣粏
+
+
+
+
+ 閭
+
+
+
+
+ 鍚嶇О
+
+
+
+
+ 鍦板潃
+
+
+
+
+ 鏄庣粏
+
+
+
+
+ 鍏ュ簱鏄庣粏ID
+
+
+
+
+ 鐗╂枡鍚嶇О
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 鐗╂枡瑙勬牸鍨嬪彿
+
+
+
+
+ 鏁伴噺
+
+
+
+
+ 鐢熸垚搴忓垪鍙疯姹傚弬鏁
+
+
+
+
+ 缁勭粐Code
+
+
+
+
+ 鏄庣粏鏁版嵁
+
+
+
+
+ 鐢熸垚搴忓垪鍙疯姹傚弬鏁拌鎯
+
+
+
+
+ 鐗╂枡Id杞32杩涘埗
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 瑙勬牸鍨嬪彿
+
+
+
+
+ 鏁伴噺
+
+
+
+
+ 閲囪喘鍗曞彿
+
+
+
+
+ 鏄惁濂楄
+
+
+
+
+ 鎿嶄綔搴忓垪鍙疯姹傛帴鍙(鎵撳嵃 涓嬭浇)
+
+
+
+
+ 鐢熸垚璁板綍Id
+
+
+
+
+ 鏄惁鍏ㄩ儴鎿嶄綔
+
+
+
+
+ 濡傛灉鏄儴鍒嗘搷浣(搴忓垪鍙) 鍏ㄩ儴鎿嶄綔鐨勮瘽鍙笉浼
+
+
+
+
+ 鏍规嵁绠盜d鑾峰彇搴忓垪鐮佷俊鎭
+
+
+
+
+ 绠盜d
+
+
+
+
+ 搴忓垪鍙峰垪琛ㄦ悳绱㈣繑鍥炲弬鏁
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 鐗╂枡鍚嶇О
+
+
+
+
+ 鐗╂枡瑙勬牸鍨嬪彿
+
+
+
+
+ 杞崲鍓嶈鏍煎瀷鍙
+
+
+
+
+ 鐗╂枡鏉$爜
+
+
+
+
+ 搴忓垪鐮
+
+
+
+
+ 鏁板瓧搴忓垪鐮
+
+
+
+
+ 搴忓垪鐮佹祦姘村彿
+
+
+
+
+ 鏁伴噺
+
+
+
+
+ 鏄惁浣跨敤
+
+
+
+
+ 鏄惁浣跨敤
+
+
+
+
+ 绠卞彿
+
+
+
+
+ 鍒涘缓浜
+
+
+
+
+ 鐢熸垚鏃堕棿
+
+
+
+
+ 鎵撳嵃娆℃暟
+
+
+
+
+ 涓嬭浇娆℃暟
+
+
+
+
+ 鏈鏂版墦鍗版椂闂
+
+
+
+
+ 鏈鏂颁笅杞芥椂闂
+
+
+
+
+ 鏄惁鍏佽鎵撳嵃(搴忓垪鐮佸凡缁忚浣跨敤 浣嗘病鏈夌鍙,閭d箞灏辨槸琚玾ms绯荤粺鎷夊幓浣跨敤浜,涓嶈兘鍐嶈鎵撳嵃)
+
+
+
+
+ 鏄惁涓轰袱浠惰锛屼负浜嗘帶鍒跺悗闈㈢殑鍙樺姩锛岃涓烘暣鏁板舰锛0鍜1鐪嬩綔1锛2浠h〃2浠惰锛3浠h〃涓変欢瑁 alter by yzh
+
+
+
+
+ 绗簩涓簭鍒楀彿
+
+
+
+
+ 搴忓垪鍙峰垪琛ㄦ悳绱㈣姹傚弬鏁
+
+
+
+
+ 缁勭粐Code
+
+
+
+
+ 鐢熸垚璁板綍Id
+
+
+
+
+ 鎵撳嵃鐘舵 宸叉墦鍗 true 鏈墦鍗 false
+
+
+
+
+ 浣跨敤鐘舵 宸蹭娇鐢 true 鏈娇鐢 false
+
+
+
+
+ 涓嬭浇鏃堕棿
+
+
+
+
+ 涓嬭浇鏃堕棿
+
+
+
+
+ 鎵撳嵃鏃堕棿
+
+
+
+
+ 鎵撳嵃鏃堕棿
+
+
+
+
+ 搴忓垪鍙
+
+
+
+
+ 搴忓彿鍖洪棿-寮濮
+
+
+
+
+ 搴忓彿鍖洪棿-缁撴潫
+
+
+
+
+ 鏄惁鏇存敼杩囩墿鏂欑紪鐮
+
+
+
+
+ 绠卞彿
+
+
+
+
+ 鏁板瓧搴忓垪鍙
+
+
+
+
+ 鏁板瓧搴忓垪鐮-寮濮
+
+
+
+
+ 鏁板瓧搴忓垪鐮-缁撴潫
+
+
+
+
+ 鏄惁涓轰袱浠惰锛屼负浜嗘帶鍒跺悗闈㈢殑鍙樺姩锛岃涓烘暣鏁板舰锛0鍜1鐪嬩綔1锛2浠h〃2浠惰锛3浠h〃涓変欢瑁 alter by yzh
+
+
+
+
+ 搴忓垪鐮佸鍑烘暟鎹
+
+
+
+
+ 渚涘簲鍟嗘垨缁勭粐
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 鐗╂枡鍚嶇О
+
+
+
+
+ 鐗╂枡瑙勬牸鍨嬪彿
+
+
+
+
+ 鐗╂枡鏉$爜
+
+
+
+
+ 搴忓垪鐮
+
+
+
+
+ 鏁板瓧搴忓垪鐮
+
+
+
+
+ 鏁伴噺
+
+
+
+
+ 搴忓垪鐮佸鍑哄弬鏁
+
+
+
+
+ 鐢熸垚璁板綍Ids
+
+
+
+
+ 搴忓垪鐮佷俊鎭
+
+
+
+
+ 搴忓垪鍙
+
+
+
+
+ 鐗╂枡鍚嶇О
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 鐗╂枡瑙勬牸鍨嬪彿
+
+
+
+
+ 鐢熸垚鏃堕棿鏃堕棿
+
+
+
+
+ 閲囪喘鍗曞彿
+
+
+
+
+ 渚涘簲鍟
+
+
+
+
+ 搴忓垪鍙蜂俊鎭
+
+
+
+
+ 鐗╂枡瑙勬牸鍨嬪彿
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 鐗╂枡鍚嶇О
+
+
+
+
+ 鐗╂枡鏉$爜
+
+
+
+
+ 搴忓垪鍙
+
+
+
+
+ 鏁板瓧搴忓垪鍙
+
+
+
+
+ 绠卞彿
+
+
+
+
+ 鏄惁宸茬粡瑁呯 true 宸茬粡瑁呯 false 鏈绠
+
+
+
+
+ 鏄惁鏄凡缁忓瓨鍦ㄧ殑鏁版嵁 榛樿灏辨槸true
+ 鍓嶇鎿嶄綔鏂板鍔犵殑鏁版嵁灏辨槸false 鍚庣淇濆瓨鍒版暟鎹簱鎵嶄細鍙樻垚true
+
+
+
+
+ 鏄惁浣跨敤鐨勬槸鏁板瓧搴忓垪鐮佹湭浣跨敤null,鏁板瓧搴忓垪鐮乼rue,搴忓垪鐮乫alse
+
+
+
+
+ 鏄惁涓轰袱浠跺浜у搧
+
+
+
+
+ 濂楄缂栫爜
+
+
+
+
+ 绗簩涓簭鍒楃爜
+
+
+
+
+ 鑾峰彇娌℃湁瑁呰繃绠辩殑搴忓垪鐮
+
+
+
+
+ 搴忓垪鍙
+
+
+
+
+ wms绯荤粺璇锋眰搴忓垪鐮佽繑鍥
+
+
+
+
+ 搴忓垪鍙
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 鍒涘缓浜
+
+
+
+
+ 鐢熸垚鏃堕棿
+
+
+
+
+ 搴忓垪鍙风敓鎴愯褰曞垪琛ㄨ繑鍥炲弬鏁
+
+
+
+
+ 涓婚敭缂栧彿
+
+
+
+
+ 鐗╂枡瑙勬牸鍨嬪彿
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 鐗╂枡鍚嶇О
+
+
+
+
+ 鐗╂枡鏉$爜
+
+
+
+
+ 閲囪喘鍗曞彿
+
+
+
+
+ 鐢熸垚瀹屾垚 1 鐢熸垚涓 0
+
+
+
+
+ 鐢熸垚鏉$爜鏁伴噺
+
+
+
+
+ 鎵撳嵃鏁
+
+
+
+
+ 涓嬭浇鏁
+
+
+
+
+ 浣跨敤鏁
+
+
+
+
+ 鍒涘缓浜
+
+
+
+
+ 鐢熸垚鏃堕棿
+
+
+
+
+ 鐢熸垚瀹屾垚鏃堕棿
+
+
+
+
+ 渚涘簲鍟嗘垨缁勭粐
+
+
+
+
+ 鏄惁鏇存敼杩囩墿鏂欑紪鐮
+
+
+
+
+ 鏄惁涓や欢瑁
+
+
+
+
+ 搴忓垪鍙风敓鎴愯褰曞垪琛ㄨ姹傚弬鏁
+
+
+
+
+ 缁勭粐Code
+
+
+
+
+ 渚涘簲鍟嗘垨缁勭粐
+
+
+
+
+ 鍒涘缓鏃堕棿
+
+
+
+
+ 鍒涘缓鏃堕棿
+
+
+
+
+ 搴忓垪鍙烽泦鍚
+
+
+
+
+ 鐢熸垚瀹屾垚 true 鐢熸垚涓 false 涓嶆悳 null鎴栦笉浼
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 閲囪喘鍗曞彿
+
+
+
+
+ 绠卞彿
+
+
+
+
+ 鏁板瓧搴忓垪鍙
+
+
+
+
+ 鐢熸垚浜
+
+
+
+
+ 鏄惁鏇存敼杩囩墿鏂欑紪鐮
+
+
+
+
+ 鏄惁涓や欢瑁
+
+
+
+
+ 淇敼搴忓垪鍙风殑鐗╂枡
+
+
+
+
+ 鐢熸垚璁板綍Id
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 鎿嶄綔(搴忓垪鍙)
+
+
+
+
+ ID璇锋眰瀵硅薄
+
+
+
+
+ ID
+
+
+
+
+ Id闆嗗悎
+
+
+
+
+ 鍚嶇О璇锋眰瀵硅薄
+
+
+
+
+ 鍚嶇О
+
+
+
+
+
+
+
+
+
+ 缂栫爜
+
+
+
+
+ erp瀵瑰簲Code
+
+
+
+
+ 鍚嶇О
+
+
+
+
+ 缁勭粐绫诲瀷锛1涓轰富涓氬姟锛2涓鸿緟涓氬姟 3涓哄伐鍘
+
+
+
+
+ 鏈綅甯佸悕绉
+
+
+
+
+ 鏈綅甯乮d
+
+
+
+
+ 鑷姩鎺掍骇榛樿鍏ュ簱浠撳簱
+
+
+
+
+ 鏄惁绂佺敤锛歵rue涓虹鐢紝false涓哄惎鐢
+
+
+
+
+ 鍗曠偣鏁版嵁-璇锋眰缁熶竴瀵硅薄
+
+
+
+
+ 鍏徃ID
+
+
+
+
+ 鍗曠偣鏁版嵁鍝嶅簲-缁熶竴瀵硅薄
+
+
+
+
+ ID
+
+
+
+
+ 缂栫爜
+
+
+
+
+ 鍚嶇О
+
+
+
+
+ 缁勭粐缂栫爜瀵瑰簲閲戣澏
+
+
+
+
+ 鏁板
+
+
+
+
+ 鏄惁绂佺敤锛歵rue涓虹鐢紝false涓哄惎鐢
+
+
+
+
+ 浠撲綅
+
+
+
+
+ 浠撳簱ID
+
+
+
+
+ 渚涘簲鍟嗕俊鎭
+
+
+
+
+ 渚涘簲鍟咺d
+
+
+
+
+ 渚涘簲鍟嗙紪鐮
+
+
+
+
+ 渚涘簲鍟嗗悕瀛
+
+
+
+
+ 缁勭粐杩斿洖瀵硅薄
+
+
+
+
+
+
+
+
+
+ 缂栫爜
+
+
+
+
+ 鍚嶇О
+
+
+
+
+ 缁勭粐绫诲瀷锛1涓轰富涓氬姟锛2涓鸿緟涓氬姟 3涓哄伐鍘
+
+
+
+
+ 鏈綅甯佸悕绉
+
+
+
+
+ 鏈綅甯乮d
+
+
+
+
+ 鑷姩鎺掍骇榛樿鍏ュ簱浠撳簱
+
+
+
+
+ 鏄惁绂佺敤锛歵rue涓虹鐢紝false涓哄惎鐢
+
+
+
+
+ erp瀵瑰簲Code
+
+
+
+
+ 鍛樺伐鍝嶅簲
+
+
+
+
+ StaffID
+
+
+
+
+ 鍚嶇О
+
+
+
+
+ 閮ㄩ棬ID
+
+
+
+
+ 鐢佃瘽
+
+
+
+
+ 鏄惁绂佺敤锛歵rue涓虹鐢紝false涓哄惎鐢
+
+
+
+
+ 绯荤粺code鑾峰彇
+
+
+
+
+ 绯荤粺code
+
+
+
+
+ 浠撳簱鍚嶇О
+
+
+
+
+ 浠撳簱鍝嶅簲
+
+
+
+
+ id
+
+
+
+
+ 鍚嶇О
+
+
+
+
+ 缂栫爜
+
+
+
+
+ 瀵瑰簲閲戣澏鐨勭粍缁囩紪鐮
+
+
+
+
+ 鏄惁绂佺敤锛歵rue涓虹鐢紝false涓哄惎鐢
+
+
+
+
+ 浠撲綅鍝嶅簲瀵硅薄
+
+
+
+
+ id
+
+
+
+
+ 浠撳簱ID
+
+
+
+
+ 浠撳簱鍚嶇О
+
+
+
+
+ 浠撳簱code
+
+
+
+
+ 瀵瑰簲鐨勯噾铦剁粍缁囩紪鐮
+
+
+
+
+ 鍚嶇О
+
+
+
+
+ 缂栫爜
+
+
+
+
+ 浜哄憳璇锋眰瀵硅薄
+
+
+
+
+ 鐢ㄦ埛ID
+
+
+
+
+ 璇锋眰浠撲綅瀵硅薄
+
+
+
+
+ 鍚嶇О
+
+
+
+
+ 浠撳簱
+
+
+
+
+ 缁勭粐
+
+
+
+
+ 鐢熸垚搴忓垪鍙锋ā鏉
+
+
+
+
+ 鐗╂枡瑙勬牸鍨嬪彿
+
+
+
+
+ 鐗╂枡鍚嶇О
+
+
+
+
+ 閲囪喘鍗曞彿
+
+
+
+
+ 鍩虹被
+
+
+
+
+ Id
+
+
+
+
+ 鍩虹被
+
+
+
+
+ Id
+
+
+
+
+ 瀹氫箟cache
+
+
+
+
+ 璁剧疆cache
+
+ 閿
+ 鍊
+
+
+
+ 鑾峰彇cache
+
+ 閿
+
+
+
+
+ 鏃堕棿杞崲
+
+
+
+
+ 鏃堕棿鎴宠鏃跺紑濮嬫椂闂
+
+
+
+
+ DateTime杞崲涓10浣嶆椂闂存埑锛堝崟浣嶏細绉掞級
+
+ DateTime
+ 10浣嶆椂闂存埑锛堝崟浣嶏細绉掞級
+
+
+
+ DateTime杞崲涓13浣嶆椂闂存埑锛堝崟浣嶏細姣锛
+
+ DateTime
+ 13浣嶆椂闂存埑锛堝崟浣嶏細姣锛
+
+
+
+ 10浣嶆椂闂存埑锛堝崟浣嶏細绉掞級杞崲涓篋ateTime
+
+ 10浣嶆椂闂存埑锛堝崟浣嶏細绉掞級
+ DateTime
+
+
+
+ 13浣嶆椂闂存埑锛堝崟浣嶏細姣锛夎浆鎹负DateTime
+
+ 13浣嶆椂闂存埑锛堝崟浣嶏細姣锛
+ DateTime
+
+
+
+ 杞瓧绗︿覆
+
+ 锛
+ DateTime
+
+
+
+ 杞瓧绗︿覆
+
+ 锛
+ DateTime
+
+
+
+ 杞瓧绗︿覆(娌℃湁绌烘牸)
+
+ 锛
+ DateTime
+
+
+
+ 杞瓧绗︿覆(娌℃湁绌烘牸)
+
+ 锛
+ DateTime
+
+
+
+ 杞瓧绗︿覆
+
+ 锛
+ DateTime
+
+
+
+ 杞瓧绗︿覆
+
+ 锛
+ DateTime
+
+
+
+ 杞瓧绗︿覆
+
+ 锛
+ DateTime
+
+
+
+ 杞瓧绗︿覆
+
+ 锛
+ DateTime
+
+
+
+ 涓や釜鏃堕棿鐨勫樊锛氬垎閽
+
+
+
+
+
+
+
+ 褰撳墠鏃堕棿鍜屼粖鏅0鐐逛箣闂寸殑鏃堕棿鐨勫樊锛氬垎閽
+
+
+
+
+
+ 淇濆瓨鍗曚釜key value
+
+ 淇濆瓨鐨勫
+ 杩囨湡鏃堕棿
+
+
+
+ 鑾峰彇鍗曚釜key鐨勫
+
+
+
+
+ 绉婚櫎redis
+
+
+
+
+
+
+ 鑾峰彇涓涓猭ey鐨勫璞
+
+
+
+
+ 淇濆瓨涓涓璞
+
+
+
+
+
+ 缁撴灉瀵硅薄
+
+
+
+
+ 杩斿洖缁撴灉瀵硅薄
+
+
+
+
+ 杩斿洖缁撴灉瀵硅薄
+
+
+
+
+
+
+ 杩斿洖缁撴灉瀵硅薄
+
+
+
+
+
+ 鎵ц鏄惁鎴愬姛
+
+
+
+
+ 鎵ц鏄惁鎴愬姛
+
+
+
+
+ 涓氬姟杩斿洖鐮
+
+
+
+
+ 鎵ц杩斿洖娑堟伅
+
+
+
+
+ 杞崲瀹炰綋
+
+
+
+
+
+ 杞崲瀹炰綋
+
+
+
+
+
+
+ 杞崲瀹炰綋
+
+ 缁撴灉瀵硅薄
+
+
+
+ 鍒涘缓杩斿洖淇℃伅锛堣繑鍥炲鐞嗗け璐ワ級
+
+ 缁撴灉娑堟伅
+ 缁撴灉鐘舵
+
+
+
+
+ 鍒涘缓杩斿洖淇℃伅锛堣繑鍥炲鐞嗗け璐ワ級
+
+ 缁撴灉娑堟伅
+
+
+
+
+ 鍒涘缓杩斿洖淇℃伅锛堣繑鍥炲鐞嗗け璐ワ級
+
+ 缁撴灉
+
+
+
+
+ 鍒涘缓杩斿洖淇℃伅锛堣繑鍥炲鐞嗗け璐ワ級
+
+ 缁撴灉娑堟伅
+ 缁撴灉鐘舵
+
+
+
+
+ 鍒涘缓杩斿洖淇℃伅锛堣繑鍥炲鐞嗗け璐ワ級
+
+ 缁撴灉娑堟伅
+
+
+
+
+ 鍒涘缓鎴愬姛鐨勮繑鍥炴秷鎭
+
+
+
+
+
+ 鍒涘缓鎴愬姛鐨勮繑鍥炴秷鎭
+
+
+
+
+
+ 杞崲涓 task
+
+
+
+
+
+ 瀹炰綋缁撴灉瀵硅薄
+
+
+
+
+
+ 瀹炰綋缁撴灉
+
+
+
+
+ 瀹炰綋缁撴灉
+
+
+
+
+
+ 杩斿洖缁撴灉瀵硅薄
+
+
+
+
+
+
+ 杩斿洖瀵硅薄
+
+
+
+
+ 鍒涘缓鎴愬姛鐨勮繑鍥炴秷鎭
+
+
+
+
+
+ 鍒涘缓杩斿洖淇℃伅锛堣繑鍥炲鐞嗗け璐ワ級
+
+ 缁撴灉娑堟伅
+ 缁撴灉鐘舵
+
+
+
+
+ 鍒涘缓杩斿洖淇℃伅锛堣繑鍥炲鐞嗗け璐ワ級
+
+ 缁撴灉娑堟伅
+
+
+
+
+ 鍒涘缓杩斿洖淇℃伅锛堣繑鍥炲鐞嗗け璐ワ級
+
+ 缁撴灉
+
+
+
+
+ 杞崲涓簍ask
+
+
+
+
+
+ 澶勭悊鎴愬姛
+
+
+
+
+ 閿欒璇锋眰
+
+
+
+
+ 鏈巿鏉
+
+
+
+
+ 鎷掔粷璇锋眰
+
+
+
+
+ 鏈壘鍒版湇鍔
+
+
+
+
+ 绯荤粺閿欒
+
+
+
+
+ 璇锋眰瓒呮椂
+
+
+
+
+ 杩斿洖瀵硅薄鎵╁睍
+
+
+
+
+ 鏍规嵁鏇挎崲绗﹁繘琛屾浛鎹㈡敮浠
+
+ 缁撴灉瀵硅薄
+ 鏇挎崲瀛楃
+
+
+
+
+ 闆嗗悎缁撴灉绫
+
+
+
+
+
+ 瀹炰綋闆嗗悎缁撴灉
+
+
+
+
+ 瀹炰綋闆嗗悎缁撴灉
+
+ 瀹炰綋闆嗗悎
+
+
+
+ 瀹炰綋闆嗗悎缁撴灉
+
+ 瀹炰綋闆嗗悎
+ 缁撴灉鐘舵
+
+
+
+ 鍒涘缓鎴愬姛鐨勮繑鍥炴秷鎭
+
+
+
+
+
+ 鍒涘缓鎴愬姛鐨勮繑鍥炴秷鎭
+
+
+
+
+
+ 鍒涘缓杩斿洖淇℃伅锛堣繑鍥炲鐞嗗け璐ワ級
+
+ 缁撴灉娑堟伅
+ 缁撴灉鐘舵
+
+
+
+
+ 鍒涘缓杩斿洖淇℃伅锛堣繑鍥炲鐞嗗け璐ワ級
+
+ 缁撴灉娑堟伅
+
+
+
+
+ 鍒涘缓杩斿洖淇℃伅锛堣繑鍥炲鐞嗗け璐ワ級
+
+ 缁撴灉
+
+
+
+
+ 杞崲涓 task
+
+
+
+
+
+ 鍒嗛〉鍒楄〃缁撴灉瀵硅薄
+
+
+
+
+ 瀹炰綋鍒嗛〉闆嗗悎缁撴灉
+
+
+
+
+ 瀹炰綋鍒嗛〉闆嗗悎缁撴灉
+
+ 瀹炰綋闆嗗悎
+ 鎬绘潯鏁
+
+
+
+ 瀹炰綋鍒嗛〉闆嗗悎缁撴灉
+
+
+
+
+
+
+
+ Total count of Items.
+
+
+
+
+ 鍒涘缓鎴愬姛鐨勮繑鍥炴秷鎭
+
+ 瀹炰綋闆嗗悎
+ 鎬绘潯鏁
+
+
+
+
+ 鍒涘缓鎴愬姛鐨勮繑鍥炴秷鎭
+
+
+
+
+
+ 鍒涘缓杩斿洖淇℃伅锛堣繑鍥炲鐞嗗け璐ワ級
+
+ 缁撴灉娑堟伅
+ 缁撴灉鐘舵
+
+
+
+
+ 鍒涘缓杩斿洖淇℃伅锛堣繑鍥炲鐞嗗け璐ワ級
+
+ 缁撴灉娑堟伅
+
+
+
+
+ 鍒涘缓杩斿洖淇℃伅锛堣繑鍥炲鐞嗗け璐ワ級
+
+ 缁撴灉
+
+
+
+
+ 杞崲涓 task
+
+
+
+
+
+ 鐢ㄤ簬绛惧悕鐨勭閽
+
+
+
+
+ 鐢ㄤ簬楠岃瘉鐨勫叕閽
+
+
+
+
+ 绛惧悕
+
+ 绛惧悕鍐呭
+ 绉侀挜
+ 缂栫爜绫诲瀷
+ 鍔犲瘑鏂瑰紡
+ 鍔犲瘑瀵嗘枃
+
+
+
+ 楠岃瘉绛惧悕
+
+ 楠岃瘉绛惧悕鍐呭
+ 鍏挜
+ 绛惧悕瀵嗘枃
+ 缂栫爜绫诲瀷
+ 鍔犲瘑鏂瑰紡
+ 鍔犲瘑瀵嗘枃
+
+
+
+ 瑙e瘑
+
+ 瀵嗘枃
+ 绉侀挜
+ 缂栫爜
+ 鏄庢枃
+
+
+
+ 鍔犲瘑
+
+ 鏄庢枃
+ 鍏挜
+ 缂栫爜
+ 瀵嗘枃
+
+
+
+ 瑙e瘑鍏挜
+
+
+
+
+
+
+
+
+ 绉侀挜瑙e瘑
+
+
+
+
+
+
+
+
+ Pkcs#8 璇佷功瑙e瘑
+
+
+
+
+
+
+ 鑾峰彇Integer鐨勫ぇ灏
+
+
+
+
+
+
+ 鑾峰彇绉侀挜鐨勭被鍨
+
+
+
+
+
+
+ php鍗曠偣鐧诲綍瑙f瀽token鏍规嵁瀵嗛挜-鍒嗘瑙f瀽
+
+
+
+
+
+
+
+ 瀵嗛挜绫诲瀷鏋氫妇
+
+
+
+
+ 1024
+
+
+
+
+ 2048
+
+
+
+
+ 1023
+
+
+
+
+ 2048
+
+
+
+
+ 鏁板煎鐞
+
+
+
+
+ Decimal 鏁板肩簿搴﹁浆鎹
+
+ decimal鏁板
+ 绮惧害鍊
+ 鑸嶅叆绫诲瀷锛1涓鸿繘浣嶏紝2涓鸿垗浣嶏紝3涓哄洓鑸嶄簲鍏
+ decimal鏁板
+
+
+
+ Decimal 鏁板肩簿搴﹁浆鎹
+
+ decimal鏁板
+ 绮惧害鍊
+ 鑸嶅叆绫诲瀷锛1涓鸿繘浣嶏紝2涓鸿垗浣嶏紝3涓哄洓鑸嶄簲鍏
+ decimal鏁板
+
+
+
+ Decimal 鍘绘帀鍚庨潰鏃犳晥鐨0
+
+
+
+
+
+
diff --git a/src/BarCode.Web.Api/wwwroot/BarCode.Web.Domain.xml b/src/BarCode.Web.Api/wwwroot/BarCode.Web.Domain.xml
new file mode 100644
index 0000000..80207e2
--- /dev/null
+++ b/src/BarCode.Web.Api/wwwroot/BarCode.Web.Domain.xml
@@ -0,0 +1,4028 @@
+
+
+
+ BarCode.Web.Domain
+
+
+
+
+ 绠变俊鎭ご
+ alter table t_barcode_box_details AUTO_INCREMENT=50000;
+
+
+
+
+ ID
+
+
+
+
+ 绠辩紪鍙
+
+
+
+
+ 渚涘簲鍟咰ode
+
+
+
+
+ 缁勭粐Code
+
+
+
+
+ 鍏徃Id
+
+
+
+
+ 绠辩姸鎬
+
+
+
+
+ 瑁呯寮濮嬫椂闂
+
+
+
+
+ 瑁呯缁撴潫鏃堕棿(瀹屾垚瑁呯鏃堕棿)
+
+
+
+
+ 瑁呯鐢ㄦ埛
+
+
+
+
+ 绠卞瓙鍒涘缓鐢ㄦ埛
+
+
+
+
+ 鍒涘缓鏃堕棿
+
+
+
+
+ 绠卞彿鎵撳嵃娆℃暟
+
+
+
+
+ 鏈鏂版墦鍗版椂闂
+
+
+
+
+ 鏄庣粏
+
+
+
+
+ 鎵撳嵃
+
+
+
+
+ 瑙g粦搴忓垪鍙
+
+
+
+
+
+
+ 娓呯┖
+
+
+
+
+ 瑁呯
+
+
+
+
+ 寮濮嬭绠
+
+
+
+
+
+
+ 閲嶇疆
+
+
+
+
+ 鑰乷ps绠变俊鎭槑缁
+ alter table t_barcode_box_details AUTO_INCREMENT=50000;
+
+
+
+
+ ID
+
+
+
+
+ 鍗曟嵁澶碔D
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 鏁伴噺锛堣绠辨暟閲忥級
+
+
+
+
+ 搴忓垪鍙
+
+
+
+
+ 绠卞敍琛
+
+
+
+
+ ID
+
+
+
+
+ 渚涘簲鍟咰ode
+
+
+
+
+ 缁勭粐Code
+
+
+
+
+ 璁㈠崟缂栧彿
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 浜у搧鏁伴噺
+
+
+
+
+ 瑁呯鏁伴噺
+
+
+
+
+ 瑁呯鍑閲
+
+
+
+
+ 瑁呯姣涢噸
+
+
+
+
+ 灏剧鏁伴噺
+
+
+
+
+ 灏剧鍑閲
+
+
+
+
+ 灏剧姣涢噸
+
+
+
+
+ 澶囨敞
+
+
+
+
+ 鎿嶄綔浜
+
+
+
+
+ 鍒涘缓鏃堕棿锛堢敓鎴愭椂闂达級
+
+
+
+
+ 娴佹按鍙(寮濮)
+
+
+
+
+ 娴佹按鍙(缁撴潫)
+
+
+
+
+ 缂栧彿闆嗗悎
+
+
+
+
+ 鍒涘缓
+
+
+
+
+
+ 鐢熸垚缂栧彿
+
+
+
+
+
+
+ 绠卞敍琛-缂栧彿琛
+
+
+
+
+ ID
+
+
+
+
+ 涓婄骇ID
+
+
+
+
+ 绠卞敍缂栧彿
+
+
+
+
+ 绠卞敍缂栧彿-棣栦綅
+
+
+
+
+ 绠卞敍缂栧彿-鏈熬搴忓彿
+
+
+
+
+ 鏄惁鏄熬绠
+
+
+
+
+ 鎺掑簭
+
+
+
+
+ 娴佹按鍙(寮濮)
+
+
+
+
+ 娴佹按鍙(缁撴潫)
+
+
+
+
+ 鐢熸垚缂栧彿
+
+
+
+
+
+
+ 鐢熸垚璁″垝绠$悊
+
+
+
+
+ 涓婚敭 璁㈠崟缂栧彿
+
+
+
+
+ 鍚屾绫诲瀷
+
+
+
+
+ 鏁伴噺
+
+
+
+
+ 鏂囦欢涓嬭浇绫诲瀷
+
+
+
+
+ 涓婚敭 璁㈠崟缂栧彿
+
+
+
+
+ 鏃ユ湡
+
+
+
+
+ 鍗曟嵁绫诲瀷(浠诲姟绫诲瀷)
+
+
+
+
+ 鐘舵
+
+
+
+
+ 鍏徃Id
+
+
+
+
+ 缁勭粐缂栫爜
+
+
+
+
+ 鏂囦欢鍦板潃
+
+
+
+
+ 鎿嶄綔浜
+
+
+
+
+ 澶辫触鍘熷洜
+
+
+
+
+ 渚涘簲鍟嗙紪鐮
+
+
+
+
+ 鐗╂枡
+
+
+
+
+ ID
+
+
+
+
+ 缁勭粐Id
+
+
+
+
+ 缁勭粐缂栫爜
+
+
+
+
+ 鐗╂枡ID
+
+
+
+
+ 鐗╂枡鍚嶇О
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 鐗╂枡瑙勬牸鍨嬪彿
+
+
+
+
+ 鍩烘湰鍗曚綅
+
+
+
+
+ 鍩烘湰鍗曚綅鍚嶇О
+
+
+
+
+ 鍩烘湰鍗曚綅缂栫爜
+
+
+
+
+ 鏉$爜
+
+
+
+
+ 鏄惁鍚敤鎵瑰彿绠$悊
+
+
+
+
+ 鐗╂枡Id 32杩涘埗瀛楃涓
+
+
+
+
+ 闃蹭吉鐮佺敓鎴愯褰
+
+
+
+
+ 涓婚敭 璁㈠崟缂栧彿
+
+
+
+
+ 闃蹭吉鐮佹壒娆
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 鍏徃Id
+
+
+
+
+ 缁勭粐Id
+
+
+
+
+ 渚涘簲鍟哻ode
+
+
+
+
+ 鐢熸垚瀹屾垚 1 鐢熸垚涓 0
+
+
+
+
+ 鐢熸垚鏉$爜鏁伴噺
+
+
+
+
+ 涓嬭浇鏁
+
+
+
+
+ 鍒涘缓浜
+
+
+
+
+ 鐢熸垚鏃堕棿
+
+
+
+
+ 鐢熸垚瀹屾垚鏃堕棿
+
+
+
+
+ 鐢熸垚瀹屾垚
+
+
+
+
+ 涓嬭浇
+
+
+
+
+ 鐢熸垚鎵瑰彿
+
+
+
+
+ 闃蹭吉鐮
+
+
+
+
+ 涓婚敭 璁㈠崟缂栧彿
+
+
+
+
+ 缁勭粐Code
+
+
+
+
+ 渚涘簲鍟哻ode
+
+
+
+
+ 鐢熸垚璁板綍Id
+
+
+
+
+ 闃蹭吉鐮
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 涓嬭浇娆℃暟
+
+
+
+
+ 鏈鏂颁笅杞芥椂闂
+
+
+
+
+ 鏌ヨ娆℃暟
+
+
+
+
+ 绗竴娆℃煡璇㈡椂闂
+
+
+
+
+ 鍒涘缓浜
+
+
+
+
+ 鐢熸垚鏃堕棿
+
+
+
+
+ 涓嬭浇
+
+
+
+
+ 鐢熸垚闃蹭吉鐮
+
+
+
+
+ 琚煡璇
+
+
+
+
+ 搴忓垪鍙风敓鎴愯褰
+
+
+
+
+ 涓婚敭 璁㈠崟缂栧彿
+
+
+
+
+ 鐗╂枡Id杞32杩涘埗
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 鏄惁鏇存敼杩囩墿鏂欑紪鐮
+
+
+
+
+ 閲囪喘鍗曞彿
+
+
+
+
+ 渚涘簲鍟哻ode
+
+
+
+
+ 鍏徃Id
+
+
+
+
+ 缁勭粐Id
+
+
+
+
+ 鐢熸垚瀹屾垚 1 鐢熸垚涓 0
+
+
+
+
+ 鐢熸垚鏉$爜鏁伴噺
+
+
+
+
+ 鐢熸垚鏉$爜璧峰浣嶆暟閲(鍚庣鐢ㄦ潵鍋氭爣璁)
+
+
+
+
+ 鎵撳嵃鏁
+
+
+
+
+ 涓嬭浇鏁
+
+
+
+
+ 浣跨敤鏁
+
+
+
+
+ 鍒涘缓浜
+
+
+
+
+ 鏄惁濂楄锛岄粯璁ゆ槸涓1锛1鍗充负鍗曚釜锛屼笉鏄瑁匒lter by yzh
+
+
+
+
+ 鐢熸垚鏃堕棿
+
+
+
+
+ 鐢熸垚瀹屾垚鏃堕棿
+
+
+
+
+ 鐢熸垚瀹屾垚
+
+
+
+
+ 鎵撳嵃
+
+
+
+
+ 涓嬭浇
+
+
+
+
+ 鍙嶅啓浣跨敤鏁
+
+
+
+
+
+ 鏍囪淇敼鐗╂枡
+
+
+
+
+ 搴忓垪鍙 榛樿Id浠 200000000 璧峰
+ alter table users AUTO_INCREMENT=200000000;
+
+
+
+
+ 涓婚敭 璁㈠崟缂栧彿
+
+
+
+
+ 缁勭粐Code
+
+
+
+
+ 渚涘簲鍟哻ode
+
+
+
+
+ 鐢熸垚璁板綍Id
+
+
+
+
+ 搴忓垪鍙
+
+
+
+
+ 濂楄(1浠h〃鍗曞锛2浠h〃2濂楋紝3浠h〃3濂楋級 aLTER BY YZH
+
+
+
+
+ 褰撴搴忓彿锛岀敤鏉ヨ褰曞綋娆℃墍浜х敓鏃舵墍澶勭殑搴忓垪鍙
+
+
+
+
+ 搴忓垪鍙
+
+
+
+
+ 浜х敓绗簩涓
+
+
+
+
+ 鐗╂枡Id
+
+
+
+
+ 鐗╂枡缂栫爜
+
+
+
+
+ 鑰佺墿鏂欑紪鐮(涓婁竴娆$墿鏂欑紪鐮)
+
+
+
+
+ 绠盜D
+
+
+
+
+ 鏁板瓧搴忓垪鐮
+
+
+
+
+ 鏁板瓧搴忓垪鐮(涓嶅寘鍚棩鏈)
+
+
+
+
+ 鏄惁浣跨敤
+
+
+
+
+ 鍒涘缓浜
+
+
+
+
+ 鐢熸垚鏃堕棿
+
+
+
+
+ 瀹屾垚瑁呯鏃堕棿
+
+
+
+
+ 鎵撳嵃娆℃暟
+
+
+
+
+ 涓嬭浇娆℃暟
+
+
+
+
+ 鏈鏂版墦鍗版椂闂
+
+
+
+
+ 鏈鏂颁笅杞芥椂闂
+
+
+
+
+ 鏄惁浣跨敤鐨勬槸鏁板瓧搴忓垪鐮佹湭浣跨敤null,鏁板瓧搴忓垪鐮乼rue,搴忓垪鐮乫alse
+
+
+
+
+ 鐢熸垚搴忓垪鐮
+
+
+
+
+ 鐢熸垚鏃堕棿搴忓垪鐮
+
+
+
+
+ 浜х敓濂楄缂栫爜 alter by yzh
+
+
+
+
+
+ 浜х敓绗簩涓簭鍒楀彿
+
+
+
+
+
+ 鎵撳嵃
+
+
+
+
+ 涓嬭浇
+
+
+
+
+ 瑁呯
+
+
+
+
+
+
+ 瑙g粦绠
+
+
+
+
+ wms绯荤粺鑾峰彇搴忓垪鐮佸悗 搴忓垪鐮佽皟鏁翠负宸蹭娇鐢
+
+
+
+
+ 淇敼鐗╂枡缂栫爜
+
+
+
+
+
+ 鍒楄〃瀛楁瀵煎嚭鎺ュ彛
+
+
+
+
+
+
+
+ 鍩虹鏁版嵁
+
+
+
+
+ 鏍规嵁鐢ㄦ埛绮剧‘鎼滅储鐢ㄦ埛
+
+
+
+
+
+
+ 鑾峰彇鎵鏈変汉鍛-鏍规嵁涓讳綋
+
+
+
+
+
+
+ 鏍规嵁浠撳簱鑾峰彇瀛愪粨搴
+
+ 浠撳簱id
+
+
+
+
+ 鑾峰彇浠撲綅锛氭牴鎹畁ame妯$硦锛屽拰绯荤粺code鍜屽叕鍙
+
+
+
+
+
+
+
+
+ 鑾峰彇浠撲綅璇︽儏锛氭牴鎹粨浣岻D鍜屽叕鍙窱D
+
+
+
+
+
+
+
+ 鑾峰彇浠撲綅闆嗗悎锛氭牴鎹粨浣岻D闆嗗悎鍜屽叕鍙窱D
+
+
+
+
+
+
+
+ 鑾峰彇浠撲綅璇︽儏锛氭牴鎹粨浣岻D鍜屽叕鍙窱D
+
+
+
+
+
+
+
+ 鑾峰彇浠撲綅闆嗗悎锛氭牴鎹粨浣嶇紪鐮侀泦鍚堝拰鍏徃ID
+
+
+
+
+
+
+
+ 鑾峰彇浠撳簱
+
+
+
+
+
+ 鑾峰彇浜嬪姟 鐢ㄦ潵澶勭悊鍗虫椂搴撳瓨
+
+
+
+
+
+ 鑾峰彇浜嬪姟 鐢ㄦ潵澶勭悊鍗虫椂搴撳瓨
+
+
+
+
+
+ 绠卞敍-浠撳偍鎺ュ彛
+
+
+
+
+ 鍒楄〃鍒嗛〉
+
+
+
+
+
+
+
+ 娣诲姞
+
+
+
+
+
+
+
+ 璇︽儏-鏍规嵁鏈鏂扮殑ID
+
+
+
+
+
+ 鍒楄〃-璇︽儏淇℃伅鍒楄〃
+
+
+
+
+
+
+
+ 鑾峰彇鏈鏂扮殑缂栧彿瀹炰綋
+
+
+
+
+
+ 鎵归噺鍒犻櫎
+
+
+
+
+
+
+
+ 鑰乷ps绠变俊鎭
+
+
+
+
+ 鑾峰彇鍒楄〃
+
+
+
+
+
+
+
+ 鎵归噺娣诲姞
+
+
+
+
+
+
+ 鏌ヨ瀹炰綋闆嗗悎
+
+
+ 鏌ヨ瀹炰綋闆嗗悎
+
+
+
+ 鐢熸垚鏁版嵁绠$悊
+
+
+
+ 鑾峰彇鏈鏂颁竴娆℃洿鏂版椂闂
+
+
+ 瀹氭椂浠诲姟鎵ц鍚庢洿鏂版椂闂
+
+
+ 瀹氭椂浠诲姟鎵ц鍚庡垱寤
+
+
+
+ 淇濆瓨
+
+
+
+
+
+
+ 缂栬緫
+
+
+
+
+
+
+ 鑾峰彇閿鍞垪琛
+
+
+
+
+
+ 鍏徃Id
+
+
+
+
+ 鍛樺伐ID
+
+
+
+
+ 鐧诲綍鐢ㄦ埛淇℃伅
+
+
+
+
+ 鐗╂枡浠撳偍鎺ュ彛
+
+
+
+
+ 鐗╂枡娣诲姞
+
+
+
+
+
+
+
+ 鍒楄〃
+
+
+
+
+
+ 鐗╂枡
+
+
+
+
+
+
+ 鐗╂枡
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 鍒楄〃
+
+
+
+
+
+
+
+ 鍒楄〃(鑾峰彇鎵鏈夋病鏈塱d32杩涘埗鐨勭墿鏂)
+
+
+
+
+
+ 淇敼鐗╂枡
+
+
+
+
+
+
+
+ 闆嗗悎
+
+
+
+
+
+
+ 闃蹭吉鐮佺敓鎴愯褰
+
+
+
+ 鑾峰彇鍒楄〃
+
+
+ 鏂板
+
+
+ 缂栬緫
+
+
+ 鎵归噺娣诲姞
+
+
+ 淇敼瀹炰綋闆嗗悎
+
+
+ 鏌ヨ瀹炰綋闆嗗悎
+
+
+ 鏌ヨ瀹炰綋
+
+
+ 鑾峰彇褰撳ぉ鐢熸垚璁板綍鏉℃暟
+
+
+
+ 闃蹭吉鐮
+
+
+
+ 鑾峰彇鍒楄〃
+
+
+ 鎵归噺娣诲姞
+
+
+ 淇敼瀹炰綋闆嗗悎
+
+
+ 鏌ヨ瀹炰綋闆嗗悎
+
+
+ 鏍规嵁鐢熸垚璁板綍id鏌ヨ搴忓垪鐮
+
+
+ 鏍规嵁鐢熸垚璁板綍id鏌ヨ搴忓垪鐮
+
+
+ 鏌ヨ瀹炰綋
+
+
+ 淇敼瀹炰綋
+
+
+
+ 涓嬭浇鍙嶅啓 鎵цsql璇彞
+
+
+
+
+
+
+ 搴忓垪鐮
+
+
+
+
+ 鑾峰彇鍒楄〃
+
+
+
+
+
+
+
+ 鎵归噺娣诲姞
+
+
+
+
+
+
+ 淇敼瀹炰綋闆嗗悎
+
+
+ 鏌ヨ瀹炰綋闆嗗悎
+
+
+ 鏌ヨ瀹炰綋闆嗗悎
+
+
+ 鏍规嵁绠盜d鏌ヨ搴忓垪鐮
+
+
+ 鏍规嵁鐢熸垚璁板綍id鏌ヨ搴忓垪鐮
+
+
+ 鏍规嵁濂楄鐮佹煡璇㈠簭鍒楃爜
+
+
+ 鏍规嵁鐢熸垚璁板綍id鏌ヨ搴忓垪鐮
+
+
+ 鏍规嵁绠卞彿鏌ヨ搴忓垪鐮
+
+
+ 鏌ヨ瀹炰綋
+
+
+ 鏌ヨ瀹炰綋
+
+
+ WMS鏌ヨ瀹炰綋
+
+
+
+ 鏍规嵁搴忓垪鍙锋悳绱俊鎭
+
+
+
+
+
+
+ 鎵归噺娣诲姞
+
+
+
+
+
+
+ 淇敼瀹炰綋闆嗗悎
+
+
+ 鏌ヨ瀹炰綋闆嗗悎
+
+
+ 鏌ヨ瀹炰綋
+
+
+
+ 鑾峰彇浜嬪姟 鐢ㄦ潵澶勭悊鍗虫椂搴撳瓨
+
+
+
+
+
+ 鑾峰彇浜嬪姟 鐢ㄦ潵澶勭悊鍗虫椂搴撳瓨
+
+
+
+
+
+ 绠卞敍-鏈嶅姟鎺ュ彛
+
+
+
+
+ 鐢熸垚
+
+
+
+
+
+
+
+ 鍒楄〃-鍒嗛〉
+
+
+
+
+
+
+
+ 绠
+
+
+
+
+ wms鑾峰彇宸插畬鎴愯绠辩淇℃伅
+
+
+
+
+
+
+
+ 瑁呯
+
+
+
+
+
+
+
+ 鐢熸垚绠辩爜
+
+
+
+
+
+
+ 鎵撳嵃
+
+
+
+ 鍒犻櫎
+
+
+
+
+
+ 娓呯┖
+
+
+
+
+ 閲嶆柊瑁呯
+
+
+
+ 寮濮嬭绠
+
+
+
+
+
+ 鍏ㄥ瓧娈靛鍑烘暟鎹
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 鍒楄〃瀛楁瀵煎嚭鏁版嵁
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 鍒楄〃椤靛鍑烘暟鎹
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 涓婁紶鏂囦欢
+
+
+
+ 鏄惁寮鍚嚜鍔ㄥ垹闄 濡傛灉寮鍚 3澶╁悗鑷姩鍒犻櫎 瀵煎嚭鐨別xecl鏂囦欢
+
+
+
+
+ 闃蹭吉鐮
+
+
+
+
+ 涓嬭浇
+
+
+
+
+
+
+ 鐢熸垚闃蹭吉鐮
+
+
+
+
+
+
+
+ 搴忓垪鍙锋湇鍔
+
+
+
+
+ 鐢熸垚搴忓垪鍙
+
+
+
+
+
+
+
+ 鎵撳嵃
+
+
+
+
+
+
+ 涓嬭浇
+
+
+
+
+
+
+ 瑁呯鍚庡弽鍐欎娇鐢ㄦ暟
+
+
+
+
+
+
+ 淇敼搴忓垪鍙风墿鏂
+
+
+
+
+
+
+ erp鍩虹鏁版嵁锛氭墿灞曟湇鍔℃帴鍙
+
+
+
+
+ 鑾峰彇鐗╂枡鍚嶇О
+
+
+
+
+
+
+ 鑾峰彇鐗╂枡缂栫爜
+
+
+
+
+
+
+
+ 鑾峰彇鐗╂枡瑙勬牸鍨嬪彿
+
+
+
+
+
+
+
+ 鑾峰彇鐗╂枡鍚嶇О
+
+
+
+
+
+
+ 鑾峰彇鐗╂枡瑙勬牸鍨嬪彿
+
+
+
+
+
+
+
+ 鑾峰彇鐗╂枡鍩烘湰鍗曚綅鍚嶇О
+
+
+
+
+
+
+
+ 鑾峰彇鐗╂枡鍩烘湰鍗曚綅鍚嶇О
+
+
+
+
+
+
+
+ 鑾峰彇鐗╂枡鐨勬潯鐮
+
+
+
+
+
+
+
+ 鑾峰彇鐗╂枡鐨勬潯鐮
+
+
+
+
+
+
+
+ 鑾峰彇鐗╂枡鍩烘湰鍗曚綅id
+
+
+
+
+
+
+
+ 鑾峰彇鐗╂枡鍩烘湰鍗曚綅缂栫爜
+
+
+
+
+
+
+
+ 鑾峰彇鐗╂枡鍩烘湰鍗曚綅缂栫爜
+
+
+
+
+
+
+
+ 鑾峰彇缁勭粐鍚嶇О
+
+
+
+
+
+
+
+ 鑾峰彇缁勭粐鍚嶇О
+
+
+
+
+
+
+
+ 鑾峰彇缁勭粐ID
+
+
+
+
+
+
+ 鑾峰彇渚涘簲鍟嗗悕绉
+
+
+
+
+
+
+
+ 鑾峰彇渚涘簲鍟嗗悕绉
+
+
+
+
+
+
+
+ 鑾峰彇瀹㈡埛鍚嶇О
+
+
+
+
+
+
+
+ 鑾峰彇浠撳簱鍚嶇О
+
+
+
+
+
+
+
+ 鑾峰彇浠撳簱鍚嶇О
+
+
+
+
+
+
+
+ 鑾峰彇浠撳簱缂栫爜
+
+
+
+
+
+
+
+ 鑾峰彇瀛愪粨搴撳悕绉
+
+
+
+
+
+
+
+ 鑾峰彇鍗曠偣缁勭粐鍚嶅瓧
+
+
+
+
+
+
+ 鏌ュ崟鎹被鍨嬬殑鍊
+
+
+
+
+
+ erp:鍗曟嵁鏌ヨ-鐗╂枡闆嗗悎
+
+
+
+
+
+ 鑾峰彇鐗╂枡id32杩涘埗
+
+
+
+
+
+
+ erp:鍩虹鏁版嵁-鐗╂枡淇℃伅
+
+
+
+
+
+
+ erp:鍩虹鏁版嵁-鐗╂枡淇℃伅
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 渚涘簲鍟
+
+
+
+
+
+ 瀹㈡埛
+
+
+
+
+
+ 鑾峰彇浠撳簱淇℃伅
+
+
+
+
+
+ 鑾峰彇浠撲綅淇℃伅淇℃伅 鏍规嵁浠撳簱缂栫爜
+
+
+
+
+
+ 鐧诲綍鏈嶅姟鎺ュ彛
+
+
+
+
+ 鍒涘缓token
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 鑾峰彇鍗曠偣鐢ㄦ埛淇℃伅
+
+
+
+
+
+
+
+ 鐧诲綍閫鍑
+
+
+
+
+
+
+ 鍒锋柊token
+
+
+
+
+
+
+
+ 鍗曠偣閫鍑洪氱煡token澶辨晥
+
+
+
+
+
+
+ 鑾峰彇鐧诲綍鍚庣殑淇℃伅
+
+
+
+
+
+
+ 鑾峰彇鑿滃崟
+
+
+
+
+
+
+ 鍗曠偣鏁版嵁杩斿洖鏈嶅姟鎺ュ彛
+
+
+
+
+ 鑾峰彇鍗曠偣鏁版嵁锛氭牴鎹柟娉曞悕鍜屽叕鍙窱D
+
+
+
+
+
+
+
+
+ 鑾峰彇鍗曠偣鏁版嵁锛氭牴鎹柟娉曞悕鍜屽叕鍙窱D
+
+
+
+
+
+
+
+
+ 鑾峰彇鍗曠偣鏁版嵁:鏍规嵁鏂规硶鍚嶅拰鍏徃ID
+
+
+
+
+
+
+
+
+ 鑾峰彇鍗曠偣鏁版嵁锛氭牴鎹柟娉曞悕鍜屽叕鍙窱D
+
+
+
+
+ 鍔犱笂ID闃叉缂栫爜閲嶅
+
+
+
+
+ 鏍规嵁鍚嶅瓧妯$硦鍖归厤
+
+
+
+
+
+
+
+
+ 鑾峰彇鍗曠偣鏁版嵁闆嗗悎锛氭硾鍨-鍚屾
+
+
+
+
+
+
+
+
+ 鑾峰彇鍗曠偣鏁版嵁闆嗗悎锛氭硾鍨-寮傛
+
+
+
+
+
+
+
+
+ 鑾峰彇鍗曠偣鏁版嵁闆嗗悎锛氭硾鍨-寮傛-鏃犵紦瀛
+
+
+
+
+
+
+
+
+ 鍗曠偣鏁版嵁锛氬彲瀵规帴鍏ㄩ儴鎺ュ彛
+
+ 杩斿洖瀵硅薄
+ 璇锋眰瀵硅薄
+ 鏂规硶鍚嶇О
+ 璇锋眰瀵硅薄
+ 鏂规硶鍚嶇О
+ 鎺у埗鍣ㄥ悕绉
+
+
+
+
+ 鍗曠偣鏁版嵁锛氬彲瀵规帴鍏ㄩ儴鎺ュ彛-鏃犵紦瀛
+
+
+
+
+
+
+
+
+
+
+
+ 鑾峰彇鍗曠偣鏁版嵁锛氳姹傚璞″拰鎺ュ彛鏂规硶鍚
+
+
+
+
+
+
+
+
+
+ 鑾峰彇瀹㈡埛浠撳簱
+
+
+
+
+
+
+
+ wms閲嶇疆绠变俊鎭
+
+
+
+
+ 閲嶇疆wms绠变俊鎭
+
+
+
+
+
+
+ 鐗╂枡鏈嶅姟鎺ュ彛
+
+
+
+
+ 鍚屾閲戣澏鏂扮墿鏂
+
+
+
+
+
+ 鍚屾鐗╂枡id32杩涘埗
+
+
+
+
+
+ mapper鏄犲皠
+
+
+
+
+ 绠眒apper鏄犲皠
+
+
+
+
+ 绠眒apper鏄犲皠
+
+
+
+
+ 闆嗗悎鏄犲皠
+
+
+
+
+ 鏄犲皠瀹炰綋閲 闆嗗悎灞炴
+
+
+
+
+
+
+
+
+
+
+ 鏄犲皠瀹炰綋閲 闆嗗悎灞炴
+
+
+
+
+
+
+
+
+
+
+ 鏁版嵁搴
+
+
+
+
+ redis
+
+
+
+
+ 鍗曠偣鏁版嵁璇锋眰鍦板潃-鍚庣浣跨敤鎺ュ彛鍦板潃
+
+
+
+
+ redis鏁版嵁鐩綍
+
+
+
+
+ 鏁版嵁搴撶被鍨
+
+
+
+
+ 鏄惁鍏佽缂撳瓨
+
+
+
+
+ 鍏徃ID
+
+
+
+
+ 閭
+
+
+
+
+ SMTP 鏈嶅姟鍣ㄥ湴鍧
+
+
+
+
+ SMTP 鏈嶅姟鍣ㄧ鍙e彿
+
+
+
+
+ 鍚嶇О
+
+
+
+
+ 涓婚
+
+
+
+
+ 鍙戜欢浜洪偖绠卞湴鍧
+
+
+
+
+ 鍙戜欢浜洪偖绠卞瘑鐮
+
+
+
+
+ erp鐩稿叧閰嶇疆鏂囦欢
+
+
+
+
+ erp-璇锋眰鍦板潃
+
+
+
+
+ 璐﹀彿
+
+
+
+
+ 瀵嗙爜
+
+
+
+
+ erp-Id
+
+
+
+
+ 涓冪墰浜 閰嶇疆
+
+
+
+
+ 璁块棶key
+
+
+
+
+ 绉橀挜
+
+
+
+
+ 鍖哄潡鏂囦欢澶
+
+
+
+
+ 璁块棶鍩熷悕
+
+
+
+
+ Quartz瀹氭椂浠诲姟-閰嶇疆椤
+
+
+
+
+ 瀛樺偍绫诲瀷:閿
+
+
+
+
+ 瀛樺偍绫诲瀷:鍊
+
+
+
+
+ 鏁版嵁搴撻┍鍔ㄧ被鍨-杩欓噷鏄痬ysql:閿
+
+
+
+
+ 鏁版嵁搴撻┍鍔ㄧ被鍨-杩欓噷鏄痬ysql:鍊
+
+
+
+
+ 鏁版嵁搴撹〃鍚嶅墠缂:閿
+
+
+
+
+ 鏁版嵁搴撹〃鍚嶅墠缂:鍊
+
+
+
+
+ 鏁版嵁婧愮殑鍚嶇О:閿
+
+
+
+
+ 鏁版嵁婧愮殑鍚嶇О:鍊
+
+
+
+
+ 杩炴帴瀛楃涓:閿
+
+
+
+
+ 杩炴帴瀛楃涓:鍊
+
+
+
+
+ mysql鎻愪緵鍣:閿
+
+
+
+
+ mysql鎻愪緵鍣:鍊
+
+
+
+
+ 鍑犵偣鍚庡紑濮嬫墽琛
+
+
+
+
+ 鍑犲垎閽熷悗寮濮嬫墽琛
+
+
+
+
+ 鎵цCron琛ㄨ揪寮忥細鍙互鏄嚑灏忔椂or鍑犲垎閽無r鍑犵閽無r鍑犲ぉor鍑犲懆
+
+
+
+
+
+
+
+
+
+ 鍙戦侀氱煡鎵цcron琛ㄨ揪寮忥細姣忓ぉ12锛16锛20鏁寸偣鍙戦
+
+
+
+
+ 鍚屾鏂扮墿鏂欐墽琛宑ron琛ㄨ揪寮忥細姣忓ぉ23锛30鏁寸偣鍚屾
+
+
+
+
+ 鍚屾鏂扮墿鏂欐墽琛宑ron琛ㄨ揪寮忥細姣忓ぉ0锛01鎵ц
+
+
+
+
+ 鏄惁鍚敤闆嗙兢锛氶敭
+
+
+
+
+ 鏄惁鍚敤闆嗙兢锛氬
+
+
+
+
+ 鑺傜偣閮藉繀椤绘湁涓涓敮涓ID锛氶敭
+
+
+
+
+ 鑺傜偣閮藉繀椤绘湁涓涓敮涓ID锛氬
+
+
+
+
+ 宸ヤ綔鍚嶇О锛氶敭
+
+
+
+
+ 宸ヤ綔鍚嶇О锛氬
+
+
+
+
+ 宸ヤ綔鎻忚堪
+
+
+
+
+ 瑙﹀彂鍣ㄨ韩浠借璇佷俊鎭
+
+
+
+
+ 瑙﹀彂鍣ㄦ弿杩
+
+
+
+
+ 鐭俊閰嶇疆椤
+
+
+
+
+ 璁块棶鍑瘉ID
+
+
+
+
+ 璁块棶绉橀挜
+
+
+
+
+ 鐭俊绛惧悕
+
+
+
+
+ 鐭俊妯℃澘缂栧彿
+
+
+
+
+ 鍗曠偣绯荤粺鍦板潃
+
+
+
+
+ 鍗曠偣绯荤粺鍦板潃
+
+
+
+
+ admin璐﹀彿鐨処d
+
+
+
+
+ 搴旂敤id
+
+
+
+
+ AppId
+
+
+
+
+ AppSecret
+
+
+
+
+ 鍏挜
+
+
+
+
+ 绉侀挜
+
+
+
+
+ 鑰乷ps瀵规帴
+
+
+
+
+ 鑷姩鐢熸垚鏁版嵁缁存姢 鍑屾櫒娓呯┖
+
+
+
+
+ 鎵ц鏂规硶
+
+
+
+
+
+
+ 鎵ц鏂规硶
+
+
+
+
+
+
+ 鐗╂枡鍚屾鎵ц瀹氭椂浠诲姟
+
+
+
+
+ 鎵ц鏂规硶
+
+
+
+
+
+
+ 绠卞敍-鏈嶅姟
+
+
+
+
+ 鐢熸垚
+
+
+
+
+
+
+
+ 鍒楄〃鍒嗛〉
+
+
+
+
+
+
+
+ 瑁呯鎬绘暟
+
+
+
+
+
+
+
+ 绠变俊鎭
+
+
+
+
+ 鐢熸垚绠辩爜
+
+
+
+
+
+
+
+
+ 瑁呯
+
+
+
+
+
+
+
+
+ 鎵撳嵃
+
+
+
+
+
+
+
+ 鍒犻櫎
+
+
+
+
+
+
+
+ 娓呯┖瑁呯淇℃伅
+
+
+
+
+
+
+
+ wms绯荤粺璋冪敤 鑾峰彇瀹屾垚瑁呯绠变俊鎭
+
+
+
+
+
+
+
+ 閲嶆柊瑁呯
+
+
+
+
+
+
+
+ 寮濮嬭绠
+
+
+
+
+
+
+
+ 鍒楄〃椤靛鍑
+
+
+
+
+
+
+
+
+
+
+
+
+ 鍏ㄥ瓧娈靛鍑
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 鍚屾erp鍩虹鏁版嵁
+
+
+
+
+ erp鍩虹鏁版嵁锛氭墿灞曟湇鍔
+
+
+
+
+ 鑾峰彇鐗╂枡鍚嶇О
+
+
+
+
+
+
+
+ 鑾峰彇鐗╂枡缂栫爜
+
+
+
+
+
+
+
+ 鑾峰彇鐗╂枡瑙勬牸鍨嬪彿
+
+
+
+
+
+
+
+ 鑾峰彇鐗╂枡鍚嶇О
+
+
+
+
+
+
+
+ 鑾峰彇鐗╂枡缂栫爜
+
+
+
+
+
+
+
+ 鑾峰彇鐗╂枡鍩烘湰鍗曚綅鍚嶇О
+
+
+
+
+
+
+
+ 鑾峰彇鐗╂枡鍩烘湰鍗曚綅鍚嶇О
+
+
+
+
+
+
+
+ 鑾峰彇鐗╂枡鐨勬潯鐮
+
+
+
+
+
+
+
+ 鑾峰彇鐗╂枡鐨勬潯鐮
+
+
+
+
+
+
+
+ 鑾峰彇鐗╂枡鍩烘湰鍗曚綅Id
+
+
+
+
+
+
+
+ 鑾峰彇鐗╂枡鍩烘湰鍗曚綅缂栫爜
+
+
+
+
+
+
+
+ 鑾峰彇鐗╂枡鍩烘湰鍗曚綅缂栫爜
+
+
+
+
+
+
+
+ 鑾峰彇缁勭粐鍚嶇О
+
+
+
+
+
+
+
+ 鑾峰彇缁勭粐鍚嶇О
+
+
+
+
+
+
+
+ 鑾峰彇缁勭粐id
+
+
+
+
+
+
+
+ 鑾峰彇渚涘簲鍟嗗悕绉
+
+
+
+
+
+
+
+ 鑾峰彇渚涘簲鍟嗗悕绉
+
+
+
+
+
+
+
+ 鑾峰彇瀹㈡埛鍚嶇О
+
+
+
+
+
+
+
+ 鑾峰彇浠撳簱鍚嶇О
+
+
+
+
+
+
+
+ 鑾峰彇浠撳簱鍚嶇О
+
+
+
+
+
+
+
+ 鑾峰彇浠撳簱缂栫爜
+
+
+
+
+
+
+
+ 瀛愪粨搴
+
+
+
+
+
+
+
+ 鑾峰彇鍗曠偣缁勭粐鍚嶅瓧
+
+
+
+
+
+
+
+
+ erp鏁版嵁浜や簰鏈嶅姟
+
+
+
+
+ 鍒濆鍖朎RP锛氱櫥褰曞埌ERP
+
+
+
+
+
+ 鏌ュ崟鎹被鍨嬬殑鍊
+
+
+
+
+
+ erp:鍗曟嵁鏌ヨ-鐗╂枡闆嗗悎
+
+
+
+
+
+ 鑾峰彇鐗╂枡id32杩涘埗
+
+
+
+
+
+
+
+ erp:鍩虹鏁版嵁-鐗╂枡淇℃伅
+
+
+
+
+
+
+ erp:鍩虹鏁版嵁-鐗╂枡淇℃伅
+
+
+
+
+
+
+ erp:鍩虹鏁版嵁-鐗╂枡-鍒嗛〉鏌ヨ
+
+
+
+
+
+ erp:鍩虹鏁版嵁-鐗╂枡-ids鏌ヨ
+
+
+
+
+
+
+ erp:鍩虹鏁版嵁-鐗╂枡-number鏌ヨ
+
+
+
+
+
+
+ erp:鍗曟嵁鏌ヨ-缁勭粐鏁版嵁
+
+
+
+
+
+ erp:渚涘簲鍟
+
+
+
+
+
+ 瀹㈡埛
+
+
+
+
+
+ erp:浠撳簱
+
+
+
+
+
+ 鏍规嵁浠撳簱缂栫爜鑾峰彇浠撲綅
+
+
+
+
+
+
+ 鍚屾鏁版嵁(淇濆瓨鎻愪氦瀹℃牳)
+
+
+
+
+
+
+
+ 鎻愪氦
+
+
+
+
+
+
+
+ 瀹℃牳
+
+
+
+
+
+
+
+ 鍙嶅鏍
+
+
+
+
+
+
+
+ 鍒犻櫎
+
+
+
+
+
+
+
+ 涓嬫帹
+
+
+
+
+
+
+ Get鏂规硶
+
+
+
+
+
+
+
+
+
+ Get鏂规硶
+
+
+
+
+
+
+
+
+
+ Post鏂规硶
+
+
+
+
+
+
+
+
+
+
+ Post鏂规硶
+
+
+
+
+
+
+
+
+
+ 鍏叡http璇锋眰
+
+
+
+
+
+
+
+
+
+
+
+ 璁剧疆HttpRequestMessage
+
+
+
+
+
+
+
+
+
+ 璁剧疆璇锋眰鍐呭
+
+
+
+
+
+
+
+ 璁剧疆璇锋眰澶村拰瓒呮椂鏃堕棿锛氳繑鍥瀋lient
+
+
+
+
+
+
+
+ 鍒涘缓token
+
+
+
+
+
+
+
+
+ 鍒涘缓token
+
+
+
+
+
+
+
+
+ 鑾峰彇鍗曠偣鐧诲綍淇℃伅
+
+
+
+
+
+
+ 鑾峰彇鍗曠偣鐢ㄦ埛淇℃伅
+
+
+
+
+
+
+
+ 鐧诲綍閫鍑
+
+
+
+
+
+
+ 鍒锋柊token
+
+
+
+
+
+
+
+ 鍗曠偣閫鍑洪氱煡token澶辨晥
+
+ 杩欎釜鏄崟鐐逛紶杩囨潵鐨凷eesionId
+
+
+
+
+ 缂撳瓨閫鍑虹殑token
+
+
+
+
+
+
+ 鑾峰彇鐧诲綍鍚庣殑淇℃伅
+
+
+
+
+
+
+ 绉婚櫎鐧诲綍鍚庣殑鐢ㄦ埛淇℃伅
+
+
+
+
+
+ 鑾峰彇鑿滃崟鏁版嵁
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 杩涘埗杞崲
+
+ 鏁村舰鏁板瓧
+ 鎺掗櫎鐨勫瓧绗"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B",
+ "C", "D", "E", "F", "G", "H", "I", "J", "K","L", "M", "N", "O", "P", "Q", "R", "S",
+ "T", "U", "V", "W", "X", "Y", "Z"
+
+
+
+
+ 淇濆瓨鍗曚釜key value
+
+
+
+
+
+
+
+
+ 鑾峰彇鍗曚釜key鐨勫
+
+
+
+
+ 绉婚櫎redis
+
+
+
+
+
+
+ 鑾峰彇涓涓猭ey鐨勫璞
+
+
+
+
+ 淇濆瓨涓涓璞
+
+
+
+
+
+ 鍗曠偣鏁版嵁杩斿洖鏈嶅姟
+
+
+
+
+ 鑾峰彇鍗曠偣鏁版嵁锛氭牴鎹帴鍙f柟娉曞悕鍜屽叕鍙窱D
+ 鍚庣鍒楄〃鏌ヨ缁熶竴浣跨敤
+
+
+
+
+
+
+
+ 鑾峰彇鍗曠偣鏁版嵁锛氭牴鎹帴鍙f柟娉曞悕鍜屽叕鍙窱D
+ 鍚庣鍒楄〃鏌ヨ缁熶竴浣跨敤
+
+
+
+
+
+
+
+ 鑾峰彇鍗曠偣鏁版嵁锛氭牴鎹帴鍙f柟娉曞悕鍜屽叕鍙窱D
+ 鍚庣鍒楄〃鏌ヨ缁熶竴浣跨敤
+
+
+
+
+
+
+
+ 鏍规嵁鍚嶅瓧妯$硦鍖归厤
+
+
+
+
+
+
+
+
+ 鑾峰彇鍗曠偣鏁版嵁锛氭牴鎹帴鍙f柟娉曞悕鍜屽叕鍙窱D
+ 鍚庣鍒楄〃鏌ヨ缁熶竴浣跨敤
+
+
+
+
+
+
+
+ 鑾峰彇鍗曠偣鏁版嵁闆嗗悎锛氭硾鍨-鍚屾
+
+
+
+
+
+
+
+
+ 鑾峰彇鍗曠偣鏁版嵁闆嗗悎锛氭硾鍨-寮傛
+
+
+
+
+
+
+
+
+ 鑾峰彇鍗曠偣鏁版嵁闆嗗悎锛氭硾鍨-寮傛-鏃犵紦瀛
+
+
+
+
+
+
+
+
+ 鍗曠偣鏁版嵁锛氬彲瀵规帴鍏ㄩ儴鎺ュ彛
+
+ 杩斿洖瀵硅薄
+ 璇锋眰瀵硅薄
+ 鏂规硶鍚嶇О
+ 璇锋眰瀵硅薄
+ 鏂规硶鍚嶇О
+ 鎺у埗鍣ㄥ悕绉
+
+
+
+
+ 鍗曠偣鏁版嵁锛氬彲瀵规帴鍏ㄩ儴鎺ュ彛
+
+ 杩斿洖瀵硅薄
+ 璇锋眰瀵硅薄
+ 鏂规硶鍚嶇О
+ 璇锋眰瀵硅薄
+ 鏂规硶鍚嶇О
+ 鎺у埗鍣ㄥ悕绉
+
+
+
+
+ 鑾峰彇鍗曠偣鏁版嵁锛氶厤缃」鎺ュ彛
+
+
+
+
+
+
+
+
+
+ 璇锋眰鍗曠偣鏈嶅姟鎺ュ彛锛氬悓姝
+
+
+
+
+
+
+
+
+ 璇锋眰鍗曠偣鏈嶅姟鎺ュ彛锛氬紓姝
+
+
+
+
+
+
+
+
+ 鑾峰彇瀹㈡埛浠撳簱
+
+
+
+
+
+
+
+ ops鏈嶅姟
+
+
+
+
+ 閲嶇疆绠变俊鎭
+
+
+
+
+
+
+
+ 鐗╂枡鏈嶅姟
+
+
+
+
+ 鍚屾鐗╂枡32杩涘埗
+
+
+
+
+
+
+ 鍚屾閲戣澏鏂扮殑鐗╂枡
+
+
+
+
+
+ 涓婁紶鏂囦欢
+
+
+
+
+
+
+
+
+ 闃蹭吉鐮
+
+
+
+
+ 搴忓垪鍙锋湇鍔
+
+
+
+
+
+
+
+
+
+
+ 涓嬭浇
+
+
+
+
+
+
+
+ 鐢熸垚闃蹭吉鐮
+
+
+
+
+
+
+
+
+ 寰幆鐢熸垚搴忓垪鐮
+
+
+
+
+
+ 搴忓垪鍙锋湇鍔
+
+
+
+
+ 搴忓垪鍙锋湇鍔
+
+
+
+
+
+
+
+
+
+
+
+ 鐢熸垚搴忓垪鍙
+
+
+
+
+
+
+
+
+ 寰幆鐢熸垚搴忓垪鐮
+
+
+
+
+
+
+ 涓嬭浇
+
+
+
+
+
+
+
+ 鎵撳嵃
+
+
+
+
+
+
+
+ 鍙嶅啓浣跨敤鏁
+
+
+
+
+
+
+ 淇敼搴忓垪鐮佺墿鏂
+
+
+
+
+
+
+
+ erp鍩虹鏁版嵁-鍚屾瀹氭椂浠诲姟
+
+
+
+
+ 绠辩姸鎬
+
+
+
+
+ 鏈娇鐢
+
+
+
+
+ 鏈畬鎴
+
+
+
+
+ 宸插畬鎴
+
+
+
+
+ 鑷姩鐢熸垚鏁版嵁 搴忓垪鐮佸拰闃蹭吉鐮
+
+
+
+
+ 搴忓垪鐮佺敓鎴
+
+
+
+
+ 涓氬姟瀵硅薄琛ㄥ崟Id锛氬搴攅rp鐨勫崟鎹〃鐨勫悕绉
+
+
+
+
+ 閲囪喘璁㈠崟
+
+
+
+
+ 閲囪喘鍏ュ簱鍗
+
+
+
+
+ 鍏朵粬鍏ュ簱鍗
+
+
+
+
+ 鐩存帴璋冩嫧鍗-閲岄潰鍖呭惈鍑哄拰鍏
+
+
+
+
+ 鍒嗘寮忚皟鍏ュ崟
+
+
+
+
+ 缁勮鎷嗗嵏鍗曪細閲岄潰鍖呭惈鍑哄拰鍏
+
+
+
+
+ 缁勭粐
+
+
+
+
+ 渚涘簲鍟
+
+
+
+
+ 浠撳簱
+
+
+
+
+ 鐩樼泩鍗
+
+
+
+
+ 鐩樹簭鍗
+
+
+
+
+ 鐗╂枡
+
+
+
+
+ 閿鍞彂璐ч氱煡鍗
+
+
+
+
+ 鍏朵粬鍑哄簱鍗
+
+
+
+
+ 鍒嗗竷寮忚皟鍑哄崟
+
+
+
+
+ 瀹㈡埛
+
+
+
+
+ 閿鍞嚭搴撳崟
+
+
+
+
+ 鍗虫椂搴撳瓨
+
+
+
+
+ 鏂囦欢瀵煎嚭鐘舵
+
+
+
+
+ 姝e湪瀵煎嚭
+
+
+
+
+ 瀵煎嚭鎴愬姛
+
+
+
+
+ 瀵煎嚭澶辫触
+
+
+
+
+ 瀵煎嚭鍗曟嵁绫诲瀷
+
+
+
+
+ 鏉$爜涓嬭浇
+
+
+
+
+ 鏉$爜璇︽儏涓嬭浇
+
+
+
+
+ 闃蹭吉鐮佷笅杞
+
+
+
+
+ 闃蹭吉鐮佽鎯呬笅杞
+
+
+
+
+ 閿欒鎻愮ず淇℃伅
+
+
+
+
+ 鏃犳晥
+
+
+
+
+ 鏁版嵁鎿嶄綔澶辫触
+
+
+
+
+ 娌℃湁鑿滃崟鏉冮檺锛屾棤娉曠櫥褰
+
+
+
+
+ 绠卞彿涓嶇鍚堣鍒
+
+
+
+
+ 瀵规帴鍗曠偣鐨勬帴鍙f柟娉-鏋氫妇
+
+
+
+
+ 缁勭粐闆嗗悎
+
+
+
+
+ 鐢ㄦ埛闆嗗悎
+
+
+
+
+ 浜哄憳闆嗗悎
+
+
+
+
+ 渚涘簲鍟嗛泦鍚
+
+
+
+
+ 瀹㈡埛闆嗗悎
+
+
+
+
+ 鏀舵鏉′欢闆嗗悎
+
+
+
+
+ 浠樻鏉′欢闆嗗悎
+
+
+
+
+ 缁撶畻鏂瑰紡闆嗗悎
+
+
+
+
+ 缁撶畻甯佸埆闆嗗悎
+
+
+
+
+ 绋庣巼闆嗗悎
+
+
+
+
+ 姹囩巼闆嗗悎
+
+
+
+
+ 浠撳簱闆嗗悎
+
+
+
+
+ 鍗曚綅闆嗗悎
+
+
+
+
+ 瀹㈡埛浠撳簱闆嗗悎
+
+
+
+
+ 閮ㄩ棬闆嗗悎
+
+
+
+
+ 浠撳簱211闆嗗悎
+
+
+
+
+ 渚涘簲鍟嗛粯璁よ仈绯讳汉闆嗗悎
+
+
+
+
+ 鑿滃崟闆嗗悎
+
+
+
+
+ 浠撲綅闆嗗悎
+
+
+
+
+ 浠撳簱锛氱紪鐮佷笌缁勭粐缂栫爜缁撳悎
+
+
+
+
+ 浠撳簱锛氱紪鐮佷笌缁勭粐缂栫爜缁撳悎
+
+
+
+
+ 鍗曠偣-鎺у埗鍣ㄦ灇涓
+
+
+
+
+ 鍗曠偣OPS鍒楄〃鏁版嵁-鎺у埗鍣
+
+
+
+
+ 鍗曠偣閰嶇疆椤规暟鎹-鎺у埗鍣
+
+
+
+
+ 鍗曠偣鐧诲綍椤规暟鎹-鎺у埗鍣
+
+
+
+
+ 鍗曠偣鍏叡鎺ュ彛鏁版嵁-鎺у埗鍣
+
+
+
+
+ 鍗曠偣鏁版嵁鎺ュ彛-鐧诲綍瑕佷娇鐢ㄧ殑鏁版嵁鎺ュ彛-鏂规硶鏋氫妇
+
+
+
+
+ 鑿滃崟
+
+
+
+
+ 浜哄憳
+
+
+
+
+ 鍏徃
+
+
+
+
+ 渚涘簲鍟
+
+
+
+
+ 瀹㈡埛
+
+
+
+
+ 鍏ㄩ儴淇℃伅
+
+
+
+
+ 鍏徃淇℃伅
+
+
+
+
+ 鍗曠偣鏁版嵁锛氶厤缃」鍜屽叕鍏辨帴鍙g殑鏂规硶鏋氫妇鍊
+
+
+
+
+ 渚涘簲鍟-鏍规嵁鍚嶇О鍜屽叕鍙
+
+
+
+
+ 缁勭粐-鏍规嵁鍏徃
+
+
+
+
+ 閮ㄩ棬-鏍规嵁缁勭粐鍜屽叕鍙
+
+
+
+
+ 浜哄憳-鏍规嵁鍏徃
+
+
+
+
+ 浜哄憳-鏍规嵁閮ㄩ棬鍜屽叕鍙
+
+
+
+
+ 浜哄憳-鏍规嵁缁勭粐鍜屽叕鍙
+
+
+
+
+ 瀹㈡埛-鏍规嵁鍏徃
+
+
+
+
+ 瀹㈡埛-鏍规嵁瀹㈡埛鍜岀粍缁囧拰鍏徃
+
+
+
+
+ 瀹㈡埛淇℃伅-鏍规嵁瀹㈡埛鍜岀粍缁囧拰鍏徃
+
+
+
+
+ 鏀舵鏉′欢-鏍规嵁鍏徃
+
+
+
+
+ 浠樻鏉′欢-鏍规嵁鍏徃
+
+
+
+
+ 缁撶畻鏂瑰紡-鏍规嵁鍏徃
+
+
+
+
+ 缁撶畻甯佸埆-鏍规嵁鍏徃
+
+
+
+
+ 鍗曚綅-鏍规嵁鍏徃
+
+
+
+
+ 鍗曚綅锛堥儴鍒嗗睘鎬э級-鏍规嵁鍏徃
+
+
+
+
+ 绋庣巼-鏍规嵁鍏徃
+
+
+
+
+ 浠撳簱-鏍规嵁鍚嶇О鍜屽叕鍙
+
+
+
+
+ 浠撳簱-鏍规嵁缁勭粐鍜屽叕鍙
+
+
+
+
+ 浠撳簱锛堜笉鏄皟鎷ㄤ腑杞粨锛-鏍规嵁缁勭粐鍜屽叕鍙
+
+
+
+
+ 浠撳簱锛211锛-鏍规嵁缁勭粐鍜屽叕鍙
+
+
+
+
+ 浠撳簱-鏍规嵁瀹㈡埛鍜屽叕鍙
+
+
+
+
+ 浠撲綅-鏍规嵁浠撳簱
+
+
+
+
+ 浠撲綅-鏍规嵁-
+
+
+
+
+ 姹囩巼淇℃伅-鏍规嵁鍘熷竵銆佺洰鏍囧竵鍜屽叕鍙
+
+
+
+
+ 瀹㈡埛浠撳簱-鏍规嵁瀹㈡埛鍜岀粍缁囧拰鍏徃
+
+
+
+
+ 浠樻鏉′欢锛岀粨绠楀竵鍒紝缁撶畻鏂瑰紡,閲囪喘鍛橈紝閲囪喘閮ㄩ棬-鏍规嵁渚涘簲鍟嗗拰缁勭粐
+
+
+
+
+ 鑾峰彇浠撳簱锛氭牴鎹粨搴搃d
+
+
+
+
+ 鑾峰彇搴撳瓨锛氭牴鎹粍缁囧拰鍏徃
+
+
+
+
+ 鑾峰彇瀹㈡埛浠撳簱锛氭牴鎹鎴稩DS鍜岀粍缁囧拰鍏徃
+
+
+
+
+ 姹囩巼(鎵鏈)
+
+
+
+
+ 渚涘簲鍟嗛夋嫨鍚庤幏鍙栵細浠樻鏉′欢锛岀粨绠楀竵鍒紝缁撶畻鏂瑰紡,閲囪喘鍛橈紝閲囪喘閮ㄩ棬,鏍规嵁缁勭粐IDS
+
+
+
+
+ 鑾峰彇瀹㈡埛浠撳簱锛氭牴鎹甤ode闆嗗悎
+
+
+
+
+ 渚涘簲鍟:鏍规嵁ids
+
+
+
+
+ 鏍规嵁鍏徃鎼滅储鎵鏈変粨搴(璁$畻琛ヨ揣棰戞)
+
+
+
+
+ 鑾峰彇浠撳簱锛氭牴鎹甤odes
+
+
+
+
+ 鑾峰彇瀹㈡埛浠撳簱锛氭牴鎹甤odes
+
+
+
+
+ 鑾峰彇璋冩嫧涓浆浠撳簱锛氭牴鎹叕鍙
+
+
+
+
+ 鑾峰彇渚涘簲鍟嗘暟鎹牴鎹甶ds
+
+
+
+
+ 鑾峰彇浠撳簱:鏍规嵁榛樿琛ヨ揣瀹㈡埛
+
+
+
+
+ 鑾峰彇鐢ㄦ埛锛圛D鍜孨ame锛夛細鏍规嵁鍏徃
+
+
+
+
+ 鍏ㄩ儴閮ㄩ棬-鏍规嵁缁勭粐鍜屽叕鍙革細涓嶅鐞嗗瓙绾
+
+
+
+
+ 鑾峰彇鍏ㄩ儴鍛樺伐锛氭牴鎹叕鍙稿拰缁勭粐
+
+
+
+
+ 鑾峰彇浠撳簱:锛氭牴鎹鐞嗙郴缁焎ode鍜屼粨搴撳悕绉板拰鍏徃ID锛屽娉ㄧ郴缁焎ode鍜屽叕鍙窱D鏄繀濉
+
+
+
+
+ 鑾峰彇浠撳簱:锛氭牴鎹鐞嗙郴缁焎ode鍜屼粨浣嶅悕绉板拰鍏徃ID锛屽娉ㄧ郴缁焎ode鍜屽叕鍙窱D鏄繀濉
+
+
+
+
+ 鑾峰彇浠撲綅璇︽儏锛氭牴鎹粨浣岻D鍜屽叕鍙窱D
+
+
+
+
+ 鑾峰彇浠撲綅璇︽儏锛氭牴鎹粨浣岻D闆嗗悎鍜屽叕鍙窱D
+
+
+
+
+ 鑾峰彇浠撲綅璇︽儏锛氭牴鎹粨浣岰ode鍜屽叕鍙窱D
+
+
+
+
+ 鑾峰彇浠撲綅璇︽儏锛氭牴鎹粨浣岰odes闆嗗悎鍜屽叕鍙窱D
+
+
+
+
+ 鏍规嵁鐢ㄦ埛鑾峰彇缁勭粐
+
+
+
+
+ 鏍规嵁鐢ㄦ埛鑾峰彇渚涘簲鍟
+
+
+
+
diff --git a/src/BarCode.Web.Core/BarCode.Web.Core.csproj b/src/BarCode.Web.Core/BarCode.Web.Core.csproj
new file mode 100644
index 0000000..4eab3ba
--- /dev/null
+++ b/src/BarCode.Web.Core/BarCode.Web.Core.csproj
@@ -0,0 +1,33 @@
+锘
+
+
+ net8.0
+ enable
+ enable
+ True
+ ../BarCode.Web.Api/wwwroot/BarCode.Web.Core.xml
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/BarCode.Web.Core/Connected Services/ERP/ConnectedService.json b/src/BarCode.Web.Core/Connected Services/ERP/ConnectedService.json
new file mode 100644
index 0000000..9e86b81
--- /dev/null
+++ b/src/BarCode.Web.Core/Connected Services/ERP/ConnectedService.json
@@ -0,0 +1,99 @@
+{
+ "ExtendedData": {
+ "inputs": [
+ "http://119.23.206.129/K3cloud/erpgw.asmx?WSDL"
+ ],
+ "collectionTypes": [
+ "System.Array",
+ "System.Collections.Generic.Dictionary`2"
+ ],
+ "namespaceMappings": [
+ "*, ERP"
+ ],
+ "references": [
+ "BouncyCastle.Cryptography, {BouncyCastle.Cryptography, 2.2.1}",
+ "Enums.NET, {Enums.NET, 4.0.1}",
+ "Google.Protobuf, {Google.Protobuf, 3.25.1}",
+ "ICSharpCode.SharpZipLib, {SharpZipLib, 1.3.3}",
+ "K4os.Compression.LZ4, {K4os.Compression.LZ4, 1.3.5}",
+ "K4os.Compression.LZ4.Streams, {K4os.Compression.LZ4.Streams, 1.3.5}",
+ "K4os.Hash.xxHash, {K4os.Hash.xxHash, 1.0.8}",
+ "LogicExtensions, {LogicExtensions, 0.0.3}",
+ "MathNet.Numerics, {MathNet.Numerics.Signed, 4.15.0}",
+ "Microsoft.EntityFrameworkCore, {Microsoft.EntityFrameworkCore, 8.0.2}",
+ "Microsoft.EntityFrameworkCore.Abstractions, {Microsoft.EntityFrameworkCore.Abstractions, 8.0.2}",
+ "Microsoft.EntityFrameworkCore.Relational, {Microsoft.EntityFrameworkCore.Relational, 8.0.2}",
+ "Microsoft.Extensions.Caching.Abstractions, {Microsoft.Extensions.Caching.Abstractions, 8.0.0}",
+ "Microsoft.Extensions.Caching.Memory, {Microsoft.Extensions.Caching.Memory, 8.0.0}",
+ "Microsoft.Extensions.Configuration.Abstractions, {Microsoft.Extensions.Configuration.Abstractions, 8.0.0}",
+ "Microsoft.Extensions.DependencyInjection, {Microsoft.Extensions.DependencyInjection, 8.0.0}",
+ "Microsoft.Extensions.DependencyInjection.Abstractions, {Microsoft.Extensions.DependencyInjection.Abstractions, 8.0.0}",
+ "Microsoft.Extensions.Diagnostics.Abstractions, {Microsoft.Extensions.Diagnostics.Abstractions, 8.0.0}",
+ "Microsoft.Extensions.Diagnostics.HealthChecks, {Microsoft.Extensions.Diagnostics.HealthChecks, 8.0.0}",
+ "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions, {Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions, 8.0.0}",
+ "Microsoft.Extensions.FileProviders.Abstractions, {Microsoft.Extensions.FileProviders.Abstractions, 8.0.0}",
+ "Microsoft.Extensions.Hosting.Abstractions, {Microsoft.Extensions.Hosting.Abstractions, 8.0.0}",
+ "Microsoft.Extensions.Logging, {Microsoft.Extensions.Logging, 8.0.0}",
+ "Microsoft.Extensions.Logging.Abstractions, {Microsoft.Extensions.Logging.Abstractions, 8.0.0}",
+ "Microsoft.Extensions.ObjectPool, {Microsoft.Extensions.ObjectPool, 6.0.16}",
+ "Microsoft.Extensions.Options, {Microsoft.Extensions.Options, 8.0.0}",
+ "Microsoft.Extensions.Primitives, {Microsoft.Extensions.Primitives, 8.0.0}",
+ "Microsoft.IdentityModel.Abstractions, {Microsoft.IdentityModel.Abstractions, 7.5.1}",
+ "Microsoft.IdentityModel.Logging, {Microsoft.IdentityModel.Logging, 7.5.1}",
+ "Microsoft.IdentityModel.Tokens, {Microsoft.IdentityModel.Tokens, 7.5.1}",
+ "Microsoft.IO.RecyclableMemoryStream, {Microsoft.IO.RecyclableMemoryStream, 2.3.2}",
+ "Microsoft.Win32.SystemEvents, {Microsoft.Win32.SystemEvents, 6.0.0}",
+ "MySql.Data, {MySql.Data, 8.3.0}",
+ "MySqlConnector, {MySqlConnector, 2.3.5}",
+ "Newtonsoft.Json, {Newtonsoft.Json, 13.0.3}",
+ "NPOI.Core, {NPOI, 2.6.2}",
+ "Npoi.Mapper, {Npoi.Mapper, 6.2.1}",
+ "NPOI.OOXML, {NPOI, 2.6.2}",
+ "NPOI.OpenXml4Net, {NPOI, 2.6.2}",
+ "NPOI.OpenXmlFormats, {NPOI, 2.6.2}",
+ "Pipelines.Sockets.Unofficial, {Pipelines.Sockets.Unofficial, 2.2.8}",
+ "Pomelo.EntityFrameworkCore.MySql, {Pomelo.EntityFrameworkCore.MySql, 8.0.2}",
+ "Quartz, {Quartz, 3.8.1}",
+ "Quartz.AspNetCore, {Quartz.AspNetCore, 3.8.1}",
+ "Quartz.Extensions.DependencyInjection, {Quartz.Extensions.DependencyInjection, 3.8.1}",
+ "Quartz.Extensions.Hosting, {Quartz.Extensions.Hosting, 3.8.1}",
+ "Quartz.Serialization.Json, {Quartz.Serialization.Json, 3.8.1}",
+ "SixLabors.Fonts, {SixLabors.Fonts, 1.0.0}",
+ "SixLabors.ImageSharp, {SixLabors.ImageSharp, 2.1.4}",
+ "StackExchange.Redis, {StackExchange.Redis, 2.7.33}",
+ "System.ComponentModel.Annotations, {System.ComponentModel.Annotations, 5.0.0}",
+ "System.Configuration.ConfigurationManager, {System.Configuration.ConfigurationManager, 6.0.1}",
+ "System.Diagnostics.DiagnosticSource, {System.Diagnostics.DiagnosticSource, 8.0.0}",
+ "System.Drawing.Common, {System.Drawing.Common, 6.0.0}",
+ "System.Formats.Asn1, {System.Formats.Asn1, 6.0.0}",
+ "System.IO, {System.IO, 4.3.0}",
+ "System.IO.Pipelines, {System.IO.Pipelines, 6.0.3}",
+ "System.Json, {System.Json, 4.7.1}",
+ "System.Reflection, {System.Reflection, 4.3.0}",
+ "System.Reflection.Primitives, {System.Reflection.Primitives, 4.3.0}",
+ "System.Runtime, {System.Runtime, 4.3.0}",
+ "System.Runtime.CompilerServices.Unsafe, {System.Runtime.CompilerServices.Unsafe, 6.0.0}",
+ "System.Runtime.Loader, {System.Runtime.Loader, 4.3.0}",
+ "System.Security.AccessControl, {System.Security.AccessControl, 6.0.0}",
+ "System.Security.Cryptography.Pkcs, {System.Security.Cryptography.Pkcs, 6.0.1}",
+ "System.Security.Cryptography.ProtectedData, {System.Security.Cryptography.ProtectedData, 6.0.0}",
+ "System.Security.Cryptography.Xml, {System.Security.Cryptography.Xml, 6.0.1}",
+ "System.Security.Permissions, {System.Security.Permissions, 6.0.0}",
+ "System.ServiceModel.Duplex, {System.ServiceModel.Duplex, 6.0.0}",
+ "System.ServiceModel.Http, {System.ServiceModel.Http, 8.0.0}",
+ "System.ServiceModel.NetFramingBase, {System.ServiceModel.NetFramingBase, 8.0.0}",
+ "System.ServiceModel.NetTcp, {System.ServiceModel.NetTcp, 8.0.0}",
+ "System.ServiceModel.Primitives, {System.ServiceModel.Primitives, 8.0.0}",
+ "System.ServiceModel.Security, {System.ServiceModel.Security, 6.0.0}",
+ "System.Text.Encoding, {System.Text.Encoding, 4.3.0}",
+ "System.Text.Encoding.CodePages, {System.Text.Encoding.CodePages, 5.0.0}",
+ "System.Text.Encodings.Web, {System.Text.Encodings.Web, 7.0.0}",
+ "System.Text.Json, {System.Text.Json, 7.0.1}",
+ "System.Threading.Tasks, {System.Threading.Tasks, 4.3.0}",
+ "System.Windows.Extensions, {System.Windows.Extensions, 6.0.0}",
+ "ZstdSharp, {ZstdSharp.Port, 0.7.1}"
+ ],
+ "targetFramework": "net8.0",
+ "typeReuseMode": "All"
+ }
+}
\ No newline at end of file
diff --git a/src/BarCode.Web.Core/Connected Services/ERP/Reference.cs b/src/BarCode.Web.Core/Connected Services/ERP/Reference.cs
new file mode 100644
index 0000000..295b378
--- /dev/null
+++ b/src/BarCode.Web.Core/Connected Services/ERP/Reference.cs
@@ -0,0 +1,1236 @@
+锘//------------------------------------------------------------------------------
+//
+// 姝や唬鐮佺敱宸ュ叿鐢熸垚銆
+//
+// 瀵规鏂囦欢鐨勬洿鏀瑰彲鑳藉鑷翠笉姝g‘鐨勮涓猴紝骞跺湪浠ヤ笅鏉′欢涓嬩涪澶:
+// 浠g爜閲嶆柊鐢熸垚銆
+//
+//------------------------------------------------------------------------------
+
+namespace ERP
+{
+
+
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.2.0-preview1.23462.5")]
+ [System.ServiceModel.ServiceContractAttribute(ConfigurationName="ERP.ERPGWSoap")]
+ public interface ERPGWSoap
+ {
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Draft", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task DraftAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Save", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task SaveAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Submit", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task SubmitAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Audit", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task AuditAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ExecuteBillQuery", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task ExecuteBillQueryAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Push", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task PushAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ExecuteOperation", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task ExecuteOperationAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/UnAudit", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task UnAuditAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Delete", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task DeleteAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/BatchSave", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task BatchSaveAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/WorkflowAudit", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task WorkflowAuditAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/CancelAssign", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task CancelAssignAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Allocate", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task AllocateAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/CancelAllocate", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task CancelAllocateAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/GroupSave", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task GroupSaveAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/QueryGroupInfo", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task QueryGroupInfoAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/GroupDelete", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task GroupDeleteAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/SaveMaterial", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task SaveMaterialAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/WebApiSale", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task WebApiSaleAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/AR_receivableY", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task AR_receivableYAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/SelMaterial", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task SelMaterialAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/SetJdture", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task SetJdtureAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Selects", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task SelectsAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/K3Client", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task K3ClientAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/CkZck", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task CkZckAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/SerBom", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task SerBomAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/OricoYG", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task OricoYGAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/OricoBM", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task OricoBMAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/OricoWLFZ", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task OricoWLFZAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IdOricoWLFZ", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task IdOricoWLFZAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/OricoGYS", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task OricoGYSAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Dw", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task DwAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Sktj", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task SktjAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Fktj", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task FktjAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Jsfs", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task JsfsAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Jsbb", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task JsbbAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/HL", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task HLAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/SL", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task SLAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/CreateVoucher", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task CreateVoucherAsync(ERP.VoucherInfo[] param);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/CreatePo_InStock", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task CreatePo_InStockAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/CreateStockSearch", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task CreateStockSearchAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/CreateSale", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task CreateSaleAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/CreateShopSale", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task CreateShopSaleAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/CreateSaleMerge", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task CreateSaleMergeAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/CreateSaleShopFH", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task CreateSaleShopFHAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/REQUIREMENTORDER", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task REQUIREMENTORDERAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Zzjxqd115", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task Zzjxqd115Async(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/PoBill", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task PoBillAsync(string json);
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/SaleLock", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ System.Threading.Tasks.Task